From f001414526a3496646308a007022fd2c5585cc5d Mon Sep 17 00:00:00 2001 From: Angelo Theodorou Date: Sat, 30 Jan 2021 18:37:55 +0100 Subject: [PATCH] Initial commit --- lua_api_list_master.html | 7398 ++++++++ lua_api_master.html | 14952 ++++++++++++++++ master/_alloc_manager_8h_source.html | 132 + master/_android_application_8h_source.html | 145 + master/_animated_sprite_8h_source.html | 157 + master/_app_configuration_8h_source.html | 222 + master/_application_8h_source.html | 302 + master/_array_8h_source.html | 766 + master/_array_iterator_8h_source.html | 319 + master/_asset_file_8h_source.html | 138 + master/_atomic_8h_source.html | 206 + master/_audio_buffer_8h_source.html | 157 + master/_audio_buffer_player_8h_source.html | 140 + master/_audio_effect_8h_source.html | 142 + .../_audio_effect_properties_8h_source.html | 539 + master/_audio_effect_slot_8h_source.html | 129 + master/_audio_filter_8h_source.html | 138 + master/_audio_stream_8h_source.html | 171 + master/_audio_stream_player_8h_source.html | 150 + master/_base_sprite_8h_source.html | 159 + master/_bit_set_8h_source.html | 333 + master/_c_string_8h_source.html | 100 + master/_camera_8h_source.html | 167 + master/_color_8h_source.html | 164 + master/_color_hdr_8h_source.html | 147 + master/_colorf_8h_source.html | 156 + master/_display_mode_8h_source.html | 147 + master/_drawable_node_8h_source.html | 220 + master/_emscripten_local_file_8h_source.html | 140 + master/_file_system_8h_source.html | 228 + master/_font_8h_source.html | 195 + master/_free_list_allocator_8h_source.html | 157 + master/_hash64_8h_source.html | 123 + master/_hash_functions_8h_source.html | 359 + master/_hash_map_8h_source.html | 1044 ++ master/_hash_map_iterator_8h_source.html | 353 + master/_hash_map_list_8h_source.html | 788 + master/_hash_map_list_iterator_8h_source.html | 432 + master/_hash_set_8h_source.html | 867 + master/_hash_set_iterator_8h_source.html | 306 + master/_hash_set_list_8h_source.html | 725 + master/_hash_set_list_iterator_8h_source.html | 391 + master/_i_allocator_8h_source.html | 333 + master/_i_app_event_handler_8h_source.html | 131 + master/_i_audio_device_8h_source.html | 277 + master/_i_audio_player_8h_source.html | 304 + master/_i_debug_overlay_8h_source.html | 133 + master/_i_file_8h_source.html | 226 + master/_i_frame_timer_8h_source.html | 133 + master/_i_gfx_capabilities_8h_source.html | 194 + master/_i_gfx_device_8h_source.html | 375 + master/_i_indexer_8h_source.html | 146 + master/_i_input_event_handler_8h_source.html | 169 + master/_i_input_manager_8h_source.html | 171 + master/_i_logger_8h_source.html | 145 + master/_i_texture_saver_8h_source.html | 129 + master/_i_thread_command_8h_source.html | 101 + master/_i_thread_pool_8h_source.html | 114 + master/_input_events_8h_source.html | 380 + master/_joy_mapping_db_8h_source.html | 1077 ++ master/_keys_8h_source.html | 369 + master/_linear_allocator_8h_source.html | 119 + master/_list_8h_source.html | 706 + master/_list_iterator_8h_source.html | 205 + master/_lua_color_utils_8h_source.html | 110 + master/_lua_debug_8h_source.html | 130 + .../_lua_i_app_event_handler_8h_source.html | 115 + .../_lua_i_input_event_handler_8h_source.html | 154 + master/_lua_rect_utils_8h_source.html | 232 + master/_lua_state_manager_8h_source.html | 211 + master/_lua_types_8h_source.html | 296 + .../_lua_untracked_user_data_8h_source.html | 270 + master/_lua_utils_8h_source.html | 451 + master/_lua_vector2_utils_8h_source.html | 206 + master/_lua_vector3_utils_8h_source.html | 219 + master/_lua_vector4_utils_8h_source.html | 232 + master/_malloc_allocator_8h_source.html | 110 + master/_matrix4x4_8h_source.html | 798 + master/_mesh_sprite_8h_source.html | 213 + master/_nuklear_context_8h_source.html | 134 + master/_object_8h_source.html | 152 + master/_p_c_application_8h_source.html | 126 + master/_particle_8h_source.html | 145 + master/_particle_affectors_8h_source.html | 419 + master/_particle_initializer_8h_source.html | 138 + master/_particle_system_8h_source.html | 192 + master/_pointer_math_8h_source.html | 138 + master/_pool_allocator_8h_source.html | 129 + master/_proxy_allocator_8h_source.html | 112 + master/_qt5_widget_8h_source.html | 156 + master/_quaternion_8h_source.html | 434 + master/_random_8h_source.html | 119 + master/_rect_8h_source.html | 384 + master/_rect_animation_8h_source.html | 192 + master/_render_doc_capture_8h_source.html | 127 + master/_reverse_iterator_8h_source.html | 280 + master/_scene_node_8h_source.html | 511 + master/_service_locator_8h_source.html | 175 + master/_shader_8h_source.html | 218 + master/_shader_state_8h_source.html | 160 + master/_shared_ptr_8h_source.html | 357 + master/_sparse_set_8h_source.html | 458 + master/_sparse_set_iterator_8h_source.html | 185 + master/_sprite_8h_source.html | 128 + master/_stack_allocator_8h_source.html | 133 + master/_static_array_8h_source.html | 609 + master/_static_hash_map_8h_source.html | 864 + .../_static_hash_map_iterator_8h_source.html | 353 + master/_static_hash_set_8h_source.html | 702 + .../_static_hash_set_iterator_8h_source.html | 306 + master/_static_string_8h_source.html | 834 + master/_string_8h_source.html | 271 + master/_string_iterator_8h_source.html | 268 + master/_text_node_8h_source.html | 225 + master/_texture_8h_source.html | 243 + master/_texture_saver_png_8h_source.html | 114 + master/_texture_saver_web_p_8h_source.html | 115 + master/_time_stamp_8h_source.html | 148 + master/_timer_8h_source.html | 116 + master/_unique_ptr_8h_source.html | 462 + master/_utf8_8h_source.html | 105 + master/_vector2_8h_source.html | 394 + master/_vector3_8h_source.html | 438 + master/_vector4_8h_source.html | 462 + master/_viewport_8h_source.html | 304 + master/algorithms_8h_source.html | 823 + master/annotated.html | 384 + master/bc_s.png | Bin 0 -> 680 bytes master/bdwn.png | Bin 0 -> 147 bytes master/classes.html | 149 + ...ncine_1_1_android_application-members.html | 146 + .../classncine_1_1_android_application.html | 380 + ...e_1_1_android_application__coll__graph.map | 34 + ...e_1_1_android_application__coll__graph.md5 | 1 + ...e_1_1_android_application__coll__graph.png | Bin 0 -> 203601 bytes ..._1_android_application__inherit__graph.map | 4 + ..._1_android_application__inherit__graph.md5 | 1 + ..._1_android_application__inherit__graph.png | Bin 0 -> 3944 bytes ...lassncine_1_1_animated_sprite-members.html | 307 + master/classncine_1_1_animated_sprite.html | 1073 ++ ...ncine_1_1_animated_sprite__coll__graph.map | 18 + ...ncine_1_1_animated_sprite__coll__graph.md5 | 1 + ...ncine_1_1_animated_sprite__coll__graph.png | Bin 0 -> 79823 bytes ...ne_1_1_animated_sprite__inherit__graph.map | 8 + ...ne_1_1_animated_sprite__inherit__graph.md5 | 1 + ...ne_1_1_animated_sprite__inherit__graph.png | Bin 0 -> 12006 bytes ...ssncine_1_1_app_configuration-members.html | 129 + master/classncine_1_1_app_configuration.html | 658 + ...ine_1_1_app_configuration__coll__graph.map | 5 + ...ine_1_1_app_configuration__coll__graph.md5 | 1 + ...ine_1_1_app_configuration__coll__graph.png | Bin 0 -> 11256 bytes .../classncine_1_1_application-members.html | 141 + master/classncine_1_1_application.html | 489 + ...lassncine_1_1_application__coll__graph.map | 33 + ...lassncine_1_1_application__coll__graph.md5 | 1 + ...lassncine_1_1_application__coll__graph.png | Bin 0 -> 198480 bytes ...sncine_1_1_application__inherit__graph.map | 5 + ...sncine_1_1_application__inherit__graph.md5 | 1 + ...sncine_1_1_application__inherit__graph.png | Bin 0 -> 5878 bytes master/classncine_1_1_asset_file-members.html | 137 + master/classncine_1_1_asset_file.html | 477 + ...classncine_1_1_asset_file__coll__graph.map | 5 + ...classncine_1_1_asset_file__coll__graph.md5 | 1 + ...classncine_1_1_asset_file__coll__graph.png | Bin 0 -> 4796 bytes ...ssncine_1_1_asset_file__inherit__graph.map | 4 + ...ssncine_1_1_asset_file__inherit__graph.md5 | 1 + ...ssncine_1_1_asset_file__inherit__graph.png | Bin 0 -> 2652 bytes .../classncine_1_1_audio_buffer-members.html | 117 + master/classncine_1_1_audio_buffer.html | 285 + ...assncine_1_1_audio_buffer__coll__graph.map | 4 + ...assncine_1_1_audio_buffer__coll__graph.md5 | 1 + ...assncine_1_1_audio_buffer__coll__graph.png | Bin 0 -> 3232 bytes ...ncine_1_1_audio_buffer__inherit__graph.map | 4 + ...ncine_1_1_audio_buffer__inherit__graph.md5 | 1 + ...ncine_1_1_audio_buffer__inherit__graph.png | Bin 0 -> 3232 bytes ...ncine_1_1_audio_buffer_player-members.html | 194 + .../classncine_1_1_audio_buffer_player.html | 570 + ...e_1_1_audio_buffer_player__coll__graph.map | 6 + ...e_1_1_audio_buffer_player__coll__graph.md5 | 1 + ...e_1_1_audio_buffer_player__coll__graph.png | Bin 0 -> 12877 bytes ..._1_audio_buffer_player__inherit__graph.map | 5 + ..._1_audio_buffer_player__inherit__graph.md5 | 1 + ..._1_audio_buffer_player__inherit__graph.png | Bin 0 -> 6384 bytes .../classncine_1_1_audio_effect-members.html | 93 + master/classncine_1_1_audio_effect.html | 152 + ...e_1_1_audio_effect_properties-members.html | 285 + ...lassncine_1_1_audio_effect_properties.html | 627 + ...ssncine_1_1_audio_effect_slot-members.html | 95 + master/classncine_1_1_audio_effect_slot.html | 206 + .../classncine_1_1_audio_filter-members.html | 93 + master/classncine_1_1_audio_filter.html | 143 + .../classncine_1_1_audio_stream-members.html | 98 + master/classncine_1_1_audio_stream.html | 185 + ...ncine_1_1_audio_stream_player-members.html | 198 + .../classncine_1_1_audio_stream_player.html | 580 + ...e_1_1_audio_stream_player__coll__graph.map | 6 + ...e_1_1_audio_stream_player__coll__graph.md5 | 1 + ...e_1_1_audio_stream_player__coll__graph.png | Bin 0 -> 13077 bytes ..._1_audio_stream_player__inherit__graph.map | 5 + ..._1_audio_stream_player__inherit__graph.md5 | 1 + ..._1_audio_stream_player__inherit__graph.png | Bin 0 -> 6619 bytes .../classncine_1_1_base_sprite-members.html | 273 + master/classncine_1_1_base_sprite.html | 960 + ...lassncine_1_1_base_sprite__coll__graph.map | 16 + ...lassncine_1_1_base_sprite__coll__graph.md5 | 1 + ...lassncine_1_1_base_sprite__coll__graph.png | Bin 0 -> 75973 bytes ...sncine_1_1_base_sprite__inherit__graph.map | 10 + ...sncine_1_1_base_sprite__inherit__graph.md5 | 1 + ...sncine_1_1_base_sprite__inherit__graph.png | Bin 0 -> 17020 bytes master/classncine_1_1_camera-members.html | 96 + master/classncine_1_1_camera.html | 155 + master/classncine_1_1_color-members.html | 124 + master/classncine_1_1_color.html | 256 + master/classncine_1_1_color__coll__graph.map | 3 + master/classncine_1_1_color__coll__graph.md5 | 1 + master/classncine_1_1_color__coll__graph.png | Bin 0 -> 6059 bytes ...classncine_1_1_color_affector-members.html | 107 + master/classncine_1_1_color_affector.html | 219 + ...sncine_1_1_color_affector__coll__graph.map | 4 + ...sncine_1_1_color_affector__coll__graph.md5 | 1 + ...sncine_1_1_color_affector__coll__graph.png | Bin 0 -> 3974 bytes ...ine_1_1_color_affector__inherit__graph.map | 4 + ...ine_1_1_color_affector__inherit__graph.md5 | 1 + ...ine_1_1_color_affector__inherit__graph.png | Bin 0 -> 3974 bytes master/classncine_1_1_color_hdr-members.html | 112 + master/classncine_1_1_color_hdr.html | 211 + .../classncine_1_1_color_hdr__coll__graph.map | 3 + .../classncine_1_1_color_hdr__coll__graph.md5 | 1 + .../classncine_1_1_color_hdr__coll__graph.png | Bin 0 -> 4605 bytes master/classncine_1_1_colorf-members.html | 118 + master/classncine_1_1_colorf.html | 232 + master/classncine_1_1_colorf__coll__graph.map | 3 + master/classncine_1_1_colorf__coll__graph.md5 | 1 + master/classncine_1_1_colorf__coll__graph.png | Bin 0 -> 5562 bytes .../classncine_1_1_display_mode-members.html | 98 + master/classncine_1_1_display_mode.html | 154 + .../classncine_1_1_drawable_node-members.html | 253 + master/classncine_1_1_drawable_node.html | 912 + ...ssncine_1_1_drawable_node__coll__graph.map | 13 + ...ssncine_1_1_drawable_node__coll__graph.md5 | 1 + ...ssncine_1_1_drawable_node__coll__graph.png | Bin 0 -> 75350 bytes ...cine_1_1_drawable_node__inherit__graph.map | 11 + ...cine_1_1_drawable_node__inherit__graph.md5 | 1 + ...cine_1_1_drawable_node__inherit__graph.png | Bin 0 -> 19698 bytes master/classncine_1_1_drop_event-members.html | 89 + master/classncine_1_1_drop_event.html | 114 + ...ine_1_1_emscripten_local_file-members.html | 97 + .../classncine_1_1_emscripten_local_file.html | 211 + .../classncine_1_1_file_system-members.html | 128 + master/classncine_1_1_file_system.html | 709 + ...1_1_file_system_1_1_directory-members.html | 89 + ...ssncine_1_1_file_system_1_1_directory.html | 114 + master/classncine_1_1_font-members.html | 129 + master/classncine_1_1_font.html | 569 + master/classncine_1_1_font__coll__graph.map | 4 + master/classncine_1_1_font__coll__graph.md5 | 1 + master/classncine_1_1_font__coll__graph.png | Bin 0 -> 2567 bytes .../classncine_1_1_font__inherit__graph.map | 4 + .../classncine_1_1_font__inherit__graph.md5 | 1 + .../classncine_1_1_font__inherit__graph.png | Bin 0 -> 2567 bytes master/classncine_1_1_hash64-members.html | 91 + master/classncine_1_1_hash64.html | 185 + ...ncine_1_1_i_app_event_handler-members.html | 96 + .../classncine_1_1_i_app_event_handler.html | 213 + ...classncine_1_1_i_audio_device-members.html | 113 + master/classncine_1_1_i_audio_device.html | 321 + ...ine_1_1_i_audio_device__inherit__graph.map | 4 + ...ine_1_1_i_audio_device__inherit__graph.md5 | 1 + ...ine_1_1_i_audio_device__inherit__graph.png | Bin 0 -> 3748 bytes ...classncine_1_1_i_audio_player-members.html | 188 + master/classncine_1_1_i_audio_player.html | 738 + ...sncine_1_1_i_audio_player__coll__graph.map | 5 + ...sncine_1_1_i_audio_player__coll__graph.md5 | 1 + ...sncine_1_1_i_audio_player__coll__graph.png | Bin 0 -> 10096 bytes ...ine_1_1_i_audio_player__inherit__graph.map | 6 + ...ine_1_1_i_audio_player__inherit__graph.md5 | 1 + ...ine_1_1_i_audio_player__inherit__graph.png | Bin 0 -> 9315 bytes ...lassncine_1_1_i_debug_overlay-members.html | 94 + master/classncine_1_1_i_debug_overlay.html | 151 + ...ncine_1_1_i_debug_overlay__coll__graph.map | 5 + ...ncine_1_1_i_debug_overlay__coll__graph.md5 | 1 + ...ncine_1_1_i_debug_overlay__coll__graph.png | Bin 0 -> 9097 bytes master/classncine_1_1_i_file-members.html | 125 + master/classncine_1_1_i_file.html | 475 + master/classncine_1_1_i_file__coll__graph.map | 4 + master/classncine_1_1_i_file__coll__graph.md5 | 1 + master/classncine_1_1_i_file__coll__graph.png | Bin 0 -> 3220 bytes .../classncine_1_1_i_file__inherit__graph.map | 4 + .../classncine_1_1_i_file__inherit__graph.md5 | 1 + .../classncine_1_1_i_file__inherit__graph.png | Bin 0 -> 2618 bytes .../classncine_1_1_i_frame_timer-members.html | 98 + master/classncine_1_1_i_frame_timer.html | 208 + ...sncine_1_1_i_gfx_capabilities-members.html | 91 + master/classncine_1_1_i_gfx_capabilities.html | 153 + ...1_1_i_gfx_capabilities__inherit__graph.map | 4 + ...1_1_i_gfx_capabilities__inherit__graph.md5 | 1 + ...1_1_i_gfx_capabilities__inherit__graph.png | Bin 0 -> 4348 bytes .../classncine_1_1_i_gfx_device-members.html | 146 + master/classncine_1_1_i_gfx_device.html | 722 + ...assncine_1_1_i_gfx_device__coll__graph.map | 9 + ...assncine_1_1_i_gfx_device__coll__graph.md5 | 1 + ...assncine_1_1_i_gfx_device__coll__graph.png | Bin 0 -> 28458 bytes master/classncine_1_1_i_indexer-members.html | 92 + master/classncine_1_1_i_indexer.html | 135 + ...assncine_1_1_i_indexer__inherit__graph.map | 4 + ...assncine_1_1_i_indexer__inherit__graph.md5 | 1 + ...assncine_1_1_i_indexer__inherit__graph.png | Bin 0 -> 2816 bytes ...ine_1_1_i_input_event_handler-members.html | 109 + .../classncine_1_1_i_input_event_handler.html | 218 + ...lassncine_1_1_i_input_manager-members.html | 115 + master/classncine_1_1_i_input_manager.html | 290 + ...ncine_1_1_i_input_manager__coll__graph.map | 5 + ...ncine_1_1_i_input_manager__coll__graph.md5 | 1 + ...ncine_1_1_i_input_manager__coll__graph.png | Bin 0 -> 7712 bytes master/classncine_1_1_i_logger-members.html | 91 + master/classncine_1_1_i_logger.html | 145 + ...lassncine_1_1_i_logger__inherit__graph.map | 4 + ...lassncine_1_1_i_logger__inherit__graph.md5 | 1 + ...lassncine_1_1_i_logger__inherit__graph.png | Bin 0 -> 2972 bytes ...lassncine_1_1_i_texture_saver-members.html | 91 + master/classncine_1_1_i_texture_saver.html | 139 + ...ne_1_1_i_texture_saver__inherit__graph.map | 5 + ...ne_1_1_i_texture_saver__inherit__graph.md5 | 1 + ...ne_1_1_i_texture_saver__inherit__graph.png | Bin 0 -> 7083 bytes ...assncine_1_1_i_thread_command-members.html | 86 + master/classncine_1_1_i_thread_command.html | 102 + .../classncine_1_1_i_thread_pool-members.html | 86 + master/classncine_1_1_i_thread_pool.html | 111 + ...cine_1_1_i_thread_pool__inherit__graph.map | 4 + ...cine_1_1_i_thread_pool__inherit__graph.md5 | 1 + ...cine_1_1_i_thread_pool__inherit__graph.png | Bin 0 -> 3779 bytes ...classncine_1_1_joy_axis_event-members.html | 88 + master/classncine_1_1_joy_axis_event.html | 114 + ...assncine_1_1_joy_button_event-members.html | 86 + master/classncine_1_1_joy_button_event.html | 106 + ...cine_1_1_joy_connection_event-members.html | 85 + .../classncine_1_1_joy_connection_event.html | 102 + .../classncine_1_1_joy_hat_event-members.html | 87 + master/classncine_1_1_joy_hat_event.html | 110 + ...ine_1_1_joy_mapped_axis_event-members.html | 87 + .../classncine_1_1_joy_mapped_axis_event.html | 110 + ...e_1_1_joy_mapped_button_event-members.html | 86 + ...lassncine_1_1_joy_mapped_button_event.html | 106 + ...assncine_1_1_joy_mapped_state-members.html | 89 + master/classncine_1_1_joy_mapped_state.html | 118 + ...classncine_1_1_joystick_state-members.html | 88 + master/classncine_1_1_joystick_state.html | 114 + ...classncine_1_1_keyboard_event-members.html | 88 + master/classncine_1_1_keyboard_event.html | 110 + ...classncine_1_1_keyboard_state-members.html | 85 + master/classncine_1_1_keyboard_state.html | 102 + ...lassncine_1_1_lua_color_utils-members.html | 92 + master/classncine_1_1_lua_color_utils.html | 123 + ...e_1_1_lua_i_app_event_handler-members.html | 95 + ...lassncine_1_1_lua_i_app_event_handler.html | 132 + ...1_1_lua_i_input_event_handler-members.html | 106 + ...ssncine_1_1_lua_i_input_event_handler.html | 165 + ...classncine_1_1_lua_rect_utils-members.html | 92 + master/classncine_1_1_lua_rect_utils.html | 125 + ...ssncine_1_1_lua_state_manager-members.html | 117 + master/classncine_1_1_lua_state_manager.html | 270 + ...e_1_1_lua_untracked_user_data-members.html | 90 + ...lassncine_1_1_lua_untracked_user_data.html | 119 + ...ne_1_1_lua_utils_1_1_run_info-members.html | 89 + ...classncine_1_1_lua_utils_1_1_run_info.html | 128 + ...ssncine_1_1_lua_vector2_utils-members.html | 92 + master/classncine_1_1_lua_vector2_utils.html | 125 + ...ssncine_1_1_lua_vector3_utils-members.html | 92 + master/classncine_1_1_lua_vector3_utils.html | 125 + ...ssncine_1_1_lua_vector4_utils-members.html | 92 + master/classncine_1_1_lua_vector4_utils.html | 125 + master/classncine_1_1_matrix4x4-members.html | 138 + master/classncine_1_1_matrix4x4.html | 285 + .../classncine_1_1_matrix4x4__coll__graph.map | 3 + .../classncine_1_1_matrix4x4__coll__graph.md5 | 1 + .../classncine_1_1_matrix4x4__coll__graph.png | Bin 0 -> 3985 bytes .../classncine_1_1_mesh_sprite-members.html | 311 + master/classncine_1_1_mesh_sprite.html | 1164 ++ ...lassncine_1_1_mesh_sprite__coll__graph.map | 17 + ...lassncine_1_1_mesh_sprite__coll__graph.md5 | 1 + ...lassncine_1_1_mesh_sprite__coll__graph.png | Bin 0 -> 78104 bytes ...sncine_1_1_mesh_sprite__inherit__graph.map | 7 + ...sncine_1_1_mesh_sprite__inherit__graph.md5 | 1 + ...sncine_1_1_mesh_sprite__inherit__graph.png | Bin 0 -> 8874 bytes .../classncine_1_1_mouse_event-members.html | 91 + master/classncine_1_1_mouse_event.html | 125 + .../classncine_1_1_mouse_state-members.html | 91 + master/classncine_1_1_mouse_state.html | 125 + ...lassncine_1_1_nuklear_context-members.html | 93 + master/classncine_1_1_nuklear_context.html | 130 + ...ssncine_1_1_null_audio_device-members.html | 114 + master/classncine_1_1_null_audio_device.html | 321 + ...ine_1_1_null_audio_device__coll__graph.map | 4 + ...ine_1_1_null_audio_device__coll__graph.md5 | 1 + ...ine_1_1_null_audio_device__coll__graph.png | Bin 0 -> 3727 bytes ..._1_1_null_audio_device__inherit__graph.map | 4 + ..._1_1_null_audio_device__inherit__graph.md5 | 1 + ..._1_1_null_audio_device__inherit__graph.png | Bin 0 -> 3727 bytes ...ine_1_1_null_gfx_capabilities-members.html | 94 + .../classncine_1_1_null_gfx_capabilities.html | 156 + ...1_1_null_gfx_capabilities__coll__graph.map | 4 + ...1_1_null_gfx_capabilities__coll__graph.md5 | 1 + ...1_1_null_gfx_capabilities__coll__graph.png | Bin 0 -> 4295 bytes ..._null_gfx_capabilities__inherit__graph.map | 4 + ..._null_gfx_capabilities__inherit__graph.md5 | 1 + ..._null_gfx_capabilities__inherit__graph.png | Bin 0 -> 4295 bytes .../classncine_1_1_null_indexer-members.html | 92 + master/classncine_1_1_null_indexer.html | 144 + ...assncine_1_1_null_indexer__coll__graph.map | 4 + ...assncine_1_1_null_indexer__coll__graph.md5 | 1 + ...assncine_1_1_null_indexer__coll__graph.png | Bin 0 -> 2755 bytes ...ncine_1_1_null_indexer__inherit__graph.map | 4 + ...ncine_1_1_null_indexer__inherit__graph.md5 | 1 + ...ncine_1_1_null_indexer__inherit__graph.png | Bin 0 -> 2755 bytes .../classncine_1_1_null_logger-members.html | 91 + master/classncine_1_1_null_logger.html | 154 + ...lassncine_1_1_null_logger__coll__graph.map | 4 + ...lassncine_1_1_null_logger__coll__graph.md5 | 1 + ...lassncine_1_1_null_logger__coll__graph.png | Bin 0 -> 2895 bytes ...sncine_1_1_null_logger__inherit__graph.map | 4 + ...sncine_1_1_null_logger__inherit__graph.md5 | 1 + ...sncine_1_1_null_logger__inherit__graph.png | Bin 0 -> 2895 bytes ...assncine_1_1_null_thread_pool-members.html | 86 + master/classncine_1_1_null_thread_pool.html | 120 + ...cine_1_1_null_thread_pool__coll__graph.map | 4 + ...cine_1_1_null_thread_pool__coll__graph.md5 | 1 + ...cine_1_1_null_thread_pool__coll__graph.png | Bin 0 -> 3766 bytes ...e_1_1_null_thread_pool__inherit__graph.map | 4 + ...e_1_1_null_thread_pool__inherit__graph.md5 | 1 + ...e_1_1_null_thread_pool__inherit__graph.png | Bin 0 -> 3766 bytes master/classncine_1_1_object-members.html | 99 + master/classncine_1_1_object.html | 222 + .../classncine_1_1_object__inherit__graph.map | 19 + .../classncine_1_1_object__inherit__graph.md5 | 1 + .../classncine_1_1_object__inherit__graph.png | Bin 0 -> 37867 bytes ...lassncine_1_1_p_c_application-members.html | 139 + master/classncine_1_1_p_c_application.html | 347 + ...ncine_1_1_p_c_application__coll__graph.map | 34 + ...ncine_1_1_p_c_application__coll__graph.md5 | 1 + ...ncine_1_1_p_c_application__coll__graph.png | Bin 0 -> 203081 bytes ...ne_1_1_p_c_application__inherit__graph.map | 4 + ...ne_1_1_p_c_application__inherit__graph.md5 | 1 + ...ne_1_1_p_c_application__inherit__graph.png | Bin 0 -> 3576 bytes master/classncine_1_1_particle-members.html | 291 + master/classncine_1_1_particle.html | 1040 ++ .../classncine_1_1_particle__coll__graph.map | 18 + .../classncine_1_1_particle__coll__graph.md5 | 1 + .../classncine_1_1_particle__coll__graph.png | Bin 0 -> 96777 bytes ...lassncine_1_1_particle__inherit__graph.map | 8 + ...lassncine_1_1_particle__inherit__graph.md5 | 1 + ...lassncine_1_1_particle__inherit__graph.png | Bin 0 -> 11128 bytes ...ssncine_1_1_particle_affector-members.html | 98 + master/classncine_1_1_particle_affector.html | 182 + ..._1_1_particle_affector__inherit__graph.map | 8 + ..._1_1_particle_affector__inherit__graph.md5 | 1 + ..._1_1_particle_affector__inherit__graph.png | Bin 0 -> 15345 bytes ...lassncine_1_1_particle_system-members.html | 237 + master/classncine_1_1_particle_system.html | 755 + ...ncine_1_1_particle_system__coll__graph.map | 10 + ...ncine_1_1_particle_system__coll__graph.md5 | 1 + ...ncine_1_1_particle_system__coll__graph.png | Bin 0 -> 41904 bytes ...ne_1_1_particle_system__inherit__graph.map | 5 + ...ne_1_1_particle_system__inherit__graph.md5 | 1 + ...ne_1_1_particle_system__inherit__graph.png | Bin 0 -> 5779 bytes ...ssncine_1_1_position_affector-members.html | 108 + master/classncine_1_1_position_affector.html | 222 + ...ine_1_1_position_affector__coll__graph.map | 4 + ...ine_1_1_position_affector__coll__graph.md5 | 1 + ...ine_1_1_position_affector__coll__graph.png | Bin 0 -> 4135 bytes ..._1_1_position_affector__inherit__graph.map | 4 + ..._1_1_position_affector__inherit__graph.md5 | 1 + ..._1_1_position_affector__inherit__graph.png | Bin 0 -> 4135 bytes master/classncine_1_1_qt5_widget-members.html | 97 + master/classncine_1_1_qt5_widget.html | 179 + ...classncine_1_1_qt5_widget__coll__graph.map | 4 + ...classncine_1_1_qt5_widget__coll__graph.md5 | 1 + ...classncine_1_1_qt5_widget__coll__graph.png | Bin 0 -> 3960 bytes ...ssncine_1_1_qt5_widget__inherit__graph.map | 4 + ...ssncine_1_1_qt5_widget__inherit__graph.md5 | 1 + ...ssncine_1_1_qt5_widget__inherit__graph.png | Bin 0 -> 3960 bytes master/classncine_1_1_quaternion-members.html | 124 + master/classncine_1_1_quaternion.html | 240 + ...classncine_1_1_quaternion__coll__graph.map | 3 + ...classncine_1_1_quaternion__coll__graph.md5 | 1 + ...classncine_1_1_quaternion__coll__graph.png | Bin 0 -> 3614 bytes master/classncine_1_1_random-members.html | 94 + master/classncine_1_1_random.html | 140 + master/classncine_1_1_rect-members.html | 115 + master/classncine_1_1_rect.html | 352 + ...classncine_1_1_rect_animation-members.html | 113 + master/classncine_1_1_rect_animation.html | 383 + ...sncine_1_1_render_doc_capture-members.html | 102 + master/classncine_1_1_render_doc_capture.html | 157 + ...ssncine_1_1_rotation_affector-members.html | 107 + master/classncine_1_1_rotation_affector.html | 219 + ...ine_1_1_rotation_affector__coll__graph.map | 4 + ...ine_1_1_rotation_affector__coll__graph.md5 | 1 + ...ine_1_1_rotation_affector__coll__graph.png | Bin 0 -> 3776 bytes ..._1_1_rotation_affector__inherit__graph.map | 4 + ..._1_1_rotation_affector__inherit__graph.md5 | 1 + ..._1_1_rotation_affector__inherit__graph.png | Bin 0 -> 3776 bytes master/classncine_1_1_scene_node-members.html | 210 + master/classncine_1_1_scene_node.html | 1226 ++ ...classncine_1_1_scene_node__coll__graph.map | 9 + ...classncine_1_1_scene_node__coll__graph.md5 | 1 + ...classncine_1_1_scene_node__coll__graph.png | Bin 0 -> 38649 bytes ...ssncine_1_1_scene_node__inherit__graph.map | 12 + ...ssncine_1_1_scene_node__inherit__graph.md5 | 1 + ...ssncine_1_1_scene_node__inherit__graph.png | Bin 0 -> 23361 bytes .../classncine_1_1_scroll_event-members.html | 86 + master/classncine_1_1_scroll_event.html | 106 + ...lassncine_1_1_service_locator-members.html | 101 + master/classncine_1_1_service_locator.html | 172 + master/classncine_1_1_shader-members.html | 149 + master/classncine_1_1_shader.html | 458 + master/classncine_1_1_shader__coll__graph.map | 4 + master/classncine_1_1_shader__coll__graph.md5 | 1 + master/classncine_1_1_shader__coll__graph.png | Bin 0 -> 2855 bytes .../classncine_1_1_shader__inherit__graph.map | 4 + .../classncine_1_1_shader__inherit__graph.md5 | 1 + .../classncine_1_1_shader__inherit__graph.png | Bin 0 -> 2855 bytes .../classncine_1_1_shader_state-members.html | 115 + master/classncine_1_1_shader_state.html | 285 + .../classncine_1_1_size_affector-members.html | 119 + master/classncine_1_1_size_affector.html | 265 + ...ssncine_1_1_size_affector__coll__graph.map | 4 + ...ssncine_1_1_size_affector__coll__graph.md5 | 1 + ...ssncine_1_1_size_affector__coll__graph.png | Bin 0 -> 4120 bytes ...cine_1_1_size_affector__inherit__graph.map | 4 + ...cine_1_1_size_affector__inherit__graph.md5 | 1 + ...cine_1_1_size_affector__inherit__graph.png | Bin 0 -> 4120 bytes master/classncine_1_1_sprite-members.html | 282 + master/classncine_1_1_sprite.html | 963 + master/classncine_1_1_sprite__coll__graph.map | 17 + master/classncine_1_1_sprite__coll__graph.md5 | 1 + master/classncine_1_1_sprite__coll__graph.png | Bin 0 -> 77596 bytes .../classncine_1_1_sprite__inherit__graph.map | 9 + .../classncine_1_1_sprite__inherit__graph.md5 | 1 + .../classncine_1_1_sprite__inherit__graph.png | Bin 0 -> 14875 bytes ...assncine_1_1_text_input_event-members.html | 86 + master/classncine_1_1_text_input_event.html | 102 + master/classncine_1_1_text_node-members.html | 274 + master/classncine_1_1_text_node.html | 980 + .../classncine_1_1_text_node__coll__graph.map | 14 + .../classncine_1_1_text_node__coll__graph.md5 | 1 + .../classncine_1_1_text_node__coll__graph.png | Bin 0 -> 77601 bytes ...assncine_1_1_text_node__inherit__graph.map | 6 + ...assncine_1_1_text_node__inherit__graph.md5 | 1 + ...assncine_1_1_text_node__inherit__graph.png | Bin 0 -> 6808 bytes master/classncine_1_1_texture-members.html | 149 + master/classncine_1_1_texture.html | 876 + .../classncine_1_1_texture__coll__graph.map | 4 + .../classncine_1_1_texture__coll__graph.md5 | 1 + .../classncine_1_1_texture__coll__graph.png | Bin 0 -> 2638 bytes ...classncine_1_1_texture__inherit__graph.map | 4 + ...classncine_1_1_texture__inherit__graph.md5 | 1 + ...classncine_1_1_texture__inherit__graph.png | Bin 0 -> 2638 bytes ...ssncine_1_1_texture_saver_png-members.html | 93 + master/classncine_1_1_texture_saver_png.html | 154 + ...ine_1_1_texture_saver_png__coll__graph.map | 4 + ...ine_1_1_texture_saver_png__coll__graph.md5 | 1 + ...ine_1_1_texture_saver_png__coll__graph.png | Bin 0 -> 3970 bytes ..._1_1_texture_saver_png__inherit__graph.map | 4 + ..._1_1_texture_saver_png__inherit__graph.md5 | 1 + ..._1_1_texture_saver_png__inherit__graph.png | Bin 0 -> 3970 bytes ...ncine_1_1_texture_saver_web_p-members.html | 93 + .../classncine_1_1_texture_saver_web_p.html | 154 + ...e_1_1_texture_saver_web_p__coll__graph.map | 4 + ...e_1_1_texture_saver_web_p__coll__graph.md5 | 1 + ...e_1_1_texture_saver_web_p__coll__graph.png | Bin 0 -> 4179 bytes ..._1_texture_saver_web_p__inherit__graph.map | 4 + ..._1_texture_saver_web_p__inherit__graph.md5 | 1 + ..._1_texture_saver_web_p__inherit__graph.png | Bin 0 -> 4179 bytes master/classncine_1_1_time_stamp-members.html | 110 + master/classncine_1_1_time_stamp.html | 197 + master/classncine_1_1_timer-members.html | 92 + master/classncine_1_1_timer.html | 131 + .../classncine_1_1_touch_event-members.html | 90 + master/classncine_1_1_touch_event.html | 136 + ...lassncine_1_1_touch_event__coll__graph.map | 4 + ...lassncine_1_1_touch_event__coll__graph.md5 | 1 + ...lassncine_1_1_touch_event__coll__graph.png | Bin 0 -> 3960 bytes master/classncine_1_1_vector2-members.html | 123 + master/classncine_1_1_vector2.html | 241 + .../classncine_1_1_vector2__coll__graph.map | 3 + .../classncine_1_1_vector2__coll__graph.md5 | 1 + .../classncine_1_1_vector2__coll__graph.png | Bin 0 -> 4472 bytes master/classncine_1_1_vector3-members.html | 127 + master/classncine_1_1_vector3.html | 254 + .../classncine_1_1_vector3__coll__graph.map | 3 + .../classncine_1_1_vector3__coll__graph.md5 | 1 + .../classncine_1_1_vector3__coll__graph.png | Bin 0 -> 4409 bytes master/classncine_1_1_vector4-members.html | 129 + master/classncine_1_1_vector4.html | 260 + .../classncine_1_1_vector4__coll__graph.map | 3 + .../classncine_1_1_vector4__coll__graph.md5 | 1 + .../classncine_1_1_vector4__coll__graph.png | Bin 0 -> 4752 bytes ...ssncine_1_1_velocity_affector-members.html | 108 + master/classncine_1_1_velocity_affector.html | 222 + ...ine_1_1_velocity_affector__coll__graph.map | 4 + ...ine_1_1_velocity_affector__coll__graph.md5 | 1 + ...ine_1_1_velocity_affector__coll__graph.png | Bin 0 -> 4220 bytes ..._1_1_velocity_affector__inherit__graph.map | 4 + ..._1_1_velocity_affector__inherit__graph.md5 | 1 + ..._1_1_velocity_affector__inherit__graph.png | Bin 0 -> 4220 bytes master/classncine_1_1_viewport-members.html | 161 + master/classncine_1_1_viewport.html | 631 + .../classncine_1_1_viewport__coll__graph.map | 18 + .../classncine_1_1_viewport__coll__graph.md5 | 1 + .../classncine_1_1_viewport__coll__graph.png | Bin 0 -> 100822 bytes .../classnctl_1_1_alloc_manager-members.html | 90 + master/classnctl_1_1_alloc_manager.html | 121 + ...1_1_alloc_manager_initializer-members.html | 86 + ...assnctl_1_1_alloc_manager_initializer.html | 94 + master/classnctl_1_1_array-members.html | 146 + master/classnctl_1_1_array.html | 544 + .../classnctl_1_1_array_iterator-members.html | 106 + master/classnctl_1_1_array_iterator.html | 196 + master/classnctl_1_1_atomic32-members.html | 104 + master/classnctl_1_1_atomic32.html | 162 + master/classnctl_1_1_atomic64-members.html | 104 + master/classnctl_1_1_atomic64.html | 162 + .../classnctl_1_1_base_list_node-members.html | 89 + master/classnctl_1_1_base_list_node.html | 138 + ...ssnctl_1_1_base_list_node__coll__graph.map | 3 + ...ssnctl_1_1_base_list_node__coll__graph.md5 | 1 + ...ssnctl_1_1_base_list_node__coll__graph.png | Bin 0 -> 3652 bytes ...ctl_1_1_base_list_node__inherit__graph.map | 4 + ...ctl_1_1_base_list_node__inherit__graph.md5 | 1 + ...ctl_1_1_base_list_node__inherit__graph.png | Bin 0 -> 3813 bytes master/classnctl_1_1_bit_set-members.html | 115 + master/classnctl_1_1_bit_set.html | 345 + .../classnctl_1_1_default_delete-members.html | 85 + master/classnctl_1_1_default_delete.html | 94 + ...default_delete_3_01_t_0f_0e_4-members.html | 85 + ...ctl_1_1_default_delete_3_01_t_0f_0e_4.html | 94 + ...assnctl_1_1_f_n_v1a_hash_func-members.html | 85 + master/classnctl_1_1_f_n_v1a_hash_func.html | 105 + ...1a_hash_func_3_01_string_01_4-members.html | 85 + ..._1_f_n_v1a_hash_func_3_01_string_01_4.html | 103 + ...nc_3_01const_01char_01_5_01_4-members.html | 85 + ..._hash_func_3_01const_01char_01_5_01_4.html | 99 + .../classnctl_1_1_fast_hash_func-members.html | 85 + master/classnctl_1_1_fast_hash_func.html | 105 + ...st_hash_func_3_01_string_01_4-members.html | 85 + ...l_1_1_fast_hash_func_3_01_string_01_4.html | 103 + ...nc_3_01const_01char_01_5_01_4-members.html | 85 + ..._hash_func_3_01const_01char_01_5_01_4.html | 103 + ...classnctl_1_1_fixed_hash_func-members.html | 85 + master/classnctl_1_1_fixed_hash_func.html | 104 + ...snctl_1_1_free_list_allocator-members.html | 132 + master/classnctl_1_1_free_list_allocator.html | 340 + ...l_1_1_free_list_allocator__coll__graph.map | 4 + ...l_1_1_free_list_allocator__coll__graph.md5 | 1 + ...l_1_1_free_list_allocator__coll__graph.png | Bin 0 -> 5747 bytes ..._1_free_list_allocator__inherit__graph.map | 4 + ..._1_free_list_allocator__inherit__graph.md5 | 1 + ..._1_free_list_allocator__inherit__graph.png | Bin 0 -> 3263 bytes master/classnctl_1_1_hash_map-members.html | 126 + master/classnctl_1_1_hash_map.html | 435 + ...assnctl_1_1_hash_map_iterator-members.html | 101 + master/classnctl_1_1_hash_map_iterator.html | 210 + .../classnctl_1_1_hash_map_list-members.html | 127 + master/classnctl_1_1_hash_map_list.html | 417 + ...tl_1_1_hash_map_list_iterator-members.html | 101 + .../classnctl_1_1_hash_map_list_iterator.html | 210 + master/classnctl_1_1_hash_set-members.html | 122 + master/classnctl_1_1_hash_set.html | 384 + ...assnctl_1_1_hash_set_iterator-members.html | 97 + master/classnctl_1_1_hash_set_iterator.html | 194 + .../classnctl_1_1_hash_set_list-members.html | 123 + master/classnctl_1_1_hash_set_list.html | 348 + ...tl_1_1_hash_set_list_iterator-members.html | 98 + .../classnctl_1_1_hash_set_list_iterator.html | 198 + master/classnctl_1_1_i_allocator-members.html | 118 + master/classnctl_1_1_i_allocator.html | 333 + ...classnctl_1_1_i_allocator__coll__graph.map | 3 + ...classnctl_1_1_i_allocator__coll__graph.md5 | 1 + ...classnctl_1_1_i_allocator__coll__graph.png | Bin 0 -> 3818 bytes ...ssnctl_1_1_i_allocator__inherit__graph.map | 9 + ...ssnctl_1_1_i_allocator__inherit__graph.md5 | 1 + ...ssnctl_1_1_i_allocator__inherit__graph.png | Bin 0 -> 20037 bytes ...ssnctl_1_1_identity_hash_func-members.html | 85 + master/classnctl_1_1_identity_hash_func.html | 105 + master/classnctl_1_1_is_equal_to-members.html | 86 + master/classnctl_1_1_is_equal_to.html | 107 + ...classnctl_1_1_is_greater_than-members.html | 86 + master/classnctl_1_1_is_greater_than.html | 107 + .../classnctl_1_1_is_less_than-members.html | 86 + master/classnctl_1_1_is_less_than.html | 107 + ...classnctl_1_1_is_not_equal_to-members.html | 86 + master/classnctl_1_1_is_not_equal_to.html | 107 + ...snctl_1_1_is_not_greater_than-members.html | 86 + master/classnctl_1_1_is_not_greater_than.html | 107 + ...lassnctl_1_1_is_not_less_than-members.html | 86 + master/classnctl_1_1_is_not_less_than.html | 107 + ...assnctl_1_1_jenkins_hash_func-members.html | 85 + master/classnctl_1_1_jenkins_hash_func.html | 105 + ...ns_hash_func_3_01_string_01_4-members.html | 85 + ..._1_jenkins_hash_func_3_01_string_01_4.html | 103 + ...nc_3_01const_01char_01_5_01_4-members.html | 85 + ..._hash_func_3_01const_01char_01_5_01_4.html | 103 + ...lassnctl_1_1_linear_allocator-members.html | 125 + master/classnctl_1_1_linear_allocator.html | 254 + ...nctl_1_1_linear_allocator__coll__graph.map | 4 + ...nctl_1_1_linear_allocator__coll__graph.md5 | 1 + ...nctl_1_1_linear_allocator__coll__graph.png | Bin 0 -> 5484 bytes ...l_1_1_linear_allocator__inherit__graph.map | 4 + ...l_1_1_linear_allocator__inherit__graph.md5 | 1 + ...l_1_1_linear_allocator__inherit__graph.png | Bin 0 -> 3360 bytes master/classnctl_1_1_list-members.html | 136 + master/classnctl_1_1_list.html | 365 + .../classnctl_1_1_list_iterator-members.html | 96 + master/classnctl_1_1_list_iterator.html | 155 + master/classnctl_1_1_list_node-members.html | 90 + master/classnctl_1_1_list_node.html | 146 + .../classnctl_1_1_list_node__coll__graph.map | 4 + .../classnctl_1_1_list_node__coll__graph.md5 | 1 + .../classnctl_1_1_list_node__coll__graph.png | Bin 0 -> 5965 bytes ...lassnctl_1_1_list_node__inherit__graph.map | 4 + ...lassnctl_1_1_list_node__inherit__graph.md5 | 1 + ...lassnctl_1_1_list_node__inherit__graph.png | Bin 0 -> 3758 bytes ...lassnctl_1_1_malloc_allocator-members.html | 120 + master/classnctl_1_1_malloc_allocator.html | 238 + ...nctl_1_1_malloc_allocator__coll__graph.map | 4 + ...nctl_1_1_malloc_allocator__coll__graph.md5 | 1 + ...nctl_1_1_malloc_allocator__coll__graph.png | Bin 0 -> 5452 bytes ...l_1_1_malloc_allocator__inherit__graph.map | 4 + ...l_1_1_malloc_allocator__inherit__graph.md5 | 1 + ...l_1_1_malloc_allocator__inherit__graph.png | Bin 0 -> 2978 bytes ...lassnctl_1_1_modulo_hash_func-members.html | 85 + master/classnctl_1_1_modulo_hash_func.html | 104 + .../classnctl_1_1_pool_allocator-members.html | 129 + master/classnctl_1_1_pool_allocator.html | 265 + ...ssnctl_1_1_pool_allocator__coll__graph.map | 4 + ...ssnctl_1_1_pool_allocator__coll__graph.md5 | 1 + ...ssnctl_1_1_pool_allocator__coll__graph.png | Bin 0 -> 5367 bytes ...ctl_1_1_pool_allocator__inherit__graph.map | 4 + ...ctl_1_1_pool_allocator__inherit__graph.md5 | 1 + ...ctl_1_1_pool_allocator__inherit__graph.png | Bin 0 -> 3244 bytes ...classnctl_1_1_proxy_allocator-members.html | 120 + master/classnctl_1_1_proxy_allocator.html | 241 + ...snctl_1_1_proxy_allocator__coll__graph.map | 4 + ...snctl_1_1_proxy_allocator__coll__graph.md5 | 1 + ...snctl_1_1_proxy_allocator__coll__graph.png | Bin 0 -> 5708 bytes ...tl_1_1_proxy_allocator__inherit__graph.map | 4 + ...tl_1_1_proxy_allocator__inherit__graph.md5 | 1 + ...tl_1_1_proxy_allocator__inherit__graph.png | Bin 0 -> 3234 bytes ...lassnctl_1_1_reverse_iterator-members.html | 113 + master/classnctl_1_1_reverse_iterator.html | 232 + .../classnctl_1_1_sax_hash_func-members.html | 85 + master/classnctl_1_1_sax_hash_func.html | 104 + ...ax_hash_func_3_01_string_01_4-members.html | 85 + ...tl_1_1_sax_hash_func_3_01_string_01_4.html | 102 + ...nc_3_01const_01char_01_5_01_4-members.html | 85 + ..._hash_func_3_01const_01char_01_5_01_4.html | 102 + master/classnctl_1_1_shared_ptr-members.html | 108 + master/classnctl_1_1_shared_ptr.html | 174 + master/classnctl_1_1_sparse_set-members.html | 120 + master/classnctl_1_1_sparse_set.html | 314 + ...snctl_1_1_sparse_set_iterator-members.html | 93 + master/classnctl_1_1_sparse_set_iterator.html | 145 + ...classnctl_1_1_stack_allocator-members.html | 124 + master/classnctl_1_1_stack_allocator.html | 251 + ...snctl_1_1_stack_allocator__coll__graph.map | 4 + ...snctl_1_1_stack_allocator__coll__graph.md5 | 1 + ...snctl_1_1_stack_allocator__coll__graph.png | Bin 0 -> 5598 bytes ...tl_1_1_stack_allocator__inherit__graph.map | 4 + ...tl_1_1_stack_allocator__inherit__graph.md5 | 1 + ...tl_1_1_stack_allocator__inherit__graph.png | Bin 0 -> 3481 bytes .../classnctl_1_1_static_array-members.html | 142 + master/classnctl_1_1_static_array.html | 470 + ...classnctl_1_1_static_hash_map-members.html | 124 + master/classnctl_1_1_static_hash_map.html | 424 + ..._1_1_static_hash_map_iterator-members.html | 101 + ...lassnctl_1_1_static_hash_map_iterator.html | 210 + ...classnctl_1_1_static_hash_set-members.html | 120 + master/classnctl_1_1_static_hash_set.html | 354 + ..._1_1_static_hash_set_iterator-members.html | 97 + ...lassnctl_1_1_static_hash_set_iterator.html | 194 + .../classnctl_1_1_static_string-members.html | 179 + master/classnctl_1_1_static_string.html | 731 + master/classnctl_1_1_string-members.html | 170 + master/classnctl_1_1_string.html | 602 + ...classnctl_1_1_string_iterator-members.html | 106 + master/classnctl_1_1_string_iterator.html | 196 + master/classnctl_1_1_unique_ptr-members.html | 111 + master/classnctl_1_1_unique_ptr.html | 185 + ...01_t_0f_0e_00_01_deleter_01_4-members.html | 104 + ...e_ptr_3_01_t_0f_0e_00_01_deleter_01_4.html | 159 + .../classtracy_1_1_gpu_ctx_scope-members.html | 86 + master/classtracy_1_1_gpu_ctx_scope.html | 97 + master/closed.png | Bin 0 -> 133 bytes master/common__constants_8h_source.html | 98 + master/common__defines_8h_source.html | 115 + master/common__macros_8h_source.html | 235 + master/common__windefines_8h_source.html | 100 + .../dir_0af1587c8378955de40f48b4bd1869f0.html | 81 + .../dir_560415a5d2bc4999842279f4fc1debef.html | 85 + .../dir_68267d1309a1af8e8297ef4c3efbcdba.html | 85 + .../dir_69e571e5afc36e9d039483e2298e1d8c.html | 81 + .../dir_6bfbb9df9fcba3af2b352e911b967e82.html | 81 + .../dir_7e55306ba01a4f64bc8db2780859eb09.html | 81 + .../dir_a63dedf81f1e5ea1d42bb45ef831eb8c.html | 81 + .../dir_b49f11675e92293ffa7ceeef744893f4.html | 81 + .../dir_b8d13aa7d06be3c2601985ee32750f86.html | 81 + .../dir_d365e15d984c8d0205117ee0c40d6716.html | 81 + .../dir_d44c64559bbebec7f509842c48db8b23.html | 85 + .../dir_e6a0c564333ae2aa489c52fa70c1e9c9.html | 81 + master/doc.png | Bin 0 -> 747 bytes master/doxygen.css | 1793 ++ master/doxygen.svg | 26 + master/dynsections.js | 121 + master/files.html | 219 + master/folderclosed.png | Bin 0 -> 643 bytes master/folderopen.png | Bin 0 -> 641 bytes master/functions.html | 361 + master/functions_b.html | 189 + master/functions_c.html | 402 + master/functions_d.html | 214 + master/functions_e.html | 206 + master/functions_enum.html | 212 + master/functions_eval.html | 100 + master/functions_f.html | 236 + master/functions_func.html | 316 + master/functions_func_b.html | 160 + master/functions_func_c.html | 332 + master/functions_func_d.html | 172 + master/functions_func_e.html | 170 + master/functions_func_f.html | 189 + master/functions_func_g.html | 129 + master/functions_func_h.html | 152 + master/functions_func_i.html | 329 + master/functions_func_j.html | 101 + master/functions_func_k.html | 91 + master/functions_func_l.html | 184 + master/functions_func_m.html | 225 + master/functions_func_n.html | 184 + master/functions_func_o.html | 328 + master/functions_func_p.html | 166 + master/functions_func_q.html | 80 + master/functions_func_r.html | 341 + master/functions_func_s.html | 687 + master/functions_func_t.html | 148 + master/functions_func_u.html | 166 + master/functions_func_v.html | 121 + master/functions_func_w.html | 119 + master/functions_func_~.html | 89 + master/functions_g.html | 149 + master/functions_h.html | 169 + master/functions_i.html | 368 + master/functions_j.html | 109 + master/functions_k.html | 91 + master/functions_l.html | 214 + master/functions_m.html | 257 + master/functions_n.html | 206 + master/functions_o.html | 378 + master/functions_p.html | 211 + master/functions_q.html | 80 + master/functions_r.html | 414 + master/functions_rela.html | 183 + master/functions_s.html | 759 + master/functions_t.html | 175 + master/functions_type.html | 220 + master/functions_u.html | 172 + master/functions_v.html | 161 + master/functions_vars.html | 682 + master/functions_w.html | 169 + master/functions_x.html | 88 + master/functions_y.html | 88 + master/functions_z.html | 88 + master/functions_~.html | 89 + master/graph_legend.html | 137 + master/graph_legend.md5 | 1 + master/graph_legend.png | Bin 0 -> 20615 bytes master/hierarchy.html | 440 + master/icon72.png | Bin 0 -> 3163 bytes master/index.html | 154 + master/inherit_graph_0.map | 3 + master/inherit_graph_0.md5 | 1 + master/inherit_graph_0.png | Bin 0 -> 1927 bytes master/inherit_graph_1.map | 5 + master/inherit_graph_1.md5 | 1 + master/inherit_graph_1.png | Bin 0 -> 3939 bytes master/inherit_graph_10.map | 3 + master/inherit_graph_10.md5 | 1 + master/inherit_graph_10.png | Bin 0 -> 2444 bytes master/inherit_graph_100.map | 4 + master/inherit_graph_100.md5 | 1 + master/inherit_graph_100.png | Bin 0 -> 2746 bytes master/inherit_graph_101.map | 3 + master/inherit_graph_101.md5 | 1 + master/inherit_graph_101.png | Bin 0 -> 1830 bytes master/inherit_graph_102.map | 3 + master/inherit_graph_102.md5 | 1 + master/inherit_graph_102.png | Bin 0 -> 1371 bytes master/inherit_graph_103.map | 3 + master/inherit_graph_103.md5 | 1 + master/inherit_graph_103.png | Bin 0 -> 1632 bytes master/inherit_graph_104.map | 3 + master/inherit_graph_104.md5 | 1 + master/inherit_graph_104.png | Bin 0 -> 1312 bytes master/inherit_graph_105.map | 3 + master/inherit_graph_105.md5 | 1 + master/inherit_graph_105.png | Bin 0 -> 1473 bytes master/inherit_graph_106.map | 3 + master/inherit_graph_106.md5 | 1 + master/inherit_graph_106.png | Bin 0 -> 1519 bytes master/inherit_graph_107.map | 3 + master/inherit_graph_107.md5 | 1 + master/inherit_graph_107.png | Bin 0 -> 1955 bytes master/inherit_graph_108.map | 3 + master/inherit_graph_108.md5 | 1 + master/inherit_graph_108.png | Bin 0 -> 2255 bytes master/inherit_graph_109.map | 3 + master/inherit_graph_109.md5 | 1 + master/inherit_graph_109.png | Bin 0 -> 1418 bytes master/inherit_graph_11.map | 3 + master/inherit_graph_11.md5 | 1 + master/inherit_graph_11.png | Bin 0 -> 3144 bytes master/inherit_graph_110.map | 3 + master/inherit_graph_110.md5 | 1 + master/inherit_graph_110.png | Bin 0 -> 1528 bytes master/inherit_graph_111.map | 3 + master/inherit_graph_111.md5 | 1 + master/inherit_graph_111.png | Bin 0 -> 1505 bytes master/inherit_graph_112.map | 3 + master/inherit_graph_112.md5 | 1 + master/inherit_graph_112.png | Bin 0 -> 2020 bytes master/inherit_graph_113.map | 3 + master/inherit_graph_113.md5 | 1 + master/inherit_graph_113.png | Bin 0 -> 1476 bytes master/inherit_graph_114.map | 3 + master/inherit_graph_114.md5 | 1 + master/inherit_graph_114.png | Bin 0 -> 2671 bytes master/inherit_graph_115.map | 3 + master/inherit_graph_115.md5 | 1 + master/inherit_graph_115.png | Bin 0 -> 2725 bytes master/inherit_graph_116.map | 3 + master/inherit_graph_116.md5 | 1 + master/inherit_graph_116.png | Bin 0 -> 954 bytes master/inherit_graph_117.map | 3 + master/inherit_graph_117.md5 | 1 + master/inherit_graph_117.png | Bin 0 -> 1575 bytes master/inherit_graph_118.map | 3 + master/inherit_graph_118.md5 | 1 + master/inherit_graph_118.png | Bin 0 -> 1309 bytes master/inherit_graph_119.map | 3 + master/inherit_graph_119.md5 | 1 + master/inherit_graph_119.png | Bin 0 -> 1667 bytes master/inherit_graph_12.map | 3 + master/inherit_graph_12.md5 | 1 + master/inherit_graph_12.png | Bin 0 -> 2462 bytes master/inherit_graph_120.map | 3 + master/inherit_graph_120.md5 | 1 + master/inherit_graph_120.png | Bin 0 -> 1852 bytes master/inherit_graph_121.map | 3 + master/inherit_graph_121.md5 | 1 + master/inherit_graph_121.png | Bin 0 -> 1656 bytes master/inherit_graph_122.map | 3 + master/inherit_graph_122.md5 | 1 + master/inherit_graph_122.png | Bin 0 -> 1877 bytes master/inherit_graph_123.map | 3 + master/inherit_graph_123.md5 | 1 + master/inherit_graph_123.png | Bin 0 -> 1906 bytes master/inherit_graph_124.map | 3 + master/inherit_graph_124.md5 | 1 + master/inherit_graph_124.png | Bin 0 -> 1878 bytes master/inherit_graph_125.map | 3 + master/inherit_graph_125.md5 | 1 + master/inherit_graph_125.png | Bin 0 -> 1837 bytes master/inherit_graph_126.map | 3 + master/inherit_graph_126.md5 | 1 + master/inherit_graph_126.png | Bin 0 -> 2542 bytes master/inherit_graph_127.map | 3 + master/inherit_graph_127.md5 | 1 + master/inherit_graph_127.png | Bin 0 -> 1489 bytes master/inherit_graph_128.map | 4 + master/inherit_graph_128.md5 | 1 + master/inherit_graph_128.png | Bin 0 -> 4426 bytes master/inherit_graph_129.map | 4 + master/inherit_graph_129.md5 | 1 + master/inherit_graph_129.png | Bin 0 -> 4092 bytes master/inherit_graph_13.map | 3 + master/inherit_graph_13.md5 | 1 + master/inherit_graph_13.png | Bin 0 -> 2761 bytes master/inherit_graph_130.map | 3 + master/inherit_graph_130.md5 | 1 + master/inherit_graph_130.png | Bin 0 -> 1651 bytes master/inherit_graph_131.map | 3 + master/inherit_graph_131.md5 | 1 + master/inherit_graph_131.png | Bin 0 -> 2080 bytes master/inherit_graph_132.map | 3 + master/inherit_graph_132.md5 | 1 + master/inherit_graph_132.png | Bin 0 -> 1893 bytes master/inherit_graph_133.map | 3 + master/inherit_graph_133.md5 | 1 + master/inherit_graph_133.png | Bin 0 -> 2446 bytes master/inherit_graph_134.map | 3 + master/inherit_graph_134.md5 | 1 + master/inherit_graph_134.png | Bin 0 -> 2783 bytes master/inherit_graph_135.map | 3 + master/inherit_graph_135.md5 | 1 + master/inherit_graph_135.png | Bin 0 -> 3496 bytes master/inherit_graph_136.map | 3 + master/inherit_graph_136.md5 | 1 + master/inherit_graph_136.png | Bin 0 -> 2195 bytes master/inherit_graph_137.map | 3 + master/inherit_graph_137.md5 | 1 + master/inherit_graph_137.png | Bin 0 -> 3607 bytes master/inherit_graph_138.map | 3 + master/inherit_graph_138.md5 | 1 + master/inherit_graph_138.png | Bin 0 -> 2486 bytes master/inherit_graph_139.map | 3 + master/inherit_graph_139.md5 | 1 + master/inherit_graph_139.png | Bin 0 -> 3532 bytes master/inherit_graph_14.map | 3 + master/inherit_graph_14.md5 | 1 + master/inherit_graph_14.png | Bin 0 -> 2783 bytes master/inherit_graph_140.map | 3 + master/inherit_graph_140.md5 | 1 + master/inherit_graph_140.png | Bin 0 -> 2610 bytes master/inherit_graph_141.map | 3 + master/inherit_graph_141.md5 | 1 + master/inherit_graph_141.png | Bin 0 -> 2856 bytes master/inherit_graph_142.map | 3 + master/inherit_graph_142.md5 | 1 + master/inherit_graph_142.png | Bin 0 -> 3673 bytes master/inherit_graph_143.map | 3 + master/inherit_graph_143.md5 | 1 + master/inherit_graph_143.png | Bin 0 -> 2614 bytes master/inherit_graph_144.map | 3 + master/inherit_graph_144.md5 | 1 + master/inherit_graph_144.png | Bin 0 -> 2650 bytes master/inherit_graph_145.map | 3 + master/inherit_graph_145.md5 | 1 + master/inherit_graph_145.png | Bin 0 -> 3518 bytes master/inherit_graph_146.map | 3 + master/inherit_graph_146.md5 | 1 + master/inherit_graph_146.png | Bin 0 -> 2203 bytes master/inherit_graph_147.map | 3 + master/inherit_graph_147.md5 | 1 + master/inherit_graph_147.png | Bin 0 -> 1526 bytes master/inherit_graph_148.map | 3 + master/inherit_graph_148.md5 | 1 + master/inherit_graph_148.png | Bin 0 -> 2516 bytes master/inherit_graph_149.map | 3 + master/inherit_graph_149.md5 | 1 + master/inherit_graph_149.png | Bin 0 -> 1901 bytes master/inherit_graph_15.map | 3 + master/inherit_graph_15.md5 | 1 + master/inherit_graph_15.png | Bin 0 -> 3038 bytes master/inherit_graph_150.map | 3 + master/inherit_graph_150.md5 | 1 + master/inherit_graph_150.png | Bin 0 -> 2395 bytes master/inherit_graph_151.map | 3 + master/inherit_graph_151.md5 | 1 + master/inherit_graph_151.png | Bin 0 -> 1521 bytes master/inherit_graph_152.map | 3 + master/inherit_graph_152.md5 | 1 + master/inherit_graph_152.png | Bin 0 -> 1513 bytes master/inherit_graph_153.map | 4 + master/inherit_graph_153.md5 | 1 + master/inherit_graph_153.png | Bin 0 -> 2921 bytes master/inherit_graph_154.map | 3 + master/inherit_graph_154.md5 | 1 + master/inherit_graph_154.png | Bin 0 -> 1530 bytes master/inherit_graph_155.map | 3 + master/inherit_graph_155.md5 | 1 + master/inherit_graph_155.png | Bin 0 -> 2007 bytes master/inherit_graph_156.map | 3 + master/inherit_graph_156.md5 | 1 + master/inherit_graph_156.png | Bin 0 -> 1735 bytes master/inherit_graph_157.map | 3 + master/inherit_graph_157.md5 | 1 + master/inherit_graph_157.png | Bin 0 -> 1811 bytes master/inherit_graph_158.map | 3 + master/inherit_graph_158.md5 | 1 + master/inherit_graph_158.png | Bin 0 -> 2491 bytes master/inherit_graph_159.map | 3 + master/inherit_graph_159.md5 | 1 + master/inherit_graph_159.png | Bin 0 -> 2578 bytes master/inherit_graph_16.map | 3 + master/inherit_graph_16.md5 | 1 + master/inherit_graph_16.png | Bin 0 -> 2607 bytes master/inherit_graph_160.map | 3 + master/inherit_graph_160.md5 | 1 + master/inherit_graph_160.png | Bin 0 -> 2323 bytes master/inherit_graph_161.map | 3 + master/inherit_graph_161.md5 | 1 + master/inherit_graph_161.png | Bin 0 -> 2435 bytes master/inherit_graph_162.map | 3 + master/inherit_graph_162.md5 | 1 + master/inherit_graph_162.png | Bin 0 -> 2687 bytes master/inherit_graph_163.map | 3 + master/inherit_graph_163.md5 | 1 + master/inherit_graph_163.png | Bin 0 -> 2788 bytes master/inherit_graph_164.map | 3 + master/inherit_graph_164.md5 | 1 + master/inherit_graph_164.png | Bin 0 -> 2174 bytes master/inherit_graph_165.map | 3 + master/inherit_graph_165.md5 | 1 + master/inherit_graph_165.png | Bin 0 -> 2284 bytes master/inherit_graph_166.map | 3 + master/inherit_graph_166.md5 | 1 + master/inherit_graph_166.png | Bin 0 -> 2970 bytes master/inherit_graph_167.map | 3 + master/inherit_graph_167.md5 | 1 + master/inherit_graph_167.png | Bin 0 -> 2610 bytes master/inherit_graph_168.map | 3 + master/inherit_graph_168.md5 | 1 + master/inherit_graph_168.png | Bin 0 -> 2595 bytes master/inherit_graph_169.map | 3 + master/inherit_graph_169.md5 | 1 + master/inherit_graph_169.png | Bin 0 -> 2734 bytes master/inherit_graph_17.map | 3 + master/inherit_graph_17.md5 | 1 + master/inherit_graph_17.png | Bin 0 -> 2741 bytes master/inherit_graph_170.map | 3 + master/inherit_graph_170.md5 | 1 + master/inherit_graph_170.png | Bin 0 -> 2110 bytes master/inherit_graph_171.map | 3 + master/inherit_graph_171.md5 | 1 + master/inherit_graph_171.png | Bin 0 -> 2350 bytes master/inherit_graph_172.map | 3 + master/inherit_graph_172.md5 | 1 + master/inherit_graph_172.png | Bin 0 -> 2109 bytes master/inherit_graph_173.map | 3 + master/inherit_graph_173.md5 | 1 + master/inherit_graph_173.png | Bin 0 -> 1651 bytes master/inherit_graph_174.map | 3 + master/inherit_graph_174.md5 | 1 + master/inherit_graph_174.png | Bin 0 -> 2078 bytes master/inherit_graph_175.map | 3 + master/inherit_graph_175.md5 | 1 + master/inherit_graph_175.png | Bin 0 -> 2042 bytes master/inherit_graph_176.map | 3 + master/inherit_graph_176.md5 | 1 + master/inherit_graph_176.png | Bin 0 -> 2706 bytes master/inherit_graph_177.map | 3 + master/inherit_graph_177.md5 | 1 + master/inherit_graph_177.png | Bin 0 -> 1988 bytes master/inherit_graph_178.map | 3 + master/inherit_graph_178.md5 | 1 + master/inherit_graph_178.png | Bin 0 -> 2648 bytes master/inherit_graph_179.map | 3 + master/inherit_graph_179.md5 | 1 + master/inherit_graph_179.png | Bin 0 -> 2721 bytes master/inherit_graph_18.map | 3 + master/inherit_graph_18.md5 | 1 + master/inherit_graph_18.png | Bin 0 -> 3076 bytes master/inherit_graph_180.map | 3 + master/inherit_graph_180.md5 | 1 + master/inherit_graph_180.png | Bin 0 -> 2606 bytes master/inherit_graph_181.map | 5 + master/inherit_graph_181.md5 | 1 + master/inherit_graph_181.png | Bin 0 -> 3982 bytes master/inherit_graph_182.map | 3 + master/inherit_graph_182.md5 | 1 + master/inherit_graph_182.png | Bin 0 -> 1966 bytes master/inherit_graph_183.map | 3 + master/inherit_graph_183.md5 | 1 + master/inherit_graph_183.png | Bin 0 -> 2119 bytes master/inherit_graph_184.map | 3 + master/inherit_graph_184.md5 | 1 + master/inherit_graph_184.png | Bin 0 -> 3075 bytes master/inherit_graph_185.map | 3 + master/inherit_graph_185.md5 | 1 + master/inherit_graph_185.png | Bin 0 -> 3306 bytes master/inherit_graph_186.map | 3 + master/inherit_graph_186.md5 | 1 + master/inherit_graph_186.png | Bin 0 -> 2732 bytes master/inherit_graph_187.map | 3 + master/inherit_graph_187.md5 | 1 + master/inherit_graph_187.png | Bin 0 -> 3212 bytes master/inherit_graph_188.map | 3 + master/inherit_graph_188.md5 | 1 + master/inherit_graph_188.png | Bin 0 -> 2517 bytes master/inherit_graph_189.map | 3 + master/inherit_graph_189.md5 | 1 + master/inherit_graph_189.png | Bin 0 -> 3049 bytes master/inherit_graph_19.map | 3 + master/inherit_graph_19.md5 | 1 + master/inherit_graph_19.png | Bin 0 -> 3089 bytes master/inherit_graph_190.map | 3 + master/inherit_graph_190.md5 | 1 + master/inherit_graph_190.png | Bin 0 -> 2179 bytes master/inherit_graph_191.map | 3 + master/inherit_graph_191.md5 | 1 + master/inherit_graph_191.png | Bin 0 -> 3126 bytes master/inherit_graph_192.map | 3 + master/inherit_graph_192.md5 | 1 + master/inherit_graph_192.png | Bin 0 -> 3291 bytes master/inherit_graph_193.map | 3 + master/inherit_graph_193.md5 | 1 + master/inherit_graph_193.png | Bin 0 -> 2858 bytes master/inherit_graph_194.map | 3 + master/inherit_graph_194.md5 | 1 + master/inherit_graph_194.png | Bin 0 -> 3112 bytes master/inherit_graph_195.map | 3 + master/inherit_graph_195.md5 | 1 + master/inherit_graph_195.png | Bin 0 -> 2015 bytes master/inherit_graph_196.map | 3 + master/inherit_graph_196.md5 | 1 + master/inherit_graph_196.png | Bin 0 -> 2512 bytes master/inherit_graph_197.map | 3 + master/inherit_graph_197.md5 | 1 + master/inherit_graph_197.png | Bin 0 -> 2743 bytes master/inherit_graph_198.map | 3 + master/inherit_graph_198.md5 | 1 + master/inherit_graph_198.png | Bin 0 -> 2202 bytes master/inherit_graph_199.map | 3 + master/inherit_graph_199.md5 | 1 + master/inherit_graph_199.png | Bin 0 -> 2575 bytes master/inherit_graph_2.map | 3 + master/inherit_graph_2.md5 | 1 + master/inherit_graph_2.png | Bin 0 -> 2436 bytes master/inherit_graph_20.map | 3 + master/inherit_graph_20.md5 | 1 + master/inherit_graph_20.png | Bin 0 -> 1927 bytes master/inherit_graph_200.map | 3 + master/inherit_graph_200.md5 | 1 + master/inherit_graph_200.png | Bin 0 -> 2563 bytes master/inherit_graph_201.map | 9 + master/inherit_graph_201.md5 | 1 + master/inherit_graph_201.png | Bin 0 -> 19872 bytes master/inherit_graph_202.map | 3 + master/inherit_graph_202.md5 | 1 + master/inherit_graph_202.png | Bin 0 -> 2126 bytes master/inherit_graph_203.map | 3 + master/inherit_graph_203.md5 | 1 + master/inherit_graph_203.png | Bin 0 -> 2394 bytes master/inherit_graph_204.map | 3 + master/inherit_graph_204.md5 | 1 + master/inherit_graph_204.png | Bin 0 -> 3925 bytes master/inherit_graph_205.map | 3 + master/inherit_graph_205.md5 | 1 + master/inherit_graph_205.png | Bin 0 -> 3992 bytes master/inherit_graph_206.map | 3 + master/inherit_graph_206.md5 | 1 + master/inherit_graph_206.png | Bin 0 -> 2744 bytes master/inherit_graph_207.map | 3 + master/inherit_graph_207.md5 | 1 + master/inherit_graph_207.png | Bin 0 -> 1639 bytes master/inherit_graph_208.map | 3 + master/inherit_graph_208.md5 | 1 + master/inherit_graph_208.png | Bin 0 -> 1672 bytes master/inherit_graph_209.map | 3 + master/inherit_graph_209.md5 | 1 + master/inherit_graph_209.png | Bin 0 -> 1965 bytes master/inherit_graph_21.map | 3 + master/inherit_graph_21.md5 | 1 + master/inherit_graph_21.png | Bin 0 -> 1458 bytes master/inherit_graph_210.map | 3 + master/inherit_graph_210.md5 | 1 + master/inherit_graph_210.png | Bin 0 -> 1961 bytes master/inherit_graph_211.map | 3 + master/inherit_graph_211.md5 | 1 + master/inherit_graph_211.png | Bin 0 -> 1758 bytes master/inherit_graph_212.map | 3 + master/inherit_graph_212.md5 | 1 + master/inherit_graph_212.png | Bin 0 -> 1726 bytes master/inherit_graph_213.map | 3 + master/inherit_graph_213.md5 | 1 + master/inherit_graph_213.png | Bin 0 -> 1857 bytes master/inherit_graph_214.map | 3 + master/inherit_graph_214.md5 | 1 + master/inherit_graph_214.png | Bin 0 -> 2037 bytes master/inherit_graph_215.map | 3 + master/inherit_graph_215.md5 | 1 + master/inherit_graph_215.png | Bin 0 -> 2068 bytes master/inherit_graph_216.map | 3 + master/inherit_graph_216.md5 | 1 + master/inherit_graph_216.png | Bin 0 -> 1710 bytes master/inherit_graph_217.map | 3 + master/inherit_graph_217.md5 | 1 + master/inherit_graph_217.png | Bin 0 -> 2204 bytes master/inherit_graph_218.map | 3 + master/inherit_graph_218.md5 | 1 + master/inherit_graph_218.png | Bin 0 -> 2144 bytes master/inherit_graph_219.map | 3 + master/inherit_graph_219.md5 | 1 + master/inherit_graph_219.png | Bin 0 -> 2322 bytes master/inherit_graph_22.map | 3 + master/inherit_graph_22.md5 | 1 + master/inherit_graph_22.png | Bin 0 -> 2046 bytes master/inherit_graph_220.map | 3 + master/inherit_graph_220.md5 | 1 + master/inherit_graph_220.png | Bin 0 -> 2312 bytes master/inherit_graph_221.map | 3 + master/inherit_graph_221.md5 | 1 + master/inherit_graph_221.png | Bin 0 -> 2356 bytes master/inherit_graph_222.map | 3 + master/inherit_graph_222.md5 | 1 + master/inherit_graph_222.png | Bin 0 -> 1676 bytes master/inherit_graph_223.map | 3 + master/inherit_graph_223.md5 | 1 + master/inherit_graph_223.png | Bin 0 -> 2377 bytes master/inherit_graph_224.map | 3 + master/inherit_graph_224.md5 | 1 + master/inherit_graph_224.png | Bin 0 -> 2083 bytes master/inherit_graph_225.map | 3 + master/inherit_graph_225.md5 | 1 + master/inherit_graph_225.png | Bin 0 -> 2054 bytes master/inherit_graph_226.map | 3 + master/inherit_graph_226.md5 | 1 + master/inherit_graph_226.png | Bin 0 -> 2074 bytes master/inherit_graph_227.map | 3 + master/inherit_graph_227.md5 | 1 + master/inherit_graph_227.png | Bin 0 -> 1830 bytes master/inherit_graph_228.map | 3 + master/inherit_graph_228.md5 | 1 + master/inherit_graph_228.png | Bin 0 -> 2715 bytes master/inherit_graph_229.map | 3 + master/inherit_graph_229.md5 | 1 + master/inherit_graph_229.png | Bin 0 -> 2351 bytes master/inherit_graph_23.map | 3 + master/inherit_graph_23.md5 | 1 + master/inherit_graph_23.png | Bin 0 -> 1771 bytes master/inherit_graph_230.map | 3 + master/inherit_graph_230.md5 | 1 + master/inherit_graph_230.png | Bin 0 -> 2284 bytes master/inherit_graph_231.map | 3 + master/inherit_graph_231.md5 | 1 + master/inherit_graph_231.png | Bin 0 -> 2290 bytes master/inherit_graph_232.map | 3 + master/inherit_graph_232.md5 | 1 + master/inherit_graph_232.png | Bin 0 -> 2530 bytes master/inherit_graph_233.map | 3 + master/inherit_graph_233.md5 | 1 + master/inherit_graph_233.png | Bin 0 -> 2610 bytes master/inherit_graph_234.map | 3 + master/inherit_graph_234.md5 | 1 + master/inherit_graph_234.png | Bin 0 -> 3465 bytes master/inherit_graph_235.map | 3 + master/inherit_graph_235.md5 | 1 + master/inherit_graph_235.png | Bin 0 -> 3450 bytes master/inherit_graph_236.map | 3 + master/inherit_graph_236.md5 | 1 + master/inherit_graph_236.png | Bin 0 -> 3505 bytes master/inherit_graph_237.map | 3 + master/inherit_graph_237.md5 | 1 + master/inherit_graph_237.png | Bin 0 -> 3428 bytes master/inherit_graph_238.map | 3 + master/inherit_graph_238.md5 | 1 + master/inherit_graph_238.png | Bin 0 -> 3378 bytes master/inherit_graph_239.map | 3 + master/inherit_graph_239.md5 | 1 + master/inherit_graph_239.png | Bin 0 -> 3320 bytes master/inherit_graph_24.map | 3 + master/inherit_graph_24.md5 | 1 + master/inherit_graph_24.png | Bin 0 -> 1296 bytes master/inherit_graph_240.map | 3 + master/inherit_graph_240.md5 | 1 + master/inherit_graph_240.png | Bin 0 -> 1864 bytes master/inherit_graph_241.map | 3 + master/inherit_graph_241.md5 | 1 + master/inherit_graph_241.png | Bin 0 -> 2230 bytes master/inherit_graph_242.map | 3 + master/inherit_graph_242.md5 | 1 + master/inherit_graph_242.png | Bin 0 -> 2337 bytes master/inherit_graph_243.map | 3 + master/inherit_graph_243.md5 | 1 + master/inherit_graph_243.png | Bin 0 -> 2463 bytes master/inherit_graph_244.map | 3 + master/inherit_graph_244.md5 | 1 + master/inherit_graph_244.png | Bin 0 -> 2623 bytes master/inherit_graph_245.map | 3 + master/inherit_graph_245.md5 | 1 + master/inherit_graph_245.png | Bin 0 -> 3912 bytes master/inherit_graph_246.map | 3 + master/inherit_graph_246.md5 | 1 + master/inherit_graph_246.png | Bin 0 -> 3802 bytes master/inherit_graph_247.map | 3 + master/inherit_graph_247.md5 | 1 + master/inherit_graph_247.png | Bin 0 -> 4050 bytes master/inherit_graph_248.map | 3 + master/inherit_graph_248.md5 | 1 + master/inherit_graph_248.png | Bin 0 -> 2409 bytes master/inherit_graph_249.map | 3 + master/inherit_graph_249.md5 | 1 + master/inherit_graph_249.png | Bin 0 -> 3096 bytes master/inherit_graph_25.map | 3 + master/inherit_graph_25.md5 | 1 + master/inherit_graph_25.png | Bin 0 -> 2227 bytes master/inherit_graph_250.map | 3 + master/inherit_graph_250.md5 | 1 + master/inherit_graph_250.png | Bin 0 -> 2716 bytes master/inherit_graph_251.map | 3 + master/inherit_graph_251.md5 | 1 + master/inherit_graph_251.png | Bin 0 -> 2684 bytes master/inherit_graph_252.map | 3 + master/inherit_graph_252.md5 | 1 + master/inherit_graph_252.png | Bin 0 -> 1980 bytes master/inherit_graph_253.map | 3 + master/inherit_graph_253.md5 | 1 + master/inherit_graph_253.png | Bin 0 -> 2617 bytes master/inherit_graph_254.map | 3 + master/inherit_graph_254.md5 | 1 + master/inherit_graph_254.png | Bin 0 -> 1685 bytes master/inherit_graph_255.map | 3 + master/inherit_graph_255.md5 | 1 + master/inherit_graph_255.png | Bin 0 -> 1211 bytes master/inherit_graph_256.map | 3 + master/inherit_graph_256.md5 | 1 + master/inherit_graph_256.png | Bin 0 -> 2130 bytes master/inherit_graph_257.map | 3 + master/inherit_graph_257.md5 | 1 + master/inherit_graph_257.png | Bin 0 -> 2559 bytes master/inherit_graph_258.map | 3 + master/inherit_graph_258.md5 | 1 + master/inherit_graph_258.png | Bin 0 -> 2653 bytes master/inherit_graph_259.map | 3 + master/inherit_graph_259.md5 | 1 + master/inherit_graph_259.png | Bin 0 -> 2880 bytes master/inherit_graph_26.map | 3 + master/inherit_graph_26.md5 | 1 + master/inherit_graph_26.png | Bin 0 -> 1883 bytes master/inherit_graph_260.map | 3 + master/inherit_graph_260.md5 | 1 + master/inherit_graph_260.png | Bin 0 -> 3559 bytes master/inherit_graph_261.map | 3 + master/inherit_graph_261.md5 | 1 + master/inherit_graph_261.png | Bin 0 -> 2524 bytes master/inherit_graph_262.map | 3 + master/inherit_graph_262.md5 | 1 + master/inherit_graph_262.png | Bin 0 -> 2067 bytes master/inherit_graph_263.map | 3 + master/inherit_graph_263.md5 | 1 + master/inherit_graph_263.png | Bin 0 -> 2012 bytes master/inherit_graph_264.map | 3 + master/inherit_graph_264.md5 | 1 + master/inherit_graph_264.png | Bin 0 -> 2137 bytes master/inherit_graph_265.map | 3 + master/inherit_graph_265.md5 | 1 + master/inherit_graph_265.png | Bin 0 -> 2254 bytes master/inherit_graph_266.map | 3 + master/inherit_graph_266.md5 | 1 + master/inherit_graph_266.png | Bin 0 -> 2225 bytes master/inherit_graph_267.map | 3 + master/inherit_graph_267.md5 | 1 + master/inherit_graph_267.png | Bin 0 -> 2119 bytes master/inherit_graph_268.map | 3 + master/inherit_graph_268.md5 | 1 + master/inherit_graph_268.png | Bin 0 -> 2139 bytes master/inherit_graph_269.map | 3 + master/inherit_graph_269.md5 | 1 + master/inherit_graph_269.png | Bin 0 -> 2649 bytes master/inherit_graph_27.map | 3 + master/inherit_graph_27.md5 | 1 + master/inherit_graph_27.png | Bin 0 -> 1103 bytes master/inherit_graph_270.map | 3 + master/inherit_graph_270.md5 | 1 + master/inherit_graph_270.png | Bin 0 -> 2557 bytes master/inherit_graph_271.map | 3 + master/inherit_graph_271.md5 | 1 + master/inherit_graph_271.png | Bin 0 -> 2136 bytes master/inherit_graph_272.map | 3 + master/inherit_graph_272.md5 | 1 + master/inherit_graph_272.png | Bin 0 -> 2524 bytes master/inherit_graph_273.map | 3 + master/inherit_graph_273.md5 | 1 + master/inherit_graph_273.png | Bin 0 -> 1815 bytes master/inherit_graph_274.map | 3 + master/inherit_graph_274.md5 | 1 + master/inherit_graph_274.png | Bin 0 -> 1727 bytes master/inherit_graph_275.map | 3 + master/inherit_graph_275.md5 | 1 + master/inherit_graph_275.png | Bin 0 -> 1989 bytes master/inherit_graph_276.map | 3 + master/inherit_graph_276.md5 | 1 + master/inherit_graph_276.png | Bin 0 -> 2029 bytes master/inherit_graph_277.map | 3 + master/inherit_graph_277.md5 | 1 + master/inherit_graph_277.png | Bin 0 -> 3286 bytes master/inherit_graph_278.map | 3 + master/inherit_graph_278.md5 | 1 + master/inherit_graph_278.png | Bin 0 -> 2909 bytes master/inherit_graph_279.map | 3 + master/inherit_graph_279.md5 | 1 + master/inherit_graph_279.png | Bin 0 -> 4102 bytes master/inherit_graph_28.map | 3 + master/inherit_graph_28.md5 | 1 + master/inherit_graph_28.png | Bin 0 -> 2014 bytes master/inherit_graph_280.map | 3 + master/inherit_graph_280.md5 | 1 + master/inherit_graph_280.png | Bin 0 -> 4207 bytes master/inherit_graph_281.map | 3 + master/inherit_graph_281.md5 | 1 + master/inherit_graph_281.png | Bin 0 -> 4033 bytes master/inherit_graph_282.map | 3 + master/inherit_graph_282.md5 | 1 + master/inherit_graph_282.png | Bin 0 -> 3949 bytes master/inherit_graph_283.map | 3 + master/inherit_graph_283.md5 | 1 + master/inherit_graph_283.png | Bin 0 -> 2829 bytes master/inherit_graph_284.map | 3 + master/inherit_graph_284.md5 | 1 + master/inherit_graph_284.png | Bin 0 -> 3459 bytes master/inherit_graph_285.map | 3 + master/inherit_graph_285.md5 | 1 + master/inherit_graph_285.png | Bin 0 -> 3083 bytes master/inherit_graph_286.map | 3 + master/inherit_graph_286.md5 | 1 + master/inherit_graph_286.png | Bin 0 -> 1910 bytes master/inherit_graph_287.map | 3 + master/inherit_graph_287.md5 | 1 + master/inherit_graph_287.png | Bin 0 -> 2573 bytes master/inherit_graph_288.map | 3 + master/inherit_graph_288.md5 | 1 + master/inherit_graph_288.png | Bin 0 -> 1154 bytes master/inherit_graph_289.map | 3 + master/inherit_graph_289.md5 | 1 + master/inherit_graph_289.png | Bin 0 -> 2599 bytes master/inherit_graph_29.map | 3 + master/inherit_graph_29.md5 | 1 + master/inherit_graph_29.png | Bin 0 -> 1245 bytes master/inherit_graph_290.map | 3 + master/inherit_graph_290.md5 | 1 + master/inherit_graph_290.png | Bin 0 -> 1922 bytes master/inherit_graph_291.map | 3 + master/inherit_graph_291.md5 | 1 + master/inherit_graph_291.png | Bin 0 -> 2707 bytes master/inherit_graph_292.map | 3 + master/inherit_graph_292.md5 | 1 + master/inherit_graph_292.png | Bin 0 -> 2070 bytes master/inherit_graph_293.map | 3 + master/inherit_graph_293.md5 | 1 + master/inherit_graph_293.png | Bin 0 -> 3099 bytes master/inherit_graph_294.map | 3 + master/inherit_graph_294.md5 | 1 + master/inherit_graph_294.png | Bin 0 -> 2912 bytes master/inherit_graph_295.map | 3 + master/inherit_graph_295.md5 | 1 + master/inherit_graph_295.png | Bin 0 -> 2365 bytes master/inherit_graph_296.map | 3 + master/inherit_graph_296.md5 | 1 + master/inherit_graph_296.png | Bin 0 -> 2350 bytes master/inherit_graph_297.map | 3 + master/inherit_graph_297.md5 | 1 + master/inherit_graph_297.png | Bin 0 -> 2859 bytes master/inherit_graph_298.map | 3 + master/inherit_graph_298.md5 | 1 + master/inherit_graph_298.png | Bin 0 -> 2813 bytes master/inherit_graph_299.map | 3 + master/inherit_graph_299.md5 | 1 + master/inherit_graph_299.png | Bin 0 -> 3377 bytes master/inherit_graph_3.map | 3 + master/inherit_graph_3.md5 | 1 + master/inherit_graph_3.png | Bin 0 -> 2528 bytes master/inherit_graph_30.map | 3 + master/inherit_graph_30.md5 | 1 + master/inherit_graph_30.png | Bin 0 -> 1311 bytes master/inherit_graph_300.map | 3 + master/inherit_graph_300.md5 | 1 + master/inherit_graph_300.png | Bin 0 -> 3222 bytes master/inherit_graph_301.map | 3 + master/inherit_graph_301.md5 | 1 + master/inherit_graph_301.png | Bin 0 -> 2896 bytes master/inherit_graph_302.map | 3 + master/inherit_graph_302.md5 | 1 + master/inherit_graph_302.png | Bin 0 -> 2290 bytes master/inherit_graph_303.map | 3 + master/inherit_graph_303.md5 | 1 + master/inherit_graph_303.png | Bin 0 -> 2779 bytes master/inherit_graph_304.map | 3 + master/inherit_graph_304.md5 | 1 + master/inherit_graph_304.png | Bin 0 -> 2431 bytes master/inherit_graph_305.map | 3 + master/inherit_graph_305.md5 | 1 + master/inherit_graph_305.png | Bin 0 -> 2521 bytes master/inherit_graph_306.map | 3 + master/inherit_graph_306.md5 | 1 + master/inherit_graph_306.png | Bin 0 -> 2650 bytes master/inherit_graph_307.map | 3 + master/inherit_graph_307.md5 | 1 + master/inherit_graph_307.png | Bin 0 -> 2302 bytes master/inherit_graph_308.map | 3 + master/inherit_graph_308.md5 | 1 + master/inherit_graph_308.png | Bin 0 -> 2500 bytes master/inherit_graph_309.map | 3 + master/inherit_graph_309.md5 | 1 + master/inherit_graph_309.png | Bin 0 -> 2393 bytes master/inherit_graph_31.map | 3 + master/inherit_graph_31.md5 | 1 + master/inherit_graph_31.png | Bin 0 -> 1865 bytes master/inherit_graph_310.map | 3 + master/inherit_graph_310.md5 | 1 + master/inherit_graph_310.png | Bin 0 -> 2623 bytes master/inherit_graph_311.map | 3 + master/inherit_graph_311.md5 | 1 + master/inherit_graph_311.png | Bin 0 -> 2057 bytes master/inherit_graph_312.map | 3 + master/inherit_graph_312.md5 | 1 + master/inherit_graph_312.png | Bin 0 -> 2122 bytes master/inherit_graph_313.map | 3 + master/inherit_graph_313.md5 | 1 + master/inherit_graph_313.png | Bin 0 -> 1953 bytes master/inherit_graph_32.map | 3 + master/inherit_graph_32.md5 | 1 + master/inherit_graph_32.png | Bin 0 -> 1436 bytes master/inherit_graph_33.map | 3 + master/inherit_graph_33.md5 | 1 + master/inherit_graph_33.png | Bin 0 -> 1729 bytes master/inherit_graph_34.map | 3 + master/inherit_graph_34.md5 | 1 + master/inherit_graph_34.png | Bin 0 -> 1492 bytes master/inherit_graph_35.map | 3 + master/inherit_graph_35.md5 | 1 + master/inherit_graph_35.png | Bin 0 -> 2097 bytes master/inherit_graph_36.map | 3 + master/inherit_graph_36.md5 | 1 + master/inherit_graph_36.png | Bin 0 -> 1936 bytes master/inherit_graph_37.map | 3 + master/inherit_graph_37.md5 | 1 + master/inherit_graph_37.png | Bin 0 -> 1355 bytes master/inherit_graph_38.map | 3 + master/inherit_graph_38.md5 | 1 + master/inherit_graph_38.png | Bin 0 -> 1768 bytes master/inherit_graph_39.map | 3 + master/inherit_graph_39.md5 | 1 + master/inherit_graph_39.png | Bin 0 -> 1206 bytes master/inherit_graph_4.map | 3 + master/inherit_graph_4.md5 | 1 + master/inherit_graph_4.png | Bin 0 -> 2023 bytes master/inherit_graph_40.map | 3 + master/inherit_graph_40.md5 | 1 + master/inherit_graph_40.png | Bin 0 -> 1701 bytes master/inherit_graph_41.map | 4 + master/inherit_graph_41.md5 | 1 + master/inherit_graph_41.png | Bin 0 -> 2636 bytes master/inherit_graph_42.map | 3 + master/inherit_graph_42.md5 | 1 + master/inherit_graph_42.png | Bin 0 -> 2201 bytes master/inherit_graph_43.map | 3 + master/inherit_graph_43.md5 | 1 + master/inherit_graph_43.png | Bin 0 -> 2274 bytes master/inherit_graph_44.map | 3 + master/inherit_graph_44.md5 | 1 + master/inherit_graph_44.png | Bin 0 -> 2002 bytes master/inherit_graph_45.map | 3 + master/inherit_graph_45.md5 | 1 + master/inherit_graph_45.png | Bin 0 -> 2903 bytes master/inherit_graph_46.map | 4 + master/inherit_graph_46.md5 | 1 + master/inherit_graph_46.png | Bin 0 -> 1886 bytes master/inherit_graph_47.map | 3 + master/inherit_graph_47.md5 | 1 + master/inherit_graph_47.png | Bin 0 -> 1623 bytes master/inherit_graph_48.map | 3 + master/inherit_graph_48.md5 | 1 + master/inherit_graph_48.png | Bin 0 -> 1274 bytes master/inherit_graph_49.map | 4 + master/inherit_graph_49.md5 | 1 + master/inherit_graph_49.png | Bin 0 -> 2950 bytes master/inherit_graph_5.map | 3 + master/inherit_graph_5.md5 | 1 + master/inherit_graph_5.png | Bin 0 -> 1554 bytes master/inherit_graph_50.map | 3 + master/inherit_graph_50.md5 | 1 + master/inherit_graph_50.png | Bin 0 -> 2773 bytes master/inherit_graph_51.map | 3 + master/inherit_graph_51.md5 | 1 + master/inherit_graph_51.png | Bin 0 -> 2446 bytes master/inherit_graph_52.map | 3 + master/inherit_graph_52.md5 | 1 + master/inherit_graph_52.png | Bin 0 -> 2586 bytes master/inherit_graph_53.map | 3 + master/inherit_graph_53.md5 | 1 + master/inherit_graph_53.png | Bin 0 -> 2548 bytes master/inherit_graph_54.map | 3 + master/inherit_graph_54.md5 | 1 + master/inherit_graph_54.png | Bin 0 -> 1462 bytes master/inherit_graph_55.map | 3 + master/inherit_graph_55.md5 | 1 + master/inherit_graph_55.png | Bin 0 -> 2119 bytes master/inherit_graph_56.map | 3 + master/inherit_graph_56.md5 | 1 + master/inherit_graph_56.png | Bin 0 -> 2016 bytes master/inherit_graph_57.map | 3 + master/inherit_graph_57.md5 | 1 + master/inherit_graph_57.png | Bin 0 -> 2225 bytes master/inherit_graph_58.map | 3 + master/inherit_graph_58.md5 | 1 + master/inherit_graph_58.png | Bin 0 -> 2566 bytes master/inherit_graph_59.map | 4 + master/inherit_graph_59.md5 | 1 + master/inherit_graph_59.png | Bin 0 -> 2055 bytes master/inherit_graph_6.map | 3 + master/inherit_graph_6.md5 | 1 + master/inherit_graph_6.png | Bin 0 -> 2025 bytes master/inherit_graph_60.map | 3 + master/inherit_graph_60.md5 | 1 + master/inherit_graph_60.png | Bin 0 -> 1637 bytes master/inherit_graph_61.map | 3 + master/inherit_graph_61.md5 | 1 + master/inherit_graph_61.png | Bin 0 -> 1589 bytes master/inherit_graph_62.map | 4 + master/inherit_graph_62.md5 | 1 + master/inherit_graph_62.png | Bin 0 -> 2136 bytes master/inherit_graph_63.map | 5 + master/inherit_graph_63.md5 | 1 + master/inherit_graph_63.png | Bin 0 -> 4267 bytes master/inherit_graph_64.map | 3 + master/inherit_graph_64.md5 | 1 + master/inherit_graph_64.png | Bin 0 -> 2310 bytes master/inherit_graph_65.map | 3 + master/inherit_graph_65.md5 | 1 + master/inherit_graph_65.png | Bin 0 -> 1653 bytes master/inherit_graph_66.map | 4 + master/inherit_graph_66.md5 | 1 + master/inherit_graph_66.png | Bin 0 -> 2173 bytes master/inherit_graph_67.map | 3 + master/inherit_graph_67.md5 | 1 + master/inherit_graph_67.png | Bin 0 -> 1827 bytes master/inherit_graph_68.map | 3 + master/inherit_graph_68.md5 | 1 + master/inherit_graph_68.png | Bin 0 -> 1633 bytes master/inherit_graph_69.map | 3 + master/inherit_graph_69.md5 | 1 + master/inherit_graph_69.png | Bin 0 -> 1702 bytes master/inherit_graph_7.map | 3 + master/inherit_graph_7.md5 | 1 + master/inherit_graph_7.png | Bin 0 -> 2870 bytes master/inherit_graph_70.map | 3 + master/inherit_graph_70.md5 | 1 + master/inherit_graph_70.png | Bin 0 -> 1543 bytes master/inherit_graph_71.map | 3 + master/inherit_graph_71.md5 | 1 + master/inherit_graph_71.png | Bin 0 -> 2381 bytes master/inherit_graph_72.map | 3 + master/inherit_graph_72.md5 | 1 + master/inherit_graph_72.png | Bin 0 -> 2180 bytes master/inherit_graph_73.map | 3 + master/inherit_graph_73.md5 | 1 + master/inherit_graph_73.png | Bin 0 -> 1985 bytes master/inherit_graph_74.map | 3 + master/inherit_graph_74.md5 | 1 + master/inherit_graph_74.png | Bin 0 -> 1803 bytes master/inherit_graph_75.map | 3 + master/inherit_graph_75.md5 | 1 + master/inherit_graph_75.png | Bin 0 -> 1907 bytes master/inherit_graph_76.map | 3 + master/inherit_graph_76.md5 | 1 + master/inherit_graph_76.png | Bin 0 -> 2143 bytes master/inherit_graph_77.map | 3 + master/inherit_graph_77.md5 | 1 + master/inherit_graph_77.png | Bin 0 -> 1876 bytes master/inherit_graph_78.map | 3 + master/inherit_graph_78.md5 | 1 + master/inherit_graph_78.png | Bin 0 -> 1804 bytes master/inherit_graph_79.map | 3 + master/inherit_graph_79.md5 | 1 + master/inherit_graph_79.png | Bin 0 -> 1678 bytes master/inherit_graph_8.map | 3 + master/inherit_graph_8.md5 | 1 + master/inherit_graph_8.png | Bin 0 -> 2589 bytes master/inherit_graph_80.map | 3 + master/inherit_graph_80.md5 | 1 + master/inherit_graph_80.png | Bin 0 -> 1859 bytes master/inherit_graph_81.map | 3 + master/inherit_graph_81.md5 | 1 + master/inherit_graph_81.png | Bin 0 -> 1708 bytes master/inherit_graph_82.map | 3 + master/inherit_graph_82.md5 | 1 + master/inherit_graph_82.png | Bin 0 -> 2212 bytes master/inherit_graph_83.map | 3 + master/inherit_graph_83.md5 | 1 + master/inherit_graph_83.png | Bin 0 -> 2227 bytes master/inherit_graph_84.map | 3 + master/inherit_graph_84.md5 | 1 + master/inherit_graph_84.png | Bin 0 -> 1892 bytes master/inherit_graph_85.map | 3 + master/inherit_graph_85.md5 | 1 + master/inherit_graph_85.png | Bin 0 -> 2592 bytes master/inherit_graph_86.map | 3 + master/inherit_graph_86.md5 | 1 + master/inherit_graph_86.png | Bin 0 -> 2217 bytes master/inherit_graph_87.map | 3 + master/inherit_graph_87.md5 | 1 + master/inherit_graph_87.png | Bin 0 -> 2250 bytes master/inherit_graph_88.map | 3 + master/inherit_graph_88.md5 | 1 + master/inherit_graph_88.png | Bin 0 -> 2190 bytes master/inherit_graph_89.map | 3 + master/inherit_graph_89.md5 | 1 + master/inherit_graph_89.png | Bin 0 -> 1942 bytes master/inherit_graph_9.map | 3 + master/inherit_graph_9.md5 | 1 + master/inherit_graph_9.png | Bin 0 -> 2718 bytes master/inherit_graph_90.map | 3 + master/inherit_graph_90.md5 | 1 + master/inherit_graph_90.png | Bin 0 -> 1756 bytes master/inherit_graph_91.map | 3 + master/inherit_graph_91.md5 | 1 + master/inherit_graph_91.png | Bin 0 -> 2059 bytes master/inherit_graph_92.map | 3 + master/inherit_graph_92.md5 | 1 + master/inherit_graph_92.png | Bin 0 -> 2478 bytes master/inherit_graph_93.map | 3 + master/inherit_graph_93.md5 | 1 + master/inherit_graph_93.png | Bin 0 -> 1509 bytes master/inherit_graph_94.map | 3 + master/inherit_graph_94.md5 | 1 + master/inherit_graph_94.png | Bin 0 -> 1652 bytes master/inherit_graph_95.map | 3 + master/inherit_graph_95.md5 | 1 + master/inherit_graph_95.png | Bin 0 -> 1818 bytes master/inherit_graph_96.map | 19 + master/inherit_graph_96.md5 | 1 + master/inherit_graph_96.png | Bin 0 -> 37244 bytes master/inherit_graph_97.map | 8 + master/inherit_graph_97.md5 | 1 + master/inherit_graph_97.png | Bin 0 -> 14170 bytes master/inherit_graph_98.map | 3 + master/inherit_graph_98.md5 | 1 + master/inherit_graph_98.png | Bin 0 -> 1369 bytes master/inherit_graph_99.map | 3 + master/inherit_graph_99.md5 | 1 + master/inherit_graph_99.png | Bin 0 -> 2370 bytes master/inherits.html | 1694 ++ master/iterator_8h_source.html | 279 + master/jquery.js | 35 + master/menu.js | 51 + master/menudata.js | 142 + master/namespacencine_1_1_lua_types.html | 352 + master/namespacenctl_1_1_pointer_math.html | 113 + master/namespaces.html | 388 + master/nav_f.png | Bin 0 -> 160 bytes master/nav_g.png | Bin 0 -> 95 bytes master/nav_h.png | Bin 0 -> 98 bytes master/open.png | Bin 0 -> 123 bytes master/search/all_0.html | 37 + master/search/all_0.js | 126 + master/search/all_1.html | 37 + master/search/all_1.js | 34 + master/search/all_10.html | 37 + master/search/all_10.js | 6 + master/search/all_11.html | 37 + master/search/all_11.js | 101 + master/search/all_12.html | 37 + master/search/all_12.js | 225 + master/search/all_13.html | 37 + master/search/all_13.js | 40 + master/search/all_14.html | 37 + master/search/all_14.js | 54 + master/search/all_15.html | 37 + master/search/all_15.js | 36 + master/search/all_16.html | 37 + master/search/all_16.js | 33 + master/search/all_17.html | 37 + master/search/all_17.js | 5 + master/search/all_18.html | 37 + master/search/all_18.js | 5 + master/search/all_19.html | 37 + master/search/all_19.js | 5 + master/search/all_1a.html | 37 + master/search/all_1a.js | 7 + master/search/all_2.html | 37 + master/search/all_2.js | 82 + master/search/all_3.html | 37 + master/search/all_3.js | 55 + master/search/all_4.html | 37 + master/search/all_4.js | 40 + master/search/all_5.html | 37 + master/search/all_5.js | 66 + master/search/all_6.html | 37 + master/search/all_6.js | 31 + master/search/all_7.html | 37 + master/search/all_7.js | 42 + master/search/all_8.html | 37 + master/search/all_8.js | 142 + master/search/all_9.html | 37 + master/search/all_9.js | 23 + master/search/all_a.html | 37 + master/search/all_a.js | 8 + master/search/all_b.html | 37 + master/search/all_b.js | 56 + master/search/all_c.html | 37 + master/search/all_c.js | 73 + master/search/all_d.html | 37 + master/search/all_d.js | 50 + master/search/all_e.html | 37 + master/search/all_e.js | 61 + master/search/all_f.html | 37 + master/search/all_f.js | 50 + master/search/classes_0.html | 37 + master/search/classes_0.js | 46 + master/search/classes_1.html | 37 + master/search/classes_1.js | 9 + master/search/classes_10.html | 37 + master/search/classes_10.js | 5 + master/search/classes_11.html | 37 + master/search/classes_11.js | 24 + master/search/classes_12.html | 37 + master/search/classes_12.js | 34 + master/search/classes_13.html | 37 + master/search/classes_13.js | 13 + master/search/classes_14.html | 37 + master/search/classes_14.js | 26 + master/search/classes_15.html | 37 + master/search/classes_15.js | 18 + master/search/classes_16.html | 37 + master/search/classes_16.js | 5 + master/search/classes_2.html | 37 + master/search/classes_2.js | 15 + master/search/classes_3.html | 37 + master/search/classes_3.js | 14 + master/search/classes_4.html | 37 + master/search/classes_4.js | 7 + master/search/classes_5.html | 37 + master/search/classes_5.js | 19 + master/search/classes_6.html | 37 + master/search/classes_6.js | 10 + master/search/classes_7.html | 37 + master/search/classes_7.js | 23 + master/search/classes_8.html | 37 + master/search/classes_8.js | 69 + master/search/classes_9.html | 37 + master/search/classes_9.js | 14 + master/search/classes_a.html | 37 + master/search/classes_a.js | 5 + master/search/classes_b.html | 37 + master/search/classes_b.js | 17 + master/search/classes_c.html | 37 + master/search/classes_c.js | 14 + master/search/classes_d.html | 37 + master/search/classes_d.js | 9 + master/search/classes_e.html | 37 + master/search/classes_e.js | 5 + master/search/classes_f.html | 37 + master/search/classes_f.js | 21 + master/search/close.svg | 31 + master/search/enums_0.html | 37 + master/search/enums_0.js | 5 + master/search/enums_1.html | 37 + master/search/enums_1.js | 5 + master/search/enums_2.html | 37 + master/search/enums_2.js | 4 + master/search/enums_3.html | 37 + master/search/enums_3.js | 5 + master/search/enums_4.html | 37 + master/search/enums_4.js | 7 + master/search/enums_5.html | 37 + master/search/enums_5.js | 4 + master/search/enums_6.html | 37 + master/search/enums_6.js | 5 + master/search/enums_7.html | 37 + master/search/enums_7.js | 4 + master/search/enums_8.html | 37 + master/search/enums_8.js | 4 + master/search/enums_9.html | 37 + master/search/enums_9.js | 5 + master/search/enums_a.html | 37 + master/search/enums_a.js | 5 + master/search/enums_b.html | 37 + master/search/enums_b.js | 7 + master/search/enums_c.html | 37 + master/search/enums_c.js | 4 + master/search/enums_d.html | 37 + master/search/enums_d.js | 4 + master/search/enumvalues_0.html | 37 + master/search/enumvalues_0.js | 5 + master/search/enumvalues_1.html | 37 + master/search/enumvalues_1.js | 5 + master/search/enumvalues_2.html | 37 + master/search/enumvalues_2.js | 4 + master/search/enumvalues_3.html | 37 + master/search/enumvalues_3.js | 4 + master/search/enumvalues_4.html | 37 + master/search/enumvalues_4.js | 7 + master/search/enumvalues_5.html | 37 + master/search/enumvalues_5.js | 5 + master/search/enumvalues_6.html | 37 + master/search/enumvalues_6.js | 6 + master/search/enumvalues_7.html | 37 + master/search/enumvalues_7.js | 4 + master/search/enumvalues_8.html | 37 + master/search/enumvalues_8.js | 4 + master/search/enumvalues_9.html | 37 + master/search/enumvalues_9.js | 8 + master/search/enumvalues_a.html | 37 + master/search/enumvalues_a.js | 4 + master/search/enumvalues_b.html | 37 + master/search/enumvalues_b.js | 4 + master/search/enumvalues_c.html | 37 + master/search/enumvalues_c.js | 4 + master/search/enumvalues_d.html | 37 + master/search/enumvalues_d.js | 4 + master/search/functions_0.html | 37 + master/search/functions_0.js | 77 + master/search/functions_1.html | 37 + master/search/functions_1.js | 20 + master/search/functions_10.html | 37 + master/search/functions_10.js | 4 + master/search/functions_11.html | 37 + master/search/functions_11.js | 73 + master/search/functions_12.html | 37 + master/search/functions_12.js | 184 + master/search/functions_13.html | 37 + master/search/functions_13.js | 24 + master/search/functions_14.html | 37 + master/search/functions_14.js | 29 + master/search/functions_15.html | 37 + master/search/functions_15.js | 16 + master/search/functions_16.html | 37 + master/search/functions_16.js | 14 + master/search/functions_17.html | 37 + master/search/functions_17.js | 7 + master/search/functions_2.html | 37 + master/search/functions_2.js | 59 + master/search/functions_3.html | 37 + master/search/functions_3.js | 30 + master/search/functions_4.html | 37 + master/search/functions_4.js | 27 + master/search/functions_5.html | 37 + master/search/functions_5.js | 33 + master/search/functions_6.html | 37 + master/search/functions_6.js | 18 + master/search/functions_7.html | 37 + master/search/functions_7.js | 22 + master/search/functions_8.html | 37 + master/search/functions_8.js | 71 + master/search/functions_9.html | 37 + master/search/functions_9.js | 11 + master/search/functions_a.html | 37 + master/search/functions_a.js | 6 + master/search/functions_b.html | 37 + master/search/functions_b.js | 34 + master/search/functions_c.html | 37 + master/search/functions_c.js | 52 + master/search/functions_d.html | 37 + master/search/functions_d.js | 30 + master/search/functions_e.html | 37 + master/search/functions_e.js | 54 + master/search/functions_f.html | 37 + master/search/functions_f.js | 28 + master/search/mag_sel.svg | 74 + master/search/namespaces_0.html | 37 + master/search/namespaces_0.js | 5 + master/search/nomatches.html | 13 + master/search/related_0.html | 37 + master/search/related_0.js | 5 + master/search/related_1.html | 37 + master/search/related_1.js | 5 + master/search/related_2.html | 37 + master/search/related_2.js | 4 + master/search/related_3.html | 37 + master/search/related_3.js | 11 + master/search/related_4.html | 37 + master/search/related_4.js | 5 + master/search/related_5.html | 37 + master/search/related_5.js | 6 + master/search/search.css | 257 + master/search/search.js | 816 + master/search/search_l.png | Bin 0 -> 567 bytes master/search/search_m.png | Bin 0 -> 158 bytes master/search/search_r.png | Bin 0 -> 553 bytes master/search/searchdata.js | 39 + master/search/typedefs_0.html | 37 + master/search/typedefs_0.js | 5 + master/search/typedefs_1.html | 37 + master/search/typedefs_1.js | 4 + master/search/typedefs_2.html | 37 + master/search/typedefs_2.js | 4 + master/search/typedefs_3.html | 37 + master/search/typedefs_3.js | 5 + master/search/typedefs_4.html | 37 + master/search/typedefs_4.js | 4 + master/search/variables_0.html | 37 + master/search/variables_0.js | 14 + master/search/variables_1.html | 37 + master/search/variables_1.js | 8 + master/search/variables_10.html | 37 + master/search/variables_10.js | 20 + master/search/variables_11.html | 37 + master/search/variables_11.js | 7 + master/search/variables_12.html | 37 + master/search/variables_12.js | 5 + master/search/variables_13.html | 37 + master/search/variables_13.js | 10 + master/search/variables_14.html | 37 + master/search/variables_14.js | 19 + master/search/variables_15.html | 37 + master/search/variables_15.js | 5 + master/search/variables_16.html | 37 + master/search/variables_16.js | 5 + master/search/variables_17.html | 37 + master/search/variables_17.js | 5 + master/search/variables_2.html | 37 + master/search/variables_2.js | 16 + master/search/variables_3.html | 37 + master/search/variables_3.js | 15 + master/search/variables_4.html | 37 + master/search/variables_4.js | 5 + master/search/variables_5.html | 37 + master/search/variables_5.js | 14 + master/search/variables_6.html | 37 + master/search/variables_6.js | 5 + master/search/variables_7.html | 37 + master/search/variables_7.js | 7 + master/search/variables_8.html | 37 + master/search/variables_8.js | 11 + master/search/variables_9.html | 37 + master/search/variables_9.js | 4 + master/search/variables_a.html | 37 + master/search/variables_a.js | 10 + master/search/variables_b.html | 37 + master/search/variables_b.js | 12 + master/search/variables_c.html | 37 + master/search/variables_c.js | 11 + master/search/variables_d.html | 37 + master/search/variables_d.js | 4 + master/search/variables_e.html | 37 + master/search/variables_e.js | 9 + master/search/variables_f.html | 37 + master/search/variables_f.js | 12 + master/splitbar.png | Bin 0 -> 311 bytes ..._application_1_1_gui_settings-members.html | 89 + ...cine_1_1_application_1_1_gui_settings.html | 172 + ...lication_1_1_gui_settings__coll__graph.map | 19 + ...lication_1_1_gui_settings__coll__graph.md5 | 1 + ...lication_1_1_gui_settings__coll__graph.png | Bin 0 -> 108604 bytes ...cation_1_1_rendering_settings-members.html | 90 + ..._1_application_1_1_rendering_settings.html | 118 + ...e_1_1_application_1_1_timings-members.html | 97 + ...ructncine_1_1_application_1_1_timings.html | 111 + ...rties_1_1_auto_wah_properties-members.html | 89 + ...ct_properties_1_1_auto_wah_properties.html | 104 + ...perties_1_1_chorus_properties-members.html | 91 + ...fect_properties_1_1_chorus_properties.html | 110 + ...ies_1_1_compressor_properties-members.html | 86 + ..._properties_1_1_compressor_properties.html | 95 + ...ies_1_1_distortion_properties-members.html | 90 + ..._properties_1_1_distortion_properties.html | 107 + ...ies_1_1_eax_reverb_properties-members.html | 111 + ..._properties_1_1_eax_reverb_properties.html | 179 + ...roperties_1_1_echo_properties-members.html | 90 + ...effect_properties_1_1_echo_properties.html | 107 + ...ties_1_1_equalizer_properties-members.html | 95 + ...t_properties_1_1_equalizer_properties.html | 122 + ...erties_1_1_flanger_properties-members.html | 91 + ...ect_properties_1_1_flanger_properties.html | 110 + ..._frequency_shifter_properties-members.html | 88 + ...ties_1_1_frequency_shifter_properties.html | 101 + ..._1_1_pitch_shifter_properties-members.html | 87 + ...operties_1_1_pitch_shifter_properties.html | 98 + ...perties_1_1_reverb_properties-members.html | 98 + ...fect_properties_1_1_reverb_properties.html | 131 + ...1_1_ring_modulator_properties-members.html | 88 + ...perties_1_1_ring_modulator_properties.html | 101 + ..._1_1_vocal_morpher_properties-members.html | 91 + ...operties_1_1_vocal_morpher_properties.html | 110 + ...1_audio_filter_1_1_properties-members.html | 88 + ...ncine_1_1_audio_filter_1_1_properties.html | 103 + ..._camera_1_1_projection_values-members.html | 92 + ...cine_1_1_camera_1_1_projection_values.html | 116 + ...ne_1_1_camera_1_1_view_values-members.html | 89 + ...tructncine_1_1_camera_1_1_view_values.html | 116 + ..._1_camera_1_1_view_values__coll__graph.map | 4 + ..._1_camera_1_1_view_values__coll__graph.md5 | 1 + ..._1_camera_1_1_view_values__coll__graph.png | Bin 0 -> 5564 bytes ...color_affector_1_1_color_step-members.html | 88 + ...ine_1_1_color_affector_1_1_color_step.html | 113 + ...r_affector_1_1_color_step__coll__graph.map | 4 + ...r_affector_1_1_color_step__coll__graph.md5 | 1 + ...r_affector_1_1_color_step__coll__graph.png | Bin 0 -> 8607 bytes ...1_1_file_system_1_1_file_date-members.html | 91 + ...ctncine_1_1_file_system_1_1_file_date.html | 112 + ...ine_1_1_hash64_1_1_statistics-members.html | 89 + ...structncine_1_1_hash64_1_1_statistics.html | 113 + master/structncine_1_1_hat_state-members.html | 93 + master/structncine_1_1_hat_state.html | 113 + ...dio_device_1_1_a_l_extensions-members.html | 90 + ...1_1_i_audio_device_1_1_a_l_extensions.html | 108 + ...i_audio_device_1_1_attributes-members.html | 95 + ...ine_1_1_i_audio_device_1_1_attributes.html | 131 + ..._overlay_1_1_display_settings-members.html | 88 + ..._i_debug_overlay_1_1_display_settings.html | 103 + ...cine_1_1_i_file_1_1_open_mode-members.html | 88 + .../structncine_1_1_i_file_1_1_open_mode.html | 104 + ...ties_1_1_g_l_array_int_values-members.html | 87 + ...capabilities_1_1_g_l_array_int_values.html | 102 + ...pabilities_1_1_g_l_extensions-members.html | 94 + ...i_gfx_capabilities_1_1_g_l_extensions.html | 113 + ...pabilities_1_1_g_l_int_values-members.html | 97 + ...i_gfx_capabilities_1_1_g_l_int_values.html | 116 + ...abilities_1_1_gl_info_strings-members.html | 88 + ..._gfx_capabilities_1_1_gl_info_strings.html | 110 + ...x_device_1_1_g_l_context_info-members.html | 90 + ...1_1_i_gfx_device_1_1_g_l_context_info.html | 120 + ..._1_1_i_gfx_device_1_1_monitor-members.html | 90 + ...uctncine_1_1_i_gfx_device_1_1_monitor.html | 133 + ..._i_gfx_device_1_1_monitor__coll__graph.map | 6 + ..._i_gfx_device_1_1_monitor__coll__graph.md5 | 1 + ..._i_gfx_device_1_1_monitor__coll__graph.png | Bin 0 -> 12544 bytes ...1_i_gfx_device_1_1_video_mode-members.html | 93 + ...ncine_1_1_i_gfx_device_1_1_video_mode.html | 126 + ..._i_gfx_device_1_1_window_mode-members.html | 95 + ...cine_1_1_i_gfx_device_1_1_window_mode.html | 132 + ..._texture_saver_1_1_properties-members.html | 90 + ...ne_1_1_i_texture_saver_1_1_properties.html | 106 + ..._manager_1_1_state_to_manager-members.html | 88 + ...ua_state_manager_1_1_state_to_manager.html | 113 + ...ager_1_1_state_to_manager__coll__graph.map | 4 + ...ager_1_1_state_to_manager__coll__graph.md5 | 1 + ...ager_1_1_state_to_manager__coll__graph.png | Bin 0 -> 6028 bytes ...s_1_1_run_info_1_1_debug_info-members.html | 102 + ...lua_utils_1_1_run_info_1_1_debug_info.html | 168 + ...ne_1_1_mesh_sprite_1_1_vertex-members.html | 90 + ...tructncine_1_1_mesh_sprite_1_1_vertex.html | 117 + ..._sprite_1_1_vertex_no_texture-members.html | 88 + ...1_1_mesh_sprite_1_1_vertex_no_texture.html | 111 + ...cine_1_1_particle_initializer-members.html | 116 + .../structncine_1_1_particle_initializer.html | 211 + ..._1_1_particle_initializer__coll__graph.map | 5 + ..._1_1_particle_initializer__coll__graph.md5 | 1 + ..._1_1_particle_initializer__coll__graph.png | Bin 0 -> 10347 bytes ...on_affector_1_1_position_step-members.html | 88 + ...1_position_affector_1_1_position_step.html | 113 + ...ffector_1_1_position_step__coll__graph.map | 4 + ...ffector_1_1_position_step__coll__graph.md5 | 1 + ...ffector_1_1_position_step__coll__graph.png | Bin 0 -> 5174 bytes ...on_affector_1_1_rotation_step-members.html | 88 + ...1_rotation_affector_1_1_rotation_step.html | 104 + ...1_size_affector_1_1_size_step-members.html | 90 + ...ncine_1_1_size_affector_1_1_size_step.html | 119 + ...ze_affector_1_1_size_step__coll__graph.map | 4 + ...ze_affector_1_1_size_step__coll__graph.md5 | 1 + ...ze_affector_1_1_size_step__coll__graph.png | Bin 0 -> 4729 bytes ..._saver_png_1_1_png_properties-members.html | 86 + ..._texture_saver_png_1_1_png_properties.html | 94 + ...er_web_p_1_1_web_p_properties-members.html | 87 + ...ture_saver_web_p_1_1_web_p_properties.html | 97 + ...e_1_1_touch_event_1_1_pointer-members.html | 88 + ...ructncine_1_1_touch_event_1_1_pointer.html | 103 + ...ty_affector_1_1_velocity_step-members.html | 88 + ...1_velocity_affector_1_1_velocity_step.html | 113 + ...ffector_1_1_velocity_step__coll__graph.map | 4 + ...ffector_1_1_velocity_step__coll__graph.md5 | 1 + ...ffector_1_1_velocity_step__coll__graph.png | Bin 0 -> 5393 bytes ...ctnctl_1_1_bidirectional_iterator_tag.html | 110 + ...idirectional_iterator_tag__coll__graph.map | 4 + ...idirectional_iterator_tag__coll__graph.md5 | 1 + ...idirectional_iterator_tag__coll__graph.png | Bin 0 -> 4102 bytes ...rectional_iterator_tag__inherit__graph.map | 5 + ...rectional_iterator_tag__inherit__graph.md5 | 1 + ...rectional_iterator_tag__inherit__graph.png | Bin 0 -> 7383 bytes .../structnctl_1_1_forward_iterator_tag.html | 101 + ...1_forward_iterator_tag__inherit__graph.map | 5 + ...1_forward_iterator_tag__inherit__graph.md5 | 1 + ...1_forward_iterator_tag__inherit__graph.png | Bin 0 -> 7363 bytes ...free_list_allocator_1_1_block-members.html | 86 + ...ctl_1_1_free_list_allocator_1_1_block.html | 105 + ..._list_allocator_1_1_block__coll__graph.map | 3 + ..._list_allocator_1_1_block__coll__graph.md5 | 1 + ..._list_allocator_1_1_block__coll__graph.png | Bin 0 -> 3588 bytes ...structnctl_1_1_hash_map_helper_traits.html | 94 + ..._01_hash_func_00_01false_01_4-members.html | 86 + ..._01_t_00_01_hash_func_00_01false_01_4.html | 107 + ...0_01_hash_func_00_01true_01_4-members.html | 86 + ...0_01_t_00_01_hash_func_00_01true_01_4.html | 107 + ...tnctl_1_1_hash_map_list_helper_traits.html | 94 + ..._01_hash_func_00_01false_01_4-members.html | 89 + ..._01_t_00_01_hash_func_00_01false_01_4.html | 116 + ...0_01_hash_func_00_01true_01_4-members.html | 89 + ...0_01_t_00_01_hash_func_00_01true_01_4.html | 116 + ...tl_1_1_hash_set_helper_traits-members.html | 85 + ...structnctl_1_1_hash_set_helper_traits.html | 105 + ...1_hash_set_list_helper_traits-members.html | 89 + ...tnctl_1_1_hash_set_list_helper_traits.html | 117 + master/structnctl_1_1_iterator_traits.html | 94 + ...r_3_01_t_00_01false_01_4_01_4-members.html | 88 + ..._iterator_3_01_t_00_01false_01_4_01_4.html | 121 + ...or_3_01_t_00_01true_01_4_01_4-members.html | 88 + ...y_iterator_3_01_t_00_01true_01_4_01_4.html | 121 + ...ash_func_00_01false_01_4_01_4-members.html | 88 + ..._00_01_hash_func_00_01false_01_4_01_4.html | 121 + ...hash_func_00_01true_01_4_01_4-members.html | 88 + ...t_00_01_hash_func_00_01true_01_4_01_4.html | 121 + ...ash_func_00_01false_01_4_01_4-members.html | 88 + ..._00_01_hash_func_00_01false_01_4_01_4.html | 121 + ...hash_func_00_01true_01_4_01_4-members.html | 88 + ...t_00_01_hash_func_00_01true_01_4_01_4.html | 121 + ...1_k_00_01_hash_func_01_4_01_4-members.html | 88 + ...ator_3_01_k_00_01_hash_func_01_4_01_4.html | 121 + ...1_k_00_01_hash_func_01_4_01_4-members.html | 88 + ...ator_3_01_k_00_01_hash_func_01_4_01_4.html | 121 + ...r_3_01_t_00_01false_01_4_01_4-members.html | 88 + ..._iterator_3_01_t_00_01false_01_4_01_4.html | 121 + ...or_3_01_t_00_01true_01_4_01_4-members.html | 88 + ...t_iterator_3_01_t_00_01true_01_4_01_4.html | 121 + ...rator_3_01_iterator_01_4_01_4-members.html | 88 + ...erse_iterator_3_01_iterator_01_4_01_4.html | 121 + ...set_iterator_3_01_t_01_4_01_4-members.html | 88 + ..._sparse_set_iterator_3_01_t_01_4_01_4.html | 121 + ..._00_0152b6ab6f3be0fd28c4e8caf8a49820b.html | 88 + ...c_00_01_capacity_00_01false_01_4_01_4.html | 121 + ...nc_00_01_capacity_00_01true_01_4_01_4.html | 121 + ..._00_05fd9f4092bfcde5f299c59ef59ed2052.html | 88 + ...func_00_01_capacity_01_4_01_4-members.html | 88 + ...01_hash_func_00_01_capacity_01_4_01_4.html | 121 + ..._iterator_3_01false_01_4_01_4-members.html | 88 + ...1_string_iterator_3_01false_01_4_01_4.html | 118 + ...g_iterator_3_01true_01_4_01_4-members.html | 88 + ...01_string_iterator_3_01true_01_4_01_4.html | 118 + ...ctnctl_1_1_make_unique_return-members.html | 85 + master/structnctl_1_1_make_unique_return.html | 94 + ...01_t_0f_0e_00_01_deleter_01_4-members.html | 85 + ...eturn_3_01_t_0f_0e_00_01_deleter_01_4.html | 94 + ...n_3_01_t_0fsize_0e_00_01_deleter_01_4.html | 92 + ...size_0e_00_01_deleter_01_4_1_1invalid.html | 84 + ...ctnctl_1_1_random_access_iterator_tag.html | 111 + ...andom_access_iterator_tag__coll__graph.map | 5 + ...andom_access_iterator_tag__coll__graph.md5 | 1 + ...andom_access_iterator_tag__coll__graph.png | Bin 0 -> 7381 bytes ...om_access_iterator_tag__inherit__graph.map | 5 + ...om_access_iterator_tag__inherit__graph.md5 | 1 + ...om_access_iterator_tag__inherit__graph.png | Bin 0 -> 7381 bytes ...uctnctl_1_1_reversion_wrapper-members.html | 85 + master/structnctl_1_1_reversion_wrapper.html | 94 + ...ctl_1_1_static_hash_map_helper_traits.html | 94 + ...0_01_capacity_00_01false_01_4-members.html | 86 + ...h_func_00_01_capacity_00_01false_01_4.html | 107 + ...00_01_capacity_00_01true_01_4-members.html | 86 + ...sh_func_00_01_capacity_00_01true_01_4.html | 107 + ...static_hash_set_helper_traits-members.html | 85 + ...ctl_1_1_static_hash_set_helper_traits.html | 105 + .../structnctl_1_1add_l_value_reference.html | 102 + ..._1_1add_l_value_reference__coll__graph.map | 4 + ..._1_1add_l_value_reference__coll__graph.md5 | 1 + ..._1_1add_l_value_reference__coll__graph.png | Bin 0 -> 6051 bytes ...1add_l_value_reference__inherit__graph.map | 4 + ...1add_l_value_reference__inherit__graph.md5 | 1 + ...1add_l_value_reference__inherit__graph.png | Bin 0 -> 6051 bytes .../structnctl_1_1add_r_value_reference.html | 102 + ..._1_1add_r_value_reference__coll__graph.map | 4 + ..._1_1add_r_value_reference__coll__graph.md5 | 1 + ..._1_1add_r_value_reference__coll__graph.png | Bin 0 -> 6064 bytes ...1add_r_value_reference__inherit__graph.map | 4 + ...1add_r_value_reference__inherit__graph.md5 | 1 + ...1add_r_value_reference__inherit__graph.png | Bin 0 -> 6064 bytes ...tnctl_1_1detail_1_1_pair_impl-members.html | 90 + .../structnctl_1_1detail_1_1_pair_impl.html | 124 + ...01_t1_00_01_t2_00_01true_01_4-members.html | 90 + ..._impl_3_01_t1_00_01_t2_00_01true_01_4.html | 123 + ...tl_1_1detail_1_1alloc_helpers-members.html | 88 + ...structnctl_1_1detail_1_1alloc_helpers.html | 117 + ..._1alloc_helpers_3_01true_01_4-members.html | 88 + ...detail_1_1alloc_helpers_3_01true_01_4.html | 114 + ..._1detail_1_1construct_helpers-members.html | 88 + ...ctnctl_1_1detail_1_1construct_helpers.html | 117 + ...nstruct_helpers_3_01true_01_4-members.html | 88 + ...il_1_1construct_helpers_3_01true_01_4.html | 114 + ...ctl_1_1detail_1_1copy_helpers-members.html | 86 + .../structnctl_1_1detail_1_1copy_helpers.html | 109 + ...1_1copy_helpers_3_01true_01_4-members.html | 86 + ...1detail_1_1copy_helpers_3_01true_01_4.html | 106 + ...1_1detail_1_1destruct_helpers-members.html | 86 + ...uctnctl_1_1detail_1_1destruct_helpers.html | 109 + ...estruct_helpers_3_01true_01_4-members.html | 86 + ...ail_1_1destruct_helpers_3_01true_01_4.html | 106 + ...tl_1_1detail_1_1type_identity-members.html | 85 + ...structnctl_1_1detail_1_1type_identity.html | 94 + ...ctnctl_1_1detail_1_1void_type-members.html | 85 + master/structnctl_1_1detail_1_1void_type.html | 94 + master/structnctl_1_1is_class-members.html | 85 + master/structnctl_1_1is_class.html | 94 + ..._01_t_1_1_5_01_4_1_1type_01_4-members.html | 85 + ..._3_01int_01_t_1_1_5_01_4_1_1type_01_4.html | 94 + ...structnctl_1_1is_destructible-members.html | 85 + master/structnctl_1_1is_destructible.html | 94 + ..._6_01_4_07_08_8~_t_07_08_08_4-members.html | 85 + ..._01_t_01_6_01_4_07_08_8~_t_07_08_08_4.html | 94 + master/structnctl_1_1is_empty-members.html | 85 + master/structnctl_1_1is_empty.html | 94 + master/structnctl_1_1is_integral-members.html | 85 + master/structnctl_1_1is_integral.html | 94 + ..._1_1is_integral_3_01bool_01_4-members.html | 85 + ...ructnctl_1_1is_integral_3_01bool_01_4.html | 94 + ..._1_1is_integral_3_01char_01_4-members.html | 85 + ...ructnctl_1_1is_integral_3_01char_01_4.html | 94 + ...l_1_1is_integral_3_01int_01_4-members.html | 85 + ...tructnctl_1_1is_integral_3_01int_01_4.html | 94 + ..._1_1is_integral_3_01long_01_4-members.html | 85 + ...ructnctl_1_1is_integral_3_01long_01_4.html | 94 + ...integral_3_01long_01long_01_4-members.html | 85 + ...l_1_1is_integral_3_01long_01long_01_4.html | 94 + ...integral_3_01short_01int_01_4-members.html | 85 + ...l_1_1is_integral_3_01short_01int_01_4.html | 94 + ...gral_3_01unsigned_01char_01_4-members.html | 85 + ...1is_integral_3_01unsigned_01char_01_4.html | 94 + ...egral_3_01unsigned_01int_01_4-members.html | 85 + ..._1is_integral_3_01unsigned_01int_01_4.html | 94 + ...gral_3_01unsigned_01long_01_4-members.html | 85 + ...1is_integral_3_01unsigned_01long_01_4.html | 94 + ...01unsigned_01long_01long_01_4-members.html | 85 + ...egral_3_01unsigned_01long_01long_01_4.html | 94 + ...01unsigned_01short_01int_01_4-members.html | 85 + ...egral_3_01unsigned_01short_01int_01_4.html | 94 + ...tnctl_1_1is_l_value_reference-members.html | 85 + .../structnctl_1_1is_l_value_reference.html | 94 + ...ue_reference_3_01_t_01_6_01_4-members.html | 85 + ...is_l_value_reference_3_01_t_01_6_01_4.html | 94 + ...1_1is_trivially_constructible-members.html | 85 + ...uctnctl_1_1is_trivially_constructible.html | 94 + ...nctl_1_1is_trivially_copyable-members.html | 85 + .../structnctl_1_1is_trivially_copyable.html | 94 + ..._1_1is_trivially_destructible-members.html | 85 + ...ructnctl_1_1is_trivially_destructible.html | 94 + .../structnctl_1_1remove_extent-members.html | 85 + master/structnctl_1_1remove_extent.html | 94 + ...1remove_extent_3_01_t_0f_0e_4-members.html | 85 + ...tnctl_1_1remove_extent_3_01_t_0f_0e_4.html | 94 + ...emove_extent_3_01_t_0f_n_0e_4-members.html | 85 + ...ctl_1_1remove_extent_3_01_t_0f_n_0e_4.html | 94 + ...tructnctl_1_1remove_reference-members.html | 85 + master/structnctl_1_1remove_reference.html | 94 + ...ve_reference_3_01_t_01_6_01_4-members.html | 85 + ..._1_1remove_reference_3_01_t_01_6_01_4.html | 94 + ..._reference_3_01_t_01_6_6_01_4-members.html | 85 + ..._1remove_reference_3_01_t_01_6_6_01_4.html | 94 + master/sync_off.png | Bin 0 -> 858 bytes master/sync_on.png | Bin 0 -> 843 bytes master/tab_a.png | Bin 0 -> 142 bytes master/tab_b.png | Bin 0 -> 169 bytes master/tab_h.png | Bin 0 -> 174 bytes master/tab_s.png | Bin 0 -> 188 bytes master/tabs.css | 1 + master/tracy_8h_source.html | 247 + master/tracy__opengl_8h_source.html | 131 + master/type__traits_8h_source.html | 305 + master/utility_8h_source.html | 323 + 2433 files changed, 180929 insertions(+) create mode 100644 lua_api_list_master.html create mode 100644 lua_api_master.html create mode 100644 master/_alloc_manager_8h_source.html create mode 100644 master/_android_application_8h_source.html create mode 100644 master/_animated_sprite_8h_source.html create mode 100644 master/_app_configuration_8h_source.html create mode 100644 master/_application_8h_source.html create mode 100644 master/_array_8h_source.html create mode 100644 master/_array_iterator_8h_source.html create mode 100644 master/_asset_file_8h_source.html create mode 100644 master/_atomic_8h_source.html create mode 100644 master/_audio_buffer_8h_source.html create mode 100644 master/_audio_buffer_player_8h_source.html create mode 100644 master/_audio_effect_8h_source.html create mode 100644 master/_audio_effect_properties_8h_source.html create mode 100644 master/_audio_effect_slot_8h_source.html create mode 100644 master/_audio_filter_8h_source.html create mode 100644 master/_audio_stream_8h_source.html create mode 100644 master/_audio_stream_player_8h_source.html create mode 100644 master/_base_sprite_8h_source.html create mode 100644 master/_bit_set_8h_source.html create mode 100644 master/_c_string_8h_source.html create mode 100644 master/_camera_8h_source.html create mode 100644 master/_color_8h_source.html create mode 100644 master/_color_hdr_8h_source.html create mode 100644 master/_colorf_8h_source.html create mode 100644 master/_display_mode_8h_source.html create mode 100644 master/_drawable_node_8h_source.html create mode 100644 master/_emscripten_local_file_8h_source.html create mode 100644 master/_file_system_8h_source.html create mode 100644 master/_font_8h_source.html create mode 100644 master/_free_list_allocator_8h_source.html create mode 100644 master/_hash64_8h_source.html create mode 100644 master/_hash_functions_8h_source.html create mode 100644 master/_hash_map_8h_source.html create mode 100644 master/_hash_map_iterator_8h_source.html create mode 100644 master/_hash_map_list_8h_source.html create mode 100644 master/_hash_map_list_iterator_8h_source.html create mode 100644 master/_hash_set_8h_source.html create mode 100644 master/_hash_set_iterator_8h_source.html create mode 100644 master/_hash_set_list_8h_source.html create mode 100644 master/_hash_set_list_iterator_8h_source.html create mode 100644 master/_i_allocator_8h_source.html create mode 100644 master/_i_app_event_handler_8h_source.html create mode 100644 master/_i_audio_device_8h_source.html create mode 100644 master/_i_audio_player_8h_source.html create mode 100644 master/_i_debug_overlay_8h_source.html create mode 100644 master/_i_file_8h_source.html create mode 100644 master/_i_frame_timer_8h_source.html create mode 100644 master/_i_gfx_capabilities_8h_source.html create mode 100644 master/_i_gfx_device_8h_source.html create mode 100644 master/_i_indexer_8h_source.html create mode 100644 master/_i_input_event_handler_8h_source.html create mode 100644 master/_i_input_manager_8h_source.html create mode 100644 master/_i_logger_8h_source.html create mode 100644 master/_i_texture_saver_8h_source.html create mode 100644 master/_i_thread_command_8h_source.html create mode 100644 master/_i_thread_pool_8h_source.html create mode 100644 master/_input_events_8h_source.html create mode 100644 master/_joy_mapping_db_8h_source.html create mode 100644 master/_keys_8h_source.html create mode 100644 master/_linear_allocator_8h_source.html create mode 100644 master/_list_8h_source.html create mode 100644 master/_list_iterator_8h_source.html create mode 100644 master/_lua_color_utils_8h_source.html create mode 100644 master/_lua_debug_8h_source.html create mode 100644 master/_lua_i_app_event_handler_8h_source.html create mode 100644 master/_lua_i_input_event_handler_8h_source.html create mode 100644 master/_lua_rect_utils_8h_source.html create mode 100644 master/_lua_state_manager_8h_source.html create mode 100644 master/_lua_types_8h_source.html create mode 100644 master/_lua_untracked_user_data_8h_source.html create mode 100644 master/_lua_utils_8h_source.html create mode 100644 master/_lua_vector2_utils_8h_source.html create mode 100644 master/_lua_vector3_utils_8h_source.html create mode 100644 master/_lua_vector4_utils_8h_source.html create mode 100644 master/_malloc_allocator_8h_source.html create mode 100644 master/_matrix4x4_8h_source.html create mode 100644 master/_mesh_sprite_8h_source.html create mode 100644 master/_nuklear_context_8h_source.html create mode 100644 master/_object_8h_source.html create mode 100644 master/_p_c_application_8h_source.html create mode 100644 master/_particle_8h_source.html create mode 100644 master/_particle_affectors_8h_source.html create mode 100644 master/_particle_initializer_8h_source.html create mode 100644 master/_particle_system_8h_source.html create mode 100644 master/_pointer_math_8h_source.html create mode 100644 master/_pool_allocator_8h_source.html create mode 100644 master/_proxy_allocator_8h_source.html create mode 100644 master/_qt5_widget_8h_source.html create mode 100644 master/_quaternion_8h_source.html create mode 100644 master/_random_8h_source.html create mode 100644 master/_rect_8h_source.html create mode 100644 master/_rect_animation_8h_source.html create mode 100644 master/_render_doc_capture_8h_source.html create mode 100644 master/_reverse_iterator_8h_source.html create mode 100644 master/_scene_node_8h_source.html create mode 100644 master/_service_locator_8h_source.html create mode 100644 master/_shader_8h_source.html create mode 100644 master/_shader_state_8h_source.html create mode 100644 master/_shared_ptr_8h_source.html create mode 100644 master/_sparse_set_8h_source.html create mode 100644 master/_sparse_set_iterator_8h_source.html create mode 100644 master/_sprite_8h_source.html create mode 100644 master/_stack_allocator_8h_source.html create mode 100644 master/_static_array_8h_source.html create mode 100644 master/_static_hash_map_8h_source.html create mode 100644 master/_static_hash_map_iterator_8h_source.html create mode 100644 master/_static_hash_set_8h_source.html create mode 100644 master/_static_hash_set_iterator_8h_source.html create mode 100644 master/_static_string_8h_source.html create mode 100644 master/_string_8h_source.html create mode 100644 master/_string_iterator_8h_source.html create mode 100644 master/_text_node_8h_source.html create mode 100644 master/_texture_8h_source.html create mode 100644 master/_texture_saver_png_8h_source.html create mode 100644 master/_texture_saver_web_p_8h_source.html create mode 100644 master/_time_stamp_8h_source.html create mode 100644 master/_timer_8h_source.html create mode 100644 master/_unique_ptr_8h_source.html create mode 100644 master/_utf8_8h_source.html create mode 100644 master/_vector2_8h_source.html create mode 100644 master/_vector3_8h_source.html create mode 100644 master/_vector4_8h_source.html create mode 100644 master/_viewport_8h_source.html create mode 100644 master/algorithms_8h_source.html create mode 100644 master/annotated.html create mode 100644 master/bc_s.png create mode 100644 master/bdwn.png create mode 100644 master/classes.html create mode 100644 master/classncine_1_1_android_application-members.html create mode 100644 master/classncine_1_1_android_application.html create mode 100644 master/classncine_1_1_android_application__coll__graph.map create mode 100644 master/classncine_1_1_android_application__coll__graph.md5 create mode 100644 master/classncine_1_1_android_application__coll__graph.png create mode 100644 master/classncine_1_1_android_application__inherit__graph.map create mode 100644 master/classncine_1_1_android_application__inherit__graph.md5 create mode 100644 master/classncine_1_1_android_application__inherit__graph.png create mode 100644 master/classncine_1_1_animated_sprite-members.html create mode 100644 master/classncine_1_1_animated_sprite.html create mode 100644 master/classncine_1_1_animated_sprite__coll__graph.map create mode 100644 master/classncine_1_1_animated_sprite__coll__graph.md5 create mode 100644 master/classncine_1_1_animated_sprite__coll__graph.png create mode 100644 master/classncine_1_1_animated_sprite__inherit__graph.map create mode 100644 master/classncine_1_1_animated_sprite__inherit__graph.md5 create mode 100644 master/classncine_1_1_animated_sprite__inherit__graph.png create mode 100644 master/classncine_1_1_app_configuration-members.html create mode 100644 master/classncine_1_1_app_configuration.html create mode 100644 master/classncine_1_1_app_configuration__coll__graph.map create mode 100644 master/classncine_1_1_app_configuration__coll__graph.md5 create mode 100644 master/classncine_1_1_app_configuration__coll__graph.png create mode 100644 master/classncine_1_1_application-members.html create mode 100644 master/classncine_1_1_application.html create mode 100644 master/classncine_1_1_application__coll__graph.map create mode 100644 master/classncine_1_1_application__coll__graph.md5 create mode 100644 master/classncine_1_1_application__coll__graph.png create mode 100644 master/classncine_1_1_application__inherit__graph.map create mode 100644 master/classncine_1_1_application__inherit__graph.md5 create mode 100644 master/classncine_1_1_application__inherit__graph.png create mode 100644 master/classncine_1_1_asset_file-members.html create mode 100644 master/classncine_1_1_asset_file.html create mode 100644 master/classncine_1_1_asset_file__coll__graph.map create mode 100644 master/classncine_1_1_asset_file__coll__graph.md5 create mode 100644 master/classncine_1_1_asset_file__coll__graph.png create mode 100644 master/classncine_1_1_asset_file__inherit__graph.map create mode 100644 master/classncine_1_1_asset_file__inherit__graph.md5 create mode 100644 master/classncine_1_1_asset_file__inherit__graph.png create mode 100644 master/classncine_1_1_audio_buffer-members.html create mode 100644 master/classncine_1_1_audio_buffer.html create mode 100644 master/classncine_1_1_audio_buffer__coll__graph.map create mode 100644 master/classncine_1_1_audio_buffer__coll__graph.md5 create mode 100644 master/classncine_1_1_audio_buffer__coll__graph.png create mode 100644 master/classncine_1_1_audio_buffer__inherit__graph.map create mode 100644 master/classncine_1_1_audio_buffer__inherit__graph.md5 create mode 100644 master/classncine_1_1_audio_buffer__inherit__graph.png create mode 100644 master/classncine_1_1_audio_buffer_player-members.html create mode 100644 master/classncine_1_1_audio_buffer_player.html create mode 100644 master/classncine_1_1_audio_buffer_player__coll__graph.map create mode 100644 master/classncine_1_1_audio_buffer_player__coll__graph.md5 create mode 100644 master/classncine_1_1_audio_buffer_player__coll__graph.png create mode 100644 master/classncine_1_1_audio_buffer_player__inherit__graph.map create mode 100644 master/classncine_1_1_audio_buffer_player__inherit__graph.md5 create mode 100644 master/classncine_1_1_audio_buffer_player__inherit__graph.png create mode 100644 master/classncine_1_1_audio_effect-members.html create mode 100644 master/classncine_1_1_audio_effect.html create mode 100644 master/classncine_1_1_audio_effect_properties-members.html create mode 100644 master/classncine_1_1_audio_effect_properties.html create mode 100644 master/classncine_1_1_audio_effect_slot-members.html create mode 100644 master/classncine_1_1_audio_effect_slot.html create mode 100644 master/classncine_1_1_audio_filter-members.html create mode 100644 master/classncine_1_1_audio_filter.html create mode 100644 master/classncine_1_1_audio_stream-members.html create mode 100644 master/classncine_1_1_audio_stream.html create mode 100644 master/classncine_1_1_audio_stream_player-members.html create mode 100644 master/classncine_1_1_audio_stream_player.html create mode 100644 master/classncine_1_1_audio_stream_player__coll__graph.map create mode 100644 master/classncine_1_1_audio_stream_player__coll__graph.md5 create mode 100644 master/classncine_1_1_audio_stream_player__coll__graph.png create mode 100644 master/classncine_1_1_audio_stream_player__inherit__graph.map create mode 100644 master/classncine_1_1_audio_stream_player__inherit__graph.md5 create mode 100644 master/classncine_1_1_audio_stream_player__inherit__graph.png create mode 100644 master/classncine_1_1_base_sprite-members.html create mode 100644 master/classncine_1_1_base_sprite.html create mode 100644 master/classncine_1_1_base_sprite__coll__graph.map create mode 100644 master/classncine_1_1_base_sprite__coll__graph.md5 create mode 100644 master/classncine_1_1_base_sprite__coll__graph.png create mode 100644 master/classncine_1_1_base_sprite__inherit__graph.map create mode 100644 master/classncine_1_1_base_sprite__inherit__graph.md5 create mode 100644 master/classncine_1_1_base_sprite__inherit__graph.png create mode 100644 master/classncine_1_1_camera-members.html create mode 100644 master/classncine_1_1_camera.html create mode 100644 master/classncine_1_1_color-members.html create mode 100644 master/classncine_1_1_color.html create mode 100644 master/classncine_1_1_color__coll__graph.map create mode 100644 master/classncine_1_1_color__coll__graph.md5 create mode 100644 master/classncine_1_1_color__coll__graph.png create mode 100644 master/classncine_1_1_color_affector-members.html create mode 100644 master/classncine_1_1_color_affector.html create mode 100644 master/classncine_1_1_color_affector__coll__graph.map create mode 100644 master/classncine_1_1_color_affector__coll__graph.md5 create mode 100644 master/classncine_1_1_color_affector__coll__graph.png create mode 100644 master/classncine_1_1_color_affector__inherit__graph.map create mode 100644 master/classncine_1_1_color_affector__inherit__graph.md5 create mode 100644 master/classncine_1_1_color_affector__inherit__graph.png create mode 100644 master/classncine_1_1_color_hdr-members.html create mode 100644 master/classncine_1_1_color_hdr.html create mode 100644 master/classncine_1_1_color_hdr__coll__graph.map create mode 100644 master/classncine_1_1_color_hdr__coll__graph.md5 create mode 100644 master/classncine_1_1_color_hdr__coll__graph.png create mode 100644 master/classncine_1_1_colorf-members.html create mode 100644 master/classncine_1_1_colorf.html create mode 100644 master/classncine_1_1_colorf__coll__graph.map create mode 100644 master/classncine_1_1_colorf__coll__graph.md5 create mode 100644 master/classncine_1_1_colorf__coll__graph.png create mode 100644 master/classncine_1_1_display_mode-members.html create mode 100644 master/classncine_1_1_display_mode.html create mode 100644 master/classncine_1_1_drawable_node-members.html create mode 100644 master/classncine_1_1_drawable_node.html create mode 100644 master/classncine_1_1_drawable_node__coll__graph.map create mode 100644 master/classncine_1_1_drawable_node__coll__graph.md5 create mode 100644 master/classncine_1_1_drawable_node__coll__graph.png create mode 100644 master/classncine_1_1_drawable_node__inherit__graph.map create mode 100644 master/classncine_1_1_drawable_node__inherit__graph.md5 create mode 100644 master/classncine_1_1_drawable_node__inherit__graph.png create mode 100644 master/classncine_1_1_drop_event-members.html create mode 100644 master/classncine_1_1_drop_event.html create mode 100644 master/classncine_1_1_emscripten_local_file-members.html create mode 100644 master/classncine_1_1_emscripten_local_file.html create mode 100644 master/classncine_1_1_file_system-members.html create mode 100644 master/classncine_1_1_file_system.html create mode 100644 master/classncine_1_1_file_system_1_1_directory-members.html create mode 100644 master/classncine_1_1_file_system_1_1_directory.html create mode 100644 master/classncine_1_1_font-members.html create mode 100644 master/classncine_1_1_font.html create mode 100644 master/classncine_1_1_font__coll__graph.map create mode 100644 master/classncine_1_1_font__coll__graph.md5 create mode 100644 master/classncine_1_1_font__coll__graph.png create mode 100644 master/classncine_1_1_font__inherit__graph.map create mode 100644 master/classncine_1_1_font__inherit__graph.md5 create mode 100644 master/classncine_1_1_font__inherit__graph.png create mode 100644 master/classncine_1_1_hash64-members.html create mode 100644 master/classncine_1_1_hash64.html create mode 100644 master/classncine_1_1_i_app_event_handler-members.html create mode 100644 master/classncine_1_1_i_app_event_handler.html create mode 100644 master/classncine_1_1_i_audio_device-members.html create mode 100644 master/classncine_1_1_i_audio_device.html create mode 100644 master/classncine_1_1_i_audio_device__inherit__graph.map create mode 100644 master/classncine_1_1_i_audio_device__inherit__graph.md5 create mode 100644 master/classncine_1_1_i_audio_device__inherit__graph.png create mode 100644 master/classncine_1_1_i_audio_player-members.html create mode 100644 master/classncine_1_1_i_audio_player.html create mode 100644 master/classncine_1_1_i_audio_player__coll__graph.map create mode 100644 master/classncine_1_1_i_audio_player__coll__graph.md5 create mode 100644 master/classncine_1_1_i_audio_player__coll__graph.png create mode 100644 master/classncine_1_1_i_audio_player__inherit__graph.map create mode 100644 master/classncine_1_1_i_audio_player__inherit__graph.md5 create mode 100644 master/classncine_1_1_i_audio_player__inherit__graph.png create mode 100644 master/classncine_1_1_i_debug_overlay-members.html create mode 100644 master/classncine_1_1_i_debug_overlay.html create mode 100644 master/classncine_1_1_i_debug_overlay__coll__graph.map create mode 100644 master/classncine_1_1_i_debug_overlay__coll__graph.md5 create mode 100644 master/classncine_1_1_i_debug_overlay__coll__graph.png create mode 100644 master/classncine_1_1_i_file-members.html create mode 100644 master/classncine_1_1_i_file.html create mode 100644 master/classncine_1_1_i_file__coll__graph.map create mode 100644 master/classncine_1_1_i_file__coll__graph.md5 create mode 100644 master/classncine_1_1_i_file__coll__graph.png create mode 100644 master/classncine_1_1_i_file__inherit__graph.map create mode 100644 master/classncine_1_1_i_file__inherit__graph.md5 create mode 100644 master/classncine_1_1_i_file__inherit__graph.png create mode 100644 master/classncine_1_1_i_frame_timer-members.html create mode 100644 master/classncine_1_1_i_frame_timer.html create mode 100644 master/classncine_1_1_i_gfx_capabilities-members.html create mode 100644 master/classncine_1_1_i_gfx_capabilities.html create mode 100644 master/classncine_1_1_i_gfx_capabilities__inherit__graph.map create mode 100644 master/classncine_1_1_i_gfx_capabilities__inherit__graph.md5 create mode 100644 master/classncine_1_1_i_gfx_capabilities__inherit__graph.png create mode 100644 master/classncine_1_1_i_gfx_device-members.html create mode 100644 master/classncine_1_1_i_gfx_device.html create mode 100644 master/classncine_1_1_i_gfx_device__coll__graph.map create mode 100644 master/classncine_1_1_i_gfx_device__coll__graph.md5 create mode 100644 master/classncine_1_1_i_gfx_device__coll__graph.png create mode 100644 master/classncine_1_1_i_indexer-members.html create mode 100644 master/classncine_1_1_i_indexer.html create mode 100644 master/classncine_1_1_i_indexer__inherit__graph.map create mode 100644 master/classncine_1_1_i_indexer__inherit__graph.md5 create mode 100644 master/classncine_1_1_i_indexer__inherit__graph.png create mode 100644 master/classncine_1_1_i_input_event_handler-members.html create mode 100644 master/classncine_1_1_i_input_event_handler.html create mode 100644 master/classncine_1_1_i_input_manager-members.html create mode 100644 master/classncine_1_1_i_input_manager.html create mode 100644 master/classncine_1_1_i_input_manager__coll__graph.map create mode 100644 master/classncine_1_1_i_input_manager__coll__graph.md5 create mode 100644 master/classncine_1_1_i_input_manager__coll__graph.png create mode 100644 master/classncine_1_1_i_logger-members.html create mode 100644 master/classncine_1_1_i_logger.html create mode 100644 master/classncine_1_1_i_logger__inherit__graph.map create mode 100644 master/classncine_1_1_i_logger__inherit__graph.md5 create mode 100644 master/classncine_1_1_i_logger__inherit__graph.png create mode 100644 master/classncine_1_1_i_texture_saver-members.html create mode 100644 master/classncine_1_1_i_texture_saver.html create mode 100644 master/classncine_1_1_i_texture_saver__inherit__graph.map create mode 100644 master/classncine_1_1_i_texture_saver__inherit__graph.md5 create mode 100644 master/classncine_1_1_i_texture_saver__inherit__graph.png create mode 100644 master/classncine_1_1_i_thread_command-members.html create mode 100644 master/classncine_1_1_i_thread_command.html create mode 100644 master/classncine_1_1_i_thread_pool-members.html create mode 100644 master/classncine_1_1_i_thread_pool.html create mode 100644 master/classncine_1_1_i_thread_pool__inherit__graph.map create mode 100644 master/classncine_1_1_i_thread_pool__inherit__graph.md5 create mode 100644 master/classncine_1_1_i_thread_pool__inherit__graph.png create mode 100644 master/classncine_1_1_joy_axis_event-members.html create mode 100644 master/classncine_1_1_joy_axis_event.html create mode 100644 master/classncine_1_1_joy_button_event-members.html create mode 100644 master/classncine_1_1_joy_button_event.html create mode 100644 master/classncine_1_1_joy_connection_event-members.html create mode 100644 master/classncine_1_1_joy_connection_event.html create mode 100644 master/classncine_1_1_joy_hat_event-members.html create mode 100644 master/classncine_1_1_joy_hat_event.html create mode 100644 master/classncine_1_1_joy_mapped_axis_event-members.html create mode 100644 master/classncine_1_1_joy_mapped_axis_event.html create mode 100644 master/classncine_1_1_joy_mapped_button_event-members.html create mode 100644 master/classncine_1_1_joy_mapped_button_event.html create mode 100644 master/classncine_1_1_joy_mapped_state-members.html create mode 100644 master/classncine_1_1_joy_mapped_state.html create mode 100644 master/classncine_1_1_joystick_state-members.html create mode 100644 master/classncine_1_1_joystick_state.html create mode 100644 master/classncine_1_1_keyboard_event-members.html create mode 100644 master/classncine_1_1_keyboard_event.html create mode 100644 master/classncine_1_1_keyboard_state-members.html create mode 100644 master/classncine_1_1_keyboard_state.html create mode 100644 master/classncine_1_1_lua_color_utils-members.html create mode 100644 master/classncine_1_1_lua_color_utils.html create mode 100644 master/classncine_1_1_lua_i_app_event_handler-members.html create mode 100644 master/classncine_1_1_lua_i_app_event_handler.html create mode 100644 master/classncine_1_1_lua_i_input_event_handler-members.html create mode 100644 master/classncine_1_1_lua_i_input_event_handler.html create mode 100644 master/classncine_1_1_lua_rect_utils-members.html create mode 100644 master/classncine_1_1_lua_rect_utils.html create mode 100644 master/classncine_1_1_lua_state_manager-members.html create mode 100644 master/classncine_1_1_lua_state_manager.html create mode 100644 master/classncine_1_1_lua_untracked_user_data-members.html create mode 100644 master/classncine_1_1_lua_untracked_user_data.html create mode 100644 master/classncine_1_1_lua_utils_1_1_run_info-members.html create mode 100644 master/classncine_1_1_lua_utils_1_1_run_info.html create mode 100644 master/classncine_1_1_lua_vector2_utils-members.html create mode 100644 master/classncine_1_1_lua_vector2_utils.html create mode 100644 master/classncine_1_1_lua_vector3_utils-members.html create mode 100644 master/classncine_1_1_lua_vector3_utils.html create mode 100644 master/classncine_1_1_lua_vector4_utils-members.html create mode 100644 master/classncine_1_1_lua_vector4_utils.html create mode 100644 master/classncine_1_1_matrix4x4-members.html create mode 100644 master/classncine_1_1_matrix4x4.html create mode 100644 master/classncine_1_1_matrix4x4__coll__graph.map create mode 100644 master/classncine_1_1_matrix4x4__coll__graph.md5 create mode 100644 master/classncine_1_1_matrix4x4__coll__graph.png create mode 100644 master/classncine_1_1_mesh_sprite-members.html create mode 100644 master/classncine_1_1_mesh_sprite.html create mode 100644 master/classncine_1_1_mesh_sprite__coll__graph.map create mode 100644 master/classncine_1_1_mesh_sprite__coll__graph.md5 create mode 100644 master/classncine_1_1_mesh_sprite__coll__graph.png create mode 100644 master/classncine_1_1_mesh_sprite__inherit__graph.map create mode 100644 master/classncine_1_1_mesh_sprite__inherit__graph.md5 create mode 100644 master/classncine_1_1_mesh_sprite__inherit__graph.png create mode 100644 master/classncine_1_1_mouse_event-members.html create mode 100644 master/classncine_1_1_mouse_event.html create mode 100644 master/classncine_1_1_mouse_state-members.html create mode 100644 master/classncine_1_1_mouse_state.html create mode 100644 master/classncine_1_1_nuklear_context-members.html create mode 100644 master/classncine_1_1_nuklear_context.html create mode 100644 master/classncine_1_1_null_audio_device-members.html create mode 100644 master/classncine_1_1_null_audio_device.html create mode 100644 master/classncine_1_1_null_audio_device__coll__graph.map create mode 100644 master/classncine_1_1_null_audio_device__coll__graph.md5 create mode 100644 master/classncine_1_1_null_audio_device__coll__graph.png create mode 100644 master/classncine_1_1_null_audio_device__inherit__graph.map create mode 100644 master/classncine_1_1_null_audio_device__inherit__graph.md5 create mode 100644 master/classncine_1_1_null_audio_device__inherit__graph.png create mode 100644 master/classncine_1_1_null_gfx_capabilities-members.html create mode 100644 master/classncine_1_1_null_gfx_capabilities.html create mode 100644 master/classncine_1_1_null_gfx_capabilities__coll__graph.map create mode 100644 master/classncine_1_1_null_gfx_capabilities__coll__graph.md5 create mode 100644 master/classncine_1_1_null_gfx_capabilities__coll__graph.png create mode 100644 master/classncine_1_1_null_gfx_capabilities__inherit__graph.map create mode 100644 master/classncine_1_1_null_gfx_capabilities__inherit__graph.md5 create mode 100644 master/classncine_1_1_null_gfx_capabilities__inherit__graph.png create mode 100644 master/classncine_1_1_null_indexer-members.html create mode 100644 master/classncine_1_1_null_indexer.html create mode 100644 master/classncine_1_1_null_indexer__coll__graph.map create mode 100644 master/classncine_1_1_null_indexer__coll__graph.md5 create mode 100644 master/classncine_1_1_null_indexer__coll__graph.png create mode 100644 master/classncine_1_1_null_indexer__inherit__graph.map create mode 100644 master/classncine_1_1_null_indexer__inherit__graph.md5 create mode 100644 master/classncine_1_1_null_indexer__inherit__graph.png create mode 100644 master/classncine_1_1_null_logger-members.html create mode 100644 master/classncine_1_1_null_logger.html create mode 100644 master/classncine_1_1_null_logger__coll__graph.map create mode 100644 master/classncine_1_1_null_logger__coll__graph.md5 create mode 100644 master/classncine_1_1_null_logger__coll__graph.png create mode 100644 master/classncine_1_1_null_logger__inherit__graph.map create mode 100644 master/classncine_1_1_null_logger__inherit__graph.md5 create mode 100644 master/classncine_1_1_null_logger__inherit__graph.png create mode 100644 master/classncine_1_1_null_thread_pool-members.html create mode 100644 master/classncine_1_1_null_thread_pool.html create mode 100644 master/classncine_1_1_null_thread_pool__coll__graph.map create mode 100644 master/classncine_1_1_null_thread_pool__coll__graph.md5 create mode 100644 master/classncine_1_1_null_thread_pool__coll__graph.png create mode 100644 master/classncine_1_1_null_thread_pool__inherit__graph.map create mode 100644 master/classncine_1_1_null_thread_pool__inherit__graph.md5 create mode 100644 master/classncine_1_1_null_thread_pool__inherit__graph.png create mode 100644 master/classncine_1_1_object-members.html create mode 100644 master/classncine_1_1_object.html create mode 100644 master/classncine_1_1_object__inherit__graph.map create mode 100644 master/classncine_1_1_object__inherit__graph.md5 create mode 100644 master/classncine_1_1_object__inherit__graph.png create mode 100644 master/classncine_1_1_p_c_application-members.html create mode 100644 master/classncine_1_1_p_c_application.html create mode 100644 master/classncine_1_1_p_c_application__coll__graph.map create mode 100644 master/classncine_1_1_p_c_application__coll__graph.md5 create mode 100644 master/classncine_1_1_p_c_application__coll__graph.png create mode 100644 master/classncine_1_1_p_c_application__inherit__graph.map create mode 100644 master/classncine_1_1_p_c_application__inherit__graph.md5 create mode 100644 master/classncine_1_1_p_c_application__inherit__graph.png create mode 100644 master/classncine_1_1_particle-members.html create mode 100644 master/classncine_1_1_particle.html create mode 100644 master/classncine_1_1_particle__coll__graph.map create mode 100644 master/classncine_1_1_particle__coll__graph.md5 create mode 100644 master/classncine_1_1_particle__coll__graph.png create mode 100644 master/classncine_1_1_particle__inherit__graph.map create mode 100644 master/classncine_1_1_particle__inherit__graph.md5 create mode 100644 master/classncine_1_1_particle__inherit__graph.png create mode 100644 master/classncine_1_1_particle_affector-members.html create mode 100644 master/classncine_1_1_particle_affector.html create mode 100644 master/classncine_1_1_particle_affector__inherit__graph.map create mode 100644 master/classncine_1_1_particle_affector__inherit__graph.md5 create mode 100644 master/classncine_1_1_particle_affector__inherit__graph.png create mode 100644 master/classncine_1_1_particle_system-members.html create mode 100644 master/classncine_1_1_particle_system.html create mode 100644 master/classncine_1_1_particle_system__coll__graph.map create mode 100644 master/classncine_1_1_particle_system__coll__graph.md5 create mode 100644 master/classncine_1_1_particle_system__coll__graph.png create mode 100644 master/classncine_1_1_particle_system__inherit__graph.map create mode 100644 master/classncine_1_1_particle_system__inherit__graph.md5 create mode 100644 master/classncine_1_1_particle_system__inherit__graph.png create mode 100644 master/classncine_1_1_position_affector-members.html create mode 100644 master/classncine_1_1_position_affector.html create mode 100644 master/classncine_1_1_position_affector__coll__graph.map create mode 100644 master/classncine_1_1_position_affector__coll__graph.md5 create mode 100644 master/classncine_1_1_position_affector__coll__graph.png create mode 100644 master/classncine_1_1_position_affector__inherit__graph.map create mode 100644 master/classncine_1_1_position_affector__inherit__graph.md5 create mode 100644 master/classncine_1_1_position_affector__inherit__graph.png create mode 100644 master/classncine_1_1_qt5_widget-members.html create mode 100644 master/classncine_1_1_qt5_widget.html create mode 100644 master/classncine_1_1_qt5_widget__coll__graph.map create mode 100644 master/classncine_1_1_qt5_widget__coll__graph.md5 create mode 100644 master/classncine_1_1_qt5_widget__coll__graph.png create mode 100644 master/classncine_1_1_qt5_widget__inherit__graph.map create mode 100644 master/classncine_1_1_qt5_widget__inherit__graph.md5 create mode 100644 master/classncine_1_1_qt5_widget__inherit__graph.png create mode 100644 master/classncine_1_1_quaternion-members.html create mode 100644 master/classncine_1_1_quaternion.html create mode 100644 master/classncine_1_1_quaternion__coll__graph.map create mode 100644 master/classncine_1_1_quaternion__coll__graph.md5 create mode 100644 master/classncine_1_1_quaternion__coll__graph.png create mode 100644 master/classncine_1_1_random-members.html create mode 100644 master/classncine_1_1_random.html create mode 100644 master/classncine_1_1_rect-members.html create mode 100644 master/classncine_1_1_rect.html create mode 100644 master/classncine_1_1_rect_animation-members.html create mode 100644 master/classncine_1_1_rect_animation.html create mode 100644 master/classncine_1_1_render_doc_capture-members.html create mode 100644 master/classncine_1_1_render_doc_capture.html create mode 100644 master/classncine_1_1_rotation_affector-members.html create mode 100644 master/classncine_1_1_rotation_affector.html create mode 100644 master/classncine_1_1_rotation_affector__coll__graph.map create mode 100644 master/classncine_1_1_rotation_affector__coll__graph.md5 create mode 100644 master/classncine_1_1_rotation_affector__coll__graph.png create mode 100644 master/classncine_1_1_rotation_affector__inherit__graph.map create mode 100644 master/classncine_1_1_rotation_affector__inherit__graph.md5 create mode 100644 master/classncine_1_1_rotation_affector__inherit__graph.png create mode 100644 master/classncine_1_1_scene_node-members.html create mode 100644 master/classncine_1_1_scene_node.html create mode 100644 master/classncine_1_1_scene_node__coll__graph.map create mode 100644 master/classncine_1_1_scene_node__coll__graph.md5 create mode 100644 master/classncine_1_1_scene_node__coll__graph.png create mode 100644 master/classncine_1_1_scene_node__inherit__graph.map create mode 100644 master/classncine_1_1_scene_node__inherit__graph.md5 create mode 100644 master/classncine_1_1_scene_node__inherit__graph.png create mode 100644 master/classncine_1_1_scroll_event-members.html create mode 100644 master/classncine_1_1_scroll_event.html create mode 100644 master/classncine_1_1_service_locator-members.html create mode 100644 master/classncine_1_1_service_locator.html create mode 100644 master/classncine_1_1_shader-members.html create mode 100644 master/classncine_1_1_shader.html create mode 100644 master/classncine_1_1_shader__coll__graph.map create mode 100644 master/classncine_1_1_shader__coll__graph.md5 create mode 100644 master/classncine_1_1_shader__coll__graph.png create mode 100644 master/classncine_1_1_shader__inherit__graph.map create mode 100644 master/classncine_1_1_shader__inherit__graph.md5 create mode 100644 master/classncine_1_1_shader__inherit__graph.png create mode 100644 master/classncine_1_1_shader_state-members.html create mode 100644 master/classncine_1_1_shader_state.html create mode 100644 master/classncine_1_1_size_affector-members.html create mode 100644 master/classncine_1_1_size_affector.html create mode 100644 master/classncine_1_1_size_affector__coll__graph.map create mode 100644 master/classncine_1_1_size_affector__coll__graph.md5 create mode 100644 master/classncine_1_1_size_affector__coll__graph.png create mode 100644 master/classncine_1_1_size_affector__inherit__graph.map create mode 100644 master/classncine_1_1_size_affector__inherit__graph.md5 create mode 100644 master/classncine_1_1_size_affector__inherit__graph.png create mode 100644 master/classncine_1_1_sprite-members.html create mode 100644 master/classncine_1_1_sprite.html create mode 100644 master/classncine_1_1_sprite__coll__graph.map create mode 100644 master/classncine_1_1_sprite__coll__graph.md5 create mode 100644 master/classncine_1_1_sprite__coll__graph.png create mode 100644 master/classncine_1_1_sprite__inherit__graph.map create mode 100644 master/classncine_1_1_sprite__inherit__graph.md5 create mode 100644 master/classncine_1_1_sprite__inherit__graph.png create mode 100644 master/classncine_1_1_text_input_event-members.html create mode 100644 master/classncine_1_1_text_input_event.html create mode 100644 master/classncine_1_1_text_node-members.html create mode 100644 master/classncine_1_1_text_node.html create mode 100644 master/classncine_1_1_text_node__coll__graph.map create mode 100644 master/classncine_1_1_text_node__coll__graph.md5 create mode 100644 master/classncine_1_1_text_node__coll__graph.png create mode 100644 master/classncine_1_1_text_node__inherit__graph.map create mode 100644 master/classncine_1_1_text_node__inherit__graph.md5 create mode 100644 master/classncine_1_1_text_node__inherit__graph.png create mode 100644 master/classncine_1_1_texture-members.html create mode 100644 master/classncine_1_1_texture.html create mode 100644 master/classncine_1_1_texture__coll__graph.map create mode 100644 master/classncine_1_1_texture__coll__graph.md5 create mode 100644 master/classncine_1_1_texture__coll__graph.png create mode 100644 master/classncine_1_1_texture__inherit__graph.map create mode 100644 master/classncine_1_1_texture__inherit__graph.md5 create mode 100644 master/classncine_1_1_texture__inherit__graph.png create mode 100644 master/classncine_1_1_texture_saver_png-members.html create mode 100644 master/classncine_1_1_texture_saver_png.html create mode 100644 master/classncine_1_1_texture_saver_png__coll__graph.map create mode 100644 master/classncine_1_1_texture_saver_png__coll__graph.md5 create mode 100644 master/classncine_1_1_texture_saver_png__coll__graph.png create mode 100644 master/classncine_1_1_texture_saver_png__inherit__graph.map create mode 100644 master/classncine_1_1_texture_saver_png__inherit__graph.md5 create mode 100644 master/classncine_1_1_texture_saver_png__inherit__graph.png create mode 100644 master/classncine_1_1_texture_saver_web_p-members.html create mode 100644 master/classncine_1_1_texture_saver_web_p.html create mode 100644 master/classncine_1_1_texture_saver_web_p__coll__graph.map create mode 100644 master/classncine_1_1_texture_saver_web_p__coll__graph.md5 create mode 100644 master/classncine_1_1_texture_saver_web_p__coll__graph.png create mode 100644 master/classncine_1_1_texture_saver_web_p__inherit__graph.map create mode 100644 master/classncine_1_1_texture_saver_web_p__inherit__graph.md5 create mode 100644 master/classncine_1_1_texture_saver_web_p__inherit__graph.png create mode 100644 master/classncine_1_1_time_stamp-members.html create mode 100644 master/classncine_1_1_time_stamp.html create mode 100644 master/classncine_1_1_timer-members.html create mode 100644 master/classncine_1_1_timer.html create mode 100644 master/classncine_1_1_touch_event-members.html create mode 100644 master/classncine_1_1_touch_event.html create mode 100644 master/classncine_1_1_touch_event__coll__graph.map create mode 100644 master/classncine_1_1_touch_event__coll__graph.md5 create mode 100644 master/classncine_1_1_touch_event__coll__graph.png create mode 100644 master/classncine_1_1_vector2-members.html create mode 100644 master/classncine_1_1_vector2.html create mode 100644 master/classncine_1_1_vector2__coll__graph.map create mode 100644 master/classncine_1_1_vector2__coll__graph.md5 create mode 100644 master/classncine_1_1_vector2__coll__graph.png create mode 100644 master/classncine_1_1_vector3-members.html create mode 100644 master/classncine_1_1_vector3.html create mode 100644 master/classncine_1_1_vector3__coll__graph.map create mode 100644 master/classncine_1_1_vector3__coll__graph.md5 create mode 100644 master/classncine_1_1_vector3__coll__graph.png create mode 100644 master/classncine_1_1_vector4-members.html create mode 100644 master/classncine_1_1_vector4.html create mode 100644 master/classncine_1_1_vector4__coll__graph.map create mode 100644 master/classncine_1_1_vector4__coll__graph.md5 create mode 100644 master/classncine_1_1_vector4__coll__graph.png create mode 100644 master/classncine_1_1_velocity_affector-members.html create mode 100644 master/classncine_1_1_velocity_affector.html create mode 100644 master/classncine_1_1_velocity_affector__coll__graph.map create mode 100644 master/classncine_1_1_velocity_affector__coll__graph.md5 create mode 100644 master/classncine_1_1_velocity_affector__coll__graph.png create mode 100644 master/classncine_1_1_velocity_affector__inherit__graph.map create mode 100644 master/classncine_1_1_velocity_affector__inherit__graph.md5 create mode 100644 master/classncine_1_1_velocity_affector__inherit__graph.png create mode 100644 master/classncine_1_1_viewport-members.html create mode 100644 master/classncine_1_1_viewport.html create mode 100644 master/classncine_1_1_viewport__coll__graph.map create mode 100644 master/classncine_1_1_viewport__coll__graph.md5 create mode 100644 master/classncine_1_1_viewport__coll__graph.png create mode 100644 master/classnctl_1_1_alloc_manager-members.html create mode 100644 master/classnctl_1_1_alloc_manager.html create mode 100644 master/classnctl_1_1_alloc_manager_initializer-members.html create mode 100644 master/classnctl_1_1_alloc_manager_initializer.html create mode 100644 master/classnctl_1_1_array-members.html create mode 100644 master/classnctl_1_1_array.html create mode 100644 master/classnctl_1_1_array_iterator-members.html create mode 100644 master/classnctl_1_1_array_iterator.html create mode 100644 master/classnctl_1_1_atomic32-members.html create mode 100644 master/classnctl_1_1_atomic32.html create mode 100644 master/classnctl_1_1_atomic64-members.html create mode 100644 master/classnctl_1_1_atomic64.html create mode 100644 master/classnctl_1_1_base_list_node-members.html create mode 100644 master/classnctl_1_1_base_list_node.html create mode 100644 master/classnctl_1_1_base_list_node__coll__graph.map create mode 100644 master/classnctl_1_1_base_list_node__coll__graph.md5 create mode 100644 master/classnctl_1_1_base_list_node__coll__graph.png create mode 100644 master/classnctl_1_1_base_list_node__inherit__graph.map create mode 100644 master/classnctl_1_1_base_list_node__inherit__graph.md5 create mode 100644 master/classnctl_1_1_base_list_node__inherit__graph.png create mode 100644 master/classnctl_1_1_bit_set-members.html create mode 100644 master/classnctl_1_1_bit_set.html create mode 100644 master/classnctl_1_1_default_delete-members.html create mode 100644 master/classnctl_1_1_default_delete.html create mode 100644 master/classnctl_1_1_default_delete_3_01_t_0f_0e_4-members.html create mode 100644 master/classnctl_1_1_default_delete_3_01_t_0f_0e_4.html create mode 100644 master/classnctl_1_1_f_n_v1a_hash_func-members.html create mode 100644 master/classnctl_1_1_f_n_v1a_hash_func.html create mode 100644 master/classnctl_1_1_f_n_v1a_hash_func_3_01_string_01_4-members.html create mode 100644 master/classnctl_1_1_f_n_v1a_hash_func_3_01_string_01_4.html create mode 100644 master/classnctl_1_1_f_n_v1a_hash_func_3_01const_01char_01_5_01_4-members.html create mode 100644 master/classnctl_1_1_f_n_v1a_hash_func_3_01const_01char_01_5_01_4.html create mode 100644 master/classnctl_1_1_fast_hash_func-members.html create mode 100644 master/classnctl_1_1_fast_hash_func.html create mode 100644 master/classnctl_1_1_fast_hash_func_3_01_string_01_4-members.html create mode 100644 master/classnctl_1_1_fast_hash_func_3_01_string_01_4.html create mode 100644 master/classnctl_1_1_fast_hash_func_3_01const_01char_01_5_01_4-members.html create mode 100644 master/classnctl_1_1_fast_hash_func_3_01const_01char_01_5_01_4.html create mode 100644 master/classnctl_1_1_fixed_hash_func-members.html create mode 100644 master/classnctl_1_1_fixed_hash_func.html create mode 100644 master/classnctl_1_1_free_list_allocator-members.html create mode 100644 master/classnctl_1_1_free_list_allocator.html create mode 100644 master/classnctl_1_1_free_list_allocator__coll__graph.map create mode 100644 master/classnctl_1_1_free_list_allocator__coll__graph.md5 create mode 100644 master/classnctl_1_1_free_list_allocator__coll__graph.png create mode 100644 master/classnctl_1_1_free_list_allocator__inherit__graph.map create mode 100644 master/classnctl_1_1_free_list_allocator__inherit__graph.md5 create mode 100644 master/classnctl_1_1_free_list_allocator__inherit__graph.png create mode 100644 master/classnctl_1_1_hash_map-members.html create mode 100644 master/classnctl_1_1_hash_map.html create mode 100644 master/classnctl_1_1_hash_map_iterator-members.html create mode 100644 master/classnctl_1_1_hash_map_iterator.html create mode 100644 master/classnctl_1_1_hash_map_list-members.html create mode 100644 master/classnctl_1_1_hash_map_list.html create mode 100644 master/classnctl_1_1_hash_map_list_iterator-members.html create mode 100644 master/classnctl_1_1_hash_map_list_iterator.html create mode 100644 master/classnctl_1_1_hash_set-members.html create mode 100644 master/classnctl_1_1_hash_set.html create mode 100644 master/classnctl_1_1_hash_set_iterator-members.html create mode 100644 master/classnctl_1_1_hash_set_iterator.html create mode 100644 master/classnctl_1_1_hash_set_list-members.html create mode 100644 master/classnctl_1_1_hash_set_list.html create mode 100644 master/classnctl_1_1_hash_set_list_iterator-members.html create mode 100644 master/classnctl_1_1_hash_set_list_iterator.html create mode 100644 master/classnctl_1_1_i_allocator-members.html create mode 100644 master/classnctl_1_1_i_allocator.html create mode 100644 master/classnctl_1_1_i_allocator__coll__graph.map create mode 100644 master/classnctl_1_1_i_allocator__coll__graph.md5 create mode 100644 master/classnctl_1_1_i_allocator__coll__graph.png create mode 100644 master/classnctl_1_1_i_allocator__inherit__graph.map create mode 100644 master/classnctl_1_1_i_allocator__inherit__graph.md5 create mode 100644 master/classnctl_1_1_i_allocator__inherit__graph.png create mode 100644 master/classnctl_1_1_identity_hash_func-members.html create mode 100644 master/classnctl_1_1_identity_hash_func.html create mode 100644 master/classnctl_1_1_is_equal_to-members.html create mode 100644 master/classnctl_1_1_is_equal_to.html create mode 100644 master/classnctl_1_1_is_greater_than-members.html create mode 100644 master/classnctl_1_1_is_greater_than.html create mode 100644 master/classnctl_1_1_is_less_than-members.html create mode 100644 master/classnctl_1_1_is_less_than.html create mode 100644 master/classnctl_1_1_is_not_equal_to-members.html create mode 100644 master/classnctl_1_1_is_not_equal_to.html create mode 100644 master/classnctl_1_1_is_not_greater_than-members.html create mode 100644 master/classnctl_1_1_is_not_greater_than.html create mode 100644 master/classnctl_1_1_is_not_less_than-members.html create mode 100644 master/classnctl_1_1_is_not_less_than.html create mode 100644 master/classnctl_1_1_jenkins_hash_func-members.html create mode 100644 master/classnctl_1_1_jenkins_hash_func.html create mode 100644 master/classnctl_1_1_jenkins_hash_func_3_01_string_01_4-members.html create mode 100644 master/classnctl_1_1_jenkins_hash_func_3_01_string_01_4.html create mode 100644 master/classnctl_1_1_jenkins_hash_func_3_01const_01char_01_5_01_4-members.html create mode 100644 master/classnctl_1_1_jenkins_hash_func_3_01const_01char_01_5_01_4.html create mode 100644 master/classnctl_1_1_linear_allocator-members.html create mode 100644 master/classnctl_1_1_linear_allocator.html create mode 100644 master/classnctl_1_1_linear_allocator__coll__graph.map create mode 100644 master/classnctl_1_1_linear_allocator__coll__graph.md5 create mode 100644 master/classnctl_1_1_linear_allocator__coll__graph.png create mode 100644 master/classnctl_1_1_linear_allocator__inherit__graph.map create mode 100644 master/classnctl_1_1_linear_allocator__inherit__graph.md5 create mode 100644 master/classnctl_1_1_linear_allocator__inherit__graph.png create mode 100644 master/classnctl_1_1_list-members.html create mode 100644 master/classnctl_1_1_list.html create mode 100644 master/classnctl_1_1_list_iterator-members.html create mode 100644 master/classnctl_1_1_list_iterator.html create mode 100644 master/classnctl_1_1_list_node-members.html create mode 100644 master/classnctl_1_1_list_node.html create mode 100644 master/classnctl_1_1_list_node__coll__graph.map create mode 100644 master/classnctl_1_1_list_node__coll__graph.md5 create mode 100644 master/classnctl_1_1_list_node__coll__graph.png create mode 100644 master/classnctl_1_1_list_node__inherit__graph.map create mode 100644 master/classnctl_1_1_list_node__inherit__graph.md5 create mode 100644 master/classnctl_1_1_list_node__inherit__graph.png create mode 100644 master/classnctl_1_1_malloc_allocator-members.html create mode 100644 master/classnctl_1_1_malloc_allocator.html create mode 100644 master/classnctl_1_1_malloc_allocator__coll__graph.map create mode 100644 master/classnctl_1_1_malloc_allocator__coll__graph.md5 create mode 100644 master/classnctl_1_1_malloc_allocator__coll__graph.png create mode 100644 master/classnctl_1_1_malloc_allocator__inherit__graph.map create mode 100644 master/classnctl_1_1_malloc_allocator__inherit__graph.md5 create mode 100644 master/classnctl_1_1_malloc_allocator__inherit__graph.png create mode 100644 master/classnctl_1_1_modulo_hash_func-members.html create mode 100644 master/classnctl_1_1_modulo_hash_func.html create mode 100644 master/classnctl_1_1_pool_allocator-members.html create mode 100644 master/classnctl_1_1_pool_allocator.html create mode 100644 master/classnctl_1_1_pool_allocator__coll__graph.map create mode 100644 master/classnctl_1_1_pool_allocator__coll__graph.md5 create mode 100644 master/classnctl_1_1_pool_allocator__coll__graph.png create mode 100644 master/classnctl_1_1_pool_allocator__inherit__graph.map create mode 100644 master/classnctl_1_1_pool_allocator__inherit__graph.md5 create mode 100644 master/classnctl_1_1_pool_allocator__inherit__graph.png create mode 100644 master/classnctl_1_1_proxy_allocator-members.html create mode 100644 master/classnctl_1_1_proxy_allocator.html create mode 100644 master/classnctl_1_1_proxy_allocator__coll__graph.map create mode 100644 master/classnctl_1_1_proxy_allocator__coll__graph.md5 create mode 100644 master/classnctl_1_1_proxy_allocator__coll__graph.png create mode 100644 master/classnctl_1_1_proxy_allocator__inherit__graph.map create mode 100644 master/classnctl_1_1_proxy_allocator__inherit__graph.md5 create mode 100644 master/classnctl_1_1_proxy_allocator__inherit__graph.png create mode 100644 master/classnctl_1_1_reverse_iterator-members.html create mode 100644 master/classnctl_1_1_reverse_iterator.html create mode 100644 master/classnctl_1_1_sax_hash_func-members.html create mode 100644 master/classnctl_1_1_sax_hash_func.html create mode 100644 master/classnctl_1_1_sax_hash_func_3_01_string_01_4-members.html create mode 100644 master/classnctl_1_1_sax_hash_func_3_01_string_01_4.html create mode 100644 master/classnctl_1_1_sax_hash_func_3_01const_01char_01_5_01_4-members.html create mode 100644 master/classnctl_1_1_sax_hash_func_3_01const_01char_01_5_01_4.html create mode 100644 master/classnctl_1_1_shared_ptr-members.html create mode 100644 master/classnctl_1_1_shared_ptr.html create mode 100644 master/classnctl_1_1_sparse_set-members.html create mode 100644 master/classnctl_1_1_sparse_set.html create mode 100644 master/classnctl_1_1_sparse_set_iterator-members.html create mode 100644 master/classnctl_1_1_sparse_set_iterator.html create mode 100644 master/classnctl_1_1_stack_allocator-members.html create mode 100644 master/classnctl_1_1_stack_allocator.html create mode 100644 master/classnctl_1_1_stack_allocator__coll__graph.map create mode 100644 master/classnctl_1_1_stack_allocator__coll__graph.md5 create mode 100644 master/classnctl_1_1_stack_allocator__coll__graph.png create mode 100644 master/classnctl_1_1_stack_allocator__inherit__graph.map create mode 100644 master/classnctl_1_1_stack_allocator__inherit__graph.md5 create mode 100644 master/classnctl_1_1_stack_allocator__inherit__graph.png create mode 100644 master/classnctl_1_1_static_array-members.html create mode 100644 master/classnctl_1_1_static_array.html create mode 100644 master/classnctl_1_1_static_hash_map-members.html create mode 100644 master/classnctl_1_1_static_hash_map.html create mode 100644 master/classnctl_1_1_static_hash_map_iterator-members.html create mode 100644 master/classnctl_1_1_static_hash_map_iterator.html create mode 100644 master/classnctl_1_1_static_hash_set-members.html create mode 100644 master/classnctl_1_1_static_hash_set.html create mode 100644 master/classnctl_1_1_static_hash_set_iterator-members.html create mode 100644 master/classnctl_1_1_static_hash_set_iterator.html create mode 100644 master/classnctl_1_1_static_string-members.html create mode 100644 master/classnctl_1_1_static_string.html create mode 100644 master/classnctl_1_1_string-members.html create mode 100644 master/classnctl_1_1_string.html create mode 100644 master/classnctl_1_1_string_iterator-members.html create mode 100644 master/classnctl_1_1_string_iterator.html create mode 100644 master/classnctl_1_1_unique_ptr-members.html create mode 100644 master/classnctl_1_1_unique_ptr.html create mode 100644 master/classnctl_1_1_unique_ptr_3_01_t_0f_0e_00_01_deleter_01_4-members.html create mode 100644 master/classnctl_1_1_unique_ptr_3_01_t_0f_0e_00_01_deleter_01_4.html create mode 100644 master/classtracy_1_1_gpu_ctx_scope-members.html create mode 100644 master/classtracy_1_1_gpu_ctx_scope.html create mode 100644 master/closed.png create mode 100644 master/common__constants_8h_source.html create mode 100644 master/common__defines_8h_source.html create mode 100644 master/common__macros_8h_source.html create mode 100644 master/common__windefines_8h_source.html create mode 100644 master/dir_0af1587c8378955de40f48b4bd1869f0.html create mode 100644 master/dir_560415a5d2bc4999842279f4fc1debef.html create mode 100644 master/dir_68267d1309a1af8e8297ef4c3efbcdba.html create mode 100644 master/dir_69e571e5afc36e9d039483e2298e1d8c.html create mode 100644 master/dir_6bfbb9df9fcba3af2b352e911b967e82.html create mode 100644 master/dir_7e55306ba01a4f64bc8db2780859eb09.html create mode 100644 master/dir_a63dedf81f1e5ea1d42bb45ef831eb8c.html create mode 100644 master/dir_b49f11675e92293ffa7ceeef744893f4.html create mode 100644 master/dir_b8d13aa7d06be3c2601985ee32750f86.html create mode 100644 master/dir_d365e15d984c8d0205117ee0c40d6716.html create mode 100644 master/dir_d44c64559bbebec7f509842c48db8b23.html create mode 100644 master/dir_e6a0c564333ae2aa489c52fa70c1e9c9.html create mode 100644 master/doc.png create mode 100644 master/doxygen.css create mode 100644 master/doxygen.svg create mode 100644 master/dynsections.js create mode 100644 master/files.html create mode 100644 master/folderclosed.png create mode 100644 master/folderopen.png create mode 100644 master/functions.html create mode 100644 master/functions_b.html create mode 100644 master/functions_c.html create mode 100644 master/functions_d.html create mode 100644 master/functions_e.html create mode 100644 master/functions_enum.html create mode 100644 master/functions_eval.html create mode 100644 master/functions_f.html create mode 100644 master/functions_func.html create mode 100644 master/functions_func_b.html create mode 100644 master/functions_func_c.html create mode 100644 master/functions_func_d.html create mode 100644 master/functions_func_e.html create mode 100644 master/functions_func_f.html create mode 100644 master/functions_func_g.html create mode 100644 master/functions_func_h.html create mode 100644 master/functions_func_i.html create mode 100644 master/functions_func_j.html create mode 100644 master/functions_func_k.html create mode 100644 master/functions_func_l.html create mode 100644 master/functions_func_m.html create mode 100644 master/functions_func_n.html create mode 100644 master/functions_func_o.html create mode 100644 master/functions_func_p.html create mode 100644 master/functions_func_q.html create mode 100644 master/functions_func_r.html create mode 100644 master/functions_func_s.html create mode 100644 master/functions_func_t.html create mode 100644 master/functions_func_u.html create mode 100644 master/functions_func_v.html create mode 100644 master/functions_func_w.html create mode 100644 master/functions_func_~.html create mode 100644 master/functions_g.html create mode 100644 master/functions_h.html create mode 100644 master/functions_i.html create mode 100644 master/functions_j.html create mode 100644 master/functions_k.html create mode 100644 master/functions_l.html create mode 100644 master/functions_m.html create mode 100644 master/functions_n.html create mode 100644 master/functions_o.html create mode 100644 master/functions_p.html create mode 100644 master/functions_q.html create mode 100644 master/functions_r.html create mode 100644 master/functions_rela.html create mode 100644 master/functions_s.html create mode 100644 master/functions_t.html create mode 100644 master/functions_type.html create mode 100644 master/functions_u.html create mode 100644 master/functions_v.html create mode 100644 master/functions_vars.html create mode 100644 master/functions_w.html create mode 100644 master/functions_x.html create mode 100644 master/functions_y.html create mode 100644 master/functions_z.html create mode 100644 master/functions_~.html create mode 100644 master/graph_legend.html create mode 100644 master/graph_legend.md5 create mode 100644 master/graph_legend.png create mode 100644 master/hierarchy.html create mode 100644 master/icon72.png create mode 100644 master/index.html create mode 100644 master/inherit_graph_0.map create mode 100644 master/inherit_graph_0.md5 create mode 100644 master/inherit_graph_0.png create mode 100644 master/inherit_graph_1.map create mode 100644 master/inherit_graph_1.md5 create mode 100644 master/inherit_graph_1.png create mode 100644 master/inherit_graph_10.map create mode 100644 master/inherit_graph_10.md5 create mode 100644 master/inherit_graph_10.png create mode 100644 master/inherit_graph_100.map create mode 100644 master/inherit_graph_100.md5 create mode 100644 master/inherit_graph_100.png create mode 100644 master/inherit_graph_101.map create mode 100644 master/inherit_graph_101.md5 create mode 100644 master/inherit_graph_101.png create mode 100644 master/inherit_graph_102.map create mode 100644 master/inherit_graph_102.md5 create mode 100644 master/inherit_graph_102.png create mode 100644 master/inherit_graph_103.map create mode 100644 master/inherit_graph_103.md5 create mode 100644 master/inherit_graph_103.png create mode 100644 master/inherit_graph_104.map create mode 100644 master/inherit_graph_104.md5 create mode 100644 master/inherit_graph_104.png create mode 100644 master/inherit_graph_105.map create mode 100644 master/inherit_graph_105.md5 create mode 100644 master/inherit_graph_105.png create mode 100644 master/inherit_graph_106.map create mode 100644 master/inherit_graph_106.md5 create mode 100644 master/inherit_graph_106.png create mode 100644 master/inherit_graph_107.map create mode 100644 master/inherit_graph_107.md5 create mode 100644 master/inherit_graph_107.png create mode 100644 master/inherit_graph_108.map create mode 100644 master/inherit_graph_108.md5 create mode 100644 master/inherit_graph_108.png create mode 100644 master/inherit_graph_109.map create mode 100644 master/inherit_graph_109.md5 create mode 100644 master/inherit_graph_109.png create mode 100644 master/inherit_graph_11.map create mode 100644 master/inherit_graph_11.md5 create mode 100644 master/inherit_graph_11.png create mode 100644 master/inherit_graph_110.map create mode 100644 master/inherit_graph_110.md5 create mode 100644 master/inherit_graph_110.png create mode 100644 master/inherit_graph_111.map create mode 100644 master/inherit_graph_111.md5 create mode 100644 master/inherit_graph_111.png create mode 100644 master/inherit_graph_112.map create mode 100644 master/inherit_graph_112.md5 create mode 100644 master/inherit_graph_112.png create mode 100644 master/inherit_graph_113.map create mode 100644 master/inherit_graph_113.md5 create mode 100644 master/inherit_graph_113.png create mode 100644 master/inherit_graph_114.map create mode 100644 master/inherit_graph_114.md5 create mode 100644 master/inherit_graph_114.png create mode 100644 master/inherit_graph_115.map create mode 100644 master/inherit_graph_115.md5 create mode 100644 master/inherit_graph_115.png create mode 100644 master/inherit_graph_116.map create mode 100644 master/inherit_graph_116.md5 create mode 100644 master/inherit_graph_116.png create mode 100644 master/inherit_graph_117.map create mode 100644 master/inherit_graph_117.md5 create mode 100644 master/inherit_graph_117.png create mode 100644 master/inherit_graph_118.map create mode 100644 master/inherit_graph_118.md5 create mode 100644 master/inherit_graph_118.png create mode 100644 master/inherit_graph_119.map create mode 100644 master/inherit_graph_119.md5 create mode 100644 master/inherit_graph_119.png create mode 100644 master/inherit_graph_12.map create mode 100644 master/inherit_graph_12.md5 create mode 100644 master/inherit_graph_12.png create mode 100644 master/inherit_graph_120.map create mode 100644 master/inherit_graph_120.md5 create mode 100644 master/inherit_graph_120.png create mode 100644 master/inherit_graph_121.map create mode 100644 master/inherit_graph_121.md5 create mode 100644 master/inherit_graph_121.png create mode 100644 master/inherit_graph_122.map create mode 100644 master/inherit_graph_122.md5 create mode 100644 master/inherit_graph_122.png create mode 100644 master/inherit_graph_123.map create mode 100644 master/inherit_graph_123.md5 create mode 100644 master/inherit_graph_123.png create mode 100644 master/inherit_graph_124.map create mode 100644 master/inherit_graph_124.md5 create mode 100644 master/inherit_graph_124.png create mode 100644 master/inherit_graph_125.map create mode 100644 master/inherit_graph_125.md5 create mode 100644 master/inherit_graph_125.png create mode 100644 master/inherit_graph_126.map create mode 100644 master/inherit_graph_126.md5 create mode 100644 master/inherit_graph_126.png create mode 100644 master/inherit_graph_127.map create mode 100644 master/inherit_graph_127.md5 create mode 100644 master/inherit_graph_127.png create mode 100644 master/inherit_graph_128.map create mode 100644 master/inherit_graph_128.md5 create mode 100644 master/inherit_graph_128.png create mode 100644 master/inherit_graph_129.map create mode 100644 master/inherit_graph_129.md5 create mode 100644 master/inherit_graph_129.png create mode 100644 master/inherit_graph_13.map create mode 100644 master/inherit_graph_13.md5 create mode 100644 master/inherit_graph_13.png create mode 100644 master/inherit_graph_130.map create mode 100644 master/inherit_graph_130.md5 create mode 100644 master/inherit_graph_130.png create mode 100644 master/inherit_graph_131.map create mode 100644 master/inherit_graph_131.md5 create mode 100644 master/inherit_graph_131.png create mode 100644 master/inherit_graph_132.map create mode 100644 master/inherit_graph_132.md5 create mode 100644 master/inherit_graph_132.png create mode 100644 master/inherit_graph_133.map create mode 100644 master/inherit_graph_133.md5 create mode 100644 master/inherit_graph_133.png create mode 100644 master/inherit_graph_134.map create mode 100644 master/inherit_graph_134.md5 create mode 100644 master/inherit_graph_134.png create mode 100644 master/inherit_graph_135.map create mode 100644 master/inherit_graph_135.md5 create mode 100644 master/inherit_graph_135.png create mode 100644 master/inherit_graph_136.map create mode 100644 master/inherit_graph_136.md5 create mode 100644 master/inherit_graph_136.png create mode 100644 master/inherit_graph_137.map create mode 100644 master/inherit_graph_137.md5 create mode 100644 master/inherit_graph_137.png create mode 100644 master/inherit_graph_138.map create mode 100644 master/inherit_graph_138.md5 create mode 100644 master/inherit_graph_138.png create mode 100644 master/inherit_graph_139.map create mode 100644 master/inherit_graph_139.md5 create mode 100644 master/inherit_graph_139.png create mode 100644 master/inherit_graph_14.map create mode 100644 master/inherit_graph_14.md5 create mode 100644 master/inherit_graph_14.png create mode 100644 master/inherit_graph_140.map create mode 100644 master/inherit_graph_140.md5 create mode 100644 master/inherit_graph_140.png create mode 100644 master/inherit_graph_141.map create mode 100644 master/inherit_graph_141.md5 create mode 100644 master/inherit_graph_141.png create mode 100644 master/inherit_graph_142.map create mode 100644 master/inherit_graph_142.md5 create mode 100644 master/inherit_graph_142.png create mode 100644 master/inherit_graph_143.map create mode 100644 master/inherit_graph_143.md5 create mode 100644 master/inherit_graph_143.png create mode 100644 master/inherit_graph_144.map create mode 100644 master/inherit_graph_144.md5 create mode 100644 master/inherit_graph_144.png create mode 100644 master/inherit_graph_145.map create mode 100644 master/inherit_graph_145.md5 create mode 100644 master/inherit_graph_145.png create mode 100644 master/inherit_graph_146.map create mode 100644 master/inherit_graph_146.md5 create mode 100644 master/inherit_graph_146.png create mode 100644 master/inherit_graph_147.map create mode 100644 master/inherit_graph_147.md5 create mode 100644 master/inherit_graph_147.png create mode 100644 master/inherit_graph_148.map create mode 100644 master/inherit_graph_148.md5 create mode 100644 master/inherit_graph_148.png create mode 100644 master/inherit_graph_149.map create mode 100644 master/inherit_graph_149.md5 create mode 100644 master/inherit_graph_149.png create mode 100644 master/inherit_graph_15.map create mode 100644 master/inherit_graph_15.md5 create mode 100644 master/inherit_graph_15.png create mode 100644 master/inherit_graph_150.map create mode 100644 master/inherit_graph_150.md5 create mode 100644 master/inherit_graph_150.png create mode 100644 master/inherit_graph_151.map create mode 100644 master/inherit_graph_151.md5 create mode 100644 master/inherit_graph_151.png create mode 100644 master/inherit_graph_152.map create mode 100644 master/inherit_graph_152.md5 create mode 100644 master/inherit_graph_152.png create mode 100644 master/inherit_graph_153.map create mode 100644 master/inherit_graph_153.md5 create mode 100644 master/inherit_graph_153.png create mode 100644 master/inherit_graph_154.map create mode 100644 master/inherit_graph_154.md5 create mode 100644 master/inherit_graph_154.png create mode 100644 master/inherit_graph_155.map create mode 100644 master/inherit_graph_155.md5 create mode 100644 master/inherit_graph_155.png create mode 100644 master/inherit_graph_156.map create mode 100644 master/inherit_graph_156.md5 create mode 100644 master/inherit_graph_156.png create mode 100644 master/inherit_graph_157.map create mode 100644 master/inherit_graph_157.md5 create mode 100644 master/inherit_graph_157.png create mode 100644 master/inherit_graph_158.map create mode 100644 master/inherit_graph_158.md5 create mode 100644 master/inherit_graph_158.png create mode 100644 master/inherit_graph_159.map create mode 100644 master/inherit_graph_159.md5 create mode 100644 master/inherit_graph_159.png create mode 100644 master/inherit_graph_16.map create mode 100644 master/inherit_graph_16.md5 create mode 100644 master/inherit_graph_16.png create mode 100644 master/inherit_graph_160.map create mode 100644 master/inherit_graph_160.md5 create mode 100644 master/inherit_graph_160.png create mode 100644 master/inherit_graph_161.map create mode 100644 master/inherit_graph_161.md5 create mode 100644 master/inherit_graph_161.png create mode 100644 master/inherit_graph_162.map create mode 100644 master/inherit_graph_162.md5 create mode 100644 master/inherit_graph_162.png create mode 100644 master/inherit_graph_163.map create mode 100644 master/inherit_graph_163.md5 create mode 100644 master/inherit_graph_163.png create mode 100644 master/inherit_graph_164.map create mode 100644 master/inherit_graph_164.md5 create mode 100644 master/inherit_graph_164.png create mode 100644 master/inherit_graph_165.map create mode 100644 master/inherit_graph_165.md5 create mode 100644 master/inherit_graph_165.png create mode 100644 master/inherit_graph_166.map create mode 100644 master/inherit_graph_166.md5 create mode 100644 master/inherit_graph_166.png create mode 100644 master/inherit_graph_167.map create mode 100644 master/inherit_graph_167.md5 create mode 100644 master/inherit_graph_167.png create mode 100644 master/inherit_graph_168.map create mode 100644 master/inherit_graph_168.md5 create mode 100644 master/inherit_graph_168.png create mode 100644 master/inherit_graph_169.map create mode 100644 master/inherit_graph_169.md5 create mode 100644 master/inherit_graph_169.png create mode 100644 master/inherit_graph_17.map create mode 100644 master/inherit_graph_17.md5 create mode 100644 master/inherit_graph_17.png create mode 100644 master/inherit_graph_170.map create mode 100644 master/inherit_graph_170.md5 create mode 100644 master/inherit_graph_170.png create mode 100644 master/inherit_graph_171.map create mode 100644 master/inherit_graph_171.md5 create mode 100644 master/inherit_graph_171.png create mode 100644 master/inherit_graph_172.map create mode 100644 master/inherit_graph_172.md5 create mode 100644 master/inherit_graph_172.png create mode 100644 master/inherit_graph_173.map create mode 100644 master/inherit_graph_173.md5 create mode 100644 master/inherit_graph_173.png create mode 100644 master/inherit_graph_174.map create mode 100644 master/inherit_graph_174.md5 create mode 100644 master/inherit_graph_174.png create mode 100644 master/inherit_graph_175.map create mode 100644 master/inherit_graph_175.md5 create mode 100644 master/inherit_graph_175.png create mode 100644 master/inherit_graph_176.map create mode 100644 master/inherit_graph_176.md5 create mode 100644 master/inherit_graph_176.png create mode 100644 master/inherit_graph_177.map create mode 100644 master/inherit_graph_177.md5 create mode 100644 master/inherit_graph_177.png create mode 100644 master/inherit_graph_178.map create mode 100644 master/inherit_graph_178.md5 create mode 100644 master/inherit_graph_178.png create mode 100644 master/inherit_graph_179.map create mode 100644 master/inherit_graph_179.md5 create mode 100644 master/inherit_graph_179.png create mode 100644 master/inherit_graph_18.map create mode 100644 master/inherit_graph_18.md5 create mode 100644 master/inherit_graph_18.png create mode 100644 master/inherit_graph_180.map create mode 100644 master/inherit_graph_180.md5 create mode 100644 master/inherit_graph_180.png create mode 100644 master/inherit_graph_181.map create mode 100644 master/inherit_graph_181.md5 create mode 100644 master/inherit_graph_181.png create mode 100644 master/inherit_graph_182.map create mode 100644 master/inherit_graph_182.md5 create mode 100644 master/inherit_graph_182.png create mode 100644 master/inherit_graph_183.map create mode 100644 master/inherit_graph_183.md5 create mode 100644 master/inherit_graph_183.png create mode 100644 master/inherit_graph_184.map create mode 100644 master/inherit_graph_184.md5 create mode 100644 master/inherit_graph_184.png create mode 100644 master/inherit_graph_185.map create mode 100644 master/inherit_graph_185.md5 create mode 100644 master/inherit_graph_185.png create mode 100644 master/inherit_graph_186.map create mode 100644 master/inherit_graph_186.md5 create mode 100644 master/inherit_graph_186.png create mode 100644 master/inherit_graph_187.map create mode 100644 master/inherit_graph_187.md5 create mode 100644 master/inherit_graph_187.png create mode 100644 master/inherit_graph_188.map create mode 100644 master/inherit_graph_188.md5 create mode 100644 master/inherit_graph_188.png create mode 100644 master/inherit_graph_189.map create mode 100644 master/inherit_graph_189.md5 create mode 100644 master/inherit_graph_189.png create mode 100644 master/inherit_graph_19.map create mode 100644 master/inherit_graph_19.md5 create mode 100644 master/inherit_graph_19.png create mode 100644 master/inherit_graph_190.map create mode 100644 master/inherit_graph_190.md5 create mode 100644 master/inherit_graph_190.png create mode 100644 master/inherit_graph_191.map create mode 100644 master/inherit_graph_191.md5 create mode 100644 master/inherit_graph_191.png create mode 100644 master/inherit_graph_192.map create mode 100644 master/inherit_graph_192.md5 create mode 100644 master/inherit_graph_192.png create mode 100644 master/inherit_graph_193.map create mode 100644 master/inherit_graph_193.md5 create mode 100644 master/inherit_graph_193.png create mode 100644 master/inherit_graph_194.map create mode 100644 master/inherit_graph_194.md5 create mode 100644 master/inherit_graph_194.png create mode 100644 master/inherit_graph_195.map create mode 100644 master/inherit_graph_195.md5 create mode 100644 master/inherit_graph_195.png create mode 100644 master/inherit_graph_196.map create mode 100644 master/inherit_graph_196.md5 create mode 100644 master/inherit_graph_196.png create mode 100644 master/inherit_graph_197.map create mode 100644 master/inherit_graph_197.md5 create mode 100644 master/inherit_graph_197.png create mode 100644 master/inherit_graph_198.map create mode 100644 master/inherit_graph_198.md5 create mode 100644 master/inherit_graph_198.png create mode 100644 master/inherit_graph_199.map create mode 100644 master/inherit_graph_199.md5 create mode 100644 master/inherit_graph_199.png create mode 100644 master/inherit_graph_2.map create mode 100644 master/inherit_graph_2.md5 create mode 100644 master/inherit_graph_2.png create mode 100644 master/inherit_graph_20.map create mode 100644 master/inherit_graph_20.md5 create mode 100644 master/inherit_graph_20.png create mode 100644 master/inherit_graph_200.map create mode 100644 master/inherit_graph_200.md5 create mode 100644 master/inherit_graph_200.png create mode 100644 master/inherit_graph_201.map create mode 100644 master/inherit_graph_201.md5 create mode 100644 master/inherit_graph_201.png create mode 100644 master/inherit_graph_202.map create mode 100644 master/inherit_graph_202.md5 create mode 100644 master/inherit_graph_202.png create mode 100644 master/inherit_graph_203.map create mode 100644 master/inherit_graph_203.md5 create mode 100644 master/inherit_graph_203.png create mode 100644 master/inherit_graph_204.map create mode 100644 master/inherit_graph_204.md5 create mode 100644 master/inherit_graph_204.png create mode 100644 master/inherit_graph_205.map create mode 100644 master/inherit_graph_205.md5 create mode 100644 master/inherit_graph_205.png create mode 100644 master/inherit_graph_206.map create mode 100644 master/inherit_graph_206.md5 create mode 100644 master/inherit_graph_206.png create mode 100644 master/inherit_graph_207.map create mode 100644 master/inherit_graph_207.md5 create mode 100644 master/inherit_graph_207.png create mode 100644 master/inherit_graph_208.map create mode 100644 master/inherit_graph_208.md5 create mode 100644 master/inherit_graph_208.png create mode 100644 master/inherit_graph_209.map create mode 100644 master/inherit_graph_209.md5 create mode 100644 master/inherit_graph_209.png create mode 100644 master/inherit_graph_21.map create mode 100644 master/inherit_graph_21.md5 create mode 100644 master/inherit_graph_21.png create mode 100644 master/inherit_graph_210.map create mode 100644 master/inherit_graph_210.md5 create mode 100644 master/inherit_graph_210.png create mode 100644 master/inherit_graph_211.map create mode 100644 master/inherit_graph_211.md5 create mode 100644 master/inherit_graph_211.png create mode 100644 master/inherit_graph_212.map create mode 100644 master/inherit_graph_212.md5 create mode 100644 master/inherit_graph_212.png create mode 100644 master/inherit_graph_213.map create mode 100644 master/inherit_graph_213.md5 create mode 100644 master/inherit_graph_213.png create mode 100644 master/inherit_graph_214.map create mode 100644 master/inherit_graph_214.md5 create mode 100644 master/inherit_graph_214.png create mode 100644 master/inherit_graph_215.map create mode 100644 master/inherit_graph_215.md5 create mode 100644 master/inherit_graph_215.png create mode 100644 master/inherit_graph_216.map create mode 100644 master/inherit_graph_216.md5 create mode 100644 master/inherit_graph_216.png create mode 100644 master/inherit_graph_217.map create mode 100644 master/inherit_graph_217.md5 create mode 100644 master/inherit_graph_217.png create mode 100644 master/inherit_graph_218.map create mode 100644 master/inherit_graph_218.md5 create mode 100644 master/inherit_graph_218.png create mode 100644 master/inherit_graph_219.map create mode 100644 master/inherit_graph_219.md5 create mode 100644 master/inherit_graph_219.png create mode 100644 master/inherit_graph_22.map create mode 100644 master/inherit_graph_22.md5 create mode 100644 master/inherit_graph_22.png create mode 100644 master/inherit_graph_220.map create mode 100644 master/inherit_graph_220.md5 create mode 100644 master/inherit_graph_220.png create mode 100644 master/inherit_graph_221.map create mode 100644 master/inherit_graph_221.md5 create mode 100644 master/inherit_graph_221.png create mode 100644 master/inherit_graph_222.map create mode 100644 master/inherit_graph_222.md5 create mode 100644 master/inherit_graph_222.png create mode 100644 master/inherit_graph_223.map create mode 100644 master/inherit_graph_223.md5 create mode 100644 master/inherit_graph_223.png create mode 100644 master/inherit_graph_224.map create mode 100644 master/inherit_graph_224.md5 create mode 100644 master/inherit_graph_224.png create mode 100644 master/inherit_graph_225.map create mode 100644 master/inherit_graph_225.md5 create mode 100644 master/inherit_graph_225.png create mode 100644 master/inherit_graph_226.map create mode 100644 master/inherit_graph_226.md5 create mode 100644 master/inherit_graph_226.png create mode 100644 master/inherit_graph_227.map create mode 100644 master/inherit_graph_227.md5 create mode 100644 master/inherit_graph_227.png create mode 100644 master/inherit_graph_228.map create mode 100644 master/inherit_graph_228.md5 create mode 100644 master/inherit_graph_228.png create mode 100644 master/inherit_graph_229.map create mode 100644 master/inherit_graph_229.md5 create mode 100644 master/inherit_graph_229.png create mode 100644 master/inherit_graph_23.map create mode 100644 master/inherit_graph_23.md5 create mode 100644 master/inherit_graph_23.png create mode 100644 master/inherit_graph_230.map create mode 100644 master/inherit_graph_230.md5 create mode 100644 master/inherit_graph_230.png create mode 100644 master/inherit_graph_231.map create mode 100644 master/inherit_graph_231.md5 create mode 100644 master/inherit_graph_231.png create mode 100644 master/inherit_graph_232.map create mode 100644 master/inherit_graph_232.md5 create mode 100644 master/inherit_graph_232.png create mode 100644 master/inherit_graph_233.map create mode 100644 master/inherit_graph_233.md5 create mode 100644 master/inherit_graph_233.png create mode 100644 master/inherit_graph_234.map create mode 100644 master/inherit_graph_234.md5 create mode 100644 master/inherit_graph_234.png create mode 100644 master/inherit_graph_235.map create mode 100644 master/inherit_graph_235.md5 create mode 100644 master/inherit_graph_235.png create mode 100644 master/inherit_graph_236.map create mode 100644 master/inherit_graph_236.md5 create mode 100644 master/inherit_graph_236.png create mode 100644 master/inherit_graph_237.map create mode 100644 master/inherit_graph_237.md5 create mode 100644 master/inherit_graph_237.png create mode 100644 master/inherit_graph_238.map create mode 100644 master/inherit_graph_238.md5 create mode 100644 master/inherit_graph_238.png create mode 100644 master/inherit_graph_239.map create mode 100644 master/inherit_graph_239.md5 create mode 100644 master/inherit_graph_239.png create mode 100644 master/inherit_graph_24.map create mode 100644 master/inherit_graph_24.md5 create mode 100644 master/inherit_graph_24.png create mode 100644 master/inherit_graph_240.map create mode 100644 master/inherit_graph_240.md5 create mode 100644 master/inherit_graph_240.png create mode 100644 master/inherit_graph_241.map create mode 100644 master/inherit_graph_241.md5 create mode 100644 master/inherit_graph_241.png create mode 100644 master/inherit_graph_242.map create mode 100644 master/inherit_graph_242.md5 create mode 100644 master/inherit_graph_242.png create mode 100644 master/inherit_graph_243.map create mode 100644 master/inherit_graph_243.md5 create mode 100644 master/inherit_graph_243.png create mode 100644 master/inherit_graph_244.map create mode 100644 master/inherit_graph_244.md5 create mode 100644 master/inherit_graph_244.png create mode 100644 master/inherit_graph_245.map create mode 100644 master/inherit_graph_245.md5 create mode 100644 master/inherit_graph_245.png create mode 100644 master/inherit_graph_246.map create mode 100644 master/inherit_graph_246.md5 create mode 100644 master/inherit_graph_246.png create mode 100644 master/inherit_graph_247.map create mode 100644 master/inherit_graph_247.md5 create mode 100644 master/inherit_graph_247.png create mode 100644 master/inherit_graph_248.map create mode 100644 master/inherit_graph_248.md5 create mode 100644 master/inherit_graph_248.png create mode 100644 master/inherit_graph_249.map create mode 100644 master/inherit_graph_249.md5 create mode 100644 master/inherit_graph_249.png create mode 100644 master/inherit_graph_25.map create mode 100644 master/inherit_graph_25.md5 create mode 100644 master/inherit_graph_25.png create mode 100644 master/inherit_graph_250.map create mode 100644 master/inherit_graph_250.md5 create mode 100644 master/inherit_graph_250.png create mode 100644 master/inherit_graph_251.map create mode 100644 master/inherit_graph_251.md5 create mode 100644 master/inherit_graph_251.png create mode 100644 master/inherit_graph_252.map create mode 100644 master/inherit_graph_252.md5 create mode 100644 master/inherit_graph_252.png create mode 100644 master/inherit_graph_253.map create mode 100644 master/inherit_graph_253.md5 create mode 100644 master/inherit_graph_253.png create mode 100644 master/inherit_graph_254.map create mode 100644 master/inherit_graph_254.md5 create mode 100644 master/inherit_graph_254.png create mode 100644 master/inherit_graph_255.map create mode 100644 master/inherit_graph_255.md5 create mode 100644 master/inherit_graph_255.png create mode 100644 master/inherit_graph_256.map create mode 100644 master/inherit_graph_256.md5 create mode 100644 master/inherit_graph_256.png create mode 100644 master/inherit_graph_257.map create mode 100644 master/inherit_graph_257.md5 create mode 100644 master/inherit_graph_257.png create mode 100644 master/inherit_graph_258.map create mode 100644 master/inherit_graph_258.md5 create mode 100644 master/inherit_graph_258.png create mode 100644 master/inherit_graph_259.map create mode 100644 master/inherit_graph_259.md5 create mode 100644 master/inherit_graph_259.png create mode 100644 master/inherit_graph_26.map create mode 100644 master/inherit_graph_26.md5 create mode 100644 master/inherit_graph_26.png create mode 100644 master/inherit_graph_260.map create mode 100644 master/inherit_graph_260.md5 create mode 100644 master/inherit_graph_260.png create mode 100644 master/inherit_graph_261.map create mode 100644 master/inherit_graph_261.md5 create mode 100644 master/inherit_graph_261.png create mode 100644 master/inherit_graph_262.map create mode 100644 master/inherit_graph_262.md5 create mode 100644 master/inherit_graph_262.png create mode 100644 master/inherit_graph_263.map create mode 100644 master/inherit_graph_263.md5 create mode 100644 master/inherit_graph_263.png create mode 100644 master/inherit_graph_264.map create mode 100644 master/inherit_graph_264.md5 create mode 100644 master/inherit_graph_264.png create mode 100644 master/inherit_graph_265.map create mode 100644 master/inherit_graph_265.md5 create mode 100644 master/inherit_graph_265.png create mode 100644 master/inherit_graph_266.map create mode 100644 master/inherit_graph_266.md5 create mode 100644 master/inherit_graph_266.png create mode 100644 master/inherit_graph_267.map create mode 100644 master/inherit_graph_267.md5 create mode 100644 master/inherit_graph_267.png create mode 100644 master/inherit_graph_268.map create mode 100644 master/inherit_graph_268.md5 create mode 100644 master/inherit_graph_268.png create mode 100644 master/inherit_graph_269.map create mode 100644 master/inherit_graph_269.md5 create mode 100644 master/inherit_graph_269.png create mode 100644 master/inherit_graph_27.map create mode 100644 master/inherit_graph_27.md5 create mode 100644 master/inherit_graph_27.png create mode 100644 master/inherit_graph_270.map create mode 100644 master/inherit_graph_270.md5 create mode 100644 master/inherit_graph_270.png create mode 100644 master/inherit_graph_271.map create mode 100644 master/inherit_graph_271.md5 create mode 100644 master/inherit_graph_271.png create mode 100644 master/inherit_graph_272.map create mode 100644 master/inherit_graph_272.md5 create mode 100644 master/inherit_graph_272.png create mode 100644 master/inherit_graph_273.map create mode 100644 master/inherit_graph_273.md5 create mode 100644 master/inherit_graph_273.png create mode 100644 master/inherit_graph_274.map create mode 100644 master/inherit_graph_274.md5 create mode 100644 master/inherit_graph_274.png create mode 100644 master/inherit_graph_275.map create mode 100644 master/inherit_graph_275.md5 create mode 100644 master/inherit_graph_275.png create mode 100644 master/inherit_graph_276.map create mode 100644 master/inherit_graph_276.md5 create mode 100644 master/inherit_graph_276.png create mode 100644 master/inherit_graph_277.map create mode 100644 master/inherit_graph_277.md5 create mode 100644 master/inherit_graph_277.png create mode 100644 master/inherit_graph_278.map create mode 100644 master/inherit_graph_278.md5 create mode 100644 master/inherit_graph_278.png create mode 100644 master/inherit_graph_279.map create mode 100644 master/inherit_graph_279.md5 create mode 100644 master/inherit_graph_279.png create mode 100644 master/inherit_graph_28.map create mode 100644 master/inherit_graph_28.md5 create mode 100644 master/inherit_graph_28.png create mode 100644 master/inherit_graph_280.map create mode 100644 master/inherit_graph_280.md5 create mode 100644 master/inherit_graph_280.png create mode 100644 master/inherit_graph_281.map create mode 100644 master/inherit_graph_281.md5 create mode 100644 master/inherit_graph_281.png create mode 100644 master/inherit_graph_282.map create mode 100644 master/inherit_graph_282.md5 create mode 100644 master/inherit_graph_282.png create mode 100644 master/inherit_graph_283.map create mode 100644 master/inherit_graph_283.md5 create mode 100644 master/inherit_graph_283.png create mode 100644 master/inherit_graph_284.map create mode 100644 master/inherit_graph_284.md5 create mode 100644 master/inherit_graph_284.png create mode 100644 master/inherit_graph_285.map create mode 100644 master/inherit_graph_285.md5 create mode 100644 master/inherit_graph_285.png create mode 100644 master/inherit_graph_286.map create mode 100644 master/inherit_graph_286.md5 create mode 100644 master/inherit_graph_286.png create mode 100644 master/inherit_graph_287.map create mode 100644 master/inherit_graph_287.md5 create mode 100644 master/inherit_graph_287.png create mode 100644 master/inherit_graph_288.map create mode 100644 master/inherit_graph_288.md5 create mode 100644 master/inherit_graph_288.png create mode 100644 master/inherit_graph_289.map create mode 100644 master/inherit_graph_289.md5 create mode 100644 master/inherit_graph_289.png create mode 100644 master/inherit_graph_29.map create mode 100644 master/inherit_graph_29.md5 create mode 100644 master/inherit_graph_29.png create mode 100644 master/inherit_graph_290.map create mode 100644 master/inherit_graph_290.md5 create mode 100644 master/inherit_graph_290.png create mode 100644 master/inherit_graph_291.map create mode 100644 master/inherit_graph_291.md5 create mode 100644 master/inherit_graph_291.png create mode 100644 master/inherit_graph_292.map create mode 100644 master/inherit_graph_292.md5 create mode 100644 master/inherit_graph_292.png create mode 100644 master/inherit_graph_293.map create mode 100644 master/inherit_graph_293.md5 create mode 100644 master/inherit_graph_293.png create mode 100644 master/inherit_graph_294.map create mode 100644 master/inherit_graph_294.md5 create mode 100644 master/inherit_graph_294.png create mode 100644 master/inherit_graph_295.map create mode 100644 master/inherit_graph_295.md5 create mode 100644 master/inherit_graph_295.png create mode 100644 master/inherit_graph_296.map create mode 100644 master/inherit_graph_296.md5 create mode 100644 master/inherit_graph_296.png create mode 100644 master/inherit_graph_297.map create mode 100644 master/inherit_graph_297.md5 create mode 100644 master/inherit_graph_297.png create mode 100644 master/inherit_graph_298.map create mode 100644 master/inherit_graph_298.md5 create mode 100644 master/inherit_graph_298.png create mode 100644 master/inherit_graph_299.map create mode 100644 master/inherit_graph_299.md5 create mode 100644 master/inherit_graph_299.png create mode 100644 master/inherit_graph_3.map create mode 100644 master/inherit_graph_3.md5 create mode 100644 master/inherit_graph_3.png create mode 100644 master/inherit_graph_30.map create mode 100644 master/inherit_graph_30.md5 create mode 100644 master/inherit_graph_30.png create mode 100644 master/inherit_graph_300.map create mode 100644 master/inherit_graph_300.md5 create mode 100644 master/inherit_graph_300.png create mode 100644 master/inherit_graph_301.map create mode 100644 master/inherit_graph_301.md5 create mode 100644 master/inherit_graph_301.png create mode 100644 master/inherit_graph_302.map create mode 100644 master/inherit_graph_302.md5 create mode 100644 master/inherit_graph_302.png create mode 100644 master/inherit_graph_303.map create mode 100644 master/inherit_graph_303.md5 create mode 100644 master/inherit_graph_303.png create mode 100644 master/inherit_graph_304.map create mode 100644 master/inherit_graph_304.md5 create mode 100644 master/inherit_graph_304.png create mode 100644 master/inherit_graph_305.map create mode 100644 master/inherit_graph_305.md5 create mode 100644 master/inherit_graph_305.png create mode 100644 master/inherit_graph_306.map create mode 100644 master/inherit_graph_306.md5 create mode 100644 master/inherit_graph_306.png create mode 100644 master/inherit_graph_307.map create mode 100644 master/inherit_graph_307.md5 create mode 100644 master/inherit_graph_307.png create mode 100644 master/inherit_graph_308.map create mode 100644 master/inherit_graph_308.md5 create mode 100644 master/inherit_graph_308.png create mode 100644 master/inherit_graph_309.map create mode 100644 master/inherit_graph_309.md5 create mode 100644 master/inherit_graph_309.png create mode 100644 master/inherit_graph_31.map create mode 100644 master/inherit_graph_31.md5 create mode 100644 master/inherit_graph_31.png create mode 100644 master/inherit_graph_310.map create mode 100644 master/inherit_graph_310.md5 create mode 100644 master/inherit_graph_310.png create mode 100644 master/inherit_graph_311.map create mode 100644 master/inherit_graph_311.md5 create mode 100644 master/inherit_graph_311.png create mode 100644 master/inherit_graph_312.map create mode 100644 master/inherit_graph_312.md5 create mode 100644 master/inherit_graph_312.png create mode 100644 master/inherit_graph_313.map create mode 100644 master/inherit_graph_313.md5 create mode 100644 master/inherit_graph_313.png create mode 100644 master/inherit_graph_32.map create mode 100644 master/inherit_graph_32.md5 create mode 100644 master/inherit_graph_32.png create mode 100644 master/inherit_graph_33.map create mode 100644 master/inherit_graph_33.md5 create mode 100644 master/inherit_graph_33.png create mode 100644 master/inherit_graph_34.map create mode 100644 master/inherit_graph_34.md5 create mode 100644 master/inherit_graph_34.png create mode 100644 master/inherit_graph_35.map create mode 100644 master/inherit_graph_35.md5 create mode 100644 master/inherit_graph_35.png create mode 100644 master/inherit_graph_36.map create mode 100644 master/inherit_graph_36.md5 create mode 100644 master/inherit_graph_36.png create mode 100644 master/inherit_graph_37.map create mode 100644 master/inherit_graph_37.md5 create mode 100644 master/inherit_graph_37.png create mode 100644 master/inherit_graph_38.map create mode 100644 master/inherit_graph_38.md5 create mode 100644 master/inherit_graph_38.png create mode 100644 master/inherit_graph_39.map create mode 100644 master/inherit_graph_39.md5 create mode 100644 master/inherit_graph_39.png create mode 100644 master/inherit_graph_4.map create mode 100644 master/inherit_graph_4.md5 create mode 100644 master/inherit_graph_4.png create mode 100644 master/inherit_graph_40.map create mode 100644 master/inherit_graph_40.md5 create mode 100644 master/inherit_graph_40.png create mode 100644 master/inherit_graph_41.map create mode 100644 master/inherit_graph_41.md5 create mode 100644 master/inherit_graph_41.png create mode 100644 master/inherit_graph_42.map create mode 100644 master/inherit_graph_42.md5 create mode 100644 master/inherit_graph_42.png create mode 100644 master/inherit_graph_43.map create mode 100644 master/inherit_graph_43.md5 create mode 100644 master/inherit_graph_43.png create mode 100644 master/inherit_graph_44.map create mode 100644 master/inherit_graph_44.md5 create mode 100644 master/inherit_graph_44.png create mode 100644 master/inherit_graph_45.map create mode 100644 master/inherit_graph_45.md5 create mode 100644 master/inherit_graph_45.png create mode 100644 master/inherit_graph_46.map create mode 100644 master/inherit_graph_46.md5 create mode 100644 master/inherit_graph_46.png create mode 100644 master/inherit_graph_47.map create mode 100644 master/inherit_graph_47.md5 create mode 100644 master/inherit_graph_47.png create mode 100644 master/inherit_graph_48.map create mode 100644 master/inherit_graph_48.md5 create mode 100644 master/inherit_graph_48.png create mode 100644 master/inherit_graph_49.map create mode 100644 master/inherit_graph_49.md5 create mode 100644 master/inherit_graph_49.png create mode 100644 master/inherit_graph_5.map create mode 100644 master/inherit_graph_5.md5 create mode 100644 master/inherit_graph_5.png create mode 100644 master/inherit_graph_50.map create mode 100644 master/inherit_graph_50.md5 create mode 100644 master/inherit_graph_50.png create mode 100644 master/inherit_graph_51.map create mode 100644 master/inherit_graph_51.md5 create mode 100644 master/inherit_graph_51.png create mode 100644 master/inherit_graph_52.map create mode 100644 master/inherit_graph_52.md5 create mode 100644 master/inherit_graph_52.png create mode 100644 master/inherit_graph_53.map create mode 100644 master/inherit_graph_53.md5 create mode 100644 master/inherit_graph_53.png create mode 100644 master/inherit_graph_54.map create mode 100644 master/inherit_graph_54.md5 create mode 100644 master/inherit_graph_54.png create mode 100644 master/inherit_graph_55.map create mode 100644 master/inherit_graph_55.md5 create mode 100644 master/inherit_graph_55.png create mode 100644 master/inherit_graph_56.map create mode 100644 master/inherit_graph_56.md5 create mode 100644 master/inherit_graph_56.png create mode 100644 master/inherit_graph_57.map create mode 100644 master/inherit_graph_57.md5 create mode 100644 master/inherit_graph_57.png create mode 100644 master/inherit_graph_58.map create mode 100644 master/inherit_graph_58.md5 create mode 100644 master/inherit_graph_58.png create mode 100644 master/inherit_graph_59.map create mode 100644 master/inherit_graph_59.md5 create mode 100644 master/inherit_graph_59.png create mode 100644 master/inherit_graph_6.map create mode 100644 master/inherit_graph_6.md5 create mode 100644 master/inherit_graph_6.png create mode 100644 master/inherit_graph_60.map create mode 100644 master/inherit_graph_60.md5 create mode 100644 master/inherit_graph_60.png create mode 100644 master/inherit_graph_61.map create mode 100644 master/inherit_graph_61.md5 create mode 100644 master/inherit_graph_61.png create mode 100644 master/inherit_graph_62.map create mode 100644 master/inherit_graph_62.md5 create mode 100644 master/inherit_graph_62.png create mode 100644 master/inherit_graph_63.map create mode 100644 master/inherit_graph_63.md5 create mode 100644 master/inherit_graph_63.png create mode 100644 master/inherit_graph_64.map create mode 100644 master/inherit_graph_64.md5 create mode 100644 master/inherit_graph_64.png create mode 100644 master/inherit_graph_65.map create mode 100644 master/inherit_graph_65.md5 create mode 100644 master/inherit_graph_65.png create mode 100644 master/inherit_graph_66.map create mode 100644 master/inherit_graph_66.md5 create mode 100644 master/inherit_graph_66.png create mode 100644 master/inherit_graph_67.map create mode 100644 master/inherit_graph_67.md5 create mode 100644 master/inherit_graph_67.png create mode 100644 master/inherit_graph_68.map create mode 100644 master/inherit_graph_68.md5 create mode 100644 master/inherit_graph_68.png create mode 100644 master/inherit_graph_69.map create mode 100644 master/inherit_graph_69.md5 create mode 100644 master/inherit_graph_69.png create mode 100644 master/inherit_graph_7.map create mode 100644 master/inherit_graph_7.md5 create mode 100644 master/inherit_graph_7.png create mode 100644 master/inherit_graph_70.map create mode 100644 master/inherit_graph_70.md5 create mode 100644 master/inherit_graph_70.png create mode 100644 master/inherit_graph_71.map create mode 100644 master/inherit_graph_71.md5 create mode 100644 master/inherit_graph_71.png create mode 100644 master/inherit_graph_72.map create mode 100644 master/inherit_graph_72.md5 create mode 100644 master/inherit_graph_72.png create mode 100644 master/inherit_graph_73.map create mode 100644 master/inherit_graph_73.md5 create mode 100644 master/inherit_graph_73.png create mode 100644 master/inherit_graph_74.map create mode 100644 master/inherit_graph_74.md5 create mode 100644 master/inherit_graph_74.png create mode 100644 master/inherit_graph_75.map create mode 100644 master/inherit_graph_75.md5 create mode 100644 master/inherit_graph_75.png create mode 100644 master/inherit_graph_76.map create mode 100644 master/inherit_graph_76.md5 create mode 100644 master/inherit_graph_76.png create mode 100644 master/inherit_graph_77.map create mode 100644 master/inherit_graph_77.md5 create mode 100644 master/inherit_graph_77.png create mode 100644 master/inherit_graph_78.map create mode 100644 master/inherit_graph_78.md5 create mode 100644 master/inherit_graph_78.png create mode 100644 master/inherit_graph_79.map create mode 100644 master/inherit_graph_79.md5 create mode 100644 master/inherit_graph_79.png create mode 100644 master/inherit_graph_8.map create mode 100644 master/inherit_graph_8.md5 create mode 100644 master/inherit_graph_8.png create mode 100644 master/inherit_graph_80.map create mode 100644 master/inherit_graph_80.md5 create mode 100644 master/inherit_graph_80.png create mode 100644 master/inherit_graph_81.map create mode 100644 master/inherit_graph_81.md5 create mode 100644 master/inherit_graph_81.png create mode 100644 master/inherit_graph_82.map create mode 100644 master/inherit_graph_82.md5 create mode 100644 master/inherit_graph_82.png create mode 100644 master/inherit_graph_83.map create mode 100644 master/inherit_graph_83.md5 create mode 100644 master/inherit_graph_83.png create mode 100644 master/inherit_graph_84.map create mode 100644 master/inherit_graph_84.md5 create mode 100644 master/inherit_graph_84.png create mode 100644 master/inherit_graph_85.map create mode 100644 master/inherit_graph_85.md5 create mode 100644 master/inherit_graph_85.png create mode 100644 master/inherit_graph_86.map create mode 100644 master/inherit_graph_86.md5 create mode 100644 master/inherit_graph_86.png create mode 100644 master/inherit_graph_87.map create mode 100644 master/inherit_graph_87.md5 create mode 100644 master/inherit_graph_87.png create mode 100644 master/inherit_graph_88.map create mode 100644 master/inherit_graph_88.md5 create mode 100644 master/inherit_graph_88.png create mode 100644 master/inherit_graph_89.map create mode 100644 master/inherit_graph_89.md5 create mode 100644 master/inherit_graph_89.png create mode 100644 master/inherit_graph_9.map create mode 100644 master/inherit_graph_9.md5 create mode 100644 master/inherit_graph_9.png create mode 100644 master/inherit_graph_90.map create mode 100644 master/inherit_graph_90.md5 create mode 100644 master/inherit_graph_90.png create mode 100644 master/inherit_graph_91.map create mode 100644 master/inherit_graph_91.md5 create mode 100644 master/inherit_graph_91.png create mode 100644 master/inherit_graph_92.map create mode 100644 master/inherit_graph_92.md5 create mode 100644 master/inherit_graph_92.png create mode 100644 master/inherit_graph_93.map create mode 100644 master/inherit_graph_93.md5 create mode 100644 master/inherit_graph_93.png create mode 100644 master/inherit_graph_94.map create mode 100644 master/inherit_graph_94.md5 create mode 100644 master/inherit_graph_94.png create mode 100644 master/inherit_graph_95.map create mode 100644 master/inherit_graph_95.md5 create mode 100644 master/inherit_graph_95.png create mode 100644 master/inherit_graph_96.map create mode 100644 master/inherit_graph_96.md5 create mode 100644 master/inherit_graph_96.png create mode 100644 master/inherit_graph_97.map create mode 100644 master/inherit_graph_97.md5 create mode 100644 master/inherit_graph_97.png create mode 100644 master/inherit_graph_98.map create mode 100644 master/inherit_graph_98.md5 create mode 100644 master/inherit_graph_98.png create mode 100644 master/inherit_graph_99.map create mode 100644 master/inherit_graph_99.md5 create mode 100644 master/inherit_graph_99.png create mode 100644 master/inherits.html create mode 100644 master/iterator_8h_source.html create mode 100644 master/jquery.js create mode 100644 master/menu.js create mode 100644 master/menudata.js create mode 100644 master/namespacencine_1_1_lua_types.html create mode 100644 master/namespacenctl_1_1_pointer_math.html create mode 100644 master/namespaces.html create mode 100644 master/nav_f.png create mode 100644 master/nav_g.png create mode 100644 master/nav_h.png create mode 100644 master/open.png create mode 100644 master/search/all_0.html create mode 100644 master/search/all_0.js create mode 100644 master/search/all_1.html create mode 100644 master/search/all_1.js create mode 100644 master/search/all_10.html create mode 100644 master/search/all_10.js create mode 100644 master/search/all_11.html create mode 100644 master/search/all_11.js create mode 100644 master/search/all_12.html create mode 100644 master/search/all_12.js create mode 100644 master/search/all_13.html create mode 100644 master/search/all_13.js create mode 100644 master/search/all_14.html create mode 100644 master/search/all_14.js create mode 100644 master/search/all_15.html create mode 100644 master/search/all_15.js create mode 100644 master/search/all_16.html create mode 100644 master/search/all_16.js create mode 100644 master/search/all_17.html create mode 100644 master/search/all_17.js create mode 100644 master/search/all_18.html create mode 100644 master/search/all_18.js create mode 100644 master/search/all_19.html create mode 100644 master/search/all_19.js create mode 100644 master/search/all_1a.html create mode 100644 master/search/all_1a.js create mode 100644 master/search/all_2.html create mode 100644 master/search/all_2.js create mode 100644 master/search/all_3.html create mode 100644 master/search/all_3.js create mode 100644 master/search/all_4.html create mode 100644 master/search/all_4.js create mode 100644 master/search/all_5.html create mode 100644 master/search/all_5.js create mode 100644 master/search/all_6.html create mode 100644 master/search/all_6.js create mode 100644 master/search/all_7.html create mode 100644 master/search/all_7.js create mode 100644 master/search/all_8.html create mode 100644 master/search/all_8.js create mode 100644 master/search/all_9.html create mode 100644 master/search/all_9.js create mode 100644 master/search/all_a.html create mode 100644 master/search/all_a.js create mode 100644 master/search/all_b.html create mode 100644 master/search/all_b.js create mode 100644 master/search/all_c.html create mode 100644 master/search/all_c.js create mode 100644 master/search/all_d.html create mode 100644 master/search/all_d.js create mode 100644 master/search/all_e.html create mode 100644 master/search/all_e.js create mode 100644 master/search/all_f.html create mode 100644 master/search/all_f.js create mode 100644 master/search/classes_0.html create mode 100644 master/search/classes_0.js create mode 100644 master/search/classes_1.html create mode 100644 master/search/classes_1.js create mode 100644 master/search/classes_10.html create mode 100644 master/search/classes_10.js create mode 100644 master/search/classes_11.html create mode 100644 master/search/classes_11.js create mode 100644 master/search/classes_12.html create mode 100644 master/search/classes_12.js create mode 100644 master/search/classes_13.html create mode 100644 master/search/classes_13.js create mode 100644 master/search/classes_14.html create mode 100644 master/search/classes_14.js create mode 100644 master/search/classes_15.html create mode 100644 master/search/classes_15.js create mode 100644 master/search/classes_16.html create mode 100644 master/search/classes_16.js create mode 100644 master/search/classes_2.html create mode 100644 master/search/classes_2.js create mode 100644 master/search/classes_3.html create mode 100644 master/search/classes_3.js create mode 100644 master/search/classes_4.html create mode 100644 master/search/classes_4.js create mode 100644 master/search/classes_5.html create mode 100644 master/search/classes_5.js create mode 100644 master/search/classes_6.html create mode 100644 master/search/classes_6.js create mode 100644 master/search/classes_7.html create mode 100644 master/search/classes_7.js create mode 100644 master/search/classes_8.html create mode 100644 master/search/classes_8.js create mode 100644 master/search/classes_9.html create mode 100644 master/search/classes_9.js create mode 100644 master/search/classes_a.html create mode 100644 master/search/classes_a.js create mode 100644 master/search/classes_b.html create mode 100644 master/search/classes_b.js create mode 100644 master/search/classes_c.html create mode 100644 master/search/classes_c.js create mode 100644 master/search/classes_d.html create mode 100644 master/search/classes_d.js create mode 100644 master/search/classes_e.html create mode 100644 master/search/classes_e.js create mode 100644 master/search/classes_f.html create mode 100644 master/search/classes_f.js create mode 100644 master/search/close.svg create mode 100644 master/search/enums_0.html create mode 100644 master/search/enums_0.js create mode 100644 master/search/enums_1.html create mode 100644 master/search/enums_1.js create mode 100644 master/search/enums_2.html create mode 100644 master/search/enums_2.js create mode 100644 master/search/enums_3.html create mode 100644 master/search/enums_3.js create mode 100644 master/search/enums_4.html create mode 100644 master/search/enums_4.js create mode 100644 master/search/enums_5.html create mode 100644 master/search/enums_5.js create mode 100644 master/search/enums_6.html create mode 100644 master/search/enums_6.js create mode 100644 master/search/enums_7.html create mode 100644 master/search/enums_7.js create mode 100644 master/search/enums_8.html create mode 100644 master/search/enums_8.js create mode 100644 master/search/enums_9.html create mode 100644 master/search/enums_9.js create mode 100644 master/search/enums_a.html create mode 100644 master/search/enums_a.js create mode 100644 master/search/enums_b.html create mode 100644 master/search/enums_b.js create mode 100644 master/search/enums_c.html create mode 100644 master/search/enums_c.js create mode 100644 master/search/enums_d.html create mode 100644 master/search/enums_d.js create mode 100644 master/search/enumvalues_0.html create mode 100644 master/search/enumvalues_0.js create mode 100644 master/search/enumvalues_1.html create mode 100644 master/search/enumvalues_1.js create mode 100644 master/search/enumvalues_2.html create mode 100644 master/search/enumvalues_2.js create mode 100644 master/search/enumvalues_3.html create mode 100644 master/search/enumvalues_3.js create mode 100644 master/search/enumvalues_4.html create mode 100644 master/search/enumvalues_4.js create mode 100644 master/search/enumvalues_5.html create mode 100644 master/search/enumvalues_5.js create mode 100644 master/search/enumvalues_6.html create mode 100644 master/search/enumvalues_6.js create mode 100644 master/search/enumvalues_7.html create mode 100644 master/search/enumvalues_7.js create mode 100644 master/search/enumvalues_8.html create mode 100644 master/search/enumvalues_8.js create mode 100644 master/search/enumvalues_9.html create mode 100644 master/search/enumvalues_9.js create mode 100644 master/search/enumvalues_a.html create mode 100644 master/search/enumvalues_a.js create mode 100644 master/search/enumvalues_b.html create mode 100644 master/search/enumvalues_b.js create mode 100644 master/search/enumvalues_c.html create mode 100644 master/search/enumvalues_c.js create mode 100644 master/search/enumvalues_d.html create mode 100644 master/search/enumvalues_d.js create mode 100644 master/search/functions_0.html create mode 100644 master/search/functions_0.js create mode 100644 master/search/functions_1.html create mode 100644 master/search/functions_1.js create mode 100644 master/search/functions_10.html create mode 100644 master/search/functions_10.js create mode 100644 master/search/functions_11.html create mode 100644 master/search/functions_11.js create mode 100644 master/search/functions_12.html create mode 100644 master/search/functions_12.js create mode 100644 master/search/functions_13.html create mode 100644 master/search/functions_13.js create mode 100644 master/search/functions_14.html create mode 100644 master/search/functions_14.js create mode 100644 master/search/functions_15.html create mode 100644 master/search/functions_15.js create mode 100644 master/search/functions_16.html create mode 100644 master/search/functions_16.js create mode 100644 master/search/functions_17.html create mode 100644 master/search/functions_17.js create mode 100644 master/search/functions_2.html create mode 100644 master/search/functions_2.js create mode 100644 master/search/functions_3.html create mode 100644 master/search/functions_3.js create mode 100644 master/search/functions_4.html create mode 100644 master/search/functions_4.js create mode 100644 master/search/functions_5.html create mode 100644 master/search/functions_5.js create mode 100644 master/search/functions_6.html create mode 100644 master/search/functions_6.js create mode 100644 master/search/functions_7.html create mode 100644 master/search/functions_7.js create mode 100644 master/search/functions_8.html create mode 100644 master/search/functions_8.js create mode 100644 master/search/functions_9.html create mode 100644 master/search/functions_9.js create mode 100644 master/search/functions_a.html create mode 100644 master/search/functions_a.js create mode 100644 master/search/functions_b.html create mode 100644 master/search/functions_b.js create mode 100644 master/search/functions_c.html create mode 100644 master/search/functions_c.js create mode 100644 master/search/functions_d.html create mode 100644 master/search/functions_d.js create mode 100644 master/search/functions_e.html create mode 100644 master/search/functions_e.js create mode 100644 master/search/functions_f.html create mode 100644 master/search/functions_f.js create mode 100644 master/search/mag_sel.svg create mode 100644 master/search/namespaces_0.html create mode 100644 master/search/namespaces_0.js create mode 100644 master/search/nomatches.html create mode 100644 master/search/related_0.html create mode 100644 master/search/related_0.js create mode 100644 master/search/related_1.html create mode 100644 master/search/related_1.js create mode 100644 master/search/related_2.html create mode 100644 master/search/related_2.js create mode 100644 master/search/related_3.html create mode 100644 master/search/related_3.js create mode 100644 master/search/related_4.html create mode 100644 master/search/related_4.js create mode 100644 master/search/related_5.html create mode 100644 master/search/related_5.js create mode 100644 master/search/search.css create mode 100644 master/search/search.js create mode 100644 master/search/search_l.png create mode 100644 master/search/search_m.png create mode 100644 master/search/search_r.png create mode 100644 master/search/searchdata.js create mode 100644 master/search/typedefs_0.html create mode 100644 master/search/typedefs_0.js create mode 100644 master/search/typedefs_1.html create mode 100644 master/search/typedefs_1.js create mode 100644 master/search/typedefs_2.html create mode 100644 master/search/typedefs_2.js create mode 100644 master/search/typedefs_3.html create mode 100644 master/search/typedefs_3.js create mode 100644 master/search/typedefs_4.html create mode 100644 master/search/typedefs_4.js create mode 100644 master/search/variables_0.html create mode 100644 master/search/variables_0.js create mode 100644 master/search/variables_1.html create mode 100644 master/search/variables_1.js create mode 100644 master/search/variables_10.html create mode 100644 master/search/variables_10.js create mode 100644 master/search/variables_11.html create mode 100644 master/search/variables_11.js create mode 100644 master/search/variables_12.html create mode 100644 master/search/variables_12.js create mode 100644 master/search/variables_13.html create mode 100644 master/search/variables_13.js create mode 100644 master/search/variables_14.html create mode 100644 master/search/variables_14.js create mode 100644 master/search/variables_15.html create mode 100644 master/search/variables_15.js create mode 100644 master/search/variables_16.html create mode 100644 master/search/variables_16.js create mode 100644 master/search/variables_17.html create mode 100644 master/search/variables_17.js create mode 100644 master/search/variables_2.html create mode 100644 master/search/variables_2.js create mode 100644 master/search/variables_3.html create mode 100644 master/search/variables_3.js create mode 100644 master/search/variables_4.html create mode 100644 master/search/variables_4.js create mode 100644 master/search/variables_5.html create mode 100644 master/search/variables_5.js create mode 100644 master/search/variables_6.html create mode 100644 master/search/variables_6.js create mode 100644 master/search/variables_7.html create mode 100644 master/search/variables_7.js create mode 100644 master/search/variables_8.html create mode 100644 master/search/variables_8.js create mode 100644 master/search/variables_9.html create mode 100644 master/search/variables_9.js create mode 100644 master/search/variables_a.html create mode 100644 master/search/variables_a.js create mode 100644 master/search/variables_b.html create mode 100644 master/search/variables_b.js create mode 100644 master/search/variables_c.html create mode 100644 master/search/variables_c.js create mode 100644 master/search/variables_d.html create mode 100644 master/search/variables_d.js create mode 100644 master/search/variables_e.html create mode 100644 master/search/variables_e.js create mode 100644 master/search/variables_f.html create mode 100644 master/search/variables_f.js create mode 100644 master/splitbar.png create mode 100644 master/structncine_1_1_application_1_1_gui_settings-members.html create mode 100644 master/structncine_1_1_application_1_1_gui_settings.html create mode 100644 master/structncine_1_1_application_1_1_gui_settings__coll__graph.map create mode 100644 master/structncine_1_1_application_1_1_gui_settings__coll__graph.md5 create mode 100644 master/structncine_1_1_application_1_1_gui_settings__coll__graph.png create mode 100644 master/structncine_1_1_application_1_1_rendering_settings-members.html create mode 100644 master/structncine_1_1_application_1_1_rendering_settings.html create mode 100644 master/structncine_1_1_application_1_1_timings-members.html create mode 100644 master/structncine_1_1_application_1_1_timings.html create mode 100644 master/structncine_1_1_audio_effect_properties_1_1_auto_wah_properties-members.html create mode 100644 master/structncine_1_1_audio_effect_properties_1_1_auto_wah_properties.html create mode 100644 master/structncine_1_1_audio_effect_properties_1_1_chorus_properties-members.html create mode 100644 master/structncine_1_1_audio_effect_properties_1_1_chorus_properties.html create mode 100644 master/structncine_1_1_audio_effect_properties_1_1_compressor_properties-members.html create mode 100644 master/structncine_1_1_audio_effect_properties_1_1_compressor_properties.html create mode 100644 master/structncine_1_1_audio_effect_properties_1_1_distortion_properties-members.html create mode 100644 master/structncine_1_1_audio_effect_properties_1_1_distortion_properties.html create mode 100644 master/structncine_1_1_audio_effect_properties_1_1_eax_reverb_properties-members.html create mode 100644 master/structncine_1_1_audio_effect_properties_1_1_eax_reverb_properties.html create mode 100644 master/structncine_1_1_audio_effect_properties_1_1_echo_properties-members.html create mode 100644 master/structncine_1_1_audio_effect_properties_1_1_echo_properties.html create mode 100644 master/structncine_1_1_audio_effect_properties_1_1_equalizer_properties-members.html create mode 100644 master/structncine_1_1_audio_effect_properties_1_1_equalizer_properties.html create mode 100644 master/structncine_1_1_audio_effect_properties_1_1_flanger_properties-members.html create mode 100644 master/structncine_1_1_audio_effect_properties_1_1_flanger_properties.html create mode 100644 master/structncine_1_1_audio_effect_properties_1_1_frequency_shifter_properties-members.html create mode 100644 master/structncine_1_1_audio_effect_properties_1_1_frequency_shifter_properties.html create mode 100644 master/structncine_1_1_audio_effect_properties_1_1_pitch_shifter_properties-members.html create mode 100644 master/structncine_1_1_audio_effect_properties_1_1_pitch_shifter_properties.html create mode 100644 master/structncine_1_1_audio_effect_properties_1_1_reverb_properties-members.html create mode 100644 master/structncine_1_1_audio_effect_properties_1_1_reverb_properties.html create mode 100644 master/structncine_1_1_audio_effect_properties_1_1_ring_modulator_properties-members.html create mode 100644 master/structncine_1_1_audio_effect_properties_1_1_ring_modulator_properties.html create mode 100644 master/structncine_1_1_audio_effect_properties_1_1_vocal_morpher_properties-members.html create mode 100644 master/structncine_1_1_audio_effect_properties_1_1_vocal_morpher_properties.html create mode 100644 master/structncine_1_1_audio_filter_1_1_properties-members.html create mode 100644 master/structncine_1_1_audio_filter_1_1_properties.html create mode 100644 master/structncine_1_1_camera_1_1_projection_values-members.html create mode 100644 master/structncine_1_1_camera_1_1_projection_values.html create mode 100644 master/structncine_1_1_camera_1_1_view_values-members.html create mode 100644 master/structncine_1_1_camera_1_1_view_values.html create mode 100644 master/structncine_1_1_camera_1_1_view_values__coll__graph.map create mode 100644 master/structncine_1_1_camera_1_1_view_values__coll__graph.md5 create mode 100644 master/structncine_1_1_camera_1_1_view_values__coll__graph.png create mode 100644 master/structncine_1_1_color_affector_1_1_color_step-members.html create mode 100644 master/structncine_1_1_color_affector_1_1_color_step.html create mode 100644 master/structncine_1_1_color_affector_1_1_color_step__coll__graph.map create mode 100644 master/structncine_1_1_color_affector_1_1_color_step__coll__graph.md5 create mode 100644 master/structncine_1_1_color_affector_1_1_color_step__coll__graph.png create mode 100644 master/structncine_1_1_file_system_1_1_file_date-members.html create mode 100644 master/structncine_1_1_file_system_1_1_file_date.html create mode 100644 master/structncine_1_1_hash64_1_1_statistics-members.html create mode 100644 master/structncine_1_1_hash64_1_1_statistics.html create mode 100644 master/structncine_1_1_hat_state-members.html create mode 100644 master/structncine_1_1_hat_state.html create mode 100644 master/structncine_1_1_i_audio_device_1_1_a_l_extensions-members.html create mode 100644 master/structncine_1_1_i_audio_device_1_1_a_l_extensions.html create mode 100644 master/structncine_1_1_i_audio_device_1_1_attributes-members.html create mode 100644 master/structncine_1_1_i_audio_device_1_1_attributes.html create mode 100644 master/structncine_1_1_i_debug_overlay_1_1_display_settings-members.html create mode 100644 master/structncine_1_1_i_debug_overlay_1_1_display_settings.html create mode 100644 master/structncine_1_1_i_file_1_1_open_mode-members.html create mode 100644 master/structncine_1_1_i_file_1_1_open_mode.html create mode 100644 master/structncine_1_1_i_gfx_capabilities_1_1_g_l_array_int_values-members.html create mode 100644 master/structncine_1_1_i_gfx_capabilities_1_1_g_l_array_int_values.html create mode 100644 master/structncine_1_1_i_gfx_capabilities_1_1_g_l_extensions-members.html create mode 100644 master/structncine_1_1_i_gfx_capabilities_1_1_g_l_extensions.html create mode 100644 master/structncine_1_1_i_gfx_capabilities_1_1_g_l_int_values-members.html create mode 100644 master/structncine_1_1_i_gfx_capabilities_1_1_g_l_int_values.html create mode 100644 master/structncine_1_1_i_gfx_capabilities_1_1_gl_info_strings-members.html create mode 100644 master/structncine_1_1_i_gfx_capabilities_1_1_gl_info_strings.html create mode 100644 master/structncine_1_1_i_gfx_device_1_1_g_l_context_info-members.html create mode 100644 master/structncine_1_1_i_gfx_device_1_1_g_l_context_info.html create mode 100644 master/structncine_1_1_i_gfx_device_1_1_monitor-members.html create mode 100644 master/structncine_1_1_i_gfx_device_1_1_monitor.html create mode 100644 master/structncine_1_1_i_gfx_device_1_1_monitor__coll__graph.map create mode 100644 master/structncine_1_1_i_gfx_device_1_1_monitor__coll__graph.md5 create mode 100644 master/structncine_1_1_i_gfx_device_1_1_monitor__coll__graph.png create mode 100644 master/structncine_1_1_i_gfx_device_1_1_video_mode-members.html create mode 100644 master/structncine_1_1_i_gfx_device_1_1_video_mode.html create mode 100644 master/structncine_1_1_i_gfx_device_1_1_window_mode-members.html create mode 100644 master/structncine_1_1_i_gfx_device_1_1_window_mode.html create mode 100644 master/structncine_1_1_i_texture_saver_1_1_properties-members.html create mode 100644 master/structncine_1_1_i_texture_saver_1_1_properties.html create mode 100644 master/structncine_1_1_lua_state_manager_1_1_state_to_manager-members.html create mode 100644 master/structncine_1_1_lua_state_manager_1_1_state_to_manager.html create mode 100644 master/structncine_1_1_lua_state_manager_1_1_state_to_manager__coll__graph.map create mode 100644 master/structncine_1_1_lua_state_manager_1_1_state_to_manager__coll__graph.md5 create mode 100644 master/structncine_1_1_lua_state_manager_1_1_state_to_manager__coll__graph.png create mode 100644 master/structncine_1_1_lua_utils_1_1_run_info_1_1_debug_info-members.html create mode 100644 master/structncine_1_1_lua_utils_1_1_run_info_1_1_debug_info.html create mode 100644 master/structncine_1_1_mesh_sprite_1_1_vertex-members.html create mode 100644 master/structncine_1_1_mesh_sprite_1_1_vertex.html create mode 100644 master/structncine_1_1_mesh_sprite_1_1_vertex_no_texture-members.html create mode 100644 master/structncine_1_1_mesh_sprite_1_1_vertex_no_texture.html create mode 100644 master/structncine_1_1_particle_initializer-members.html create mode 100644 master/structncine_1_1_particle_initializer.html create mode 100644 master/structncine_1_1_particle_initializer__coll__graph.map create mode 100644 master/structncine_1_1_particle_initializer__coll__graph.md5 create mode 100644 master/structncine_1_1_particle_initializer__coll__graph.png create mode 100644 master/structncine_1_1_position_affector_1_1_position_step-members.html create mode 100644 master/structncine_1_1_position_affector_1_1_position_step.html create mode 100644 master/structncine_1_1_position_affector_1_1_position_step__coll__graph.map create mode 100644 master/structncine_1_1_position_affector_1_1_position_step__coll__graph.md5 create mode 100644 master/structncine_1_1_position_affector_1_1_position_step__coll__graph.png create mode 100644 master/structncine_1_1_rotation_affector_1_1_rotation_step-members.html create mode 100644 master/structncine_1_1_rotation_affector_1_1_rotation_step.html create mode 100644 master/structncine_1_1_size_affector_1_1_size_step-members.html create mode 100644 master/structncine_1_1_size_affector_1_1_size_step.html create mode 100644 master/structncine_1_1_size_affector_1_1_size_step__coll__graph.map create mode 100644 master/structncine_1_1_size_affector_1_1_size_step__coll__graph.md5 create mode 100644 master/structncine_1_1_size_affector_1_1_size_step__coll__graph.png create mode 100644 master/structncine_1_1_texture_saver_png_1_1_png_properties-members.html create mode 100644 master/structncine_1_1_texture_saver_png_1_1_png_properties.html create mode 100644 master/structncine_1_1_texture_saver_web_p_1_1_web_p_properties-members.html create mode 100644 master/structncine_1_1_texture_saver_web_p_1_1_web_p_properties.html create mode 100644 master/structncine_1_1_touch_event_1_1_pointer-members.html create mode 100644 master/structncine_1_1_touch_event_1_1_pointer.html create mode 100644 master/structncine_1_1_velocity_affector_1_1_velocity_step-members.html create mode 100644 master/structncine_1_1_velocity_affector_1_1_velocity_step.html create mode 100644 master/structncine_1_1_velocity_affector_1_1_velocity_step__coll__graph.map create mode 100644 master/structncine_1_1_velocity_affector_1_1_velocity_step__coll__graph.md5 create mode 100644 master/structncine_1_1_velocity_affector_1_1_velocity_step__coll__graph.png create mode 100644 master/structnctl_1_1_bidirectional_iterator_tag.html create mode 100644 master/structnctl_1_1_bidirectional_iterator_tag__coll__graph.map create mode 100644 master/structnctl_1_1_bidirectional_iterator_tag__coll__graph.md5 create mode 100644 master/structnctl_1_1_bidirectional_iterator_tag__coll__graph.png create mode 100644 master/structnctl_1_1_bidirectional_iterator_tag__inherit__graph.map create mode 100644 master/structnctl_1_1_bidirectional_iterator_tag__inherit__graph.md5 create mode 100644 master/structnctl_1_1_bidirectional_iterator_tag__inherit__graph.png create mode 100644 master/structnctl_1_1_forward_iterator_tag.html create mode 100644 master/structnctl_1_1_forward_iterator_tag__inherit__graph.map create mode 100644 master/structnctl_1_1_forward_iterator_tag__inherit__graph.md5 create mode 100644 master/structnctl_1_1_forward_iterator_tag__inherit__graph.png create mode 100644 master/structnctl_1_1_free_list_allocator_1_1_block-members.html create mode 100644 master/structnctl_1_1_free_list_allocator_1_1_block.html create mode 100644 master/structnctl_1_1_free_list_allocator_1_1_block__coll__graph.map create mode 100644 master/structnctl_1_1_free_list_allocator_1_1_block__coll__graph.md5 create mode 100644 master/structnctl_1_1_free_list_allocator_1_1_block__coll__graph.png create mode 100644 master/structnctl_1_1_hash_map_helper_traits.html create mode 100644 master/structnctl_1_1_hash_map_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4-members.html create mode 100644 master/structnctl_1_1_hash_map_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4.html create mode 100644 master/structnctl_1_1_hash_map_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4-members.html create mode 100644 master/structnctl_1_1_hash_map_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4.html create mode 100644 master/structnctl_1_1_hash_map_list_helper_traits.html create mode 100644 master/structnctl_1_1_hash_map_list_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4-members.html create mode 100644 master/structnctl_1_1_hash_map_list_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4.html create mode 100644 master/structnctl_1_1_hash_map_list_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4-members.html create mode 100644 master/structnctl_1_1_hash_map_list_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4.html create mode 100644 master/structnctl_1_1_hash_set_helper_traits-members.html create mode 100644 master/structnctl_1_1_hash_set_helper_traits.html create mode 100644 master/structnctl_1_1_hash_set_list_helper_traits-members.html create mode 100644 master/structnctl_1_1_hash_set_list_helper_traits.html create mode 100644 master/structnctl_1_1_iterator_traits.html create mode 100644 master/structnctl_1_1_iterator_traits_3_01_array_iterator_3_01_t_00_01false_01_4_01_4-members.html create mode 100644 master/structnctl_1_1_iterator_traits_3_01_array_iterator_3_01_t_00_01false_01_4_01_4.html create mode 100644 master/structnctl_1_1_iterator_traits_3_01_array_iterator_3_01_t_00_01true_01_4_01_4-members.html create mode 100644 master/structnctl_1_1_iterator_traits_3_01_array_iterator_3_01_t_00_01true_01_4_01_4.html create mode 100644 master/structnctl_1_1_iterator_traits_3_01_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4_01_4-members.html create mode 100644 master/structnctl_1_1_iterator_traits_3_01_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4_01_4.html create mode 100644 master/structnctl_1_1_iterator_traits_3_01_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4_01_4-members.html create mode 100644 master/structnctl_1_1_iterator_traits_3_01_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4_01_4.html create mode 100644 master/structnctl_1_1_iterator_traits_3_01_hash_map_list_iterator_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4_01_4-members.html create mode 100644 master/structnctl_1_1_iterator_traits_3_01_hash_map_list_iterator_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4_01_4.html create mode 100644 master/structnctl_1_1_iterator_traits_3_01_hash_map_list_iterator_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4_01_4-members.html create mode 100644 master/structnctl_1_1_iterator_traits_3_01_hash_map_list_iterator_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4_01_4.html create mode 100644 master/structnctl_1_1_iterator_traits_3_01_hash_set_iterator_3_01_k_00_01_hash_func_01_4_01_4-members.html create mode 100644 master/structnctl_1_1_iterator_traits_3_01_hash_set_iterator_3_01_k_00_01_hash_func_01_4_01_4.html create mode 100644 master/structnctl_1_1_iterator_traits_3_01_hash_set_list_iterator_3_01_k_00_01_hash_func_01_4_01_4-members.html create mode 100644 master/structnctl_1_1_iterator_traits_3_01_hash_set_list_iterator_3_01_k_00_01_hash_func_01_4_01_4.html create mode 100644 master/structnctl_1_1_iterator_traits_3_01_list_iterator_3_01_t_00_01false_01_4_01_4-members.html create mode 100644 master/structnctl_1_1_iterator_traits_3_01_list_iterator_3_01_t_00_01false_01_4_01_4.html create mode 100644 master/structnctl_1_1_iterator_traits_3_01_list_iterator_3_01_t_00_01true_01_4_01_4-members.html create mode 100644 master/structnctl_1_1_iterator_traits_3_01_list_iterator_3_01_t_00_01true_01_4_01_4.html create mode 100644 master/structnctl_1_1_iterator_traits_3_01_reverse_iterator_3_01_iterator_01_4_01_4-members.html create mode 100644 master/structnctl_1_1_iterator_traits_3_01_reverse_iterator_3_01_iterator_01_4_01_4.html create mode 100644 master/structnctl_1_1_iterator_traits_3_01_sparse_set_iterator_3_01_t_01_4_01_4-members.html create mode 100644 master/structnctl_1_1_iterator_traits_3_01_sparse_set_iterator_3_01_t_01_4_01_4.html create mode 100644 master/structnctl_1_1_iterator_traits_3_01_static_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_0152b6ab6f3be0fd28c4e8caf8a49820b.html create mode 100644 master/structnctl_1_1_iterator_traits_3_01_static_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01false_01_4_01_4.html create mode 100644 master/structnctl_1_1_iterator_traits_3_01_static_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01true_01_4_01_4.html create mode 100644 master/structnctl_1_1_iterator_traits_3_01_static_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_05fd9f4092bfcde5f299c59ef59ed2052.html create mode 100644 master/structnctl_1_1_iterator_traits_3_01_static_hash_set_iterator_3_01_k_00_01_hash_func_00_01_capacity_01_4_01_4-members.html create mode 100644 master/structnctl_1_1_iterator_traits_3_01_static_hash_set_iterator_3_01_k_00_01_hash_func_00_01_capacity_01_4_01_4.html create mode 100644 master/structnctl_1_1_iterator_traits_3_01_string_iterator_3_01false_01_4_01_4-members.html create mode 100644 master/structnctl_1_1_iterator_traits_3_01_string_iterator_3_01false_01_4_01_4.html create mode 100644 master/structnctl_1_1_iterator_traits_3_01_string_iterator_3_01true_01_4_01_4-members.html create mode 100644 master/structnctl_1_1_iterator_traits_3_01_string_iterator_3_01true_01_4_01_4.html create mode 100644 master/structnctl_1_1_make_unique_return-members.html create mode 100644 master/structnctl_1_1_make_unique_return.html create mode 100644 master/structnctl_1_1_make_unique_return_3_01_t_0f_0e_00_01_deleter_01_4-members.html create mode 100644 master/structnctl_1_1_make_unique_return_3_01_t_0f_0e_00_01_deleter_01_4.html create mode 100644 master/structnctl_1_1_make_unique_return_3_01_t_0fsize_0e_00_01_deleter_01_4.html create mode 100644 master/structnctl_1_1_make_unique_return_3_01_t_0fsize_0e_00_01_deleter_01_4_1_1invalid.html create mode 100644 master/structnctl_1_1_random_access_iterator_tag.html create mode 100644 master/structnctl_1_1_random_access_iterator_tag__coll__graph.map create mode 100644 master/structnctl_1_1_random_access_iterator_tag__coll__graph.md5 create mode 100644 master/structnctl_1_1_random_access_iterator_tag__coll__graph.png create mode 100644 master/structnctl_1_1_random_access_iterator_tag__inherit__graph.map create mode 100644 master/structnctl_1_1_random_access_iterator_tag__inherit__graph.md5 create mode 100644 master/structnctl_1_1_random_access_iterator_tag__inherit__graph.png create mode 100644 master/structnctl_1_1_reversion_wrapper-members.html create mode 100644 master/structnctl_1_1_reversion_wrapper.html create mode 100644 master/structnctl_1_1_static_hash_map_helper_traits.html create mode 100644 master/structnctl_1_1_static_hash_map_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01false_01_4-members.html create mode 100644 master/structnctl_1_1_static_hash_map_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01false_01_4.html create mode 100644 master/structnctl_1_1_static_hash_map_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01true_01_4-members.html create mode 100644 master/structnctl_1_1_static_hash_map_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01true_01_4.html create mode 100644 master/structnctl_1_1_static_hash_set_helper_traits-members.html create mode 100644 master/structnctl_1_1_static_hash_set_helper_traits.html create mode 100644 master/structnctl_1_1add_l_value_reference.html create mode 100644 master/structnctl_1_1add_l_value_reference__coll__graph.map create mode 100644 master/structnctl_1_1add_l_value_reference__coll__graph.md5 create mode 100644 master/structnctl_1_1add_l_value_reference__coll__graph.png create mode 100644 master/structnctl_1_1add_l_value_reference__inherit__graph.map create mode 100644 master/structnctl_1_1add_l_value_reference__inherit__graph.md5 create mode 100644 master/structnctl_1_1add_l_value_reference__inherit__graph.png create mode 100644 master/structnctl_1_1add_r_value_reference.html create mode 100644 master/structnctl_1_1add_r_value_reference__coll__graph.map create mode 100644 master/structnctl_1_1add_r_value_reference__coll__graph.md5 create mode 100644 master/structnctl_1_1add_r_value_reference__coll__graph.png create mode 100644 master/structnctl_1_1add_r_value_reference__inherit__graph.map create mode 100644 master/structnctl_1_1add_r_value_reference__inherit__graph.md5 create mode 100644 master/structnctl_1_1add_r_value_reference__inherit__graph.png create mode 100644 master/structnctl_1_1detail_1_1_pair_impl-members.html create mode 100644 master/structnctl_1_1detail_1_1_pair_impl.html create mode 100644 master/structnctl_1_1detail_1_1_pair_impl_3_01_t1_00_01_t2_00_01true_01_4-members.html create mode 100644 master/structnctl_1_1detail_1_1_pair_impl_3_01_t1_00_01_t2_00_01true_01_4.html create mode 100644 master/structnctl_1_1detail_1_1alloc_helpers-members.html create mode 100644 master/structnctl_1_1detail_1_1alloc_helpers.html create mode 100644 master/structnctl_1_1detail_1_1alloc_helpers_3_01true_01_4-members.html create mode 100644 master/structnctl_1_1detail_1_1alloc_helpers_3_01true_01_4.html create mode 100644 master/structnctl_1_1detail_1_1construct_helpers-members.html create mode 100644 master/structnctl_1_1detail_1_1construct_helpers.html create mode 100644 master/structnctl_1_1detail_1_1construct_helpers_3_01true_01_4-members.html create mode 100644 master/structnctl_1_1detail_1_1construct_helpers_3_01true_01_4.html create mode 100644 master/structnctl_1_1detail_1_1copy_helpers-members.html create mode 100644 master/structnctl_1_1detail_1_1copy_helpers.html create mode 100644 master/structnctl_1_1detail_1_1copy_helpers_3_01true_01_4-members.html create mode 100644 master/structnctl_1_1detail_1_1copy_helpers_3_01true_01_4.html create mode 100644 master/structnctl_1_1detail_1_1destruct_helpers-members.html create mode 100644 master/structnctl_1_1detail_1_1destruct_helpers.html create mode 100644 master/structnctl_1_1detail_1_1destruct_helpers_3_01true_01_4-members.html create mode 100644 master/structnctl_1_1detail_1_1destruct_helpers_3_01true_01_4.html create mode 100644 master/structnctl_1_1detail_1_1type_identity-members.html create mode 100644 master/structnctl_1_1detail_1_1type_identity.html create mode 100644 master/structnctl_1_1detail_1_1void_type-members.html create mode 100644 master/structnctl_1_1detail_1_1void_type.html create mode 100644 master/structnctl_1_1is_class-members.html create mode 100644 master/structnctl_1_1is_class.html create mode 100644 master/structnctl_1_1is_class_3_01_t_00_01typename_01detail_1_1void_type_3_01int_01_t_1_1_5_01_4_1_1type_01_4-members.html create mode 100644 master/structnctl_1_1is_class_3_01_t_00_01typename_01detail_1_1void_type_3_01int_01_t_1_1_5_01_4_1_1type_01_4.html create mode 100644 master/structnctl_1_1is_destructible-members.html create mode 100644 master/structnctl_1_1is_destructible.html create mode 100644 master/structnctl_1_1is_destructible_3_01_t_00_01decltype_07decl_val_3_01_t_01_6_01_4_07_08_8~_t_07_08_08_4-members.html create mode 100644 master/structnctl_1_1is_destructible_3_01_t_00_01decltype_07decl_val_3_01_t_01_6_01_4_07_08_8~_t_07_08_08_4.html create mode 100644 master/structnctl_1_1is_empty-members.html create mode 100644 master/structnctl_1_1is_empty.html create mode 100644 master/structnctl_1_1is_integral-members.html create mode 100644 master/structnctl_1_1is_integral.html create mode 100644 master/structnctl_1_1is_integral_3_01bool_01_4-members.html create mode 100644 master/structnctl_1_1is_integral_3_01bool_01_4.html create mode 100644 master/structnctl_1_1is_integral_3_01char_01_4-members.html create mode 100644 master/structnctl_1_1is_integral_3_01char_01_4.html create mode 100644 master/structnctl_1_1is_integral_3_01int_01_4-members.html create mode 100644 master/structnctl_1_1is_integral_3_01int_01_4.html create mode 100644 master/structnctl_1_1is_integral_3_01long_01_4-members.html create mode 100644 master/structnctl_1_1is_integral_3_01long_01_4.html create mode 100644 master/structnctl_1_1is_integral_3_01long_01long_01_4-members.html create mode 100644 master/structnctl_1_1is_integral_3_01long_01long_01_4.html create mode 100644 master/structnctl_1_1is_integral_3_01short_01int_01_4-members.html create mode 100644 master/structnctl_1_1is_integral_3_01short_01int_01_4.html create mode 100644 master/structnctl_1_1is_integral_3_01unsigned_01char_01_4-members.html create mode 100644 master/structnctl_1_1is_integral_3_01unsigned_01char_01_4.html create mode 100644 master/structnctl_1_1is_integral_3_01unsigned_01int_01_4-members.html create mode 100644 master/structnctl_1_1is_integral_3_01unsigned_01int_01_4.html create mode 100644 master/structnctl_1_1is_integral_3_01unsigned_01long_01_4-members.html create mode 100644 master/structnctl_1_1is_integral_3_01unsigned_01long_01_4.html create mode 100644 master/structnctl_1_1is_integral_3_01unsigned_01long_01long_01_4-members.html create mode 100644 master/structnctl_1_1is_integral_3_01unsigned_01long_01long_01_4.html create mode 100644 master/structnctl_1_1is_integral_3_01unsigned_01short_01int_01_4-members.html create mode 100644 master/structnctl_1_1is_integral_3_01unsigned_01short_01int_01_4.html create mode 100644 master/structnctl_1_1is_l_value_reference-members.html create mode 100644 master/structnctl_1_1is_l_value_reference.html create mode 100644 master/structnctl_1_1is_l_value_reference_3_01_t_01_6_01_4-members.html create mode 100644 master/structnctl_1_1is_l_value_reference_3_01_t_01_6_01_4.html create mode 100644 master/structnctl_1_1is_trivially_constructible-members.html create mode 100644 master/structnctl_1_1is_trivially_constructible.html create mode 100644 master/structnctl_1_1is_trivially_copyable-members.html create mode 100644 master/structnctl_1_1is_trivially_copyable.html create mode 100644 master/structnctl_1_1is_trivially_destructible-members.html create mode 100644 master/structnctl_1_1is_trivially_destructible.html create mode 100644 master/structnctl_1_1remove_extent-members.html create mode 100644 master/structnctl_1_1remove_extent.html create mode 100644 master/structnctl_1_1remove_extent_3_01_t_0f_0e_4-members.html create mode 100644 master/structnctl_1_1remove_extent_3_01_t_0f_0e_4.html create mode 100644 master/structnctl_1_1remove_extent_3_01_t_0f_n_0e_4-members.html create mode 100644 master/structnctl_1_1remove_extent_3_01_t_0f_n_0e_4.html create mode 100644 master/structnctl_1_1remove_reference-members.html create mode 100644 master/structnctl_1_1remove_reference.html create mode 100644 master/structnctl_1_1remove_reference_3_01_t_01_6_01_4-members.html create mode 100644 master/structnctl_1_1remove_reference_3_01_t_01_6_01_4.html create mode 100644 master/structnctl_1_1remove_reference_3_01_t_01_6_6_01_4-members.html create mode 100644 master/structnctl_1_1remove_reference_3_01_t_01_6_6_01_4.html create mode 100644 master/sync_off.png create mode 100644 master/sync_on.png create mode 100644 master/tab_a.png create mode 100644 master/tab_b.png create mode 100644 master/tab_h.png create mode 100644 master/tab_s.png create mode 100644 master/tabs.css create mode 100644 master/tracy_8h_source.html create mode 100644 master/tracy__opengl_8h_source.html create mode 100644 master/type__traits_8h_source.html create mode 100644 master/utility_8h_source.html diff --git a/lua_api_list_master.html b/lua_api_list_master.html new file mode 100644 index 0000000000..ff3efc7fc2 --- /dev/null +++ b/lua_api_list_master.html @@ -0,0 +1,7398 @@ + + + + + + + +nCine Lua API List + + + + + +
+
+
+
+
    +
  • +

    LINUX: true

    +
  • +
  • +

    _GITBRANCH: master

    +
  • +
  • +

    _GITLATCOMMITDATE: 2024-11-21

    +
  • +
  • +

    _GITREVCOUNT: 479

    +
  • +
  • +

    _GITSHORTHASH: efb4ba7

    +
  • +
  • +

    _GITTAG:

    +
  • +
  • +

    _VERSION: 2024.11.r479-efb4ba7

    +
  • +
+
+
+
+
+

animated_sprite

+
+
+

add_animation()

+ +
+
+

add_child()

+ +
+
+

clear_animations()

+ +
+
+

clone()

+ +
+
+

delete()

+ +
+
+

get_aabb()

+ +
+
+

get_abs_anchor_point()

+ +
+
+

get_alpha()

+ +
+
+

get_anchor_point()

+ +
+
+

get_animation_index()

+ +
+
+

get_child()

+ +
+
+

get_child_order_index()

+ +
+
+

get_children()

+ +
+
+

get_color()

+ +
+
+

get_dest_blending_factor()

+ +
+
+

get_frame()

+ +
+
+

get_height()

+ +
+
+

get_last_frame_rendered()

+ +
+
+

get_last_frame_updated()

+ +
+
+

get_layer()

+ +
+
+

get_parent()

+ +
+
+

get_position()

+ +
+
+

get_rotation()

+ +
+
+

get_scale()

+ +
+
+

get_size()

+ +
+
+

get_src_blending_factor()

+ +
+
+

get_texrect()

+ +
+
+

get_texture()

+ +
+
+

get_visit_order_index()

+ +
+
+

get_visit_order_state()

+ +
+
+

get_width()

+ +
+
+

is_blending_enabled()

+ +
+
+

is_enabled()

+ +
+
+

is_flipped_x()

+ +
+
+

is_flipped_y()

+ +
+
+

is_paused()

+ +
+
+

new()

+ +
+
+

num_animations()

+ +
+
+

num_children()

+ +
+
+

num_frames()

+ +
+
+

remove_all_children()

+ +
+
+

remove_child()

+ +
+
+

remove_child_at()

+ +
+
+

reset_texture()

+ +
+
+

set_abs_anchor_point()

+ +
+
+

set_alpha()

+ +
+
+

set_anchor_point()

+ +
+
+

set_animation_index()

+ +
+
+

set_blending_enabled()

+ +
+
+

set_blending_factors()

+ +
+
+

set_blending_preset()

+ +
+
+

set_color()

+ +
+
+

set_enabled()

+ +
+
+

set_flipped_x()

+ +
+
+

set_flipped_y()

+ +
+
+

set_frame()

+ +
+
+

set_layer()

+ +
+
+

set_parent()

+ +
+
+

set_paused()

+ +
+
+

set_position()

+ +
+
+

set_rotation()

+ +
+
+

set_scale()

+ +
+
+

set_scale_x()

+ +
+
+

set_scale_y()

+ +
+
+

set_size()

+ +
+
+

set_texrect()

+ +
+
+

set_texture()

+ +
+
+

set_visit_order_state()

+ +
+
+

swap_children()

+ +
+
+

swap_node_back()

+ +
+
+

swap_node_forward()

+ +
+
+ + +
+
+
+
+

application

+
+
+

get_app_configuration()

+ +
+
+

get_auto_suspension()

+ +
+
+

get_debugoverlay_settings()

+ +
+
+

get_gui_settings()

+ +
+
+

get_height()

+ +
+
+

get_interval()

+ +
+
+

get_num_frames()

+ +
+
+

get_rendering_settings()

+ +
+
+

get_resolution()

+ +
+
+

get_rootnode()

+ +
+
+

get_screen_viewport()

+ +
+
+

get_width()

+ +
+
+

is_suspended()

+ +
+
+

quit()

+ +
+
+

set_auto_suspension()

+ +
+
+

set_debugoverlay_settings()

+ +
+
+

set_gui_settings()

+ +
+
+

set_rendering_settings()

+ +
+
+

set_suspended()

+ +
+
+
+
+

audio_device

+
+
+

get_gain()

+ +
+
+

get_max_num_sources()

+ +
+
+

get_num_available_sources()

+ +
+
+

get_num_players()

+ +
+
+

get_player()

+ +
+
+

get_position()

+ +
+
+

get_velocity()

+ +
+
+

has_efx_extension()

+ +
+
+

name()

+ +
+
+

pause_device()

+ +
+
+

pause_players()

+ +
+
+

resume_device()

+ +
+
+

resume_players()

+ +
+
+

set_gain()

+ +
+
+

set_position()

+ +
+
+

set_velocity()

+ +
+
+

stop_players()

+ +
+
+
+
+

audio_effect

+
+
+

apply_properties()

+ +
+
+

delete()

+ +
+
+

get_effect_id()

+ +
+
+

get_type()

+ +
+
+

new()

+ +
+
+
+
+

audio_effect_properties

+
+
+

delete()

+ +
+
+

get_auto_wah_properties()

+ +
+
+

get_chorus_properties()

+ +
+
+

get_compressor_properties()

+ +
+
+

get_distortion_properties()

+ +
+
+

get_eax_reverb_properties()

+ +
+
+

get_echo_properties()

+ +
+
+

get_equalizer_properties()

+ +
+
+

get_flanger_properties()

+ +
+
+

get_frequency_shifter_properties()

+ +
+
+

get_max_auto_wah_properties()

+ +
+
+

get_max_chorus_properties()

+ +
+
+

get_max_compressor_properties()

+ +
+
+

get_max_distortion_properties()

+ +
+
+

get_max_eax_reverb_properties()

+ +
+
+

get_max_echo_properties()

+ +
+
+

get_max_equalizer_properties()

+ +
+
+

get_max_flanger_properties()

+ +
+
+

get_max_frequency_shifter_properties()

+ +
+
+

get_max_pitch_shifter_properties()

+ +
+
+

get_max_reverb_properties()

+ +
+
+

get_max_ring_modulator_properties()

+ +
+
+

get_max_vocal_morpher_properties()

+ +
+
+

get_min_auto_wah_properties()

+ +
+
+

get_min_chorus_properties()

+ +
+
+

get_min_compressor_properties()

+ +
+
+

get_min_distortion_properties()

+ +
+
+

get_min_eax_reverb_properties()

+ +
+
+

get_min_echo_properties()

+ +
+
+

get_min_equalizer_properties()

+ +
+
+

get_min_flanger_properties()

+ +
+
+

get_min_frequency_shifter_properties()

+ +
+
+

get_min_pitch_shifter_properties()

+ +
+
+

get_min_reverb_properties()

+ +
+
+

get_min_ring_modulator_properties()

+ +
+
+

get_min_vocal_morpher_properties()

+ +
+
+

get_pitch_shifter_properties()

+ +
+
+

get_reverb_properties()

+ +
+
+

get_ring_modulator_properties()

+ +
+
+

get_type()

+ +
+
+

get_vocal_morpher_properties()

+ +
+
+

load_efx_reverb_preset()

+ +
+
+

new()

+ +
+
+

reset_auto_wah_properties()

+ +
+
+

reset_chorus_properties()

+ +
+
+

reset_compressor_properties()

+ +
+
+

reset_distortion_properties()

+ +
+
+

reset_eax_reverb_properties()

+ +
+
+

reset_echo_properties()

+ +
+
+

reset_equalizer_properties()

+ +
+
+

reset_flanger_properties()

+ +
+
+

reset_frequency_shifter_properties()

+ +
+
+

reset_pitch_shifter_properties()

+ +
+
+

reset_reverb_properties()

+ +
+
+

reset_ring_modulator_properties()

+ +
+
+

reset_vocal_morpher_properties()

+ +
+
+

set_auto_wah_properties()

+ +
+
+

set_chorus_properties()

+ +
+
+

set_compressor_properties()

+ +
+
+

set_distortion_properties()

+ +
+
+

set_eax_reverb_properties()

+ +
+
+

set_echo_properties()

+ +
+
+

set_equalizer_properties()

+ +
+
+

set_flanger_properties()

+ +
+
+

set_frequency_shifter_properties()

+ +
+
+

set_pitch_shifter_properties()

+ +
+
+

set_reverb_properties()

+ +
+
+

set_ring_modulator_properties()

+ +
+
+

set_type()

+ +
+
+

set_vocal_morpher_properties()

+ +
+
+
+
+

audio_effect_slot

+
+
+

apply_effect()

+ +
+
+

delete()

+ +
+
+

get_aux_send_auto()

+ +
+
+

get_effect_slot_id()

+ +
+
+

get_gain()

+ +
+
+

new()

+ +
+
+

set_aux_send_auto()

+ +
+
+

set_gain()

+ +
+
+
+
+

audio_effect_type

+
+
+
    +
  • +

    AUTOWAH: 11

    +
  • +
  • +

    CHORUS: 3

    +
  • +
  • +

    COMPRESSOR: 12

    +
  • +
  • +

    DISTORTION: 4

    +
  • +
  • +

    EAXREVERB: 2

    +
  • +
  • +

    ECHO: 5

    +
  • +
  • +

    EQUALIZER: 13

    +
  • +
  • +

    FLANGER: 6

    +
  • +
  • +

    FREQUENCY_SHIFTER: 7

    +
  • +
  • +

    NULL_EFFECT: 0

    +
  • +
  • +

    PITCH_SHIFTER: 9

    +
  • +
  • +

    REVERB: 1

    +
  • +
  • +

    RING_MODULATOR: 10

    +
  • +
  • +

    VOCAL_MORPHER: 8

    +
  • +
+
+
+
+
+

audio_filter

+
+
+

apply_properties()

+ +
+
+

delete()

+ +
+
+

get_default_properties()

+ +
+
+

get_filter_id()

+ +
+
+

get_type()

+ +
+
+

new()

+ +
+
+
+
+

audio_filter_type

+
+
+
    +
  • +

    BANDPASS: 3

    +
  • +
  • +

    HIGHPASS: 2

    +
  • +
  • +

    LOWPASS: 1

    +
  • +
  • +

    NULL_FILTER: 0

    +
  • +
+
+
+
+
+

audiobuffer

+
+
+

buffer_id()

+ +
+
+

buffer_size()

+ +
+
+

bytes_per_sample()

+ +
+
+

delete()

+ +
+
+

duration()

+ +
+
+

frequency()

+ +
+
+

new()

+ +
+
+

num_channels()

+ +
+
+

num_samples()

+ +
+
+
+
+

audiobuffer_player

+
+
+

buffer_id()

+ +
+
+

buffer_size()

+ +
+
+

bytes_per_sample()

+ +
+
+

delete()

+ +
+
+

duration()

+ +
+
+

frequency()

+ +
+
+

get_air_absorption_factor()

+ +
+
+

get_audiobuffer()

+ +
+
+

get_aux_filter_id()

+ +
+
+

get_cone_inner_angle()

+ +
+
+

get_cone_outer_angle()

+ +
+
+

get_cone_outer_gain()

+ +
+
+

get_cone_outer_gain_hf()

+ +
+
+

get_direct_filter_id()

+ +
+
+

get_direction()

+ +
+
+

get_effect_slot_id()

+ +
+
+

get_gain()

+ +
+
+

get_pitch()

+ +
+
+

get_position()

+ +
+
+

get_room_rolloff_factor()

+ +
+
+

get_sample_offset()

+ +
+
+

get_velocity()

+ +
+
+

has_aux_filter()

+ +
+
+

has_direct_filter()

+ +
+
+

has_effect_slot()

+ +
+
+

has_source()

+ +
+
+

is_looping()

+ +
+
+

is_paused()

+ +
+
+

is_playing()

+ +
+
+

is_source_locked()

+ +
+
+

is_stopped()

+ +
+
+

new()

+ +
+
+

num_channels()

+ +
+
+

num_samples()

+ +
+
+

pause()

+ +
+
+

play()

+ +
+
+

set_air_absorption_factor()

+ +
+
+

set_audiobuffer()

+ +
+
+

set_cone_inner_angle()

+ +
+
+

set_cone_outer_angle()

+ +
+
+

set_cone_outer_gain()

+ +
+
+

set_cone_outer_gain_hf()

+ +
+
+

set_direct_filter()

+ +
+
+

set_direction()

+ +
+
+

set_effect_slot()

+ +
+
+

set_gain()

+ +
+
+

set_looping()

+ +
+
+

set_pitch()

+ +
+
+

set_position()

+ +
+
+

set_room_rolloff_factor()

+ +
+
+

set_sample_offset()

+ +
+
+

set_source_locked()

+ +
+
+

set_velocity()

+ +
+
+

source_id()

+ +
+
+

stop()

+ +
+
+
+
+

audiostream_player

+
+
+

buffer_id()

+ +
+
+

buffer_size()

+ +
+
+

bytes_per_sample()

+ +
+
+

delete()

+ +
+
+

duration()

+ +
+
+

frequency()

+ +
+
+

get_air_absorption_factor()

+ +
+
+

get_aux_filter_id()

+ +
+
+

get_cone_inner_angle()

+ +
+
+

get_cone_outer_angle()

+ +
+
+

get_cone_outer_gain()

+ +
+
+

get_cone_outer_gain_hf()

+ +
+
+

get_direct_filter_id()

+ +
+
+

get_direction()

+ +
+
+

get_effect_slot_id()

+ +
+
+

get_gain()

+ +
+
+

get_pitch()

+ +
+
+

get_position()

+ +
+
+

get_room_rolloff_factor()

+ +
+
+

get_sample_offset()

+ +
+
+

get_velocity()

+ +
+
+

has_aux_filter()

+ +
+
+

has_direct_filter()

+ +
+
+

has_effect_slot()

+ +
+
+

has_source()

+ +
+
+

is_looping()

+ +
+
+

is_paused()

+ +
+
+

is_playing()

+ +
+
+

is_source_locked()

+ +
+
+

is_stopped()

+ +
+
+

new()

+ +
+
+

num_channels()

+ +
+
+

num_samples()

+ +
+
+

num_samples_in_streambuffer()

+ +
+
+

pause()

+ +
+
+

play()

+ +
+
+

sample_offset_in_stream()

+ +
+
+

set_air_absorption_factor()

+ +
+
+

set_cone_inner_angle()

+ +
+
+

set_cone_outer_angle()

+ +
+
+

set_cone_outer_gain()

+ +
+
+

set_cone_outer_gain_hf()

+ +
+
+

set_direct_filter()

+ +
+
+

set_direction()

+ +
+
+

set_effect_slot()

+ +
+
+

set_gain()

+ +
+
+

set_looping()

+ +
+
+

set_pitch()

+ +
+
+

set_position()

+ +
+
+

set_room_rolloff_factor()

+ +
+
+

set_sample_offset()

+ +
+
+

set_source_locked()

+ +
+
+

set_velocity()

+ +
+
+

source_id()

+ +
+
+

stop()

+ +
+
+

streambuffer_size()

+ +
+
+
+
+

blending_factor

+
+
+
    +
  • +

    CONSTANT_ALPHA: 12

    +
  • +
  • +

    CONSTANT_COLOR: 10

    +
  • +
  • +

    DST_ALPHA: 8

    +
  • +
  • +

    DST_COLOR: 4

    +
  • +
  • +

    ONE: 1

    +
  • +
  • +

    ONE_MINUS_CONSTANT_ALPHA: 13

    +
  • +
  • +

    ONE_MINUS_CONSTANT_COLOR: 11

    +
  • +
  • +

    ONE_MINUS_DST_ALPHA: 9

    +
  • +
  • +

    ONE_MINUS_DST_COLOR: 5

    +
  • +
  • +

    ONE_MINUS_SRC_ALPHA: 7

    +
  • +
  • +

    ONE_MINUS_SRC_COLOR: 3

    +
  • +
  • +

    SRC_ALPHA: 6

    +
  • +
  • +

    SRC_ALPHA_SATURATE: 14

    +
  • +
  • +

    SRC_COLOR: 2

    +
  • +
  • +

    ZERO: 0

    +
  • +
+
+
+
+
+

blending_preset

+
+
+
    +
  • +

    ADDITIVE: 3

    +
  • +
  • +

    ALPHA: 1

    +
  • +
  • +

    DISABLED: 0

    +
  • +
  • +

    MULTIPLY: 4

    +
  • +
  • +

    PREMULTIPLIED_ALPHA: 2

    +
  • +
+
+
+
+
+

camera

+
+
+

delete()

+ +
+
+

get_projection_values()

+ +
+
+

get_view_values()

+ +
+
+

new()

+ +
+
+

set_ortho_projection()

+ +
+
+

set_view()

+ +
+
+
+
+

clear_mode

+
+
+
    +
  • +

    EVERY_DRAW: 0

    +
  • +
  • +

    EVERY_FRAME: 1

    +
  • +
  • +

    NEVER: 4

    +
  • +
  • +

    NEXT_FRAME_ONLY: 3

    +
  • +
  • +

    THIS_FRAME_ONLY: 2

    +
  • +
+
+
+
+
+

color

+
+
+

add()

+ +
+
+

create()

+ +
+
+

mul()

+ +
+
+

sub()

+ +
+
+
+
+

colors

+
+
+

BLACK

+
+
    +
  • +

    a: 1.0

    +
  • +
  • +

    b: 0.0

    +
  • +
  • +

    g: 0.0

    +
  • +
  • +

    r: 0.0

    +
  • +
+
+
+
+

BLUE

+
+
    +
  • +

    a: 1.0

    +
  • +
  • +

    b: 1.0

    +
  • +
  • +

    g: 0.0

    +
  • +
  • +

    r: 0.0

    +
  • +
+
+
+
+

CYAN

+
+
    +
  • +

    a: 1.0

    +
  • +
  • +

    b: 1.0

    +
  • +
  • +

    g: 1.0

    +
  • +
  • +

    r: 0.0

    +
  • +
+
+
+
+

GREEN

+
+
    +
  • +

    a: 1.0

    +
  • +
  • +

    b: 0.0

    +
  • +
  • +

    g: 1.0

    +
  • +
  • +

    r: 0.0

    +
  • +
+
+
+
+

MAGENTA

+
+
    +
  • +

    a: 1.0

    +
  • +
  • +

    b: 1.0

    +
  • +
  • +

    g: 0.0

    +
  • +
  • +

    r: 1.0

    +
  • +
+
+
+
+

RED

+
+
    +
  • +

    a: 1.0

    +
  • +
  • +

    b: 0.0

    +
  • +
  • +

    g: 0.0

    +
  • +
  • +

    r: 1.0

    +
  • +
+
+
+
+

WHITE

+
+
    +
  • +

    a: 1.0

    +
  • +
  • +

    b: 1.0

    +
  • +
  • +

    g: 1.0

    +
  • +
  • +

    r: 1.0

    +
  • +
+
+
+
+

YELLOW

+
+
    +
  • +

    a: 1.0

    +
  • +
  • +

    b: 0.0

    +
  • +
  • +

    g: 1.0

    +
  • +
  • +

    r: 1.0

    +
  • +
+
+
+
+
+
+

depth_stencil_format

+
+
+
    +
  • +

    DEPTH16: 1

    +
  • +
  • +

    DEPTH24: 2

    +
  • +
  • +

    DEPTH24_STENCIL8: 3

    +
  • +
  • +

    NONE: 0

    +
  • +
+
+
+
+
+

efx_reverb_presets

+
+
+
    +
  • +

    ALLEY: 14

    +
  • +
  • +

    ARENA: 9

    +
  • +
  • +

    AUDITORIUM: 6

    +
  • +
  • +

    BATHROOM: 3

    +
  • +
  • +

    CARPETED_HALLWAY: 11

    +
  • +
  • +

    CASTLE_ALCOVE: 34

    +
  • +
  • +

    CASTLE_COURTYARD: 33

    +
  • +
  • +

    CASTLE_CUPBOARD: 32

    +
  • +
  • +

    CASTLE_HALL: 31

    +
  • +
  • +

    CASTLE_LARGE_ROOM: 29

    +
  • +
  • +

    CASTLE_LONG_PASSAGE: 30

    +
  • +
  • +

    CASTLE_MEDIUM_ROOM: 28

    +
  • +
  • +

    CASTLE_SHORT_PASSAGE: 27

    +
  • +
  • +

    CASTLE_SMALL_ROOM: 26

    +
  • +
  • +

    CAVE: 8

    +
  • +
  • +

    CHAPEL: 111

    +
  • +
  • +

    CITY: 16

    +
  • +
  • +

    CITY_ABANDONED: 109

    +
  • +
  • +

    CITY_LIBRARY: 107

    +
  • +
  • +

    CITY_MUSEUM: 106

    +
  • +
  • +

    CITY_STREETS: 104

    +
  • +
  • +

    CITY_SUBWAY: 105

    +
  • +
  • +

    CITY_UNDERPASS: 108

    +
  • +
  • +

    CONCERT_HALL: 7

    +
  • +
  • +

    DIZZY: 24

    +
  • +
  • +

    DOME_SAINT_PAULS: 84

    +
  • +
  • +

    DOME_TOMB: 82

    +
  • +
  • +

    DRIVING_COMMENTATOR: 96

    +
  • +
  • +

    DRIVING_EMPTY_GRANDSTAND: 102

    +
  • +
  • +

    DRIVING_FULL_GRANDSTAND: 101

    +
  • +
  • +

    DRIVING_INCAR_LUXURY: 100

    +
  • +
  • +

    DRIVING_INCAR_RACER: 98

    +
  • +
  • +

    DRIVING_INCAR_SPORTS: 99

    +
  • +
  • +

    DRIVING_PIT_GARAGE: 97

    +
  • +
  • +

    DRIVING_TUNNEL: 103

    +
  • +
  • +

    DRUGGED: 23

    +
  • +
  • +

    DUSTY_ROOM: 110

    +
  • +
  • +

    FACTORY_ALCOVE: 43

    +
  • +
  • +

    FACTORY_COURTYARD: 42

    +
  • +
  • +

    FACTORY_CUPBOARD: 41

    +
  • +
  • +

    FACTORY_HALL: 40

    +
  • +
  • +

    FACTORY_LARGE_ROOM: 38

    +
  • +
  • +

    FACTORY_LONG_PASSAGE: 39

    +
  • +
  • +

    FACTORY_MEDIUM_ROOM: 37

    +
  • +
  • +

    FACTORY_SHORT_PASSAGE: 36

    +
  • +
  • +

    FACTORY_SMALL_ROOM: 35

    +
  • +
  • +

    FOREST: 15

    +
  • +
  • +

    GENERIC: 0

    +
  • +
  • +

    HALLWAY: 12

    +
  • +
  • +

    HANGAR: 10

    +
  • +
  • +

    ICEPALACE_ALCOVE: 52

    +
  • +
  • +

    ICEPALACE_COURTYARD: 51

    +
  • +
  • +

    ICEPALACE_CUPBOARD: 50

    +
  • +
  • +

    ICEPALACE_HALL: 49

    +
  • +
  • +

    ICEPALACE_LARGE_ROOM: 47

    +
  • +
  • +

    ICEPALACE_LONG_PASSAGE: 48

    +
  • +
  • +

    ICEPALACE_MEDIUM_ROOM: 46

    +
  • +
  • +

    ICEPALACE_SHORT_PASSAGE: 45

    +
  • +
  • +

    ICEPALACE_SMALL_ROOM: 44

    +
  • +
  • +

    LIVING_ROOM: 4

    +
  • +
  • +

    MOOD_HEAVEN: 93

    +
  • +
  • +

    MOOD_HELL: 94

    +
  • +
  • +

    MOOD_MEMORY: 95

    +
  • +
  • +

    MOUNTAINS: 17

    +
  • +
  • +

    OUTDOORS_BACKYARD: 88

    +
  • +
  • +

    OUTDOORS_CREEK: 91

    +
  • +
  • +

    OUTDOORS_DEEP_CANYON: 90

    +
  • +
  • +

    OUTDOORS_ROLLING_PLAINS: 89

    +
  • +
  • +

    OUTDOORS_VALLEY: 92

    +
  • +
  • +

    PADDED_CELL: 1

    +
  • +
  • +

    PARKING_LOT: 20

    +
  • +
  • +

    PIPE_LARGE: 86

    +
  • +
  • +

    PIPE_LONGTHIN: 85

    +
  • +
  • +

    PIPE_RESONANT: 87

    +
  • +
  • +

    PIPE_SMALL: 83

    +
  • +
  • +

    PLAIN: 19

    +
  • +
  • +

    PREFAB_CARAVAN: 81

    +
  • +
  • +

    PREFAB_OUTHOUSE: 80

    +
  • +
  • +

    PREFAB_PRACTISE_ROOM: 79

    +
  • +
  • +

    PREFAB_SCHOOL_ROOM: 78

    +
  • +
  • +

    PREFAB_WORKSHOP: 77

    +
  • +
  • +

    PSYCHOTIC: 25

    +
  • +
  • +

    QUARRY: 18

    +
  • +
  • +

    ROOM: 2

    +
  • +
  • +

    SEWER_PIPE: 21

    +
  • +
  • +

    SMALL_WATER_ROOM: 112

    +
  • +
  • +

    SPACE_STATION_ALCOVE: 60

    +
  • +
  • +

    SPACE_STATION_CUPBOARD: 59

    +
  • +
  • +

    SPACE_STATION_HALL: 58

    +
  • +
  • +

    SPACE_STATION_LARGE_ROOM: 56

    +
  • +
  • +

    SPACE_STATION_LONG_PASSAGE: 57

    +
  • +
  • +

    SPACE_STATION_MEDIUM_ROOM: 55

    +
  • +
  • +

    SPACE_STATION_SHORT_PASSAGE: 54

    +
  • +
  • +

    SPACE_STATION_SMALL_ROOM: 53

    +
  • +
  • +

    SPORT_EMPTY_STADIUM: 70

    +
  • +
  • +

    SPORT_FULL_STADIUM: 75

    +
  • +
  • +

    SPORT_GYMNASIUM: 74

    +
  • +
  • +

    SPORT_LARGE_SWIMMING_POOL: 73

    +
  • +
  • +

    SPORT_SMALL_SWIMMING_POOL: 72

    +
  • +
  • +

    SPORT_SQUASH_COURT: 71

    +
  • +
  • +

    SPORT_STADIUM_TANNOY: 76

    +
  • +
  • +

    STONE_CORRIDOR: 13

    +
  • +
  • +

    STONE_ROOM: 5

    +
  • +
  • +

    UNDERWATER: 22

    +
  • +
  • +

    WOODEN_GALLEON_ALCOVE: 69

    +
  • +
  • +

    WOODEN_GALLEON_COURTYARD: 68

    +
  • +
  • +

    WOODEN_GALLEON_CUPBOARD: 67

    +
  • +
  • +

    WOODEN_GALLEON_HALL: 66

    +
  • +
  • +

    WOODEN_GALLEON_LARGE_ROOM: 64

    +
  • +
  • +

    WOODEN_GALLEON_LONG_PASSAGE: 65

    +
  • +
  • +

    WOODEN_GALLEON_MEDIUM_ROOM: 63

    +
  • +
  • +

    WOODEN_GALLEON_SHORT_PASSAGE: 62

    +
  • +
  • +

    WOODEN_GALLEON_SMALL_ROOM: 61

    +
  • +
+
+
+
+
+

font

+
+
+

delete()

+ +
+
+

get_base()

+ +
+
+

get_line_height()

+ +
+
+

get_render_mode()

+ +
+
+

get_texture()

+ +
+
+

get_texture_size()

+ +
+
+

new()

+ +
+
+

num_glyphs()

+ +
+
+

num_kernings()

+ +
+
+

set_texture()

+ +
+
+
+
+

font_render_mode

+
+
+
    +
  • +

    GLYPH_IN_ALPHA: 0

    +
  • +
  • +

    GLYPH_IN_RED: 1

    +
  • +
  • +

    GLYPH_SPRITE: 2

    +
  • +
+
+
+
+
+

frame_timer

+
+
+

average_fps()

+ +
+
+

average_frame_time()

+ +
+
+

current_frame_duration()

+ +
+
+

get_average_interval()

+ +
+
+

get_log_level()

+ +
+
+

get_logging_interval()

+ +
+
+

is_average_enabled()

+ +
+
+

is_logging_enabled()

+ +
+
+

last_frame_duration()

+ +
+
+

set_average_interval()

+ +
+
+

set_log_level()

+ +
+
+

set_logging_interval()

+ +
+
+

total_number_frames()

+ +
+
+
+
+

fs

+
+
+

absolute_join_path()

+ +
+
+

absolute_path()

+ +
+
+

add_permissions()

+ +
+
+

basename()

+ +
+
+

change_permissions()

+ +
+
+

copy()

+ +
+
+

create_dir()

+ +
+
+

delete_empty_dir()

+ +
+
+

delete_file()

+ +
+
+

dirname()

+ +
+
+

exists()

+ +
+
+

file_size()

+ +
+
+

get_cache_path()

+ +
+
+

get_current_dir()

+ +
+
+

get_data_path()

+ +
+
+

get_extension()

+ +
+
+

get_home_path()

+ +
+
+

get_permissions()

+ +
+
+

get_save_path()

+ +
+
+

has_extension()

+ +
+
+

is_directory()

+ +
+
+

is_executable()

+ +
+
+

is_file()

+ +
+
+

is_hidden()

+ +
+
+

is_readable()

+ +
+
+

is_readable_file()

+ +
+
+

is_writable()

+ +
+
+

is_writable_file()

+ +
+
+

join_path()

+ +
+
+

last_access_time()

+ +
+
+

last_modification_time()

+ +
+
+

logical_drive_strings()

+ +
+
+

logical_drives()

+ +
+
+

remove_permissions()

+ +
+
+

rename()

+ +
+
+

set_current_dir()

+ +
+
+

set_hidden()

+ +
+
+
+
+

gfx_device

+
+
+

flash_window()

+ +
+
+

get_aspect_ratio()

+ +
+
+

get_current_video_mode()

+ +
+
+

get_drawable_resolution()

+ +
+
+

get_drawable_width()

+ +
+
+

get_hdrawable_eight()

+ +
+
+

get_height()

+ +
+
+

get_monitor()

+ +
+
+

get_primary_monitor_index()

+ +
+
+

get_resolution()

+ +
+
+

get_width()

+ +
+
+

get_window_monitor_index()

+ +
+
+

get_window_position()

+ +
+
+

get_window_position_x()

+ +
+
+

get_window_position_y()

+ +
+
+

get_window_scaling_factor()

+ +
+
+

is_fullscreen()

+ +
+
+

is_resizable()

+ +
+
+

num_monitors()

+ +
+
+

set_fullscreen()

+ +
+
+

set_swap_interval()

+ +
+
+

set_video_mode()

+ +
+
+

set_window_icon()

+ +
+
+

set_window_position()

+ +
+
+

set_window_size()

+ +
+
+

set_window_title()

+ +
+
+
+
+

hash64

+
+
+

hash_file_stat()

+ +
+
+

hash_string()

+ +
+
+

scan_hash_string()

+ +
+
+
+
+

input

+
+
+

add_joymappings_from_file()

+ +
+
+

add_joymappings_from_strings()

+ +
+
+

deadzone_normalize()

+ +
+
+

get_mouse_cursor_mode()

+ +
+
+

joy_axis_normvalue()

+ +
+
+

joy_axis_value()

+ +
+
+

joy_button_pressed()

+ +
+
+

joy_guid()

+ +
+
+

joy_hat_state()

+ +
+
+

joy_mapped()

+ +
+
+

joy_name()

+ +
+
+

joy_num_axes()

+ +
+
+

joy_num_buttons()

+ +
+
+

joy_num_hats()

+ +
+
+

joy_present()

+ +
+
+

joy_state()

+ +
+
+

joymapped_state()

+ +
+
+

key_down()

+ +
+
+

key_state()

+ +
+
+

mouse_state()

+ +
+
+

num_joymappings()

+ +
+
+

set_mouse_cursor_mode()

+ +
+
+
+
+

joy_axis

+
+
+
    +
  • +

    LTRIGGER: 4

    +
  • +
  • +

    LX: 0

    +
  • +
  • +

    LY: 1

    +
  • +
  • +

    RTRIGGER: 5

    +
  • +
  • +

    RX: 2

    +
  • +
  • +

    RY: 3

    +
  • +
  • +

    UNKNOWN: -1

    +
  • +
+
+
+
+
+

joy_button

+
+
+
    +
  • +

    A: 0

    +
  • +
  • +

    B: 1

    +
  • +
  • +

    BACK: 4

    +
  • +
  • +

    DPAD_DOWN: 12

    +
  • +
  • +

    DPAD_LEFT: 13

    +
  • +
  • +

    DPAD_RIGHT: 14

    +
  • +
  • +

    DPAD_UP: 11

    +
  • +
  • +

    GUIDE: 5

    +
  • +
  • +

    LBUMPER: 9

    +
  • +
  • +

    LSTICK: 7

    +
  • +
  • +

    MISC1: 15

    +
  • +
  • +

    PADDLE1: 16

    +
  • +
  • +

    PADDLE2: 17

    +
  • +
  • +

    PADDLE3: 18

    +
  • +
  • +

    PADDLE4: 19

    +
  • +
  • +

    RBUMPER: 10

    +
  • +
  • +

    RSTICK: 8

    +
  • +
  • +

    START: 6

    +
  • +
  • +

    UNKNOWN: -1

    +
  • +
  • +

    X: 2

    +
  • +
  • +

    Y: 3

    +
  • +
+
+
+
+
+

joy_dead_zone

+
+
+
    +
  • +

    LEFT_STICK: 0.23953978717327

    +
  • +
  • +

    RIGHT_STICK: 0.26517534255981

    +
  • +
  • +

    TRIGGER: 0.00091555528342724

    +
  • +
+
+
+
+
+

joy_hat_state

+
+
+
    +
  • +

    CENTERED: 0

    +
  • +
  • +

    DOWN: 4

    +
  • +
  • +

    LEFT: 8

    +
  • +
  • +

    LEFT_DOWN: 12

    +
  • +
  • +

    LEFT_UP: 9

    +
  • +
  • +

    RIGHT: 2

    +
  • +
  • +

    RIGHT_DOWN: 6

    +
  • +
  • +

    RIGHT_UP: 3

    +
  • +
  • +

    UP: 1

    +
  • +
+
+
+
+
+

keymod

+
+
+
    +
  • +

    ALT: 768

    +
  • +
  • +

    CAPS: 8192

    +
  • +
  • +

    CTRL: 192

    +
  • +
  • +

    LALT: 256

    +
  • +
  • +

    LCTRL: 64

    +
  • +
  • +

    LSHIFT: 1

    +
  • +
  • +

    LSUPER: 1024

    +
  • +
  • +

    MODE: 16384

    +
  • +
  • +

    NONE: 0

    +
  • +
  • +

    NUM: 4096

    +
  • +
  • +

    RALT: 512

    +
  • +
  • +

    RCTRL: 128

    +
  • +
  • +

    RSHIFT: 2

    +
  • +
  • +

    RSUPER: 2048

    +
  • +
  • +

    SHIFT: 3

    +
  • +
  • +

    SUPER: 3072

    +
  • +
  • +

    SYM: 32768

    +
  • +
+
+
+
+
+

keysym

+
+
+
    +
  • +

    A: 26

    +
  • +
  • +

    AMPERSAND: 113

    +
  • +
  • +

    APPLICATION: 126

    +
  • +
  • +

    APP_SWITCH: 211

    +
  • +
  • +

    ASTERISK: 116

    +
  • +
  • +

    AT: 122

    +
  • +
  • +

    AVR_INPUT: 206

    +
  • +
  • +

    AVR_POWER: 205

    +
  • +
  • +

    B: 27

    +
  • +
  • +

    BACK: 135

    +
  • +
  • +

    BACKQUOTE: 25

    +
  • +
  • +

    BACKSLASH: 23

    +
  • +
  • +

    BACKSPACE: 0

    +
  • +
  • +

    BOOKMARK: 198

    +
  • +
  • +

    BUTTON_1: 212

    +
  • +
  • +

    BUTTON_10: 221

    +
  • +
  • +

    BUTTON_11: 222

    +
  • +
  • +

    BUTTON_12: 223

    +
  • +
  • +

    BUTTON_13: 224

    +
  • +
  • +

    BUTTON_14: 225

    +
  • +
  • +

    BUTTON_15: 226

    +
  • +
  • +

    BUTTON_16: 227

    +
  • +
  • +

    BUTTON_2: 213

    +
  • +
  • +

    BUTTON_3: 214

    +
  • +
  • +

    BUTTON_4: 215

    +
  • +
  • +

    BUTTON_5: 216

    +
  • +
  • +

    BUTTON_6: 217

    +
  • +
  • +

    BUTTON_7: 218

    +
  • +
  • +

    BUTTON_8: 219

    +
  • +
  • +

    BUTTON_9: 220

    +
  • +
  • +

    BUTTON_A: 161

    +
  • +
  • +

    BUTTON_B: 162

    +
  • +
  • +

    BUTTON_C: 163

    +
  • +
  • +

    BUTTON_L1: 167

    +
  • +
  • +

    BUTTON_L2: 169

    +
  • +
  • +

    BUTTON_MODE: 175

    +
  • +
  • +

    BUTTON_R1: 168

    +
  • +
  • +

    BUTTON_R2: 170

    +
  • +
  • +

    BUTTON_SELECT: 174

    +
  • +
  • +

    BUTTON_START: 173

    +
  • +
  • +

    BUTTON_THUMBL: 171

    +
  • +
  • +

    BUTTON_THUMBR: 172

    +
  • +
  • +

    BUTTON_X: 164

    +
  • +
  • +

    BUTTON_Y: 165

    +
  • +
  • +

    BUTTON_Z: 166

    +
  • +
  • +

    C: 28

    +
  • +
  • +

    CALL: 136

    +
  • +
  • +

    CAMERA: 143

    +
  • +
  • +

    CAPS_LOCK: 95

    +
  • +
  • +

    CAPTIONS: 199

    +
  • +
  • +

    CARET: 123

    +
  • +
  • +

    CHANNEL_DOWN: 191

    +
  • +
  • +

    CHANNEL_UP: 190

    +
  • +
  • +

    CLEAR: 108

    +
  • +
  • +

    COLON: 117

    +
  • +
  • +

    COMMA: 7

    +
  • +
  • +

    D: 29

    +
  • +
  • +

    DELETE: 52

    +
  • +
  • +

    DOLLAR: 112

    +
  • +
  • +

    DOWN: 71

    +
  • +
  • +

    DPAD_CENTER: 140

    +
  • +
  • +

    DVR: 197

    +
  • +
  • +

    E: 30

    +
  • +
  • +

    END: 76

    +
  • +
  • +

    ENDCALL: 137

    +
  • +
  • +

    ENVELOPE: 146

    +
  • +
  • +

    EQUALS: 119

    +
  • +
  • +

    ESCAPE: 3

    +
  • +
  • +

    EXCLAIM: 109

    +
  • +
  • +

    EXPLORER: 145

    +
  • +
  • +

    F: 31

    +
  • +
  • +

    F1: 79

    +
  • +
  • +

    F10: 88

    +
  • +
  • +

    F11: 89

    +
  • +
  • +

    F12: 90

    +
  • +
  • +

    F13: 91

    +
  • +
  • +

    F14: 92

    +
  • +
  • +

    F15: 93

    +
  • +
  • +

    F2: 80

    +
  • +
  • +

    F3: 81

    +
  • +
  • +

    F4: 82

    +
  • +
  • +

    F5: 83

    +
  • +
  • +

    F6: 84

    +
  • +
  • +

    F7: 85

    +
  • +
  • +

    F8: 86

    +
  • +
  • +

    F9: 87

    +
  • +
  • +

    FOCUS: 149

    +
  • +
  • +

    FORWARD: 179

    +
  • +
  • +

    FUNCTION_KEY: 176

    +
  • +
  • +

    G: 32

    +
  • +
  • +

    GREATER: 120

    +
  • +
  • +

    GUIDE: 196

    +
  • +
  • +

    H: 33

    +
  • +
  • +

    HASH: 111

    +
  • +
  • +

    HEADSETHOOK: 148

    +
  • +
  • +

    HELP: 127

    +
  • +
  • +

    HOME: 75

    +
  • +
  • +

    I: 34

    +
  • +
  • +

    INFO: 189

    +
  • +
  • +

    INSERT: 74

    +
  • +
  • +

    J: 35

    +
  • +
  • +

    K: 36

    +
  • +
  • +

    KP0: 53

    +
  • +
  • +

    KP1: 54

    +
  • +
  • +

    KP2: 55

    +
  • +
  • +

    KP3: 56

    +
  • +
  • +

    KP4: 57

    +
  • +
  • +

    KP5: 58

    +
  • +
  • +

    KP6: 59

    +
  • +
  • +

    KP7: 60

    +
  • +
  • +

    KP8: 61

    +
  • +
  • +

    KP9: 62

    +
  • +
  • +

    KP_COMMA: 185

    +
  • +
  • +

    KP_DIVIDE: 64

    +
  • +
  • +

    KP_ENTER: 68

    +
  • +
  • +

    KP_EQUALS: 69

    +
  • +
  • +

    KP_LEFTPAREN: 186

    +
  • +
  • +

    KP_MINUS: 66

    +
  • +
  • +

    KP_MULTIPLY: 65

    +
  • +
  • +

    KP_PERIOD: 63

    +
  • +
  • +

    KP_PLUS: 67

    +
  • +
  • +

    KP_RIGHTPAREN: 187

    +
  • +
  • +

    L: 37

    +
  • +
  • +

    LALT: 102

    +
  • +
  • +

    LCTRL: 100

    +
  • +
  • +

    LEFT: 73

    +
  • +
  • +

    LEFTBRACKET: 22

    +
  • +
  • +

    LEFTPAREN: 114

    +
  • +
  • +

    LESS: 118

    +
  • +
  • +

    LSHIFT: 98

    +
  • +
  • +

    LSUPER: 104

    +
  • +
  • +

    M: 38

    +
  • +
  • +

    MEDIA_CLOSE: 182

    +
  • +
  • +

    MEDIA_EJECT: 183

    +
  • +
  • +

    MEDIA_FAST_FORWARD: 157

    +
  • +
  • +

    MEDIA_NEXT: 154

    +
  • +
  • +

    MEDIA_PAUSE: 181

    +
  • +
  • +

    MEDIA_PLAY: 180

    +
  • +
  • +

    MEDIA_PLAY_PAUSE: 152

    +
  • +
  • +

    MEDIA_PREVIOUS: 155

    +
  • +
  • +

    MEDIA_RECORD: 184

    +
  • +
  • +

    MEDIA_REWIND: 156

    +
  • +
  • +

    MEDIA_STOP: 153

    +
  • +
  • +

    MENU: 107

    +
  • +
  • +

    MINUS: 8

    +
  • +
  • +

    MODE: 125

    +
  • +
  • +

    MOVE_END: 178

    +
  • +
  • +

    MOVE_HOME: 177

    +
  • +
  • +

    MUTE: 158

    +
  • +
  • +

    N: 39

    +
  • +
  • +

    N0: 11

    +
  • +
  • +

    N1: 12

    +
  • +
  • +

    N2: 13

    +
  • +
  • +

    N3: 14

    +
  • +
  • +

    N4: 15

    +
  • +
  • +

    N5: 16

    +
  • +
  • +

    N6: 17

    +
  • +
  • +

    N7: 18

    +
  • +
  • +

    N8: 19

    +
  • +
  • +

    N9: 20

    +
  • +
  • +

    NOTIFICATION: 150

    +
  • +
  • +

    NUM: 147

    +
  • +
  • +

    NUM_LOCK: 94

    +
  • +
  • +

    O: 40

    +
  • +
  • +

    P: 41

    +
  • +
  • +

    PAGEDOWN: 78

    +
  • +
  • +

    PAGEUP: 77

    +
  • +
  • +

    PAUSE: 106

    +
  • +
  • +

    PERIOD: 9

    +
  • +
  • +

    PICTSYMBOLS: 159

    +
  • +
  • +

    PLUS: 6

    +
  • +
  • +

    POUND: 139

    +
  • +
  • +

    POWER: 129

    +
  • +
  • +

    PRINTSCREEN: 105

    +
  • +
  • +

    PROG_BLUE: 210

    +
  • +
  • +

    PROG_GREEN: 208

    +
  • +
  • +

    PROG_RED: 207

    +
  • +
  • +

    PROG_YELLOW: 209

    +
  • +
  • +

    Q: 42

    +
  • +
  • +

    QUESTION: 121

    +
  • +
  • +

    QUOTE: 5

    +
  • +
  • +

    QUOTEDBL: 110

    +
  • +
  • +

    R: 43

    +
  • +
  • +

    RALT: 101

    +
  • +
  • +

    RCTRL: 99

    +
  • +
  • +

    RETURN: 2

    +
  • +
  • +

    RIGHT: 72

    +
  • +
  • +

    RIGHTBRACKET: 24

    +
  • +
  • +

    RIGHTPAREN: 115

    +
  • +
  • +

    RSHIFT: 97

    +
  • +
  • +

    RSUPER: 103

    +
  • +
  • +

    S: 44

    +
  • +
  • +

    SCROLL_LOCK: 96

    +
  • +
  • +

    SEARCH: 151

    +
  • +
  • +

    SEMICOLON: 21

    +
  • +
  • +

    SETTINGS: 200

    +
  • +
  • +

    SLASH: 10

    +
  • +
  • +

    SOFT_LEFT: 133

    +
  • +
  • +

    SOFT_RIGHT: 134

    +
  • +
  • +

    SPACE: 4

    +
  • +
  • +

    STAR: 138

    +
  • +
  • +

    STB_INPUT: 204

    +
  • +
  • +

    STB_POWER: 203

    +
  • +
  • +

    SWITCH_CHARSET: 160

    +
  • +
  • +

    SYM: 144

    +
  • +
  • +

    SYSREQ: 128

    +
  • +
  • +

    T: 45

    +
  • +
  • +

    TAB: 1

    +
  • +
  • +

    TV: 194

    +
  • +
  • +

    TV_INPUT: 202

    +
  • +
  • +

    TV_POWER: 201

    +
  • +
  • +

    U: 46

    +
  • +
  • +

    UNDERSCORE: 124

    +
  • +
  • +

    UNDO: 130

    +
  • +
  • +

    UNKNOWN: -1

    +
  • +
  • +

    UP: 70

    +
  • +
  • +

    V: 47

    +
  • +
  • +

    VOLUME_DOWN: 142

    +
  • +
  • +

    VOLUME_MUTE: 188

    +
  • +
  • +

    VOLUME_UP: 141

    +
  • +
  • +

    W: 48

    +
  • +
  • +

    WINDOW: 195

    +
  • +
  • +

    WORLD1: 131

    +
  • +
  • +

    WORLD2: 132

    +
  • +
  • +

    X: 49

    +
  • +
  • +

    Y: 50

    +
  • +
  • +

    Z: 51

    +
  • +
  • +

    ZOOM_IN: 192

    +
  • +
  • +

    ZOOM_OUT: 193

    +
  • +
+
+
+
+
+

log

+
+
+

debug()

+ +
+
+

error()

+ +
+
+

fatal()

+ +
+
+

info()

+ +
+
+

verbose()

+ +
+
+

warn()

+ +
+
+
+
+

log_level

+
+
+
    +
  • +

    DEBUG: 2

    +
  • +
  • +

    ERROR: 5

    +
  • +
  • +

    FATAL: 6

    +
  • +
  • +

    INFO: 3

    +
  • +
  • +

    OFF: 0

    +
  • +
  • +

    UNKNOWN: -1

    +
  • +
  • +

    VERBOSE: 1

    +
  • +
  • +

    WARN: 4

    +
  • +
+
+
+
+
+

loop_mode

+
+
+
    +
  • +

    DISABLED: 0

    +
  • +
  • +

    ENABLED: 1

    +
  • +
+
+
+
+
+

mesh_sprite

+
+
+

add_child()

+ +
+
+

are_unique_indices()

+ +
+
+

are_unique_vertices()

+ +
+
+

clone()

+ +
+
+

copy_indices()

+ +
+
+

copy_vertices()

+ +
+
+

create_vertices_from_texels()

+ +
+
+

delete()

+ +
+
+

emplace_indices()

+ +
+
+

emplace_vertices()

+ +
+
+

get_aabb()

+ +
+
+

get_abs_anchor_point()

+ +
+
+

get_alpha()

+ +
+
+

get_anchor_point()

+ +
+
+

get_bytes_per_vertex()

+ +
+
+

get_child()

+ +
+
+

get_child_order_index()

+ +
+
+

get_children()

+ +
+
+

get_color()

+ +
+
+

get_dest_blending_factor()

+ +
+
+

get_height()

+ +
+
+

get_indices()

+ +
+
+

get_last_frame_rendered()

+ +
+
+

get_last_frame_updated()

+ +
+
+

get_layer()

+ +
+
+

get_parent()

+ +
+
+

get_position()

+ +
+
+

get_rotation()

+ +
+
+

get_scale()

+ +
+
+

get_size()

+ +
+
+

get_src_blending_factor()

+ +
+
+

get_texrect()

+ +
+
+

get_texture()

+ +
+
+

get_vertices()

+ +
+
+

get_visit_order_index()

+ +
+
+

get_visit_order_state()

+ +
+
+

get_width()

+ +
+
+

is_blending_enabled()

+ +
+
+

is_enabled()

+ +
+
+

is_flipped_x()

+ +
+
+

is_flipped_y()

+ +
+
+

new()

+ +
+
+

num_bytes()

+ +
+
+

num_children()

+ +
+
+

num_indices()

+ +
+
+

num_vertices()

+ +
+
+

remove_all_children()

+ +
+
+

remove_child()

+ +
+
+

remove_child_at()

+ +
+
+

reset_texture()

+ +
+
+

set_abs_anchor_point()

+ +
+
+

set_alpha()

+ +
+
+

set_anchor_point()

+ +
+
+

set_blending_enabled()

+ +
+
+

set_blending_factors()

+ +
+
+

set_blending_preset()

+ +
+
+

set_color()

+ +
+
+

set_enabled()

+ +
+
+

set_flipped_x()

+ +
+
+

set_flipped_y()

+ +
+
+

set_indices()

+ +
+
+

set_layer()

+ +
+
+

set_parent()

+ +
+
+

set_position()

+ +
+
+

set_rotation()

+ +
+
+

set_scale()

+ +
+
+

set_scale_x()

+ +
+
+

set_scale_y()

+ +
+
+

set_size()

+ +
+
+

set_texrect()

+ +
+
+

set_texture()

+ +
+
+

set_vertices()

+ +
+
+

set_visit_order_state()

+ +
+
+

swap_children()

+ +
+
+

swap_node_back()

+ +
+
+

swap_node_forward()

+ +
+
+ + +
+
+
+
+

mouse_button

+
+
+
    +
  • +

    FIFTH: 4

    +
  • +
  • +

    FOURTH: 3

    +
  • +
  • +

    LEFT: 0

    +
  • +
  • +

    MIDDLE: 1

    +
  • +
  • +

    RIGHT: 2

    +
  • +
+
+
+
+
+

mouse_cursor_mode

+
+
+
    +
  • +

    DISABLED: 2

    +
  • +
  • +

    HIDDEN: 1

    +
  • +
  • +

    NORMAL: 0

    +
  • +
+
+
+
+
+

particle_affector

+
+
+

add_color_step()

+ +
+
+

add_position_step()

+ +
+
+

add_rotation_step()

+ +
+
+

add_size_step()

+ +
+
+

add_velocity_step()

+ +
+
+

clear_steps()

+ +
+
+

get_base_scale()

+ +
+
+

get_color_steps()

+ +
+
+

get_position_steps()

+ +
+
+

get_rotation_steps()

+ +
+
+

get_size_steps()

+ +
+
+

get_type()

+ +
+
+

get_velocity_steps()

+ +
+
+

is_enabled()

+ +
+
+

num_steps()

+ +
+
+

remove_step()

+ +
+
+

set_base_scale()

+ +
+
+

set_enabled()

+ +
+
+
+
+

particle_system

+
+
+

add_child()

+ +
+
+

add_color_affector()

+ +
+
+

add_position_affector()

+ +
+
+

add_rotation_affector()

+ +
+
+

add_size_affector()

+ +
+
+

add_velocity_affector()

+ +
+
+

clear_affectors()

+ +
+
+

clone()

+ +
+
+

delete()

+ +
+
+

emit_particles()

+ +
+
+

get_abs_anchor_point()

+ +
+
+

get_affector()

+ +
+
+

get_affectors_enabled()

+ +
+
+

get_alpha()

+ +
+
+

get_child()

+ +
+
+

get_child_order_index()

+ +
+
+

get_children()

+ +
+
+

get_color()

+ +
+
+

get_in_local_space()

+ +
+
+

get_last_frame_updated()

+ +
+
+

get_layer()

+ +
+
+

get_parent()

+ +
+
+

get_particles_update_enabled()

+ +
+
+

get_position()

+ +
+
+

get_rotation()

+ +
+
+

get_scale()

+ +
+
+

get_visit_order_index()

+ +
+
+

get_visit_order_state()

+ +
+
+

is_enabled()

+ +
+
+

kill_particles()

+ +
+
+

new()

+ +
+
+

num_affectors()

+ +
+
+

num_alive_particles()

+ +
+
+

num_children()

+ +
+
+

num_particles()

+ +
+
+

remove_affector()

+ +
+
+

remove_all_children()

+ +
+
+

remove_child()

+ +
+
+

remove_child_at()

+ +
+
+

set_abs_anchor_point()

+ +
+
+

set_affectors_enabled()

+ +
+
+

set_alpha()

+ +
+
+

set_anchor_point()

+ +
+
+

set_blending_factors()

+ +
+
+

set_blending_preset()

+ +
+
+

set_color()

+ +
+
+

set_enabled()

+ +
+
+

set_flipped_x()

+ +
+
+

set_flipped_y()

+ +
+
+

set_in_local_space()

+ +
+
+

set_layer()

+ +
+
+

set_parent()

+ +
+
+

set_particles_update_enabled()

+ +
+
+

set_position()

+ +
+
+

set_rotation()

+ +
+
+

set_scale()

+ +
+
+

set_scale_x()

+ +
+
+

set_scale_y()

+ +
+
+

set_texture()

+ +
+
+

set_texture_rect()

+ +
+
+

set_visit_order_state()

+ +
+
+

swap_children()

+ +
+
+

swap_node_back()

+ +
+
+

swap_node_forward()

+ +
+
+ + +
+
+
+
+

permission

+
+
+
    +
  • +

    EXECUTE: 4

    +
  • +
  • +

    READ: 1

    +
  • +
  • +

    WRITE: 2

    +
  • +
+
+
+
+
+

rect

+
+
+

contains()

+ +
+
+

contains_point()

+ +
+
+

create()

+ +
+
+

create_center_size()

+ +
+
+

create_min_max()

+ +
+
+

get_center()

+ +
+
+

get_max()

+ +
+
+

get_min()

+ +
+
+

intersect()

+ +
+
+

invert_size()

+ +
+
+

overlaps()

+ +
+
+

set_center()

+ +
+
+

set_min_max()

+ +
+
+
+
+

rewind_mode

+
+
+
    +
  • +

    BACKWARD: 1

    +
  • +
  • +

    FROM_START: 0

    +
  • +
+
+
+
+
+

scenenode

+
+
+

add_child()

+ +
+
+

clone()

+ +
+
+

delete()

+ +
+
+

get_abs_anchor_point()

+ +
+
+

get_alpha()

+ +
+
+

get_child()

+ +
+
+

get_child_order_index()

+ +
+
+

get_children()

+ +
+
+

get_color()

+ +
+
+

get_last_frame_updated()

+ +
+
+

get_layer()

+ +
+
+

get_parent()

+ +
+
+

get_position()

+ +
+
+

get_rotation()

+ +
+
+

get_scale()

+ +
+
+

get_visit_order_index()

+ +
+
+

get_visit_order_state()

+ +
+
+

is_enabled()

+ +
+
+

new()

+ +
+
+

num_children()

+ +
+
+

remove_all_children()

+ +
+
+

remove_child()

+ +
+
+

remove_child_at()

+ +
+
+

set_abs_anchor_point()

+ +
+
+

set_alpha()

+ +
+
+

set_color()

+ +
+
+

set_enabled()

+ +
+
+

set_layer()

+ +
+
+

set_parent()

+ +
+
+

set_position()

+ +
+
+

set_rotation()

+ +
+
+

set_scale()

+ +
+
+

set_scale_x()

+ +
+
+

set_scale_y()

+ +
+
+

set_visit_order_state()

+ +
+
+

swap_children()

+ +
+
+

swap_node_back()

+ +
+
+

swap_node_forward()

+ +
+
+ + +
+
+
+
+

shader

+
+
+

delete()

+ +
+
+

get_log_on_errors()

+ +
+
+

is_binary_cache_enabled()

+ +
+
+

is_linked()

+ +
+
+

load_from_file()

+ +
+
+

load_from_file_default_fragment()

+ +
+
+

load_from_file_default_vertex()

+ +
+
+

load_from_memory()

+ +
+
+

load_from_memory_default_fragment()

+ +
+
+

load_from_memory_default_vertex()

+ +
+
+

load_from_memory_with_hashes()

+ +
+
+

new()

+ +
+
+

register_batched_shader()

+ +
+
+

retrieve_infolog()

+ +
+
+

retrieve_infolog_length()

+ +
+
+

set_attribute()

+ +
+
+

set_binary_cache_enabled()

+ +
+
+

set_glshaderprogram_label()

+ +
+
+

set_log_on_errors()

+ +
+
+
+
+

shader_default_fragment

+
+
+
    +
  • +

    SPRITE: 0

    +
  • +
  • +

    SPRITE_GRAY: 1

    +
  • +
  • +

    SPRITE_NOTEXTURE: 2

    +
  • +
  • +

    TEXTNODE_ALPHA: 3

    +
  • +
  • +

    TEXTNODE_RED: 4

    +
  • +
+
+
+
+
+

shader_default_vertex

+
+
+
    +
  • +

    BATCHED_MESHSPRITES: 7

    +
  • +
  • +

    BATCHED_MESHSPRITES_NOTEXTURE: 8

    +
  • +
  • +

    BATCHED_SPRITES: 5

    +
  • +
  • +

    BATCHED_SPRITES_NOTEXTURE: 6

    +
  • +
  • +

    BATCHED_TEXTNODES: 9

    +
  • +
  • +

    MESHSPRITE: 2

    +
  • +
  • +

    MESHSPRITE_NOTEXTURE: 3

    +
  • +
  • +

    SPRITE: 0

    +
  • +
  • +

    SPRITE_NOTEXTURE: 1

    +
  • +
  • +

    TEXTNODE: 4

    +
  • +
+
+
+
+
+

shader_introspection

+
+
+
    +
  • +

    DISABLED: 2

    +
  • +
  • +

    ENABLED: 0

    +
  • +
  • +

    NO_UNIFORMS_IN_BLOCKS: 1

    +
  • +
+
+
+
+
+

shaderstate

+
+
+

delete()

+ +
+
+

get_node()

+ +
+
+

get_shader()

+ +
+
+

new()

+ +
+
+

reset_shader()

+ +
+
+

set_node()

+ +
+
+

set_shader()

+ +
+
+

set_texture()

+ +
+
+

set_uniform_float_color()

+ +
+
+

set_uniform_float_value1()

+ +
+
+

set_uniform_float_value2()

+ +
+
+

set_uniform_float_value3()

+ +
+
+

set_uniform_float_value4()

+ +
+
+

set_uniform_float_vector()

+ +
+
+

set_uniform_float_vector2()

+ +
+
+

set_uniform_float_vector3()

+ +
+
+

set_uniform_float_vector4()

+ +
+
+

set_uniform_int_value1()

+ +
+
+

set_uniform_int_value2()

+ +
+
+

set_uniform_int_value3()

+ +
+
+

set_uniform_int_value4()

+ +
+
+

set_uniform_int_vector()

+ +
+
+

set_uniform_int_vector2()

+ +
+
+

set_uniform_int_vector3()

+ +
+
+

set_uniform_int_vector4()

+ +
+
+
+
+

sprite

+
+
+

add_child()

+ +
+
+

clone()

+ +
+
+

delete()

+ +
+
+

get_aabb()

+ +
+
+

get_abs_anchor_point()

+ +
+
+

get_alpha()

+ +
+
+

get_anchor_point()

+ +
+
+

get_child()

+ +
+
+

get_child_order_index()

+ +
+
+

get_children()

+ +
+
+

get_color()

+ +
+
+

get_dest_blending_factor()

+ +
+
+

get_height()

+ +
+
+

get_last_frame_rendered()

+ +
+
+

get_last_frame_updated()

+ +
+
+

get_layer()

+ +
+
+

get_parent()

+ +
+
+

get_position()

+ +
+
+

get_rotation()

+ +
+
+

get_scale()

+ +
+
+

get_size()

+ +
+
+

get_src_blending_factor()

+ +
+
+

get_texrect()

+ +
+
+

get_texture()

+ +
+
+

get_visit_order_index()

+ +
+
+

get_visit_order_state()

+ +
+
+

get_width()

+ +
+
+

is_blending_enabled()

+ +
+
+

is_enabled()

+ +
+
+

is_flipped_x()

+ +
+
+

is_flipped_y()

+ +
+
+

new()

+ +
+
+

num_children()

+ +
+
+

remove_all_children()

+ +
+
+

remove_child()

+ +
+
+

remove_child_at()

+ +
+
+

reset_texture()

+ +
+
+

set_abs_anchor_point()

+ +
+
+

set_alpha()

+ +
+
+

set_anchor_point()

+ +
+
+

set_blending_enabled()

+ +
+
+

set_blending_factors()

+ +
+
+

set_blending_preset()

+ +
+
+

set_color()

+ +
+
+

set_enabled()

+ +
+
+

set_flipped_x()

+ +
+
+

set_flipped_y()

+ +
+
+

set_layer()

+ +
+
+

set_parent()

+ +
+
+

set_position()

+ +
+
+

set_rotation()

+ +
+
+

set_scale()

+ +
+
+

set_scale_x()

+ +
+
+

set_scale_y()

+ +
+
+

set_size()

+ +
+
+

set_texrect()

+ +
+
+

set_texture()

+ +
+
+

set_visit_order_state()

+ +
+
+

swap_children()

+ +
+
+

swap_node_back()

+ +
+
+

swap_node_forward()

+ +
+
+ + +
+
+
+
+

start()

+
+ +
+
+
+

tex_filtering

+
+
+
    +
  • +

    LINEAR: 1

    +
  • +
  • +

    LINEAR_MIPMAP_LINEAR: 5

    +
  • +
  • +

    LINEAR_MIPMAP_NEAREST: 3

    +
  • +
  • +

    NEAREST: 0

    +
  • +
  • +

    NEAREST_MIPMAP_LINEAR: 4

    +
  • +
  • +

    NEAREST_MIPMAP_NEAREST: 2

    +
  • +
+
+
+
+
+

tex_format

+
+
+
    +
  • +

    R8: 0

    +
  • +
  • +

    RG8: 1

    +
  • +
  • +

    RGB8: 2

    +
  • +
  • +

    RGBA8: 3

    +
  • +
  • +

    UNKNOWN: 4

    +
  • +
+
+
+
+
+

tex_wrap

+
+
+
    +
  • +

    CLAMP_TO_EDGE: 0

    +
  • +
  • +

    MIRRORED_REPEAT: 1

    +
  • +
  • +

    REPEAT: 2

    +
  • +
+
+
+
+
+

text_alignment

+
+
+
    +
  • +

    CENTER: 1

    +
  • +
  • +

    LEFT: 0

    +
  • +
  • +

    RIGHT: 2

    +
  • +
+
+
+
+
+

textnode

+
+
+

add_child()

+ +
+
+

calculate_boundaries()

+ +
+
+

clone()

+ +
+
+

delete()

+ +
+
+

get_aabb()

+ +
+
+

get_abs_anchor_point()

+ +
+
+

get_absheight()

+ +
+
+

get_abslineheight()

+ +
+
+

get_abswidth()

+ +
+
+

get_alignment()

+ +
+
+

get_alpha()

+ +
+
+

get_anchor_point()

+ +
+
+

get_child()

+ +
+
+

get_child_order_index()

+ +
+
+

get_children()

+ +
+
+

get_color()

+ +
+
+

get_dest_blending_factor()

+ +
+
+

get_font()

+ +
+
+

get_height()

+ +
+
+

get_kerning()

+ +
+
+

get_last_frame_rendered()

+ +
+
+

get_last_frame_updated()

+ +
+
+

get_layer()

+ +
+
+

get_lineheight()

+ +
+
+

get_parent()

+ +
+
+

get_position()

+ +
+
+

get_render_mode()

+ +
+
+

get_rotation()

+ +
+
+

get_scale()

+ +
+
+

get_size()

+ +
+
+

get_src_blending_factor()

+ +
+
+

get_string()

+ +
+
+

get_visit_order_index()

+ +
+
+

get_visit_order_state()

+ +
+
+

get_width()

+ +
+
+

is_blending_enabled()

+ +
+
+

is_enabled()

+ +
+
+

new()

+ +
+
+

num_children()

+ +
+
+

remove_all_children()

+ +
+
+

remove_child()

+ +
+
+

remove_child_at()

+ +
+
+

set_abs_anchor_point()

+ +
+
+

set_alignment()

+ +
+
+

set_alpha()

+ +
+
+

set_anchor_point()

+ +
+
+

set_blending_enabled()

+ +
+
+

set_blending_factors()

+ +
+
+

set_blending_preset()

+ +
+
+

set_color()

+ +
+
+

set_enabled()

+ +
+
+

set_font()

+ +
+
+

set_kerning()

+ +
+
+

set_layer()

+ +
+
+

set_lineheight()

+ +
+
+

set_parent()

+ +
+
+

set_position()

+ +
+
+

set_render_mode()

+ +
+
+

set_rotation()

+ +
+
+

set_scale()

+ +
+
+

set_scale_x()

+ +
+
+

set_scale_y()

+ +
+
+

set_string()

+ +
+
+

set_visit_order_state()

+ +
+
+

swap_children()

+ +
+
+

swap_node_back()

+ +
+
+

swap_node_forward()

+ +
+
+ + +
+
+
+
+

texture

+
+
+

datasize()

+ +
+
+

delete()

+ +
+
+

get_chromakey_color()

+ +
+
+

get_format()

+ +
+
+

get_height()

+ +
+
+

get_mag_filtering()

+ +
+
+

get_min_filtering()

+ +
+
+

get_width()

+ +
+
+

get_wrap()

+ +
+
+

init()

+ +
+
+

is_chromakey_enabled()

+ +
+
+

is_compressed()

+ +
+
+

mip_levels()

+ +
+
+

new()

+ +
+
+

new_init()

+ +
+
+

num_channels()

+ +
+
+

set_chromakey_color()

+ +
+
+

set_chromakey_enabled()

+ +
+
+

set_gltexture_label()

+ +
+
+

set_mag_filtering()

+ +
+
+

set_min_filtering()

+ +
+
+

set_wrap()

+ +
+
+
+
+

texture_cut_mode

+
+
+
    +
  • +

    CROP: 1

    +
  • +
  • +

    RESIZE: 0

    +
  • +
+
+
+
+
+

timestamp

+
+
+

microseconds()

+ +
+
+

microseconds_since()

+ +
+
+

milliseconds()

+ +
+
+

milliseconds_since()

+ +
+
+

nanoseconds()

+ +
+
+

nanoseconds_since()

+ +
+
+

now()

+ +
+
+

seconds()

+ +
+
+

seconds_since()

+ +
+
+

ticks_since()

+ +
+
+
+
+

vec2

+
+
+

add()

+ +
+
+

create()

+ +
+
+

div()

+ +
+
+

dot()

+ +
+
+

length()

+ +
+
+

mul()

+ +
+
+

normalized()

+ +
+
+

sqrlength()

+ +
+
+

sub()

+ +
+
+
+
+

vec3

+
+
+

add()

+ +
+
+

create()

+ +
+
+

div()

+ +
+
+

dot()

+ +
+
+

length()

+ +
+
+

mul()

+ +
+
+

normalized()

+ +
+
+

sqrlength()

+ +
+
+

sub()

+ +
+
+
+
+

vec4

+
+
+

add()

+ +
+
+

create()

+ +
+
+

div()

+ +
+
+

dot()

+ +
+
+

length()

+ +
+
+

mul()

+ +
+
+

normalized()

+ +
+
+

sqrlength()

+ +
+
+

sub()

+ +
+
+
+
+

viewport

+
+
+

clear_chain()

+ +
+
+

delete()

+ +
+
+

get_camera()

+ +
+
+

get_clear_color()

+ +
+
+

get_clear_mode()

+ +
+
+

get_culling_rect()

+ +
+
+

get_depth_stencil_format()

+ +
+
+

get_height()

+ +
+
+

get_last_frame_cleared()

+ +
+
+

get_num_color_attachments()

+ +
+
+

get_rootnode()

+ +
+
+

get_scissor_rect()

+ +
+
+

get_texture()

+ +
+
+

get_type()

+ +
+
+

get_viewport_rect()

+ +
+
+

get_width()

+ +
+
+

new()

+ +
+
+

push_back_chain()

+ +
+
+

push_front_chain()

+ +
+
+

remove_all_textures()

+ +
+
+

set_camera()

+ +
+
+

set_clear_color()

+ +
+
+

set_clear_mode()

+ +
+
+

set_depth_stencil_format()

+ +
+
+

set_glframebuffer_label()

+ +
+
+

set_rootnode()

+ +
+
+

set_scissor_rect()

+ +
+
+

set_texture()

+ +
+
+

set_viewport_rect()

+ +
+
+
+
+

viewport_type

+
+
+
    +
  • +

    NO_TEXTURE: 1

    +
  • +
  • +

    SCREEN: 2

    +
  • +
  • +

    WITH_TEXTURE: 0

    +
  • +
+
+
+
+
+

visit_order_state

+
+
+
    +
  • +

    DISABLED: 1

    +
  • +
  • +

    ENABLED: 0

    +
  • +
  • +

    SAME_AS_PARENT: 2

    +
  • +
  • +

    window_position_ignore: 2147483647

    +
  • +
+
+
+
+
+ + \ No newline at end of file diff --git a/lua_api_master.html b/lua_api_master.html new file mode 100644 index 0000000000..9cb43deb64 --- /dev/null +++ b/lua_api_master.html @@ -0,0 +1,14952 @@ + + +

_G

+
_G
+
+
+

_G

+
+

_VERSION

+
string
+
+
+

accelerometer_event

+

x

+
number
+
+

y

+
number
+
+

z

+
number
+
+
+

accelerometer_event

+
accelerometer_event
+
+
accelerometer_event
+
+
+

affectorObj

+
+

affector_color_step

+
affector_color_step
+
+
affector_color_step
+
+
+

affector_color_step

+

[1]

+
number
+
+

Age

+

[2]

+
ncine.color
+
+

Color

+
+

affector_position_step

+

[1]

+
number
+
+

Age

+

[2]

+
ncine.vec2
+
+

position

+
+

affector_position_step

+
affector_position_step
+
+
affector_position_step
+
+
+

affector_rotation_step

+

[1]

+
number
+
+

Age

+

[2]

+
number
+
+

Angle

+
+

affector_rotation_step

+
affector_rotation_step
+
+
affector_rotation_step
+
+
+

affector_size_step

+

[1]

+
number
+
+

Age

+

[2]

+
number
+
+

Scale

+
+

affector_size_step_factor

+
affector_size_step
+
+
affector_size_step
+
+
+

affector_size_step_vector

+
affector_size_step
+
+
affector_size_step
+
+
+

affector_velocity_step

+
affector_velocity_step
+
+
affector_velocity_step
+
+
+

affector_velocity_step

+

[1]

+
number
+
+

Age

+

[2]

+
ncine.vec2
+
+

Velocity

+
+

animatedspriteObj

+
+

any

+
+

arg

+
string[]
+
+
+

assert

+
function assert(v?: <T>, message?: any, ...any)
+  -> <T>
+  2. ...any
+
+
+

audio_auto_wah_properties

+
audio_auto_wah_properties
+
+
audio_auto_wah_properties
+
+
+

audio_auto_wah_properties

+

attack_time

+
number
+
+

peak_gain

+
number
+
+

release_time

+
number
+
+

resonance

+
number
+
+
+

audio_chorus_properties

+

delay

+
number
+
+

depth

+
number
+
+

feedback

+
number
+
+

phase

+
integer
+
+

rate

+
number
+
+

waveform

+
integer
+
+

0 for sinusoid, 1 for triangle

+
+

audio_chorus_properties

+
audio_chorus_properties
+
+
audio_chorus_properties
+
+
+

audio_compressor_properties

+

on_off

+
integer
+
+

0 or 1

+
+

audio_compressor_properties

+
audio_compressor_properties
+
+
audio_compressor_properties
+
+
+

audio_distortion_properties

+

edge

+
number
+
+

eq_bandwidth

+
number
+
+

eq_center

+
number
+
+

gain

+
number
+
+

lowpass_cutoff

+
number
+
+
+

audio_distortion_properties

+
audio_distortion_properties
+
+
audio_distortion_properties
+
+
+

audio_eax_reverb_properties

+

air_absorption_gain_hf

+
number
+
+

decay_hf_limit

+
integer
+
+

decay_hf_ratio

+
number
+
+

decay_lf_ratio

+
number
+
+

decay_time

+
number
+
+

density

+
number
+
+

diffusion

+
number
+
+

echo_depth

+
number
+
+

echo_time

+
number
+
+

gain

+
number
+
+

gain_hf

+
number
+
+

gain_lf

+
number
+
+

hf_reference

+
number
+
+

late_reverb_delay

+
number
+
+

late_reverb_gain

+
number
+
+

late_reverb_pan

+
ncine.vec3
+
+

A three component vector

+

lf_reference

+
number
+
+

modulation_depth

+
number
+
+

modulation_time

+
number
+
+

reflections_delay

+
number
+
+

reflections_gain

+
number
+
+

reflections_pan

+
ncine.vec3
+
+

A three component vector

+

room_rolloff_factor

+
number
+
+
+

audio_eax_reverb_properties

+
audio_eax_reverb_properties
+
+
audio_eax_reverb_properties
+
+
+

audio_echo_properties

+

damping

+
number
+
+

delay

+
number
+
+

feedback

+
number
+
+

lr_delay

+
number
+
+

spread

+
number
+
+
+

audio_echo_properties

+
audio_echo_properties
+
+
audio_echo_properties
+
+
+

audio_equalizer_properties

+
audio_equalizer_properties
+
+
audio_equalizer_properties
+
+
+

audio_equalizer_properties

+

high_cutoff

+
number
+
+

high_gain

+
number
+
+

low_cutoff

+
number
+
+

low_gain

+
number
+
+

mid1_center

+
number
+
+

mid1_gain

+
number
+
+

mid1_width

+
number
+
+

mid2_center

+
number
+
+

mid2_gain

+
number
+
+

mid2_width

+
number
+
+
+

audio_filter_properties

+

gain

+
number
+
+

gain_hf

+
number
+
+

gain_lf

+
number
+
+

type

+
ncine.audio_filter_type
+
+

Audio filter types

+
+

audio_filter_properties

+
audio_filter_properties
+
+
audio_filter_properties
+
+
+

audio_flanger_properties

+

delay

+
number
+
+

depth

+
number
+
+

feedback

+
number
+
+

phase

+
integer
+
+

rate

+
number
+
+

waveform

+
integer
+
+

0 for sinusoid, 1 for triangle

+
+

audio_flanger_properties

+
audio_flanger_properties
+
+
audio_flanger_properties
+
+
+

audio_frequency_shifter_properties

+
audio_frequency_shifter_properties
+
+
audio_frequency_shifter_properties
+
+
+

audio_frequency_shifter_properties

+

frequency

+
number
+
+

left_direction

+
integer
+
+

From 0 to 2

+

right_direction

+
integer
+
+

From 0 to 2

+
+

audio_pitch_shifter_properties

+

coarse_tune

+
integer
+
+

From -12 to 12

+

fineTune

+
integer
+
+

From -50 to 50

+
+

audio_pitch_shifter_properties

+
audio_pitch_shifter_properties
+
+
audio_pitch_shifter_properties
+
+
+

audio_reverb_properties

+
audio_reverb_properties
+
+
audio_reverb_properties
+
+
+

audio_reverb_properties

+

air_absorption_gain_hf

+
number
+
+

decay_hf_limit

+
integer
+
+

decay_hf_ratio

+
number
+
+

decay_time

+
number
+
+

density

+
number
+
+

diffusion

+
number
+
+

gain

+
number
+
+

gain_hf

+
number
+
+

late_reverb_delay

+
number
+
+

late_reverb_gain

+
number
+
+

reflections_delay

+
number
+
+

reflections_gain

+
number
+
+

room_rolloff_factor

+
number
+
+
+

audio_ring_modulator_properties

+
audio_ring_modulator_properties
+
+
audio_ring_modulator_properties
+
+
+

audio_ring_modulator_properties

+

frequency

+
number
+
+

highpass_cutoff

+
number
+
+

waveform

+
integer
+
+

0 for sinusoid, 1 for sawtooth, 2 for square

+
+

audio_vocal_morpher_properties

+

phoneme_a

+
integer
+
+

From 0 to 29 (A to Z)

+

phoneme_a_coarse_tuning

+
integer
+
+

From -24 to 24

+

phoneme_b

+
integer
+
+

From 0 to 29 (A to Z)

+

phoneme_b_coarse_tuning

+
integer
+
+

From -24 to 24

+

rate

+
number
+
+

waveform

+
integer
+
+

0 for sinusoid, 1 for triangle, 2 for sawtooth

+
+

audio_vocal_morpher_properties

+
audio_vocal_morpher_properties
+
+
audio_vocal_morpher_properties
+
+
+

audiobufferObj

+
+

audiobufferplayerObj

+
+

audioeffectObj

+
+

audioeffectpropertiesObj

+
+

audioeffectslotObj

+
+

audiofilterObj

+
+

audioplayerObj

+
+

audiostreamplayerObj

+
+

basespriteObj

+
+

boolean

+
+

cameraObj

+
+

camera_projection_values

+

bottom

+
number
+
+

left

+
number
+
+

right

+
number
+
+

top

+
number
+
+
+

camera_view_values

+

rotation

+
number
+
+

scale

+
number
+
+

x

+
number
+
+

y

+
number
+
+
+

collectgarbage

+
function collectgarbage(opt?: "collect"|"count"|"generational"|"incremental"|"isrunning"...(+3), ...any)
+  -> any
+
+
+

coroutine

+
coroutinelib
+
+
+

coroutine.close

+
function coroutine.close(co: thread)
+  -> noerror: boolean
+  2. errorobject: any
+
+
+

coroutine.create

+
function coroutine.create(f: fun(...any):...unknown)
+  -> thread
+
+
+

coroutine.isyieldable

+
function coroutine.isyieldable(co?: thread)
+  -> boolean
+
+
+

coroutine.resume

+
function coroutine.resume(co: thread, val1?: any, ...any)
+  -> success: boolean
+  2. ...any
+
+
+

coroutine.running

+
function coroutine.running()
+  -> running: thread
+  2. ismain: boolean
+
+
+

coroutine.status

+
function coroutine.status(co: thread)
+  -> "dead"|"normal"|"running"|"suspended"
+
+
+

coroutine.wrap

+
function coroutine.wrap(f: fun(...any):...unknown)
+  -> fun(...any):...unknown
+
+
+

coroutine.yield

+
(async) function coroutine.yield(...any)
+  -> ...any
+
+
+

coroutinelib

+

close

+
function coroutine.close(co: thread)
+  -> noerror: boolean
+  2. errorobject: any
+
+

Closes coroutine co , closing all its pending to-be-closed variables and putting the coroutine in a dead state.

+

View documents

+

create

+
function coroutine.create(f: fun(...any):...unknown)
+  -> thread
+
+

Creates a new coroutine, with body f. f must be a function. Returns this new coroutine, an object with type "thread".

+

View documents

+

isyieldable

+
function coroutine.isyieldable(co?: thread)
+  -> boolean
+
+

Returns true when the coroutine co can yield. The default for co is the running coroutine.

+

View documents

+

resume

+
function coroutine.resume(co: thread, val1?: any, ...any)
+  -> success: boolean
+  2. ...any
+
+

Starts or continues the execution of coroutine co.

+

View documents

+

running

+
function coroutine.running()
+  -> running: thread
+  2. ismain: boolean
+
+

Returns the running coroutine plus a boolean, true when the running coroutine is the main one.

+

View documents

+

status

+
function coroutine.status(co: thread)
+  -> "dead"|"normal"|"running"|"suspended"
+
+

Returns the status of coroutine co.

+

View documents

+
return #1:
+    | "running" -- Is running.
+    | "suspended" -- Is suspended or not started.
+    | "normal" -- Is active but not running.
+    | "dead" -- Has finished or stopped with an error.
+
+

wrap

+
function coroutine.wrap(f: fun(...any):...unknown)
+  -> fun(...any):...unknown
+
+

Creates a new coroutine, with body f; f must be a function. Returns a function that resumes the coroutine each time it is called.

+

View documents

+

yield

+
(async) function coroutine.yield(...any)
+  -> ...any
+
+

Suspends the execution of the calling coroutine.

+

View documents

+
+

debug

+
debuglib
+
+
+

debug.debug

+
function debug.debug()
+
+
+

debug.getfenv

+
function debug.getfenv(o: any)
+  -> table
+
+
+

debug.gethook

+
function debug.gethook(co?: thread)
+  -> hook: function
+  2. mask: string
+  3. count: integer
+
+
+

debug.getinfo

+
function debug.getinfo(thread: thread, f: integer|fun(...any):...unknown, what?: string|"L"|"S"|"f"|"l"...(+4))
+  -> debuginfo
+
+
+

debug.getlocal

+
function debug.getlocal(thread: thread, f: integer|fun(...any):...unknown, index: integer)
+  -> name: string
+  2. value: any
+
+
+

debug.getmetatable

+
function debug.getmetatable(object: any)
+  -> metatable: table
+
+
+

debug.getregistry

+
function debug.getregistry()
+  -> table
+
+
+

debug.getupvalue

+
function debug.getupvalue(f: fun(...any):...unknown, up: integer)
+  -> name: string
+  2. value: any
+
+
+

debug.getuservalue

+
function debug.getuservalue(u: userdata, n?: integer)
+  -> any
+  2. boolean
+
+
+

debug.setcstacklimit

+
function debug.setcstacklimit(limit: integer)
+  -> boolean|integer
+
+
+

debug.setfenv

+
function debug.setfenv(object: <T>, env: table)
+  -> object: <T>
+
+
+

debug.sethook

+
function debug.sethook(thread: thread, hook: fun(...any):...unknown, mask: string|"c"|"l"|"r", count?: integer)
+
+
+

debug.setlocal

+
function debug.setlocal(thread: thread, level: integer, index: integer, value: any)
+  -> name: string
+
+
+

debug.setmetatable

+
function debug.setmetatable(value: <T>, meta?: table)
+  -> value: <T>
+
+
+

debug.setupvalue

+
function debug.setupvalue(f: fun(...any):...unknown, up: integer, value: any)
+  -> name: string
+
+
+

debug.setuservalue

+
function debug.setuservalue(udata: userdata, value: any, n?: integer)
+  -> udata: userdata
+
+
+

debug.traceback

+
function debug.traceback(thread: thread, message?: any, level?: integer)
+  -> message: string
+
+
+

debug.upvalueid

+
function debug.upvalueid(f: fun(...any):...unknown, n: integer)
+  -> id: lightuserdata
+
+
+

debug.upvaluejoin

+
function debug.upvaluejoin(f1: fun(...any):...unknown, n1: integer, f2: fun(...any):...unknown, n2: integer)
+
+
+

debug_overlay_settings

+

info_text

+
boolean
+
+

True if showing the information text

+

interface

+
boolean
+
+

True if showing the debug interface

+

profiler_graphs

+
boolean
+
+

True if showing the profiler graphs

+
+

debug_overlay_settings

+
debug_overlay_settings
+
+
debug_overlay_settings
+
+
+

debuginfo

+

activelines

+
table
+
+

currentline

+
integer
+
+

ftransfer

+
integer
+
+

func

+
function
+
+

istailcall

+
boolean
+
+

isvararg

+
boolean
+
+

lastlinedefined

+
integer
+
+

linedefined

+
integer
+
+

name

+
string
+
+

namewhat

+
string
+
+

nparams

+
integer
+
+

ntransfer

+
integer
+
+

nups

+
integer
+
+

short_src

+
string
+
+

source

+
string
+
+

what

+
string
+
+
+

debuglib

+

debug

+
function debug.debug()
+
+

Enters an interactive mode with the user, running each string that the user enters.

+

View documents

+

getfenv

+
function debug.getfenv(o: any)
+  -> table
+
+

Returns the environment of object o .

+

View documents

+

gethook

+
function debug.gethook(co?: thread)
+  -> hook: function
+  2. mask: string
+  3. count: integer
+
+

Returns the current hook settings of the thread.

+

View documents

+

getinfo

+
function debug.getinfo(thread: thread, f: integer|fun(...any):...unknown, what?: string|"L"|"S"|"f"|"l"...(+4))
+  -> debuginfo
+
+

Returns a table with information about a function.

+

View documents

+
+
what:
+   +> "n" -- `name` and `namewhat`
+   +> "S" -- `source`, `short_src`, `linedefined`, `lastlinedefined`, and `what`
+   +> "l" -- `currentline`
+   +> "t" -- `istailcall`
+   +> "u" -- `nups`, `nparams`, and `isvararg`
+   +> "f" -- `func`
+   +> "r" -- `ftransfer` and `ntransfer`
+   +> "L" -- `activelines`
+
+

getlocal

+
function debug.getlocal(thread: thread, f: integer|fun(...any):...unknown, index: integer)
+  -> name: string
+  2. value: any
+
+

Returns the name and the value of the local variable with index local of the function at level f of the stack.

+

View documents

+

getmetatable

+
function debug.getmetatable(object: any)
+  -> metatable: table
+
+

Returns the metatable of the given value.

+

View documents

+

getregistry

+
function debug.getregistry()
+  -> table
+
+

Returns the registry table.

+

View documents

+

getupvalue

+
function debug.getupvalue(f: fun(...any):...unknown, up: integer)
+  -> name: string
+  2. value: any
+
+

Returns the name and the value of the upvalue with index up of the function.

+

View documents

+

getuservalue

+
function debug.getuservalue(u: userdata, n?: integer)
+  -> any
+  2. boolean
+
+

Returns the n-th user value associated +to the userdata u plus a boolean, +false if the userdata does not have that value.

+

View documents

+

setcstacklimit

+
function debug.setcstacklimit(limit: integer)
+  -> boolean|integer
+
+

Deprecated in Lua 5.4.2

+

Sets a new limit for the C stack. This limit controls how deeply nested calls can go in Lua, with the intent of avoiding a stack overflow.

+

In case of success, this function returns the old limit. In case of error, it returns false.

+

View documents

+

setfenv

+
function debug.setfenv(object: <T>, env: table)
+  -> object: <T>
+
+

Sets the environment of the given object to the given table .

+

View documents

+

sethook

+
function debug.sethook(thread: thread, hook: fun(...any):...unknown, mask: string|"c"|"l"|"r", count?: integer)
+
+

Sets the given function as a hook.

+

View documents

+
+
mask:
+   +> "c" -- Calls hook when Lua calls a function.
+   +> "r" -- Calls hook when Lua returns from a function.
+   +> "l" -- Calls hook when Lua enters a new line of code.
+
+

setlocal

+
function debug.setlocal(thread: thread, level: integer, index: integer, value: any)
+  -> name: string
+
+

Assigns the value to the local variable with index local of the function at level of the stack.

+

View documents

+

setmetatable

+
function debug.setmetatable(value: <T>, meta?: table)
+  -> value: <T>
+
+

Sets the metatable for the given value to the given table (which can be nil).

+

View documents

+

setupvalue

+
function debug.setupvalue(f: fun(...any):...unknown, up: integer, value: any)
+  -> name: string
+
+

Assigns the value to the upvalue with index up of the function.

+

View documents

+

setuservalue

+
function debug.setuservalue(udata: userdata, value: any, n?: integer)
+  -> udata: userdata
+
+

Sets the given value as +the n-th user value associated to the given udata. +udata must be a full userdata.

+

View documents

+

traceback

+
function debug.traceback(thread: thread, message?: any, level?: integer)
+  -> message: string
+
+

Returns a string with a traceback of the call stack. The optional message string is appended at the beginning of the traceback.

+

View documents

+

upvalueid

+
function debug.upvalueid(f: fun(...any):...unknown, n: integer)
+  -> id: lightuserdata
+
+

Returns a unique identifier (as a light userdata) for the upvalue numbered n from the given function.

+

View documents

+

upvaluejoin

+
function debug.upvaluejoin(f1: fun(...any):...unknown, n1: integer, f2: fun(...any):...unknown, n2: integer)
+
+

Make the n1-th upvalue of the Lua closure f1 refer to the n2-th upvalue of the Lua closure f2.

+

View documents

+
+

dofile

+
function dofile(filename?: string)
+  -> ...any
+
+
+

drawablenodeObj

+
+

error

+
function error(message: any, level?: integer)
+
+
+

exitcode

+
+

false

+
+

file*

+

close

+
(method) file*:close()
+  -> suc: boolean?
+  2. exitcode: ("exit"|"signal")?
+  3. code: integer?
+
+

Close file.

+

View documents

+
exitcode:
+    | "exit"
+    | "signal"
+
+

flush

+
(method) file*:flush()
+
+

Saves any written data to file.

+

View documents

+

lines

+
(method) file*:lines(...string|integer|"L"|"a"|"l"...(+1))
+  -> fun():any, ...unknown
+
+
+
for c in file:lines(...) do
+    body
+end
+
+

View documents

+
...(param):
+    | "n" -- Reads a numeral and returns it as number.
+    | "a" -- Reads the whole file.
+   -> "l" -- Reads the next line skipping the end of line.
+    | "L" -- Reads the next line keeping the end of line.
+
+

read

+
(method) file*:read(...string|integer|"L"|"a"|"l"...(+1))
+  -> any
+  2. ...any
+
+

Reads the file, according to the given formats, which specify what to read.

+

View documents

+
...(param):
+    | "n" -- Reads a numeral and returns it as number.
+    | "a" -- Reads the whole file.
+   -> "l" -- Reads the next line skipping the end of line.
+    | "L" -- Reads the next line keeping the end of line.
+
+

seek

+
(method) file*:seek(whence?: "cur"|"end"|"set", offset?: integer)
+  -> offset: integer
+  2. errmsg: string?
+
+

Sets and gets the file position, measured from the beginning of the file.

+

View documents

+
whence:
+    | "set" -- Base is beginning of the file.
+   -> "cur" -- Base is current position.
+    | "end" -- Base is end of file.
+
+

setvbuf

+
(method) file*:setvbuf(mode: "full"|"line"|"no", size?: integer)
+
+

Sets the buffering mode for an output file.

+

View documents

+
mode:
+    | "no" -- Output operation appears immediately.
+    | "full" -- Performed only when the buffer is full.
+    | "line" -- Buffered until a newline is output.
+
+

write

+
(method) file*:write(...string|number)
+  -> file*?
+  2. errmsg: string?
+
+

Writes the value of each of its arguments to file.

+

View documents

+
+

file_date

+

day

+
integer
+
+

hour

+
integer
+
+

minute

+
integer
+
+

month

+
integer
+
+

second

+
integer
+
+

week_day

+
integer
+
+

year

+
integer
+
+
+

filetype

+
+

fontObj

+
+

function

+
+

gcoptions

+
+

getfenv

+
function getfenv(f?: integer|fun(...any):...unknown)
+  -> table
+
+
+

getmetatable

+
function getmetatable(object: any)
+  -> metatable: table
+
+
+

gui_settings

+
gui_settings
+
+
gui_settings
+
+
+

gui_settings

+

imgui_layer

+
integer
+
+

ImGui drawable node layer

+

imgui_viewport

+
viewportObj
+
+

ImGui viewport

+

nuklearLayer

+
integer
+
+

Nuklear drawable node layer

+

nuklear_viewport

+
viewportObj
+
+

Nuklear viewport

+
+

hookmask

+
+

infowhat

+
+

integer

+
+

io

+
iolib
+
+
+

io.close

+
function io.close(file?: file*)
+  -> suc: boolean?
+  2. exitcode: ("exit"|"signal")?
+  3. code: integer?
+
+
+

io.flush

+
function io.flush()
+
+
+

io.input

+
function io.input(file: string|file*)
+
+
+

io.lines

+
function io.lines(filename?: string, ...string|integer|"L"|"a"|"l"...(+1))
+  -> fun():any, ...unknown
+
+
+

io.open

+
function io.open(filename: string, mode?: "a"|"a+"|"a+b"|"ab"|"r"...(+7))
+  -> file*?
+  2. errmsg: string?
+
+
+

io.output

+
function io.output(file: string|file*)
+
+
+

io.popen

+
function io.popen(prog: string, mode?: "r"|"w")
+  -> file*?
+  2. errmsg: string?
+
+
+

io.read

+
function io.read(...string|integer|"L"|"a"|"l"...(+1))
+  -> any
+  2. ...any
+
+
+

io.tmpfile

+
function io.tmpfile()
+  -> file*
+
+
+

io.type

+
function io.type(file: file*)
+  -> "closed file"|"file"|`nil`
+
+
+

io.write

+
function io.write(...any)
+  -> file*
+  2. errmsg: string?
+
+
+

iolib

+

close

+
function io.close(file?: file*)
+  -> suc: boolean?
+  2. exitcode: ("exit"|"signal")?
+  3. code: integer?
+
+

Close file or default output file.

+

View documents

+
exitcode:
+    | "exit"
+    | "signal"
+
+

flush

+
function io.flush()
+
+

Saves any written data to default output file.

+

View documents

+

input

+
function io.input(file: string|file*)
+
+

Sets file as the default input file.

+

View documents

+

lines

+
function io.lines(filename?: string, ...string|integer|"L"|"a"|"l"...(+1))
+  -> fun():any, ...unknown
+
+
+
for c in io.lines(filename, ...) do
+    body
+end
+
+

View documents

+
...(param):
+    | "n" -- Reads a numeral and returns it as number.
+    | "a" -- Reads the whole file.
+   -> "l" -- Reads the next line skipping the end of line.
+    | "L" -- Reads the next line keeping the end of line.
+
+

open

+
function io.open(filename: string, mode?: "a"|"a+"|"a+b"|"ab"|"r"...(+7))
+  -> file*?
+  2. errmsg: string?
+
+

Opens a file, in the mode specified in the string mode.

+

View documents

+
mode:
+   -> "r" -- Read mode.
+    | "w" -- Write mode.
+    | "a" -- Append mode.
+    | "r+" -- Update mode, all previous data is preserved.
+    | "w+" -- Update mode, all previous data is erased.
+    | "a+" -- Append update mode, previous data is preserved, writing is only allowed at the end of file.
+    | "rb" -- Read mode. (in binary mode.)
+    | "wb" -- Write mode. (in binary mode.)
+    | "ab" -- Append mode. (in binary mode.)
+    | "r+b" -- Update mode, all previous data is preserved. (in binary mode.)
+    | "w+b" -- Update mode, all previous data is erased. (in binary mode.)
+    | "a+b" -- Append update mode, previous data is preserved, writing is only allowed at the end of file. (in binary mode.)
+
+

output

+
function io.output(file: string|file*)
+
+

Sets file as the default output file.

+

View documents

+

popen

+
function io.popen(prog: string, mode?: "r"|"w")
+  -> file*?
+  2. errmsg: string?
+
+

Starts program prog in a separated process.

+

View documents

+
mode:
+    | "r" -- Read data from this program by `file`.
+    | "w" -- Write data to this program by `file`.
+
+

read

+
function io.read(...string|integer|"L"|"a"|"l"...(+1))
+  -> any
+  2. ...any
+
+

Reads the file, according to the given formats, which specify what to read.

+

View documents

+
...(param):
+    | "n" -- Reads a numeral and returns it as number.
+    | "a" -- Reads the whole file.
+   -> "l" -- Reads the next line skipping the end of line.
+    | "L" -- Reads the next line keeping the end of line.
+
+

stderr

+
file*
+
+

standard error.

+

View documents

+

stdin

+
file*
+
+

standard input.

+

View documents

+

stdout

+
file*
+
+

standard output.

+

View documents

+

tmpfile

+
function io.tmpfile()
+  -> file*
+
+

In case of success, returns a handle for a temporary file.

+

View documents

+

type

+
function io.type(file: file*)
+  -> "closed file"|"file"|`nil`
+
+

Checks whether obj is a valid file handle.

+

View documents

+
return #1:
+    | "file" -- Is an open file handle.
+    | "closed file" -- Is a closed file handle.
+    | `nil` -- Is not a file handle.
+
+

write

+
function io.write(...any)
+  -> file*
+  2. errmsg: string?
+
+

Writes the value of each of its arguments to default output file.

+

View documents

+
+

ipairs

+
function ipairs(t: <T:table>)
+  -> fun(table: <V>[], i?: integer):integer, <V>
+  2. <T:table>
+  3. i: integer
+
+
+

is_gui_hidden

+
function is_gui_hidden()
+  -> boolean
+
+
function is_gui_hidden()
+  -> boolean
+
+
+

joy_axis_event

+

axis_id

+
integer
+
+

joy_id

+
integer
+
+

norm_value

+
number
+
+

value

+
number
+
+
+

joy_axis_event

+
joy_axis_event
+
+
joy_axis_event
+
+
+

joy_button_event

+
joy_button_event
+
+
joy_button_event
+
+
+

joy_button_event

+

button_id

+
integer
+
+

joy_id

+
integer
+
+
+

joy_connection_event

+

joy_id

+
integer
+
+
+

joy_connection_event

+
joy_connection_event
+
+
joy_connection_event
+
+
+

joy_hat_event

+
joy_hat_event
+
+
joy_hat_event
+
+
+

joy_hat_event

+

hat_id

+
integer
+
+

hat_state

+
ncine.joy_hat_state
+
+

Joystick hat states

+

joy_id

+
integer
+
+
+

joy_mapped_axis_event

+
joymapped_axis_event
+
+
joymapped_axis_event
+
+
+

joy_mapped_button_event

+
joymapped_button_event
+
+
joymapped_button_event
+
+
+

joymapped_axis_event

+

axis

+
ncine.joy_axis
+
+

Joystick axis names

+

joy_id

+
integer
+
+

value

+
number
+
+
+

joymapped_button_event

+

button

+
ncine.joy_button
+
+

Joystick button names

+

joy_id

+
integer
+
+
+

joymappedstateObj

+
+

joystickstateObj

+
+

keyboard_event

+

mod

+
integer
+
+

scancode

+
integer
+
+

sym

+
integer
+
+
+

keyboard_event

+
keyboard_event
+
+
keyboard_event
+
+
+

keystateObj

+
+

lightuserdata

+
+

load

+
function load(chunk: string|function, chunkname?: string, mode?: "b"|"bt"|"t", env?: table)
+  -> function?
+  2. error_message: string?
+
+
+

loadfile

+
function loadfile(filename?: string, mode?: "b"|"bt"|"t", env?: table)
+  -> function?
+  2. error_message: string?
+
+
+

loadmode

+
+

loadstring

+
function loadstring(text: string, chunkname?: string)
+  -> function?
+  2. error_message: string?
+
+
+

localecategory

+
+

math

+
mathlib
+
+
+

math.abs

+
function math.abs(x: <Number:number>)
+  -> <Number:number>
+
+
+

math.acos

+
function math.acos(x: number)
+  -> number
+
+
+

math.asin

+
function math.asin(x: number)
+  -> number
+
+
+

math.atan

+
function math.atan(y: number, x?: number)
+  -> number
+
+
+

math.atan2

+
function math.atan2(y: number, x: number)
+  -> number
+
+
+

math.ceil

+
function math.ceil(x: number)
+  -> integer
+
+
+

math.cos

+
function math.cos(x: number)
+  -> number
+
+
+

math.cosh

+
function math.cosh(x: number)
+  -> number
+
+
+

math.deg

+
function math.deg(x: number)
+  -> number
+
+
+

math.exp

+
function math.exp(x: number)
+  -> number
+
+
+

math.floor

+
function math.floor(x: number)
+  -> integer
+
+
+

math.fmod

+
function math.fmod(x: number, y: number)
+  -> number
+
+
+

math.frexp

+
function math.frexp(x: number)
+  -> m: number
+  2. e: number
+
+
+

math.ldexp

+
function math.ldexp(m: number, e: number)
+  -> number
+
+
+

math.log

+
function math.log(x: number, base?: integer)
+  -> number
+
+
+

math.log10

+
function math.log10(x: number)
+  -> number
+
+
+

math.max

+
function math.max(x: <Number:number>, ...<Number:number>)
+  -> <Number:number>
+
+
+

math.min

+
function math.min(x: <Number:number>, ...<Number:number>)
+  -> <Number:number>
+
+
+

math.modf

+
function math.modf(x: number)
+  -> integer
+  2. number
+
+
+

math.pow

+
function math.pow(x: number, y: number)
+  -> number
+
+
+

math.rad

+
function math.rad(x: number)
+  -> number
+
+
+

math.random

+
function math.random(m: integer, n: integer)
+  -> integer
+
+
+

math.randomseed

+
function math.randomseed(x?: integer, y?: integer)
+
+
+

math.sin

+
function math.sin(x: number)
+  -> number
+
+
+

math.sinh

+
function math.sinh(x: number)
+  -> number
+
+
+

math.sqrt

+
function math.sqrt(x: number)
+  -> number
+
+
+

math.tan

+
function math.tan(x: number)
+  -> number
+
+
+

math.tanh

+
function math.tanh(x: number)
+  -> number
+
+
+

math.tointeger

+
function math.tointeger(x: any)
+  -> integer?
+
+
+

math.type

+
function math.type(x: any)
+  -> "float"|"integer"|'nil'
+
+
+

math.ult

+
function math.ult(m: integer, n: integer)
+  -> boolean
+
+
+

mathlib

+

abs

+
function math.abs(x: <Number:number>)
+  -> <Number:number>
+
+

Returns the absolute value of x.

+

View documents

+

acos

+
function math.acos(x: number)
+  -> number
+
+

Returns the arc cosine of x (in radians).

+

View documents

+

asin

+
function math.asin(x: number)
+  -> number
+
+

Returns the arc sine of x (in radians).

+

View documents

+

atan

+
function math.atan(y: number, x?: number)
+  -> number
+
+

Returns the arc tangent of y/x (in radians).

+

View documents

+

atan2

+
function math.atan2(y: number, x: number)
+  -> number
+
+

Returns the arc tangent of y/x (in radians).

+

View documents

+

ceil

+
function math.ceil(x: number)
+  -> integer
+
+

Returns the smallest integral value larger than or equal to x.

+

View documents

+

cos

+
function math.cos(x: number)
+  -> number
+
+

Returns the cosine of x (assumed to be in radians).

+

View documents

+

cosh

+
function math.cosh(x: number)
+  -> number
+
+

Returns the hyperbolic cosine of x (assumed to be in radians).

+

View documents

+

deg

+
function math.deg(x: number)
+  -> number
+
+

Converts the angle x from radians to degrees.

+

View documents

+

exp

+
function math.exp(x: number)
+  -> number
+
+

Returns the value e^x (where e is the base of natural logarithms).

+

View documents

+

floor

+
function math.floor(x: number)
+  -> integer
+
+

Returns the largest integral value smaller than or equal to x.

+

View documents

+

fmod

+
function math.fmod(x: number, y: number)
+  -> number
+
+

Returns the remainder of the division of x by y that rounds the quotient towards zero.

+

View documents

+

frexp

+
function math.frexp(x: number)
+  -> m: number
+  2. e: number
+
+

Decompose x into tails and exponents. Returns m and e such that x = m * (2 ^ e), e is an integer and the absolute value of m is in the range [0.5, 1) (or zero when x is zero).

+

View documents

+

huge

+
number
+
+

A value larger than any other numeric value.

+

View documents

+

ldexp

+
function math.ldexp(m: number, e: number)
+  -> number
+
+

Returns m * (2 ^ e) .

+

View documents

+

log

+
function math.log(x: number, base?: integer)
+  -> number
+
+

Returns the logarithm of x in the given base.

+

View documents

+

log10

+
function math.log10(x: number)
+  -> number
+
+

Returns the base-10 logarithm of x.

+

View documents

+

max

+
function math.max(x: <Number:number>, ...<Number:number>)
+  -> <Number:number>
+
+

Returns the argument with the maximum value, according to the Lua operator <.

+

View documents

+

maxinteger

+
integer
+
+

Miss locale

+

View documents

+

min

+
function math.min(x: <Number:number>, ...<Number:number>)
+  -> <Number:number>
+
+

Returns the argument with the minimum value, according to the Lua operator <.

+

View documents

+

mininteger

+
integer
+
+

Miss locale

+

View documents

+

modf

+
function math.modf(x: number)
+  -> integer
+  2. number
+
+

Returns the integral part of x and the fractional part of x.

+

View documents

+

pi

+
number
+
+

The value of π.

+

View documents

+

pow

+
function math.pow(x: number, y: number)
+  -> number
+
+

Returns x ^ y .

+

View documents

+

rad

+
function math.rad(x: number)
+  -> number
+
+

Converts the angle x from degrees to radians.

+

View documents

+

random

+
function math.random(m: integer, n: integer)
+  -> integer
+
+ +

View documents

+

randomseed

+
function math.randomseed(x?: integer, y?: integer)
+
+ +

View documents

+

sin

+
function math.sin(x: number)
+  -> number
+
+

Returns the sine of x (assumed to be in radians).

+

View documents

+

sinh

+
function math.sinh(x: number)
+  -> number
+
+

Returns the hyperbolic sine of x (assumed to be in radians).

+

View documents

+

sqrt

+
function math.sqrt(x: number)
+  -> number
+
+

Returns the square root of x.

+

View documents

+

tan

+
function math.tan(x: number)
+  -> number
+
+

Returns the tangent of x (assumed to be in radians).

+

View documents

+

tanh

+
function math.tanh(x: number)
+  -> number
+
+

Returns the hyperbolic tangent of x (assumed to be in radians).

+

View documents

+

tointeger

+
function math.tointeger(x: any)
+  -> integer?
+
+

Miss locale

+

View documents

+

type

+
function math.type(x: any)
+  -> "float"|"integer"|'nil'
+
+

Miss locale

+

View documents

+
return #1:
+    | "integer"
+    | "float"
+    | 'nil'
+
+

ult

+
function math.ult(m: integer, n: integer)
+  -> boolean
+
+

Miss locale

+

View documents

+
+

mesh_sprite_vertex

+

u

+
number
+
+

v

+
number
+
+

x

+
number
+
+

y

+
number
+
+
+

mesh_sprite_vertex

+
mesh_sprite_vertex
+
+
mesh_sprite_vertex
+
+
+

mesh_sprite_vertex_notexture

+

x

+
number
+
+

y

+
number
+
+
+

mesh_sprite_vertex_notexture

+
mesh_sprite_vertex_notexture
+
+
mesh_sprite_vertex_notexture
+
+
+

meshspriteObj

+
+

metatable

+

__add

+
fun(t1: any, t2: any):any|nil
+
+

__band

+
fun(t1: any, t2: any):any|nil
+
+

__bnot

+
fun(t: any):any|nil
+
+

__bor

+
fun(t1: any, t2: any):any|nil
+
+

__bxor

+
fun(t1: any, t2: any):any|nil
+
+

__call

+
fun(t: any, ...any):...unknown|nil
+
+

__close

+
fun(t: any, errobj: any):any|nil
+
+

__concat

+
fun(t1: any, t2: any):any|nil
+
+

__div

+
fun(t1: any, t2: any):any|nil
+
+

__eq

+
fun(t1: any, t2: any):boolean|nil
+
+

__gc

+
fun(t: any)|nil
+
+

__idiv

+
fun(t1: any, t2: any):any|nil
+
+

__index

+
table|fun(t: any, k: any):any|nil
+
+

__le

+
fun(t1: any, t2: any):boolean|nil
+
+

__len

+
fun(t: any):integer|nil
+
+

__lt

+
fun(t1: any, t2: any):boolean|nil
+
+

__metatable

+
any
+
+

__mod

+
fun(t1: any, t2: any):any|nil
+
+

__mode

+
'k'|'kv'|'v'|nil
+
+

__mul

+
fun(t1: any, t2: any):any|nil
+
+

__newindex

+
table|fun(t: any, k: any, v: any)|nil
+
+

__pairs

+
fun(t: any):fun(t: any, k: any, v: any):any, any, any, any|nil
+
+

__pow

+
fun(t1: any, t2: any):any|nil
+
+

__shl

+
fun(t1: any, t2: any):any|nil
+
+

__shr

+
fun(t1: any, t2: any):any|nil
+
+

__sub

+
fun(t1: any, t2: any):any|nil
+
+

__tostring

+
fun(t: any):string|nil
+
+

__unm

+
fun(t: any):any|nil
+
+
+

module

+
function module(name: string, ...any)
+
+
+

monitor

+

dpi

+
ncine.vec2
+
+

The horizontal and vertical dots per inch

+

name

+
string
+
+

The monitor name

+

num_video_modes

+
integer
+
+

The number of video modes in the array

+

position

+
ncine.vec2
+
+

The position of the monitor's viewport on the virtual screen

+

scale

+
ncine.vec2
+
+

The content scale factor

+

video_modes

+
video_mode[]
+
+

The array of supported video modes

+
+

monitor

+
monitor
+
+
monitor
+
+
+

mouse_event

+
mouse_event
+
+
mouse_event
+
+
+

mouse_event

+

button

+
ncine.mouse_button
+
+

Mouse buttons

+

x

+
number
+
+

y

+
number
+
+
+

mouse_state

+
mouse_state
+
+
mouse_state
+
+
+

mouse_state

+

fifth_pressed

+
boolean
+
+

It is true if the fifth mouse button is pressed

+

fourth_pressed

+
boolean
+
+

It is true if the fourth mouse button is pressed

+

left_pressed

+
boolean
+
+

It is true if the left mouse button is pressed

+

middle_pressed

+
boolean
+
+

It is true if the middle mouse button is pressed

+

right_pressed

+
boolean
+
+

TIt is true if the right mouse button is pressed

+

x

+
integer
+
+

Pointer position on the X axis

+

y

+
integer
+
+

Pointer position on the Y axis

+
+

ncine

+

ANDROID

+
boolean
+
+

True if running on Android

+

DEBUG

+
boolean
+
+

True if linked with a debug build of the nCine library

+

EMSCRIPTEN

+
boolean
+
+

True if running on the web via Emscripten

+

LINUX

+
boolean
+
+

True if running on Linux

+

MACOS

+
boolean
+
+

True if running on macOS

+

MINGW

+
boolean
+
+

True if running on MinGW

+

WINDOWS

+
boolean
+
+

True if running on Windows

+

_GITBRANCH

+
string
+
+

The git branch

+

_GITLATCOMMITDATE

+
string
+
+

The git last commit date

+

_GITREVCOUNT

+
string
+
+

The git revision count

+

_GITSHORTHASH

+
string
+
+

The git short hash

+

_GITTAG

+
string
+
+

The git tag

+

_VERSION

+
string
+
+

The version string

+

affector_type

+
enum ncine.affector_type
+
+

animated_sprite

+
ncine.animated_sprite
+
+

The table containing animated sprite related functions

+

app_onfiguration

+
ncine.app_configuration
+
+

The application configuration table

+

application

+
ncine.application
+
+

The table containing application related functions

+

audio_device

+
ncine.audio_device
+
+

The table containing the audio device related functions

+

audio_effect

+
ncine.audio_effect
+
+

The table containing audio effect related functions

+

audio_effect_properties

+
ncine.audio_effect_properties
+
+

The table containing audio effect properties related functions

+

audio_effect_slot

+
ncine.audio_effect_slot
+
+

The table containing audio effect slot related functions

+

audio_effect_type

+
enum ncine.audio_effect_type
+
+

audio_filter

+
ncine.audio_filter
+
+

The table containing audio filter related functions

+

audio_filter_type

+
enum ncine.audio_filter_type
+
+

audio_player

+
ncine.audio_player
+
+

The table containing audio player related functions

+

audiobuffer

+
ncine.audiobuffer
+
+

The table containing audio buffer related functions

+

audiobuffer_player

+
ncine.audiobuffer_player
+
+

The table containing audio buffer player related functions

+

audiostream_player

+
ncine.audiostream_player
+
+

The table containing audio stream player related functions

+

base_sprite

+
ncine.base_sprite
+
+

The table containing base sprite related functions

+

blending_factor

+
enum ncine.blending_factor
+
+

blending_preset

+
enum ncine.blending_preset
+
+

camera

+
ncine.camera
+
+

The table containing camera related functions

+

clear_mode

+
enum ncine.clear_mode
+
+

color

+
ncine.color
+
+

A RGBA color

+

colors

+
table
+
+

depth_stencil_format

+
enum ncine.depth_stencil_format
+
+

drawable_node

+
ncine.drawable_node
+
+

The table containing drawable node related functions

+

efx_reverb_presets

+
enum ncine.efx_reverb_presets
+
+

font

+
ncine.font
+
+

The table containing font related functions

+

font_render_mode

+
enum ncine.font_render_mode
+
+

frame_timer

+
ncine.frame_timer
+
+

The table containing frame timer related functions

+

fs

+
ncine.fs
+
+

The table containing filesystem related functions

+

gfx_device

+
ncine.gfx_device
+
+

The table containing the graphics device related functions

+

hash64

+
table
+
+

Utility methods to calculate a 64bit hash from strings or files

+

input

+
ncine.input
+
+

The table containing the input manager related functions

+

joy_axis

+
enum ncine.joy_axis
+
+

joy_button

+
enum ncine.joy_button
+
+

joy_dead_zone

+
table
+
+

Joystick dead zone values for various axes

+

From XInput.h in DirectX SDK

+

joy_hat_state

+
enum ncine.joy_hat_state
+
+

keymod

+
enum ncine.keymod
+
+

keysym

+
enum ncine.keysym
+
+

log

+
ncine.log
+
+

The logging class

+

log_level

+
enum ncine.log_level
+
+

loop_mode

+
enum ncine.loop_mode
+
+

mesh_sprite

+
ncine.mesh_sprite
+
+

The table containing mesh sprite related functions

+

mouse_button

+
enum ncine.mouse_button
+
+

mouse_cursor_mode

+
enum ncine.mouse_cursor_mode
+
+

on_acceleration

+
function ncine.on_acceleration(event: accelerometer_event)
+
+

Callback function called at fixed time with the updated reading from the accelerometer sensor

+

on_change_scaling_factor

+
function ncine.on_change_scaling_factor(factor: number)
+
+

A callback that is called every time the window scaling factor changes

+

@param factor — The new scaling factor

+

on_draw_viewport

+
function ncine.on_draw_viewport(viewport: viewportObj)
+
+

A callback that is called every time a viewport is going to be drawn

+

@param viewport — The viewport currently being drawn

+

on_frame_end

+
function ncine.on_frame_end()
+
+

A callback that is called at the end of each frame, just before swapping drawing buffers

+

on_frame_start

+
function ncine.on_frame_start()
+
+

A callback that is called every time a new frame starts

+

on_init

+
function ncine.on_init()
+
+

A callback that is called once, after the nCine has been initialized.

+

It can be used to construct the object required by the scene.

+

on_joy_axis_moved

+
function ncine.on_joy_axis_moved(event: joy_axis_event)
+
+

Callback function called every time a joystick axis is moved

+

on_joy_button_pressed

+
function ncine.on_joy_button_pressed(event: joy_button_event)
+
+

Callback function called every time a joystick button is pressed

+

on_joy_button_released

+
function ncine.on_joy_button_released(event: joy_button_event)
+
+

Callback function called every time a joystick button is released

+

on_joy_connected

+
function ncine.on_joy_connected(event: joy_connection_event)
+
+

Callback function called every time a joystick is connected

+

on_joy_disconnected

+
function ncine.on_joy_disconnected(event: joy_connection_event)
+
+

Callback function called every time a joystick is disconnected

+

on_joy_hat_moved

+
function ncine.on_joy_hat_moved(event: joy_hat_event)
+
+

Callback function called every time a joystick hat is moved

+

on_joymapped_axis_moved

+
function ncine.on_joymapped_axis_moved(event: joymapped_axis_event)
+
+

Callback function called every time an axis of a joystick with mapping is moved

+

on_joymapped_button_pressed

+
function ncine.on_joymapped_button_pressed(event: joymapped_button_event)
+
+

Callback function called every time a button of a joystick with mapping is pressed

+

on_joymapped_button_released

+
function ncine.on_joymapped_button_released(event: joymapped_button_event)
+
+

Callback function called every time a button of a joystick with mapping is released

+

on_key_pressed

+
function ncine.on_key_pressed(event: keyboard_event)
+
+

Callback function called every time a key is pressed

+

on_key_released

+
function ncine.on_key_released(event: keyboard_event)
+
+

Callback function called every time a key is released

+

on_mouse_button_pressed

+
function ncine.on_mouse_button_pressed(event: mouse_event)
+
+

Callback function called every time a mouse button is pressed

+

on_mouse_button_released

+
function ncine.on_mouse_button_released(event: mouse_event)
+
+

Callback function called every time a mouse button is released

+

on_mouse_moved

+
function ncine.on_mouse_moved(event: mouse_state)
+
+

Callback function called every time the mouse is moved

+

on_pointer_down

+
function ncine.on_pointer_down(event: touch_event)
+
+

Callback function called every time a screen touch different than the first one is made

+

on_pointer_up

+
function ncine.on_pointer_up(event: touch_event)
+
+

Callback function called every time a screen touch different than the last one is released

+

on_post_update

+
function ncine.on_post_update()
+
+

A callback that is called every time the scenegraph has been traversed and all nodes have been transformed

+

on_pre_init

+
function ncine.on_pre_init(cfg: ncine.app_configuration)
+
+

A callback that is called once, before the nCine is initialized.

+

It can be used to change the initialization settings.

+

@param cfg — The configuration table

+

on_quit_request

+
function ncine.on_quit_request()
+  -> boolean
+
+

Callback function called when the system sends a quit event, for example when the user clicks the window close button

+

Returns true if the application should quit

+

on_resize_window

+
function ncine.on_resize_window(width: integer, height: integer)
+
+

A callback that is called every time the window is resized (by the system or the user)

+

@param width — The new width of the window

+

@param height — The new height of the window

+

on_resume

+
function ncine.on_resume()
+
+

A callback that is called every time the application resumes from suspension

+

on_scroll_input

+
function ncine.on_scroll_input(event: scroll_event)
+
+

Callback function called every time a scroll input occurs (mouse wheel, touchpad gesture, etc.)

+

on_shutdown

+
function ncine.on_shutdown()
+
+

A callback that is called once, before the nCine shuts down

+

It can be used to destroy objects constructed in ncine.on_init()

+

on_suspend

+
function ncine.on_suspend()
+
+

A callback that is called every time the application needs to be suspended

+

on_text_input

+
function ncine.on_text_input(event: text_input_event)
+
+

Callback function called every time a text input is generated

+

on_touch_down

+
function ncine.on_touch_down(event: touch_event)
+
+

Callback function called every time the first screen touch is made

+

on_touch_move

+
function ncine.on_touch_move(event: touch_event)
+
+

Callback function called every time a screen touch is moved

+

on_touch_up

+
function ncine.on_touch_up(event: touch_event)
+
+

Callback function called every time the last screen touch is released

+

particle_affector

+
ncine.particle_affector
+
+

The table containing particle affectors related functions

+

particle_system

+
ncine.particle_system
+
+

The table containing particle system related functions

+

permission

+
enum ncine.permission
+
+

rect

+
ncine.rect
+
+

A rectangle in 2D

+

rect_animation

+
ncine.rect_animation
+
+

A rectangle based animation data table

+

rewind_mode

+
enum ncine.rewind_mode
+
+

scenenode

+
ncine.scenenode
+
+

The table containing scenenode related functions.

+

A scene node is the base class for many other classes that can be organized in a scene graph.

+

shader

+
ncine.shader
+
+

The table containing shader related functions

+

shader_default_fragment

+
enum ncine.shader_default_fragment
+
+

shader_default_vertex

+
enum ncine.shader_default_vertex
+
+

shader_introspection

+
enum ncine.shader_introspection
+
+

shaderstate

+
ncine.shaderstate
+
+

The table containing shader state related functions

+

sprite

+
ncine.sprite
+
+

The table containing sprite related functions

+

start

+
function ncine.start()
+
+

Starts the application game loop

+

This function should be called after defining the required callback functions, and only if launching the script from the stand-alone lua interpreter.

+

For example:

+
if ncine == nil then
+    local names = { "ncine", "ncine_d", "libncine", "libncine_d" }
+    for i, name in ipairs(names) do
+        local ok, mod = pcall(require, name)
+        if ok then
+            break
+        end
+    end
+    needs_start = true
+end
+
+function nc.on_init()
+    [...]
+end
+
+function nc.on_frame_start()
+    [...]
+end
+
+if needs_start then
+    nc.start()
+end
+
+

tex_filtering

+
enum ncine.tex_filtering
+
+

tex_format

+
enum ncine.tex_format
+
+

tex_wrap

+
enum ncine.tex_wrap
+
+

text_alignment

+
enum ncine.text_alignment
+
+

textnode

+
ncine.textnode
+
+

The table containing textnode related functions

+

texture

+
ncine.texture
+
+

The table containing texture related functions

+

texture_cut_mode

+
enum ncine.texture_cut_mode
+
+

timestamp

+
table
+
+

Timestamping related functions

+

vec2

+
ncine.vec2
+
+

A two component vector

+

vec3

+
ncine.vec3
+
+

A three component vector

+

vec4

+
ncine.vec4
+
+

A four component vector

+

viewport

+
ncine.viewport
+
+

The table containing viewport related functions

+

viewport_type

+
enum ncine.viewport_type
+
+

visit_order_state

+
enum ncine.visit_order_state
+
+
+

ncine

+
ncine
+
+
ncine
+
+
+

ncine.affector_type

+
enum ncine.affector_type
+
+
enum ncine.affector_type
+
+
+

ncine.animated_sprite

+

add_animation

+
function ncine.animated_sprite.add_animation(sprite: animatedspriteObj, anim: ncine.rect_animation)
+
+

Adds a new animation

+

An example of a valid animation table is the following:

+
local animation = {
+    frame_duration = 0.5, -- half a second
+    loop_mode = nc.loop_mode.ENABLED,
+    rewind_mode = nc.rewind_mode.FROM_START,
+    rect_size = { x = 32, y = 32 },
+    source_rect = { x = 0, y = 0, w = 96, h = 48 },
+    num_rectangles_to_skip = 0, -- default is 0 if the field is not specified
+    padding = { x = 0, y = 0 }, -- default is {x = 0, y = 0} if the field is not specified
+}
+
+

add_child

+
function ncine.scenenode.add_child(parent: scenenodeObj, node: scenenodeObj)
+  -> boolean
+
+

Adds a child node to the specified parent

+

@return — true if the node has been added

+

clear_animations

+
function ncine.animated_sprite.clear_animations(sprite: animatedspriteObj)
+
+

Deletes all animations

+

clone

+
function ncine.animated_sprite.clone(sprite: animatedspriteObj)
+  -> animatedspriteObj
+
+

Constructs a new animated sprite object as a clone of the specified one

+

Don't forget to call delete when you are done with it!

+

@param sprite — The sprite object to be cloned

+

@return — The cloned animated sprite object

+

delete

+
function ncine.animated_sprite.delete(sprite: animatedspriteObj)
+
+

Destroys an animated sprite object and releases its memory

+

@param sprite — The animated sprite object to be destroyed

+

get_aabb

+
function ncine.drawable_node.get_aabb(node: drawablenodeObj)
+  -> ncine.rect
+
+

Returns the axis-aligned bounding box of the node area in the last frame

+

get_abs_anchor_point

+
function ncine.scenenode.get_abs_anchor_point(node: scenenodeObj)
+  -> ncine.vec2
+
+

Returns the absolute transformation anchor point in pixels

+

get_alpha

+
function ncine.scenenode.get_alpha(node: scenenodeObj)
+  -> number
+
+

Returns the node alpha color component

+

get_anchor_point

+
function ncine.drawable_node.get_anchor_point(node: drawablenodeObj)
+  -> ncine.vec2
+
+

Returns the transformation anchor point

+

get_animation_index

+
function ncine.animated_sprite.get_animation_index(sprite: animatedspriteObj)
+  -> integer
+
+

Returns the current animation index

+

get_child

+
function ncine.scenenode.get_child(node: scenenodeObj, index: integer)
+  -> scenenodeObj?
+
+

Returns the n-th child

+

get_child_order_index

+
function ncine.scenenode.get_child_order_index(node: scenenodeObj)
+  -> integer
+
+

Returns the order index of this node among its siblings

+

@return — The order index or zero if the node has no parent

+

get_children

+
function ncine.scenenode.get_children(node: scenenodeObj)
+  -> scenenodeObj[]
+
+

Returns the array of children

+

get_color

+
function ncine.scenenode.get_color(node: scenenodeObj)
+  -> ncine.color
+
+

Returns the node color

+

get_dest_blending_factor

+
function ncine.drawable_node.get_dest_blending_factor(node: drawablenodeObj)
+  -> ncine.blending_factor
+
+

Returns the destination blending factor

+

get_frame

+
function ncine.animated_sprite.get_frame(sprite: animatedspriteObj)
+  -> integer
+
+

Returns the frame number in current animation

+

get_height

+
function ncine.drawable_node.get_height(node: drawablenodeObj)
+  -> number
+
+

Returns the height of the node area

+

get_last_frame_rendered

+
function ncine.drawable_node.get_last_frame_rendered(node: drawablenodeObj)
+  -> integer
+
+

Returns the last frame in which any of the viewports have rendered this node (node was not culled)

+

get_last_frame_updated

+
function ncine.scenenode.get_last_frame_updated(node: scenenodeObj)
+  -> integer
+
+

Returns the last frame in which any of the viewports have updated this node

+

get_layer

+
function ncine.scenenode.get_layer(node: scenenodeObj)
+  -> integer
+
+

Returns the node rendering layer

+

get_parent

+
function ncine.scenenode.get_parent(node: scenenodeObj)
+  -> scenenodeObj?
+
+

Returns the parent node, if there is any

+

get_position

+
function ncine.scenenode.get_position(node: scenenodeObj)
+  -> ncine.vec2
+
+

Returns the node position relative to its parent

+

get_rotation

+
function ncine.scenenode.get_rotation(node: scenenodeObj)
+  -> number
+
+

Returns the node rotation in degress

+

get_scale

+
function ncine.scenenode.get_scale(node: scenenodeObj)
+  -> ncine.vec2
+
+

Returns the node scale factors

+

get_size

+
function ncine.drawable_node.get_size(node: drawablenodeObj)
+  -> ncine.vec2
+
+

Returns the size of the node area

+

get_src_blending_factor

+
function ncine.drawable_node.get_src_blending_factor(node: drawablenodeObj)
+  -> ncine.blending_factor
+
+

eturns the source blending factor

+

get_texrect

+
function ncine.base_sprite.get_texrect(sprite: basespriteObj)
+  -> ncine.rect
+
+

Returns the texture source rectangle for blitting

+

get_texture

+
function ncine.base_sprite.get_texture(sprite: basespriteObj)
+  -> textureObj?
+
+

Returns the texture object

+

get_visit_order_index

+
function ncine.scenenode.get_visit_order_index(node: scenenodeObj)
+  -> integer
+
+

Returns the visit drawing order of the node

+

get_visit_order_state

+
function ncine.scenenode.get_visit_order_state(node: scenenodeObj)
+  -> ncine.visit_order_state
+
+

Returns the visit order state for the specified node

+

get_width

+
function ncine.drawable_node.get_width(node: drawablenodeObj)
+  -> number
+
+

Returns the width of the node area

+

is_blending_enabled

+
function ncine.drawable_node.is_blending_enabled(node: drawablenodeObj)
+  -> boolean
+
+

Returns true if the node renders with blending enabled

+

is_enabled

+
function ncine.scenenode.is_enabled(node: scenenodeObj)
+  -> boolean
+
+

Returns true if the node is both updating and drawing

+

is_flipped_x

+
function ncine.base_sprite.is_flipped_x(sprite: basespriteObj)
+  -> boolean
+
+

Returns true if the sprite texture is horizontally flipped

+

is_flipped_y

+
function ncine.base_sprite.is_flipped_y(sprite: basespriteObj)
+  -> boolean
+
+

Returns true if the sprite texture is vertically flipped

+

is_paused

+
function ncine.animated_sprite.is_paused(sprite: animatedspriteObj)
+  -> boolean
+
+

Returns true if the current animation is paused

+

new

+
function ncine.animated_sprite.new(parent?: scenenodeObj, texture?: textureObj, x: number, y: number)
+  -> animatedspriteObj
+
+

Constructs an animated sprite object with a parent scene node, a texture, and position components

+

Don't forget to call delete when you are done with it!

+

@param parent — The parent scenenode

+

@param texture — The texture object

+

@param x — The X component of the position

+

@param y — The Y component of the position

+

@return — A new animated sprite object

+

num_animations

+
function ncine.animated_sprite.num_animations(sprite: animatedspriteObj)
+  -> integer
+
+

Returns the number of animations

+

num_children

+
function ncine.scenenode.num_children(node: scenenodeObj)
+  -> integer
+
+

Returns the number of children

+

num_frames

+
function ncine.animated_sprite.num_frames(sprite: animatedspriteObj)
+  -> integer
+
+

Returns the number of frames in current animation

+

remove_all_children

+
function ncine.scenenode.remove_all_children(parent: scenenodeObj, index: any)
+  -> boolean
+
+

Removes all children from the specified parent

+

@return — true if there were at least one node to remove

+

remove_child

+
function ncine.scenenode.remove_child(parent: scenenodeObj, node: scenenodeObj)
+  -> boolean
+
+

Removes a child node from the specified parent

+

@return — true if the node has been removed

+

remove_child_at

+
function ncine.scenenode.remove_child_at(parent: scenenodeObj, index: integer)
+  -> boolean
+
+

Removes a child node at the specified index from the specified parent

+

@return — true if the node has been removed

+

reset_texture

+
function ncine.base_sprite.reset_texture(sprite: basespriteObj)
+
+

Triggers a texture update without setting a new texture

+

set_abs_anchor_point

+
function ncine.scenenode.set_abs_anchor_point(node: scenenodeObj, pos: ncine.vec2)
+
+

Sets the absolute transformation anchor point in pixels

+

set_alpha

+
function ncine.scenenode.set_alpha(node: scenenodeObj, alpha: number)
+
+

Sets the node alpha color component

+

set_anchor_point

+
function ncine.drawable_node.set_anchor_point(node: drawablenodeObj, anchor_point: ncine.vec2)
+
+

Sets the transformation anchor point

+

set_animation_index

+
function ncine.animated_sprite.set_animation_index(sprite: animatedspriteObj, index: integer)
+
+

Sets the current animation index

+

set_blending_enabled

+
function ncine.drawable_node.set_blending_enabled(node: drawablenodeObj, enabled: boolean)
+
+

Sets the blending state for node rendering

+

set_blending_factors

+
function ncine.drawable_node.set_blending_factors(node: drawablenodeObj, src_factor: ncine.blending_factor, dest_factor: ncine.blending_factor)
+
+

Sets a specific source and destination blending factors

+

set_blending_preset

+
function ncine.drawable_node.set_blending_preset(node: drawablenodeObj, preset: ncine.blending_preset)
+
+

Sets a blending preset for source and destination blending factors

+

set_color

+
function ncine.scenenode.set_color(node: scenenodeObj, color: ncine.color)
+
+

Sets the node color

+

set_enabled

+
function ncine.scenenode.set_enabled(node: scenenodeObj, newValue: boolean)
+
+

Enables or disables both node updating and drawing

+

set_flipped_x

+
function ncine.base_sprite.set_flipped_x(sprite: basespriteObj, flipped_x: boolean)
+
+

Flips the texture rect horizontally

+

set_flipped_y

+
function ncine.base_sprite.set_flipped_y(sprite: basespriteObj, flipped_y: boolean)
+
+

Flips the texture rect vertically

+

set_frame

+
function ncine.animated_sprite.set_frame(sprite: animatedspriteObj, frame: integer)
+
+

Sets current animation to a specified frame number

+

set_layer

+
function ncine.scenenode.set_layer(node: scenenodeObj, layer: integer)
+
+

Sets the node rendering layer

+

The lowest value (bottom) is 0 and the highest one (top) is 65535.
+When the value is 0, the final layer value is inherited from the parent.

+

set_parent

+
function ncine.scenenode.set_parent(node: scenenodeObj, parent?: scenenodeObj)
+  -> boolean
+
+

Sets the parent node

+

@return — true if the parent has been set

+

set_paused

+
function ncine.animated_sprite.set_paused(sprite: animatedspriteObj, paused: boolean)
+
+

Sets the pause state for the animation

+

set_position

+
function ncine.scenenode.set_position(node: scenenodeObj, pos: ncine.vec2)
+
+

Sets a new position for the node

+

set_rotation

+
function ncine.scenenode.set_rotation(node: scenenodeObj, rot: number)
+
+

Sets the node rotation in degrees

+

@param rot — The amount of degrees

+

set_scale

+
function ncine.scenenode.set_scale(node: scenenodeObj, factor: number)
+
+

Sets both node scale factors to the specified value

+

set_scale_x

+
function ncine.scenenode.set_scale_x(node: scenenodeObj, factor: number)
+
+

Sets the node scale X factor

+

set_scale_y

+
function ncine.scenenode.set_scale_y(node: scenenodeObj, factor: number)
+
+

Sets the node scale Y factor

+

set_size

+
function ncine.base_sprite.set_size(sprite: basespriteObj, width: number, height: number)
+
+

Sets the sprite size

+

set_texrect

+
function ncine.base_sprite.set_texrect(sprite: basespriteObj, rect: ncine.rect)
+
+

Sets the texture source rectangle for blitting

+

set_texture

+
function ncine.base_sprite.set_texture(sprite: basespriteObj, texture?: textureObj)
+
+

Sets the texture object

+

set_visit_order_state

+
function ncine.scenenode.set_visit_order_state(node: scenenodeObj, state: ncine.visit_order_state)
+
+

Sets the visit order state for the specified node

+

swap_children

+
function ncine.scenenode.swap_children(parent: scenenodeObj, firstIndex: integer, secondIndex: integer)
+  -> boolean
+
+

Swaps two children at the specified indices

+

@return — true if the two nodes have been swapped

+

swap_node_back

+
function ncine.scenenode.swap_node_back(node: scenenodeObj)
+  -> boolean
+
+

Brings this node one node back in the parent's list of children

+

@return — true if the node has been brought one position back

+

swap_node_forward

+
function ncine.scenenode.swap_node_forward(node: scenenodeObj)
+  -> boolean
+
+

Brings this node one node forward in the parent's list of children

+

@return — true if the node has been brought one position forward

+

unlink_child

+
function ncine.scenenode.unlink_child(parent: scenenodeObj, node: scenenodeObj)
+  -> boolean
+
+

Unlinks a child node from the specified parent

+

The children of the unlinked node will be reparented with the grandparent node

+

@return — true if the node has been unlinked

+
+

ncine.animated_sprite

+
ncine.animated_sprite
+
+
ncine.animated_sprite
+
+
+

ncine.animated_sprite.add_animation

+
function ncine.animated_sprite.add_animation(sprite: animatedspriteObj, anim: ncine.rect_animation)
+
+
function ncine.animated_sprite.add_animation(sprite: animatedspriteObj, anim: ncine.rect_animation)
+
+
+

ncine.animated_sprite.clear_animations

+
function ncine.animated_sprite.clear_animations(sprite: animatedspriteObj)
+
+
function ncine.animated_sprite.clear_animations(sprite: animatedspriteObj)
+
+
+

ncine.animated_sprite.clone

+
function ncine.animated_sprite.clone(sprite: animatedspriteObj)
+  -> animatedspriteObj
+
+
function ncine.animated_sprite.clone(sprite: animatedspriteObj)
+  -> animatedspriteObj
+
+
+

ncine.animated_sprite.delete

+
function ncine.animated_sprite.delete(sprite: animatedspriteObj)
+
+
function ncine.animated_sprite.delete(sprite: animatedspriteObj)
+
+
+

ncine.animated_sprite.get_animation_index

+
function ncine.animated_sprite.get_animation_index(sprite: animatedspriteObj)
+  -> integer
+
+
function ncine.animated_sprite.get_animation_index(sprite: animatedspriteObj)
+  -> integer
+
+
+

ncine.animated_sprite.get_frame

+
function ncine.animated_sprite.get_frame(sprite: animatedspriteObj)
+  -> integer
+
+
function ncine.animated_sprite.get_frame(sprite: animatedspriteObj)
+  -> integer
+
+
+

ncine.animated_sprite.is_paused

+
function ncine.animated_sprite.is_paused(sprite: animatedspriteObj)
+  -> boolean
+
+
function ncine.animated_sprite.is_paused(sprite: animatedspriteObj)
+  -> boolean
+
+
+

ncine.animated_sprite.new

+
function ncine.animated_sprite.new(parent?: scenenodeObj, texture?: textureObj, x: number, y: number)
+  -> animatedspriteObj
+
+
function ncine.animated_sprite.new(parent?: scenenodeObj, texture?: textureObj, pos: ncine.vec2)
+  -> animatedspriteObj
+
+
function ncine.animated_sprite.new(parent?: scenenodeObj, texture?: textureObj, x: number, y: number)
+  -> animatedspriteObj
+
+
function ncine.animated_sprite.new(parent?: scenenodeObj, texture?: textureObj, pos: ncine.vec2)
+  -> animatedspriteObj
+
+
+

ncine.animated_sprite.num_animations

+
function ncine.animated_sprite.num_animations(sprite: animatedspriteObj)
+  -> integer
+
+
function ncine.animated_sprite.num_animations(sprite: animatedspriteObj)
+  -> integer
+
+
+

ncine.animated_sprite.num_frames

+
function ncine.animated_sprite.num_frames(sprite: animatedspriteObj)
+  -> integer
+
+
function ncine.animated_sprite.num_frames(sprite: animatedspriteObj)
+  -> integer
+
+
+

ncine.animated_sprite.set_animation_index

+
function ncine.animated_sprite.set_animation_index(sprite: animatedspriteObj, index: integer)
+
+
function ncine.animated_sprite.set_animation_index(sprite: animatedspriteObj, index: integer)
+
+
+

ncine.animated_sprite.set_frame

+
function ncine.animated_sprite.set_frame(sprite: animatedspriteObj, frame: integer)
+
+
function ncine.animated_sprite.set_frame(sprite: animatedspriteObj, frame: integer)
+
+
+

ncine.animated_sprite.set_paused

+
function ncine.animated_sprite.set_paused(sprite: animatedspriteObj, paused: boolean)
+
+
function ncine.animated_sprite.set_paused(sprite: animatedspriteObj, paused: boolean)
+
+
+

ncine.app_configuration

+

argc

+
integer
+
+

The number of arguments passed on the command line

+

argv

+
string[]
+
+

The array of arguments passed on the command line

+

audio

+
boolean
+
+

The flag is true if the audio subsystem is enabled

+

binary_shader_cache

+
boolean
+
+

The flag is true if the shader cache is enabled to load and save binary shader programs

+

buffer_mapping

+
boolean
+
+

The flag is true if mapping is used to update OpenGL buffers

+

compile_batched_shaders_twice

+
boolean
+
+

The flag is true if, on devices with UBOs smaller than 64 KB, batched shaders will be compiled twice to identify their maximum batch size

+

console_colors

+
boolean
+
+

The flag is true if console log messages should use colors

+

console_log_level

+
ncine.log_level
+
+

ncine.log_level # The minimum level that a log message needs to have to be printed in the console

+

data_path

+
string
+
+

The data path

+

debug_overlay

+
boolean
+
+

The flag is true if the debug overlay is enabled

+

defer_shader_queries

+
boolean
+
+

The flag is true when error checking and introspection of shader programs are deferred to first use

+

file_log_level

+
ncine.log_level
+
+

The minimum level that a log message needs to have to be written to the log file

+

fixed_batch_size

+
integer
+
+

Fixed size of render commands to be collected for batching on Emscripten and ANGLE

+

frame_limit

+
integer
+
+

The maximum number of frames to render per second or 0 for no limit

+

full_screen

+
boolean
+
+

The flag is true if the application is going to be in full screen mode

+

gl_debug_context

+
boolean
+
+

The flag is true if the OpenGL debug context is enabled

+

ibo_size

+
integer
+
+

The maximum size in bytes for each IBO collecting index data

+

log_file

+
string
+
+

The file used when logging to file is enabled

+

log_interval

+
number
+
+

The interval for frame timer accumulation average and log

+

mono_audio_sources

+
integer
+
+

The number of mono audio sources

+

opengl_core_profile

+
boolean
+
+

True if the OpenGL profile is going to be core (read-only)

+

opengl_forward_compatible

+
boolean
+
+

True if the OpenGL context is going to be forward compatible (read-only)

+

opengl_major_version

+
integer
+
+

The major version number of the OpenGL context (read-only)

+

opengl_minor_version

+
integer
+
+

The minor version number of the OpenGL context (read-only)

+

output_audio_frequency

+
integer
+
+

The output frequency of the audio system

+

profile_text_update_time

+
number
+
+

The update time in seconds for the profile text nodes (read-only)

+

refresh_rate

+
number
+
+

The refresh rate of the screen mode used to go in full screen.
If it is zero or negative, when requesting a full screen mode the current refresh rate will not be changed.

+

rendercommand_pool_size

+
integer
+
+

The initial size for the pool of render commands

+

resizable

+
boolean
+
+

The flag is true if the window is going to be resizable

+

resolution

+
ncine.vec2
+
+

The window size or the resolution of the closest video mode if going full screen.
If either x or y are zero or negative, the application will go in full screen at the current screen resolution.

+

scenegraph

+
boolean
+
+

The flag is true if the scenegraph based rendering is enabled

+

shader_cache_dirname

+
string
+
+

The directory name (not the complete path) for the binary shaders cache

+

stereo_audio_sources

+
integer
+
+

The number of stereo audio sources

+

threads

+
boolean
+
+

The flag is true if the threading subsystem is enabled

+

vao_pool_size

+
integer
+
+

The maximum size for the pool of VAOs

+

vbo_size

+
integer
+
+

The maximum size in bytes for each VBO collecting geometry data

+

vsync

+
boolean
+
+

The flag is true if the vertical synchronization is enabled

+

window_icon

+
string
+
+

The window icon filename

+

window_position

+
ncine.vec2
+
+

The window position coordinates in the virtual screen made of all the connected monitors

+

window_scaling

+
boolean
+
+

The flag is true if the window size is automatically scaled according to the display factor

+

window_title

+
string
+
+

The window title

+
+

ncine.app_onfiguration

+
ncine.app_configuration
+
+
ncine.app_configuration
+
+
+

ncine.application

+
ncine.application
+
+
ncine.application
+
+
+

ncine.application

+

get_app_configuration

+
function ncine.application.get_app_configuration()
+  -> ncine.app_configuration
+
+

Returns the configuration used to initialize the application

+

get_auto_suspension

+
function ncine.application.get_auto_suspension()
+  -> boolean
+
+

Returns true if the application should auto-suspend when it loses focus

+

get_debugoverlay_settings

+
function ncine.application.get_debugoverlay_settings()
+  -> debug_overlay_settings
+
+

Returns the run-time debug overlay settings, if debug overlay is available

+

get_gui_settings

+
function ncine.application.get_gui_settings()
+  -> gui_settings
+
+

Returns the run-time GUI settings

+

get_height

+
function ncine.application.get_height()
+  -> number
+
+

Returns the drawable screen height

+

get_interval

+
function ncine.application.get_interval()
+  -> number
+
+

Returns the time in seconds that last frame took to complete

+

get_num_frames

+
function ncine.application.get_num_frames()
+  -> integer
+
+

Returns the total number of frames already rendered

+

get_rendering_settings

+
function ncine.application.get_rendering_settings()
+  -> rendering_settings
+
+

Returns the run-time rendering settings

+

get_resolution

+
function ncine.application.get_resolution()
+  -> ncine.vec2
+
+

Returns the drawable screen resolution vector

+

get_rootnode

+
function ncine.application.get_rootnode()
+  -> scenenodeObj
+
+

Returns the root node of the transformation graph

+

get_screen_viewport

+
function ncine.application.get_screen_viewport()
+  -> viewportObj
+
+

Returns the screen viewport

+

get_width

+
function ncine.application.get_width()
+  -> number
+
+

Returns the drawable screen width

+

is_suspended

+
function ncine.application.is_suspended()
+  -> boolean
+
+

Returns true if the application is suspended.

+

A suspended application will not update nor receive events.

+

quit

+
function ncine.application.quit()
+
+

Asks the application to quit as soon as possible

+

set_auto_suspension

+
function ncine.application.set_auto_suspension(flag: boolean)
+
+

Sets a new value for the auto-suspension flag

+

set_debugoverlay_settings

+
function ncine.application.set_debugoverlay_settings(settings: debug_overlay_settings)
+
+

Sets the run-time debug overlay settings

+

set_gui_settings

+
function ncine.application.set_gui_settings(settings: gui_settings)
+
+

Sets the run-time GUI settings

+

set_rendering_settings

+
function ncine.application.set_rendering_settings(settings: rendering_settings)
+
+

Sets the run-time rendering settings

+

set_suspended

+
function ncine.application.set_suspended(flag: boolean)
+
+

Sets a new value for the suspension flag

+
+

ncine.application.get_app_configuration

+
function ncine.application.get_app_configuration()
+  -> ncine.app_configuration
+
+
function ncine.application.get_app_configuration()
+  -> ncine.app_configuration
+
+
+

ncine.application.get_auto_suspension

+
function ncine.application.get_auto_suspension()
+  -> boolean
+
+
function ncine.application.get_auto_suspension()
+  -> boolean
+
+
+

ncine.application.get_debugoverlay_settings

+
function ncine.application.get_debugoverlay_settings()
+  -> debug_overlay_settings
+
+
function ncine.application.get_debugoverlay_settings()
+  -> debug_overlay_settings
+
+
+

ncine.application.get_gui_settings

+
function ncine.application.get_gui_settings()
+  -> gui_settings
+
+
function ncine.application.get_gui_settings()
+  -> gui_settings
+
+
+

ncine.application.get_height

+
function ncine.application.get_height()
+  -> number
+
+
function ncine.application.get_height()
+  -> number
+
+
+

ncine.application.get_interval

+
function ncine.application.get_interval()
+  -> number
+
+
function ncine.application.get_interval()
+  -> number
+
+
+

ncine.application.get_num_frames

+
function ncine.application.get_num_frames()
+  -> integer
+
+
function ncine.application.get_num_frames()
+  -> integer
+
+
+

ncine.application.get_rendering_settings

+
function ncine.application.get_rendering_settings()
+  -> rendering_settings
+
+
function ncine.application.get_rendering_settings()
+  -> rendering_settings
+
+
+

ncine.application.get_resolution

+
function ncine.application.get_resolution()
+  -> ncine.vec2
+
+
function ncine.application.get_resolution()
+  -> ncine.vec2
+
+
+

ncine.application.get_rootnode

+
function ncine.application.get_rootnode()
+  -> scenenodeObj
+
+
function ncine.application.get_rootnode()
+  -> scenenodeObj
+
+
+

ncine.application.get_screen_viewport

+
function ncine.application.get_screen_viewport()
+  -> viewportObj
+
+
function ncine.application.get_screen_viewport()
+  -> viewportObj
+
+
+

ncine.application.get_width

+
function ncine.application.get_width()
+  -> number
+
+
function ncine.application.get_width()
+  -> number
+
+
+

ncine.application.is_suspended

+
function ncine.application.is_suspended()
+  -> boolean
+
+
function ncine.application.is_suspended()
+  -> boolean
+
+
+

ncine.application.quit

+
function ncine.application.quit()
+
+
function ncine.application.quit()
+
+
+

ncine.application.set_auto_suspension

+
function ncine.application.set_auto_suspension(flag: boolean)
+
+
function ncine.application.set_auto_suspension(flag: boolean)
+
+
+

ncine.application.set_debugoverlay_settings

+
function ncine.application.set_debugoverlay_settings(settings: debug_overlay_settings)
+
+
function ncine.application.set_debugoverlay_settings(settings: debug_overlay_settings)
+
+
+

ncine.application.set_gui_settings

+
function ncine.application.set_gui_settings(settings: gui_settings)
+
+
function ncine.application.set_gui_settings(settings: gui_settings)
+
+
+

ncine.application.set_rendering_settings

+
function ncine.application.set_rendering_settings(settings: rendering_settings)
+
+
function ncine.application.set_rendering_settings(settings: rendering_settings)
+
+
+

ncine.application.set_suspended

+
function ncine.application.set_suspended(flag: boolean)
+
+
function ncine.application.set_suspended(flag: boolean)
+
+
+

ncine.audio_device

+

get_gain

+
function ncine.audio_device.get_gain()
+  -> number
+
+

Returns the listener gain value

+

get_max_num_sources

+
function ncine.audio_device.get_max_num_sources()
+  -> integer
+
+

Returns the maximum number of audio sources

+

get_num_available_sources

+
function ncine.audio_device.get_num_available_sources()
+  -> integer
+
+

Returns the number of available audio sources

+

get_num_players

+
function ncine.audio_device.get_num_players()
+  -> integer
+
+

Returns the number of active players

+

get_player

+
function ncine.audio_device.get_player(index: integer)
+  -> audioplayerObj?
+
+

Returns the specified active player object

+

get_position

+
function ncine.audio_device.get_position()
+  -> ncine.vec3
+
+

Returns the listener position vector

+

get_velocity

+
function ncine.audio_device.get_velocity()
+  -> ncine.vec3
+
+

Returns the listener velocity vector

+

has_efx_extension

+
function ncine.audio_device.has_efx_extension()
+  -> boolean
+
+

Returns true if the OpenAL EFX extension is available

+

name

+
function ncine.audio_device.name()
+  -> string
+
+

Returns the name of the audio device

+

pause_device

+
function ncine.audio_device.pause_device()
+
+

Pauses all audio device activities using an OpenAL-soft extension (if available)

+

If the extension is not available, all players are paused.

+

pause_players

+
function ncine.audio_device.pause_players()
+
+

Pauses every player currently playing

+

Paused players can be resumed with resume_players().

+

resume_device

+
function ncine.audio_device.resume_device()
+
+

Resumes all audio device activities using an OpenAL-soft extension (if available)

+

If the extension is not available, all paused players resume playing.

+

resume_players

+
function ncine.audio_device.resume_players()
+
+

Resumes all and only the players that were paused by a pause_players() call

+

set_gain

+
function ncine.audio_device.set_gain(gain: number)
+
+

Sets the listener gain value

+

set_position

+
function ncine.audio_device.set_position(position: ncine.vec3)
+
+

Sets the listener position vector

+

set_velocity

+
function ncine.audio_device.set_velocity(velocity: ncine.vec3)
+
+

Sets the listener velocity vector

+

stop_players

+
function ncine.audio_device.stop_players()
+
+

Stops every player currently playing

+
+

ncine.audio_device

+
ncine.audio_device
+
+
ncine.audio_device
+
+
+

ncine.audio_device.get_gain

+
function ncine.audio_device.get_gain()
+  -> number
+
+
function ncine.audio_device.get_gain()
+  -> number
+
+
+

ncine.audio_device.get_max_num_sources

+
function ncine.audio_device.get_max_num_sources()
+  -> integer
+
+
function ncine.audio_device.get_max_num_sources()
+  -> integer
+
+
+

ncine.audio_device.get_num_available_sources

+
function ncine.audio_device.get_num_available_sources()
+  -> integer
+
+
function ncine.audio_device.get_num_available_sources()
+  -> integer
+
+
+

ncine.audio_device.get_num_players

+
function ncine.audio_device.get_num_players()
+  -> integer
+
+
function ncine.audio_device.get_num_players()
+  -> integer
+
+
+

ncine.audio_device.get_player

+
function ncine.audio_device.get_player(index: integer)
+  -> audioplayerObj?
+
+
function ncine.audio_device.get_player(index: integer)
+  -> audioplayerObj?
+
+
+

ncine.audio_device.get_position

+
function ncine.audio_device.get_position()
+  -> ncine.vec3
+
+
function ncine.audio_device.get_position()
+  -> ncine.vec3
+
+
+

ncine.audio_device.get_velocity

+
function ncine.audio_device.get_velocity()
+  -> ncine.vec3
+
+
function ncine.audio_device.get_velocity()
+  -> ncine.vec3
+
+
+

ncine.audio_device.has_efx_extension

+
function ncine.audio_device.has_efx_extension()
+  -> boolean
+
+
function ncine.audio_device.has_efx_extension()
+  -> boolean
+
+
+

ncine.audio_device.name

+
function ncine.audio_device.name()
+  -> string
+
+
function ncine.audio_device.name()
+  -> string
+
+
+

ncine.audio_device.pause_device

+
function ncine.audio_device.pause_device()
+
+
function ncine.audio_device.pause_device()
+
+
+

ncine.audio_device.pause_players

+
function ncine.audio_device.pause_players()
+
+
function ncine.audio_device.pause_players()
+
+
+

ncine.audio_device.resume_device

+
function ncine.audio_device.resume_device()
+
+
function ncine.audio_device.resume_device()
+
+
+

ncine.audio_device.resume_players

+
function ncine.audio_device.resume_players()
+
+
function ncine.audio_device.resume_players()
+
+
+

ncine.audio_device.set_gain

+
function ncine.audio_device.set_gain(gain: number)
+
+
function ncine.audio_device.set_gain(gain: number)
+
+
+

ncine.audio_device.set_position

+
function ncine.audio_device.set_position(position: ncine.vec3)
+
+
function ncine.audio_device.set_position(position_x: number, position_y: number, position_z: number)
+
+
function ncine.audio_device.set_position(velocity_x: number, velocity_y: number, velocity_z: number)
+
+
function ncine.audio_device.set_position(position: ncine.vec3)
+
+
function ncine.audio_device.set_position(position_x: number, position_y: number, position_z: number)
+
+
function ncine.audio_device.set_position(velocity_x: number, velocity_y: number, velocity_z: number)
+
+
+

ncine.audio_device.set_velocity

+
function ncine.audio_device.set_velocity(velocity: ncine.vec3)
+
+
function ncine.audio_device.set_velocity(velocity: ncine.vec3)
+
+
+

ncine.audio_device.stop_players

+
function ncine.audio_device.stop_players()
+
+
function ncine.audio_device.stop_players()
+
+
+

ncine.audio_effect

+

apply_properties

+
function ncine.audio_effect.apply_properties(audio_effect: audioeffectObj, properties: audioeffectpropertiesObj)
+
+

Sets an effect type with all of its properties

+

delete

+
function ncine.audio_effect.delete(audio_effect: audioeffectObj)
+
+

Destroys an audio effect object and releases its memory

+

@param audio_effect — The audio effect object to be destroyed

+

get_effect_id

+
function ncine.audio_effect.get_effect_id(audio_effect: audioeffectObj)
+  -> integer
+
+

Returns the OpenAL effect id

+

get_type

+
function ncine.audio_effect.get_type(audio_effect: audioeffectObj)
+  -> ncine.audio_effect_type
+
+

Returns the effect type

+

new

+
function ncine.audio_effect.new()
+  -> audioeffectObj
+
+

Constructs an audio effect object

+

Don't forget to call delete when you are done with it!

+

@return — A new audio effect object

+
+

ncine.audio_effect

+
ncine.audio_effect
+
+
ncine.audio_effect
+
+
+

ncine.audio_effect.apply_properties

+
function ncine.audio_effect.apply_properties(audio_effect: audioeffectObj, properties: audioeffectpropertiesObj)
+
+
function ncine.audio_effect.apply_properties(audio_effect: audioeffectObj, properties: audioeffectpropertiesObj)
+
+
+

ncine.audio_effect.delete

+
function ncine.audio_effect.delete(audio_effect: audioeffectObj)
+
+
function ncine.audio_effect.delete(audio_effect: audioeffectObj)
+
+
+

ncine.audio_effect.get_effect_id

+
function ncine.audio_effect.get_effect_id(audio_effect: audioeffectObj)
+  -> integer
+
+
function ncine.audio_effect.get_effect_id(audio_effect: audioeffectObj)
+  -> integer
+
+
+

ncine.audio_effect.get_type

+
function ncine.audio_effect.get_type(audio_effect: audioeffectObj)
+  -> ncine.audio_effect_type
+
+
function ncine.audio_effect.get_type(audio_effect: audioeffectObj)
+  -> ncine.audio_effect_type
+
+
+

ncine.audio_effect.new

+
function ncine.audio_effect.new()
+  -> audioeffectObj
+
+
function ncine.audio_effect.new()
+  -> audioeffectObj
+
+
+

ncine.audio_effect_properties

+
ncine.audio_effect_properties
+
+
ncine.audio_effect_properties
+
+
+

ncine.audio_effect_properties

+

delete

+
function ncine.audio_effect_properties.delete(audio_effect_properties: audioeffectpropertiesObj)
+
+

Destroys an audio effect properties object and releases its memory

+

@param audio_effect_properties — The audio effect properties object to be destroyed

+

get_auto_wah_properties

+
function ncine.audio_effect_properties.get_auto_wah_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_auto_wah_properties
+
+

Returns the current values for the auto wah effect properties

+

get_chorus_properties

+
function ncine.audio_effect_properties.get_chorus_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_chorus_properties
+
+

Returns the current values for the chorus effect properties

+

get_compressor_properties

+
function ncine.audio_effect_properties.get_compressor_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_compressor_properties
+
+

Returns the current values for the compressor effect properties

+

get_distortion_properties

+
function ncine.audio_effect_properties.get_distortion_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_distortion_properties
+
+

Returns the current values for the distortion effect properties

+

get_eax_reverb_properties

+
function ncine.audio_effect_properties.get_eax_reverb_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_eax_reverb_properties
+
+

Returns the current values for the EAX reverb effect properties

+

get_echo_properties

+
function ncine.audio_effect_properties.get_echo_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_echo_properties
+
+

Returns the current values for the echo effect properties

+

get_equalizer_properties

+
function ncine.audio_effect_properties.get_equalizer_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_equalizer_properties
+
+

Returns the current values for the equalizer effect properties

+

get_flanger_properties

+
function ncine.audio_effect_properties.get_flanger_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_flanger_properties
+
+

Returns the current values for the flanger effect properties

+

get_frequency_shifter_properties

+
function ncine.audio_effect_properties.get_frequency_shifter_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_frequency_shifter_properties
+
+

Returns the current values for the frequency shifter effect properties

+

get_max_auto_wah_properties

+
function ncine.audio_effect_properties.get_max_auto_wah_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_auto_wah_properties
+
+

Returns the maximum values for the auto wah effect properties

+

get_max_chorus_properties

+
function ncine.audio_effect_properties.get_max_chorus_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_chorus_properties
+
+

Returns the maximum values for the chorus effect properties

+

get_max_compressor_properties

+
function ncine.audio_effect_properties.get_max_compressor_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_compressor_properties
+
+

Returns the maximum values for the compressor effect properties

+

get_max_distortion_properties

+
function ncine.audio_effect_properties.get_max_distortion_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_distortion_properties
+
+

Returns the maximum values for the distortion effect properties

+

get_max_eax_reverb_properties

+
function ncine.audio_effect_properties.get_max_eax_reverb_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_eax_reverb_properties
+
+

Returns the maximum values for the EAX reverb effect properties

+

get_max_echo_properties

+
function ncine.audio_effect_properties.get_max_echo_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_echo_properties
+
+

Returns the maximum values for the echo effect properties

+

get_max_equalizer_properties

+
function ncine.audio_effect_properties.get_max_equalizer_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_equalizer_properties
+
+

Returns the maximum values for the equalizer effect properties

+

get_max_flanger_properties

+
function ncine.audio_effect_properties.get_max_flanger_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_flanger_properties
+
+

Returns the maximum values for the flanger effect properties

+

get_max_frequency_shifter_properties

+
function ncine.audio_effect_properties.get_max_frequency_shifter_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_frequency_shifter_properties
+
+

Returns the maximum values for the frequency shifter effect properties

+

get_max_pitch_shifter_properties

+
function ncine.audio_effect_properties.get_max_pitch_shifter_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_pitch_shifter_properties
+
+

Returns the maximum values for the pitch shifter effect properties

+

get_max_reverb_properties

+
function ncine.audio_effect_properties.get_max_reverb_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_reverb_properties
+
+

Returns the maximum values for the reverb effect properties

+

get_max_ring_modulator_properties

+
function ncine.audio_effect_properties.get_max_ring_modulator_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_ring_modulator_properties
+
+

Returns the maximum values for the ring modulator effect properties

+

get_max_vocal_morpher_properties

+
function ncine.audio_effect_properties.get_max_vocal_morpher_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_vocal_morpher_properties
+
+

Returns the maximum values for the vocal morpher effect properties

+

get_min_auto_wah_properties

+
function ncine.audio_effect_properties.get_min_auto_wah_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_auto_wah_properties
+
+

Returns the minimum values for the auto wah effect properties

+

get_min_chorus_properties

+
function ncine.audio_effect_properties.get_min_chorus_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_chorus_properties
+
+

Returns the minimum values for the chorus effect properties

+

get_min_compressor_properties

+
function ncine.audio_effect_properties.get_min_compressor_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_compressor_properties
+
+

Returns the minimum values for the compressor effect properties

+

get_min_distortion_properties

+
function ncine.audio_effect_properties.get_min_distortion_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_distortion_properties
+
+

Returns the minimum values for the distortion effect properties

+

get_min_eax_reverb_properties

+
function ncine.audio_effect_properties.get_min_eax_reverb_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_eax_reverb_properties
+
+

Returns the minimum values for the EAX reverb effect properties

+

get_min_echo_properties

+
function ncine.audio_effect_properties.get_min_echo_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_echo_properties
+
+

Returns the minimum values for the echo effect properties

+

get_min_equalizer_properties

+
function ncine.audio_effect_properties.get_min_equalizer_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_equalizer_properties
+
+

Returns the minimum values for the equalizer effect properties

+

get_min_flanger_properties

+
function ncine.audio_effect_properties.get_min_flanger_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_flanger_properties
+
+

Returns the minimum values for the flanger effect properties

+

get_min_frequency_shifter_properties

+
function ncine.audio_effect_properties.get_min_frequency_shifter_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_frequency_shifter_properties
+
+

Returns the minimum values for the frequency shifter effect properties

+

get_min_pitch_shifter_properties

+
function ncine.audio_effect_properties.get_min_pitch_shifter_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_pitch_shifter_properties
+
+

Returns the minimum values for the pitch shifter effect properties

+

get_min_reverb_properties

+
function ncine.audio_effect_properties.get_min_reverb_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_reverb_properties
+
+

Returns the minimum values for the reverb effect properties

+

get_min_ring_modulator_properties

+
function ncine.audio_effect_properties.get_min_ring_modulator_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_ring_modulator_properties
+
+

Returns the minimum values for the ring modulator effect properties

+

get_min_vocal_morpher_properties

+
function ncine.audio_effect_properties.get_min_vocal_morpher_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_vocal_morpher_properties
+
+

Returns the minimum values for the vocal morpher effect properties

+

get_pitch_shifter_properties

+
function ncine.audio_effect_properties.get_pitch_shifter_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_pitch_shifter_properties
+
+

Returns the current values for the pitch shifter effect properties

+

get_reverb_properties

+
function ncine.audio_effect_properties.get_reverb_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_reverb_properties
+
+

Returns the current values for the reverb effect properties

+

get_ring_modulator_properties

+
function ncine.audio_effect_properties.get_ring_modulator_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_ring_modulator_properties
+
+

Returns the current values for the ring modulator effect properties

+

get_type

+
function ncine.audio_effect_properties.get_type(audio_effect_properties: audioeffectpropertiesObj)
+  -> ncine.audio_effect_type
+
+

Returns the effect properties type

+

get_vocal_morpher_properties

+
function ncine.audio_effect_properties.get_vocal_morpher_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_vocal_morpher_properties
+
+

Returns the current values for the vocal morpher effect properties

+

load_efx_reverb_preset

+
function ncine.audio_effect_properties.load_efx_reverb_preset(audio_effect_properties: audioeffectpropertiesObj, preset: ncine.efx_reverb_presets)
+
+

Loads and sets the effect properties from an EFX reverb preset

+

new

+
function ncine.audio_effect_properties.new()
+  -> audioeffectpropertiesObj
+
+

Constructs an audio effect properties object

+

Don't forget to call delete when you are done with it!

+

@return — A new audio effect properties object

+

reset_auto_wah_properties

+
function ncine.audio_effect_properties.reset_auto_wah_properties(audio_effect_properties: audioeffectpropertiesObj)
+
+

Resets all property values for the auto wah effect to thir default

+

reset_chorus_properties

+
function ncine.audio_effect_properties.reset_chorus_properties(audio_effect_properties: audioeffectpropertiesObj)
+
+

Resets all property values for the chorus effect to thir default

+

reset_compressor_properties

+
function ncine.audio_effect_properties.reset_compressor_properties(audio_effect_properties: audioeffectpropertiesObj)
+
+

Resets all property values for the compressor effect to thir default

+

reset_distortion_properties

+
function ncine.audio_effect_properties.reset_distortion_properties(audio_effect_properties: audioeffectpropertiesObj)
+
+

Resets all property values for the distortion effect to thir default

+

reset_eax_reverb_properties

+
function ncine.audio_effect_properties.reset_eax_reverb_properties(audio_effect_properties: audioeffectpropertiesObj)
+
+

Resets all property values for the EAX reverb effect to thir default

+

reset_echo_properties

+
function ncine.audio_effect_properties.reset_echo_properties(audio_effect_properties: audioeffectpropertiesObj)
+
+

Resets all property values for the echo effect to thir default

+

reset_equalizer_properties

+
function ncine.audio_effect_properties.reset_equalizer_properties(audio_effect_properties: audioeffectpropertiesObj)
+
+

Resets all property values for the equalizer effect to thir default

+

reset_flanger_properties

+
function ncine.audio_effect_properties.reset_flanger_properties(audio_effect_properties: audioeffectpropertiesObj)
+
+

Resets all property values for the flanger effect to thir default

+

reset_frequency_shifter_properties

+
function ncine.audio_effect_properties.reset_frequency_shifter_properties(audio_effect_properties: audioeffectpropertiesObj)
+
+

Resets all property values for the frequency shifter effect to thir default

+

reset_pitch_shifter_properties

+
function ncine.audio_effect_properties.reset_pitch_shifter_properties(audio_effect_properties: audioeffectpropertiesObj)
+
+

Resets all property values for the pitch shifter effect to thir default

+

reset_reverb_properties

+
function ncine.audio_effect_properties.reset_reverb_properties(audio_effect_properties: audioeffectpropertiesObj)
+
+

Resets all property values for the reverb effect to thir default

+

reset_ring_modulator_properties

+
function ncine.audio_effect_properties.reset_ring_modulator_properties(audio_effect_properties: audioeffectpropertiesObj)
+
+

Resets all property values for the ring modulator effect to thir default

+

reset_vocal_morpher_properties

+
function ncine.audio_effect_properties.reset_vocal_morpher_properties(audio_effect_properties: audioeffectpropertiesObj)
+
+

Resets all property values for the vocal morpher effect to thir default

+

set_auto_wah_properties

+
function ncine.audio_effect_properties.set_auto_wah_properties(audio_effect_properties: audioeffectpropertiesObj, properties: audio_auto_wah_properties)
+
+

Sets all values for the auto wah effect properties

+

set_chorus_properties

+
function ncine.audio_effect_properties.set_chorus_properties(audio_effect_properties: audioeffectpropertiesObj, properties: audio_chorus_properties)
+
+

Sets all values for the chorus effect properties

+

set_compressor_properties

+
function ncine.audio_effect_properties.set_compressor_properties(audio_effect_properties: audioeffectpropertiesObj, properties: audio_compressor_properties)
+
+

Sets all values for the compressor effect properties

+

set_distortion_properties

+
function ncine.audio_effect_properties.set_distortion_properties(audio_effect_properties: audioeffectpropertiesObj, properties: audio_distortion_properties)
+
+

Sets all values for the distortion effect properties

+

set_eax_reverb_properties

+
function ncine.audio_effect_properties.set_eax_reverb_properties(audio_effect_properties: audioeffectpropertiesObj, properties: audio_eax_reverb_properties)
+
+

Sets all values for the EAX reverb effect properties

+

set_echo_properties

+
function ncine.audio_effect_properties.set_echo_properties(audio_effect_properties: audioeffectpropertiesObj, properties: audio_echo_properties)
+
+

Sets all values for the echo effect properties

+

set_equalizer_properties

+
function ncine.audio_effect_properties.set_equalizer_properties(audio_effect_properties: audioeffectpropertiesObj, properties: audio_equalizer_properties)
+
+

Sets all values for the equalizer effect properties

+

set_flanger_properties

+
function ncine.audio_effect_properties.set_flanger_properties(audio_effect_properties: audioeffectpropertiesObj, properties: audio_flanger_properties)
+
+

Sets all values for the flanger effect properties

+

set_frequency_shifter_properties

+
function ncine.audio_effect_properties.set_frequency_shifter_properties(audio_effect_properties: audioeffectpropertiesObj, properties: audio_frequency_shifter_properties)
+
+

Sets all values for the frequency shifter effect properties

+

set_pitch_shifter_properties

+
function ncine.audio_effect_properties.set_pitch_shifter_properties(audio_effect_properties: audioeffectpropertiesObj, properties: audio_pitch_shifter_properties)
+
+

Sets all values for the pitch shifter effect properties

+

set_reverb_properties

+
function ncine.audio_effect_properties.set_reverb_properties(audio_effect_properties: audioeffectpropertiesObj, properties: audio_reverb_properties)
+
+

Sets all values for the reverb effect properties

+

set_ring_modulator_properties

+
function ncine.audio_effect_properties.set_ring_modulator_properties(audio_effect_properties: audioeffectpropertiesObj, properties: audio_ring_modulator_properties)
+
+

Sets all values for the ring modulator effect properties

+

set_type

+
function ncine.audio_effect_properties.set_type(audio_effect_properties: audioeffectpropertiesObj, audio_effect_type: ncine.audio_effect_type)
+
+

Sets the effect properties type

+

set_vocal_morpher_properties

+
function ncine.audio_effect_properties.set_vocal_morpher_properties(audio_effect_properties: audioeffectpropertiesObj, properties: audio_vocal_morpher_properties)
+
+

Sets all values for the vocal morpher effect properties

+
+

ncine.audio_effect_properties.delete

+
function ncine.audio_effect_properties.delete(audio_effect_properties: audioeffectpropertiesObj)
+
+
function ncine.audio_effect_properties.delete(audio_effect_properties: audioeffectpropertiesObj)
+
+
+

ncine.audio_effect_properties.get_auto_wah_properties

+
function ncine.audio_effect_properties.get_auto_wah_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_auto_wah_properties
+
+
function ncine.audio_effect_properties.get_auto_wah_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_auto_wah_properties
+
+
+

ncine.audio_effect_properties.get_chorus_properties

+
function ncine.audio_effect_properties.get_chorus_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_chorus_properties
+
+
function ncine.audio_effect_properties.get_chorus_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_chorus_properties
+
+
+

ncine.audio_effect_properties.get_compressor_properties

+
function ncine.audio_effect_properties.get_compressor_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_compressor_properties
+
+
function ncine.audio_effect_properties.get_compressor_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_compressor_properties
+
+
+

ncine.audio_effect_properties.get_distortion_properties

+
function ncine.audio_effect_properties.get_distortion_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_distortion_properties
+
+
function ncine.audio_effect_properties.get_distortion_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_distortion_properties
+
+
+

ncine.audio_effect_properties.get_eax_reverb_properties

+
function ncine.audio_effect_properties.get_eax_reverb_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_eax_reverb_properties
+
+
function ncine.audio_effect_properties.get_eax_reverb_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_eax_reverb_properties
+
+
+

ncine.audio_effect_properties.get_echo_properties

+
function ncine.audio_effect_properties.get_echo_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_echo_properties
+
+
function ncine.audio_effect_properties.get_echo_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_echo_properties
+
+
+

ncine.audio_effect_properties.get_equalizer_properties

+
function ncine.audio_effect_properties.get_equalizer_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_equalizer_properties
+
+
function ncine.audio_effect_properties.get_equalizer_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_equalizer_properties
+
+
+

ncine.audio_effect_properties.get_flanger_properties

+
function ncine.audio_effect_properties.get_flanger_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_flanger_properties
+
+
function ncine.audio_effect_properties.get_flanger_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_flanger_properties
+
+
+

ncine.audio_effect_properties.get_frequency_shifter_properties

+
function ncine.audio_effect_properties.get_frequency_shifter_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_frequency_shifter_properties
+
+
function ncine.audio_effect_properties.get_frequency_shifter_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_frequency_shifter_properties
+
+
+

ncine.audio_effect_properties.get_max_auto_wah_properties

+
function ncine.audio_effect_properties.get_max_auto_wah_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_auto_wah_properties
+
+
function ncine.audio_effect_properties.get_max_auto_wah_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_auto_wah_properties
+
+
+

ncine.audio_effect_properties.get_max_chorus_properties

+
function ncine.audio_effect_properties.get_max_chorus_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_chorus_properties
+
+
function ncine.audio_effect_properties.get_max_chorus_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_chorus_properties
+
+
+

ncine.audio_effect_properties.get_max_compressor_properties

+
function ncine.audio_effect_properties.get_max_compressor_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_compressor_properties
+
+
function ncine.audio_effect_properties.get_max_compressor_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_compressor_properties
+
+
+

ncine.audio_effect_properties.get_max_distortion_properties

+
function ncine.audio_effect_properties.get_max_distortion_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_distortion_properties
+
+
function ncine.audio_effect_properties.get_max_distortion_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_distortion_properties
+
+
+

ncine.audio_effect_properties.get_max_eax_reverb_properties

+
function ncine.audio_effect_properties.get_max_eax_reverb_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_eax_reverb_properties
+
+
function ncine.audio_effect_properties.get_max_eax_reverb_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_eax_reverb_properties
+
+
+

ncine.audio_effect_properties.get_max_echo_properties

+
function ncine.audio_effect_properties.get_max_echo_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_echo_properties
+
+
function ncine.audio_effect_properties.get_max_echo_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_echo_properties
+
+
+

ncine.audio_effect_properties.get_max_equalizer_properties

+
function ncine.audio_effect_properties.get_max_equalizer_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_equalizer_properties
+
+
function ncine.audio_effect_properties.get_max_equalizer_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_equalizer_properties
+
+
+

ncine.audio_effect_properties.get_max_flanger_properties

+
function ncine.audio_effect_properties.get_max_flanger_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_flanger_properties
+
+
function ncine.audio_effect_properties.get_max_flanger_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_flanger_properties
+
+
+

ncine.audio_effect_properties.get_max_frequency_shifter_properties

+
function ncine.audio_effect_properties.get_max_frequency_shifter_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_frequency_shifter_properties
+
+
function ncine.audio_effect_properties.get_max_frequency_shifter_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_frequency_shifter_properties
+
+
+

ncine.audio_effect_properties.get_max_pitch_shifter_properties

+
function ncine.audio_effect_properties.get_max_pitch_shifter_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_pitch_shifter_properties
+
+
function ncine.audio_effect_properties.get_max_pitch_shifter_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_pitch_shifter_properties
+
+
+

ncine.audio_effect_properties.get_max_reverb_properties

+
function ncine.audio_effect_properties.get_max_reverb_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_reverb_properties
+
+
function ncine.audio_effect_properties.get_max_reverb_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_reverb_properties
+
+
+

ncine.audio_effect_properties.get_max_ring_modulator_properties

+
function ncine.audio_effect_properties.get_max_ring_modulator_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_ring_modulator_properties
+
+
function ncine.audio_effect_properties.get_max_ring_modulator_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_ring_modulator_properties
+
+
+

ncine.audio_effect_properties.get_max_vocal_morpher_properties

+
function ncine.audio_effect_properties.get_max_vocal_morpher_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_vocal_morpher_properties
+
+
function ncine.audio_effect_properties.get_max_vocal_morpher_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_vocal_morpher_properties
+
+
+

ncine.audio_effect_properties.get_min_auto_wah_properties

+
function ncine.audio_effect_properties.get_min_auto_wah_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_auto_wah_properties
+
+
function ncine.audio_effect_properties.get_min_auto_wah_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_auto_wah_properties
+
+
+

ncine.audio_effect_properties.get_min_chorus_properties

+
function ncine.audio_effect_properties.get_min_chorus_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_chorus_properties
+
+
function ncine.audio_effect_properties.get_min_chorus_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_chorus_properties
+
+
+

ncine.audio_effect_properties.get_min_compressor_properties

+
function ncine.audio_effect_properties.get_min_compressor_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_compressor_properties
+
+
function ncine.audio_effect_properties.get_min_compressor_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_compressor_properties
+
+
+

ncine.audio_effect_properties.get_min_distortion_properties

+
function ncine.audio_effect_properties.get_min_distortion_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_distortion_properties
+
+
function ncine.audio_effect_properties.get_min_distortion_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_distortion_properties
+
+
+

ncine.audio_effect_properties.get_min_eax_reverb_properties

+
function ncine.audio_effect_properties.get_min_eax_reverb_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_eax_reverb_properties
+
+
function ncine.audio_effect_properties.get_min_eax_reverb_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_eax_reverb_properties
+
+
+

ncine.audio_effect_properties.get_min_echo_properties

+
function ncine.audio_effect_properties.get_min_echo_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_echo_properties
+
+
function ncine.audio_effect_properties.get_min_echo_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_echo_properties
+
+
+

ncine.audio_effect_properties.get_min_equalizer_properties

+
function ncine.audio_effect_properties.get_min_equalizer_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_equalizer_properties
+
+
function ncine.audio_effect_properties.get_min_equalizer_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_equalizer_properties
+
+
+

ncine.audio_effect_properties.get_min_flanger_properties

+
function ncine.audio_effect_properties.get_min_flanger_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_flanger_properties
+
+
function ncine.audio_effect_properties.get_min_flanger_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_flanger_properties
+
+
+

ncine.audio_effect_properties.get_min_frequency_shifter_properties

+
function ncine.audio_effect_properties.get_min_frequency_shifter_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_frequency_shifter_properties
+
+
function ncine.audio_effect_properties.get_min_frequency_shifter_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_frequency_shifter_properties
+
+
+

ncine.audio_effect_properties.get_min_pitch_shifter_properties

+
function ncine.audio_effect_properties.get_min_pitch_shifter_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_pitch_shifter_properties
+
+
function ncine.audio_effect_properties.get_min_pitch_shifter_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_pitch_shifter_properties
+
+
+

ncine.audio_effect_properties.get_min_reverb_properties

+
function ncine.audio_effect_properties.get_min_reverb_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_reverb_properties
+
+
function ncine.audio_effect_properties.get_min_reverb_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_reverb_properties
+
+
+

ncine.audio_effect_properties.get_min_ring_modulator_properties

+
function ncine.audio_effect_properties.get_min_ring_modulator_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_ring_modulator_properties
+
+
function ncine.audio_effect_properties.get_min_ring_modulator_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_ring_modulator_properties
+
+
+

ncine.audio_effect_properties.get_min_vocal_morpher_properties

+
function ncine.audio_effect_properties.get_min_vocal_morpher_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_vocal_morpher_properties
+
+
function ncine.audio_effect_properties.get_min_vocal_morpher_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_vocal_morpher_properties
+
+
+

ncine.audio_effect_properties.get_pitch_shifter_properties

+
function ncine.audio_effect_properties.get_pitch_shifter_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_pitch_shifter_properties
+
+
function ncine.audio_effect_properties.get_pitch_shifter_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_pitch_shifter_properties
+
+
+

ncine.audio_effect_properties.get_reverb_properties

+
function ncine.audio_effect_properties.get_reverb_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_reverb_properties
+
+
function ncine.audio_effect_properties.get_reverb_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_reverb_properties
+
+
+

ncine.audio_effect_properties.get_ring_modulator_properties

+
function ncine.audio_effect_properties.get_ring_modulator_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_ring_modulator_properties
+
+
function ncine.audio_effect_properties.get_ring_modulator_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_ring_modulator_properties
+
+
+

ncine.audio_effect_properties.get_type

+
function ncine.audio_effect_properties.get_type(audio_effect_properties: audioeffectpropertiesObj)
+  -> ncine.audio_effect_type
+
+
function ncine.audio_effect_properties.get_type(audio_effect_properties: audioeffectpropertiesObj)
+  -> ncine.audio_effect_type
+
+
+

ncine.audio_effect_properties.get_vocal_morpher_properties

+
function ncine.audio_effect_properties.get_vocal_morpher_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_vocal_morpher_properties
+
+
function ncine.audio_effect_properties.get_vocal_morpher_properties(audio_effect_properties: audioeffectpropertiesObj)
+  -> audio_vocal_morpher_properties
+
+
+

ncine.audio_effect_properties.load_efx_reverb_preset

+
function ncine.audio_effect_properties.load_efx_reverb_preset(audio_effect_properties: audioeffectpropertiesObj, preset: ncine.efx_reverb_presets)
+
+
function ncine.audio_effect_properties.load_efx_reverb_preset(audio_effect_properties: audioeffectpropertiesObj, preset: ncine.efx_reverb_presets)
+
+
+

ncine.audio_effect_properties.new

+
function ncine.audio_effect_properties.new()
+  -> audioeffectpropertiesObj
+
+
function ncine.audio_effect_properties.new()
+  -> audioeffectpropertiesObj
+
+
+

ncine.audio_effect_properties.reset_auto_wah_properties

+
function ncine.audio_effect_properties.reset_auto_wah_properties(audio_effect_properties: audioeffectpropertiesObj)
+
+
function ncine.audio_effect_properties.reset_auto_wah_properties(audio_effect_properties: audioeffectpropertiesObj)
+
+
+

ncine.audio_effect_properties.reset_chorus_properties

+
function ncine.audio_effect_properties.reset_chorus_properties(audio_effect_properties: audioeffectpropertiesObj)
+
+
function ncine.audio_effect_properties.reset_chorus_properties(audio_effect_properties: audioeffectpropertiesObj)
+
+
+

ncine.audio_effect_properties.reset_compressor_properties

+
function ncine.audio_effect_properties.reset_compressor_properties(audio_effect_properties: audioeffectpropertiesObj)
+
+
function ncine.audio_effect_properties.reset_compressor_properties(audio_effect_properties: audioeffectpropertiesObj)
+
+
+

ncine.audio_effect_properties.reset_distortion_properties

+
function ncine.audio_effect_properties.reset_distortion_properties(audio_effect_properties: audioeffectpropertiesObj)
+
+
function ncine.audio_effect_properties.reset_distortion_properties(audio_effect_properties: audioeffectpropertiesObj)
+
+
+

ncine.audio_effect_properties.reset_eax_reverb_properties

+
function ncine.audio_effect_properties.reset_eax_reverb_properties(audio_effect_properties: audioeffectpropertiesObj)
+
+
function ncine.audio_effect_properties.reset_eax_reverb_properties(audio_effect_properties: audioeffectpropertiesObj)
+
+
+

ncine.audio_effect_properties.reset_echo_properties

+
function ncine.audio_effect_properties.reset_echo_properties(audio_effect_properties: audioeffectpropertiesObj)
+
+
function ncine.audio_effect_properties.reset_echo_properties(audio_effect_properties: audioeffectpropertiesObj)
+
+
+

ncine.audio_effect_properties.reset_equalizer_properties

+
function ncine.audio_effect_properties.reset_equalizer_properties(audio_effect_properties: audioeffectpropertiesObj)
+
+
function ncine.audio_effect_properties.reset_equalizer_properties(audio_effect_properties: audioeffectpropertiesObj)
+
+
+

ncine.audio_effect_properties.reset_flanger_properties

+
function ncine.audio_effect_properties.reset_flanger_properties(audio_effect_properties: audioeffectpropertiesObj)
+
+
function ncine.audio_effect_properties.reset_flanger_properties(audio_effect_properties: audioeffectpropertiesObj)
+
+
+

ncine.audio_effect_properties.reset_frequency_shifter_properties

+
function ncine.audio_effect_properties.reset_frequency_shifter_properties(audio_effect_properties: audioeffectpropertiesObj)
+
+
function ncine.audio_effect_properties.reset_frequency_shifter_properties(audio_effect_properties: audioeffectpropertiesObj)
+
+
+

ncine.audio_effect_properties.reset_pitch_shifter_properties

+
function ncine.audio_effect_properties.reset_pitch_shifter_properties(audio_effect_properties: audioeffectpropertiesObj)
+
+
function ncine.audio_effect_properties.reset_pitch_shifter_properties(audio_effect_properties: audioeffectpropertiesObj)
+
+
+

ncine.audio_effect_properties.reset_reverb_properties

+
function ncine.audio_effect_properties.reset_reverb_properties(audio_effect_properties: audioeffectpropertiesObj)
+
+
function ncine.audio_effect_properties.reset_reverb_properties(audio_effect_properties: audioeffectpropertiesObj)
+
+
+

ncine.audio_effect_properties.reset_ring_modulator_properties

+
function ncine.audio_effect_properties.reset_ring_modulator_properties(audio_effect_properties: audioeffectpropertiesObj)
+
+
function ncine.audio_effect_properties.reset_ring_modulator_properties(audio_effect_properties: audioeffectpropertiesObj)
+
+
+

ncine.audio_effect_properties.reset_vocal_morpher_properties

+
function ncine.audio_effect_properties.reset_vocal_morpher_properties(audio_effect_properties: audioeffectpropertiesObj)
+
+
function ncine.audio_effect_properties.reset_vocal_morpher_properties(audio_effect_properties: audioeffectpropertiesObj)
+
+
+

ncine.audio_effect_properties.set_auto_wah_properties

+
function ncine.audio_effect_properties.set_auto_wah_properties(audio_effect_properties: audioeffectpropertiesObj, properties: audio_auto_wah_properties)
+
+
function ncine.audio_effect_properties.set_auto_wah_properties(audio_effect_properties: audioeffectpropertiesObj, properties: audio_auto_wah_properties)
+
+
+

ncine.audio_effect_properties.set_chorus_properties

+
function ncine.audio_effect_properties.set_chorus_properties(audio_effect_properties: audioeffectpropertiesObj, properties: audio_chorus_properties)
+
+
function ncine.audio_effect_properties.set_chorus_properties(audio_effect_properties: audioeffectpropertiesObj, properties: audio_chorus_properties)
+
+
+

ncine.audio_effect_properties.set_compressor_properties

+
function ncine.audio_effect_properties.set_compressor_properties(audio_effect_properties: audioeffectpropertiesObj, properties: audio_compressor_properties)
+
+
function ncine.audio_effect_properties.set_compressor_properties(audio_effect_properties: audioeffectpropertiesObj, properties: audio_compressor_properties)
+
+
+

ncine.audio_effect_properties.set_distortion_properties

+
function ncine.audio_effect_properties.set_distortion_properties(audio_effect_properties: audioeffectpropertiesObj, properties: audio_distortion_properties)
+
+
function ncine.audio_effect_properties.set_distortion_properties(audio_effect_properties: audioeffectpropertiesObj, properties: audio_distortion_properties)
+
+
+

ncine.audio_effect_properties.set_eax_reverb_properties

+
function ncine.audio_effect_properties.set_eax_reverb_properties(audio_effect_properties: audioeffectpropertiesObj, properties: audio_eax_reverb_properties)
+
+
function ncine.audio_effect_properties.set_eax_reverb_properties(audio_effect_properties: audioeffectpropertiesObj, properties: audio_eax_reverb_properties)
+
+
+

ncine.audio_effect_properties.set_echo_properties

+
function ncine.audio_effect_properties.set_echo_properties(audio_effect_properties: audioeffectpropertiesObj, properties: audio_echo_properties)
+
+
function ncine.audio_effect_properties.set_echo_properties(audio_effect_properties: audioeffectpropertiesObj, properties: audio_echo_properties)
+
+
+

ncine.audio_effect_properties.set_equalizer_properties

+
function ncine.audio_effect_properties.set_equalizer_properties(audio_effect_properties: audioeffectpropertiesObj, properties: audio_equalizer_properties)
+
+
function ncine.audio_effect_properties.set_equalizer_properties(audio_effect_properties: audioeffectpropertiesObj, properties: audio_equalizer_properties)
+
+
+

ncine.audio_effect_properties.set_flanger_properties

+
function ncine.audio_effect_properties.set_flanger_properties(audio_effect_properties: audioeffectpropertiesObj, properties: audio_flanger_properties)
+
+
function ncine.audio_effect_properties.set_flanger_properties(audio_effect_properties: audioeffectpropertiesObj, properties: audio_flanger_properties)
+
+
+

ncine.audio_effect_properties.set_frequency_shifter_properties

+
function ncine.audio_effect_properties.set_frequency_shifter_properties(audio_effect_properties: audioeffectpropertiesObj, properties: audio_frequency_shifter_properties)
+
+
function ncine.audio_effect_properties.set_frequency_shifter_properties(audio_effect_properties: audioeffectpropertiesObj, properties: audio_frequency_shifter_properties)
+
+
+

ncine.audio_effect_properties.set_pitch_shifter_properties

+
function ncine.audio_effect_properties.set_pitch_shifter_properties(audio_effect_properties: audioeffectpropertiesObj, properties: audio_pitch_shifter_properties)
+
+
function ncine.audio_effect_properties.set_pitch_shifter_properties(audio_effect_properties: audioeffectpropertiesObj, properties: audio_pitch_shifter_properties)
+
+
+

ncine.audio_effect_properties.set_reverb_properties

+
function ncine.audio_effect_properties.set_reverb_properties(audio_effect_properties: audioeffectpropertiesObj, properties: audio_reverb_properties)
+
+
function ncine.audio_effect_properties.set_reverb_properties(audio_effect_properties: audioeffectpropertiesObj, properties: audio_reverb_properties)
+
+
+

ncine.audio_effect_properties.set_ring_modulator_properties

+
function ncine.audio_effect_properties.set_ring_modulator_properties(audio_effect_properties: audioeffectpropertiesObj, properties: audio_ring_modulator_properties)
+
+
function ncine.audio_effect_properties.set_ring_modulator_properties(audio_effect_properties: audioeffectpropertiesObj, properties: audio_ring_modulator_properties)
+
+
+

ncine.audio_effect_properties.set_type

+
function ncine.audio_effect_properties.set_type(audio_effect_properties: audioeffectpropertiesObj, audio_effect_type: ncine.audio_effect_type)
+
+
function ncine.audio_effect_properties.set_type(audio_effect_properties: audioeffectpropertiesObj, audio_effect_type: ncine.audio_effect_type)
+
+
+

ncine.audio_effect_properties.set_vocal_morpher_properties

+
function ncine.audio_effect_properties.set_vocal_morpher_properties(audio_effect_properties: audioeffectpropertiesObj, properties: audio_vocal_morpher_properties)
+
+
function ncine.audio_effect_properties.set_vocal_morpher_properties(audio_effect_properties: audioeffectpropertiesObj, properties: audio_vocal_morpher_properties)
+
+
+

ncine.audio_effect_slot

+

apply_effect

+
function ncine.audio_effect_slot.apply_effect(audio_effect_slot: audioeffectslotObj, audio_effect: audioeffectObj)
+
+

Applies the effect parameters from an effect object

+

delete

+
function ncine.audio_effect_slot.delete(audio_effect_slot: audioeffectslotObj)
+
+

Destroys an audio effect slot object and releases its memory

+

@param audio_effect_slot — The audio effect slot object to be destroyed

+

get_aux_send_auto

+
function ncine.audio_effect_slot.get_aux_send_auto(audio_effect_slot: audioeffectslotObj)
+  -> boolean
+
+

Returns the state of the auxilary slot send auto flag

+

The property is used to enable or disable automatic send adjustments based on the physical positions of the sources and the listener.

+

get_effect_slot_id

+
function ncine.audio_effect_slot.get_effect_slot_id(audio_effect_slot: audioeffectslotObj)
+  -> integer
+
+

Returns the OpenAL auxilary effect slot id

+

get_gain

+
function ncine.audio_effect_slot.get_gain(audio_effect_slot: audioeffectslotObj)
+  -> number
+
+

Returns the gain output level of the auxilary effect slot

+

new

+
function ncine.audio_effect_slot.new()
+  -> audioeffectslotObj
+
+

Constructs an audio effect slot object

+

Don't forget to call delete when you are done with it!

+

@return — A new audio effect slot object

+

set_aux_send_auto

+
function ncine.audio_effect_slot.set_aux_send_auto(audio_effect_slot: audioeffectslotObj, aux_send_auto: boolean)
+
+

Sets the state of the auxilary slot send auto flag

+

The property is used to enable or disable automatic send adjustments based on the physical positions of the sources and the listener.

+

set_gain

+
function ncine.audio_effect_slot.set_gain(audio_effect_slot: audioeffectslotObj, gain: number)
+
+

Sets the gain output level of the auxilary effect slot

+
+

ncine.audio_effect_slot

+
ncine.audio_effect_slot
+
+
ncine.audio_effect_slot
+
+
+

ncine.audio_effect_slot.apply_effect

+
function ncine.audio_effect_slot.apply_effect(audio_effect_slot: audioeffectslotObj, audio_effect: audioeffectObj)
+
+
function ncine.audio_effect_slot.apply_effect(audio_effect_slot: audioeffectslotObj, audio_effect: audioeffectObj)
+
+
+

ncine.audio_effect_slot.delete

+
function ncine.audio_effect_slot.delete(audio_effect_slot: audioeffectslotObj)
+
+
function ncine.audio_effect_slot.delete(audio_effect_slot: audioeffectslotObj)
+
+
+

ncine.audio_effect_slot.get_aux_send_auto

+
function ncine.audio_effect_slot.get_aux_send_auto(audio_effect_slot: audioeffectslotObj)
+  -> boolean
+
+
function ncine.audio_effect_slot.get_aux_send_auto(audio_effect_slot: audioeffectslotObj)
+  -> boolean
+
+
+

ncine.audio_effect_slot.get_effect_slot_id

+
function ncine.audio_effect_slot.get_effect_slot_id(audio_effect_slot: audioeffectslotObj)
+  -> integer
+
+
function ncine.audio_effect_slot.get_effect_slot_id(audio_effect_slot: audioeffectslotObj)
+  -> integer
+
+
+

ncine.audio_effect_slot.get_gain

+
function ncine.audio_effect_slot.get_gain(audio_effect_slot: audioeffectslotObj)
+  -> number
+
+
function ncine.audio_effect_slot.get_gain(audio_effect_slot: audioeffectslotObj)
+  -> number
+
+
+

ncine.audio_effect_slot.new

+
function ncine.audio_effect_slot.new()
+  -> audioeffectslotObj
+
+
function ncine.audio_effect_slot.new()
+  -> audioeffectslotObj
+
+
+

ncine.audio_effect_slot.set_aux_send_auto

+
function ncine.audio_effect_slot.set_aux_send_auto(audio_effect_slot: audioeffectslotObj, aux_send_auto: boolean)
+
+
function ncine.audio_effect_slot.set_aux_send_auto(audio_effect_slot: audioeffectslotObj, aux_send_auto: boolean)
+
+
+

ncine.audio_effect_slot.set_gain

+
function ncine.audio_effect_slot.set_gain(audio_effect_slot: audioeffectslotObj, gain: number)
+
+
function ncine.audio_effect_slot.set_gain(audio_effect_slot: audioeffectslotObj, gain: number)
+
+
+

ncine.audio_effect_type

+
enum ncine.audio_effect_type
+
+
enum ncine.audio_effect_type
+
+
+

ncine.audio_filter

+

apply_properties

+
function ncine.audio_filter.apply_properties(audio_filter: audiofilterObj, properties: audio_filter_properties)
+
+

Sets the filter type and all of its properties

+

delete

+
function ncine.audio_filter.delete(audio_filter: audiofilterObj)
+
+

Destroys an audio filter object and releases its memory

+

@param audio_filter — The audio filter object to be destroyed

+

get_default_properties

+
function ncine.audio_filter.get_default_properties()
+  -> audio_filter_properties
+
+

Returns a table with the default filter type and properties

+

The table is only returned as a reference.

+

get_filter_id

+
function ncine.audio_filter.get_filter_id(audio_filter: audiofilterObj)
+  -> integer
+
+

Returns the OpenAL filter id

+

get_type

+
function ncine.audio_filter.get_type(audio_filter: audiofilterObj)
+  -> ncine.audio_filter_type
+
+

Returns the filter type

+

new

+
function ncine.audio_filter.new()
+  -> audiofilterObj
+
+

Constructs an audio filter object

+

Don't forget to call delete when you are done with it!

+

@return — A new audio filter object

+
+

ncine.audio_filter

+
ncine.audio_filter
+
+
ncine.audio_filter
+
+
+

ncine.audio_filter.apply_properties

+
function ncine.audio_filter.apply_properties(audio_filter: audiofilterObj, properties: audio_filter_properties)
+
+
function ncine.audio_filter.apply_properties(audio_filter: audiofilterObj, properties: audio_filter_properties)
+
+
+

ncine.audio_filter.delete

+
function ncine.audio_filter.delete(audio_filter: audiofilterObj)
+
+
function ncine.audio_filter.delete(audio_filter: audiofilterObj)
+
+
+

ncine.audio_filter.get_default_properties

+
function ncine.audio_filter.get_default_properties()
+  -> audio_filter_properties
+
+
function ncine.audio_filter.get_default_properties()
+  -> audio_filter_properties
+
+
+

ncine.audio_filter.get_filter_id

+
function ncine.audio_filter.get_filter_id(audio_filter: audiofilterObj)
+  -> integer
+
+
function ncine.audio_filter.get_filter_id(audio_filter: audiofilterObj)
+  -> integer
+
+
+

ncine.audio_filter.get_type

+
function ncine.audio_filter.get_type(audio_filter: audiofilterObj)
+  -> ncine.audio_filter_type
+
+
function ncine.audio_filter.get_type(audio_filter: audiofilterObj)
+  -> ncine.audio_filter_type
+
+
+

ncine.audio_filter.new

+
function ncine.audio_filter.new()
+  -> audiofilterObj
+
+
function ncine.audio_filter.new()
+  -> audiofilterObj
+
+
+

ncine.audio_filter_type

+
enum ncine.audio_filter_type
+
+
enum ncine.audio_filter_type
+
+
+

ncine.audio_player

+
ncine.audio_player
+
+
ncine.audio_player
+
+
+

ncine.audio_player

+

buffer_id

+
function ncine.audio_player.buffer_id(player: audioplayerObj)
+  -> integer
+
+

Returns the OpenAL id of the currently playing buffer

+

buffer_size

+
function ncine.audio_player.buffer_size(player: audioplayerObj)
+  -> integer
+
+

Returns the size of the currently playing buffer in bytes

+

bytes_per_sample

+
function ncine.audio_player.bytes_per_sample(player: audioplayerObj)
+  -> integer
+
+

Returns the number of bytes per sample

+

duration

+
function ncine.audio_player.duration(player: audioplayerObj)
+  -> number
+
+

Returns the duration in seconds

+

frequency

+
function ncine.audio_player.frequency(player: audioplayerObj)
+  -> integer
+
+

Returns the samples frequency of the currently playing buffer

+

get_air_absorption_factor

+
function ncine.audio_player.get_air_absorption_factor(player: audioplayerObj)
+  -> number
+
+

Returns the player air absorption factor

+

get_aux_filter_id

+
function ncine.audio_player.get_aux_filter_id(player: audioplayerObj)
+  -> integer
+
+

Returns the OpenAL id of the auxiliary filter

+

get_cone_inner_angle

+
function ncine.audio_player.get_cone_inner_angle(player: audioplayerObj)
+  -> number
+
+

Returns the player inside angle of the sound cone in degrees

+

get_cone_outer_angle

+
function ncine.audio_player.get_cone_outer_angle(player: audioplayerObj)
+  -> number
+
+

Returns the player outside angle of the sound cone in degrees

+

get_cone_outer_gain

+
function ncine.audio_player.get_cone_outer_gain(player: audioplayerObj)
+  -> number
+
+

Returns the player multiplication factor to determine the gain outside the cone

+

get_cone_outer_gain_hf

+
function ncine.audio_player.get_cone_outer_gain_hf(player: audioplayerObj)
+  -> number
+
+

Returns the player cone outer gain HF value

+

get_direct_filter_id

+
function ncine.audio_player.get_direct_filter_id(player: audioplayerObj)
+  -> integer
+
+

Returns the OpenAL id of the direct filter

+

get_direction

+
function ncine.audio_player.get_direction(player: audioplayerObj)
+  -> ncine.vec3
+
+

Returns the player direction vector

+

get_effect_slot_id

+
function ncine.audio_player.get_effect_slot_id(player: audioplayerObj)
+  -> integer
+
+

Returns the OpenAL id of the effect slot

+

get_gain

+
function ncine.audio_player.get_gain(player: audioplayerObj)
+  -> number
+
+

Returns the player gain value

+

get_pitch

+
function ncine.audio_player.get_pitch(player: audioplayerObj)
+  -> number
+
+

Returns the player pitch value

+

get_position

+
function ncine.audio_player.get_position(player: audioplayerObj)
+  -> ncine.vec3
+
+

Returns the player position vector

+

get_room_rolloff_factor

+
function ncine.audio_player.get_room_rolloff_factor(player: audioplayerObj)
+  -> number
+
+

Returns the player room rolloff factor

+

get_sample_offset

+
function ncine.audio_player.get_sample_offset(player: audioplayerObj)
+  -> integer
+
+

Returns the size of the currently playing buffer in bytes

+

get_velocity

+
function ncine.audio_player.get_velocity(player: audioplayerObj)
+  -> ncine.vec3
+
+

Returns the player velocity vector

+

has_aux_filter

+
function ncine.audio_player.has_aux_filter(player: audioplayerObj)
+  -> boolean
+
+

Returns true if a valid OpenAL auxiliary filter is currently assigned to the player

+

has_direct_filter

+
function ncine.audio_player.has_direct_filter(player: audioplayerObj)
+  -> boolean
+
+

Returns true if a valid OpenAL direct filter is currently assigned to the player

+

has_effect_slot

+
function ncine.audio_player.has_effect_slot(player: audioplayerObj)
+  -> boolean
+
+

Returns true if a valid OpenAL effect slot is currently assigned to the player

+

has_source

+
function ncine.audio_player.has_source(player: audioplayerObj)
+  -> boolean
+
+

Returns true if a valid OpenAL source is currently assigned to the player

+

is_looping

+
function ncine.audio_player.is_looping(player: audioplayerObj)
+  -> boolean
+
+

Returns the looping property of the player

+

is_paused

+
function ncine.audio_player.is_paused(player: audioplayerObj)
+  -> boolean
+
+

Returns true if the player is paused

+

is_playing

+
function ncine.audio_player.is_playing(player: audioplayerObj)
+  -> boolean
+
+

Returns true if the player is playing

+

is_source_locked

+
function ncine.audio_player.is_source_locked(player: audioplayerObj)
+  -> boolean
+
+

Returns true if the OpenAL source is locked

+

is_stopped

+
function ncine.audio_player.is_stopped(player: audioplayerObj)
+  -> boolean
+
+

Returns true if the player is stopped

+

num_channels

+
function ncine.audio_player.num_channels(player: audioplayerObj)
+  -> integer
+
+

Returns the number of audio channels of the currently playing buffer

+

num_samples

+
function ncine.audio_player.num_samples(player: audioplayerObj)
+  -> integer
+
+

Returns the number of samples

+

pause

+
function ncine.audio_player.pause(player: audioplayerObj)
+
+

Pauses playing

+

play

+
function ncine.audio_player.play(player: audioplayerObj)
+
+

Starts playing

+

set_air_absorption_factor

+
function ncine.audio_player.set_air_absorption_factor(player: audioplayerObj, factor: number)
+
+

Sets the player air absorption factor

+

set_cone_inner_angle

+
function ncine.audio_player.set_cone_inner_angle(player: audioplayerObj, angle: number)
+
+

Sets the player inside angle of the sound cone in degrees

+

set_cone_outer_angle

+
function ncine.audio_player.set_cone_outer_angle(player: audioplayerObj, angle: number)
+
+

Sets the player outside angle of the sound cone in degrees

+

set_cone_outer_gain

+
function ncine.audio_player.set_cone_outer_gain(player: audioplayerObj, gain: number)
+
+

Sets the player multiplication factor to determine the gain outside the cone

+

set_cone_outer_gain_hf

+
function ncine.audio_player.set_cone_outer_gain_hf(player: audioplayerObj, gain: number)
+
+

Sets the player cone outer gain HF value

+

set_direct_filter

+
function ncine.audio_player.set_direct_filter(player: audioplayerObj, audio_filter?: audiofilterObj)
+
+

Sets or removes the filter parameters from a filter object to the direct signal

+

set_direction

+
function ncine.audio_player.set_direction(player: audioplayerObj, direction: ncine.vec3)
+
+

Sets the player direction vector

+

set_effect_slot

+
function ncine.audio_player.set_effect_slot(player: audioplayerObj, audio_effect_slot?: audioeffectslotObj, audio_filter?: audiofilterObj)
+
+

Sets or removes an affect slot, with an optional auxiliary filter, to the player

+

set_gain

+
function ncine.audio_player.set_gain(player: audioplayerObj, gain: number)
+
+

Sets the player gain value

+

set_looping

+
function ncine.audio_player.set_looping(player: audioplayerObj, looping: boolean)
+
+

Sets the looping property of the player

+

set_pitch

+
function ncine.audio_player.set_pitch(player: audioplayerObj, pitch: number)
+
+

Sets the player pitch value

+

set_position

+
function ncine.audio_player.set_position(player: audioplayerObj, position: ncine.vec3)
+
+

Sets the player position vector

+

set_room_rolloff_factor

+
function ncine.audio_player.set_room_rolloff_factor(player: audioplayerObj, factor: number)
+
+

Sets the player room rolloff factor

+

set_sample_offset

+
function ncine.audio_player.set_sample_offset(player: audioplayerObj, offset: integer)
+
+

Returns the size of the currently playing buffer in bytes

+

set_source_locked

+
function ncine.audio_player.set_source_locked(player: audioplayerObj, locked: boolean)
+
+

Locks an OpenAL source so it is not released to the pool when the player stops

+

set_velocity

+
function ncine.audio_player.set_velocity(player: audioplayerObj, velocity: ncine.vec3)
+
+

Sets the player velocity vector

+

source_id

+
function ncine.audio_player.source_id(player: audioplayerObj)
+  -> integer
+
+

Returns the OpenAL id of the player source

+

stop

+
function ncine.audio_player.stop(player: audioplayerObj)
+
+

Stops playing and rewinds

+
+

ncine.audio_player.buffer_id

+
function ncine.audio_player.buffer_id(player: audioplayerObj)
+  -> integer
+
+
function ncine.audio_player.buffer_id(player: audioplayerObj)
+  -> integer
+
+
+

ncine.audio_player.buffer_size

+
function ncine.audio_player.buffer_size(player: audioplayerObj)
+  -> integer
+
+
function ncine.audio_player.buffer_size(player: audioplayerObj)
+  -> integer
+
+
+

ncine.audio_player.bytes_per_sample

+
function ncine.audio_player.bytes_per_sample(player: audioplayerObj)
+  -> integer
+
+
function ncine.audio_player.bytes_per_sample(player: audioplayerObj)
+  -> integer
+
+
+

ncine.audio_player.duration

+
function ncine.audio_player.duration(player: audioplayerObj)
+  -> number
+
+
function ncine.audio_player.duration(player: audioplayerObj)
+  -> number
+
+
+

ncine.audio_player.frequency

+
function ncine.audio_player.frequency(player: audioplayerObj)
+  -> integer
+
+
function ncine.audio_player.frequency(player: audioplayerObj)
+  -> integer
+
+
+

ncine.audio_player.get_air_absorption_factor

+
function ncine.audio_player.get_air_absorption_factor(player: audioplayerObj)
+  -> number
+
+
function ncine.audio_player.get_air_absorption_factor(player: audioplayerObj)
+  -> number
+
+
+

ncine.audio_player.get_aux_filter_id

+
function ncine.audio_player.get_aux_filter_id(player: audioplayerObj)
+  -> integer
+
+
function ncine.audio_player.get_aux_filter_id(player: audioplayerObj)
+  -> integer
+
+
+

ncine.audio_player.get_cone_inner_angle

+
function ncine.audio_player.get_cone_inner_angle(player: audioplayerObj)
+  -> number
+
+
function ncine.audio_player.get_cone_inner_angle(player: audioplayerObj)
+  -> number
+
+
+

ncine.audio_player.get_cone_outer_angle

+
function ncine.audio_player.get_cone_outer_angle(player: audioplayerObj)
+  -> number
+
+
function ncine.audio_player.get_cone_outer_angle(player: audioplayerObj)
+  -> number
+
+
+

ncine.audio_player.get_cone_outer_gain

+
function ncine.audio_player.get_cone_outer_gain(player: audioplayerObj)
+  -> number
+
+
function ncine.audio_player.get_cone_outer_gain(player: audioplayerObj)
+  -> number
+
+
+

ncine.audio_player.get_cone_outer_gain_hf

+
function ncine.audio_player.get_cone_outer_gain_hf(player: audioplayerObj)
+  -> number
+
+
function ncine.audio_player.get_cone_outer_gain_hf(player: audioplayerObj)
+  -> number
+
+
+

ncine.audio_player.get_direct_filter_id

+
function ncine.audio_player.get_direct_filter_id(player: audioplayerObj)
+  -> integer
+
+
function ncine.audio_player.get_direct_filter_id(player: audioplayerObj)
+  -> integer
+
+
+

ncine.audio_player.get_direction

+
function ncine.audio_player.get_direction(player: audioplayerObj)
+  -> ncine.vec3
+
+
function ncine.audio_player.get_direction(player: audioplayerObj)
+  -> ncine.vec3
+
+
+

ncine.audio_player.get_effect_slot_id

+
function ncine.audio_player.get_effect_slot_id(player: audioplayerObj)
+  -> integer
+
+
function ncine.audio_player.get_effect_slot_id(player: audioplayerObj)
+  -> integer
+
+
+

ncine.audio_player.get_gain

+
function ncine.audio_player.get_gain(player: audioplayerObj)
+  -> number
+
+
function ncine.audio_player.get_gain(player: audioplayerObj)
+  -> number
+
+
+

ncine.audio_player.get_pitch

+
function ncine.audio_player.get_pitch(player: audioplayerObj)
+  -> number
+
+
function ncine.audio_player.get_pitch(player: audioplayerObj)
+  -> number
+
+
+

ncine.audio_player.get_position

+
function ncine.audio_player.get_position(player: audioplayerObj)
+  -> ncine.vec3
+
+
function ncine.audio_player.get_position(player: audioplayerObj)
+  -> ncine.vec3
+
+
+

ncine.audio_player.get_room_rolloff_factor

+
function ncine.audio_player.get_room_rolloff_factor(player: audioplayerObj)
+  -> number
+
+
function ncine.audio_player.get_room_rolloff_factor(player: audioplayerObj)
+  -> number
+
+
+

ncine.audio_player.get_sample_offset

+
function ncine.audio_player.get_sample_offset(player: audioplayerObj)
+  -> integer
+
+
function ncine.audio_player.get_sample_offset(player: audioplayerObj)
+  -> integer
+
+
+

ncine.audio_player.get_velocity

+
function ncine.audio_player.get_velocity(player: audioplayerObj)
+  -> ncine.vec3
+
+
function ncine.audio_player.get_velocity(player: audioplayerObj)
+  -> ncine.vec3
+
+
+

ncine.audio_player.has_aux_filter

+
function ncine.audio_player.has_aux_filter(player: audioplayerObj)
+  -> boolean
+
+
function ncine.audio_player.has_aux_filter(player: audioplayerObj)
+  -> boolean
+
+
+

ncine.audio_player.has_direct_filter

+
function ncine.audio_player.has_direct_filter(player: audioplayerObj)
+  -> boolean
+
+
function ncine.audio_player.has_direct_filter(player: audioplayerObj)
+  -> boolean
+
+
+

ncine.audio_player.has_effect_slot

+
function ncine.audio_player.has_effect_slot(player: audioplayerObj)
+  -> boolean
+
+
function ncine.audio_player.has_effect_slot(player: audioplayerObj)
+  -> boolean
+
+
+

ncine.audio_player.has_source

+
function ncine.audio_player.has_source(player: audioplayerObj)
+  -> boolean
+
+
function ncine.audio_player.has_source(player: audioplayerObj)
+  -> boolean
+
+
+

ncine.audio_player.is_looping

+
function ncine.audio_player.is_looping(player: audioplayerObj)
+  -> boolean
+
+
function ncine.audio_player.is_looping(player: audioplayerObj)
+  -> boolean
+
+
+

ncine.audio_player.is_paused

+
function ncine.audio_player.is_paused(player: audioplayerObj)
+  -> boolean
+
+
function ncine.audio_player.is_paused(player: audioplayerObj)
+  -> boolean
+
+
+

ncine.audio_player.is_playing

+
function ncine.audio_player.is_playing(player: audioplayerObj)
+  -> boolean
+
+
function ncine.audio_player.is_playing(player: audioplayerObj)
+  -> boolean
+
+
+

ncine.audio_player.is_source_locked

+
function ncine.audio_player.is_source_locked(player: audioplayerObj)
+  -> boolean
+
+
function ncine.audio_player.is_source_locked(player: audioplayerObj)
+  -> boolean
+
+
+

ncine.audio_player.is_stopped

+
function ncine.audio_player.is_stopped(player: audioplayerObj)
+  -> boolean
+
+
function ncine.audio_player.is_stopped(player: audioplayerObj)
+  -> boolean
+
+
+

ncine.audio_player.num_channels

+
function ncine.audio_player.num_channels(player: audioplayerObj)
+  -> integer
+
+
function ncine.audio_player.num_channels(player: audioplayerObj)
+  -> integer
+
+
+

ncine.audio_player.num_samples

+
function ncine.audio_player.num_samples(player: audioplayerObj)
+  -> integer
+
+
function ncine.audio_player.num_samples(player: audioplayerObj)
+  -> integer
+
+
+

ncine.audio_player.pause

+
function ncine.audio_player.pause(player: audioplayerObj)
+
+
function ncine.audio_player.pause(player: audioplayerObj)
+
+
+

ncine.audio_player.play

+
function ncine.audio_player.play(player: audioplayerObj)
+
+
function ncine.audio_player.play(player: audioplayerObj)
+
+
+

ncine.audio_player.set_air_absorption_factor

+
function ncine.audio_player.set_air_absorption_factor(player: audioplayerObj, factor: number)
+
+
function ncine.audio_player.set_air_absorption_factor(player: audioplayerObj, factor: number)
+
+
+

ncine.audio_player.set_cone_inner_angle

+
function ncine.audio_player.set_cone_inner_angle(player: audioplayerObj, angle: number)
+
+
function ncine.audio_player.set_cone_inner_angle(player: audioplayerObj, angle: number)
+
+
+

ncine.audio_player.set_cone_outer_angle

+
function ncine.audio_player.set_cone_outer_angle(player: audioplayerObj, angle: number)
+
+
function ncine.audio_player.set_cone_outer_angle(player: audioplayerObj, angle: number)
+
+
+

ncine.audio_player.set_cone_outer_gain

+
function ncine.audio_player.set_cone_outer_gain(player: audioplayerObj, gain: number)
+
+
function ncine.audio_player.set_cone_outer_gain(player: audioplayerObj, gain: number)
+
+
+

ncine.audio_player.set_cone_outer_gain_hf

+
function ncine.audio_player.set_cone_outer_gain_hf(player: audioplayerObj, gain: number)
+
+
function ncine.audio_player.set_cone_outer_gain_hf(player: audioplayerObj, gain: number)
+
+
+

ncine.audio_player.set_direct_filter

+
function ncine.audio_player.set_direct_filter(player: audioplayerObj, audio_filter?: audiofilterObj)
+
+
function ncine.audio_player.set_direct_filter(player: audioplayerObj, audio_filter?: audiofilterObj)
+
+
+

ncine.audio_player.set_direction

+
function ncine.audio_player.set_direction(player: audioplayerObj, direction: ncine.vec3)
+
+
function ncine.audio_player.set_direction(player: audioplayerObj, direction_x: number, direction_y: number, direction_z: number)
+
+
function ncine.audio_player.set_direction(player: audioplayerObj, direction: ncine.vec3)
+
+
function ncine.audio_player.set_direction(player: audioplayerObj, direction_x: number, direction_y: number, direction_z: number)
+
+
+

ncine.audio_player.set_effect_slot

+
function ncine.audio_player.set_effect_slot(player: audioplayerObj, audio_effect_slot?: audioeffectslotObj, audio_filter?: audiofilterObj)
+
+
function ncine.audio_player.set_effect_slot(player: audioplayerObj, audio_effect_slot?: audioeffectslotObj, audio_filter?: audiofilterObj)
+
+
+

ncine.audio_player.set_gain

+
function ncine.audio_player.set_gain(player: audioplayerObj, gain: number)
+
+
function ncine.audio_player.set_gain(player: audioplayerObj, gain: number)
+
+
+

ncine.audio_player.set_looping

+
function ncine.audio_player.set_looping(player: audioplayerObj, looping: boolean)
+
+
function ncine.audio_player.set_looping(player: audioplayerObj, looping: boolean)
+
+
+

ncine.audio_player.set_pitch

+
function ncine.audio_player.set_pitch(player: audioplayerObj, pitch: number)
+
+
function ncine.audio_player.set_pitch(player: audioplayerObj, pitch: number)
+
+
+

ncine.audio_player.set_position

+
function ncine.audio_player.set_position(player: audioplayerObj, position: ncine.vec3)
+
+
function ncine.audio_player.set_position(player: audioplayerObj, position_x: number, position_y: number, position_z: number)
+
+
function ncine.audio_player.set_position(player: audioplayerObj, position: ncine.vec3)
+
+
function ncine.audio_player.set_position(player: audioplayerObj, position_x: number, position_y: number, position_z: number)
+
+
+

ncine.audio_player.set_room_rolloff_factor

+
function ncine.audio_player.set_room_rolloff_factor(player: audioplayerObj, factor: number)
+
+
function ncine.audio_player.set_room_rolloff_factor(player: audioplayerObj, factor: number)
+
+
+

ncine.audio_player.set_sample_offset

+
function ncine.audio_player.set_sample_offset(player: audioplayerObj, offset: integer)
+
+
function ncine.audio_player.set_sample_offset(player: audioplayerObj, offset: integer)
+
+
+

ncine.audio_player.set_source_locked

+
function ncine.audio_player.set_source_locked(player: audioplayerObj, locked: boolean)
+
+
function ncine.audio_player.set_source_locked(player: audioplayerObj, locked: boolean)
+
+
+

ncine.audio_player.set_velocity

+
function ncine.audio_player.set_velocity(player: audioplayerObj, velocity: ncine.vec3)
+
+
function ncine.audio_player.set_velocity(player: audioplayerObj, velocity_x: number, velocity_y: number, velocity_z: number)
+
+
function ncine.audio_player.set_velocity(player: audioplayerObj, velocity: ncine.vec3)
+
+
function ncine.audio_player.set_velocity(player: audioplayerObj, velocity_x: number, velocity_y: number, velocity_z: number)
+
+
+

ncine.audio_player.source_id

+
function ncine.audio_player.source_id(player: audioplayerObj)
+  -> integer
+
+
function ncine.audio_player.source_id(player: audioplayerObj)
+  -> integer
+
+
+

ncine.audio_player.stop

+
function ncine.audio_player.stop(player: audioplayerObj)
+
+
function ncine.audio_player.stop(player: audioplayerObj)
+
+
+

ncine.audiobuffer

+

buffer_id

+
function ncine.audiobuffer.buffer_id(audiobuffer: audiobufferObj)
+  -> integer
+
+

Returns the OpenAL buffer id

+

buffer_size

+
function ncine.audiobuffer.buffer_size(audiobuffer: audiobufferObj)
+  -> integer
+
+

Returns the size of the buffer in bytes

+

bytes_per_sample

+
function ncine.audiobuffer.bytes_per_sample(audiobuffer: audiobufferObj)
+  -> integer
+
+

Returns the number of bytes per sample

+

delete

+
function ncine.audiobuffer.delete(audiobuffer: audiobufferObj)
+
+

Destroys an audio buffer object and releases its memory

+

@param audiobuffer — The audio buffer object to be destroyed

+

duration

+
function ncine.audiobuffer.duration(audiobuffer: audiobufferObj)
+  -> number
+
+

Returns the duration in seconds

+

frequency

+
function ncine.audiobuffer.frequency(audiobuffer: audiobufferObj)
+  -> integer
+
+

Returns the samples frequency

+

new

+
function ncine.audiobuffer.new(filename: string)
+  -> audiobufferObj
+
+

Constructs an audio buffer object from an audio file

+

Don't forget to call delete when you are done with it!

+

@param filename — The path to an audio file

+

@return — A new audio buffer object

+

num_channels

+
function ncine.audiobuffer.num_channels(audiobuffer: audiobufferObj)
+  -> integer
+
+

Returns the number of audio channels

+

num_samples

+
function ncine.audiobuffer.num_samples(audiobuffer: audiobufferObj)
+  -> integer
+
+

Returns number of samples

+
+

ncine.audiobuffer

+
ncine.audiobuffer
+
+
ncine.audiobuffer
+
+
+

ncine.audiobuffer.buffer_id

+
function ncine.audiobuffer.buffer_id(audiobuffer: audiobufferObj)
+  -> integer
+
+
function ncine.audiobuffer.buffer_id(audiobuffer: audiobufferObj)
+  -> integer
+
+
+

ncine.audiobuffer.buffer_size

+
function ncine.audiobuffer.buffer_size(audiobuffer: audiobufferObj)
+  -> integer
+
+
function ncine.audiobuffer.buffer_size(audiobuffer: audiobufferObj)
+  -> integer
+
+
+

ncine.audiobuffer.bytes_per_sample

+
function ncine.audiobuffer.bytes_per_sample(audiobuffer: audiobufferObj)
+  -> integer
+
+
function ncine.audiobuffer.bytes_per_sample(audiobuffer: audiobufferObj)
+  -> integer
+
+
+

ncine.audiobuffer.delete

+
function ncine.audiobuffer.delete(audiobuffer: audiobufferObj)
+
+
function ncine.audiobuffer.delete(audiobuffer: audiobufferObj)
+
+
+

ncine.audiobuffer.duration

+
function ncine.audiobuffer.duration(audiobuffer: audiobufferObj)
+  -> number
+
+
function ncine.audiobuffer.duration(audiobuffer: audiobufferObj)
+  -> number
+
+
+

ncine.audiobuffer.frequency

+
function ncine.audiobuffer.frequency(audiobuffer: audiobufferObj)
+  -> integer
+
+
function ncine.audiobuffer.frequency(audiobuffer: audiobufferObj)
+  -> integer
+
+
+

ncine.audiobuffer.new

+
function ncine.audiobuffer.new(filename: string)
+  -> audiobufferObj
+
+
function ncine.audiobuffer.new(filename: string)
+  -> audiobufferObj
+
+
+

ncine.audiobuffer.num_channels

+
function ncine.audiobuffer.num_channels(audiobuffer: audiobufferObj)
+  -> integer
+
+
function ncine.audiobuffer.num_channels(audiobuffer: audiobufferObj)
+  -> integer
+
+
+

ncine.audiobuffer.num_samples

+
function ncine.audiobuffer.num_samples(audiobuffer: audiobufferObj)
+  -> integer
+
+
function ncine.audiobuffer.num_samples(audiobuffer: audiobufferObj)
+  -> integer
+
+
+

ncine.audiobuffer_player

+
ncine.audiobuffer_player
+
+
ncine.audiobuffer_player
+
+
+

ncine.audiobuffer_player

+

buffer_id

+
function ncine.audio_player.buffer_id(player: audioplayerObj)
+  -> integer
+
+

Returns the OpenAL id of the currently playing buffer

+

buffer_size

+
function ncine.audio_player.buffer_size(player: audioplayerObj)
+  -> integer
+
+

Returns the size of the currently playing buffer in bytes

+

bytes_per_sample

+
function ncine.audio_player.bytes_per_sample(player: audioplayerObj)
+  -> integer
+
+

Returns the number of bytes per sample

+

delete

+
function ncine.audiobuffer_player.delete(player: audiobufferplayerObj)
+
+

Destroys an audio buffer player object and releases its memory

+

@param player — The audio buffer player object to be destroyed

+

duration

+
function ncine.audio_player.duration(player: audioplayerObj)
+  -> number
+
+

Returns the duration in seconds

+

frequency

+
function ncine.audio_player.frequency(player: audioplayerObj)
+  -> integer
+
+

Returns the samples frequency of the currently playing buffer

+

get_air_absorption_factor

+
function ncine.audio_player.get_air_absorption_factor(player: audioplayerObj)
+  -> number
+
+

Returns the player air absorption factor

+

get_audiobuffer

+
function ncine.audiobuffer_player.get_audiobuffer(player: audiobufferplayerObj)
+  -> audiobufferObj
+
+

Gets the audio buffer used for playing

+

get_aux_filter_id

+
function ncine.audio_player.get_aux_filter_id(player: audioplayerObj)
+  -> integer
+
+

Returns the OpenAL id of the auxiliary filter

+

get_cone_inner_angle

+
function ncine.audio_player.get_cone_inner_angle(player: audioplayerObj)
+  -> number
+
+

Returns the player inside angle of the sound cone in degrees

+

get_cone_outer_angle

+
function ncine.audio_player.get_cone_outer_angle(player: audioplayerObj)
+  -> number
+
+

Returns the player outside angle of the sound cone in degrees

+

get_cone_outer_gain

+
function ncine.audio_player.get_cone_outer_gain(player: audioplayerObj)
+  -> number
+
+

Returns the player multiplication factor to determine the gain outside the cone

+

get_cone_outer_gain_hf

+
function ncine.audio_player.get_cone_outer_gain_hf(player: audioplayerObj)
+  -> number
+
+

Returns the player cone outer gain HF value

+

get_direct_filter_id

+
function ncine.audio_player.get_direct_filter_id(player: audioplayerObj)
+  -> integer
+
+

Returns the OpenAL id of the direct filter

+

get_direction

+
function ncine.audio_player.get_direction(player: audioplayerObj)
+  -> ncine.vec3
+
+

Returns the player direction vector

+

get_effect_slot_id

+
function ncine.audio_player.get_effect_slot_id(player: audioplayerObj)
+  -> integer
+
+

Returns the OpenAL id of the effect slot

+

get_gain

+
function ncine.audio_player.get_gain(player: audioplayerObj)
+  -> number
+
+

Returns the player gain value

+

get_pitch

+
function ncine.audio_player.get_pitch(player: audioplayerObj)
+  -> number
+
+

Returns the player pitch value

+

get_position

+
function ncine.audio_player.get_position(player: audioplayerObj)
+  -> ncine.vec3
+
+

Returns the player position vector

+

get_room_rolloff_factor

+
function ncine.audio_player.get_room_rolloff_factor(player: audioplayerObj)
+  -> number
+
+

Returns the player room rolloff factor

+

get_sample_offset

+
function ncine.audio_player.get_sample_offset(player: audioplayerObj)
+  -> integer
+
+

Returns the size of the currently playing buffer in bytes

+

get_velocity

+
function ncine.audio_player.get_velocity(player: audioplayerObj)
+  -> ncine.vec3
+
+

Returns the player velocity vector

+

has_aux_filter

+
function ncine.audio_player.has_aux_filter(player: audioplayerObj)
+  -> boolean
+
+

Returns true if a valid OpenAL auxiliary filter is currently assigned to the player

+

has_direct_filter

+
function ncine.audio_player.has_direct_filter(player: audioplayerObj)
+  -> boolean
+
+

Returns true if a valid OpenAL direct filter is currently assigned to the player

+

has_effect_slot

+
function ncine.audio_player.has_effect_slot(player: audioplayerObj)
+  -> boolean
+
+

Returns true if a valid OpenAL effect slot is currently assigned to the player

+

has_source

+
function ncine.audio_player.has_source(player: audioplayerObj)
+  -> boolean
+
+

Returns true if a valid OpenAL source is currently assigned to the player

+

is_looping

+
function ncine.audio_player.is_looping(player: audioplayerObj)
+  -> boolean
+
+

Returns the looping property of the player

+

is_paused

+
function ncine.audio_player.is_paused(player: audioplayerObj)
+  -> boolean
+
+

Returns true if the player is paused

+

is_playing

+
function ncine.audio_player.is_playing(player: audioplayerObj)
+  -> boolean
+
+

Returns true if the player is playing

+

is_source_locked

+
function ncine.audio_player.is_source_locked(player: audioplayerObj)
+  -> boolean
+
+

Returns true if the OpenAL source is locked

+

is_stopped

+
function ncine.audio_player.is_stopped(player: audioplayerObj)
+  -> boolean
+
+

Returns true if the player is stopped

+

new

+
function ncine.audiobuffer_player.new(buffer: audiobufferObj)
+  -> audiobufferplayerObj
+
+

Constructs an audio buffer player object from an audio buffer

+

Don't forget to call delete when you are done with it!

+

@return — A new audio buffer player object

+

num_channels

+
function ncine.audio_player.num_channels(player: audioplayerObj)
+  -> integer
+
+

Returns the number of audio channels of the currently playing buffer

+

num_samples

+
function ncine.audio_player.num_samples(player: audioplayerObj)
+  -> integer
+
+

Returns the number of samples

+

pause

+
function ncine.audio_player.pause(player: audioplayerObj)
+
+

Pauses playing

+

play

+
function ncine.audio_player.play(player: audioplayerObj)
+
+

Starts playing

+

set_air_absorption_factor

+
function ncine.audio_player.set_air_absorption_factor(player: audioplayerObj, factor: number)
+
+

Sets the player air absorption factor

+

set_audiobuffer

+
function ncine.audiobuffer_player.set_audiobuffer(player: audiobufferplayerObj, buffer: audiobufferObj)
+
+

Sets the audio buffer used for playing

+

set_cone_inner_angle

+
function ncine.audio_player.set_cone_inner_angle(player: audioplayerObj, angle: number)
+
+

Sets the player inside angle of the sound cone in degrees

+

set_cone_outer_angle

+
function ncine.audio_player.set_cone_outer_angle(player: audioplayerObj, angle: number)
+
+

Sets the player outside angle of the sound cone in degrees

+

set_cone_outer_gain

+
function ncine.audio_player.set_cone_outer_gain(player: audioplayerObj, gain: number)
+
+

Sets the player multiplication factor to determine the gain outside the cone

+

set_cone_outer_gain_hf

+
function ncine.audio_player.set_cone_outer_gain_hf(player: audioplayerObj, gain: number)
+
+

Sets the player cone outer gain HF value

+

set_direct_filter

+
function ncine.audio_player.set_direct_filter(player: audioplayerObj, audio_filter?: audiofilterObj)
+
+

Sets or removes the filter parameters from a filter object to the direct signal

+

set_direction

+
function ncine.audio_player.set_direction(player: audioplayerObj, direction: ncine.vec3)
+
+

Sets the player direction vector

+

set_effect_slot

+
function ncine.audio_player.set_effect_slot(player: audioplayerObj, audio_effect_slot?: audioeffectslotObj, audio_filter?: audiofilterObj)
+
+

Sets or removes an affect slot, with an optional auxiliary filter, to the player

+

set_gain

+
function ncine.audio_player.set_gain(player: audioplayerObj, gain: number)
+
+

Sets the player gain value

+

set_looping

+
function ncine.audio_player.set_looping(player: audioplayerObj, looping: boolean)
+
+

Sets the looping property of the player

+

set_pitch

+
function ncine.audio_player.set_pitch(player: audioplayerObj, pitch: number)
+
+

Sets the player pitch value

+

set_position

+
function ncine.audio_player.set_position(player: audioplayerObj, position: ncine.vec3)
+
+

Sets the player position vector

+

set_room_rolloff_factor

+
function ncine.audio_player.set_room_rolloff_factor(player: audioplayerObj, factor: number)
+
+

Sets the player room rolloff factor

+

set_sample_offset

+
function ncine.audio_player.set_sample_offset(player: audioplayerObj, offset: integer)
+
+

Returns the size of the currently playing buffer in bytes

+

set_source_locked

+
function ncine.audio_player.set_source_locked(player: audioplayerObj, locked: boolean)
+
+

Locks an OpenAL source so it is not released to the pool when the player stops

+

set_velocity

+
function ncine.audio_player.set_velocity(player: audioplayerObj, velocity: ncine.vec3)
+
+

Sets the player velocity vector

+

source_id

+
function ncine.audio_player.source_id(player: audioplayerObj)
+  -> integer
+
+

Returns the OpenAL id of the player source

+

stop

+
function ncine.audio_player.stop(player: audioplayerObj)
+
+

Stops playing and rewinds

+
+

ncine.audiobuffer_player.delete

+
function ncine.audiobuffer_player.delete(player: audiobufferplayerObj)
+
+
function ncine.audiobuffer_player.delete(player: audiobufferplayerObj)
+
+
+

ncine.audiobuffer_player.get_audiobuffer

+
function ncine.audiobuffer_player.get_audiobuffer(player: audiobufferplayerObj)
+  -> audiobufferObj
+
+
function ncine.audiobuffer_player.get_audiobuffer(player: audiobufferplayerObj)
+  -> audiobufferObj
+
+
+

ncine.audiobuffer_player.new

+
function ncine.audiobuffer_player.new(buffer: audiobufferObj)
+  -> audiobufferplayerObj
+
+
function ncine.audiobuffer_player.new(buffer: audiobufferObj)
+  -> audiobufferplayerObj
+
+
+

ncine.audiobuffer_player.set_audiobuffer

+
function ncine.audiobuffer_player.set_audiobuffer(player: audiobufferplayerObj, buffer: audiobufferObj)
+
+
function ncine.audiobuffer_player.set_audiobuffer(player: audiobufferplayerObj, buffer: audiobufferObj)
+
+
+

ncine.audiostream_player

+
ncine.audiostream_player
+
+
ncine.audiostream_player
+
+
+

ncine.audiostream_player

+

buffer_id

+
function ncine.audio_player.buffer_id(player: audioplayerObj)
+  -> integer
+
+

Returns the OpenAL id of the currently playing buffer

+

buffer_size

+
function ncine.audio_player.buffer_size(player: audioplayerObj)
+  -> integer
+
+

Returns the size of the currently playing buffer in bytes

+

bytes_per_sample

+
function ncine.audio_player.bytes_per_sample(player: audioplayerObj)
+  -> integer
+
+

Returns the number of bytes per sample

+

delete

+
function ncine.audiostream_player.delete(player: audiostreamplayerObj)
+
+

Destroys an audio stream player object and releases its memory

+

@param player — The audio stream player object to be destroyed

+

duration

+
function ncine.audio_player.duration(player: audioplayerObj)
+  -> number
+
+

Returns the duration in seconds

+

frequency

+
function ncine.audio_player.frequency(player: audioplayerObj)
+  -> integer
+
+

Returns the samples frequency of the currently playing buffer

+

get_air_absorption_factor

+
function ncine.audio_player.get_air_absorption_factor(player: audioplayerObj)
+  -> number
+
+

Returns the player air absorption factor

+

get_aux_filter_id

+
function ncine.audio_player.get_aux_filter_id(player: audioplayerObj)
+  -> integer
+
+

Returns the OpenAL id of the auxiliary filter

+

get_cone_inner_angle

+
function ncine.audio_player.get_cone_inner_angle(player: audioplayerObj)
+  -> number
+
+

Returns the player inside angle of the sound cone in degrees

+

get_cone_outer_angle

+
function ncine.audio_player.get_cone_outer_angle(player: audioplayerObj)
+  -> number
+
+

Returns the player outside angle of the sound cone in degrees

+

get_cone_outer_gain

+
function ncine.audio_player.get_cone_outer_gain(player: audioplayerObj)
+  -> number
+
+

Returns the player multiplication factor to determine the gain outside the cone

+

get_cone_outer_gain_hf

+
function ncine.audio_player.get_cone_outer_gain_hf(player: audioplayerObj)
+  -> number
+
+

Returns the player cone outer gain HF value

+

get_direct_filter_id

+
function ncine.audio_player.get_direct_filter_id(player: audioplayerObj)
+  -> integer
+
+

Returns the OpenAL id of the direct filter

+

get_direction

+
function ncine.audio_player.get_direction(player: audioplayerObj)
+  -> ncine.vec3
+
+

Returns the player direction vector

+

get_effect_slot_id

+
function ncine.audio_player.get_effect_slot_id(player: audioplayerObj)
+  -> integer
+
+

Returns the OpenAL id of the effect slot

+

get_gain

+
function ncine.audio_player.get_gain(player: audioplayerObj)
+  -> number
+
+

Returns the player gain value

+

get_pitch

+
function ncine.audio_player.get_pitch(player: audioplayerObj)
+  -> number
+
+

Returns the player pitch value

+

get_position

+
function ncine.audio_player.get_position(player: audioplayerObj)
+  -> ncine.vec3
+
+

Returns the player position vector

+

get_room_rolloff_factor

+
function ncine.audio_player.get_room_rolloff_factor(player: audioplayerObj)
+  -> number
+
+

Returns the player room rolloff factor

+

get_sample_offset

+
function ncine.audio_player.get_sample_offset(player: audioplayerObj)
+  -> integer
+
+

Returns the size of the currently playing buffer in bytes

+

get_velocity

+
function ncine.audio_player.get_velocity(player: audioplayerObj)
+  -> ncine.vec3
+
+

Returns the player velocity vector

+

has_aux_filter

+
function ncine.audio_player.has_aux_filter(player: audioplayerObj)
+  -> boolean
+
+

Returns true if a valid OpenAL auxiliary filter is currently assigned to the player

+

has_direct_filter

+
function ncine.audio_player.has_direct_filter(player: audioplayerObj)
+  -> boolean
+
+

Returns true if a valid OpenAL direct filter is currently assigned to the player

+

has_effect_slot

+
function ncine.audio_player.has_effect_slot(player: audioplayerObj)
+  -> boolean
+
+

Returns true if a valid OpenAL effect slot is currently assigned to the player

+

has_source

+
function ncine.audio_player.has_source(player: audioplayerObj)
+  -> boolean
+
+

Returns true if a valid OpenAL source is currently assigned to the player

+

is_looping

+
function ncine.audio_player.is_looping(player: audioplayerObj)
+  -> boolean
+
+

Returns the looping property of the player

+

is_paused

+
function ncine.audio_player.is_paused(player: audioplayerObj)
+  -> boolean
+
+

Returns true if the player is paused

+

is_playing

+
function ncine.audio_player.is_playing(player: audioplayerObj)
+  -> boolean
+
+

Returns true if the player is playing

+

is_source_locked

+
function ncine.audio_player.is_source_locked(player: audioplayerObj)
+  -> boolean
+
+

Returns true if the OpenAL source is locked

+

is_stopped

+
function ncine.audio_player.is_stopped(player: audioplayerObj)
+  -> boolean
+
+

Returns true if the player is stopped

+

new

+
function ncine.audiostream_player.new(filename: string)
+  -> audiostreamplayerObj
+
+

Constructs an audio stream player object from an audio file

+

Don't forget to call delete when you are done with it!

+

@param filename — The path to an audio file

+

@return — A new audio stream player object

+

num_channels

+
function ncine.audio_player.num_channels(player: audioplayerObj)
+  -> integer
+
+

Returns the number of audio channels of the currently playing buffer

+

num_samples

+
function ncine.audio_player.num_samples(player: audioplayerObj)
+  -> integer
+
+

Returns the number of samples

+

num_samples_in_streambuffer

+
function ncine.audiostream_player.num_samples_in_streambuffer(player: audiostreamplayerObj)
+  -> integer
+
+

Returns the number of samples in the streaming buffer

+

pause

+
function ncine.audio_player.pause(player: audioplayerObj)
+
+

Pauses playing

+

play

+
function ncine.audio_player.play(player: audioplayerObj)
+
+

Starts playing

+

sample_offset_in_stream

+
function ncine.audiostream_player.sample_offset_in_stream(player: audiostreamplayerObj)
+  -> integer
+
+

Returns the sample offset relative to the whole stream

+

set_air_absorption_factor

+
function ncine.audio_player.set_air_absorption_factor(player: audioplayerObj, factor: number)
+
+

Sets the player air absorption factor

+

set_cone_inner_angle

+
function ncine.audio_player.set_cone_inner_angle(player: audioplayerObj, angle: number)
+
+

Sets the player inside angle of the sound cone in degrees

+

set_cone_outer_angle

+
function ncine.audio_player.set_cone_outer_angle(player: audioplayerObj, angle: number)
+
+

Sets the player outside angle of the sound cone in degrees

+

set_cone_outer_gain

+
function ncine.audio_player.set_cone_outer_gain(player: audioplayerObj, gain: number)
+
+

Sets the player multiplication factor to determine the gain outside the cone

+

set_cone_outer_gain_hf

+
function ncine.audio_player.set_cone_outer_gain_hf(player: audioplayerObj, gain: number)
+
+

Sets the player cone outer gain HF value

+

set_direct_filter

+
function ncine.audio_player.set_direct_filter(player: audioplayerObj, audio_filter?: audiofilterObj)
+
+

Sets or removes the filter parameters from a filter object to the direct signal

+

set_direction

+
function ncine.audio_player.set_direction(player: audioplayerObj, direction: ncine.vec3)
+
+

Sets the player direction vector

+

set_effect_slot

+
function ncine.audio_player.set_effect_slot(player: audioplayerObj, audio_effect_slot?: audioeffectslotObj, audio_filter?: audiofilterObj)
+
+

Sets or removes an affect slot, with an optional auxiliary filter, to the player

+

set_gain

+
function ncine.audio_player.set_gain(player: audioplayerObj, gain: number)
+
+

Sets the player gain value

+

set_looping

+
function ncine.audio_player.set_looping(player: audioplayerObj, looping: boolean)
+
+

Sets the looping property of the player

+

set_pitch

+
function ncine.audio_player.set_pitch(player: audioplayerObj, pitch: number)
+
+

Sets the player pitch value

+

set_position

+
function ncine.audio_player.set_position(player: audioplayerObj, position: ncine.vec3)
+
+

Sets the player position vector

+

set_room_rolloff_factor

+
function ncine.audio_player.set_room_rolloff_factor(player: audioplayerObj, factor: number)
+
+

Sets the player room rolloff factor

+

set_sample_offset

+
function ncine.audio_player.set_sample_offset(player: audioplayerObj, offset: integer)
+
+

Returns the size of the currently playing buffer in bytes

+

set_source_locked

+
function ncine.audio_player.set_source_locked(player: audioplayerObj, locked: boolean)
+
+

Locks an OpenAL source so it is not released to the pool when the player stops

+

set_velocity

+
function ncine.audio_player.set_velocity(player: audioplayerObj, velocity: ncine.vec3)
+
+

Sets the player velocity vector

+

source_id

+
function ncine.audio_player.source_id(player: audioplayerObj)
+  -> integer
+
+

Returns the OpenAL id of the player source

+

stop

+
function ncine.audio_player.stop(player: audioplayerObj)
+
+

Stops playing and rewinds

+

streambuffer_size

+
function ncine.audiostream_player.streambuffer_size(player: audiostreamplayerObj)
+  -> integer
+
+

Returns the size of the streaming buffer in bytes

+
+

ncine.audiostream_player.delete

+
function ncine.audiostream_player.delete(player: audiostreamplayerObj)
+
+
function ncine.audiostream_player.delete(player: audiostreamplayerObj)
+
+
+

ncine.audiostream_player.new

+
function ncine.audiostream_player.new(filename: string)
+  -> audiostreamplayerObj
+
+
function ncine.audiostream_player.new(filename: string)
+  -> audiostreamplayerObj
+
+
+

ncine.audiostream_player.num_samples_in_streambuffer

+
function ncine.audiostream_player.num_samples_in_streambuffer(player: audiostreamplayerObj)
+  -> integer
+
+
function ncine.audiostream_player.num_samples_in_streambuffer(player: audiostreamplayerObj)
+  -> integer
+
+
+

ncine.audiostream_player.sample_offset_in_stream

+
function ncine.audiostream_player.sample_offset_in_stream(player: audiostreamplayerObj)
+  -> integer
+
+
function ncine.audiostream_player.sample_offset_in_stream(player: audiostreamplayerObj)
+  -> integer
+
+
+

ncine.audiostream_player.streambuffer_size

+
function ncine.audiostream_player.streambuffer_size(player: audiostreamplayerObj)
+  -> integer
+
+
function ncine.audiostream_player.streambuffer_size(player: audiostreamplayerObj)
+  -> integer
+
+
+

ncine.base_sprite

+

add_child

+
function ncine.scenenode.add_child(parent: scenenodeObj, node: scenenodeObj)
+  -> boolean
+
+

Adds a child node to the specified parent

+

@return — true if the node has been added

+

get_aabb

+
function ncine.drawable_node.get_aabb(node: drawablenodeObj)
+  -> ncine.rect
+
+

Returns the axis-aligned bounding box of the node area in the last frame

+

get_abs_anchor_point

+
function ncine.scenenode.get_abs_anchor_point(node: scenenodeObj)
+  -> ncine.vec2
+
+

Returns the absolute transformation anchor point in pixels

+

get_alpha

+
function ncine.scenenode.get_alpha(node: scenenodeObj)
+  -> number
+
+

Returns the node alpha color component

+

get_anchor_point

+
function ncine.drawable_node.get_anchor_point(node: drawablenodeObj)
+  -> ncine.vec2
+
+

Returns the transformation anchor point

+

get_child

+
function ncine.scenenode.get_child(node: scenenodeObj, index: integer)
+  -> scenenodeObj?
+
+

Returns the n-th child

+

get_child_order_index

+
function ncine.scenenode.get_child_order_index(node: scenenodeObj)
+  -> integer
+
+

Returns the order index of this node among its siblings

+

@return — The order index or zero if the node has no parent

+

get_children

+
function ncine.scenenode.get_children(node: scenenodeObj)
+  -> scenenodeObj[]
+
+

Returns the array of children

+

get_color

+
function ncine.scenenode.get_color(node: scenenodeObj)
+  -> ncine.color
+
+

Returns the node color

+

get_dest_blending_factor

+
function ncine.drawable_node.get_dest_blending_factor(node: drawablenodeObj)
+  -> ncine.blending_factor
+
+

Returns the destination blending factor

+

get_height

+
function ncine.drawable_node.get_height(node: drawablenodeObj)
+  -> number
+
+

Returns the height of the node area

+

get_last_frame_rendered

+
function ncine.drawable_node.get_last_frame_rendered(node: drawablenodeObj)
+  -> integer
+
+

Returns the last frame in which any of the viewports have rendered this node (node was not culled)

+

get_last_frame_updated

+
function ncine.scenenode.get_last_frame_updated(node: scenenodeObj)
+  -> integer
+
+

Returns the last frame in which any of the viewports have updated this node

+

get_layer

+
function ncine.scenenode.get_layer(node: scenenodeObj)
+  -> integer
+
+

Returns the node rendering layer

+

get_parent

+
function ncine.scenenode.get_parent(node: scenenodeObj)
+  -> scenenodeObj?
+
+

Returns the parent node, if there is any

+

get_position

+
function ncine.scenenode.get_position(node: scenenodeObj)
+  -> ncine.vec2
+
+

Returns the node position relative to its parent

+

get_rotation

+
function ncine.scenenode.get_rotation(node: scenenodeObj)
+  -> number
+
+

Returns the node rotation in degress

+

get_scale

+
function ncine.scenenode.get_scale(node: scenenodeObj)
+  -> ncine.vec2
+
+

Returns the node scale factors

+

get_size

+
function ncine.drawable_node.get_size(node: drawablenodeObj)
+  -> ncine.vec2
+
+

Returns the size of the node area

+

get_src_blending_factor

+
function ncine.drawable_node.get_src_blending_factor(node: drawablenodeObj)
+  -> ncine.blending_factor
+
+

eturns the source blending factor

+

get_texrect

+
function ncine.base_sprite.get_texrect(sprite: basespriteObj)
+  -> ncine.rect
+
+

Returns the texture source rectangle for blitting

+

get_texture

+
function ncine.base_sprite.get_texture(sprite: basespriteObj)
+  -> textureObj?
+
+

Returns the texture object

+

get_visit_order_index

+
function ncine.scenenode.get_visit_order_index(node: scenenodeObj)
+  -> integer
+
+

Returns the visit drawing order of the node

+

get_visit_order_state

+
function ncine.scenenode.get_visit_order_state(node: scenenodeObj)
+  -> ncine.visit_order_state
+
+

Returns the visit order state for the specified node

+

get_width

+
function ncine.drawable_node.get_width(node: drawablenodeObj)
+  -> number
+
+

Returns the width of the node area

+

is_blending_enabled

+
function ncine.drawable_node.is_blending_enabled(node: drawablenodeObj)
+  -> boolean
+
+

Returns true if the node renders with blending enabled

+

is_enabled

+
function ncine.scenenode.is_enabled(node: scenenodeObj)
+  -> boolean
+
+

Returns true if the node is both updating and drawing

+

is_flipped_x

+
function ncine.base_sprite.is_flipped_x(sprite: basespriteObj)
+  -> boolean
+
+

Returns true if the sprite texture is horizontally flipped

+

is_flipped_y

+
function ncine.base_sprite.is_flipped_y(sprite: basespriteObj)
+  -> boolean
+
+

Returns true if the sprite texture is vertically flipped

+

num_children

+
function ncine.scenenode.num_children(node: scenenodeObj)
+  -> integer
+
+

Returns the number of children

+

remove_all_children

+
function ncine.scenenode.remove_all_children(parent: scenenodeObj, index: any)
+  -> boolean
+
+

Removes all children from the specified parent

+

@return — true if there were at least one node to remove

+

remove_child

+
function ncine.scenenode.remove_child(parent: scenenodeObj, node: scenenodeObj)
+  -> boolean
+
+

Removes a child node from the specified parent

+

@return — true if the node has been removed

+

remove_child_at

+
function ncine.scenenode.remove_child_at(parent: scenenodeObj, index: integer)
+  -> boolean
+
+

Removes a child node at the specified index from the specified parent

+

@return — true if the node has been removed

+

reset_texture

+
function ncine.base_sprite.reset_texture(sprite: basespriteObj)
+
+

Triggers a texture update without setting a new texture

+

set_abs_anchor_point

+
function ncine.scenenode.set_abs_anchor_point(node: scenenodeObj, pos: ncine.vec2)
+
+

Sets the absolute transformation anchor point in pixels

+

set_alpha

+
function ncine.scenenode.set_alpha(node: scenenodeObj, alpha: number)
+
+

Sets the node alpha color component

+

set_anchor_point

+
function ncine.drawable_node.set_anchor_point(node: drawablenodeObj, anchor_point: ncine.vec2)
+
+

Sets the transformation anchor point

+

set_blending_enabled

+
function ncine.drawable_node.set_blending_enabled(node: drawablenodeObj, enabled: boolean)
+
+

Sets the blending state for node rendering

+

set_blending_factors

+
function ncine.drawable_node.set_blending_factors(node: drawablenodeObj, src_factor: ncine.blending_factor, dest_factor: ncine.blending_factor)
+
+

Sets a specific source and destination blending factors

+

set_blending_preset

+
function ncine.drawable_node.set_blending_preset(node: drawablenodeObj, preset: ncine.blending_preset)
+
+

Sets a blending preset for source and destination blending factors

+

set_color

+
function ncine.scenenode.set_color(node: scenenodeObj, color: ncine.color)
+
+

Sets the node color

+

set_enabled

+
function ncine.scenenode.set_enabled(node: scenenodeObj, newValue: boolean)
+
+

Enables or disables both node updating and drawing

+

set_flipped_x

+
function ncine.base_sprite.set_flipped_x(sprite: basespriteObj, flipped_x: boolean)
+
+

Flips the texture rect horizontally

+

set_flipped_y

+
function ncine.base_sprite.set_flipped_y(sprite: basespriteObj, flipped_y: boolean)
+
+

Flips the texture rect vertically

+

set_layer

+
function ncine.scenenode.set_layer(node: scenenodeObj, layer: integer)
+
+

Sets the node rendering layer

+

The lowest value (bottom) is 0 and the highest one (top) is 65535.
+When the value is 0, the final layer value is inherited from the parent.

+

set_parent

+
function ncine.scenenode.set_parent(node: scenenodeObj, parent?: scenenodeObj)
+  -> boolean
+
+

Sets the parent node

+

@return — true if the parent has been set

+

set_position

+
function ncine.scenenode.set_position(node: scenenodeObj, pos: ncine.vec2)
+
+

Sets a new position for the node

+

set_rotation

+
function ncine.scenenode.set_rotation(node: scenenodeObj, rot: number)
+
+

Sets the node rotation in degrees

+

@param rot — The amount of degrees

+

set_scale

+
function ncine.scenenode.set_scale(node: scenenodeObj, factor: number)
+
+

Sets both node scale factors to the specified value

+

set_scale_x

+
function ncine.scenenode.set_scale_x(node: scenenodeObj, factor: number)
+
+

Sets the node scale X factor

+

set_scale_y

+
function ncine.scenenode.set_scale_y(node: scenenodeObj, factor: number)
+
+

Sets the node scale Y factor

+

set_size

+
function ncine.base_sprite.set_size(sprite: basespriteObj, width: number, height: number)
+
+

Sets the sprite size

+

set_texrect

+
function ncine.base_sprite.set_texrect(sprite: basespriteObj, rect: ncine.rect)
+
+

Sets the texture source rectangle for blitting

+

set_texture

+
function ncine.base_sprite.set_texture(sprite: basespriteObj, texture?: textureObj)
+
+

Sets the texture object

+

set_visit_order_state

+
function ncine.scenenode.set_visit_order_state(node: scenenodeObj, state: ncine.visit_order_state)
+
+

Sets the visit order state for the specified node

+

swap_children

+
function ncine.scenenode.swap_children(parent: scenenodeObj, firstIndex: integer, secondIndex: integer)
+  -> boolean
+
+

Swaps two children at the specified indices

+

@return — true if the two nodes have been swapped

+

swap_node_back

+
function ncine.scenenode.swap_node_back(node: scenenodeObj)
+  -> boolean
+
+

Brings this node one node back in the parent's list of children

+

@return — true if the node has been brought one position back

+

swap_node_forward

+
function ncine.scenenode.swap_node_forward(node: scenenodeObj)
+  -> boolean
+
+

Brings this node one node forward in the parent's list of children

+

@return — true if the node has been brought one position forward

+

unlink_child

+
function ncine.scenenode.unlink_child(parent: scenenodeObj, node: scenenodeObj)
+  -> boolean
+
+

Unlinks a child node from the specified parent

+

The children of the unlinked node will be reparented with the grandparent node

+

@return — true if the node has been unlinked

+
+

ncine.base_sprite

+
ncine.base_sprite
+
+
ncine.base_sprite
+
+
+

ncine.base_sprite.get_texrect

+
function ncine.base_sprite.get_texrect(sprite: basespriteObj)
+  -> ncine.rect
+
+
function ncine.base_sprite.get_texrect(sprite: basespriteObj)
+  -> ncine.rect
+
+
+

ncine.base_sprite.get_texture

+
function ncine.base_sprite.get_texture(sprite: basespriteObj)
+  -> textureObj?
+
+
function ncine.base_sprite.get_texture(sprite: basespriteObj)
+  -> textureObj?
+
+
+

ncine.base_sprite.is_flipped_x

+
function ncine.base_sprite.is_flipped_x(sprite: basespriteObj)
+  -> boolean
+
+
function ncine.base_sprite.is_flipped_x(sprite: basespriteObj)
+  -> boolean
+
+
+

ncine.base_sprite.is_flipped_y

+
function ncine.base_sprite.is_flipped_y(sprite: basespriteObj)
+  -> boolean
+
+
function ncine.base_sprite.is_flipped_y(sprite: basespriteObj)
+  -> boolean
+
+
+

ncine.base_sprite.reset_texture

+
function ncine.base_sprite.reset_texture(sprite: basespriteObj)
+
+
function ncine.base_sprite.reset_texture(sprite: basespriteObj)
+
+
+

ncine.base_sprite.set_flipped_x

+
function ncine.base_sprite.set_flipped_x(sprite: basespriteObj, flipped_x: boolean)
+
+
function ncine.base_sprite.set_flipped_x(sprite: basespriteObj, flipped_x: boolean)
+
+
+

ncine.base_sprite.set_flipped_y

+
function ncine.base_sprite.set_flipped_y(sprite: basespriteObj, flipped_y: boolean)
+
+
function ncine.base_sprite.set_flipped_y(sprite: basespriteObj, flipped_y: boolean)
+
+
+

ncine.base_sprite.set_size

+
function ncine.base_sprite.set_size(sprite: basespriteObj, width: number, height: number)
+
+
function ncine.base_sprite.set_size(sprite: basespriteObj, width: number, height: number)
+
+
+

ncine.base_sprite.set_texrect

+
function ncine.base_sprite.set_texrect(sprite: basespriteObj, rect: ncine.rect)
+
+
function ncine.base_sprite.set_texrect(sprite: basespriteObj, rect: ncine.rect)
+
+
+

ncine.base_sprite.set_texture

+
function ncine.base_sprite.set_texture(sprite: basespriteObj, texture?: textureObj)
+
+
function ncine.base_sprite.set_texture(sprite: basespriteObj, texture?: textureObj)
+
+
+

ncine.blending_factor

+
enum ncine.blending_factor
+
+
enum ncine.blending_factor
+
+
+

ncine.blending_preset

+
enum ncine.blending_preset
+
+
enum ncine.blending_preset
+
+
+

ncine.camera

+

delete

+
function ncine.camera.delete(camera: cameraObj)
+
+

Destroys a camera object and releases its memory

+

@param camera — The camera object to be destroyed

+

get_projection_values

+
function ncine.camera.get_projection_values(camera: cameraObj)
+  -> camera_projection_values
+
+

Returns the projection values that are used to create the projection matrix

+

get_view_values

+
function ncine.camera.get_view_values(camera: cameraObj)
+  -> camera_view_values
+
+

Returns the view values that are used to create the model matrix

+

new

+
function ncine.camera.new()
+  -> cameraObj
+
+

Constructs a camera object

+

Don't forget to call delete when you are done with it!

+

@return — A new camera object

+

set_ortho_projection

+
function ncine.camera.set_ortho_projection(camera: cameraObj, projection_values: camera_projection_values)
+
+

Updates the projection matrix using the projection values from the table

+

set_view

+
function ncine.camera.set_view(camera: cameraObj, view_values: camera_view_values)
+
+

Updates the model matrix using the view values from the table

+
+

ncine.camera

+
ncine.camera
+
+
ncine.camera
+
+
+

ncine.camera.delete

+
function ncine.camera.delete(camera: cameraObj)
+
+
function ncine.camera.delete(camera: cameraObj)
+
+
+

ncine.camera.get_projection_values

+
function ncine.camera.get_projection_values(camera: cameraObj)
+  -> camera_projection_values
+
+
function ncine.camera.get_projection_values(camera: cameraObj)
+  -> camera_projection_values
+
+
+

ncine.camera.get_view_values

+
function ncine.camera.get_view_values(camera: cameraObj)
+  -> camera_view_values
+
+
function ncine.camera.get_view_values(camera: cameraObj)
+  -> camera_view_values
+
+
+

ncine.camera.new

+
function ncine.camera.new()
+  -> cameraObj
+
+
function ncine.camera.new()
+  -> cameraObj
+
+
+

ncine.camera.set_ortho_projection

+
function ncine.camera.set_ortho_projection(camera: cameraObj, projection_values: camera_projection_values)
+
+
function ncine.camera.set_ortho_projection(camera: cameraObj, projection_values: camera_projection_values)
+
+
+

ncine.camera.set_view

+
function ncine.camera.set_view(camera: cameraObj, view_values: camera_view_values)
+
+
function ncine.camera.set_view(camera: cameraObj, view_values: camera_view_values)
+
+
+

ncine.clear_mode

+
enum ncine.clear_mode
+
+
enum ncine.clear_mode
+
+
+

ncine.color

+
ncine.color
+
+
ncine.color
+
+
+

ncine.color

+

a

+
number
+
+

The alpha component

+

add

+
function ncine.color.add(color0: ncine.color, color1: ncine.color)
+  -> ncine.color
+
+

Adds two colors together, component-wise, clamping to 1.0

+

b

+
number
+
+

The blue component

+

create

+
function ncine.color.create(r: number, g: number, b: number, a: number)
+  -> ncine.color
+
+

Creates a color table from its components

+

@param r — The red component

+

@param g — The green component

+

@param b — The blue component

+

@param a — The alpha component

+

g

+
number
+
+

The green component

+

mul

+
function ncine.color.mul(color0: ncine.color, color1: ncine.color)
+  -> ncine.color
+
+

Multiplies two colors together, component-wise, clamping to 1.0

+

r

+
number
+
+

The red component

+

sub

+
function ncine.color.sub(color0: ncine.color, color1: ncine.color)
+  -> ncine.color
+
+

Subtracts the second color from the first one, component-wise, clamping to 0.0

+
+

ncine.color.add

+
function ncine.color.add(color0: ncine.color, color1: ncine.color)
+  -> ncine.color
+
+
function ncine.color.add(color0: ncine.color, color1: ncine.color)
+  -> ncine.color
+
+
+

ncine.color.create

+
function ncine.color.create(r: number, g: number, b: number, a: number)
+  -> ncine.color
+
+
function ncine.color.create(r: number, g: number, b: number, a: number)
+  -> ncine.color
+
+
+

ncine.color.mul

+
function ncine.color.mul(color0: ncine.color, color1: ncine.color)
+  -> ncine.color
+
+
function ncine.color.mul(color0: ncine.color, scalar: number)
+  -> ncine.color
+
+
function ncine.color.mul(color0: ncine.color, color1: ncine.color)
+  -> ncine.color
+
+
function ncine.color.mul(color0: ncine.color, scalar: number)
+  -> ncine.color
+
+
+

ncine.color.sub

+
function ncine.color.sub(color0: ncine.color, color1: ncine.color)
+  -> ncine.color
+
+
function ncine.color.sub(color0: ncine.color, color1: ncine.color)
+  -> ncine.color
+
+
+

ncine.colors

+
table
+
+
table
+
+
+

ncine.colors.BLACK

+
table
+
+
table
+
+
+

ncine.colors.BLUE

+
table
+
+
table
+
+
+

ncine.colors.CYAN

+
table
+
+
table
+
+
+

ncine.colors.GREEN

+
table
+
+
table
+
+
+

ncine.colors.MAGENTA

+
table
+
+
table
+
+
+

ncine.colors.RED

+
table
+
+
table
+
+
+

ncine.colors.WHITE

+
table
+
+
table
+
+
+

ncine.colors.YELLOW

+
table
+
+
table
+
+
+

ncine.depth_stencil_format

+
enum ncine.depth_stencil_format
+
+
enum ncine.depth_stencil_format
+
+
+

ncine.drawable_node

+
ncine.drawable_node
+
+
ncine.drawable_node
+
+
+

ncine.drawable_node

+

add_child

+
function ncine.scenenode.add_child(parent: scenenodeObj, node: scenenodeObj)
+  -> boolean
+
+

Adds a child node to the specified parent

+

@return — true if the node has been added

+

get_aabb

+
function ncine.drawable_node.get_aabb(node: drawablenodeObj)
+  -> ncine.rect
+
+

Returns the axis-aligned bounding box of the node area in the last frame

+

get_abs_anchor_point

+
function ncine.scenenode.get_abs_anchor_point(node: scenenodeObj)
+  -> ncine.vec2
+
+

Returns the absolute transformation anchor point in pixels

+

get_alpha

+
function ncine.scenenode.get_alpha(node: scenenodeObj)
+  -> number
+
+

Returns the node alpha color component

+

get_anchor_point

+
function ncine.drawable_node.get_anchor_point(node: drawablenodeObj)
+  -> ncine.vec2
+
+

Returns the transformation anchor point

+

get_child

+
function ncine.scenenode.get_child(node: scenenodeObj, index: integer)
+  -> scenenodeObj?
+
+

Returns the n-th child

+

get_child_order_index

+
function ncine.scenenode.get_child_order_index(node: scenenodeObj)
+  -> integer
+
+

Returns the order index of this node among its siblings

+

@return — The order index or zero if the node has no parent

+

get_children

+
function ncine.scenenode.get_children(node: scenenodeObj)
+  -> scenenodeObj[]
+
+

Returns the array of children

+

get_color

+
function ncine.scenenode.get_color(node: scenenodeObj)
+  -> ncine.color
+
+

Returns the node color

+

get_dest_blending_factor

+
function ncine.drawable_node.get_dest_blending_factor(node: drawablenodeObj)
+  -> ncine.blending_factor
+
+

Returns the destination blending factor

+

get_height

+
function ncine.drawable_node.get_height(node: drawablenodeObj)
+  -> number
+
+

Returns the height of the node area

+

get_last_frame_rendered

+
function ncine.drawable_node.get_last_frame_rendered(node: drawablenodeObj)
+  -> integer
+
+

Returns the last frame in which any of the viewports have rendered this node (node was not culled)

+

get_last_frame_updated

+
function ncine.scenenode.get_last_frame_updated(node: scenenodeObj)
+  -> integer
+
+

Returns the last frame in which any of the viewports have updated this node

+

get_layer

+
function ncine.scenenode.get_layer(node: scenenodeObj)
+  -> integer
+
+

Returns the node rendering layer

+

get_parent

+
function ncine.scenenode.get_parent(node: scenenodeObj)
+  -> scenenodeObj?
+
+

Returns the parent node, if there is any

+

get_position

+
function ncine.scenenode.get_position(node: scenenodeObj)
+  -> ncine.vec2
+
+

Returns the node position relative to its parent

+

get_rotation

+
function ncine.scenenode.get_rotation(node: scenenodeObj)
+  -> number
+
+

Returns the node rotation in degress

+

get_scale

+
function ncine.scenenode.get_scale(node: scenenodeObj)
+  -> ncine.vec2
+
+

Returns the node scale factors

+

get_size

+
function ncine.drawable_node.get_size(node: drawablenodeObj)
+  -> ncine.vec2
+
+

Returns the size of the node area

+

get_src_blending_factor

+
function ncine.drawable_node.get_src_blending_factor(node: drawablenodeObj)
+  -> ncine.blending_factor
+
+

eturns the source blending factor

+

get_visit_order_index

+
function ncine.scenenode.get_visit_order_index(node: scenenodeObj)
+  -> integer
+
+

Returns the visit drawing order of the node

+

get_visit_order_state

+
function ncine.scenenode.get_visit_order_state(node: scenenodeObj)
+  -> ncine.visit_order_state
+
+

Returns the visit order state for the specified node

+

get_width

+
function ncine.drawable_node.get_width(node: drawablenodeObj)
+  -> number
+
+

Returns the width of the node area

+

is_blending_enabled

+
function ncine.drawable_node.is_blending_enabled(node: drawablenodeObj)
+  -> boolean
+
+

Returns true if the node renders with blending enabled

+

is_enabled

+
function ncine.scenenode.is_enabled(node: scenenodeObj)
+  -> boolean
+
+

Returns true if the node is both updating and drawing

+

num_children

+
function ncine.scenenode.num_children(node: scenenodeObj)
+  -> integer
+
+

Returns the number of children

+

remove_all_children

+
function ncine.scenenode.remove_all_children(parent: scenenodeObj, index: any)
+  -> boolean
+
+

Removes all children from the specified parent

+

@return — true if there were at least one node to remove

+

remove_child

+
function ncine.scenenode.remove_child(parent: scenenodeObj, node: scenenodeObj)
+  -> boolean
+
+

Removes a child node from the specified parent

+

@return — true if the node has been removed

+

remove_child_at

+
function ncine.scenenode.remove_child_at(parent: scenenodeObj, index: integer)
+  -> boolean
+
+

Removes a child node at the specified index from the specified parent

+

@return — true if the node has been removed

+

set_abs_anchor_point

+
function ncine.scenenode.set_abs_anchor_point(node: scenenodeObj, pos: ncine.vec2)
+
+

Sets the absolute transformation anchor point in pixels

+

set_alpha

+
function ncine.scenenode.set_alpha(node: scenenodeObj, alpha: number)
+
+

Sets the node alpha color component

+

set_anchor_point

+
function ncine.drawable_node.set_anchor_point(node: drawablenodeObj, anchor_point: ncine.vec2)
+
+

Sets the transformation anchor point

+

set_blending_enabled

+
function ncine.drawable_node.set_blending_enabled(node: drawablenodeObj, enabled: boolean)
+
+

Sets the blending state for node rendering

+

set_blending_factors

+
function ncine.drawable_node.set_blending_factors(node: drawablenodeObj, src_factor: ncine.blending_factor, dest_factor: ncine.blending_factor)
+
+

Sets a specific source and destination blending factors

+

set_blending_preset

+
function ncine.drawable_node.set_blending_preset(node: drawablenodeObj, preset: ncine.blending_preset)
+
+

Sets a blending preset for source and destination blending factors

+

set_color

+
function ncine.scenenode.set_color(node: scenenodeObj, color: ncine.color)
+
+

Sets the node color

+

set_enabled

+
function ncine.scenenode.set_enabled(node: scenenodeObj, newValue: boolean)
+
+

Enables or disables both node updating and drawing

+

set_layer

+
function ncine.scenenode.set_layer(node: scenenodeObj, layer: integer)
+
+

Sets the node rendering layer

+

The lowest value (bottom) is 0 and the highest one (top) is 65535.
+When the value is 0, the final layer value is inherited from the parent.

+

set_parent

+
function ncine.scenenode.set_parent(node: scenenodeObj, parent?: scenenodeObj)
+  -> boolean
+
+

Sets the parent node

+

@return — true if the parent has been set

+

set_position

+
function ncine.scenenode.set_position(node: scenenodeObj, pos: ncine.vec2)
+
+

Sets a new position for the node

+

set_rotation

+
function ncine.scenenode.set_rotation(node: scenenodeObj, rot: number)
+
+

Sets the node rotation in degrees

+

@param rot — The amount of degrees

+

set_scale

+
function ncine.scenenode.set_scale(node: scenenodeObj, factor: number)
+
+

Sets both node scale factors to the specified value

+

set_scale_x

+
function ncine.scenenode.set_scale_x(node: scenenodeObj, factor: number)
+
+

Sets the node scale X factor

+

set_scale_y

+
function ncine.scenenode.set_scale_y(node: scenenodeObj, factor: number)
+
+

Sets the node scale Y factor

+

set_visit_order_state

+
function ncine.scenenode.set_visit_order_state(node: scenenodeObj, state: ncine.visit_order_state)
+
+

Sets the visit order state for the specified node

+

swap_children

+
function ncine.scenenode.swap_children(parent: scenenodeObj, firstIndex: integer, secondIndex: integer)
+  -> boolean
+
+

Swaps two children at the specified indices

+

@return — true if the two nodes have been swapped

+

swap_node_back

+
function ncine.scenenode.swap_node_back(node: scenenodeObj)
+  -> boolean
+
+

Brings this node one node back in the parent's list of children

+

@return — true if the node has been brought one position back

+

swap_node_forward

+
function ncine.scenenode.swap_node_forward(node: scenenodeObj)
+  -> boolean
+
+

Brings this node one node forward in the parent's list of children

+

@return — true if the node has been brought one position forward

+

unlink_child

+
function ncine.scenenode.unlink_child(parent: scenenodeObj, node: scenenodeObj)
+  -> boolean
+
+

Unlinks a child node from the specified parent

+

The children of the unlinked node will be reparented with the grandparent node

+

@return — true if the node has been unlinked

+
+

ncine.drawable_node.get_aabb

+
function ncine.drawable_node.get_aabb(node: drawablenodeObj)
+  -> ncine.rect
+
+
function ncine.drawable_node.get_aabb(node: drawablenodeObj)
+  -> ncine.rect
+
+
+

ncine.drawable_node.get_anchor_point

+
function ncine.drawable_node.get_anchor_point(node: drawablenodeObj)
+  -> ncine.vec2
+
+
function ncine.drawable_node.get_anchor_point(node: drawablenodeObj)
+  -> ncine.vec2
+
+
+

ncine.drawable_node.get_dest_blending_factor

+
function ncine.drawable_node.get_dest_blending_factor(node: drawablenodeObj)
+  -> ncine.blending_factor
+
+
function ncine.drawable_node.get_dest_blending_factor(node: drawablenodeObj)
+  -> ncine.blending_factor
+
+
+

ncine.drawable_node.get_height

+
function ncine.drawable_node.get_height(node: drawablenodeObj)
+  -> number
+
+
function ncine.drawable_node.get_height(node: drawablenodeObj)
+  -> number
+
+
+

ncine.drawable_node.get_last_frame_rendered

+
function ncine.drawable_node.get_last_frame_rendered(node: drawablenodeObj)
+  -> integer
+
+
function ncine.drawable_node.get_last_frame_rendered(node: drawablenodeObj)
+  -> integer
+
+
+

ncine.drawable_node.get_size

+
function ncine.drawable_node.get_size(node: drawablenodeObj)
+  -> ncine.vec2
+
+
function ncine.drawable_node.get_size(node: drawablenodeObj)
+  -> ncine.vec2
+
+
+

ncine.drawable_node.get_src_blending_factor

+
function ncine.drawable_node.get_src_blending_factor(node: drawablenodeObj)
+  -> ncine.blending_factor
+
+
function ncine.drawable_node.get_src_blending_factor(node: drawablenodeObj)
+  -> ncine.blending_factor
+
+
+

ncine.drawable_node.get_width

+
function ncine.drawable_node.get_width(node: drawablenodeObj)
+  -> number
+
+
function ncine.drawable_node.get_width(node: drawablenodeObj)
+  -> number
+
+
+

ncine.drawable_node.is_blending_enabled

+
function ncine.drawable_node.is_blending_enabled(node: drawablenodeObj)
+  -> boolean
+
+
function ncine.drawable_node.is_blending_enabled(node: drawablenodeObj)
+  -> boolean
+
+
+

ncine.drawable_node.set_anchor_point

+
function ncine.drawable_node.set_anchor_point(node: drawablenodeObj, anchor_point: ncine.vec2)
+
+
function ncine.drawable_node.set_anchor_point(node: drawablenodeObj, x: number, y: number)
+
+
function ncine.drawable_node.set_anchor_point(node: drawablenodeObj, anchor_point: ncine.vec2)
+
+
function ncine.drawable_node.set_anchor_point(node: drawablenodeObj, x: number, y: number)
+
+
+

ncine.drawable_node.set_blending_enabled

+
function ncine.drawable_node.set_blending_enabled(node: drawablenodeObj, enabled: boolean)
+
+
function ncine.drawable_node.set_blending_enabled(node: drawablenodeObj, enabled: boolean)
+
+
+

ncine.drawable_node.set_blending_factors

+
function ncine.drawable_node.set_blending_factors(node: drawablenodeObj, src_factor: ncine.blending_factor, dest_factor: ncine.blending_factor)
+
+
function ncine.drawable_node.set_blending_factors(node: drawablenodeObj, src_factor: ncine.blending_factor, dest_factor: ncine.blending_factor)
+
+
+

ncine.drawable_node.set_blending_preset

+
function ncine.drawable_node.set_blending_preset(node: drawablenodeObj, preset: ncine.blending_preset)
+
+
function ncine.drawable_node.set_blending_preset(node: drawablenodeObj, preset: ncine.blending_preset)
+
+
+

ncine.efx_reverb_presets

+
enum ncine.efx_reverb_presets
+
+
enum ncine.efx_reverb_presets
+
+
+

ncine.font

+
ncine.font
+
+
ncine.font
+
+
+

ncine.font

+

delete

+
function ncine.font.delete(font: fontObj)
+
+

Destroys a font object and releases its memory

+

@param font — The font object to be destroyed

+

get_base

+
function ncine.font.get_base(font: fontObj)
+  -> integer
+
+

Returns the font base

+

get_line_height

+
function ncine.font.get_line_height(font: fontObj)
+  -> integer
+
+

Returns the font line height

+

get_render_mode

+
function ncine.font.get_render_mode(font: fontObj)
+  -> ncine.font_render_mode
+
+

Returns the mode detected by the font to render text nodes

+

get_texture

+
function ncine.font.get_texture(font: fontObj)
+  -> textureObj?
+
+

Returns the texture object in use by the font

+

get_texture_size

+
function ncine.font.get_texture_size(font: fontObj)
+  -> ncine.vec2
+
+

Returns the texture atlas size

+

new

+
function ncine.font.new(fnt_file: string, texture_file: string)
+  -> fontObj
+
+

Constructs the font object from an AngelCode's FNT file and a texture file

+

If the texture_file parameter is an empty string, then a texture with the same name as the FNT file is searched in the same path

+

Don't forget to call delete when you are done with it!

+

@param fnt_file — The path to a FNT file

+

@param texture_file — The path to a texture file

+

@return — A new font object

+

num_glyphs

+
function ncine.font.num_glyphs(font: fontObj)
+  -> integer
+
+

Returns the number of glyphs

+

num_kernings

+
function ncine.font.num_kernings(font: fontObj)
+  -> integer
+
+

Returns the number of kerning pairs

+

set_texture

+
function ncine.font.set_texture(font: fontObj, texture?: textureObj)
+
+

Sets a new shared texture object without modifying any glyphs or kerning data

+
+

ncine.font.delete

+
function ncine.font.delete(font: fontObj)
+
+
function ncine.font.delete(font: fontObj)
+
+
+

ncine.font.get_base

+
function ncine.font.get_base(font: fontObj)
+  -> integer
+
+
function ncine.font.get_base(font: fontObj)
+  -> integer
+
+
+

ncine.font.get_line_height

+
function ncine.font.get_line_height(font: fontObj)
+  -> integer
+
+
function ncine.font.get_line_height(font: fontObj)
+  -> integer
+
+
+

ncine.font.get_render_mode

+
function ncine.font.get_render_mode(font: fontObj)
+  -> ncine.font_render_mode
+
+
function ncine.font.get_render_mode(font: fontObj)
+  -> ncine.font_render_mode
+
+
+

ncine.font.get_texture

+
function ncine.font.get_texture(font: fontObj)
+  -> textureObj?
+
+
function ncine.font.get_texture(font: fontObj)
+  -> textureObj?
+
+
+

ncine.font.get_texture_size

+
function ncine.font.get_texture_size(font: fontObj)
+  -> ncine.vec2
+
+
function ncine.font.get_texture_size(font: fontObj)
+  -> ncine.vec2
+
+
+

ncine.font.new

+
function ncine.font.new(fnt_file: string, texture_file: string)
+  -> fontObj
+
+
function ncine.font.new(fnt_file: string, texture_file: string)
+  -> fontObj
+
+
+

ncine.font.num_glyphs

+
function ncine.font.num_glyphs(font: fontObj)
+  -> integer
+
+
function ncine.font.num_glyphs(font: fontObj)
+  -> integer
+
+
+

ncine.font.num_kernings

+
function ncine.font.num_kernings(font: fontObj)
+  -> integer
+
+
function ncine.font.num_kernings(font: fontObj)
+  -> integer
+
+
+

ncine.font.set_texture

+
function ncine.font.set_texture(font: fontObj, texture?: textureObj)
+
+
function ncine.font.set_texture(font: fontObj, texture?: textureObj)
+
+
+

ncine.font_render_mode

+
enum ncine.font_render_mode
+
+
enum ncine.font_render_mode
+
+
+

ncine.frame_timer

+
ncine.frame_timer
+
+
ncine.frame_timer
+
+
+

ncine.frame_timer

+

average_fps

+
function ncine.frame_timer.average_fps()
+  -> number
+
+

Returns the average FPS during the update interval

+

average_frame_time

+
function ncine.frame_timer.average_frame_time()
+  -> number
+
+

Returns the average frame time in seconds during the update interval

+

current_frame_duration

+
function ncine.frame_timer.current_frame_duration()
+  -> number
+
+

Returns the elapsed time in seconds since current frame started

+

get_average_interval

+
function ncine.frame_timer.get_average_interval()
+  -> number
+
+

Returns the number of seconds between two average FPS calculations

+

get_log_level

+
function ncine.frame_timer.get_log_level()
+  -> ncine.log_level
+
+

Returns the level for the logging events

+

get_logging_interval

+
function ncine.frame_timer.get_logging_interval()
+  -> number
+
+

Returns the number of seconds between two logging events

+

A different and independent average is calculated over this time interval.

+

is_average_enabled

+
function ncine.frame_timer.is_average_enabled()
+  -> boolean
+
+

Returns true if the average FPS calculation is enabled

+

is_logging_enabled

+
function ncine.frame_timer.is_logging_enabled()
+  -> boolean
+
+

Returns true if logging of averages is enabled

+

last_frame_duration

+
function ncine.frame_timer.last_frame_duration()
+  -> number
+
+

Returns the time in seconds that last frame took to complete

+

set_average_interval

+
function ncine.frame_timer.set_average_interval(interval: number)
+
+

Sets the number of seconds between two average FPS calculations

+

set_log_level

+
function ncine.frame_timer.set_log_level(log_level: ncine.log_level)
+
+

Sets the level for the logging events

+

set_logging_interval

+
function ncine.frame_timer.set_logging_interval(interval: number)
+
+

Sets the number of seconds between two logging events

+

total_number_frames

+
function ncine.frame_timer.total_number_frames()
+  -> integer
+
+

Returns the total number of frames rendered since the application started

+
+

ncine.frame_timer.average_fps

+
function ncine.frame_timer.average_fps()
+  -> number
+
+
function ncine.frame_timer.average_fps()
+  -> number
+
+
+

ncine.frame_timer.average_frame_time

+
function ncine.frame_timer.average_frame_time()
+  -> number
+
+
function ncine.frame_timer.average_frame_time()
+  -> number
+
+
+

ncine.frame_timer.current_frame_duration

+
function ncine.frame_timer.current_frame_duration()
+  -> number
+
+
function ncine.frame_timer.current_frame_duration()
+  -> number
+
+
+

ncine.frame_timer.get_average_interval

+
function ncine.frame_timer.get_average_interval()
+  -> number
+
+
function ncine.frame_timer.get_average_interval()
+  -> number
+
+
+

ncine.frame_timer.get_log_level

+
function ncine.frame_timer.get_log_level()
+  -> ncine.log_level
+
+
function ncine.frame_timer.get_log_level()
+  -> ncine.log_level
+
+
+

ncine.frame_timer.get_logging_interval

+
function ncine.frame_timer.get_logging_interval()
+  -> number
+
+
function ncine.frame_timer.get_logging_interval()
+  -> number
+
+
+

ncine.frame_timer.is_average_enabled

+
function ncine.frame_timer.is_average_enabled()
+  -> boolean
+
+
function ncine.frame_timer.is_average_enabled()
+  -> boolean
+
+
+

ncine.frame_timer.is_logging_enabled

+
function ncine.frame_timer.is_logging_enabled()
+  -> boolean
+
+
function ncine.frame_timer.is_logging_enabled()
+  -> boolean
+
+
+

ncine.frame_timer.last_frame_duration

+
function ncine.frame_timer.last_frame_duration()
+  -> number
+
+
function ncine.frame_timer.last_frame_duration()
+  -> number
+
+
+

ncine.frame_timer.set_average_interval

+
function ncine.frame_timer.set_average_interval(interval: number)
+
+
function ncine.frame_timer.set_average_interval(interval: number)
+
+
+

ncine.frame_timer.set_log_level

+
function ncine.frame_timer.set_log_level(log_level: ncine.log_level)
+
+
function ncine.frame_timer.set_log_level(log_level: ncine.log_level)
+
+
+

ncine.frame_timer.set_logging_interval

+
function ncine.frame_timer.set_logging_interval(interval: number)
+
+
function ncine.frame_timer.set_logging_interval(interval: number)
+
+
+

ncine.frame_timer.total_number_frames

+
function ncine.frame_timer.total_number_frames()
+  -> integer
+
+
function ncine.frame_timer.total_number_frames()
+  -> integer
+
+
+

ncine.fs

+

absolute_join_path

+
function ncine.fs.absolute_join_path(first: string, second: string)
+  -> string
+
+

Returns the absolute path after joining together two path components

+

absolute_path

+
function ncine.fs.absolute_path(path: string)
+  -> string
+
+

Returns an absolute path from a relative one

+

It also resolves dot references to current and parent directories, and double separators.

+

add_permissions

+
function ncine.fs.add_permissions(path: string, mode: integer)
+  -> boolean
+
+

Adds the permissions in the mask to a file or a directory

+

@param mode — A mask created from values in ncine.permission

+

@return — True if the new permission mode was added

+

See: ncine.permission

+

basename

+
function ncine.fs.basename(path: string)
+  -> string
+
+

Returns the path component after the final separator

+

change_permissions

+
function ncine.fs.change_permissions(path: string, mode: integer)
+  -> boolean
+
+

Returns the file or directory permissions in a mask

+

@param mode — A mask created from values in ncine.permission

+

@return — True if the permission mode was changed

+

See: ncine.permission

+

copy

+
function ncine.fs.copy(old_path: string, new_path: string)
+  -> boolean
+
+

Copies a file

+

@return — True if the file has been copied

+

create_dir

+
function ncine.fs.create_dir(path: string)
+  -> boolean
+
+

Creates a new directory

+

@return — True if the new directory has been created

+

delete_empty_dir

+
function ncine.fs.delete_empty_dir(path: string)
+  -> boolean
+
+

Deletes an empty directory

+

@return — True if the empty directory has been deleted

+

delete_file

+
function ncine.fs.delete_file(path: string)
+  -> boolean
+
+

Deletes a file

+

@return — True if the file has been deleted

+

dirname

+
function ncine.fs.dirname(path: string)
+  -> string
+
+

Returns the path up to, but not including, the final separator

+

exists

+
function ncine.fs.exists(path: string)
+  -> boolean
+
+

Returns true if the file or directory exists

+

file_size

+
function ncine.fs.file_size(path: string)
+  -> integer
+
+

Returns the file size in bytes

+

get_cache_path

+
function ncine.fs.get_cache_path()
+  -> string
+
+

Returns the writable directory for saving cache data

+

get_current_dir

+
function ncine.fs.get_current_dir()
+  -> string
+
+

Returns the path of the current working directory

+

get_data_path

+
function ncine.fs.get_data_path()
+  -> string
+
+

Returns the base directory for data loading

+

get_extension

+
function ncine.fs.get_extension(path: string)
+  -> string?
+
+

Returns the extension position in the string or nil if it is not found

+

get_home_path

+
function ncine.fs.get_home_path()
+  -> string
+
+

Returns the current user home directory

+

get_permissions

+
function ncine.fs.get_permissions(path: string)
+  -> integer
+
+

Returns the file or directory permissions in a mask

+

@return — A mask created from values in ncine.permission

+

See: ncine.permission

+

get_save_path

+
function ncine.fs.get_save_path()
+  -> string
+
+

Returns the writable directory for saving data

+

has_extension

+
function ncine.fs.has_extension(path: string, extension: string)
+  -> boolean
+
+

Returns true if the path has the specified extension (case-insensitive comparison)

+

is_directory

+
function ncine.fs.is_directory(path: string)
+  -> boolean
+
+

Returns true if the specified path is a directory

+

is_executable

+
function ncine.fs.is_executable(path: string)
+  -> boolean
+
+

Returns true if the file or directory is executable

+

is_file

+
function ncine.fs.is_file(path: string)
+  -> boolean
+
+

Returns true if the specified path is a file

+

is_hidden

+
function ncine.fs.is_hidden(path: string)
+  -> boolean
+
+

Returns true if the file or directory is hidden

+

is_readable

+
function ncine.fs.is_readable(path: string)
+  -> boolean
+
+

Returns true if the file or directory is readable

+

is_readable_file

+
function ncine.fs.is_readable_file(path: string)
+  -> boolean
+
+

Returns true if the path is a file and is readable

+

is_writable

+
function ncine.fs.is_writable(path: string)
+  -> boolean
+
+

Returns true if the file or directory is writable

+

is_writable_file

+
function ncine.fs.is_writable_file(path: string)
+  -> boolean
+
+

Returns true if the path is a file and is writeable

+

join_path

+
function ncine.fs.join_path(first: string, second: string)
+  -> string
+
+

Joins together two path components

+

last_access_time

+
function ncine.fs.last_access_time(path: string)
+  -> file_date
+
+

Returns the last time the file or directory was accessed

+

See: file_date

+

last_modification_time

+
function ncine.fs.last_modification_time(path: string)
+  -> file_date
+
+

Returns the last time the file or directory was modified

+

See: file_date

+

logical_drive_strings

+
function ncine.fs.logical_drive_strings()
+  -> string
+
+

Returns a buffer with strings that specify valid drives in the system on Windows

+

logical_drives

+
function ncine.fs.logical_drives()
+  -> integer
+
+

Returns a bitmask representing the currently available disk drives on Windows

+

remove_permissions

+
function ncine.fs.remove_permissions(path: string, mode: integer)
+  -> boolean
+
+

Removes the permissions in the mask from a file or a directory

+

@param mode — A mask created from values in ncine.permission

+

@return — True if the permission mode was removed

+

See: ncine.permission

+

rename

+
function ncine.fs.rename(old_path: string, new_path: string)
+  -> boolean
+
+

Renames or moves a file or a directory

+

@return — True if the file or directory has been renamed or moved

+

set_current_dir

+
function ncine.fs.set_current_dir(path: string)
+  -> boolean
+
+

Sets the current working directory, the starting point for interpreting relative paths

+

@return — True if the directory has been successfully changed

+

set_hidden

+
function ncine.fs.set_hidden(path: string, hidden: boolean)
+  -> boolean
+
+

Makes a file or a directory hidden or not

+

@return — True if the new hidden state has been successfully set

+
+

ncine.fs

+
ncine.fs
+
+
ncine.fs
+
+
+

ncine.fs.absolute_join_path

+
function ncine.fs.absolute_join_path(first: string, second: string)
+  -> string
+
+
function ncine.fs.absolute_join_path(first: string, second: string)
+  -> string
+
+
+

ncine.fs.absolute_path

+
function ncine.fs.absolute_path(path: string)
+  -> string
+
+
function ncine.fs.absolute_path(path: string)
+  -> string
+
+
+

ncine.fs.add_permissions

+
function ncine.fs.add_permissions(path: string, mode: integer)
+  -> boolean
+
+
function ncine.fs.add_permissions(path: string, mode: integer)
+  -> boolean
+
+
+

ncine.fs.basename

+
function ncine.fs.basename(path: string)
+  -> string
+
+
function ncine.fs.basename(path: string)
+  -> string
+
+
+

ncine.fs.change_permissions

+
function ncine.fs.change_permissions(path: string, mode: integer)
+  -> boolean
+
+
function ncine.fs.change_permissions(path: string, mode: integer)
+  -> boolean
+
+
+

ncine.fs.copy

+
function ncine.fs.copy(old_path: string, new_path: string)
+  -> boolean
+
+
function ncine.fs.copy(old_path: string, new_path: string)
+  -> boolean
+
+
+

ncine.fs.create_dir

+
function ncine.fs.create_dir(path: string)
+  -> boolean
+
+
function ncine.fs.create_dir(path: string)
+  -> boolean
+
+
+

ncine.fs.delete_empty_dir

+
function ncine.fs.delete_empty_dir(path: string)
+  -> boolean
+
+
function ncine.fs.delete_empty_dir(path: string)
+  -> boolean
+
+
+

ncine.fs.delete_file

+
function ncine.fs.delete_file(path: string)
+  -> boolean
+
+
function ncine.fs.delete_file(path: string)
+  -> boolean
+
+
+

ncine.fs.dirname

+
function ncine.fs.dirname(path: string)
+  -> string
+
+
function ncine.fs.dirname(path: string)
+  -> string
+
+
+

ncine.fs.exists

+
function ncine.fs.exists(path: string)
+  -> boolean
+
+
function ncine.fs.exists(path: string)
+  -> boolean
+
+
+

ncine.fs.file_size

+
function ncine.fs.file_size(path: string)
+  -> integer
+
+
function ncine.fs.file_size(path: string)
+  -> integer
+
+
+

ncine.fs.get_cache_path

+
function ncine.fs.get_cache_path()
+  -> string
+
+
function ncine.fs.get_cache_path()
+  -> string
+
+
+

ncine.fs.get_current_dir

+
function ncine.fs.get_current_dir()
+  -> string
+
+
function ncine.fs.get_current_dir()
+  -> string
+
+
+

ncine.fs.get_data_path

+
function ncine.fs.get_data_path()
+  -> string
+
+
function ncine.fs.get_data_path()
+  -> string
+
+
+

ncine.fs.get_extension

+
function ncine.fs.get_extension(path: string)
+  -> string?
+
+
function ncine.fs.get_extension(path: string)
+  -> string?
+
+
+

ncine.fs.get_home_path

+
function ncine.fs.get_home_path()
+  -> string
+
+
function ncine.fs.get_home_path()
+  -> string
+
+
+

ncine.fs.get_permissions

+
function ncine.fs.get_permissions(path: string)
+  -> integer
+
+
function ncine.fs.get_permissions(path: string)
+  -> integer
+
+
+

ncine.fs.get_save_path

+
function ncine.fs.get_save_path()
+  -> string
+
+
function ncine.fs.get_save_path()
+  -> string
+
+
+

ncine.fs.has_extension

+
function ncine.fs.has_extension(path: string, extension: string)
+  -> boolean
+
+
function ncine.fs.has_extension(path: string, extension: string)
+  -> boolean
+
+
+

ncine.fs.is_directory

+
function ncine.fs.is_directory(path: string)
+  -> boolean
+
+
function ncine.fs.is_directory(path: string)
+  -> boolean
+
+
+

ncine.fs.is_executable

+
function ncine.fs.is_executable(path: string)
+  -> boolean
+
+
function ncine.fs.is_executable(path: string)
+  -> boolean
+
+
+

ncine.fs.is_file

+
function ncine.fs.is_file(path: string)
+  -> boolean
+
+
function ncine.fs.is_file(path: string)
+  -> boolean
+
+
+

ncine.fs.is_hidden

+
function ncine.fs.is_hidden(path: string)
+  -> boolean
+
+
function ncine.fs.is_hidden(path: string)
+  -> boolean
+
+
+

ncine.fs.is_readable

+
function ncine.fs.is_readable(path: string)
+  -> boolean
+
+
function ncine.fs.is_readable(path: string)
+  -> boolean
+
+
+

ncine.fs.is_readable_file

+
function ncine.fs.is_readable_file(path: string)
+  -> boolean
+
+
function ncine.fs.is_readable_file(path: string)
+  -> boolean
+
+
+

ncine.fs.is_writable

+
function ncine.fs.is_writable(path: string)
+  -> boolean
+
+
function ncine.fs.is_writable(path: string)
+  -> boolean
+
+
+

ncine.fs.is_writable_file

+
function ncine.fs.is_writable_file(path: string)
+  -> boolean
+
+
function ncine.fs.is_writable_file(path: string)
+  -> boolean
+
+
+

ncine.fs.join_path

+
function ncine.fs.join_path(first: string, second: string)
+  -> string
+
+
function ncine.fs.join_path(first: string, second: string)
+  -> string
+
+
+

ncine.fs.last_access_time

+
function ncine.fs.last_access_time(path: string)
+  -> file_date
+
+
function ncine.fs.last_access_time(path: string)
+  -> file_date
+
+
+

ncine.fs.last_modification_time

+
function ncine.fs.last_modification_time(path: string)
+  -> file_date
+
+
function ncine.fs.last_modification_time(path: string)
+  -> file_date
+
+
+

ncine.fs.logical_drive_strings

+
function ncine.fs.logical_drive_strings()
+  -> string
+
+
function ncine.fs.logical_drive_strings()
+  -> string
+
+
+

ncine.fs.logical_drives

+
function ncine.fs.logical_drives()
+  -> integer
+
+
function ncine.fs.logical_drives()
+  -> integer
+
+
+

ncine.fs.remove_permissions

+
function ncine.fs.remove_permissions(path: string, mode: integer)
+  -> boolean
+
+
function ncine.fs.remove_permissions(path: string, mode: integer)
+  -> boolean
+
+
+

ncine.fs.rename

+
function ncine.fs.rename(old_path: string, new_path: string)
+  -> boolean
+
+
function ncine.fs.rename(old_path: string, new_path: string)
+  -> boolean
+
+
+

ncine.fs.set_current_dir

+
function ncine.fs.set_current_dir(path: string)
+  -> boolean
+
+
function ncine.fs.set_current_dir(path: string)
+  -> boolean
+
+
+

ncine.fs.set_hidden

+
function ncine.fs.set_hidden(path: string, hidden: boolean)
+  -> boolean
+
+
function ncine.fs.set_hidden(path: string, hidden: boolean)
+  -> boolean
+
+
+

ncine.gfx_device

+
ncine.gfx_device
+
+
ncine.gfx_device
+
+
+

ncine.gfx_device

+

flash_window

+
function ncine.gfx_device.flash_window()
+
+

Highlights the application window to notify the user

+

get_aspect_ratio

+
function ncine.gfx_device.get_aspect_ratio()
+  -> number
+
+

Returns the window or video mode resolution aspect ratio

+

get_current_video_mode

+
function ncine.gfx_device.get_current_video_mode()
+  -> video_mode
+
+

Returns the current video mode for the specified monitor`

+

get_drawable_resolution

+
function ncine.gfx_device.get_drawable_resolution()
+  -> ncine.vec2
+
+

Returns the window resolution in pixels as a ncine.vec2

+

It may differs from width() on HiDPI screens

+

get_drawable_width

+
function ncine.gfx_device.get_drawable_width()
+  -> integer
+
+

Returns the window width in pixels

+

It may differs from width() on HiDPI screens

+

get_hdrawable_eight

+
function ncine.gfx_device.get_hdrawable_eight()
+  -> integer
+
+

Returns the window height in pixels

+

It may differs from width() on HiDPI screens

+

get_height

+
function ncine.gfx_device.get_height()
+  -> integer
+
+

Returns the window or video mode height in screen coordinates

+

get_monitor

+
function ncine.gfx_device.get_monitor(index: integer)
+  -> monitor
+
+

Returns the specified monitor

+

get_primary_monitor_index

+
function ncine.gfx_device.get_primary_monitor_index()
+  -> integer
+
+

Returns the array index of the primary monitor

+

This is usually the monitor where elements like the task bar or global menu bar are located

+

get_resolution

+
function ncine.gfx_device.get_resolution()
+  -> ncine.vec2
+
+

Returns the window or video mode resolution in screen coordinates as a ncine.vec2

+

get_width

+
function ncine.gfx_device.get_width()
+  -> integer
+
+

Returns the window or video mode width in screen coordinates

+

get_window_monitor_index

+
function ncine.gfx_device.get_window_monitor_index()
+  -> integer
+
+

Returns the array index of the monitor associated with the window

+

get_window_position

+
function ncine.gfx_device.get_window_position()
+  -> ncine.vec2
+
+

Returns the window position as a ncine.vec2

+

get_window_position_x

+
function ncine.gfx_device.get_window_position_x()
+  -> integer
+
+

Returns the window horizontal position

+

get_window_position_y

+
function ncine.gfx_device.get_window_position_y()
+  -> integer
+
+

Returns the window vertical position

+

get_window_scaling_factor

+
function ncine.gfx_device.get_window_scaling_factor()
+  -> number
+
+

Returns the scaling factor for application window

+

is_fullscreen

+
function ncine.gfx_device.is_fullscreen()
+  -> boolean
+
+

Returns true if the device renders in full screen

+

is_resizable

+
function ncine.gfx_device.is_resizable()
+  -> boolean
+
+

Returns true if the window is resizable

+

num_monitors

+
function ncine.gfx_device.num_monitors()
+  -> integer
+
+

Returns the number of connected monitors

+

set_fullscreen

+
function ncine.gfx_device.set_fullscreen(in_fullscreen: boolean)
+
+

Sets the full screen flag of the window

+

set_swap_interval

+
function ncine.gfx_device.set_swap_interval(interval: integer)
+
+

Sets the number of vertical blanks to occur before a buffer swap

+

An interval of -1 will enable adaptive v-sync if available.

+

set_video_mode

+
function ncine.gfx_device.set_video_mode(mode_index: integer)
+
+

Sets the video mode that will be used in full screen by the monitor that hosts the window

+

Call this method before enabling full screen.

+

set_window_icon

+
function ncine.gfx_device.set_window_icon(icon_filename: string)
+
+

Sets the application window icon

+

set_window_position

+
function ncine.gfx_device.set_window_position(position: ncine.vec2)
+
+

Sets the position of the application window with a ncine.vec2

+

set_window_size

+
function ncine.gfx_device.set_window_size(size: ncine.vec2)
+
+

Sets the window size with a ncine.vec2

+

If the application is in full screen this method will have no effect.

+

set_window_title

+
function ncine.gfx_device.set_window_title(title: string)
+
+

Sets the application window title

+
+

ncine.gfx_device.flash_window

+
function ncine.gfx_device.flash_window()
+
+
function ncine.gfx_device.flash_window()
+
+
+

ncine.gfx_device.get_aspect_ratio

+
function ncine.gfx_device.get_aspect_ratio()
+  -> number
+
+
function ncine.gfx_device.get_aspect_ratio()
+  -> number
+
+
+

ncine.gfx_device.get_current_video_mode

+
function ncine.gfx_device.get_current_video_mode()
+  -> video_mode
+
+
function ncine.gfx_device.get_current_video_mode()
+  -> video_mode
+
+
+

ncine.gfx_device.get_drawable_resolution

+
function ncine.gfx_device.get_drawable_resolution()
+  -> ncine.vec2
+
+
function ncine.gfx_device.get_drawable_resolution()
+  -> ncine.vec2
+
+
+

ncine.gfx_device.get_drawable_width

+
function ncine.gfx_device.get_drawable_width()
+  -> integer
+
+
function ncine.gfx_device.get_drawable_width()
+  -> integer
+
+
+

ncine.gfx_device.get_hdrawable_eight

+
function ncine.gfx_device.get_hdrawable_eight()
+  -> integer
+
+
function ncine.gfx_device.get_hdrawable_eight()
+  -> integer
+
+
+

ncine.gfx_device.get_height

+
function ncine.gfx_device.get_height()
+  -> integer
+
+
function ncine.gfx_device.get_height()
+  -> integer
+
+
+

ncine.gfx_device.get_monitor

+
function ncine.gfx_device.get_monitor(index: integer)
+  -> monitor
+
+
function ncine.gfx_device.get_monitor(index: integer)
+  -> monitor
+
+
+

ncine.gfx_device.get_primary_monitor_index

+
function ncine.gfx_device.get_primary_monitor_index()
+  -> integer
+
+
function ncine.gfx_device.get_primary_monitor_index()
+  -> integer
+
+
+

ncine.gfx_device.get_resolution

+
function ncine.gfx_device.get_resolution()
+  -> ncine.vec2
+
+
function ncine.gfx_device.get_resolution()
+  -> ncine.vec2
+
+
+

ncine.gfx_device.get_width

+
function ncine.gfx_device.get_width()
+  -> integer
+
+
function ncine.gfx_device.get_width()
+  -> integer
+
+
+

ncine.gfx_device.get_window_monitor_index

+
function ncine.gfx_device.get_window_monitor_index()
+  -> integer
+
+
function ncine.gfx_device.get_window_monitor_index()
+  -> integer
+
+
+

ncine.gfx_device.get_window_position

+
function ncine.gfx_device.get_window_position()
+  -> ncine.vec2
+
+
function ncine.gfx_device.get_window_position()
+  -> ncine.vec2
+
+
+

ncine.gfx_device.get_window_position_x

+
function ncine.gfx_device.get_window_position_x()
+  -> integer
+
+
function ncine.gfx_device.get_window_position_x()
+  -> integer
+
+
+

ncine.gfx_device.get_window_position_y

+
function ncine.gfx_device.get_window_position_y()
+  -> integer
+
+
function ncine.gfx_device.get_window_position_y()
+  -> integer
+
+
+

ncine.gfx_device.get_window_scaling_factor

+
function ncine.gfx_device.get_window_scaling_factor()
+  -> number
+
+
function ncine.gfx_device.get_window_scaling_factor()
+  -> number
+
+
+

ncine.gfx_device.is_fullscreen

+
function ncine.gfx_device.is_fullscreen()
+  -> boolean
+
+
function ncine.gfx_device.is_fullscreen()
+  -> boolean
+
+
+

ncine.gfx_device.is_resizable

+
function ncine.gfx_device.is_resizable()
+  -> boolean
+
+
function ncine.gfx_device.is_resizable()
+  -> boolean
+
+
+

ncine.gfx_device.num_monitors

+
function ncine.gfx_device.num_monitors()
+  -> integer
+
+
function ncine.gfx_device.num_monitors()
+  -> integer
+
+
+

ncine.gfx_device.set_fullscreen

+
function ncine.gfx_device.set_fullscreen(in_fullscreen: boolean)
+
+
function ncine.gfx_device.set_fullscreen(in_fullscreen: boolean)
+
+
+

ncine.gfx_device.set_swap_interval

+
function ncine.gfx_device.set_swap_interval(interval: integer)
+
+
function ncine.gfx_device.set_swap_interval(interval: integer)
+
+
+

ncine.gfx_device.set_video_mode

+
function ncine.gfx_device.set_video_mode(mode_index: integer)
+
+
function ncine.gfx_device.set_video_mode(mode_index: integer)
+
+
+

ncine.gfx_device.set_window_icon

+
function ncine.gfx_device.set_window_icon(icon_filename: string)
+
+
function ncine.gfx_device.set_window_icon(icon_filename: string)
+
+
+

ncine.gfx_device.set_window_position

+
function ncine.gfx_device.set_window_position(position: ncine.vec2)
+
+
function ncine.gfx_device.set_window_position(position_x: integer, position_y: integer)
+
+
function ncine.gfx_device.set_window_position(position: ncine.vec2)
+
+
function ncine.gfx_device.set_window_position(position_x: integer, position_y: integer)
+
+
+

ncine.gfx_device.set_window_size

+
function ncine.gfx_device.set_window_size(size: ncine.vec2)
+
+
function ncine.gfx_device.set_window_size(width: integer, height: integer)
+
+
function ncine.gfx_device.set_window_size(size: ncine.vec2)
+
+
function ncine.gfx_device.set_window_size(width: integer, height: integer)
+
+
+

ncine.gfx_device.set_window_title

+
function ncine.gfx_device.set_window_title(title: string)
+
+
function ncine.gfx_device.set_window_title(title: string)
+
+
+

ncine.hash64

+
table
+
+
table
+
+
+

ncine.input

+

add_joymappings_from_file

+
function ncine.input.add_joymappings_from_file(filename: string)
+
+

Adds joystick mapping configurations from a text file

+

add_joymappings_from_strings

+
function ncine.input.add_joymappings_from_strings(strings: string[])
+
+

Adds joystick mapping configurations from a strings array

+

deadzone_normalize

+
function ncine.input.deadzone_normalize(joy_vector: ncine.vec2, deadzone_value: number)
+
+

Modifies the joystick axis vector to account for a dead zone

+

get_mouse_cursor_mode

+
function ncine.input.get_mouse_cursor_mode(joy_id: any)
+  -> ncine.mouse_cursor_mode
+
+

Returns current mouse cursor mode

+

joy_axis_normvalue

+
function ncine.input.joy_axis_normvalue(joystick_state: joystickstateObj, axis_id: integer)
+  -> number
+
+

Returns a normalized value between -1.0 and 1.0 for a joystick axis

+

joy_axis_value

+
function ncine.input.joy_axis_value(joystick_state: joystickstateObj, axis_id: integer)
+  -> integer
+
+

Returns a value between -32768 and 32767 for a joystick axis

+

joy_button_pressed

+
function ncine.input.joy_button_pressed(joystick_state: joystickstateObj, button_id: integer)
+  -> boolean
+
+

Returns true if the specified joystick button is pressed

+

joy_guid

+
function ncine.input.joy_guid(joy_id: integer)
+  -> string
+
+

Returns the GUID of the specified joystick

+

joy_hat_state

+
function ncine.input.joy_hat_state(joystick_state: joystickstateObj, hat_id: integer)
+  -> ncine.joy_hat_state
+
+

Returns the state of the specified hat

+

joy_mapped

+
function ncine.input.joy_mapped(joy_id: integer)
+  -> boolean
+
+

Returns true if the joystick has a valid mapping configuration

+

joy_name

+
function ncine.input.joy_name(joy_id: integer)
+  -> string
+
+

joy_id

+

joy_num_axes

+
function ncine.input.joy_num_axes(joy_id: integer)
+  -> integer
+
+

Returns the number of available axes for the specified joystick

+

joy_num_buttons

+
function ncine.input.joy_num_buttons(joy_id: integer)
+  -> integer
+
+

Returns the number of available buttons for the specified joystick

+

joy_num_hats

+
function ncine.input.joy_num_hats(joy_id: integer)
+  -> integer
+
+

Returns the number of available hats for the specified joystick

+

joy_present

+
function ncine.input.joy_present(joy_id: integer)
+  -> boolean
+
+

Returns true if the specified joystick is connected

+

joy_state

+
function ncine.input.joy_state()
+  -> joystickstateObj
+
+

Returns the state of the joystick

+

joymapped_state

+
function ncine.input.joymapped_state()
+  -> joymappedstateObj
+
+

Returns the state of the mapped joystick

+

key_down

+
function ncine.input.key_down(key_state: keystateObj, keysym: integer)
+  -> boolean
+
+

Returns true if the specified key is down

+

key_state

+
function ncine.input.key_state()
+  -> keystateObj
+
+

Returns current keyboard state

+

mouse_state

+
function ncine.input.mouse_state()
+  -> mouse_state
+
+

Returns current mouse state

+

num_joymappings

+
function ncine.input.num_joymappings(strings: any)
+  -> integer
+
+

Returns the current number of valid joystick mappings

+

set_mouse_cursor_mode

+
function ncine.input.set_mouse_cursor_mode(mouse_cursor_mode: ncine.mouse_cursor_mode)
+
+

Sets the mouse cursor mode

+
+

ncine.input

+
ncine.input
+
+
ncine.input
+
+
+

ncine.input.add_joymappings_from_file

+
function ncine.input.add_joymappings_from_file(filename: string)
+
+
function ncine.input.add_joymappings_from_file(filename: string)
+
+
+

ncine.input.add_joymappings_from_strings

+
function ncine.input.add_joymappings_from_strings(strings: string[])
+
+
function ncine.input.add_joymappings_from_strings(strings: string[])
+
+
+

ncine.input.deadzone_normalize

+
function ncine.input.deadzone_normalize(joy_vector: ncine.vec2, deadzone_value: number)
+
+
function ncine.input.deadzone_normalize(joy_vector: ncine.vec2, deadzone_value: number)
+
+
+

ncine.input.get_mouse_cursor_mode

+
function ncine.input.get_mouse_cursor_mode(joy_id: any)
+  -> ncine.mouse_cursor_mode
+
+
function ncine.input.get_mouse_cursor_mode(joy_id: any)
+  -> ncine.mouse_cursor_mode
+
+
+

ncine.input.joy_axis_normvalue

+
function ncine.input.joy_axis_normvalue(joystick_state: joystickstateObj, axis_id: integer)
+  -> number
+
+
function ncine.input.joy_axis_normvalue(joystick_state: joystickstateObj, axis_id: integer)
+  -> number
+
+
+

ncine.input.joy_axis_value

+
function ncine.input.joy_axis_value(joystick_state: joystickstateObj, axis_id: integer)
+  -> integer
+
+
function ncine.input.joy_axis_value(joystick_state: joymappedstateObj, axis_name: ncine.joy_axis)
+  -> number
+
+
function ncine.input.joy_axis_value(joystick_state: joystickstateObj, axis_id: integer)
+  -> integer
+
+
function ncine.input.joy_axis_value(joystick_state: joymappedstateObj, axis_name: ncine.joy_axis)
+  -> number
+
+
+

ncine.input.joy_button_pressed

+
function ncine.input.joy_button_pressed(joystick_state: joystickstateObj, button_id: integer)
+  -> boolean
+
+
function ncine.input.joy_button_pressed(joystick_state: joymappedstateObj, button_name: ncine.joy_button)
+  -> boolean
+
+
function ncine.input.joy_button_pressed(joystick_state: joystickstateObj, button_id: integer)
+  -> boolean
+
+
function ncine.input.joy_button_pressed(joystick_state: joymappedstateObj, button_name: ncine.joy_button)
+  -> boolean
+
+
+

ncine.input.joy_guid

+
function ncine.input.joy_guid(joy_id: integer)
+  -> string
+
+
function ncine.input.joy_guid(joy_id: integer)
+  -> string
+
+
+

ncine.input.joy_hat_state

+
function ncine.input.joy_hat_state(joystick_state: joystickstateObj, hat_id: integer)
+  -> ncine.joy_hat_state
+
+
function ncine.input.joy_hat_state(joystick_state: joystickstateObj, hat_id: integer)
+  -> ncine.joy_hat_state
+
+
+

ncine.input.joy_mapped

+
function ncine.input.joy_mapped(joy_id: integer)
+  -> boolean
+
+
function ncine.input.joy_mapped(joy_id: integer)
+  -> boolean
+
+
+

ncine.input.joy_name

+
function ncine.input.joy_name(joy_id: integer)
+  -> string
+
+
function ncine.input.joy_name(joy_id: integer)
+  -> string
+
+
+

ncine.input.joy_num_axes

+
function ncine.input.joy_num_axes(joy_id: integer)
+  -> integer
+
+
function ncine.input.joy_num_axes(joy_id: integer)
+  -> integer
+
+
+

ncine.input.joy_num_buttons

+
function ncine.input.joy_num_buttons(joy_id: integer)
+  -> integer
+
+
function ncine.input.joy_num_buttons(joy_id: integer)
+  -> integer
+
+
+

ncine.input.joy_num_hats

+
function ncine.input.joy_num_hats(joy_id: integer)
+  -> integer
+
+
function ncine.input.joy_num_hats(joy_id: integer)
+  -> integer
+
+
+

ncine.input.joy_present

+
function ncine.input.joy_present(joy_id: integer)
+  -> boolean
+
+
function ncine.input.joy_present(joy_id: integer)
+  -> boolean
+
+
+

ncine.input.joy_state

+
function ncine.input.joy_state()
+  -> joystickstateObj
+
+
function ncine.input.joy_state()
+  -> joystickstateObj
+
+
+

ncine.input.joymapped_state

+
function ncine.input.joymapped_state()
+  -> joymappedstateObj
+
+
function ncine.input.joymapped_state()
+  -> joymappedstateObj
+
+
+

ncine.input.key_down

+
function ncine.input.key_down(key_state: keystateObj, keysym: integer)
+  -> boolean
+
+
function ncine.input.key_down(key_state: keystateObj, keysym: integer)
+  -> boolean
+
+
+

ncine.input.key_state

+
function ncine.input.key_state()
+  -> keystateObj
+
+
function ncine.input.key_state()
+  -> keystateObj
+
+
+

ncine.input.mouse_state

+
function ncine.input.mouse_state()
+  -> mouse_state
+
+
function ncine.input.mouse_state()
+  -> mouse_state
+
+
+

ncine.input.num_joymappings

+
function ncine.input.num_joymappings(strings: any)
+  -> integer
+
+
function ncine.input.num_joymappings(strings: any)
+  -> integer
+
+
+

ncine.input.set_mouse_cursor_mode

+
function ncine.input.set_mouse_cursor_mode(mouse_cursor_mode: ncine.mouse_cursor_mode)
+
+
function ncine.input.set_mouse_cursor_mode(mouse_cursor_mode: ncine.mouse_cursor_mode)
+
+
+

ncine.joy_axis

+
enum ncine.joy_axis
+
+
enum ncine.joy_axis
+
+
+

ncine.joy_button

+
enum ncine.joy_button
+
+
enum ncine.joy_button
+
+
+

ncine.joy_dead_zone

+
table
+
+
table
+
+
+

ncine.joy_hat_state

+
enum ncine.joy_hat_state
+
+
enum ncine.joy_hat_state
+
+
+

ncine.keymod

+
enum ncine.keymod
+
+
enum ncine.keymod
+
+
+

ncine.keysym

+
enum ncine.keysym
+
+
enum ncine.keysym
+
+
+

ncine.log

+

debug

+
function ncine.log.debug(msg: string)
+
+

Logs a message with a ncine.log_level.DEBUG level

+

error

+
function ncine.log.error(msg: string)
+
+

Logs a message with a ncine.log_level.ERROR level

+

fatal

+
function ncine.log.fatal(msg: string)
+
+

Logs a message with a ncine.log_level.FATAL level

+

info

+
function ncine.log.info(msg: string)
+
+

Logs a message with a ncine.log_level.INFO level

+

verbose

+
function ncine.log.verbose(msg: string)
+
+

Logs a message with a ncine.log_level.VERBOSE level

+

warn

+
function ncine.log.warn(msg: string)
+
+

Logs a message with a ncine.log_level.WARN level

+
+

ncine.log

+
ncine.log
+
+
ncine.log
+
+
+

ncine.log.debug

+
function ncine.log.debug(msg: string)
+
+
function ncine.log.debug(msg: string)
+
+
+

ncine.log.error

+
function ncine.log.error(msg: string)
+
+
function ncine.log.error(msg: string)
+
+
+

ncine.log.fatal

+
function ncine.log.fatal(msg: string)
+
+
function ncine.log.fatal(msg: string)
+
+
+

ncine.log.info

+
function ncine.log.info(msg: string)
+
+
function ncine.log.info(msg: string)
+
+
+

ncine.log.verbose

+
function ncine.log.verbose(msg: string)
+
+
function ncine.log.verbose(msg: string)
+
+
+

ncine.log.warn

+
function ncine.log.warn(msg: string)
+
+
function ncine.log.warn(msg: string)
+
+
+

ncine.log_level

+
enum ncine.log_level
+
+
enum ncine.log_level
+
+
+

ncine.loop_mode

+
enum ncine.loop_mode
+
+
enum ncine.loop_mode
+
+
+

ncine.mesh_sprite

+
ncine.mesh_sprite
+
+
ncine.mesh_sprite
+
+
+

ncine.mesh_sprite

+

add_child

+
function ncine.scenenode.add_child(parent: scenenodeObj, node: scenenodeObj)
+  -> boolean
+
+

Adds a child node to the specified parent

+

@return — true if the node has been added

+

are_unique_indices

+
function ncine.mesh_sprite.are_unique_indices(sprite: meshspriteObj)
+  -> boolean
+
+

Returns true if the indices belong to the sprite and are not stored externally

+

are_unique_vertices

+
function ncine.mesh_sprite.are_unique_vertices(sprite: meshspriteObj)
+  -> boolean
+
+

Returns true if the vertices belong to the sprite and are not stored externally

+

clone

+
function ncine.mesh_sprite.clone(sprite: meshspriteObj)
+  -> meshspriteObj
+
+

Constructs a new mesh sprite object as a clone of the specified one

+

Don't forget to call delete when you are done with it!

+

@param sprite — The sprite object to be cloned

+

@return — The cloned mesh sprite object

+

copy_indices

+
function ncine.mesh_sprite.copy_indices(sprite: meshspriteObj, indices: integer[])
+
+

Copies the indices data from a table into the sprite (no texture version)

+

copy_vertices

+
function ncine.mesh_sprite.copy_vertices(sprite: meshspriteObj, vertices: mesh_sprite_vertex[])
+
+

Copies the vertices data from a table into the sprite

+

create_vertices_from_texels

+
function ncine.mesh_sprite.create_vertices_from_texels(sprite: meshspriteObj, texels: ncine.vec2[], texture_cut_mode: ncine.texture_cut_mode)
+
+

Creates an internal set of vertices from an external table of points in texture space, with optional texture cut mode

+

delete

+
function ncine.mesh_sprite.delete(sprite: meshspriteObj)
+
+

Destroys a mesh sprite object and releases its memory

+

@param sprite — The mesh sprite object to be destroyed

+

emplace_indices

+
function ncine.mesh_sprite.emplace_indices(sprite: meshspriteObj, indices: integer[])
+
+

Emplaces the indices data from an array of integers into the sprite

+

emplace_vertices

+
function ncine.mesh_sprite.emplace_vertices(sprite: meshspriteObj, vertices: number[])
+
+

Emplaces the vertices data from an array of numbers into the sprite

+

get_aabb

+
function ncine.drawable_node.get_aabb(node: drawablenodeObj)
+  -> ncine.rect
+
+

Returns the axis-aligned bounding box of the node area in the last frame

+

get_abs_anchor_point

+
function ncine.scenenode.get_abs_anchor_point(node: scenenodeObj)
+  -> ncine.vec2
+
+

Returns the absolute transformation anchor point in pixels

+

get_alpha

+
function ncine.scenenode.get_alpha(node: scenenodeObj)
+  -> number
+
+

Returns the node alpha color component

+

get_anchor_point

+
function ncine.drawable_node.get_anchor_point(node: drawablenodeObj)
+  -> ncine.vec2
+
+

Returns the transformation anchor point

+

get_bytes_per_vertex

+
function ncine.mesh_sprite.get_bytes_per_vertex(sprite: meshspriteObj)
+  -> integer
+
+

Returns the number of bytes used by each vertex

+

get_child

+
function ncine.scenenode.get_child(node: scenenodeObj, index: integer)
+  -> scenenodeObj?
+
+

Returns the n-th child

+

get_child_order_index

+
function ncine.scenenode.get_child_order_index(node: scenenodeObj)
+  -> integer
+
+

Returns the order index of this node among its siblings

+

@return — The order index or zero if the node has no parent

+

get_children

+
function ncine.scenenode.get_children(node: scenenodeObj)
+  -> scenenodeObj[]
+
+

Returns the array of children

+

get_color

+
function ncine.scenenode.get_color(node: scenenodeObj)
+  -> ncine.color
+
+

Returns the node color

+

get_dest_blending_factor

+
function ncine.drawable_node.get_dest_blending_factor(node: drawablenodeObj)
+  -> ncine.blending_factor
+
+

Returns the destination blending factor

+

get_height

+
function ncine.drawable_node.get_height(node: drawablenodeObj)
+  -> number
+
+

Returns the height of the node area

+

get_indices

+
function ncine.mesh_sprite.get_indices(sprite: meshspriteObj)
+  -> integer[]
+
+

Returns the indices used to draw the sprite mesh

+

get_last_frame_rendered

+
function ncine.drawable_node.get_last_frame_rendered(node: drawablenodeObj)
+  -> integer
+
+

Returns the last frame in which any of the viewports have rendered this node (node was not culled)

+

get_last_frame_updated

+
function ncine.scenenode.get_last_frame_updated(node: scenenodeObj)
+  -> integer
+
+

Returns the last frame in which any of the viewports have updated this node

+

get_layer

+
function ncine.scenenode.get_layer(node: scenenodeObj)
+  -> integer
+
+

Returns the node rendering layer

+

get_parent

+
function ncine.scenenode.get_parent(node: scenenodeObj)
+  -> scenenodeObj?
+
+

Returns the parent node, if there is any

+

get_position

+
function ncine.scenenode.get_position(node: scenenodeObj)
+  -> ncine.vec2
+
+

Returns the node position relative to its parent

+

get_rotation

+
function ncine.scenenode.get_rotation(node: scenenodeObj)
+  -> number
+
+

Returns the node rotation in degress

+

get_scale

+
function ncine.scenenode.get_scale(node: scenenodeObj)
+  -> ncine.vec2
+
+

Returns the node scale factors

+

get_size

+
function ncine.drawable_node.get_size(node: drawablenodeObj)
+  -> ncine.vec2
+
+

Returns the size of the node area

+

get_src_blending_factor

+
function ncine.drawable_node.get_src_blending_factor(node: drawablenodeObj)
+  -> ncine.blending_factor
+
+

eturns the source blending factor

+

get_texrect

+
function ncine.base_sprite.get_texrect(sprite: basespriteObj)
+  -> ncine.rect
+
+

Returns the texture source rectangle for blitting

+

get_texture

+
function ncine.base_sprite.get_texture(sprite: basespriteObj)
+  -> textureObj?
+
+

Returns the texture object

+

get_vertices

+
function ncine.mesh_sprite.get_vertices(sprite: meshspriteObj)
+  -> number[]
+
+

Returns the vertices data of the sprite mesh

+

get_visit_order_index

+
function ncine.scenenode.get_visit_order_index(node: scenenodeObj)
+  -> integer
+
+

Returns the visit drawing order of the node

+

get_visit_order_state

+
function ncine.scenenode.get_visit_order_state(node: scenenodeObj)
+  -> ncine.visit_order_state
+
+

Returns the visit order state for the specified node

+

get_width

+
function ncine.drawable_node.get_width(node: drawablenodeObj)
+  -> number
+
+

Returns the width of the node area

+

is_blending_enabled

+
function ncine.drawable_node.is_blending_enabled(node: drawablenodeObj)
+  -> boolean
+
+

Returns true if the node renders with blending enabled

+

is_enabled

+
function ncine.scenenode.is_enabled(node: scenenodeObj)
+  -> boolean
+
+

Returns true if the node is both updating and drawing

+

is_flipped_x

+
function ncine.base_sprite.is_flipped_x(sprite: basespriteObj)
+  -> boolean
+
+

Returns true if the sprite texture is horizontally flipped

+

is_flipped_y

+
function ncine.base_sprite.is_flipped_y(sprite: basespriteObj)
+  -> boolean
+
+

Returns true if the sprite texture is vertically flipped

+

new

+
function ncine.mesh_sprite.new(parent?: scenenodeObj, texture?: textureObj, x: number, y: number)
+  -> meshspriteObj
+
+

Constructs a mesh sprite object with a parent scene node, a texture, and position components

+

Don't forget to call delete when you are done with it!

+

@param parent — The parent scenenode

+

@param texture — The texture object

+

@param x — The X component of the position

+

@param y — The Y component of the position

+

@return — A new mesh sprite object

+

num_bytes

+
function ncine.mesh_sprite.num_bytes(sprite: meshspriteObj)
+  -> integer
+
+

Returns the total number of bytes used by all sprite's vertices

+

num_children

+
function ncine.scenenode.num_children(node: scenenodeObj)
+  -> integer
+
+

Returns the number of children

+

num_indices

+
function ncine.mesh_sprite.num_indices(sprite: meshspriteObj)
+  -> integer
+
+

Returns the number of indices used to draw the sprite mesh

+

num_vertices

+
function ncine.mesh_sprite.num_vertices(sprite: meshspriteObj)
+  -> integer
+
+

Returns the number of vertices of the sprite mesh

+

remove_all_children

+
function ncine.scenenode.remove_all_children(parent: scenenodeObj, index: any)
+  -> boolean
+
+

Removes all children from the specified parent

+

@return — true if there were at least one node to remove

+

remove_child

+
function ncine.scenenode.remove_child(parent: scenenodeObj, node: scenenodeObj)
+  -> boolean
+
+

Removes a child node from the specified parent

+

@return — true if the node has been removed

+

remove_child_at

+
function ncine.scenenode.remove_child_at(parent: scenenodeObj, index: integer)
+  -> boolean
+
+

Removes a child node at the specified index from the specified parent

+

@return — true if the node has been removed

+

reset_texture

+
function ncine.base_sprite.reset_texture(sprite: basespriteObj)
+
+

Triggers a texture update without setting a new texture

+

set_abs_anchor_point

+
function ncine.scenenode.set_abs_anchor_point(node: scenenodeObj, pos: ncine.vec2)
+
+

Sets the absolute transformation anchor point in pixels

+

set_alpha

+
function ncine.scenenode.set_alpha(node: scenenodeObj, alpha: number)
+
+

Sets the node alpha color component

+

set_anchor_point

+
function ncine.drawable_node.set_anchor_point(node: drawablenodeObj, anchor_point: ncine.vec2)
+
+

Sets the transformation anchor point

+

set_blending_enabled

+
function ncine.drawable_node.set_blending_enabled(node: drawablenodeObj, enabled: boolean)
+
+

Sets the blending state for node rendering

+

set_blending_factors

+
function ncine.drawable_node.set_blending_factors(node: drawablenodeObj, src_factor: ncine.blending_factor, dest_factor: ncine.blending_factor)
+
+

Sets a specific source and destination blending factors

+

set_blending_preset

+
function ncine.drawable_node.set_blending_preset(node: drawablenodeObj, preset: ncine.blending_preset)
+
+

Sets a blending preset for source and destination blending factors

+

set_color

+
function ncine.scenenode.set_color(node: scenenodeObj, color: ncine.color)
+
+

Sets the node color

+

set_enabled

+
function ncine.scenenode.set_enabled(node: scenenodeObj, newValue: boolean)
+
+

Enables or disables both node updating and drawing

+

set_flipped_x

+
function ncine.base_sprite.set_flipped_x(sprite: basespriteObj, flipped_x: boolean)
+
+

Flips the texture rect horizontally

+

set_flipped_y

+
function ncine.base_sprite.set_flipped_y(sprite: basespriteObj, flipped_y: boolean)
+
+

Flips the texture rect vertically

+

set_indices

+
function ncine.mesh_sprite.set_indices(sprite: meshspriteObj, source_sprite: meshspriteObj)
+
+

Sets the indices data to the data used by another sprite

+

set_layer

+
function ncine.scenenode.set_layer(node: scenenodeObj, layer: integer)
+
+

Sets the node rendering layer

+

The lowest value (bottom) is 0 and the highest one (top) is 65535.
+When the value is 0, the final layer value is inherited from the parent.

+

set_parent

+
function ncine.scenenode.set_parent(node: scenenodeObj, parent?: scenenodeObj)
+  -> boolean
+
+

Sets the parent node

+

@return — true if the parent has been set

+

set_position

+
function ncine.scenenode.set_position(node: scenenodeObj, pos: ncine.vec2)
+
+

Sets a new position for the node

+

set_rotation

+
function ncine.scenenode.set_rotation(node: scenenodeObj, rot: number)
+
+

Sets the node rotation in degrees

+

@param rot — The amount of degrees

+

set_scale

+
function ncine.scenenode.set_scale(node: scenenodeObj, factor: number)
+
+

Sets both node scale factors to the specified value

+

set_scale_x

+
function ncine.scenenode.set_scale_x(node: scenenodeObj, factor: number)
+
+

Sets the node scale X factor

+

set_scale_y

+
function ncine.scenenode.set_scale_y(node: scenenodeObj, factor: number)
+
+

Sets the node scale Y factor

+

set_size

+
function ncine.base_sprite.set_size(sprite: basespriteObj, width: number, height: number)
+
+

Sets the sprite size

+

set_texrect

+
function ncine.base_sprite.set_texrect(sprite: basespriteObj, rect: ncine.rect)
+
+

Sets the texture source rectangle for blitting

+

set_texture

+
function ncine.base_sprite.set_texture(sprite: basespriteObj, texture?: textureObj)
+
+

Sets the texture object

+

set_vertices

+
function ncine.mesh_sprite.set_vertices(sprite: meshspriteObj, source_sprite: meshspriteObj)
+
+

Sets the vertices data to the data used by another sprite

+

set_visit_order_state

+
function ncine.scenenode.set_visit_order_state(node: scenenodeObj, state: ncine.visit_order_state)
+
+

Sets the visit order state for the specified node

+

swap_children

+
function ncine.scenenode.swap_children(parent: scenenodeObj, firstIndex: integer, secondIndex: integer)
+  -> boolean
+
+

Swaps two children at the specified indices

+

@return — true if the two nodes have been swapped

+

swap_node_back

+
function ncine.scenenode.swap_node_back(node: scenenodeObj)
+  -> boolean
+
+

Brings this node one node back in the parent's list of children

+

@return — true if the node has been brought one position back

+

swap_node_forward

+
function ncine.scenenode.swap_node_forward(node: scenenodeObj)
+  -> boolean
+
+

Brings this node one node forward in the parent's list of children

+

@return — true if the node has been brought one position forward

+

unlink_child

+
function ncine.scenenode.unlink_child(parent: scenenodeObj, node: scenenodeObj)
+  -> boolean
+
+

Unlinks a child node from the specified parent

+

The children of the unlinked node will be reparented with the grandparent node

+

@return — true if the node has been unlinked

+
+

ncine.mesh_sprite.are_unique_indices

+
function ncine.mesh_sprite.are_unique_indices(sprite: meshspriteObj)
+  -> boolean
+
+
function ncine.mesh_sprite.are_unique_indices(sprite: meshspriteObj)
+  -> boolean
+
+
+

ncine.mesh_sprite.are_unique_vertices

+
function ncine.mesh_sprite.are_unique_vertices(sprite: meshspriteObj)
+  -> boolean
+
+
function ncine.mesh_sprite.are_unique_vertices(sprite: meshspriteObj)
+  -> boolean
+
+
+

ncine.mesh_sprite.clone

+
function ncine.mesh_sprite.clone(sprite: meshspriteObj)
+  -> meshspriteObj
+
+
function ncine.mesh_sprite.clone(sprite: meshspriteObj)
+  -> meshspriteObj
+
+
+

ncine.mesh_sprite.copy_indices

+
function ncine.mesh_sprite.copy_indices(sprite: meshspriteObj, indices: integer[])
+
+
function ncine.mesh_sprite.copy_indices(sprite: meshspriteObj, indices: integer[])
+
+
+

ncine.mesh_sprite.copy_vertices

+
function ncine.mesh_sprite.copy_vertices(sprite: meshspriteObj, vertices: mesh_sprite_vertex[])
+
+
function ncine.mesh_sprite.copy_vertices(sprite: meshspriteObj, vertices: mesh_sprite_vertex_notexture[])
+
+
function ncine.mesh_sprite.copy_vertices(sprite: meshspriteObj, vertices: mesh_sprite_vertex[])
+
+
function ncine.mesh_sprite.copy_vertices(sprite: meshspriteObj, vertices: mesh_sprite_vertex_notexture[])
+
+
+

ncine.mesh_sprite.create_vertices_from_texels

+
function ncine.mesh_sprite.create_vertices_from_texels(sprite: meshspriteObj, texels: ncine.vec2[], texture_cut_mode: ncine.texture_cut_mode)
+
+
function ncine.mesh_sprite.create_vertices_from_texels(sprite: meshspriteObj, texels: ncine.vec2[], texture_cut_mode: ncine.texture_cut_mode)
+
+
+

ncine.mesh_sprite.delete

+
function ncine.mesh_sprite.delete(sprite: meshspriteObj)
+
+
function ncine.mesh_sprite.delete(sprite: meshspriteObj)
+
+
+

ncine.mesh_sprite.emplace_indices

+
function ncine.mesh_sprite.emplace_indices(sprite: meshspriteObj, indices: integer[])
+
+
function ncine.mesh_sprite.emplace_indices(sprite: meshspriteObj, indices: integer[])
+
+
+

ncine.mesh_sprite.emplace_vertices

+
function ncine.mesh_sprite.emplace_vertices(sprite: meshspriteObj, vertices: number[])
+
+
function ncine.mesh_sprite.emplace_vertices(sprite: meshspriteObj, vertices: number[])
+
+
+

ncine.mesh_sprite.get_bytes_per_vertex

+
function ncine.mesh_sprite.get_bytes_per_vertex(sprite: meshspriteObj)
+  -> integer
+
+
function ncine.mesh_sprite.get_bytes_per_vertex(sprite: meshspriteObj)
+  -> integer
+
+
+

ncine.mesh_sprite.get_indices

+
function ncine.mesh_sprite.get_indices(sprite: meshspriteObj)
+  -> integer[]
+
+
function ncine.mesh_sprite.get_indices(sprite: meshspriteObj)
+  -> integer[]
+
+
+

ncine.mesh_sprite.get_vertices

+
function ncine.mesh_sprite.get_vertices(sprite: meshspriteObj)
+  -> number[]
+
+
function ncine.mesh_sprite.get_vertices(sprite: meshspriteObj)
+  -> number[]
+
+
+

ncine.mesh_sprite.new

+
function ncine.mesh_sprite.new(parent?: scenenodeObj, texture?: textureObj, x: number, y: number)
+  -> meshspriteObj
+
+
function ncine.mesh_sprite.new(parent?: scenenodeObj, texture?: textureObj, pos: ncine.vec2)
+  -> meshspriteObj
+
+
function ncine.mesh_sprite.new(parent?: scenenodeObj, texture?: textureObj, x: number, y: number)
+  -> meshspriteObj
+
+
function ncine.mesh_sprite.new(parent?: scenenodeObj, texture?: textureObj, pos: ncine.vec2)
+  -> meshspriteObj
+
+
+

ncine.mesh_sprite.num_bytes

+
function ncine.mesh_sprite.num_bytes(sprite: meshspriteObj)
+  -> integer
+
+
function ncine.mesh_sprite.num_bytes(sprite: meshspriteObj)
+  -> integer
+
+
+

ncine.mesh_sprite.num_indices

+
function ncine.mesh_sprite.num_indices(sprite: meshspriteObj)
+  -> integer
+
+
function ncine.mesh_sprite.num_indices(sprite: meshspriteObj)
+  -> integer
+
+
+

ncine.mesh_sprite.num_vertices

+
function ncine.mesh_sprite.num_vertices(sprite: meshspriteObj)
+  -> integer
+
+
function ncine.mesh_sprite.num_vertices(sprite: meshspriteObj)
+  -> integer
+
+
+

ncine.mesh_sprite.set_indices

+
function ncine.mesh_sprite.set_indices(sprite: meshspriteObj, source_sprite: meshspriteObj)
+
+
function ncine.mesh_sprite.set_indices(sprite: meshspriteObj, source_sprite: meshspriteObj)
+
+
+

ncine.mesh_sprite.set_vertices

+
function ncine.mesh_sprite.set_vertices(sprite: meshspriteObj, source_sprite: meshspriteObj)
+
+
function ncine.mesh_sprite.set_vertices(sprite: meshspriteObj, source_sprite: meshspriteObj)
+
+
+

ncine.mouse_button

+
enum ncine.mouse_button
+
+
enum ncine.mouse_button
+
+
+

ncine.mouse_cursor_mode

+
enum ncine.mouse_cursor_mode
+
+
enum ncine.mouse_cursor_mode
+
+
+

ncine.on_acceleration

+
function ncine.on_acceleration(event: accelerometer_event)
+
+
function ncine.on_acceleration(event: accelerometer_event)
+
+
+

ncine.on_change_scaling_factor

+
function ncine.on_change_scaling_factor(factor: number)
+
+
function ncine.on_change_scaling_factor(factor: number)
+
+
+

ncine.on_draw_viewport

+
function ncine.on_draw_viewport(viewport: viewportObj)
+
+
function ncine.on_draw_viewport(viewport: viewportObj)
+
+
+

ncine.on_frame_end

+
function ncine.on_frame_end()
+
+
function ncine.on_frame_end()
+
+
+

ncine.on_frame_start

+
function ncine.on_frame_start()
+
+
function ncine.on_frame_start()
+
+
+

ncine.on_init

+
function ncine.on_init()
+
+
function ncine.on_init()
+
+
+

ncine.on_joy_axis_moved

+
function ncine.on_joy_axis_moved(event: joy_axis_event)
+
+
function ncine.on_joy_axis_moved(event: joy_axis_event)
+
+
+

ncine.on_joy_button_pressed

+
function ncine.on_joy_button_pressed(event: joy_button_event)
+
+
function ncine.on_joy_button_pressed(event: joy_button_event)
+
+
+

ncine.on_joy_button_released

+
function ncine.on_joy_button_released(event: joy_button_event)
+
+
function ncine.on_joy_button_released(event: joy_button_event)
+
+
+

ncine.on_joy_connected

+
function ncine.on_joy_connected(event: joy_connection_event)
+
+
function ncine.on_joy_connected(event: joy_connection_event)
+
+
+

ncine.on_joy_disconnected

+
function ncine.on_joy_disconnected(event: joy_connection_event)
+
+
function ncine.on_joy_disconnected(event: joy_connection_event)
+
+
+

ncine.on_joy_hat_moved

+
function ncine.on_joy_hat_moved(event: joy_hat_event)
+
+
function ncine.on_joy_hat_moved(event: joy_hat_event)
+
+
+

ncine.on_joymapped_axis_moved

+
function ncine.on_joymapped_axis_moved(event: joymapped_axis_event)
+
+
function ncine.on_joymapped_axis_moved(event: joymapped_axis_event)
+
+
+

ncine.on_joymapped_button_pressed

+
function ncine.on_joymapped_button_pressed(event: joymapped_button_event)
+
+
function ncine.on_joymapped_button_pressed(event: joymapped_button_event)
+
+
+

ncine.on_joymapped_button_released

+
function ncine.on_joymapped_button_released(event: joymapped_button_event)
+
+
function ncine.on_joymapped_button_released(event: joymapped_button_event)
+
+
+

ncine.on_key_pressed

+
function ncine.on_key_pressed(event: keyboard_event)
+
+
function ncine.on_key_pressed(event: keyboard_event)
+
+
+

ncine.on_key_released

+
function ncine.on_key_released(event: keyboard_event)
+
+
function ncine.on_key_released(event: keyboard_event)
+
+
+

ncine.on_mouse_button_pressed

+
function ncine.on_mouse_button_pressed(event: mouse_event)
+
+
function ncine.on_mouse_button_pressed(event: mouse_event)
+
+
+

ncine.on_mouse_button_released

+
function ncine.on_mouse_button_released(event: mouse_event)
+
+
function ncine.on_mouse_button_released(event: mouse_event)
+
+
+

ncine.on_mouse_moved

+
function ncine.on_mouse_moved(event: mouse_state)
+
+
function ncine.on_mouse_moved(event: mouse_state)
+
+
+

ncine.on_pointer_down

+
function ncine.on_pointer_down(event: touch_event)
+
+
function ncine.on_pointer_down(event: touch_event)
+
+
+

ncine.on_pointer_up

+
function ncine.on_pointer_up(event: touch_event)
+
+
function ncine.on_pointer_up(event: touch_event)
+
+
+

ncine.on_post_update

+
function ncine.on_post_update()
+
+
function ncine.on_post_update()
+
+
+

ncine.on_pre_init

+
function ncine.on_pre_init(cfg: ncine.app_configuration)
+
+
function ncine.on_pre_init(cfg: ncine.app_configuration)
+
+
+

ncine.on_quit_request

+
function ncine.on_quit_request()
+  -> boolean
+
+
function ncine.on_quit_request()
+  -> boolean
+
+
+

ncine.on_resize_window

+
function ncine.on_resize_window(width: integer, height: integer)
+
+
function ncine.on_resize_window(width: integer, height: integer)
+
+
+

ncine.on_resume

+
function ncine.on_resume()
+
+
function ncine.on_resume()
+
+
+

ncine.on_scroll_input

+
function ncine.on_scroll_input(event: scroll_event)
+
+
function ncine.on_scroll_input(event: scroll_event)
+
+
+

ncine.on_shutdown

+
function ncine.on_shutdown()
+
+
function ncine.on_shutdown()
+
+
+

ncine.on_suspend

+
function ncine.on_suspend()
+
+
function ncine.on_suspend()
+
+
+

ncine.on_text_input

+
function ncine.on_text_input(event: text_input_event)
+
+
function ncine.on_text_input(event: text_input_event)
+
+
+

ncine.on_touch_down

+
function ncine.on_touch_down(event: touch_event)
+
+
function ncine.on_touch_down(event: touch_event)
+
+
+

ncine.on_touch_move

+
function ncine.on_touch_move(event: touch_event)
+
+
function ncine.on_touch_move(event: touch_event)
+
+
+

ncine.on_touch_up

+
function ncine.on_touch_up(event: touch_event)
+
+
function ncine.on_touch_up(event: touch_event)
+
+
+

ncine.particle_affector

+
ncine.particle_affector
+
+
ncine.particle_affector
+
+
+

ncine.particle_affector

+

add_color_step

+
function ncine.particle_affector.add_color_step(affector: affectorObj, age: number, color: ncine.color)
+
+

Adds a color step (if the affector type is COLOR)

+

add_position_step

+
function ncine.particle_affector.add_position_step(affector: affectorObj, age: number, position: ncine.vec2)
+
+

Adds a position step (if the affector type is POSITION)

+

add_rotation_step

+
function ncine.particle_affector.add_rotation_step(affector: affectorObj, age: number, angle: number)
+
+

Adds a rotation step (if the affector type is ROTATION)

+

add_size_step

+
function ncine.particle_affector.add_size_step(affector: affectorObj, age: number, scale: ncine.vec2)
+
+

Adds a size step (if the affector type is SIZE)

+

add_velocity_step

+
function ncine.particle_affector.add_velocity_step(affector: affectorObj, age: number, velocity: ncine.vec2)
+
+

Adds a velocity step (if the affector type is VELOCITY)

+

clear_steps

+
function ncine.particle_affector.clear_steps(affector: affectorObj)
+
+

Removes all steps

+

get_base_scale

+
function ncine.particle_affector.get_base_scale(affector: affectorObj)
+  -> (ncine.vec2)?
+
+

Returns a base scale factor that will be multiplied by all size steps

+

The affector type should be SIZE or the function will return nil.

+

get_color_steps

+
function ncine.particle_affector.get_color_steps(affector: affectorObj)
+  -> affector_color_step[]?
+
+

Returns the color steps as a table (or nil if the affector type is not COLOR)

+

get_position_steps

+
function ncine.particle_affector.get_position_steps(affector: affectorObj)
+  -> affector_position_step[]?
+
+

Returns the position steps as a table (or nil if the affector type is not POSITION)

+

get_rotation_steps

+
function ncine.particle_affector.get_rotation_steps(affector: affectorObj)
+  -> affector_rotation_step[]?
+
+

Returns the rotation steps as a table (or nil if the affector type is not ROTATION)

+

get_size_steps

+
function ncine.particle_affector.get_size_steps(affector: affectorObj)
+  -> affector_size_step_vector[]?
+
+

Returns the size steps as a table (or nil if the affector type is not SIZE)

+

get_type

+
function ncine.particle_affector.get_type(affector: affectorObj)
+  -> ncine.affector_type
+
+

Returns the affector type

+

get_velocity_steps

+
function ncine.particle_affector.get_velocity_steps(affector: affectorObj)
+  -> affector_velocity_step[]?
+
+

Returns the velocity steps as a table (or nil if the affector type is not VELOCITY)

+

is_enabled

+
function ncine.particle_affector.is_enabled(affector: affectorObj)
+  -> boolean
+
+

Returns true if the affector is enabled

+

num_steps

+
function ncine.particle_affector.num_steps(affector: affectorObj)
+  -> integer
+
+

Returns the number of steps

+

remove_steps

+
function ncine.particle_affector.remove_steps(affector: affectorObj, index: integer)
+
+

Removes the step at the specified position index

+

set_base_scale

+
function ncine.particle_affector.set_base_scale(affector: affectorObj, base_scale: ncine.vec2)
+
+

Sets a base scale factor that will be multiplied by all size steps

+

The affector type should be SIZE or the function will do nothing.

+

set_enabled

+
function ncine.particle_affector.set_enabled(affector: affectorObj, enabled: boolean)
+
+

Enables or disables the affector

+
+

ncine.particle_affector.add_color_step

+
function ncine.particle_affector.add_color_step(affector: affectorObj, age: number, color: ncine.color)
+
+
function ncine.particle_affector.add_color_step(affector: affectorObj, age: number, red: number, green: number, blue: number, alpha: number)
+
+
function ncine.particle_affector.add_color_step(affector: affectorObj, age: number, color: ncine.color)
+
+
function ncine.particle_affector.add_color_step(affector: affectorObj, age: number, red: number, green: number, blue: number, alpha: number)
+
+
+

ncine.particle_affector.add_position_step

+
function ncine.particle_affector.add_position_step(affector: affectorObj, age: number, position: ncine.vec2)
+
+
function ncine.particle_affector.add_position_step(affector: affectorObj, age: number, position_x: number, position_y: number)
+
+
function ncine.particle_affector.add_position_step(affector: affectorObj, age: number, position: ncine.vec2)
+
+
function ncine.particle_affector.add_position_step(affector: affectorObj, age: number, position_x: number, position_y: number)
+
+
+

ncine.particle_affector.add_rotation_step

+
function ncine.particle_affector.add_rotation_step(affector: affectorObj, age: number, angle: number)
+
+
function ncine.particle_affector.add_rotation_step(affector: affectorObj, age: number, angle: number)
+
+
+

ncine.particle_affector.add_size_step

+
function ncine.particle_affector.add_size_step(affector: affectorObj, age: number, scale: ncine.vec2)
+
+
function ncine.particle_affector.add_size_step(affector: affectorObj, age: number, scale_x: number, scale_y: number)
+
+
function ncine.particle_affector.add_size_step(affector: affectorObj, age: number, scale: ncine.vec2)
+
+
function ncine.particle_affector.add_size_step(affector: affectorObj, age: number, scale_x: number, scale_y: number)
+
+
+

ncine.particle_affector.add_velocity_step

+
function ncine.particle_affector.add_velocity_step(affector: affectorObj, age: number, velocity: ncine.vec2)
+
+
function ncine.particle_affector.add_velocity_step(affector: affectorObj, age: number, velocity_x: number, velocity_y: number)
+
+
function ncine.particle_affector.add_velocity_step(affector: affectorObj, age: number, velocity: ncine.vec2)
+
+
function ncine.particle_affector.add_velocity_step(affector: affectorObj, age: number, velocity_x: number, velocity_y: number)
+
+
+

ncine.particle_affector.clear_steps

+
function ncine.particle_affector.clear_steps(affector: affectorObj)
+
+
function ncine.particle_affector.clear_steps(affector: affectorObj)
+
+
+

ncine.particle_affector.get_base_scale

+
function ncine.particle_affector.get_base_scale(affector: affectorObj)
+  -> (ncine.vec2)?
+
+
function ncine.particle_affector.get_base_scale(affector: affectorObj)
+  -> (ncine.vec2)?
+
+
+

ncine.particle_affector.get_color_steps

+
function ncine.particle_affector.get_color_steps(affector: affectorObj)
+  -> affector_color_step[]?
+
+
function ncine.particle_affector.get_color_steps(affector: affectorObj)
+  -> affector_color_step[]?
+
+
+

ncine.particle_affector.get_position_steps

+
function ncine.particle_affector.get_position_steps(affector: affectorObj)
+  -> affector_position_step[]?
+
+
function ncine.particle_affector.get_position_steps(affector: affectorObj)
+  -> affector_position_step[]?
+
+
+

ncine.particle_affector.get_rotation_steps

+
function ncine.particle_affector.get_rotation_steps(affector: affectorObj)
+  -> affector_rotation_step[]?
+
+
function ncine.particle_affector.get_rotation_steps(affector: affectorObj)
+  -> affector_rotation_step[]?
+
+
+

ncine.particle_affector.get_size_steps

+
function ncine.particle_affector.get_size_steps(affector: affectorObj)
+  -> affector_size_step_vector[]?
+
+
function ncine.particle_affector.get_size_steps(affector: affectorObj)
+  -> affector_size_step_vector[]?
+
+
+

ncine.particle_affector.get_type

+
function ncine.particle_affector.get_type(affector: affectorObj)
+  -> ncine.affector_type
+
+
function ncine.particle_affector.get_type(affector: affectorObj)
+  -> ncine.affector_type
+
+
+

ncine.particle_affector.get_velocity_steps

+
function ncine.particle_affector.get_velocity_steps(affector: affectorObj)
+  -> affector_velocity_step[]?
+
+
function ncine.particle_affector.get_velocity_steps(affector: affectorObj)
+  -> affector_velocity_step[]?
+
+
+

ncine.particle_affector.is_enabled

+
function ncine.particle_affector.is_enabled(affector: affectorObj)
+  -> boolean
+
+
function ncine.particle_affector.is_enabled(affector: affectorObj)
+  -> boolean
+
+
+

ncine.particle_affector.num_steps

+
function ncine.particle_affector.num_steps(affector: affectorObj)
+  -> integer
+
+
function ncine.particle_affector.num_steps(affector: affectorObj)
+  -> integer
+
+
+

ncine.particle_affector.remove_steps

+
function ncine.particle_affector.remove_steps(affector: affectorObj, index: integer)
+
+
function ncine.particle_affector.remove_steps(affector: affectorObj, index: integer)
+
+
+

ncine.particle_affector.set_base_scale

+
function ncine.particle_affector.set_base_scale(affector: affectorObj, base_scale: ncine.vec2)
+
+
function ncine.particle_affector.set_base_scale(affector: affectorObj, base_scale: ncine.vec2)
+
+
+

ncine.particle_affector.set_enabled

+
function ncine.particle_affector.set_enabled(affector: affectorObj, enabled: boolean)
+
+
function ncine.particle_affector.set_enabled(affector: affectorObj, enabled: boolean)
+
+
+

ncine.particle_system

+
ncine.particle_system
+
+
ncine.particle_system
+
+
+

ncine.particle_system

+

add_child

+
function ncine.scenenode.add_child(parent: scenenodeObj, node: scenenodeObj)
+  -> boolean
+
+

Adds a child node to the specified parent

+

@return — true if the node has been added

+

add_color_affector

+
function ncine.particle_system.add_color_affector(particle_system: particlesystemObj, color_steps: affector_color_step[])
+
+

Adds a color particle affector

+

add_position_affector

+
function ncine.particle_system.add_position_affector(particle_system: particlesystemObj, position_steps: affector_position_step[])
+
+

Adds a position particle affector

+

add_rotation_affector

+
function ncine.particle_system.add_rotation_affector(particle_system: particlesystemObj, rotation_steps: affector_rotation_step[])
+
+

Adds a rotation particle affector

+

add_size_affector

+
function ncine.particle_system.add_size_affector(particle_system: particlesystemObj, base_scale: number, size_steps: affector_size_step_factor[])
+
+

Adds a size particle affector

+

add_velocity_affector

+
function ncine.particle_system.add_velocity_affector(particle_system: particlesystemObj, velocity_steps: affector_velocity_step[])
+
+

Adds a velocity particle affector

+

clear_affectors

+
function ncine.particle_system.clear_affectors(particle_system: particlesystemObj)
+
+

Deletes all particle affectors

+

clone

+
function ncine.particle_system.clone(particle_system: particlesystemObj)
+  -> particlesystemObj
+
+

Constructs a new particle system object as a clone of the specified one

+

Don't forget to call delete when you are done with it!

+

@param particle_system — The particle system object to be cloned

+

@return — The cloned particle system object

+

delete

+
function ncine.particle_system.delete(particle_system: particlesystemObj)
+
+

Destroys a particle system object and releases its memory

+

@param particle_system — The particle system object to be destroyed

+

emit_particles

+
function ncine.particle_system.emit_particles(particle_system: particlesystemObj, initializer: particle_initializer)
+
+

Emits particles with the specified initialization parameters

+

get_abs_anchor_point

+
function ncine.scenenode.get_abs_anchor_point(node: scenenodeObj)
+  -> ncine.vec2
+
+

Returns the absolute transformation anchor point in pixels

+

get_affector

+
function ncine.particle_system.get_affector(particle_system: particlesystemObj, index: integer)
+  -> affectorObj?
+
+

Returns the affector at the specified index

+

get_affectors_enabled

+
function ncine.particle_system.get_affectors_enabled(particle_system: particlesystemObj)
+  -> boolean
+
+

Returns true if affectors are modifying particles properties

+

get_alpha

+
function ncine.scenenode.get_alpha(node: scenenodeObj)
+  -> number
+
+

Returns the node alpha color component

+

get_child

+
function ncine.scenenode.get_child(node: scenenodeObj, index: integer)
+  -> scenenodeObj?
+
+

Returns the n-th child

+

get_child_order_index

+
function ncine.scenenode.get_child_order_index(node: scenenodeObj)
+  -> integer
+
+

Returns the order index of this node among its siblings

+

@return — The order index or zero if the node has no parent

+

get_children

+
function ncine.scenenode.get_children(node: scenenodeObj)
+  -> scenenodeObj[]
+
+

Returns the array of children

+

get_color

+
function ncine.scenenode.get_color(node: scenenodeObj)
+  -> ncine.color
+
+

Returns the node color

+

get_in_local_space

+
function ncine.particle_system.get_in_local_space(particle_system: particlesystemObj)
+  -> boolean
+
+

Returns true if particles are positioned using the particle system as their origin

+

get_last_frame_updated

+
function ncine.scenenode.get_last_frame_updated(node: scenenodeObj)
+  -> integer
+
+

Returns the last frame in which any of the viewports have updated this node

+

get_layer

+
function ncine.scenenode.get_layer(node: scenenodeObj)
+  -> integer
+
+

Returns the node rendering layer

+

get_parent

+
function ncine.scenenode.get_parent(node: scenenodeObj)
+  -> scenenodeObj?
+
+

Returns the parent node, if there is any

+

get_particles_update_enabled

+
function ncine.particle_system.get_particles_update_enabled(particle_system: particlesystemObj)
+  -> boolean
+
+

Returns true if particles are updating

+

get_position

+
function ncine.scenenode.get_position(node: scenenodeObj)
+  -> ncine.vec2
+
+

Returns the node position relative to its parent

+

get_rotation

+
function ncine.scenenode.get_rotation(node: scenenodeObj)
+  -> number
+
+

Returns the node rotation in degress

+

get_scale

+
function ncine.scenenode.get_scale(node: scenenodeObj)
+  -> ncine.vec2
+
+

Returns the node scale factors

+

get_visit_order_index

+
function ncine.scenenode.get_visit_order_index(node: scenenodeObj)
+  -> integer
+
+

Returns the visit drawing order of the node

+

get_visit_order_state

+
function ncine.scenenode.get_visit_order_state(node: scenenodeObj)
+  -> ncine.visit_order_state
+
+

Returns the visit order state for the specified node

+

is_enabled

+
function ncine.scenenode.is_enabled(node: scenenodeObj)
+  -> boolean
+
+

Returns true if the node is both updating and drawing

+

kill_particles

+
function ncine.particle_system.kill_particles(particle_system: particlesystemObj)
+
+

Kills all alive particles

+

new

+
function ncine.particle_system.new(parent?: scenenodeObj, count: integer, texture?: textureObj, tex_rect: ncine.rect)
+  -> particlesystemObj
+
+

Constructs a particle system

+

Don't forget to call delete when you are done with it!

+

@param parent — The parent scenenode

+

@param count — Maximum amount of particles

+

@return — A new particle system object

+

num_affectors

+
function ncine.particle_system.num_affectors(particle_system: particlesystemObj)
+  -> integer
+
+

Returns the number of affectors

+

num_alive_particles

+
function ncine.particle_system.num_alive_particles(particle_system: particlesystemObj)
+  -> integer
+
+

Returns the number of particles currently alive

+

num_children

+
function ncine.scenenode.num_children(node: scenenodeObj)
+  -> integer
+
+

Returns the number of children

+

num_particles

+
function ncine.particle_system.num_particles(particle_system: particlesystemObj)
+  -> integer
+
+

Returns the total number of particles in the system

+

remove_affector

+
function ncine.particle_system.remove_affector(particle_system: particlesystemObj, index: integer)
+
+

Removes the affector at the specified index

+

remove_all_children

+
function ncine.scenenode.remove_all_children(parent: scenenodeObj, index: any)
+  -> boolean
+
+

Removes all children from the specified parent

+

@return — true if there were at least one node to remove

+

remove_child

+
function ncine.scenenode.remove_child(parent: scenenodeObj, node: scenenodeObj)
+  -> boolean
+
+

Removes a child node from the specified parent

+

@return — true if the node has been removed

+

remove_child_at

+
function ncine.scenenode.remove_child_at(parent: scenenodeObj, index: integer)
+  -> boolean
+
+

Removes a child node at the specified index from the specified parent

+

@return — true if the node has been removed

+

set_abs_anchor_point

+
function ncine.scenenode.set_abs_anchor_point(node: scenenodeObj, pos: ncine.vec2)
+
+

Sets the absolute transformation anchor point in pixels

+

set_affectors_enabled

+
function ncine.particle_system.set_affectors_enabled(particle_system: particlesystemObj, enabled: boolean)
+
+

Enables or disables affectors modifying particles properties

+

set_alpha

+
function ncine.scenenode.set_alpha(node: scenenodeObj, alpha: number)
+
+

Sets the node alpha color component

+

set_anchor_point

+
function ncine.particle_system.set_anchor_point(particle_system: particlesystemObj, point: ncine.vec2)
+
+

Sets the transformation anchor point for every particle in the system with a ncine.vec2

+

set_blending_factors

+
function ncine.particle_system.set_blending_factors(particle_system: particlesystemObj, src_factor: ncine.blending_factor, dest_factor: ncine.blending_factor)
+
+

Sets the source and destination blending factors for every particle in the system

+

set_blending_preset

+
function ncine.particle_system.set_blending_preset(particle_system: particlesystemObj, blending_preset: ncine.blending_preset)
+
+

Sets the blending factors preset for every particle in the system

+

set_color

+
function ncine.scenenode.set_color(node: scenenodeObj, color: ncine.color)
+
+

Sets the node color

+

set_enabled

+
function ncine.scenenode.set_enabled(node: scenenodeObj, newValue: boolean)
+
+

Enables or disables both node updating and drawing

+

set_flipped_x

+
function ncine.particle_system.set_flipped_x(particle_system: particlesystemObj, flipped_x: boolean)
+
+

Flips the texture rect horizontally for every particle in the system

+

set_flipped_y

+
function ncine.particle_system.set_flipped_y(particle_system: particlesystemObj, flipped_y: boolean)
+
+

Flips the texture rect vertically for every particle in the system

+

set_in_local_space

+
function ncine.particle_system.set_in_local_space(particle_system: particlesystemObj, local_space: boolean)
+
+

Sets or clears the local space flag, to move particles around the particle system or freely

+

set_layer

+
function ncine.particle_system.set_layer(particle_system: particlesystemObj, layer: integer)
+
+

Sets the rendering layer for every particle in the system

+

set_parent

+
function ncine.scenenode.set_parent(node: scenenodeObj, parent?: scenenodeObj)
+  -> boolean
+
+

Sets the parent node

+

@return — true if the parent has been set

+

set_particles_update_enabled

+
function ncine.particle_system.set_particles_update_enabled(particle_system: particlesystemObj, enabled: boolean)
+
+

Enables or disables particles updating

+

set_position

+
function ncine.scenenode.set_position(node: scenenodeObj, pos: ncine.vec2)
+
+

Sets a new position for the node

+

set_rotation

+
function ncine.scenenode.set_rotation(node: scenenodeObj, rot: number)
+
+

Sets the node rotation in degrees

+

@param rot — The amount of degrees

+

set_scale

+
function ncine.scenenode.set_scale(node: scenenodeObj, factor: number)
+
+

Sets both node scale factors to the specified value

+

set_scale_x

+
function ncine.scenenode.set_scale_x(node: scenenodeObj, factor: number)
+
+

Sets the node scale X factor

+

set_scale_y

+
function ncine.scenenode.set_scale_y(node: scenenodeObj, factor: number)
+
+

Sets the node scale Y factor

+

set_texture

+
function ncine.particle_system.set_texture(particle_system: particlesystemObj, texture: textureObj)
+
+

Sets the texture object for every particle in the system

+

set_texture_rect

+
function ncine.particle_system.set_texture_rect(particle_system: particlesystemObj, tex_rect: ncine.rect)
+
+

Sets the texture source rectangle for every particle in the system

+

set_visit_order_state

+
function ncine.scenenode.set_visit_order_state(node: scenenodeObj, state: ncine.visit_order_state)
+
+

Sets the visit order state for the specified node

+

swap_children

+
function ncine.scenenode.swap_children(parent: scenenodeObj, firstIndex: integer, secondIndex: integer)
+  -> boolean
+
+

Swaps two children at the specified indices

+

@return — true if the two nodes have been swapped

+

swap_node_back

+
function ncine.scenenode.swap_node_back(node: scenenodeObj)
+  -> boolean
+
+

Brings this node one node back in the parent's list of children

+

@return — true if the node has been brought one position back

+

swap_node_forward

+
function ncine.scenenode.swap_node_forward(node: scenenodeObj)
+  -> boolean
+
+

Brings this node one node forward in the parent's list of children

+

@return — true if the node has been brought one position forward

+

unlink_child

+
function ncine.scenenode.unlink_child(parent: scenenodeObj, node: scenenodeObj)
+  -> boolean
+
+

Unlinks a child node from the specified parent

+

The children of the unlinked node will be reparented with the grandparent node

+

@return — true if the node has been unlinked

+
+

ncine.particle_system.add_color_affector

+
function ncine.particle_system.add_color_affector(particle_system: particlesystemObj, color_steps: affector_color_step[])
+
+
function ncine.particle_system.add_color_affector(particle_system: particlesystemObj, color_steps: affector_color_step[])
+
+
+

ncine.particle_system.add_position_affector

+
function ncine.particle_system.add_position_affector(particle_system: particlesystemObj, position_steps: affector_position_step[])
+
+
function ncine.particle_system.add_position_affector(particle_system: particlesystemObj, position_steps: affector_position_step[])
+
+
+

ncine.particle_system.add_rotation_affector

+
function ncine.particle_system.add_rotation_affector(particle_system: particlesystemObj, rotation_steps: affector_rotation_step[])
+
+
function ncine.particle_system.add_rotation_affector(particle_system: particlesystemObj, rotation_steps: affector_rotation_step[])
+
+
+

ncine.particle_system.add_size_affector

+
function ncine.particle_system.add_size_affector(particle_system: particlesystemObj, base_scale: number, size_steps: affector_size_step_factor[])
+
+
function ncine.particle_system.add_size_affector(particle_system: particlesystemObj, base_scale: number, size_steps: affector_size_step_vector[])
+
+
function ncine.particle_system.add_size_affector(particle_system: particlesystemObj, base_scale: number, size_steps: affector_size_step_factor[])
+
+
function ncine.particle_system.add_size_affector(particle_system: particlesystemObj, base_scale: number, size_steps: affector_size_step_vector[])
+
+
+

ncine.particle_system.add_velocity_affector

+
function ncine.particle_system.add_velocity_affector(particle_system: particlesystemObj, velocity_steps: affector_velocity_step[])
+
+
function ncine.particle_system.add_velocity_affector(particle_system: particlesystemObj, velocity_steps: affector_velocity_step[])
+
+
+

ncine.particle_system.clear_affectors

+
function ncine.particle_system.clear_affectors(particle_system: particlesystemObj)
+
+
function ncine.particle_system.clear_affectors(particle_system: particlesystemObj)
+
+
+

ncine.particle_system.clone

+
function ncine.particle_system.clone(particle_system: particlesystemObj)
+  -> particlesystemObj
+
+
function ncine.particle_system.clone(particle_system: particlesystemObj)
+  -> particlesystemObj
+
+
+

ncine.particle_system.delete

+
function ncine.particle_system.delete(particle_system: particlesystemObj)
+
+
function ncine.particle_system.delete(particle_system: particlesystemObj)
+
+
+

ncine.particle_system.emit_particles

+
function ncine.particle_system.emit_particles(particle_system: particlesystemObj, initializer: particle_initializer)
+
+
function ncine.particle_system.emit_particles(particle_system: particlesystemObj, initializer: particle_initializer)
+
+
+

ncine.particle_system.get_affector

+
function ncine.particle_system.get_affector(particle_system: particlesystemObj, index: integer)
+  -> affectorObj?
+
+
function ncine.particle_system.get_affector(particle_system: particlesystemObj, index: integer)
+  -> affectorObj?
+
+
+

ncine.particle_system.get_affectors_enabled

+
function ncine.particle_system.get_affectors_enabled(particle_system: particlesystemObj)
+  -> boolean
+
+
function ncine.particle_system.get_affectors_enabled(particle_system: particlesystemObj)
+  -> boolean
+
+
+

ncine.particle_system.get_in_local_space

+
function ncine.particle_system.get_in_local_space(particle_system: particlesystemObj)
+  -> boolean
+
+
function ncine.particle_system.get_in_local_space(particle_system: particlesystemObj)
+  -> boolean
+
+
+

ncine.particle_system.get_particles_update_enabled

+
function ncine.particle_system.get_particles_update_enabled(particle_system: particlesystemObj)
+  -> boolean
+
+
function ncine.particle_system.get_particles_update_enabled(particle_system: particlesystemObj)
+  -> boolean
+
+
+

ncine.particle_system.kill_particles

+
function ncine.particle_system.kill_particles(particle_system: particlesystemObj)
+
+
function ncine.particle_system.kill_particles(particle_system: particlesystemObj)
+
+
+

ncine.particle_system.new

+
function ncine.particle_system.new(parent?: scenenodeObj, count: integer, texture?: textureObj, tex_rect: ncine.rect)
+  -> particlesystemObj
+
+
function ncine.particle_system.new(parent?: scenenodeObj, count: integer, texture?: textureObj, tex_rect: ncine.rect)
+  -> particlesystemObj
+
+
+

ncine.particle_system.num_affectors

+
function ncine.particle_system.num_affectors(particle_system: particlesystemObj)
+  -> integer
+
+
function ncine.particle_system.num_affectors(particle_system: particlesystemObj)
+  -> integer
+
+
+

ncine.particle_system.num_alive_particles

+
function ncine.particle_system.num_alive_particles(particle_system: particlesystemObj)
+  -> integer
+
+
function ncine.particle_system.num_alive_particles(particle_system: particlesystemObj)
+  -> integer
+
+
+

ncine.particle_system.num_particles

+
function ncine.particle_system.num_particles(particle_system: particlesystemObj)
+  -> integer
+
+
function ncine.particle_system.num_particles(particle_system: particlesystemObj)
+  -> integer
+
+
+

ncine.particle_system.remove_affector

+
function ncine.particle_system.remove_affector(particle_system: particlesystemObj, index: integer)
+
+
function ncine.particle_system.remove_affector(particle_system: particlesystemObj, index: integer)
+
+
+

ncine.particle_system.set_affectors_enabled

+
function ncine.particle_system.set_affectors_enabled(particle_system: particlesystemObj, enabled: boolean)
+
+
function ncine.particle_system.set_affectors_enabled(particle_system: particlesystemObj, enabled: boolean)
+
+
+

ncine.particle_system.set_anchor_point

+
function ncine.particle_system.set_anchor_point(particle_system: particlesystemObj, point: ncine.vec2)
+
+
function ncine.particle_system.set_anchor_point(particle_system: particlesystemObj, point_x: number, point_y: number)
+
+
function ncine.particle_system.set_anchor_point(particle_system: particlesystemObj, point: ncine.vec2)
+
+
function ncine.particle_system.set_anchor_point(particle_system: particlesystemObj, point_x: number, point_y: number)
+
+
+

ncine.particle_system.set_blending_factors

+
function ncine.particle_system.set_blending_factors(particle_system: particlesystemObj, src_factor: ncine.blending_factor, dest_factor: ncine.blending_factor)
+
+
function ncine.particle_system.set_blending_factors(particle_system: particlesystemObj, src_factor: ncine.blending_factor, dest_factor: ncine.blending_factor)
+
+
+

ncine.particle_system.set_blending_preset

+
function ncine.particle_system.set_blending_preset(particle_system: particlesystemObj, blending_preset: ncine.blending_preset)
+
+
function ncine.particle_system.set_blending_preset(particle_system: particlesystemObj, blending_preset: ncine.blending_preset)
+
+
+

ncine.particle_system.set_flipped_x

+
function ncine.particle_system.set_flipped_x(particle_system: particlesystemObj, flipped_x: boolean)
+
+
function ncine.particle_system.set_flipped_x(particle_system: particlesystemObj, flipped_x: boolean)
+
+
+

ncine.particle_system.set_flipped_y

+
function ncine.particle_system.set_flipped_y(particle_system: particlesystemObj, flipped_y: boolean)
+
+
function ncine.particle_system.set_flipped_y(particle_system: particlesystemObj, flipped_y: boolean)
+
+
+

ncine.particle_system.set_in_local_space

+
function ncine.particle_system.set_in_local_space(particle_system: particlesystemObj, local_space: boolean)
+
+
function ncine.particle_system.set_in_local_space(particle_system: particlesystemObj, local_space: boolean)
+
+
+

ncine.particle_system.set_layer

+
function ncine.particle_system.set_layer(particle_system: particlesystemObj, layer: integer)
+
+
function ncine.particle_system.set_layer(particle_system: particlesystemObj, layer: integer)
+
+
+

ncine.particle_system.set_particles_update_enabled

+
function ncine.particle_system.set_particles_update_enabled(particle_system: particlesystemObj, enabled: boolean)
+
+
function ncine.particle_system.set_particles_update_enabled(particle_system: particlesystemObj, enabled: boolean)
+
+
+

ncine.particle_system.set_texture

+
function ncine.particle_system.set_texture(particle_system: particlesystemObj, texture: textureObj)
+
+
function ncine.particle_system.set_texture(particle_system: particlesystemObj, texture: textureObj)
+
+
+

ncine.particle_system.set_texture_rect

+
function ncine.particle_system.set_texture_rect(particle_system: particlesystemObj, tex_rect: ncine.rect)
+
+
function ncine.particle_system.set_texture_rect(particle_system: particlesystemObj, tex_rect: ncine.rect)
+
+
+

ncine.permission

+
enum ncine.permission
+
+
enum ncine.permission
+
+
+

ncine.rect

+

create

+
function ncine.rect.create(x: number, y: number, w: number, h: number)
+  -> ncine.rect
+
+

Creates a rect table from top-left point and size

+

@param x — The top-left X coordinate (left with positive width)

+

@param y — The top-left Y coordinate (top with positive height)

+

@param w — The width

+

@param h — The height

+

create_center_size

+
function ncine.rect.create_center_size(x: number, y: number, w: number, h: number)
+  -> ncine.rect
+
+

Creates a vec2 table from center and size

+

@param x — The center X coordinate

+

@param y — The center Y coordinate

+

@param w — The width

+

@param h — The height

+

create_min_max

+
function ncine.rect.create_min_max(min_x: number, min_y: number, max_x: number, max_y: number)
+  -> ncine.rect
+
+

Creates a vec2 table from its components

+

@param min_x — The minimum X coordinate

+

@param min_y — The minimum Y coordinate

+

@param max_x — The maximum X coordinate

+

@param max_y — The maximum Y coordinate

+

h

+
number
+
+

The height

+

set_min_max

+
function ncine.rect.set_min_max(min_x: number, min_y: number, max_x: number, max_y: number)
+  -> ncine.rect
+
+

Sets rectangle minimum and maximum coordinates

+

w

+
number
+
+

The width

+

x

+
number
+
+

The top-left X coordinate (left with positive width)

+

y

+
number
+
+

The top-left Y coordinate (top with positive height)

+
+

ncine.rect

+
ncine.rect
+
+
ncine.rect
+
+
+

ncine.rect.create

+
function ncine.rect.create(x: number, y: number, w: number, h: number)
+  -> ncine.rect
+
+
function ncine.rect.create(x: number, y: number, w: number, h: number)
+  -> ncine.rect
+
+
+

ncine.rect.create_center_size

+
function ncine.rect.create_center_size(x: number, y: number, w: number, h: number)
+  -> ncine.rect
+
+
function ncine.rect.create_center_size(x: number, y: number, w: number, h: number)
+  -> ncine.rect
+
+
+

ncine.rect.create_min_max

+
function ncine.rect.create_min_max(min_x: number, min_y: number, max_x: number, max_y: number)
+  -> ncine.rect
+
+
function ncine.rect.create_min_max(min_x: number, min_y: number, max_x: number, max_y: number)
+  -> ncine.rect
+
+
+

ncine.rect.set_min_max

+
function ncine.rect.set_min_max(min_x: number, min_y: number, max_x: number, max_y: number)
+  -> ncine.rect
+
+
function ncine.rect.set_min_max(min_x: number, min_y: number, max_x: number, max_y: number)
+  -> ncine.rect
+
+
+

ncine.rect_animation

+

frame_duration

+
number
+
+

Frame duration in seconds

+

loop

+
ncine.loop_mode
+
+

Loop state

+

num_rectangles_to_skip

+
integer?
+
+

Optional field, default is 0

+

padding

+
(ncine.vec2)?
+
+

Optional field, default is { x = 0, y = 0 }

+

rect_size

+
ncine.vec2
+
+

A two component vector

+

rewind

+
ncine.rewind_mode
+
+

Rewind modes

+

source_rect

+
ncine.rect
+
+

A rectangle in 2D

+
+

ncine.rect_animation

+
ncine.rect_animation
+
+
ncine.rect_animation
+
+
+

ncine.rewind_mode

+
enum ncine.rewind_mode
+
+
enum ncine.rewind_mode
+
+
+

ncine.scenenode

+

add_child

+
function ncine.scenenode.add_child(parent: scenenodeObj, node: scenenodeObj)
+  -> boolean
+
+

Adds a child node to the specified parent

+

@return — true if the node has been added

+

get_abs_anchor_point

+
function ncine.scenenode.get_abs_anchor_point(node: scenenodeObj)
+  -> ncine.vec2
+
+

Returns the absolute transformation anchor point in pixels

+

get_alpha

+
function ncine.scenenode.get_alpha(node: scenenodeObj)
+  -> number
+
+

Returns the node alpha color component

+

get_child

+
function ncine.scenenode.get_child(node: scenenodeObj, index: integer)
+  -> scenenodeObj?
+
+

Returns the n-th child

+

get_child_order_index

+
function ncine.scenenode.get_child_order_index(node: scenenodeObj)
+  -> integer
+
+

Returns the order index of this node among its siblings

+

@return — The order index or zero if the node has no parent

+

get_children

+
function ncine.scenenode.get_children(node: scenenodeObj)
+  -> scenenodeObj[]
+
+

Returns the array of children

+

get_color

+
function ncine.scenenode.get_color(node: scenenodeObj)
+  -> ncine.color
+
+

Returns the node color

+

get_last_frame_updated

+
function ncine.scenenode.get_last_frame_updated(node: scenenodeObj)
+  -> integer
+
+

Returns the last frame in which any of the viewports have updated this node

+

get_layer

+
function ncine.scenenode.get_layer(node: scenenodeObj)
+  -> integer
+
+

Returns the node rendering layer

+

get_parent

+
function ncine.scenenode.get_parent(node: scenenodeObj)
+  -> scenenodeObj?
+
+

Returns the parent node, if there is any

+

get_position

+
function ncine.scenenode.get_position(node: scenenodeObj)
+  -> ncine.vec2
+
+

Returns the node position relative to its parent

+

get_rotation

+
function ncine.scenenode.get_rotation(node: scenenodeObj)
+  -> number
+
+

Returns the node rotation in degress

+

get_scale

+
function ncine.scenenode.get_scale(node: scenenodeObj)
+  -> ncine.vec2
+
+

Returns the node scale factors

+

get_visit_order_index

+
function ncine.scenenode.get_visit_order_index(node: scenenodeObj)
+  -> integer
+
+

Returns the visit drawing order of the node

+

get_visit_order_state

+
function ncine.scenenode.get_visit_order_state(node: scenenodeObj)
+  -> ncine.visit_order_state
+
+

Returns the visit order state for the specified node

+

is_enabled

+
function ncine.scenenode.is_enabled(node: scenenodeObj)
+  -> boolean
+
+

Returns true if the node is both updating and drawing

+

num_children

+
function ncine.scenenode.num_children(node: scenenodeObj)
+  -> integer
+
+

Returns the number of children

+

remove_all_children

+
function ncine.scenenode.remove_all_children(parent: scenenodeObj, index: any)
+  -> boolean
+
+

Removes all children from the specified parent

+

@return — true if there were at least one node to remove

+

remove_child

+
function ncine.scenenode.remove_child(parent: scenenodeObj, node: scenenodeObj)
+  -> boolean
+
+

Removes a child node from the specified parent

+

@return — true if the node has been removed

+

remove_child_at

+
function ncine.scenenode.remove_child_at(parent: scenenodeObj, index: integer)
+  -> boolean
+
+

Removes a child node at the specified index from the specified parent

+

@return — true if the node has been removed

+

set_abs_anchor_point

+
function ncine.scenenode.set_abs_anchor_point(node: scenenodeObj, pos: ncine.vec2)
+
+

Sets the absolute transformation anchor point in pixels

+

set_alpha

+
function ncine.scenenode.set_alpha(node: scenenodeObj, alpha: number)
+
+

Sets the node alpha color component

+

set_color

+
function ncine.scenenode.set_color(node: scenenodeObj, color: ncine.color)
+
+

Sets the node color

+

set_enabled

+
function ncine.scenenode.set_enabled(node: scenenodeObj, newValue: boolean)
+
+

Enables or disables both node updating and drawing

+

set_layer

+
function ncine.scenenode.set_layer(node: scenenodeObj, layer: integer)
+
+

Sets the node rendering layer

+

The lowest value (bottom) is 0 and the highest one (top) is 65535.
+When the value is 0, the final layer value is inherited from the parent.

+

set_parent

+
function ncine.scenenode.set_parent(node: scenenodeObj, parent?: scenenodeObj)
+  -> boolean
+
+

Sets the parent node

+

@return — true if the parent has been set

+

set_position

+
function ncine.scenenode.set_position(node: scenenodeObj, pos: ncine.vec2)
+
+

Sets a new position for the node

+

set_rotation

+
function ncine.scenenode.set_rotation(node: scenenodeObj, rot: number)
+
+

Sets the node rotation in degrees

+

@param rot — The amount of degrees

+

set_scale

+
function ncine.scenenode.set_scale(node: scenenodeObj, factor: number)
+
+

Sets both node scale factors to the specified value

+

set_scale_x

+
function ncine.scenenode.set_scale_x(node: scenenodeObj, factor: number)
+
+

Sets the node scale X factor

+

set_scale_y

+
function ncine.scenenode.set_scale_y(node: scenenodeObj, factor: number)
+
+

Sets the node scale Y factor

+

set_visit_order_state

+
function ncine.scenenode.set_visit_order_state(node: scenenodeObj, state: ncine.visit_order_state)
+
+

Sets the visit order state for the specified node

+

swap_children

+
function ncine.scenenode.swap_children(parent: scenenodeObj, firstIndex: integer, secondIndex: integer)
+  -> boolean
+
+

Swaps two children at the specified indices

+

@return — true if the two nodes have been swapped

+

swap_node_back

+
function ncine.scenenode.swap_node_back(node: scenenodeObj)
+  -> boolean
+
+

Brings this node one node back in the parent's list of children

+

@return — true if the node has been brought one position back

+

swap_node_forward

+
function ncine.scenenode.swap_node_forward(node: scenenodeObj)
+  -> boolean
+
+

Brings this node one node forward in the parent's list of children

+

@return — true if the node has been brought one position forward

+

unlink_child

+
function ncine.scenenode.unlink_child(parent: scenenodeObj, node: scenenodeObj)
+  -> boolean
+
+

Unlinks a child node from the specified parent

+

The children of the unlinked node will be reparented with the grandparent node

+

@return — true if the node has been unlinked

+
+

ncine.scenenode

+
ncine.scenenode
+
+
ncine.scenenode
+
+
+

ncine.scenenode.add_child

+
function ncine.scenenode.add_child(parent: scenenodeObj, node: scenenodeObj)
+  -> boolean
+
+
function ncine.scenenode.add_child(parent: scenenodeObj, node: scenenodeObj)
+  -> boolean
+
+
+

ncine.scenenode.get_abs_anchor_point

+
function ncine.scenenode.get_abs_anchor_point(node: scenenodeObj)
+  -> ncine.vec2
+
+
function ncine.scenenode.get_abs_anchor_point(node: scenenodeObj)
+  -> ncine.vec2
+
+
+

ncine.scenenode.get_alpha

+
function ncine.scenenode.get_alpha(node: scenenodeObj)
+  -> number
+
+
function ncine.scenenode.get_alpha(node: scenenodeObj)
+  -> number
+
+
+

ncine.scenenode.get_child

+
function ncine.scenenode.get_child(node: scenenodeObj, index: integer)
+  -> scenenodeObj?
+
+
function ncine.scenenode.get_child(node: scenenodeObj, index: integer)
+  -> scenenodeObj?
+
+
+

ncine.scenenode.get_child_order_index

+
function ncine.scenenode.get_child_order_index(node: scenenodeObj)
+  -> integer
+
+
function ncine.scenenode.get_child_order_index(node: scenenodeObj)
+  -> integer
+
+
+

ncine.scenenode.get_children

+
function ncine.scenenode.get_children(node: scenenodeObj)
+  -> scenenodeObj[]
+
+
function ncine.scenenode.get_children(node: scenenodeObj)
+  -> scenenodeObj[]
+
+
+

ncine.scenenode.get_color

+
function ncine.scenenode.get_color(node: scenenodeObj)
+  -> ncine.color
+
+
function ncine.scenenode.get_color(node: scenenodeObj)
+  -> ncine.color
+
+
+

ncine.scenenode.get_last_frame_updated

+
function ncine.scenenode.get_last_frame_updated(node: scenenodeObj)
+  -> integer
+
+
function ncine.scenenode.get_last_frame_updated(node: scenenodeObj)
+  -> integer
+
+
+

ncine.scenenode.get_layer

+
function ncine.scenenode.get_layer(node: scenenodeObj)
+  -> integer
+
+
function ncine.scenenode.get_layer(node: scenenodeObj)
+  -> integer
+
+
+

ncine.scenenode.get_parent

+
function ncine.scenenode.get_parent(node: scenenodeObj)
+  -> scenenodeObj?
+
+
function ncine.scenenode.get_parent(node: scenenodeObj)
+  -> scenenodeObj?
+
+
+

ncine.scenenode.get_position

+
function ncine.scenenode.get_position(node: scenenodeObj)
+  -> ncine.vec2
+
+
function ncine.scenenode.get_position(node: scenenodeObj)
+  -> ncine.vec2
+
+
+

ncine.scenenode.get_rotation

+
function ncine.scenenode.get_rotation(node: scenenodeObj)
+  -> number
+
+
function ncine.scenenode.get_rotation(node: scenenodeObj)
+  -> number
+
+
+

ncine.scenenode.get_scale

+
function ncine.scenenode.get_scale(node: scenenodeObj)
+  -> ncine.vec2
+
+
function ncine.scenenode.get_scale(node: scenenodeObj)
+  -> ncine.vec2
+
+
+

ncine.scenenode.get_visit_order_index

+
function ncine.scenenode.get_visit_order_index(node: scenenodeObj)
+  -> integer
+
+
function ncine.scenenode.get_visit_order_index(node: scenenodeObj)
+  -> integer
+
+
+

ncine.scenenode.get_visit_order_state

+
function ncine.scenenode.get_visit_order_state(node: scenenodeObj)
+  -> ncine.visit_order_state
+
+
function ncine.scenenode.get_visit_order_state(node: scenenodeObj)
+  -> ncine.visit_order_state
+
+
+

ncine.scenenode.is_enabled

+
function ncine.scenenode.is_enabled(node: scenenodeObj)
+  -> boolean
+
+
function ncine.scenenode.is_enabled(node: scenenodeObj)
+  -> boolean
+
+
+

ncine.scenenode.num_children

+
function ncine.scenenode.num_children(node: scenenodeObj)
+  -> integer
+
+
function ncine.scenenode.num_children(node: scenenodeObj)
+  -> integer
+
+
+

ncine.scenenode.remove_all_children

+
function ncine.scenenode.remove_all_children(parent: scenenodeObj, index: any)
+  -> boolean
+
+
function ncine.scenenode.remove_all_children(parent: scenenodeObj, index: any)
+  -> boolean
+
+
+

ncine.scenenode.remove_child

+
function ncine.scenenode.remove_child(parent: scenenodeObj, node: scenenodeObj)
+  -> boolean
+
+
function ncine.scenenode.remove_child(parent: scenenodeObj, node: scenenodeObj)
+  -> boolean
+
+
+

ncine.scenenode.remove_child_at

+
function ncine.scenenode.remove_child_at(parent: scenenodeObj, index: integer)
+  -> boolean
+
+
function ncine.scenenode.remove_child_at(parent: scenenodeObj, index: integer)
+  -> boolean
+
+
+

ncine.scenenode.set_abs_anchor_point

+
function ncine.scenenode.set_abs_anchor_point(node: scenenodeObj, pos: ncine.vec2)
+
+
function ncine.scenenode.set_abs_anchor_point(node: scenenodeObj, x: number, y: number)
+
+
function ncine.scenenode.set_abs_anchor_point(node: scenenodeObj, pos: ncine.vec2)
+
+
function ncine.scenenode.set_abs_anchor_point(node: scenenodeObj, x: number, y: number)
+
+
+

ncine.scenenode.set_alpha

+
function ncine.scenenode.set_alpha(node: scenenodeObj, alpha: number)
+
+
function ncine.scenenode.set_alpha(node: scenenodeObj, alpha: number)
+
+
+

ncine.scenenode.set_color

+
function ncine.scenenode.set_color(node: scenenodeObj, color: ncine.color)
+
+
function ncine.scenenode.set_color(node: scenenodeObj, red: number, green: number, blue: number, alpha: number)
+
+
function ncine.scenenode.set_color(node: scenenodeObj, color: ncine.color)
+
+
function ncine.scenenode.set_color(node: scenenodeObj, red: number, green: number, blue: number, alpha: number)
+
+
+

ncine.scenenode.set_enabled

+
function ncine.scenenode.set_enabled(node: scenenodeObj, newValue: boolean)
+
+
function ncine.scenenode.set_enabled(node: scenenodeObj, newValue: boolean)
+
+
+

ncine.scenenode.set_layer

+
function ncine.scenenode.set_layer(node: scenenodeObj, layer: integer)
+
+
function ncine.scenenode.set_layer(node: scenenodeObj, layer: integer)
+
+
+

ncine.scenenode.set_parent

+
function ncine.scenenode.set_parent(node: scenenodeObj, parent?: scenenodeObj)
+  -> boolean
+
+
function ncine.scenenode.set_parent(node: scenenodeObj, parent?: scenenodeObj)
+  -> boolean
+
+
+

ncine.scenenode.set_position

+
function ncine.scenenode.set_position(node: scenenodeObj, pos: ncine.vec2)
+
+
function ncine.scenenode.set_position(node: scenenodeObj, x: number, y: number)
+
+
function ncine.scenenode.set_position(node: scenenodeObj, pos: ncine.vec2)
+
+
function ncine.scenenode.set_position(node: scenenodeObj, x: number, y: number)
+
+
+

ncine.scenenode.set_rotation

+
function ncine.scenenode.set_rotation(node: scenenodeObj, rot: number)
+
+
function ncine.scenenode.set_rotation(node: scenenodeObj, rot: number)
+
+
+

ncine.scenenode.set_scale

+
function ncine.scenenode.set_scale(node: scenenodeObj, factor: number)
+
+
function ncine.scenenode.set_scale(node: scenenodeObj, factor: number)
+
+
+

ncine.scenenode.set_scale_x

+
function ncine.scenenode.set_scale_x(node: scenenodeObj, factor: number)
+
+
function ncine.scenenode.set_scale_x(node: scenenodeObj, factor: number)
+
+
+

ncine.scenenode.set_scale_y

+
function ncine.scenenode.set_scale_y(node: scenenodeObj, factor: number)
+
+
function ncine.scenenode.set_scale_y(node: scenenodeObj, factor: number)
+
+
+

ncine.scenenode.set_visit_order_state

+
function ncine.scenenode.set_visit_order_state(node: scenenodeObj, state: ncine.visit_order_state)
+
+
function ncine.scenenode.set_visit_order_state(node: scenenodeObj, state: ncine.visit_order_state)
+
+
+

ncine.scenenode.swap_children

+
function ncine.scenenode.swap_children(parent: scenenodeObj, firstIndex: integer, secondIndex: integer)
+  -> boolean
+
+
function ncine.scenenode.swap_children(parent: scenenodeObj, firstIndex: integer, secondIndex: integer)
+  -> boolean
+
+
+

ncine.scenenode.swap_node_back

+
function ncine.scenenode.swap_node_back(node: scenenodeObj)
+  -> boolean
+
+
function ncine.scenenode.swap_node_back(node: scenenodeObj)
+  -> boolean
+
+
+

ncine.scenenode.swap_node_forward

+
function ncine.scenenode.swap_node_forward(node: scenenodeObj)
+  -> boolean
+
+
function ncine.scenenode.swap_node_forward(node: scenenodeObj)
+  -> boolean
+
+
+

ncine.scenenode.unlink_child

+
function ncine.scenenode.unlink_child(parent: scenenodeObj, node: scenenodeObj)
+  -> boolean
+
+
function ncine.scenenode.unlink_child(parent: scenenodeObj, node: scenenodeObj)
+  -> boolean
+
+
+

ncine.shader

+

delete

+
function ncine.shader.delete(shader: shaderObj)
+
+

Destroys a shader object and releases its memory

+

@param shader — The shader object to be destroyed

+

get_log_on_errors

+
function ncine.shader.get_log_on_errors(shader: shaderObj)
+  -> boolean
+
+

Returns the automatic log on errors flag

+

is_binary_cache_enabled

+
function ncine.shader.is_binary_cache_enabled()
+  -> boolean
+
+

Returns true if the binary shader cache is enabled

+

is_linked

+
function ncine.shader.is_linked(shader: shaderObj)
+  -> boolean
+
+

Returns true if the shader is linked and can therefore be used

+

load_from_file

+
function ncine.shader.load_from_file(shader: shaderObj, name: string, introspection: ncine.shader_introspection, vertex: string, fragment: string)
+  -> boolean
+
+

Compiles a shader program after loading shader sources from files

+

@param name — The name of the shader

+

@param vertex — The vertex shader source filename

+

@param fragment — The fragment shader source filename

+

@return — True if the shader program has been successfully linked

+

load_from_file_default_fragment

+
function ncine.shader.load_from_file_default_fragment(shader: shaderObj, name: string, introspection: ncine.shader_introspection, vertex: string, fragment: ncine.shader_default_fragment)
+  -> boolean
+
+

Compiles a shader program after loading the vertex shader source from a file

+

The fragment shader is a default one, in this case.

+

@param name — The name of the shader

+

@param vertex — The vertex shader source filename

+

@param fragment — The default fragment shader

+

@return — True if the shader program has been successfully linked

+

load_from_file_default_vertex

+
function ncine.shader.load_from_file_default_vertex(shader: shaderObj, name: string, introspection: ncine.shader_introspection, vertex: ncine.shader_default_vertex, fragment: string)
+  -> boolean
+
+

Compiles a shader program after loading the fragment shader source from a file

+

The vertex shader is a default one, in this case.

+

@param name — The name of the shader

+

@param vertex — The default vertex shader

+

@param fragment — The fragment shader source filename

+

@return — True if the shader program has been successfully linked

+

load_from_memory

+
function ncine.shader.load_from_memory(shader: shaderObj, name: string, introspection: ncine.shader_introspection, vertex: string, fragment: string)
+  -> boolean
+
+

Compiles a shader program after loading shader sources from strings

+

@param name — The name of the shader

+

@param vertex — The vertex shader GLSL source code

+

@param fragment — The fragment shader GLSL source code

+

@return — True if the shader program has been successfully linked

+

load_from_memory_default_fragment

+
function ncine.shader.load_from_memory_default_fragment(shader: shaderObj, name: string, introspection: ncine.shader_introspection, vertex: string, fragment: ncine.shader_default_fragment)
+  -> boolean
+
+

Compiles a shader program after loading the vertex shader source from a string

+

The fragment shader is a default one, in this case.

+

@param name — The name of the shader

+

@param vertex — The vertex shader GLSL source code

+

@param fragment — The default fragment shader

+

@return — True if the shader program has been successfully linked

+

load_from_memory_default_vertex

+
function ncine.shader.load_from_memory_default_vertex(shader: shaderObj, name: string, introspection: ncine.shader_introspection, vertex: ncine.shader_default_vertex, fragment: string)
+  -> boolean
+
+

Compiles a shader program after loading the fragment shader source from a string

+

The vertex shader is a default one, in this case.

+

@param name — The name of the shader

+

@param vertex — The default vertex shader

+

@param fragment — The fragment shader GLSL source code

+

@return — True if the shader program has been successfully linked

+

load_from_memory_with_hashes

+
function ncine.shader.load_from_memory_with_hashes(shader: shaderObj, name: string, introspection: ncine.shader_introspection, vertex: string, fragment: string, vertex_hash: integer, fragment_hash: integer)
+  -> boolean
+
+

Compiles a shader program after loading shader sources from strings

+

In this case custom hashes can be passed to the function.

+

@param name — The name of the shader

+

@param vertex — The vertex shader GLSL source code

+

@param fragment — The fragment shader GLSL source code

+

@return — True if the shader program has been successfully linked

+

new

+
function ncine.shader.new()
+  -> shaderObj
+
+

Constructs a shader object

+

Don't forget to call delete when you are done with it!

+

@return — A new shader object

+

register_batched_shader

+
function ncine.shader.register_batched_shader(shader: shaderObj, batched_shader: shaderObj)
+
+

Registers a shader to be used for batches of render commands

+

retrieve_infolog

+
function ncine.shader.retrieve_infolog(shader: shaderObj)
+  -> string
+
+

Retrieves the information log

+

retrieve_infolog_length

+
function ncine.shader.retrieve_infolog_length(shader: shaderObj)
+  -> integer
+
+

Returns the length of the information log including the null termination character

+

set_attribute

+
function ncine.shader.set_attribute(shader: shaderObj, attribute: string, stride: integer, pointer: integer)
+  -> boolean
+
+

Sets the VBO stride and pointer for the specified vertex attribute

+

@param attribute — The name of the vertex attribute

+

@return — True if the vertex attribute was found

+

set_binary_cache_enabled

+
function ncine.shader.set_binary_cache_enabled(enable: boolean)
+
+

Enables or disables the binary shader cache

+

set_glshaderprogram_label

+
function ncine.shader.set_glshaderprogram_label(shader: shaderObj, label: string)
+
+

Sets the OpenGL object label for the shader program

+

set_log_on_errors

+
function ncine.shader.set_log_on_errors(shader: shaderObj, should_log: boolean)
+
+

Sets the automatic log on errors flag

+

If the flag is set to true, the shader will automatically log compilation and linking errors.

+
+

ncine.shader

+
ncine.shader
+
+
ncine.shader
+
+
+

ncine.shader.delete

+
function ncine.shader.delete(shader: shaderObj)
+
+
function ncine.shader.delete(shader: shaderObj)
+
+
+

ncine.shader.get_log_on_errors

+
function ncine.shader.get_log_on_errors(shader: shaderObj)
+  -> boolean
+
+
function ncine.shader.get_log_on_errors(shader: shaderObj)
+  -> boolean
+
+
+

ncine.shader.is_binary_cache_enabled

+
function ncine.shader.is_binary_cache_enabled()
+  -> boolean
+
+
function ncine.shader.is_binary_cache_enabled()
+  -> boolean
+
+
+

ncine.shader.is_linked

+
function ncine.shader.is_linked(shader: shaderObj)
+  -> boolean
+
+
function ncine.shader.is_linked(shader: shaderObj)
+  -> boolean
+
+
+

ncine.shader.load_from_file

+
function ncine.shader.load_from_file(shader: shaderObj, name: string, introspection: ncine.shader_introspection, vertex: string, fragment: string)
+  -> boolean
+
+
function ncine.shader.load_from_file(shader: shaderObj, name: string, introspection: ncine.shader_introspection, vertex: string, fragment: string)
+  -> boolean
+
+
+

ncine.shader.load_from_file_default_fragment

+
function ncine.shader.load_from_file_default_fragment(shader: shaderObj, name: string, introspection: ncine.shader_introspection, vertex: string, fragment: ncine.shader_default_fragment)
+  -> boolean
+
+
function ncine.shader.load_from_file_default_fragment(shader: shaderObj, name: string, introspection: ncine.shader_introspection, vertex: string, fragment: ncine.shader_default_fragment)
+  -> boolean
+
+
+

ncine.shader.load_from_file_default_vertex

+
function ncine.shader.load_from_file_default_vertex(shader: shaderObj, name: string, introspection: ncine.shader_introspection, vertex: ncine.shader_default_vertex, fragment: string)
+  -> boolean
+
+
function ncine.shader.load_from_file_default_vertex(shader: shaderObj, name: string, introspection: ncine.shader_introspection, vertex: ncine.shader_default_vertex, fragment: string)
+  -> boolean
+
+
+

ncine.shader.load_from_memory

+
function ncine.shader.load_from_memory(shader: shaderObj, name: string, introspection: ncine.shader_introspection, vertex: string, fragment: string)
+  -> boolean
+
+
function ncine.shader.load_from_memory(shader: shaderObj, name: string, introspection: ncine.shader_introspection, vertex: string, fragment: string)
+  -> boolean
+
+
+

ncine.shader.load_from_memory_default_fragment

+
function ncine.shader.load_from_memory_default_fragment(shader: shaderObj, name: string, introspection: ncine.shader_introspection, vertex: string, fragment: ncine.shader_default_fragment)
+  -> boolean
+
+
function ncine.shader.load_from_memory_default_fragment(shader: shaderObj, name: string, introspection: ncine.shader_introspection, vertex: string, fragment: ncine.shader_default_fragment)
+  -> boolean
+
+
+

ncine.shader.load_from_memory_default_vertex

+
function ncine.shader.load_from_memory_default_vertex(shader: shaderObj, name: string, introspection: ncine.shader_introspection, vertex: ncine.shader_default_vertex, fragment: string)
+  -> boolean
+
+
function ncine.shader.load_from_memory_default_vertex(shader: shaderObj, name: string, introspection: ncine.shader_introspection, vertex: ncine.shader_default_vertex, fragment: string)
+  -> boolean
+
+
+

ncine.shader.load_from_memory_with_hashes

+
function ncine.shader.load_from_memory_with_hashes(shader: shaderObj, name: string, introspection: ncine.shader_introspection, vertex: string, fragment: string, vertex_hash: integer, fragment_hash: integer)
+  -> boolean
+
+
function ncine.shader.load_from_memory_with_hashes(shader: shaderObj, name: string, introspection: ncine.shader_introspection, vertex: string, fragment: string, vertex_hash: integer, fragment_hash: integer)
+  -> boolean
+
+
+

ncine.shader.new

+
function ncine.shader.new()
+  -> shaderObj
+
+
function ncine.shader.new()
+  -> shaderObj
+
+
+

ncine.shader.register_batched_shader

+
function ncine.shader.register_batched_shader(shader: shaderObj, batched_shader: shaderObj)
+
+
function ncine.shader.register_batched_shader(shader: shaderObj, batched_shader: shaderObj)
+
+
+

ncine.shader.retrieve_infolog

+
function ncine.shader.retrieve_infolog(shader: shaderObj)
+  -> string
+
+
function ncine.shader.retrieve_infolog(shader: shaderObj)
+  -> string
+
+
+

ncine.shader.retrieve_infolog_length

+
function ncine.shader.retrieve_infolog_length(shader: shaderObj)
+  -> integer
+
+
function ncine.shader.retrieve_infolog_length(shader: shaderObj)
+  -> integer
+
+
+

ncine.shader.set_attribute

+
function ncine.shader.set_attribute(shader: shaderObj, attribute: string, stride: integer, pointer: integer)
+  -> boolean
+
+
function ncine.shader.set_attribute(shader: shaderObj, attribute: string, stride: integer, pointer: integer)
+  -> boolean
+
+
+

ncine.shader.set_binary_cache_enabled

+
function ncine.shader.set_binary_cache_enabled(enable: boolean)
+
+
function ncine.shader.set_binary_cache_enabled(enable: boolean)
+
+
+

ncine.shader.set_glshaderprogram_label

+
function ncine.shader.set_glshaderprogram_label(shader: shaderObj, label: string)
+
+
function ncine.shader.set_glshaderprogram_label(shader: shaderObj, label: string)
+
+
+

ncine.shader.set_log_on_errors

+
function ncine.shader.set_log_on_errors(shader: shaderObj, should_log: boolean)
+
+
function ncine.shader.set_log_on_errors(shader: shaderObj, should_log: boolean)
+
+
+

ncine.shader_default_fragment

+
enum ncine.shader_default_fragment
+
+
enum ncine.shader_default_fragment
+
+
+

ncine.shader_default_vertex

+
enum ncine.shader_default_vertex
+
+
enum ncine.shader_default_vertex
+
+
+

ncine.shader_introspection

+
enum ncine.shader_introspection
+
+
enum ncine.shader_introspection
+
+
+

ncine.shaderstate

+
ncine.shaderstate
+
+
ncine.shaderstate
+
+
+

ncine.shaderstate

+

delete

+
function ncine.shaderstate.delete(shaderstate: shaderstateObj)
+
+

Destroys a shaderstate object and releases its memory

+

@param shaderstate — The shaderstate object to be destroyed

+

get_node

+
function ncine.shaderstate.get_node(shaderstate: shaderstateObj)
+  -> drawablenodeObj?
+
+

Returns the drawable node affected by the shader state

+

get_shader

+
function ncine.shaderstate.get_shader(shaderstate: shaderstateObj)
+  -> shaderObj?
+
+

Return the associated custom shader

+

new

+
function ncine.shaderstate.new(node: drawablenodeObj, shader: shaderObj)
+  -> shaderstateObj
+
+

Constructs a shaderstate object and assigns to it a node and a shader

+

Don't forget to call delete when you are done with it!

+

@return — A new shader object

+

reset_shader

+
function ncine.shaderstate.reset_shader(shaderstate: shaderstateObj)
+
+

Triggers a shader update without setting a new shader

+

set_node

+
function ncine.shaderstate.set_node(shaderstate: shaderstateObj, node?: drawablenodeObj)
+
+

Sets the drawable node affected by the shader state

+

set_shader

+
function ncine.shaderstate.set_shader(shaderstate: shaderstateObj, shader?: shaderObj)
+  -> boolean
+
+

Sets the associated custom shader

+

@return — True if the shader has been changed

+

set_texture

+
function ncine.shaderstate.set_texture(shaderstate: shaderstateObj, unit: integer, texture?: textureObj)
+  -> boolean
+
+

Assigns a texture to the specified texture unit

+

@return — True if the texture has been assigned

+

set_uniform_float_color

+
function ncine.shaderstate.set_uniform_float_color(shaderstate: shaderstateObj, block_name: string, name: string, color: ncine.color)
+  -> boolean
+
+

Sets a float uniform with a ncine.color

+

@param block_name — It can be an empty string

+

@param name — Uniform name

+

@return — True if the uniform has been found and updated

+

set_uniform_float_value1

+
function ncine.shaderstate.set_uniform_float_value1(shaderstate: shaderstateObj, block_name: string, name: string, value0: number)
+  -> boolean
+
+

Sets a float uniform with one value

+

@param block_name — It can be an empty string

+

@param name — Uniform name

+

@return — True if the uniform has been found and updated

+

set_uniform_float_value2

+
function ncine.shaderstate.set_uniform_float_value2(shaderstate: shaderstateObj, block_name: string, name: string, value0: number, value1: number)
+  -> boolean
+
+

Sets a float uniform with two values

+

@param block_name — It can be an empty string

+

@param name — Uniform name

+

@return — True if the uniform has been found and updated

+

set_uniform_float_value3

+
function ncine.shaderstate.set_uniform_float_value3(shaderstate: shaderstateObj, block_name: string, name: string, value0: number, value1: number, value2: number)
+  -> boolean
+
+

Sets a float uniform with three values

+

@param block_name — It can be an empty string

+

@param name — Uniform name

+

@return — True if the uniform has been found and updated

+

set_uniform_float_value4

+
function ncine.shaderstate.set_uniform_float_value4(shaderstate: shaderstateObj, block_name: string, name: string, value0: number, value1: number, value2: number, value3: number)
+  -> boolean
+
+

Sets a float uniform with four values

+

@param block_name — It can be an empty string

+

@param name — Uniform name

+

@return — True if the uniform has been found and updated

+

set_uniform_float_vector

+
function ncine.shaderstate.set_uniform_float_vector(shaderstate: shaderstateObj, block_name: string, name: string, vector: number[])
+  -> boolean
+
+

Sets a float uniform with an array of values

+

@param block_name — It can be an empty string

+

@param name — Uniform name

+

@param vector — An array of 1 to 4 float elements

+

@return — True if the uniform has been found and updated

+

set_uniform_float_vector2

+
function ncine.shaderstate.set_uniform_float_vector2(shaderstate: shaderstateObj, block_name: string, name: string, vector: ncine.vec2)
+  -> boolean
+
+

Sets a float uniform with a ncine.vec2

+

@param block_name — It can be an empty string

+

@param name — Uniform name

+

@return — True if the uniform has been found and updated

+

set_uniform_float_vector3

+
function ncine.shaderstate.set_uniform_float_vector3(shaderstate: shaderstateObj, block_name: string, name: string, vector: ncine.vec3)
+  -> boolean
+
+

Sets a float uniform with a ncine.vec3

+

@param block_name — It can be an empty string

+

@param name — Uniform name

+

@return — True if the uniform has been found and updated

+

set_uniform_float_vector4

+
function ncine.shaderstate.set_uniform_float_vector4(shaderstate: shaderstateObj, block_name: string, name: string, vector: ncine.vec4)
+  -> boolean
+
+

Sets a float uniform with a ncine.vec4

+

@param block_name — It can be an empty string

+

@param name — Uniform name

+

@return — True if the uniform has been found and updated

+

set_uniform_int_value1

+
function ncine.shaderstate.set_uniform_int_value1(shaderstate: shaderstateObj, block_name: string, name: string, value0: integer)
+  -> boolean
+
+

Sets an integer uniform with one value

+

@param block_name — It can be an empty string

+

@param name — Uniform name

+

@return — True if the uniform has been found and updated

+

set_uniform_int_value2

+
function ncine.shaderstate.set_uniform_int_value2(shaderstate: shaderstateObj, block_name: string, name: string, value0: integer, value1: integer)
+  -> boolean
+
+

Sets an integer uniform with two values

+

@param block_name — It can be an empty string

+

@param name — Uniform name

+

@return — True if the uniform has been found and updated

+

set_uniform_int_value3

+
function ncine.shaderstate.set_uniform_int_value3(shaderstate: shaderstateObj, block_name: string, name: string, value0: integer, value1: integer, value2: integer)
+  -> boolean
+
+

Sets an integer uniform with three values

+

@param block_name — It can be an empty string

+

@param name — Uniform name

+

@return — True if the uniform has been found and updated

+

set_uniform_int_value4

+
function ncine.shaderstate.set_uniform_int_value4(shaderstate: shaderstateObj, block_name: string, name: string, value0: integer, value1: integer, value2: integer, value3: integer)
+  -> boolean
+
+

Sets an integer uniform with four values

+

@param block_name — It can be an empty string

+

@param name — Uniform name

+

@return — True if the uniform has been found and updated

+

set_uniform_int_vector

+
function ncine.shaderstate.set_uniform_int_vector(shaderstate: shaderstateObj, block_name: string, name: string, vector: integer[])
+  -> boolean
+
+

Sets an integer uniform with an array of values

+

@param block_name — It can be an empty string

+

@param name — Uniform name

+

@param vector — An array of 1 to 4 integer elements

+

@return — True if the uniform has been found and updated

+

set_uniform_int_vector2

+
function ncine.shaderstate.set_uniform_int_vector2(shaderstate: shaderstateObj, block_name: string, name: string, vector: ncine.vec2)
+  -> boolean
+
+

Sets an integer uniform with a ncine.vec2

+

@param block_name — It can be an empty string

+

@param name — Uniform name

+

@return — True if the uniform has been found and updated

+

set_uniform_int_vector3

+
function ncine.shaderstate.set_uniform_int_vector3(shaderstate: shaderstateObj, block_name: string, name: string, vector: ncine.vec3)
+  -> boolean
+
+

Sets an integer uniform with a ncine.vec3

+

@param block_name — It can be an empty string

+

@param name — Uniform name

+

@return — True if the uniform has been found and updated

+

set_uniform_int_vector4

+
function ncine.shaderstate.set_uniform_int_vector4(shaderstate: shaderstateObj, block_name: string, name: string, vector: ncine.vec4)
+  -> boolean
+
+

Sets an integer uniform with a ncine.vec4

+

@param block_name — It can be an empty string

+

@param name — Uniform name

+

@return — True if the uniform has been found and updated

+
+

ncine.shaderstate.delete

+
function ncine.shaderstate.delete(shaderstate: shaderstateObj)
+
+
function ncine.shaderstate.delete(shaderstate: shaderstateObj)
+
+
+

ncine.shaderstate.get_node

+
function ncine.shaderstate.get_node(shaderstate: shaderstateObj)
+  -> drawablenodeObj?
+
+
function ncine.shaderstate.get_node(shaderstate: shaderstateObj)
+  -> drawablenodeObj?
+
+
+

ncine.shaderstate.get_shader

+
function ncine.shaderstate.get_shader(shaderstate: shaderstateObj)
+  -> shaderObj?
+
+
function ncine.shaderstate.get_shader(shaderstate: shaderstateObj)
+  -> shaderObj?
+
+
+

ncine.shaderstate.new

+
function ncine.shaderstate.new(node: drawablenodeObj, shader: shaderObj)
+  -> shaderstateObj
+
+
function ncine.shaderstate.new(node: drawablenodeObj, shader: shaderObj)
+  -> shaderstateObj
+
+
+

ncine.shaderstate.reset_shader

+
function ncine.shaderstate.reset_shader(shaderstate: shaderstateObj)
+
+
function ncine.shaderstate.reset_shader(shaderstate: shaderstateObj)
+
+
+

ncine.shaderstate.set_node

+
function ncine.shaderstate.set_node(shaderstate: shaderstateObj, node?: drawablenodeObj)
+
+
function ncine.shaderstate.set_node(shaderstate: shaderstateObj, node?: drawablenodeObj)
+
+
+

ncine.shaderstate.set_shader

+
function ncine.shaderstate.set_shader(shaderstate: shaderstateObj, shader?: shaderObj)
+  -> boolean
+
+
function ncine.shaderstate.set_shader(shaderstate: shaderstateObj, shader?: shaderObj)
+  -> boolean
+
+
+

ncine.shaderstate.set_texture

+
function ncine.shaderstate.set_texture(shaderstate: shaderstateObj, unit: integer, texture?: textureObj)
+  -> boolean
+
+
function ncine.shaderstate.set_texture(shaderstate: shaderstateObj, unit: integer, texture?: textureObj)
+  -> boolean
+
+
+

ncine.shaderstate.set_uniform_float_color

+
function ncine.shaderstate.set_uniform_float_color(shaderstate: shaderstateObj, block_name: string, name: string, color: ncine.color)
+  -> boolean
+
+
function ncine.shaderstate.set_uniform_float_color(shaderstate: shaderstateObj, block_name: string, name: string, color: ncine.color)
+  -> boolean
+
+
+

ncine.shaderstate.set_uniform_float_value1

+
function ncine.shaderstate.set_uniform_float_value1(shaderstate: shaderstateObj, block_name: string, name: string, value0: number)
+  -> boolean
+
+
function ncine.shaderstate.set_uniform_float_value1(shaderstate: shaderstateObj, block_name: string, name: string, value0: number)
+  -> boolean
+
+
+

ncine.shaderstate.set_uniform_float_value2

+
function ncine.shaderstate.set_uniform_float_value2(shaderstate: shaderstateObj, block_name: string, name: string, value0: number, value1: number)
+  -> boolean
+
+
function ncine.shaderstate.set_uniform_float_value2(shaderstate: shaderstateObj, block_name: string, name: string, value0: number, value1: number)
+  -> boolean
+
+
+

ncine.shaderstate.set_uniform_float_value3

+
function ncine.shaderstate.set_uniform_float_value3(shaderstate: shaderstateObj, block_name: string, name: string, value0: number, value1: number, value2: number)
+  -> boolean
+
+
function ncine.shaderstate.set_uniform_float_value3(shaderstate: shaderstateObj, block_name: string, name: string, value0: number, value1: number, value2: number)
+  -> boolean
+
+
+

ncine.shaderstate.set_uniform_float_value4

+
function ncine.shaderstate.set_uniform_float_value4(shaderstate: shaderstateObj, block_name: string, name: string, value0: number, value1: number, value2: number, value3: number)
+  -> boolean
+
+
function ncine.shaderstate.set_uniform_float_value4(shaderstate: shaderstateObj, block_name: string, name: string, value0: number, value1: number, value2: number, value3: number)
+  -> boolean
+
+
+

ncine.shaderstate.set_uniform_float_vector

+
function ncine.shaderstate.set_uniform_float_vector(shaderstate: shaderstateObj, block_name: string, name: string, vector: number[])
+  -> boolean
+
+
function ncine.shaderstate.set_uniform_float_vector(shaderstate: shaderstateObj, block_name: string, name: string, vector: number[])
+  -> boolean
+
+
+

ncine.shaderstate.set_uniform_float_vector2

+
function ncine.shaderstate.set_uniform_float_vector2(shaderstate: shaderstateObj, block_name: string, name: string, vector: ncine.vec2)
+  -> boolean
+
+
function ncine.shaderstate.set_uniform_float_vector2(shaderstate: shaderstateObj, block_name: string, name: string, vector: ncine.vec2)
+  -> boolean
+
+
+

ncine.shaderstate.set_uniform_float_vector3

+
function ncine.shaderstate.set_uniform_float_vector3(shaderstate: shaderstateObj, block_name: string, name: string, vector: ncine.vec3)
+  -> boolean
+
+
function ncine.shaderstate.set_uniform_float_vector3(shaderstate: shaderstateObj, block_name: string, name: string, vector: ncine.vec3)
+  -> boolean
+
+
+

ncine.shaderstate.set_uniform_float_vector4

+
function ncine.shaderstate.set_uniform_float_vector4(shaderstate: shaderstateObj, block_name: string, name: string, vector: ncine.vec4)
+  -> boolean
+
+
function ncine.shaderstate.set_uniform_float_vector4(shaderstate: shaderstateObj, block_name: string, name: string, vector: ncine.vec4)
+  -> boolean
+
+
+

ncine.shaderstate.set_uniform_int_value1

+
function ncine.shaderstate.set_uniform_int_value1(shaderstate: shaderstateObj, block_name: string, name: string, value0: integer)
+  -> boolean
+
+
function ncine.shaderstate.set_uniform_int_value1(shaderstate: shaderstateObj, block_name: string, name: string, value0: integer)
+  -> boolean
+
+
+

ncine.shaderstate.set_uniform_int_value2

+
function ncine.shaderstate.set_uniform_int_value2(shaderstate: shaderstateObj, block_name: string, name: string, value0: integer, value1: integer)
+  -> boolean
+
+
function ncine.shaderstate.set_uniform_int_value2(shaderstate: shaderstateObj, block_name: string, name: string, value0: integer, value1: integer)
+  -> boolean
+
+
+

ncine.shaderstate.set_uniform_int_value3

+
function ncine.shaderstate.set_uniform_int_value3(shaderstate: shaderstateObj, block_name: string, name: string, value0: integer, value1: integer, value2: integer)
+  -> boolean
+
+
function ncine.shaderstate.set_uniform_int_value3(shaderstate: shaderstateObj, block_name: string, name: string, value0: integer, value1: integer, value2: integer)
+  -> boolean
+
+
+

ncine.shaderstate.set_uniform_int_value4

+
function ncine.shaderstate.set_uniform_int_value4(shaderstate: shaderstateObj, block_name: string, name: string, value0: integer, value1: integer, value2: integer, value3: integer)
+  -> boolean
+
+
function ncine.shaderstate.set_uniform_int_value4(shaderstate: shaderstateObj, block_name: string, name: string, value0: integer, value1: integer, value2: integer, value3: integer)
+  -> boolean
+
+
+

ncine.shaderstate.set_uniform_int_vector

+
function ncine.shaderstate.set_uniform_int_vector(shaderstate: shaderstateObj, block_name: string, name: string, vector: integer[])
+  -> boolean
+
+
function ncine.shaderstate.set_uniform_int_vector(shaderstate: shaderstateObj, block_name: string, name: string, vector: integer[])
+  -> boolean
+
+
+

ncine.shaderstate.set_uniform_int_vector2

+
function ncine.shaderstate.set_uniform_int_vector2(shaderstate: shaderstateObj, block_name: string, name: string, vector: ncine.vec2)
+  -> boolean
+
+
function ncine.shaderstate.set_uniform_int_vector2(shaderstate: shaderstateObj, block_name: string, name: string, vector: ncine.vec2)
+  -> boolean
+
+
+

ncine.shaderstate.set_uniform_int_vector3

+
function ncine.shaderstate.set_uniform_int_vector3(shaderstate: shaderstateObj, block_name: string, name: string, vector: ncine.vec3)
+  -> boolean
+
+
function ncine.shaderstate.set_uniform_int_vector3(shaderstate: shaderstateObj, block_name: string, name: string, vector: ncine.vec3)
+  -> boolean
+
+
+

ncine.shaderstate.set_uniform_int_vector4

+
function ncine.shaderstate.set_uniform_int_vector4(shaderstate: shaderstateObj, block_name: string, name: string, vector: ncine.vec4)
+  -> boolean
+
+
function ncine.shaderstate.set_uniform_int_vector4(shaderstate: shaderstateObj, block_name: string, name: string, vector: ncine.vec4)
+  -> boolean
+
+
+

ncine.sprite

+

add_child

+
function ncine.scenenode.add_child(parent: scenenodeObj, node: scenenodeObj)
+  -> boolean
+
+

Adds a child node to the specified parent

+

@return — true if the node has been added

+

clone

+
function ncine.sprite.clone(sprite: spriteObj)
+  -> spriteObj
+
+

Constructs a new sprite object as a clone of the specified one

+

Don't forget to call delete when you are done with it!

+

@param sprite — The sprite object to be cloned

+

@return — The cloned sprite object

+

delete

+
function ncine.sprite.delete(sprite: spriteObj)
+
+

Destroys a sprite object and releases its memory

+

@param sprite — The sprite object to be destroyed

+

get_aabb

+
function ncine.drawable_node.get_aabb(node: drawablenodeObj)
+  -> ncine.rect
+
+

Returns the axis-aligned bounding box of the node area in the last frame

+

get_abs_anchor_point

+
function ncine.scenenode.get_abs_anchor_point(node: scenenodeObj)
+  -> ncine.vec2
+
+

Returns the absolute transformation anchor point in pixels

+

get_alpha

+
function ncine.scenenode.get_alpha(node: scenenodeObj)
+  -> number
+
+

Returns the node alpha color component

+

get_anchor_point

+
function ncine.drawable_node.get_anchor_point(node: drawablenodeObj)
+  -> ncine.vec2
+
+

Returns the transformation anchor point

+

get_child

+
function ncine.scenenode.get_child(node: scenenodeObj, index: integer)
+  -> scenenodeObj?
+
+

Returns the n-th child

+

get_child_order_index

+
function ncine.scenenode.get_child_order_index(node: scenenodeObj)
+  -> integer
+
+

Returns the order index of this node among its siblings

+

@return — The order index or zero if the node has no parent

+

get_children

+
function ncine.scenenode.get_children(node: scenenodeObj)
+  -> scenenodeObj[]
+
+

Returns the array of children

+

get_color

+
function ncine.scenenode.get_color(node: scenenodeObj)
+  -> ncine.color
+
+

Returns the node color

+

get_dest_blending_factor

+
function ncine.drawable_node.get_dest_blending_factor(node: drawablenodeObj)
+  -> ncine.blending_factor
+
+

Returns the destination blending factor

+

get_height

+
function ncine.drawable_node.get_height(node: drawablenodeObj)
+  -> number
+
+

Returns the height of the node area

+

get_last_frame_rendered

+
function ncine.drawable_node.get_last_frame_rendered(node: drawablenodeObj)
+  -> integer
+
+

Returns the last frame in which any of the viewports have rendered this node (node was not culled)

+

get_last_frame_updated

+
function ncine.scenenode.get_last_frame_updated(node: scenenodeObj)
+  -> integer
+
+

Returns the last frame in which any of the viewports have updated this node

+

get_layer

+
function ncine.scenenode.get_layer(node: scenenodeObj)
+  -> integer
+
+

Returns the node rendering layer

+

get_parent

+
function ncine.scenenode.get_parent(node: scenenodeObj)
+  -> scenenodeObj?
+
+

Returns the parent node, if there is any

+

get_position

+
function ncine.scenenode.get_position(node: scenenodeObj)
+  -> ncine.vec2
+
+

Returns the node position relative to its parent

+

get_rotation

+
function ncine.scenenode.get_rotation(node: scenenodeObj)
+  -> number
+
+

Returns the node rotation in degress

+

get_scale

+
function ncine.scenenode.get_scale(node: scenenodeObj)
+  -> ncine.vec2
+
+

Returns the node scale factors

+

get_size

+
function ncine.drawable_node.get_size(node: drawablenodeObj)
+  -> ncine.vec2
+
+

Returns the size of the node area

+

get_src_blending_factor

+
function ncine.drawable_node.get_src_blending_factor(node: drawablenodeObj)
+  -> ncine.blending_factor
+
+

eturns the source blending factor

+

get_texrect

+
function ncine.base_sprite.get_texrect(sprite: basespriteObj)
+  -> ncine.rect
+
+

Returns the texture source rectangle for blitting

+

get_texture

+
function ncine.base_sprite.get_texture(sprite: basespriteObj)
+  -> textureObj?
+
+

Returns the texture object

+

get_visit_order_index

+
function ncine.scenenode.get_visit_order_index(node: scenenodeObj)
+  -> integer
+
+

Returns the visit drawing order of the node

+

get_visit_order_state

+
function ncine.scenenode.get_visit_order_state(node: scenenodeObj)
+  -> ncine.visit_order_state
+
+

Returns the visit order state for the specified node

+

get_width

+
function ncine.drawable_node.get_width(node: drawablenodeObj)
+  -> number
+
+

Returns the width of the node area

+

is_blending_enabled

+
function ncine.drawable_node.is_blending_enabled(node: drawablenodeObj)
+  -> boolean
+
+

Returns true if the node renders with blending enabled

+

is_enabled

+
function ncine.scenenode.is_enabled(node: scenenodeObj)
+  -> boolean
+
+

Returns true if the node is both updating and drawing

+

is_flipped_x

+
function ncine.base_sprite.is_flipped_x(sprite: basespriteObj)
+  -> boolean
+
+

Returns true if the sprite texture is horizontally flipped

+

is_flipped_y

+
function ncine.base_sprite.is_flipped_y(sprite: basespriteObj)
+  -> boolean
+
+

Returns true if the sprite texture is vertically flipped

+

new

+
function ncine.sprite.new(parent?: scenenodeObj, texture?: textureObj, x: number, y: number)
+  -> spriteObj
+
+

Constructs a sprite object with a parent scene node, a texture, and position components

+

Don't forget to call delete when you are done with it!

+

@param parent — The parent scenenode

+

@param texture — The texture object

+

@param x — The X component of the position

+

@param y — The Y component of the position

+

@return — A new sprite object

+

num_children

+
function ncine.scenenode.num_children(node: scenenodeObj)
+  -> integer
+
+

Returns the number of children

+

remove_all_children

+
function ncine.scenenode.remove_all_children(parent: scenenodeObj, index: any)
+  -> boolean
+
+

Removes all children from the specified parent

+

@return — true if there were at least one node to remove

+

remove_child

+
function ncine.scenenode.remove_child(parent: scenenodeObj, node: scenenodeObj)
+  -> boolean
+
+

Removes a child node from the specified parent

+

@return — true if the node has been removed

+

remove_child_at

+
function ncine.scenenode.remove_child_at(parent: scenenodeObj, index: integer)
+  -> boolean
+
+

Removes a child node at the specified index from the specified parent

+

@return — true if the node has been removed

+

reset_texture

+
function ncine.base_sprite.reset_texture(sprite: basespriteObj)
+
+

Triggers a texture update without setting a new texture

+

set_abs_anchor_point

+
function ncine.scenenode.set_abs_anchor_point(node: scenenodeObj, pos: ncine.vec2)
+
+

Sets the absolute transformation anchor point in pixels

+

set_alpha

+
function ncine.scenenode.set_alpha(node: scenenodeObj, alpha: number)
+
+

Sets the node alpha color component

+

set_anchor_point

+
function ncine.drawable_node.set_anchor_point(node: drawablenodeObj, anchor_point: ncine.vec2)
+
+

Sets the transformation anchor point

+

set_blending_enabled

+
function ncine.drawable_node.set_blending_enabled(node: drawablenodeObj, enabled: boolean)
+
+

Sets the blending state for node rendering

+

set_blending_factors

+
function ncine.drawable_node.set_blending_factors(node: drawablenodeObj, src_factor: ncine.blending_factor, dest_factor: ncine.blending_factor)
+
+

Sets a specific source and destination blending factors

+

set_blending_preset

+
function ncine.drawable_node.set_blending_preset(node: drawablenodeObj, preset: ncine.blending_preset)
+
+

Sets a blending preset for source and destination blending factors

+

set_color

+
function ncine.scenenode.set_color(node: scenenodeObj, color: ncine.color)
+
+

Sets the node color

+

set_enabled

+
function ncine.scenenode.set_enabled(node: scenenodeObj, newValue: boolean)
+
+

Enables or disables both node updating and drawing

+

set_flipped_x

+
function ncine.base_sprite.set_flipped_x(sprite: basespriteObj, flipped_x: boolean)
+
+

Flips the texture rect horizontally

+

set_flipped_y

+
function ncine.base_sprite.set_flipped_y(sprite: basespriteObj, flipped_y: boolean)
+
+

Flips the texture rect vertically

+

set_layer

+
function ncine.scenenode.set_layer(node: scenenodeObj, layer: integer)
+
+

Sets the node rendering layer

+

The lowest value (bottom) is 0 and the highest one (top) is 65535.
+When the value is 0, the final layer value is inherited from the parent.

+

set_parent

+
function ncine.scenenode.set_parent(node: scenenodeObj, parent?: scenenodeObj)
+  -> boolean
+
+

Sets the parent node

+

@return — true if the parent has been set

+

set_position

+
function ncine.scenenode.set_position(node: scenenodeObj, pos: ncine.vec2)
+
+

Sets a new position for the node

+

set_rotation

+
function ncine.scenenode.set_rotation(node: scenenodeObj, rot: number)
+
+

Sets the node rotation in degrees

+

@param rot — The amount of degrees

+

set_scale

+
function ncine.scenenode.set_scale(node: scenenodeObj, factor: number)
+
+

Sets both node scale factors to the specified value

+

set_scale_x

+
function ncine.scenenode.set_scale_x(node: scenenodeObj, factor: number)
+
+

Sets the node scale X factor

+

set_scale_y

+
function ncine.scenenode.set_scale_y(node: scenenodeObj, factor: number)
+
+

Sets the node scale Y factor

+

set_size

+
function ncine.base_sprite.set_size(sprite: basespriteObj, width: number, height: number)
+
+

Sets the sprite size

+

set_texrect

+
function ncine.base_sprite.set_texrect(sprite: basespriteObj, rect: ncine.rect)
+
+

Sets the texture source rectangle for blitting

+

set_texture

+
function ncine.base_sprite.set_texture(sprite: basespriteObj, texture?: textureObj)
+
+

Sets the texture object

+

set_visit_order_state

+
function ncine.scenenode.set_visit_order_state(node: scenenodeObj, state: ncine.visit_order_state)
+
+

Sets the visit order state for the specified node

+

swap_children

+
function ncine.scenenode.swap_children(parent: scenenodeObj, firstIndex: integer, secondIndex: integer)
+  -> boolean
+
+

Swaps two children at the specified indices

+

@return — true if the two nodes have been swapped

+

swap_node_back

+
function ncine.scenenode.swap_node_back(node: scenenodeObj)
+  -> boolean
+
+

Brings this node one node back in the parent's list of children

+

@return — true if the node has been brought one position back

+

swap_node_forward

+
function ncine.scenenode.swap_node_forward(node: scenenodeObj)
+  -> boolean
+
+

Brings this node one node forward in the parent's list of children

+

@return — true if the node has been brought one position forward

+

unlink_child

+
function ncine.scenenode.unlink_child(parent: scenenodeObj, node: scenenodeObj)
+  -> boolean
+
+

Unlinks a child node from the specified parent

+

The children of the unlinked node will be reparented with the grandparent node

+

@return — true if the node has been unlinked

+
+

ncine.sprite

+
ncine.sprite
+
+
ncine.sprite
+
+
+

ncine.sprite.clone

+
function ncine.sprite.clone(sprite: spriteObj)
+  -> spriteObj
+
+
function ncine.sprite.clone(sprite: spriteObj)
+  -> spriteObj
+
+
+

ncine.sprite.delete

+
function ncine.sprite.delete(sprite: spriteObj)
+
+
function ncine.sprite.delete(sprite: spriteObj)
+
+
+

ncine.sprite.new

+
function ncine.sprite.new(parent?: scenenodeObj, texture?: textureObj, x: number, y: number)
+  -> spriteObj
+
+
function ncine.sprite.new(parent?: scenenodeObj, texture?: textureObj, pos: ncine.vec2)
+  -> spriteObj
+
+
function ncine.sprite.new(parent?: scenenodeObj, texture?: textureObj, x: number, y: number)
+  -> spriteObj
+
+
function ncine.sprite.new(parent?: scenenodeObj, texture?: textureObj, pos: ncine.vec2)
+  -> spriteObj
+
+
+

ncine.start

+
function ncine.start()
+
+
function ncine.start()
+
+
+

ncine.tex_filtering

+
enum ncine.tex_filtering
+
+
enum ncine.tex_filtering
+
+
+

ncine.tex_format

+
enum ncine.tex_format
+
+
enum ncine.tex_format
+
+
+

ncine.tex_wrap

+
enum ncine.tex_wrap
+
+
enum ncine.tex_wrap
+
+
+

ncine.text_alignment

+
enum ncine.text_alignment
+
+
enum ncine.text_alignment
+
+
+

ncine.textnode

+
ncine.textnode
+
+
ncine.textnode
+
+
+

ncine.textnode

+

add_child

+
function ncine.scenenode.add_child(parent: scenenodeObj, node: scenenodeObj)
+  -> boolean
+
+

Adds a child node to the specified parent

+

@return — true if the node has been added

+

calculate_boundaries

+
function ncine.textnode.calculate_boundaries(font: fontObj, with_kerning: boolean, string: string)
+  -> ncine.vec2
+
+

Calculates the rectangle boundaries needed to render the provided string with the specified font

+

clone

+
function ncine.textnode.clone(textnode: textnodeObj)
+  -> textnodeObj
+
+

Constructs a new textnode object as a clone of the specified one

+

Don't forget to call delete when you are done with it!

+

@param textnode — The textnode object to be cloned

+

@return — The cloned textnode object

+

delete

+
function ncine.textnode.delete(textnode: textnodeObj)
+
+

Destroys a textnode object and releases its memory

+

@param textnode — The textnode object to be destroyed

+

get_aabb

+
function ncine.drawable_node.get_aabb(node: drawablenodeObj)
+  -> ncine.rect
+
+

Returns the axis-aligned bounding box of the node area in the last frame

+

get_abs_anchor_point

+
function ncine.scenenode.get_abs_anchor_point(node: scenenodeObj)
+  -> ncine.vec2
+
+

Returns the absolute transformation anchor point in pixels

+

get_absheight

+
function ncine.textnode.get_absheight(textnode: textnodeObj)
+  -> number
+
+

Returns the absolute height of rendered text

+

get_abslineheight

+
function ncine.textnode.get_abslineheight(textnode: textnodeObj)
+  -> number
+
+

Returns the text node line height multiplied by the absolute vertical scale factor

+

get_abswidth

+
function ncine.textnode.get_abswidth(textnode: textnodeObj)
+  -> number
+
+

Returns the absolute width of rendered text

+

get_alignment

+
function ncine.textnode.get_alignment(textnode: textnodeObj)
+  -> ncine.text_alignment
+
+

Returns the horizontal text alignment of multiple lines

+

get_alpha

+
function ncine.scenenode.get_alpha(node: scenenodeObj)
+  -> number
+
+

Returns the node alpha color component

+

get_anchor_point

+
function ncine.drawable_node.get_anchor_point(node: drawablenodeObj)
+  -> ncine.vec2
+
+

Returns the transformation anchor point

+

get_child

+
function ncine.scenenode.get_child(node: scenenodeObj, index: integer)
+  -> scenenodeObj?
+
+

Returns the n-th child

+

get_child_order_index

+
function ncine.scenenode.get_child_order_index(node: scenenodeObj)
+  -> integer
+
+

Returns the order index of this node among its siblings

+

@return — The order index or zero if the node has no parent

+

get_children

+
function ncine.scenenode.get_children(node: scenenodeObj)
+  -> scenenodeObj[]
+
+

Returns the array of children

+

get_color

+
function ncine.scenenode.get_color(node: scenenodeObj)
+  -> ncine.color
+
+

Returns the node color

+

get_dest_blending_factor

+
function ncine.drawable_node.get_dest_blending_factor(node: drawablenodeObj)
+  -> ncine.blending_factor
+
+

Returns the destination blending factor

+

get_font

+
function ncine.textnode.get_font(textnode: textnodeObj)
+  -> fontObj
+
+

Returns the font object used by the textnode

+

get_height

+
function ncine.textnode.get_height(textnode: textnodeObj)
+  -> number
+
+

Returns the height of rendered text

+

get_kerning

+
function ncine.textnode.get_kerning(textnode: textnodeObj)
+  -> boolean
+
+

Returns true if kerning is enabled for this node rendering

+

get_last_frame_rendered

+
function ncine.drawable_node.get_last_frame_rendered(node: drawablenodeObj)
+  -> integer
+
+

Returns the last frame in which any of the viewports have rendered this node (node was not culled)

+

get_last_frame_updated

+
function ncine.scenenode.get_last_frame_updated(node: scenenodeObj)
+  -> integer
+
+

Returns the last frame in which any of the viewports have updated this node

+

get_layer

+
function ncine.scenenode.get_layer(node: scenenodeObj)
+  -> integer
+
+

Returns the node rendering layer

+

get_lineheight

+
function ncine.textnode.get_lineheight(textnode: textnodeObj)
+  -> number
+
+

Returns the text node line height

+

get_parent

+
function ncine.scenenode.get_parent(node: scenenodeObj)
+  -> scenenodeObj?
+
+

Returns the parent node, if there is any

+

get_position

+
function ncine.scenenode.get_position(node: scenenodeObj)
+  -> ncine.vec2
+
+

Returns the node position relative to its parent

+

get_render_mode

+
function ncine.textnode.get_render_mode(textnode: textnodeObj)
+  -> ncine.font_render_mode
+
+

Returns the render mode used to render this text node

+

get_rotation

+
function ncine.scenenode.get_rotation(node: scenenodeObj)
+  -> number
+
+

Returns the node rotation in degress

+

get_scale

+
function ncine.scenenode.get_scale(node: scenenodeObj)
+  -> ncine.vec2
+
+

Returns the node scale factors

+

get_size

+
function ncine.drawable_node.get_size(node: drawablenodeObj)
+  -> ncine.vec2
+
+

Returns the size of the node area

+

get_src_blending_factor

+
function ncine.drawable_node.get_src_blending_factor(node: drawablenodeObj)
+  -> ncine.blending_factor
+
+

eturns the source blending factor

+

get_string

+
function ncine.textnode.get_string(textnode: textnodeObj)
+  -> string
+
+

Returns the string to render

+

get_visit_order_index

+
function ncine.scenenode.get_visit_order_index(node: scenenodeObj)
+  -> integer
+
+

Returns the visit drawing order of the node

+

get_visit_order_state

+
function ncine.scenenode.get_visit_order_state(node: scenenodeObj)
+  -> ncine.visit_order_state
+
+

Returns the visit order state for the specified node

+

get_width

+
function ncine.textnode.get_width(textnode: textnodeObj)
+  -> number
+
+

Returns the width of rendered text

+

is_blending_enabled

+
function ncine.drawable_node.is_blending_enabled(node: drawablenodeObj)
+  -> boolean
+
+

Returns true if the node renders with blending enabled

+

is_enabled

+
function ncine.scenenode.is_enabled(node: scenenodeObj)
+  -> boolean
+
+

Returns true if the node is both updating and drawing

+

new

+
function ncine.textnode.new(parent?: scenenodeObj, font?: fontObj, max_string_length: integer)
+  -> textnodeObj
+
+

Constructs a textnode object with a parent scene node, a font, and a maximum text string length

+

Don't forget to call delete when you are done with it!

+

@param parent — The parent scenenode

+

@param font — The font object

+

@param max_string_length — The maximum length for the text

+

@return — A new textnode object

+

num_children

+
function ncine.scenenode.num_children(node: scenenodeObj)
+  -> integer
+
+

Returns the number of children

+

remove_all_children

+
function ncine.scenenode.remove_all_children(parent: scenenodeObj, index: any)
+  -> boolean
+
+

Removes all children from the specified parent

+

@return — true if there were at least one node to remove

+

remove_child

+
function ncine.scenenode.remove_child(parent: scenenodeObj, node: scenenodeObj)
+  -> boolean
+
+

Removes a child node from the specified parent

+

@return — true if the node has been removed

+

remove_child_at

+
function ncine.scenenode.remove_child_at(parent: scenenodeObj, index: integer)
+  -> boolean
+
+

Removes a child node at the specified index from the specified parent

+

@return — true if the node has been removed

+

set_abs_anchor_point

+
function ncine.scenenode.set_abs_anchor_point(node: scenenodeObj, pos: ncine.vec2)
+
+

Sets the absolute transformation anchor point in pixels

+

set_alignment

+
function ncine.textnode.set_alignment(textnode: textnodeObj, text_alignment: ncine.text_alignment)
+
+

Sets the horizontal text alignment of multiple lines

+

set_alpha

+
function ncine.scenenode.set_alpha(node: scenenodeObj, alpha: number)
+
+

Sets the node alpha color component

+

set_anchor_point

+
function ncine.drawable_node.set_anchor_point(node: drawablenodeObj, anchor_point: ncine.vec2)
+
+

Sets the transformation anchor point

+

set_blending_enabled

+
function ncine.drawable_node.set_blending_enabled(node: drawablenodeObj, enabled: boolean)
+
+

Sets the blending state for node rendering

+

set_blending_factors

+
function ncine.drawable_node.set_blending_factors(node: drawablenodeObj, src_factor: ncine.blending_factor, dest_factor: ncine.blending_factor)
+
+

Sets a specific source and destination blending factors

+

set_blending_preset

+
function ncine.drawable_node.set_blending_preset(node: drawablenodeObj, preset: ncine.blending_preset)
+
+

Sets a blending preset for source and destination blending factors

+

set_color

+
function ncine.scenenode.set_color(node: scenenodeObj, color: ncine.color)
+
+

Sets the node color

+

set_enabled

+
function ncine.scenenode.set_enabled(node: scenenodeObj, newValue: boolean)
+
+

Enables or disables both node updating and drawing

+

set_font

+
function ncine.textnode.set_font(textnode: textnodeObj, font: fontObj)
+
+

Sets the font object to be used by the textnode

+

set_kerning

+
function ncine.textnode.set_kerning(textnode: textnodeObj, with_kerning: boolean)
+
+

Sets the kerning flag for this node rendering

+

set_layer

+
function ncine.scenenode.set_layer(node: scenenodeObj, layer: integer)
+
+

Sets the node rendering layer

+

The lowest value (bottom) is 0 and the highest one (top) is 65535.
+When the value is 0, the final layer value is inherited from the parent.

+

set_lineheight

+
function ncine.textnode.set_lineheight(textnode: textnodeObj, line_height: number)
+
+

Sets the text node line height

+

set_parent

+
function ncine.scenenode.set_parent(node: scenenodeObj, parent?: scenenodeObj)
+  -> boolean
+
+

Sets the parent node

+

@return — true if the parent has been set

+

set_position

+
function ncine.scenenode.set_position(node: scenenodeObj, pos: ncine.vec2)
+
+

Sets a new position for the node

+

set_render_mode

+
function ncine.textnode.set_render_mode(textnode: textnodeObj, font_render_mode: ncine.font_render_mode)
+
+

Sets the render mode used to render this text node, overriding the font one

+

set_rotation

+
function ncine.scenenode.set_rotation(node: scenenodeObj, rot: number)
+
+

Sets the node rotation in degrees

+

@param rot — The amount of degrees

+

set_scale

+
function ncine.scenenode.set_scale(node: scenenodeObj, factor: number)
+
+

Sets both node scale factors to the specified value

+

set_scale_x

+
function ncine.scenenode.set_scale_x(node: scenenodeObj, factor: number)
+
+

Sets the node scale X factor

+

set_scale_y

+
function ncine.scenenode.set_scale_y(node: scenenodeObj, factor: number)
+
+

Sets the node scale Y factor

+

set_string

+
function ncine.textnode.set_string(textnode: textnodeObj, string: string)
+
+

Sets the string to render

+

set_visit_order_state

+
function ncine.scenenode.set_visit_order_state(node: scenenodeObj, state: ncine.visit_order_state)
+
+

Sets the visit order state for the specified node

+

swap_children

+
function ncine.scenenode.swap_children(parent: scenenodeObj, firstIndex: integer, secondIndex: integer)
+  -> boolean
+
+

Swaps two children at the specified indices

+

@return — true if the two nodes have been swapped

+

swap_node_back

+
function ncine.scenenode.swap_node_back(node: scenenodeObj)
+  -> boolean
+
+

Brings this node one node back in the parent's list of children

+

@return — true if the node has been brought one position back

+

swap_node_forward

+
function ncine.scenenode.swap_node_forward(node: scenenodeObj)
+  -> boolean
+
+

Brings this node one node forward in the parent's list of children

+

@return — true if the node has been brought one position forward

+

unlink_child

+
function ncine.scenenode.unlink_child(parent: scenenodeObj, node: scenenodeObj)
+  -> boolean
+
+

Unlinks a child node from the specified parent

+

The children of the unlinked node will be reparented with the grandparent node

+

@return — true if the node has been unlinked

+
+

ncine.textnode.calculate_boundaries

+
function ncine.textnode.calculate_boundaries(font: fontObj, with_kerning: boolean, string: string)
+  -> ncine.vec2
+
+
function ncine.textnode.calculate_boundaries(font: fontObj, with_kerning: boolean, string: string)
+  -> ncine.vec2
+
+
+

ncine.textnode.clone

+
function ncine.textnode.clone(textnode: textnodeObj)
+  -> textnodeObj
+
+
function ncine.textnode.clone(textnode: textnodeObj)
+  -> textnodeObj
+
+
+

ncine.textnode.delete

+
function ncine.textnode.delete(textnode: textnodeObj)
+
+
function ncine.textnode.delete(textnode: textnodeObj)
+
+
+

ncine.textnode.get_absheight

+
function ncine.textnode.get_absheight(textnode: textnodeObj)
+  -> number
+
+
function ncine.textnode.get_absheight(textnode: textnodeObj)
+  -> number
+
+
+

ncine.textnode.get_abslineheight

+
function ncine.textnode.get_abslineheight(textnode: textnodeObj)
+  -> number
+
+
function ncine.textnode.get_abslineheight(textnode: textnodeObj)
+  -> number
+
+
+

ncine.textnode.get_abswidth

+
function ncine.textnode.get_abswidth(textnode: textnodeObj)
+  -> number
+
+
function ncine.textnode.get_abswidth(textnode: textnodeObj)
+  -> number
+
+
+

ncine.textnode.get_alignment

+
function ncine.textnode.get_alignment(textnode: textnodeObj)
+  -> ncine.text_alignment
+
+
function ncine.textnode.get_alignment(textnode: textnodeObj)
+  -> ncine.text_alignment
+
+
+

ncine.textnode.get_font

+
function ncine.textnode.get_font(textnode: textnodeObj)
+  -> fontObj
+
+
function ncine.textnode.get_font(textnode: textnodeObj)
+  -> fontObj
+
+
+

ncine.textnode.get_height

+
function ncine.textnode.get_height(textnode: textnodeObj)
+  -> number
+
+
function ncine.textnode.get_height(textnode: textnodeObj)
+  -> number
+
+
+

ncine.textnode.get_kerning

+
function ncine.textnode.get_kerning(textnode: textnodeObj)
+  -> boolean
+
+
function ncine.textnode.get_kerning(textnode: textnodeObj)
+  -> boolean
+
+
+

ncine.textnode.get_lineheight

+
function ncine.textnode.get_lineheight(textnode: textnodeObj)
+  -> number
+
+
function ncine.textnode.get_lineheight(textnode: textnodeObj)
+  -> number
+
+
+

ncine.textnode.get_render_mode

+
function ncine.textnode.get_render_mode(textnode: textnodeObj)
+  -> ncine.font_render_mode
+
+
function ncine.textnode.get_render_mode(textnode: textnodeObj)
+  -> ncine.font_render_mode
+
+
+

ncine.textnode.get_string

+
function ncine.textnode.get_string(textnode: textnodeObj)
+  -> string
+
+
function ncine.textnode.get_string(textnode: textnodeObj)
+  -> string
+
+
+

ncine.textnode.get_width

+
function ncine.textnode.get_width(textnode: textnodeObj)
+  -> number
+
+
function ncine.textnode.get_width(textnode: textnodeObj)
+  -> number
+
+
+

ncine.textnode.new

+
function ncine.textnode.new(parent?: scenenodeObj, font?: fontObj, max_string_length: integer)
+  -> textnodeObj
+
+
function ncine.textnode.new(parent?: scenenodeObj, font?: fontObj, max_string_length: integer)
+  -> textnodeObj
+
+
+

ncine.textnode.set_alignment

+
function ncine.textnode.set_alignment(textnode: textnodeObj, text_alignment: ncine.text_alignment)
+
+
function ncine.textnode.set_alignment(textnode: textnodeObj, text_alignment: ncine.text_alignment)
+
+
+

ncine.textnode.set_font

+
function ncine.textnode.set_font(textnode: textnodeObj, font: fontObj)
+
+
function ncine.textnode.set_font(textnode: textnodeObj, font: fontObj)
+
+
+

ncine.textnode.set_kerning

+
function ncine.textnode.set_kerning(textnode: textnodeObj, with_kerning: boolean)
+
+
function ncine.textnode.set_kerning(textnode: textnodeObj, with_kerning: boolean)
+
+
+

ncine.textnode.set_lineheight

+
function ncine.textnode.set_lineheight(textnode: textnodeObj, line_height: number)
+
+
function ncine.textnode.set_lineheight(textnode: textnodeObj, line_height: number)
+
+
+

ncine.textnode.set_render_mode

+
function ncine.textnode.set_render_mode(textnode: textnodeObj, font_render_mode: ncine.font_render_mode)
+
+
function ncine.textnode.set_render_mode(textnode: textnodeObj, font_render_mode: ncine.font_render_mode)
+
+
+

ncine.textnode.set_string

+
function ncine.textnode.set_string(textnode: textnodeObj, string: string)
+
+
function ncine.textnode.set_string(textnode: textnodeObj, string: string)
+
+
+

ncine.texture

+
ncine.texture
+
+
ncine.texture
+
+
+

ncine.texture

+

datasize

+
function ncine.texture.datasize(texture: textureObj)
+  -> integer
+
+

Returns the amount of video memory needed to load the texture

+

delete

+
function ncine.texture.delete(texture: textureObj)
+
+

Destroys a texture object and releases its memory

+

@param texture — The texture object to be destroyed

+

get_chromakey_color

+
function ncine.texture.get_chromakey_color(texture: textureObj)
+  -> ncine.color
+
+

Returns the color treated as transparent when loading a texture

+

get_format

+
function ncine.texture.get_format(texture: textureObj)
+  -> ncine.tex_format
+
+

Returns the texture format

+

get_height

+
function ncine.texture.get_height(texture: textureObj)
+  -> integer
+
+

Returns the texture height

+

get_mag_filtering

+
function ncine.texture.get_mag_filtering(texture: textureObj)
+  -> ncine.tex_filtering
+
+

Returns the filtering mode used for magnification

+

get_min_filtering

+
function ncine.texture.get_min_filtering(texture: textureObj)
+  -> ncine.tex_filtering
+
+

Returns the filtering mode used for minification

+

get_width

+
function ncine.texture.get_width(texture: textureObj)
+  -> integer
+
+

Returns the texture width

+

get_wrap

+
function ncine.texture.get_wrap(texture: textureObj)
+  -> ncine.tex_wrap
+
+

Returns the wrap mode used for the s and t directions

+

init

+
function ncine.texture.init(texture: textureObj, name: string, format: ncine.tex_format, mip_count: integer, size: ncine.vec2)
+
+

Initializes a texture object to a blank texture

+

@param name — The name for the new texture object

+

@param format — The texture format

+

@param mip_count — The number of MIP map levels

+

@param size — The texture size

+

is_chromakey_enabled

+
function ncine.texture.is_chromakey_enabled(texture: textureObj)
+  -> boolean
+
+

Returns true if chroma key transparency will be used when loading

+

is_compressed

+
function ncine.texture.is_compressed(texture: textureObj)
+  -> boolean
+
+

Returns true if the texture holds compressed data

+

mip_levels

+
function ncine.texture.mip_levels(texture: textureObj)
+  -> integer
+
+

Returns the number of MIP map levels

+

new

+
function ncine.texture.new(filename: string)
+  -> textureObj
+
+

Constructs a texture object from an image file

+

Don't forget to call delete when you are done with it!

+

@param filename — The path to an image file

+

@return — A new texture object

+

new_init

+
function ncine.texture.new_init(name: string, format: ncine.tex_format, mip_count: integer, size: ncine.vec2)
+  -> textureObj
+
+

Constructs a blank texture

+

Don't forget to call delete when you are done with it!

+

@param name — The name for the new texture object

+

@param format — The texture format

+

@param mip_count — The number of MIP map levels

+

@param size — The texture size

+

@return — A new texture object

+

num_channels

+
function ncine.texture.num_channels(texture: textureObj)
+  -> integer
+
+

Returns the number of color channels

+

set_chromakey_color

+
function ncine.texture.set_chromakey_color(texture: textureObj, color: ncine.color)
+
+

Sets the color to be treated as transparent when loading a texture through a ncine.color table

+

set_chromakey_enabled

+
function ncine.texture.set_chromakey_enabled(texture: textureObj, state: boolean)
+
+

Sets the chroma key transparency state to use when loading

+

set_gltexture_label

+
function ncine.texture.set_gltexture_label(texture: textureObj, label: string)
+
+

Sets the OpenGL object label for the texture

+

set_mag_filtering

+
function ncine.texture.set_mag_filtering(texture: textureObj, filtering: ncine.tex_filtering)
+
+

Sets the filtering mode used for magnification

+

set_min_filtering

+
function ncine.texture.set_min_filtering(texture: textureObj, filtering: ncine.tex_filtering)
+
+

Sets the filtering mode used for minification

+

set_wrap

+
function ncine.texture.set_wrap(texture: textureObj, wrap: ncine.tex_wrap)
+
+

Sets the wrap mode used for the s and t directions

+
+

ncine.texture.datasize

+
function ncine.texture.datasize(texture: textureObj)
+  -> integer
+
+
function ncine.texture.datasize(texture: textureObj)
+  -> integer
+
+
+

ncine.texture.delete

+
function ncine.texture.delete(texture: textureObj)
+
+
function ncine.texture.delete(texture: textureObj)
+
+
+

ncine.texture.get_chromakey_color

+
function ncine.texture.get_chromakey_color(texture: textureObj)
+  -> ncine.color
+
+
function ncine.texture.get_chromakey_color(texture: textureObj)
+  -> ncine.color
+
+
+

ncine.texture.get_format

+
function ncine.texture.get_format(texture: textureObj)
+  -> ncine.tex_format
+
+
function ncine.texture.get_format(texture: textureObj)
+  -> ncine.tex_format
+
+
+

ncine.texture.get_height

+
function ncine.texture.get_height(texture: textureObj)
+  -> integer
+
+
function ncine.texture.get_height(texture: textureObj)
+  -> integer
+
+
+

ncine.texture.get_mag_filtering

+
function ncine.texture.get_mag_filtering(texture: textureObj)
+  -> ncine.tex_filtering
+
+
function ncine.texture.get_mag_filtering(texture: textureObj)
+  -> ncine.tex_filtering
+
+
+

ncine.texture.get_min_filtering

+
function ncine.texture.get_min_filtering(texture: textureObj)
+  -> ncine.tex_filtering
+
+
function ncine.texture.get_min_filtering(texture: textureObj)
+  -> ncine.tex_filtering
+
+
+

ncine.texture.get_width

+
function ncine.texture.get_width(texture: textureObj)
+  -> integer
+
+
function ncine.texture.get_width(texture: textureObj)
+  -> integer
+
+
+

ncine.texture.get_wrap

+
function ncine.texture.get_wrap(texture: textureObj)
+  -> ncine.tex_wrap
+
+
function ncine.texture.get_wrap(texture: textureObj)
+  -> ncine.tex_wrap
+
+
+

ncine.texture.init

+
function ncine.texture.init(texture: textureObj, name: string, format: ncine.tex_format, mip_count: integer, size: ncine.vec2)
+
+
function ncine.texture.init(texture: textureObj, name: string, format: ncine.tex_format, mip_count: integer, x: integer, y: integer)
+
+
function ncine.texture.init(texture: textureObj, name: string, format: ncine.tex_format, mip_count: integer, size: ncine.vec2)
+
+
function ncine.texture.init(texture: textureObj, name: string, format: ncine.tex_format, mip_count: integer, x: integer, y: integer)
+
+
+

ncine.texture.is_chromakey_enabled

+
function ncine.texture.is_chromakey_enabled(texture: textureObj)
+  -> boolean
+
+
function ncine.texture.is_chromakey_enabled(texture: textureObj)
+  -> boolean
+
+
+

ncine.texture.is_compressed

+
function ncine.texture.is_compressed(texture: textureObj)
+  -> boolean
+
+
function ncine.texture.is_compressed(texture: textureObj)
+  -> boolean
+
+
+

ncine.texture.mip_levels

+
function ncine.texture.mip_levels(texture: textureObj)
+  -> integer
+
+
function ncine.texture.mip_levels(texture: textureObj)
+  -> integer
+
+
+

ncine.texture.new

+
function ncine.texture.new(filename: string)
+  -> textureObj
+
+
function ncine.texture.new(filename: string)
+  -> textureObj
+
+
+

ncine.texture.new_init

+
function ncine.texture.new_init(name: string, format: ncine.tex_format, mip_count: integer, size: ncine.vec2)
+  -> textureObj
+
+
function ncine.texture.new_init(name: string, format: ncine.tex_format, mip_count: integer, x: integer, y: integer)
+  -> textureObj
+
+
function ncine.texture.new_init(name: string, format: ncine.tex_format, mip_count: integer, size: ncine.vec2)
+  -> textureObj
+
+
function ncine.texture.new_init(name: string, format: ncine.tex_format, mip_count: integer, x: integer, y: integer)
+  -> textureObj
+
+
+

ncine.texture.num_channels

+
function ncine.texture.num_channels(texture: textureObj)
+  -> integer
+
+
function ncine.texture.num_channels(texture: textureObj)
+  -> integer
+
+
+

ncine.texture.set_chromakey_color

+
function ncine.texture.set_chromakey_color(texture: textureObj, color: ncine.color)
+
+
function ncine.texture.set_chromakey_color(texture: textureObj, r: number, g: number, b: number, a: number)
+
+
function ncine.texture.set_chromakey_color(texture: textureObj, color: ncine.color)
+
+
function ncine.texture.set_chromakey_color(texture: textureObj, r: number, g: number, b: number, a: number)
+
+
+

ncine.texture.set_chromakey_enabled

+
function ncine.texture.set_chromakey_enabled(texture: textureObj, state: boolean)
+
+
function ncine.texture.set_chromakey_enabled(texture: textureObj, state: boolean)
+
+
+

ncine.texture.set_gltexture_label

+
function ncine.texture.set_gltexture_label(texture: textureObj, label: string)
+
+
function ncine.texture.set_gltexture_label(texture: textureObj, label: string)
+
+
+

ncine.texture.set_mag_filtering

+
function ncine.texture.set_mag_filtering(texture: textureObj, filtering: ncine.tex_filtering)
+
+
function ncine.texture.set_mag_filtering(texture: textureObj, filtering: ncine.tex_filtering)
+
+
+

ncine.texture.set_min_filtering

+
function ncine.texture.set_min_filtering(texture: textureObj, filtering: ncine.tex_filtering)
+
+
function ncine.texture.set_min_filtering(texture: textureObj, filtering: ncine.tex_filtering)
+
+
+

ncine.texture.set_wrap

+
function ncine.texture.set_wrap(texture: textureObj, wrap: ncine.tex_wrap)
+
+
function ncine.texture.set_wrap(texture: textureObj, wrap: ncine.tex_wrap)
+
+
+

ncine.texture_cut_mode

+
enum ncine.texture_cut_mode
+
+
enum ncine.texture_cut_mode
+
+
+

ncine.timestamp

+
table
+
+
table
+
+
+

ncine.timestamp.hash_file_stat

+
function ncine.timestamp.hash_file_stat(filepath: string)
+  -> integer
+
+
function ncine.timestamp.hash_file_stat(filepath: string)
+  -> integer
+
+
+

ncine.timestamp.hash_string

+
function ncine.timestamp.hash_string(string: string)
+  -> integer
+
+
function ncine.timestamp.hash_string(string: string)
+  -> integer
+
+
+

ncine.timestamp.microseconds

+
function ncine.timestamp.microseconds(counter: integer)
+  -> number
+
+
function ncine.timestamp.microseconds(counter: integer)
+  -> number
+
+
+

ncine.timestamp.microseconds_since

+
function ncine.timestamp.microseconds_since(counter: integer)
+  -> number
+
+
function ncine.timestamp.microseconds_since(counter: integer)
+  -> number
+
+
+

ncine.timestamp.milliseconds

+
function ncine.timestamp.milliseconds(counter: integer)
+  -> number
+
+
function ncine.timestamp.milliseconds(counter: integer)
+  -> number
+
+
+

ncine.timestamp.milliseconds_since

+
function ncine.timestamp.milliseconds_since(counter: integer)
+  -> number
+
+
function ncine.timestamp.milliseconds_since(counter: integer)
+  -> number
+
+
+

ncine.timestamp.nanoseconds

+
function ncine.timestamp.nanoseconds(counter: integer)
+  -> number
+
+
function ncine.timestamp.nanoseconds(counter: integer)
+  -> number
+
+
+

ncine.timestamp.nanoseconds_since

+
function ncine.timestamp.nanoseconds_since(counter: integer)
+  -> number
+
+
function ncine.timestamp.nanoseconds_since(counter: integer)
+  -> number
+
+
+

ncine.timestamp.now

+
function ncine.timestamp.now()
+  -> integer
+
+
function ncine.timestamp.now()
+  -> integer
+
+
+

ncine.timestamp.scan_hash_string

+
function ncine.timestamp.scan_hash_string(string: string)
+  -> integer
+
+
function ncine.timestamp.scan_hash_string(string: string)
+  -> integer
+
+
+

ncine.timestamp.seconds

+
function ncine.timestamp.seconds(counter: integer)
+  -> number
+
+
function ncine.timestamp.seconds(counter: integer)
+  -> number
+
+
+

ncine.timestamp.seconds_since

+
function ncine.timestamp.seconds_since(counter: integer)
+  -> number
+
+
function ncine.timestamp.seconds_since(counter: integer)
+  -> number
+
+
+

ncine.timestamp.ticks_since

+
function ncine.timestamp.ticks_since(counter: integer)
+  -> integer
+
+
function ncine.timestamp.ticks_since(counter: integer)
+  -> integer
+
+
+

ncine.vec2

+

add

+
function ncine.vec2.add(vec0: ncine.vec2, vec1: ncine.vec2)
+  -> ncine.vec2
+
+

Adds two vectors together, component-wise

+

contains

+
function ncine.vec2.contains(rect0: ncine.rect, rect1: ncine.rect)
+  -> boolean
+
+

Returns true if the other rectangle is contained inside this one

+

contains_point

+
function ncine.vec2.contains_point(rect: ncine.rect, x: number, y: number)
+  -> boolean
+
+

Returns true if the point is inside this rectangle

+

create

+
function ncine.vec2.create(x: number, y: number)
+  -> ncine.vec2
+
+

Creates a vec2 table from its components

+

@param x — The X component

+

@param y — The Y component

+

div

+
function ncine.vec2.div(vec0: ncine.vec2, vec1: ncine.vec2)
+  -> ncine.vec2
+
+

Divides the first vector by the second one, component-wise

+

dot

+
function ncine.vec2.dot(vec0: ncine.vec2, vec1: ncine.vec2)
+  -> number
+
+

Returns the dot product between the two vectors

+

get_center

+
function ncine.vec2.get_center(rect: ncine.rect)
+  -> ncine.vec2
+
+

Calculates the center of the rectangle

+

@return — The center coordinates

+

get_max

+
function ncine.vec2.get_max(rect: ncine.rect)
+  -> ncine.vec2
+
+

Calculates the maximum coordinates of the rectangle

+

@return — The maximum coordinates

+

get_min

+
function ncine.vec2.get_min(rect: ncine.rect)
+  -> ncine.vec2
+
+

Calculates the minimum coordinates of the rectangle

+

@return — The minimum coordinates

+

intersect

+
function ncine.vec2.intersect(rect0: ncine.rect, rect1: ncine.rect)
+  -> ncine.rect
+
+

Intersects this rectangle with the other rectangle

+

invert_size

+
function ncine.vec2.invert_size(rect: ncine.rect)
+  -> ncine.rect
+
+

Inverts rectangle size and moves (x, y) to a different angle

+

length

+
function ncine.vec2.length(vec: ncine.vec2)
+  -> number
+
+

Returns the length of the vector

+

mul

+
function ncine.vec2.mul(vec0: ncine.vec2, vec1: ncine.vec2)
+  -> ncine.vec2
+
+

Multiplies two vectors together, component-wise

+

normalized

+
function ncine.vec2.normalized(vec: ncine.vec2)
+  -> ncine.vec2
+
+

Returns a normalized version of the vector

+

overlaps

+
function ncine.vec2.overlaps(rect0: ncine.rect, rect1: ncine.rect)
+  -> boolean
+
+

Returns true if this rect does overlap the other rectangle in any way

+

set_center

+
function ncine.vec2.set_center(rect: ncine.rect, x: number, y: number)
+
+

Retains rectangle size but moves its center to another position

+

sqrlength

+
function ncine.vec2.sqrlength(vec: ncine.vec2)
+  -> number
+
+

Returns the squared length of the vector

+

sub

+
function ncine.vec2.sub(vec0: ncine.vec2, vec1: ncine.vec2)
+  -> ncine.vec2
+
+

Subtracts the second vector from the first one, component-wise

+

x

+
number
+
+

The X component

+

y

+
number
+
+

The Y component

+
+

ncine.vec2

+
ncine.vec2
+
+
ncine.vec2
+
+
+

ncine.vec2.add

+
function ncine.vec2.add(vec0: ncine.vec2, vec1: ncine.vec2)
+  -> ncine.vec2
+
+
function ncine.vec2.add(vec0: ncine.vec2, scalar: number)
+  -> ncine.vec2
+
+
function ncine.vec2.add(vec0: ncine.vec2, vec1: ncine.vec2)
+  -> ncine.vec2
+
+
function ncine.vec2.add(vec0: ncine.vec2, scalar: number)
+  -> ncine.vec2
+
+
+

ncine.vec2.contains

+
function ncine.vec2.contains(rect0: ncine.rect, rect1: ncine.rect)
+  -> boolean
+
+
function ncine.vec2.contains(rect0: ncine.rect, rect1: ncine.rect)
+  -> boolean
+
+
+

ncine.vec2.contains_point

+
function ncine.vec2.contains_point(rect: ncine.rect, x: number, y: number)
+  -> boolean
+
+
function ncine.vec2.contains_point(rect: ncine.rect, x: number, y: number)
+  -> boolean
+
+
+

ncine.vec2.create

+
function ncine.vec2.create(x: number, y: number)
+  -> ncine.vec2
+
+
function ncine.vec2.create(x: number, y: number)
+  -> ncine.vec2
+
+
+

ncine.vec2.div

+
function ncine.vec2.div(vec0: ncine.vec2, vec1: ncine.vec2)
+  -> ncine.vec2
+
+
function ncine.vec2.div(vec: ncine.vec2, scalar: number)
+  -> ncine.vec2
+
+
function ncine.vec2.div(vec0: ncine.vec2, vec1: ncine.vec2)
+  -> ncine.vec2
+
+
function ncine.vec2.div(vec: ncine.vec2, scalar: number)
+  -> ncine.vec2
+
+
+

ncine.vec2.dot

+
function ncine.vec2.dot(vec0: ncine.vec2, vec1: ncine.vec2)
+  -> number
+
+
function ncine.vec2.dot(vec0: ncine.vec2, vec1: ncine.vec2)
+  -> number
+
+
+

ncine.vec2.get_center

+
function ncine.vec2.get_center(rect: ncine.rect)
+  -> ncine.vec2
+
+
function ncine.vec2.get_center(rect: ncine.rect)
+  -> ncine.vec2
+
+
+

ncine.vec2.get_max

+
function ncine.vec2.get_max(rect: ncine.rect)
+  -> ncine.vec2
+
+
function ncine.vec2.get_max(rect: ncine.rect)
+  -> ncine.vec2
+
+
+

ncine.vec2.get_min

+
function ncine.vec2.get_min(rect: ncine.rect)
+  -> ncine.vec2
+
+
function ncine.vec2.get_min(rect: ncine.rect)
+  -> ncine.vec2
+
+
+

ncine.vec2.intersect

+
function ncine.vec2.intersect(rect0: ncine.rect, rect1: ncine.rect)
+  -> ncine.rect
+
+
function ncine.vec2.intersect(rect0: ncine.rect, rect1: ncine.rect)
+  -> ncine.rect
+
+
+

ncine.vec2.invert_size

+
function ncine.vec2.invert_size(rect: ncine.rect)
+  -> ncine.rect
+
+
function ncine.vec2.invert_size(rect: ncine.rect)
+  -> ncine.rect
+
+
+

ncine.vec2.length

+
function ncine.vec2.length(vec: ncine.vec2)
+  -> number
+
+
function ncine.vec2.length(vec: ncine.vec2)
+  -> number
+
+
+

ncine.vec2.mul

+
function ncine.vec2.mul(vec0: ncine.vec2, vec1: ncine.vec2)
+  -> ncine.vec2
+
+
function ncine.vec2.mul(vec: ncine.vec2, scalar: number)
+  -> ncine.vec2
+
+
function ncine.vec2.mul(vec0: ncine.vec2, vec1: ncine.vec2)
+  -> ncine.vec2
+
+
function ncine.vec2.mul(vec: ncine.vec2, scalar: number)
+  -> ncine.vec2
+
+
+

ncine.vec2.normalized

+
function ncine.vec2.normalized(vec: ncine.vec2)
+  -> ncine.vec2
+
+
function ncine.vec2.normalized(vec: ncine.vec2)
+  -> ncine.vec2
+
+
+

ncine.vec2.overlaps

+
function ncine.vec2.overlaps(rect0: ncine.rect, rect1: ncine.rect)
+  -> boolean
+
+
function ncine.vec2.overlaps(rect0: ncine.rect, rect1: ncine.rect)
+  -> boolean
+
+
+

ncine.vec2.set_center

+
function ncine.vec2.set_center(rect: ncine.rect, x: number, y: number)
+
+
function ncine.vec2.set_center(rect: ncine.rect, x: number, y: number)
+
+
+

ncine.vec2.sqrlength

+
function ncine.vec2.sqrlength(vec: ncine.vec2)
+  -> number
+
+
function ncine.vec2.sqrlength(vec: ncine.vec2)
+  -> number
+
+
+

ncine.vec2.sub

+
function ncine.vec2.sub(vec0: ncine.vec2, vec1: ncine.vec2)
+  -> ncine.vec2
+
+
function ncine.vec2.sub(vec: ncine.vec2, scalar: number)
+  -> ncine.vec2
+
+
function ncine.vec2.sub(vec0: ncine.vec2, vec1: ncine.vec2)
+  -> ncine.vec2
+
+
function ncine.vec2.sub(vec: ncine.vec2, scalar: number)
+  -> ncine.vec2
+
+
+

ncine.vec3

+
ncine.vec3
+
+
ncine.vec3
+
+
+

ncine.vec3

+

add

+
function ncine.vec3.add(vec0: ncine.vec3, vec1: ncine.vec3)
+  -> ncine.vec3
+
+

Adds two vectors together, component-wise

+

create

+
function ncine.vec3.create(x: number, y: number, z: number)
+  -> ncine.vec3
+
+

Creates a vec3 table from its components

+

@param x — The X component

+

@param y — The Y component

+

@param z — The Z component

+

div

+
function ncine.vec3.div(vec0: ncine.vec3, vec1: ncine.vec3)
+  -> ncine.vec3
+
+

Divides the first vector by the second one, component-wise

+

dot

+
function ncine.vec3.dot(vec0: ncine.vec3, vec1: ncine.vec3)
+  -> number
+
+

Returns the dot product between the two vectors

+

length

+
function ncine.vec3.length(vec: ncine.vec3)
+  -> number
+
+

Returns the length of the vector

+

mul

+
function ncine.vec3.mul(vec0: ncine.vec3, vec1: ncine.vec3)
+  -> ncine.vec3
+
+

Multiplies two vectors together, component-wise

+

normalized

+
function ncine.vec3.normalized(vec: ncine.vec3)
+  -> ncine.vec3
+
+

Returns a normalized version of the vector

+

sqrlength

+
function ncine.vec3.sqrlength(vec: ncine.vec3)
+  -> number
+
+

Returns the squared length of the vector

+

sub

+
function ncine.vec3.sub(vec0: ncine.vec3, vec1: ncine.vec3)
+  -> ncine.vec3
+
+

Subtracts the second vector from the first one, component-wise

+

x

+
number
+
+

The X component

+

y

+
number
+
+

The Y component

+

z

+
number
+
+

The Z component

+
+

ncine.vec3.add

+
function ncine.vec3.add(vec0: ncine.vec3, vec1: ncine.vec3)
+  -> ncine.vec3
+
+
function ncine.vec3.add(vec0: ncine.vec3, scalar: number)
+  -> ncine.vec3
+
+
function ncine.vec3.add(vec0: ncine.vec3, vec1: ncine.vec3)
+  -> ncine.vec3
+
+
function ncine.vec3.add(vec0: ncine.vec3, scalar: number)
+  -> ncine.vec3
+
+
+

ncine.vec3.create

+
function ncine.vec3.create(x: number, y: number, z: number)
+  -> ncine.vec3
+
+
function ncine.vec3.create(x: number, y: number, z: number)
+  -> ncine.vec3
+
+
+

ncine.vec3.div

+
function ncine.vec3.div(vec0: ncine.vec3, vec1: ncine.vec3)
+  -> ncine.vec3
+
+
function ncine.vec3.div(vec: ncine.vec3, scalar: number)
+  -> ncine.vec3
+
+
function ncine.vec3.div(vec0: ncine.vec3, vec1: ncine.vec3)
+  -> ncine.vec3
+
+
function ncine.vec3.div(vec: ncine.vec3, scalar: number)
+  -> ncine.vec3
+
+
+

ncine.vec3.dot

+
function ncine.vec3.dot(vec0: ncine.vec3, vec1: ncine.vec3)
+  -> number
+
+
function ncine.vec3.dot(vec0: ncine.vec3, vec1: ncine.vec3)
+  -> number
+
+
+

ncine.vec3.length

+
function ncine.vec3.length(vec: ncine.vec3)
+  -> number
+
+
function ncine.vec3.length(vec: ncine.vec3)
+  -> number
+
+
+

ncine.vec3.mul

+
function ncine.vec3.mul(vec0: ncine.vec3, vec1: ncine.vec3)
+  -> ncine.vec3
+
+
function ncine.vec3.mul(vec: ncine.vec3, scalar: number)
+  -> ncine.vec3
+
+
function ncine.vec3.mul(vec0: ncine.vec3, vec1: ncine.vec3)
+  -> ncine.vec3
+
+
function ncine.vec3.mul(vec: ncine.vec3, scalar: number)
+  -> ncine.vec3
+
+
+

ncine.vec3.normalized

+
function ncine.vec3.normalized(vec: ncine.vec3)
+  -> ncine.vec3
+
+
function ncine.vec3.normalized(vec: ncine.vec3)
+  -> ncine.vec3
+
+
+

ncine.vec3.sqrlength

+
function ncine.vec3.sqrlength(vec: ncine.vec3)
+  -> number
+
+
function ncine.vec3.sqrlength(vec: ncine.vec3)
+  -> number
+
+
+

ncine.vec3.sub

+
function ncine.vec3.sub(vec0: ncine.vec3, vec1: ncine.vec3)
+  -> ncine.vec3
+
+
function ncine.vec3.sub(vec: ncine.vec3, scalar: number)
+  -> ncine.vec3
+
+
function ncine.vec3.sub(vec0: ncine.vec3, vec1: ncine.vec3)
+  -> ncine.vec3
+
+
function ncine.vec3.sub(vec: ncine.vec3, scalar: number)
+  -> ncine.vec3
+
+
+

ncine.vec4

+

add

+
function ncine.vec4.add(vec0: ncine.vec4, vec1: ncine.vec4)
+  -> ncine.vec4
+
+

Adds two vectors together, component-wise

+

create

+
function ncine.vec4.create(x: number, y: number, z: number, w: number)
+  -> ncine.vec4
+
+

Creates a vec4 table from its components

+

@param x — The X component

+

@param y — The Y component

+

@param z — The Z component

+

@param w — The W component

+

div

+
function ncine.vec4.div(vec0: ncine.vec4, vec1: ncine.vec4)
+  -> ncine.vec4
+
+

Divides the first vector by the second one, component-wise

+

dot

+
function ncine.vec4.dot(vec0: ncine.vec4, vec1: ncine.vec4)
+  -> number
+
+

Returns the dot product between the two vectors

+

length

+
function ncine.vec4.length(vec: ncine.vec4)
+  -> number
+
+

Returns the length of the vector

+

mul

+
function ncine.vec4.mul(vec0: ncine.vec4, vec1: ncine.vec4)
+  -> ncine.vec4
+
+

Multiplies two vectors together, component-wise

+

normalized

+
function ncine.vec4.normalized(vec: ncine.vec4)
+  -> ncine.vec4
+
+

Returns a normalized version of the vector

+

sqrlength

+
function ncine.vec4.sqrlength(vec: ncine.vec4)
+  -> number
+
+

Returns the squared length of the vector

+

sub

+
function ncine.vec4.sub(vec0: ncine.vec4, vec1: ncine.vec4)
+  -> ncine.vec4
+
+

Subtracts the second vector from the first one, component-wise

+

w

+
number
+
+

The W component

+

x

+
number
+
+

The X component

+

y

+
number
+
+

The Y component

+

z

+
number
+
+

The Z component

+
+

ncine.vec4

+
ncine.vec4
+
+
ncine.vec4
+
+
+

ncine.vec4.add

+
function ncine.vec4.add(vec0: ncine.vec4, vec1: ncine.vec4)
+  -> ncine.vec4
+
+
function ncine.vec4.add(vec0: ncine.vec4, scalar: number)
+  -> ncine.vec4
+
+
function ncine.vec4.add(vec0: ncine.vec4, vec1: ncine.vec4)
+  -> ncine.vec4
+
+
function ncine.vec4.add(vec0: ncine.vec4, scalar: number)
+  -> ncine.vec4
+
+
+

ncine.vec4.create

+
function ncine.vec4.create(x: number, y: number, z: number, w: number)
+  -> ncine.vec4
+
+
function ncine.vec4.create(x: number, y: number, z: number, w: number)
+  -> ncine.vec4
+
+
+

ncine.vec4.div

+
function ncine.vec4.div(vec0: ncine.vec4, vec1: ncine.vec4)
+  -> ncine.vec4
+
+
function ncine.vec4.div(vec: ncine.vec4, scalar: number)
+  -> ncine.vec4
+
+
function ncine.vec4.div(vec0: ncine.vec4, vec1: ncine.vec4)
+  -> ncine.vec4
+
+
function ncine.vec4.div(vec: ncine.vec4, scalar: number)
+  -> ncine.vec4
+
+
+

ncine.vec4.dot

+
function ncine.vec4.dot(vec0: ncine.vec4, vec1: ncine.vec4)
+  -> number
+
+
function ncine.vec4.dot(vec0: ncine.vec4, vec1: ncine.vec4)
+  -> number
+
+
+

ncine.vec4.length

+
function ncine.vec4.length(vec: ncine.vec4)
+  -> number
+
+
function ncine.vec4.length(vec: ncine.vec4)
+  -> number
+
+
+

ncine.vec4.mul

+
function ncine.vec4.mul(vec0: ncine.vec4, vec1: ncine.vec4)
+  -> ncine.vec4
+
+
function ncine.vec4.mul(vec: ncine.vec4, scalar: number)
+  -> ncine.vec4
+
+
function ncine.vec4.mul(vec0: ncine.vec4, vec1: ncine.vec4)
+  -> ncine.vec4
+
+
function ncine.vec4.mul(vec: ncine.vec4, scalar: number)
+  -> ncine.vec4
+
+
+

ncine.vec4.normalized

+
function ncine.vec4.normalized(vec: ncine.vec4)
+  -> ncine.vec4
+
+
function ncine.vec4.normalized(vec: ncine.vec4)
+  -> ncine.vec4
+
+
+

ncine.vec4.sqrlength

+
function ncine.vec4.sqrlength(vec: ncine.vec4)
+  -> number
+
+
function ncine.vec4.sqrlength(vec: ncine.vec4)
+  -> number
+
+
+

ncine.vec4.sub

+
function ncine.vec4.sub(vec0: ncine.vec4, vec1: ncine.vec4)
+  -> ncine.vec4
+
+
function ncine.vec4.sub(vec: ncine.vec4, scalar: number)
+  -> ncine.vec4
+
+
function ncine.vec4.sub(vec0: ncine.vec4, vec1: ncine.vec4)
+  -> ncine.vec4
+
+
function ncine.vec4.sub(vec: ncine.vec4, scalar: number)
+  -> ncine.vec4
+
+
+

ncine.viewport

+
ncine.viewport
+
+
ncine.viewport
+
+
+

ncine.viewport

+

clear_chain

+
function ncine.viewport.clear_chain()
+
+

Clears the array of viewports to be drawn before the screen

+

delete

+
function ncine.viewport.delete(viewport: viewportObj)
+
+

Destroys a viewport object and releases its memory

+

@param viewport — The viewport object to be destroyed

+

get_camera

+
function ncine.viewport.get_camera(viewport: viewportObj)
+  -> cameraObj?
+
+

Returns the camera used for rendering

+

get_clear_color

+
function ncine.viewport.get_clear_color(viewport: viewportObj)
+  -> ncine.color
+
+

Returns the viewport clear color as a ncine.color table

+

get_clear_mode

+
function ncine.viewport.get_clear_mode(viewport: viewportObj)
+  -> ncine.clear_mode
+
+

Returns the viewport clear mode

+

get_culling_rect

+
function ncine.viewport.get_culling_rect(viewport: viewportObj)
+  -> ncine.rect
+
+

Returns the rectangle for screen culling

+

get_depth_stencil_format

+
function ncine.viewport.get_depth_stencil_format(viewport: viewportObj)
+  -> ncine.depth_stencil_format
+
+

Returns the depth and stencil format of the viewport's FBO renderbuffer

+

get_height

+
function ncine.viewport.get_height(viewport: viewportObj)
+  -> integer
+
+

Returns viewport's FBO height or zero if no texture is present

+

get_last_frame_cleared

+
function ncine.viewport.get_last_frame_cleared(viewport: viewportObj)
+  -> integer
+
+

Returns the last frame this viewport was cleared

+

get_num_color_attachments

+
function ncine.viewport.get_num_color_attachments(viewport: viewportObj)
+  -> integer
+
+

Returns the number of color attachments of the viewport's FBO

+

get_rootnode

+
function ncine.viewport.get_rootnode(viewport: viewportObj)
+  -> scenenodeObj?
+
+

Returns the root node

+

get_scissor_rect

+
function ncine.viewport.get_scissor_rect(viewport: viewportObj)
+  -> ncine.rect
+
+

Returns the OpenGL scissor test rectangle

+

get_texture

+
function ncine.viewport.get_texture(viewport: viewportObj, index: integer)
+  -> textureObj?
+
+

Returns the texture at the specified viewport's FBO color attachment index, if any

+

get_type

+
function ncine.viewport.get_type(viewport: viewportObj)
+  -> ncine.viewport_type
+
+

Returns the viewport type

+

get_viewport_rect

+
function ncine.viewport.get_viewport_rect(viewport: viewportObj)
+  -> ncine.rect
+
+

Returns the OpenGL viewport rectangle

+

get_width

+
function ncine.viewport.get_width(viewport: viewportObj)
+  -> integer
+
+

Returns viewport's FBO width or zero if no texture is present

+

new

+
function ncine.viewport.new()
+  -> viewportObj
+
+

Constructs a viewport object

+

Don't forget to call delete when you are done with it!

+

@return — A new viewport object

+

push_back_chain

+
function ncine.viewport.push_back_chain(viewport: viewportObj)
+
+

Pushes a viewport to the back of the array of viewports to be drawn before the screen

+

push_front_chain

+
function ncine.viewport.push_front_chain(viewport: viewportObj)
+
+

Pushes a viewport to the front of the array of viewports to be drawn before the screen

+

remove_all_textures

+
function ncine.viewport.remove_all_textures(viewport: viewportObj)
+  -> boolean
+
+

Removes all textures and the depth stencil renderbuffer from the viewport's FBO

+

@return — True if the viewport is not the screen and all textures have been removed

+

set_camera

+
function ncine.viewport.set_camera(viewport: viewportObj, camera?: cameraObj)
+
+

Sets the camera to be used for rendering

+

@param camera — Can be nil to use the default one

+

set_clear_color

+
function ncine.viewport.set_clear_color(viewport: viewportObj, clear_color: ncine.color)
+
+

Sets the viewport clear color through a ncine.color table

+

set_clear_mode

+
function ncine.viewport.set_clear_mode(viewport: viewportObj, clear_mode: ncine.clear_mode)
+
+

Sets the viewport clear mode

+

set_depth_stencil_format

+
function ncine.viewport.set_depth_stencil_format(viewport: viewportObj, depth_stencil_format: ncine.depth_stencil_format)
+  -> boolean
+
+

Sets the depth and stencil format of the viewport's FBO renderbuffer

+

@return — True if a new depth and stencil format has been successfully set

+

set_glframebuffer_label

+
function ncine.viewport.set_glframebuffer_label(viewport: viewportObj, label: string)
+
+

Sets the OpenGL object label for the viewport framebuffer object

+

set_rootnode

+
function ncine.viewport.set_rootnode(viewport: viewportObj, rootnode?: scenenodeObj)
+
+

Sets or removes the root node

+

set_scissor_rect

+
function ncine.viewport.set_scissor_rect(viewport: viewportObj, rect: ncine.rect)
+
+

Sets the OpenGL scissor test rectangle through a ncine.rect table

+

set_texture

+
function ncine.viewport.set_texture(viewport: viewportObj, index: integer, texture?: textureObj)
+  -> boolean
+
+

Adds or removes a texture at the specified viewport's FBO color attachment index

+

@return — True if a texture has been added or removed successfully

+

set_viewport_rect

+
function ncine.viewport.set_viewport_rect(viewport: viewportObj, rect: ncine.rect)
+
+

Sets the OpenGL viewport rectangle through a ncine.rect table

+
+

ncine.viewport.clear_chain

+
function ncine.viewport.clear_chain()
+
+
function ncine.viewport.clear_chain()
+
+
+

ncine.viewport.delete

+
function ncine.viewport.delete(viewport: viewportObj)
+
+
function ncine.viewport.delete(viewport: viewportObj)
+
+
+

ncine.viewport.get_camera

+
function ncine.viewport.get_camera(viewport: viewportObj)
+  -> cameraObj?
+
+
function ncine.viewport.get_camera(viewport: viewportObj)
+  -> cameraObj?
+
+
+

ncine.viewport.get_clear_color

+
function ncine.viewport.get_clear_color(viewport: viewportObj)
+  -> ncine.color
+
+
function ncine.viewport.get_clear_color(viewport: viewportObj)
+  -> ncine.color
+
+
+

ncine.viewport.get_clear_mode

+
function ncine.viewport.get_clear_mode(viewport: viewportObj)
+  -> ncine.clear_mode
+
+
function ncine.viewport.get_clear_mode(viewport: viewportObj)
+  -> ncine.clear_mode
+
+
+

ncine.viewport.get_culling_rect

+
function ncine.viewport.get_culling_rect(viewport: viewportObj)
+  -> ncine.rect
+
+
function ncine.viewport.get_culling_rect(viewport: viewportObj)
+  -> ncine.rect
+
+
+

ncine.viewport.get_depth_stencil_format

+
function ncine.viewport.get_depth_stencil_format(viewport: viewportObj)
+  -> ncine.depth_stencil_format
+
+
function ncine.viewport.get_depth_stencil_format(viewport: viewportObj)
+  -> ncine.depth_stencil_format
+
+
+

ncine.viewport.get_height

+
function ncine.viewport.get_height(viewport: viewportObj)
+  -> integer
+
+
function ncine.viewport.get_height(viewport: viewportObj)
+  -> integer
+
+
+

ncine.viewport.get_last_frame_cleared

+
function ncine.viewport.get_last_frame_cleared(viewport: viewportObj)
+  -> integer
+
+
function ncine.viewport.get_last_frame_cleared(viewport: viewportObj)
+  -> integer
+
+
+

ncine.viewport.get_num_color_attachments

+
function ncine.viewport.get_num_color_attachments(viewport: viewportObj)
+  -> integer
+
+
function ncine.viewport.get_num_color_attachments(viewport: viewportObj)
+  -> integer
+
+
+

ncine.viewport.get_rootnode

+
function ncine.viewport.get_rootnode(viewport: viewportObj)
+  -> scenenodeObj?
+
+
function ncine.viewport.get_rootnode(viewport: viewportObj)
+  -> scenenodeObj?
+
+
+

ncine.viewport.get_scissor_rect

+
function ncine.viewport.get_scissor_rect(viewport: viewportObj)
+  -> ncine.rect
+
+
function ncine.viewport.get_scissor_rect(viewport: viewportObj)
+  -> ncine.rect
+
+
+

ncine.viewport.get_texture

+
function ncine.viewport.get_texture(viewport: viewportObj, index: integer)
+  -> textureObj?
+
+
function ncine.viewport.get_texture(viewport: viewportObj, index: integer)
+  -> textureObj?
+
+
+

ncine.viewport.get_type

+
function ncine.viewport.get_type(viewport: viewportObj)
+  -> ncine.viewport_type
+
+
function ncine.viewport.get_type(viewport: viewportObj)
+  -> ncine.viewport_type
+
+
+

ncine.viewport.get_viewport_rect

+
function ncine.viewport.get_viewport_rect(viewport: viewportObj)
+  -> ncine.rect
+
+
function ncine.viewport.get_viewport_rect(viewport: viewportObj)
+  -> ncine.rect
+
+
+

ncine.viewport.get_width

+
function ncine.viewport.get_width(viewport: viewportObj)
+  -> integer
+
+
function ncine.viewport.get_width(viewport: viewportObj)
+  -> integer
+
+
+

ncine.viewport.new

+
function ncine.viewport.new()
+  -> viewportObj
+
+
function ncine.viewport.new()
+  -> viewportObj
+
+
+

ncine.viewport.push_back_chain

+
function ncine.viewport.push_back_chain(viewport: viewportObj)
+
+
function ncine.viewport.push_back_chain(viewport: viewportObj)
+
+
+

ncine.viewport.push_front_chain

+
function ncine.viewport.push_front_chain(viewport: viewportObj)
+
+
function ncine.viewport.push_front_chain(viewport: viewportObj)
+
+
+

ncine.viewport.remove_all_textures

+
function ncine.viewport.remove_all_textures(viewport: viewportObj)
+  -> boolean
+
+
function ncine.viewport.remove_all_textures(viewport: viewportObj)
+  -> boolean
+
+
+

ncine.viewport.set_camera

+
function ncine.viewport.set_camera(viewport: viewportObj, camera?: cameraObj)
+
+
function ncine.viewport.set_camera(viewport: viewportObj, camera?: cameraObj)
+
+
+

ncine.viewport.set_clear_color

+
function ncine.viewport.set_clear_color(viewport: viewportObj, clear_color: ncine.color)
+
+
function ncine.viewport.set_clear_color(viewport: viewportObj, r: number, g: number, b: number, a: number)
+
+
function ncine.viewport.set_clear_color(viewport: viewportObj, clear_color: ncine.color)
+
+
function ncine.viewport.set_clear_color(viewport: viewportObj, r: number, g: number, b: number, a: number)
+
+
+

ncine.viewport.set_clear_mode

+
function ncine.viewport.set_clear_mode(viewport: viewportObj, clear_mode: ncine.clear_mode)
+
+
function ncine.viewport.set_clear_mode(viewport: viewportObj, clear_mode: ncine.clear_mode)
+
+
+

ncine.viewport.set_depth_stencil_format

+
function ncine.viewport.set_depth_stencil_format(viewport: viewportObj, depth_stencil_format: ncine.depth_stencil_format)
+  -> boolean
+
+
function ncine.viewport.set_depth_stencil_format(viewport: viewportObj, depth_stencil_format: ncine.depth_stencil_format)
+  -> boolean
+
+
+

ncine.viewport.set_glframebuffer_label

+
function ncine.viewport.set_glframebuffer_label(viewport: viewportObj, label: string)
+
+
function ncine.viewport.set_glframebuffer_label(viewport: viewportObj, label: string)
+
+
+

ncine.viewport.set_rootnode

+
function ncine.viewport.set_rootnode(viewport: viewportObj, rootnode?: scenenodeObj)
+
+
function ncine.viewport.set_rootnode(viewport: viewportObj, rootnode?: scenenodeObj)
+
+
+

ncine.viewport.set_scissor_rect

+
function ncine.viewport.set_scissor_rect(viewport: viewportObj, rect: ncine.rect)
+
+
function ncine.viewport.set_scissor_rect(viewport: viewportObj, x: integer, y: integer, w: integer, h: integer)
+
+
function ncine.viewport.set_scissor_rect(viewport: viewportObj, rect: ncine.rect)
+
+
function ncine.viewport.set_scissor_rect(viewport: viewportObj, x: integer, y: integer, w: integer, h: integer)
+
+
+

ncine.viewport.set_texture

+
function ncine.viewport.set_texture(viewport: viewportObj, index: integer, texture?: textureObj)
+  -> boolean
+
+
function ncine.viewport.set_texture(viewport: viewportObj, index: integer, texture?: textureObj)
+  -> boolean
+
+
+

ncine.viewport.set_viewport_rect

+
function ncine.viewport.set_viewport_rect(viewport: viewportObj, rect: ncine.rect)
+
+
function ncine.viewport.set_viewport_rect(viewport: viewportObj, x: integer, y: integer, w: integer, h: integer)
+
+
function ncine.viewport.set_viewport_rect(viewport: viewportObj, rect: ncine.rect)
+
+
function ncine.viewport.set_viewport_rect(viewport: viewportObj, x: integer, y: integer, w: integer, h: integer)
+
+
+

ncine.viewport_type

+
enum ncine.viewport_type
+
+
enum ncine.viewport_type
+
+
+

ncine.visit_order_state

+
enum ncine.visit_order_state
+
+
enum ncine.visit_order_state
+
+
+

newproxy

+
function newproxy(proxy: boolean|table|userdata)
+  -> userdata
+
+
+

next

+
function next(table: table<<K>, <V>>, index?: <K>)
+  -> <K>?
+  2. <V>?
+
+
+

nil

+
+

number

+
+

openmode

+
+

os

+
oslib
+
+
+

os.clock

+
function os.clock()
+  -> number
+
+
+

os.date

+
function os.date(format?: string, time?: integer)
+  -> string|osdate
+
+
+

os.difftime

+
function os.difftime(t2: integer, t1: integer)
+  -> integer
+
+
+

os.execute

+
function os.execute(command?: string)
+  -> suc: boolean?
+  2. exitcode: ("exit"|"signal")?
+  3. code: integer?
+
+
+

os.exit

+
function os.exit(code?: boolean|integer, close?: boolean)
+
+
+

os.getenv

+
function os.getenv(varname: string)
+  -> string?
+
+
+

os.remove

+
function os.remove(filename: string)
+  -> suc: boolean
+  2. errmsg: string?
+
+
+

os.rename

+
function os.rename(oldname: string, newname: string)
+  -> suc: boolean
+  2. errmsg: string?
+
+
+

os.setlocale

+
function os.setlocale(locale: string|nil, category?: "all"|"collate"|"ctype"|"monetary"|"numeric"...(+1))
+  -> localecategory: string
+
+
+

os.time

+
function os.time(date?: osdateparam)
+  -> integer
+
+
+

os.tmpname

+
function os.tmpname()
+  -> string
+
+
+

osdate

+

day

+
string|integer
+
+

1-31

+

View documents

+

hour

+
string|integer
+
+

0-23

+

View documents

+

isdst

+
boolean
+
+

daylight saving flag, a boolean

+

View documents

+

min

+
string|integer
+
+

0-59

+

View documents

+

month

+
string|integer
+
+

1-12

+

View documents

+

sec

+
string|integer
+
+

0-61

+

View documents

+

wday

+
string|integer
+
+

weekday, 1–7, Sunday is 1

+

View documents

+

yday

+
string|integer
+
+

day of the year, 1–366

+

View documents

+

year

+
string|integer
+
+

four digits

+

View documents

+
+

osdateparam

+

day

+
string|integer
+
+

1-31

+

View documents

+

hour

+
(string|integer)?
+
+

0-23

+

View documents

+

isdst

+
boolean?
+
+

daylight saving flag, a boolean

+

View documents

+

min

+
(string|integer)?
+
+

0-59

+

View documents

+

month

+
string|integer
+
+

1-12

+

View documents

+

sec

+
(string|integer)?
+
+

0-61

+

View documents

+

wday

+
(string|integer)?
+
+

weekday, 1–7, Sunday is 1

+

View documents

+

yday

+
(string|integer)?
+
+

day of the year, 1–366

+

View documents

+

year

+
string|integer
+
+

four digits

+

View documents

+
+

oslib

+

clock

+
function os.clock()
+  -> number
+
+

Returns an approximation of the amount in seconds of CPU time used by the program.

+

View documents

+

date

+
function os.date(format?: string, time?: integer)
+  -> string|osdate
+
+

Returns a string or a table containing date and time, formatted according to the given string format.

+

View documents

+

difftime

+
function os.difftime(t2: integer, t1: integer)
+  -> integer
+
+

Returns the difference, in seconds, from time t1 to time t2.

+

View documents

+

execute

+
function os.execute(command?: string)
+  -> suc: boolean?
+  2. exitcode: ("exit"|"signal")?
+  3. code: integer?
+
+

Passes command to be executed by an operating system shell.

+

View documents

+
exitcode:
+    | "exit"
+    | "signal"
+
+

exit

+
function os.exit(code?: boolean|integer, close?: boolean)
+
+

Calls the ISO C function exit to terminate the host program.

+

View documents

+

getenv

+
function os.getenv(varname: string)
+  -> string?
+
+

Returns the value of the process environment variable varname.

+

View documents

+

remove

+
function os.remove(filename: string)
+  -> suc: boolean
+  2. errmsg: string?
+
+

Deletes the file with the given name.

+

View documents

+

rename

+
function os.rename(oldname: string, newname: string)
+  -> suc: boolean
+  2. errmsg: string?
+
+

Renames the file or directory named oldname to newname.

+

View documents

+

setlocale

+
function os.setlocale(locale: string|nil, category?: "all"|"collate"|"ctype"|"monetary"|"numeric"...(+1))
+  -> localecategory: string
+
+

Sets the current locale of the program.

+

View documents

+
category:
+   -> "all"
+    | "collate"
+    | "ctype"
+    | "monetary"
+    | "numeric"
+    | "time"
+
+

time

+
function os.time(date?: osdateparam)
+  -> integer
+
+

Returns the current time when called without arguments, or a time representing the local date and time specified by the given table.

+

View documents

+

tmpname

+
function os.tmpname()
+  -> string
+
+

Returns a string with a file name that can be used for a temporary file.

+

View documents

+
+

package

+
packagelib
+
+
+

package.config

+
string
+
+
+

package.loaders

+
table
+
+
+

package.loadlib

+
function package.loadlib(libname: string, funcname: string)
+  -> any
+
+
+

package.searchers

+
table
+
+
+

package.searchpath

+
function package.searchpath(name: string, path: string, sep?: string, rep?: string)
+  -> filename: string?
+  2. errmsg: string?
+
+
+

package.seeall

+
function package.seeall(module: table)
+
+
+

packagelib

+

config

+
string
+
+

A string describing some compile-time configurations for packages.

+

View documents

+

cpath

+
string
+
+

The path used by require to search for a C loader.

+

View documents

+

loaded

+
table
+
+

A table used by require to control which modules are already loaded.

+

View documents

+

loaders

+
table
+
+

A table used by require to control how to load modules.

+

View documents

+

loadlib

+
function package.loadlib(libname: string, funcname: string)
+  -> any
+
+

Dynamically links the host program with the C library libname.

+

View documents

+

path

+
string
+
+

The path used by require to search for a Lua loader.

+

View documents

+

preload

+
table
+
+

A table to store loaders for specific modules.

+

View documents

+

searchers

+
table
+
+

A table used by require to control how to load modules.

+

View documents

+

searchpath

+
function package.searchpath(name: string, path: string, sep?: string, rep?: string)
+  -> filename: string?
+  2. errmsg: string?
+
+

Searches for the given name in the given path.

+

View documents

+

seeall

+
function package.seeall(module: table)
+
+

Sets a metatable for module with its __index field referring to the global environment, so that this module inherits values from the global environment. To be used as an option to function module .

+

View documents

+
+

pairs

+
function pairs(t: <T:table>)
+  -> fun(table: table<<K>, <V>>, index?: <K>):<K>, <V>
+  2. <T:table>
+
+
+

particle_initializer

+

amount

+
number|number[]
+
+

life

+
number|number[]
+
+

position

+
ncine.vec2|ncine.vec2[]
+
+

A two component vector

+

rotation

+
number|number[]
+
+

velocity

+
ncine.vec2|ncine.vec2[]
+
+

A two component vector

+
+

particle_initializer

+
particle_initializer
+
+
particle_initializer
+
+
+

particlesystemObj

+
+

pcall

+
function pcall(f: fun(...any):...unknown, arg1?: any, ...any)
+  -> success: boolean
+  2. result: any
+  3. ...any
+
+
+

pointer

+

id

+
integer
+
+

x

+
number
+
+

y

+
number
+
+
+

pointer

+
pointer
+
+
pointer
+
+
+

popenmode

+
+

print

+
function print(...any)
+
+
+

rawequal

+
function rawequal(v1: any, v2: any)
+  -> boolean
+
+
+

rawget

+
function rawget(table: table, index: any)
+  -> any
+
+
+

rawlen

+
function rawlen(v: string|table)
+  -> len: integer
+
+
+

rawset

+
function rawset(table: table, index: any, value: any)
+  -> table
+
+
+

readmode

+
+

reload_script

+
function reload_script()
+
+
function reload_script()
+
+
+

rendering_settings

+
rendering_settings
+
+
rendering_settings
+
+
+

rendering_settings

+

batching

+
boolean
+
+

True if sprite batching is enabled

+

batching_with_indices

+
boolean
+
+

True if using indices for vertex batching

+

culling

+
boolean
+
+

True if node culling is enabled

+

max_batch_size

+
integer
+
+

Maximum size for a batch before a forced split

+

min_batch_size

+
integer
+
+

Minimum size for a batch to be collected

+
+

require

+
function require(modname: string)
+  -> unknown
+  2. loaderdata: unknown
+
+
+

scenenodeObj

+
+

scroll_event

+
scroll_event
+
+
scroll_event
+
+
+

scroll_event

+

x

+
number
+
+

y

+
number
+
+
+

seekwhence

+
+

select

+
function select(index: integer|"#", ...any)
+  -> any
+
+
+

setfenv

+
function setfenv(f: integer|fun(...any):...unknown, table: table)
+  -> function
+
+
+

setmetatable

+
function setmetatable(table: table, metatable?: table|metatable)
+  -> table
+
+
+

shaderObj

+
+

shaderstateObj

+
+

show_gui

+
function show_gui(show: boolean)
+
+
function show_gui(show: boolean)
+
+
+

spriteObj

+
+

string

+

byte

+
function string.byte(s: string|number, i?: integer, j?: integer)
+  -> ...integer
+
+

Returns the internal numeric codes of the characters s[i], s[i+1], ..., s[j].

+

View documents

+

char

+
function string.char(byte: integer, ...integer)
+  -> string
+
+

Returns a string with length equal to the number of arguments, in which each character has the internal numeric code equal to its corresponding argument.

+

View documents

+

dump

+
function string.dump(f: fun(...any):...unknown, strip?: boolean)
+  -> string
+
+

Returns a string containing a binary representation (a binary chunk) of the given function.

+

View documents

+

find

+
function string.find(s: string|number, pattern: string|number, init?: integer, plain?: boolean)
+  -> start: integer|nil
+  2. end: integer|nil
+  3. ...any
+
+

Looks for the first match of pattern (see §6.4.1) in the string.

+

View documents

+

@return start

+

@return end

+

@return ... — captured

+

format

+
function string.format(s: string|number, ...any)
+  -> string
+
+

Returns a formatted version of its variable number of arguments following the description given in its first argument.

+

View documents

+

gmatch

+
function string.gmatch(s: string|number, pattern: string|number, init?: integer)
+  -> fun():string, ...unknown
+
+

Returns an iterator function that, each time it is called, returns the next captures from pattern (see §6.4.1) over the string s.

+

As an example, the following loop will iterate over all the words from string s, printing one per line:

+
    s =
+"hello world from Lua"
+    for w in string.gmatch(s, "%a+") do
+        print(w)
+    end
+
+

View documents

+

gsub

+
function string.gsub(s: string|number, pattern: string|number, repl: string|number|function|table, n?: integer)
+  -> string
+  2. count: integer
+
+

Returns a copy of s in which all (or the first n, if given) occurrences of the pattern (see §6.4.1) have been replaced by a replacement string specified by repl.

+

View documents

+

len

+
function string.len(s: string|number)
+  -> integer
+
+

Returns its length.

+

View documents

+

lower

+
function string.lower(s: string|number)
+  -> string
+
+

Returns a copy of this string with all uppercase letters changed to lowercase.

+

View documents

+

match

+
function string.match(s: string|number, pattern: string|number, init?: integer)
+  -> ...any
+
+

Looks for the first match of pattern (see §6.4.1) in the string.

+

View documents

+

pack

+
function string.pack(fmt: string, v1: string|number, v2?: string|number, ...string|number)
+  -> binary: string
+
+

Returns a binary string containing the values v1, v2, etc. packed (that is, serialized in binary form) according to the format string fmt (see §6.4.2) .

+

View documents

+

packsize

+
function string.packsize(fmt: string)
+  -> integer
+
+

Returns the size of a string resulting from string.pack with the given format string fmt (see §6.4.2) .

+

View documents

+

rep

+
function string.rep(s: string|number, n: integer, sep?: string|number)
+  -> string
+
+

Returns a string that is the concatenation of n copies of the string s separated by the string sep.

+

View documents

+

reverse

+
function string.reverse(s: string|number)
+  -> string
+
+

Returns a string that is the string s reversed.

+

View documents

+

sub

+
function string.sub(s: string|number, i: integer, j?: integer)
+  -> string
+
+

Returns the substring of the string that starts at i and continues until j.

+

View documents

+

unpack

+
function string.unpack(fmt: string, s: string, pos?: integer)
+  -> ...any
+  2. offset: integer
+
+

Returns the values packed in string according to the format string fmt (see §6.4.2) .

+

View documents

+

upper

+
function string.upper(s: string|number)
+  -> string
+
+

Returns a copy of this string with all lowercase letters changed to uppercase.

+

View documents

+
+

string

+
stringlib
+
+
+

string.byte

+
function string.byte(s: string|number, i?: integer, j?: integer)
+  -> ...integer
+
+
+

string.char

+
function string.char(byte: integer, ...integer)
+  -> string
+
+
+

string.dump

+
function string.dump(f: fun(...any):...unknown, strip?: boolean)
+  -> string
+
+
+

string.find

+
function string.find(s: string|number, pattern: string|number, init?: integer, plain?: boolean)
+  -> start: integer|nil
+  2. end: integer|nil
+  3. ...any
+
+
+

string.format

+
function string.format(s: string|number, ...any)
+  -> string
+
+
+

string.gmatch

+
function string.gmatch(s: string|number, pattern: string|number, init?: integer)
+  -> fun():string, ...unknown
+
+
+

string.gsub

+
function string.gsub(s: string|number, pattern: string|number, repl: string|number|function|table, n?: integer)
+  -> string
+  2. count: integer
+
+
+

string.len

+
function string.len(s: string|number)
+  -> integer
+
+
+

string.lower

+
function string.lower(s: string|number)
+  -> string
+
+
+

string.match

+
function string.match(s: string|number, pattern: string|number, init?: integer)
+  -> ...any
+
+
+

string.pack

+
function string.pack(fmt: string, v1: string|number, v2?: string|number, ...string|number)
+  -> binary: string
+
+
+

string.packsize

+
function string.packsize(fmt: string)
+  -> integer
+
+
+

string.rep

+
function string.rep(s: string|number, n: integer, sep?: string|number)
+  -> string
+
+
+

string.reverse

+
function string.reverse(s: string|number)
+  -> string
+
+
+

string.sub

+
function string.sub(s: string|number, i: integer, j?: integer)
+  -> string
+
+
+

string.unpack

+
function string.unpack(fmt: string, s: string, pos?: integer)
+  -> ...any
+  2. offset: integer
+
+
+

string.upper

+
function string.upper(s: string|number)
+  -> string
+
+
+

stringlib

+

byte

+
function string.byte(s: string|number, i?: integer, j?: integer)
+  -> ...integer
+
+

Returns the internal numeric codes of the characters s[i], s[i+1], ..., s[j].

+

View documents

+

char

+
function string.char(byte: integer, ...integer)
+  -> string
+
+

Returns a string with length equal to the number of arguments, in which each character has the internal numeric code equal to its corresponding argument.

+

View documents

+

dump

+
function string.dump(f: fun(...any):...unknown, strip?: boolean)
+  -> string
+
+

Returns a string containing a binary representation (a binary chunk) of the given function.

+

View documents

+

find

+
function string.find(s: string|number, pattern: string|number, init?: integer, plain?: boolean)
+  -> start: integer|nil
+  2. end: integer|nil
+  3. ...any
+
+

Looks for the first match of pattern (see §6.4.1) in the string.

+

View documents

+

@return start

+

@return end

+

@return ... — captured

+

format

+
function string.format(s: string|number, ...any)
+  -> string
+
+

Returns a formatted version of its variable number of arguments following the description given in its first argument.

+

View documents

+

gmatch

+
function string.gmatch(s: string|number, pattern: string|number, init?: integer)
+  -> fun():string, ...unknown
+
+

Returns an iterator function that, each time it is called, returns the next captures from pattern (see §6.4.1) over the string s.

+

As an example, the following loop will iterate over all the words from string s, printing one per line:

+
    s =
+"hello world from Lua"
+    for w in string.gmatch(s, "%a+") do
+        print(w)
+    end
+
+

View documents

+

gsub

+
function string.gsub(s: string|number, pattern: string|number, repl: string|number|function|table, n?: integer)
+  -> string
+  2. count: integer
+
+

Returns a copy of s in which all (or the first n, if given) occurrences of the pattern (see §6.4.1) have been replaced by a replacement string specified by repl.

+

View documents

+

len

+
function string.len(s: string|number)
+  -> integer
+
+

Returns its length.

+

View documents

+

lower

+
function string.lower(s: string|number)
+  -> string
+
+

Returns a copy of this string with all uppercase letters changed to lowercase.

+

View documents

+

match

+
function string.match(s: string|number, pattern: string|number, init?: integer)
+  -> ...any
+
+

Looks for the first match of pattern (see §6.4.1) in the string.

+

View documents

+

pack

+
function string.pack(fmt: string, v1: string|number, v2?: string|number, ...string|number)
+  -> binary: string
+
+

Returns a binary string containing the values v1, v2, etc. packed (that is, serialized in binary form) according to the format string fmt (see §6.4.2) .

+

View documents

+

packsize

+
function string.packsize(fmt: string)
+  -> integer
+
+

Returns the size of a string resulting from string.pack with the given format string fmt (see §6.4.2) .

+

View documents

+

rep

+
function string.rep(s: string|number, n: integer, sep?: string|number)
+  -> string
+
+

Returns a string that is the concatenation of n copies of the string s separated by the string sep.

+

View documents

+

reverse

+
function string.reverse(s: string|number)
+  -> string
+
+

Returns a string that is the string s reversed.

+

View documents

+

sub

+
function string.sub(s: string|number, i: integer, j?: integer)
+  -> string
+
+

Returns the substring of the string that starts at i and continues until j.

+

View documents

+

unpack

+
function string.unpack(fmt: string, s: string, pos?: integer)
+  -> ...any
+  2. offset: integer
+
+

Returns the values packed in string according to the format string fmt (see §6.4.2) .

+

View documents

+

upper

+
function string.upper(s: string|number)
+  -> string
+
+

Returns a copy of this string with all lowercase letters changed to uppercase.

+

View documents

+
+

table

+
+

table

+
tablelib
+
+
+

table.concat

+
function table.concat(list: table, sep?: string, i?: integer, j?: integer)
+  -> string
+
+
+

table.foreach

+
function table.foreach(list: any, callback: fun(key: string, value: any):<T>|nil)
+  -> <T>|nil
+
+
+

table.foreachi

+
function table.foreachi(list: any, callback: fun(key: string, value: any):<T>|nil)
+  -> <T>|nil
+
+
+

table.getn

+
function table.getn(list: <T>[])
+  -> integer
+
+
+

table.insert

+
function table.insert(list: table, pos: integer, value: any)
+
+
+

table.maxn

+
function table.maxn(table: table)
+  -> integer
+
+
+

table.move

+
function table.move(a1: table, f: integer, e: integer, t: integer, a2?: table)
+  -> a2: table
+
+
+

table.pack

+
function table.pack(...any)
+  -> table
+
+
+

table.remove

+
function table.remove(list: table, pos?: integer)
+  -> any
+
+
+

table.sort

+
function table.sort(list: <T>[], comp?: fun(a: <T>, b: <T>):boolean)
+
+
+

table.unpack

+
function table.unpack(list: <T>[], i?: integer, j?: integer)
+  -> ...<T>
+
+
+

tablelib

+

concat

+
function table.concat(list: table, sep?: string, i?: integer, j?: integer)
+  -> string
+
+

Given a list where all elements are strings or numbers, returns the string list[i]..sep..list[i+1] ··· sep..list[j].

+

View documents

+

foreach

+
function table.foreach(list: any, callback: fun(key: string, value: any):<T>|nil)
+  -> <T>|nil
+
+

Executes the given f over all elements of table. For each element, f is called with the index and respective value as arguments. If f returns a non-nil value, then the loop is broken, and this value is returned as the final value of foreach.

+

View documents

+

foreachi

+
function table.foreachi(list: any, callback: fun(key: string, value: any):<T>|nil)
+  -> <T>|nil
+
+

Executes the given f over the numerical indices of table. For each index, f is called with the index and respective value as arguments. Indices are visited in sequential order, from 1 to n, where n is the size of the table. If f returns a non-nil value, then the loop is broken and this value is returned as the result of foreachi.

+

View documents

+

getn

+
function table.getn(list: <T>[])
+  -> integer
+
+

Returns the number of elements in the table. This function is equivalent to #list.

+

View documents

+

insert

+
function table.insert(list: table, pos: integer, value: any)
+
+

Inserts element value at position pos in list.

+

View documents

+

maxn

+
function table.maxn(table: table)
+  -> integer
+
+

Returns the largest positive numerical index of the given table, or zero if the table has no positive numerical indices.

+

View documents

+

move

+
function table.move(a1: table, f: integer, e: integer, t: integer, a2?: table)
+  -> a2: table
+
+

Moves elements from table a1 to table a2.

+
a2[t],··· =
+a1[f],···,a1[e]
+return a2
+
+

View documents

+

pack

+
function table.pack(...any)
+  -> table
+
+

Returns a new table with all arguments stored into keys 1, 2, etc. and with a field "n" with the total number of arguments.

+

View documents

+

remove

+
function table.remove(list: table, pos?: integer)
+  -> any
+
+

Removes from list the element at position pos, returning the value of the removed element.

+

View documents

+

sort

+
function table.sort(list: <T>[], comp?: fun(a: <T>, b: <T>):boolean)
+
+

Sorts list elements in a given order, in-place, from list[1] to list[#list].

+

View documents

+

unpack

+
function table.unpack(list: <T>[], i?: integer, j?: integer)
+  -> ...<T>
+
+

Returns the elements from the given list. This function is equivalent to

+
    return list[i], list[i+1], ···, list[j]
+
+

By default, i is 1 and j is #list.

+

View documents

+
+

text_input_event

+

text

+
string
+
+
+

text_input_event

+
text_input_event
+
+
text_input_event
+
+
+

textnodeObj

+
+

textureObj

+
+

thread

+
+

tonumber

+
function tonumber(e: any)
+  -> number?
+
+
+

tostring

+
function tostring(v: any)
+  -> string
+
+
+

touch_event

+

action_index

+
integer
+
+

count

+
integer
+
+

pointers

+
pointer[]
+
+
+

touch_event

+
touch_event
+
+
touch_event
+
+
+

true

+
+

type

+
+

type

+
function type(v: any)
+  -> type: "boolean"|"function"|"nil"|"number"|"string"...(+3)
+
+
+

unknown

+
+

unpack

+
function unpack(list: <T>[], i?: integer, j?: integer)
+  -> ...<T>
+
+
function unpack(list: { [1]: <T1>, [2]: <T2>, [3]: <T3>, [4]: <T4>, [5]: <T5>, [6]: <T6>, [7]: <T7>, [8]: <T8>, [9]: <T9> })
+  -> <T1>
+  2. <T2>
+  3. <T3>
+  4. <T4>
+  5. <T5>
+  6. <T6>
+  7. <T7>
+  8. <T8>
+  9. <T9>
+
+
+

userdata

+
+

utf8

+
utf8lib
+
+
+

utf8.char

+
function utf8.char(code: integer, ...integer)
+  -> string
+
+
+

utf8.codepoint

+
function utf8.codepoint(s: string, i?: integer, j?: integer, lax?: boolean)
+  -> code: integer
+  2. ...integer
+
+
+

utf8.codes

+
function utf8.codes(s: string, lax?: boolean)
+  -> fun(s: string, p: integer):integer, integer
+
+
+

utf8.len

+
function utf8.len(s: string, i?: integer, j?: integer, lax?: boolean)
+  -> integer?
+  2. errpos: integer?
+
+
+

utf8.offset

+
function utf8.offset(s: string, n: integer, i?: integer)
+  -> p: integer
+
+
+

utf8lib

+

char

+
function utf8.char(code: integer, ...integer)
+  -> string
+
+

Receives zero or more integers, converts each one to its corresponding UTF-8 byte sequence and returns a string with the concatenation of all these sequences.

+

View documents

+

charpattern

+
string
+
+

The pattern which matches exactly one UTF-8 byte sequence, assuming that the subject is a valid UTF-8 string.

+

View documents

+

codepoint

+
function utf8.codepoint(s: string, i?: integer, j?: integer, lax?: boolean)
+  -> code: integer
+  2. ...integer
+
+

Returns the codepoints (as integers) from all characters in s that start between byte position i and j (both included).

+

View documents

+

codes

+
function utf8.codes(s: string, lax?: boolean)
+  -> fun(s: string, p: integer):integer, integer
+
+

Returns values so that the construction

+
for p, c in utf8.codes(s) do
+    body
+end
+
+

will iterate over all UTF-8 characters in string s, with p being the position (in bytes) and c the code point of each character. It raises an error if it meets any invalid byte sequence.

+

View documents

+

len

+
function utf8.len(s: string, i?: integer, j?: integer, lax?: boolean)
+  -> integer?
+  2. errpos: integer?
+
+

Returns the number of UTF-8 characters in string s that start between positions i and j (both inclusive).

+

View documents

+

offset

+
function utf8.offset(s: string, n: integer, i?: integer)
+  -> p: integer
+
+

Returns the position (in bytes) where the encoding of the n-th character of s (counting from position i) starts.

+

View documents

+
+

vbuf

+
+

video_mode

+

blue_bits

+
integer
+
+

The number of bits for the blue channel

+

green_bits

+
integer
+
+

The number of bits for the green channel

+

height

+
integer
+
+

The video height

+

red_bits

+
integer
+
+

The number of bits for the red channel

+

refresh_rate

+
number
+
+

The refresh rate in Hz

+

width

+
integer
+
+

The video width

+
+

video_mode

+
video_mode
+
+
video_mode
+
+
+

viewportObj

+
+

warn

+
function warn(message: string, ...any)
+
+
+

xpcall

+
function xpcall(f: fun(...any):...unknown, msgh: function, arg1?: any, ...any)
+  -> success: boolean
+  2. result: any
+  3. ...any
+
\ No newline at end of file diff --git a/master/_alloc_manager_8h_source.html b/master/_alloc_manager_8h_source.html new file mode 100644 index 0000000000..3acc29e2f4 --- /dev/null +++ b/master/_alloc_manager_8h_source.html @@ -0,0 +1,132 @@ + + + + + + + +nCine: include/nctl/AllocManager.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
AllocManager.h
+
+
+
1 #ifndef CLASS_NCTL_ALLOCMANAGER
+
2 #define CLASS_NCTL_ALLOCMANAGER
+
3 
+
4 #include <ncine/common_defines.h>
+
5 
+
6 namespace nctl {
+
7 
+
8 class IAllocator;
+
9 
+
11 class DLL_PUBLIC AllocManagerInitializer
+
12 {
+
13  public:
+ + +
16 };
+
17 
+
19 class DLL_PUBLIC AllocManager
+
20 {
+
21  public:
+
22  inline IAllocator &defaultAllocator() { return *defaultAllocator_; }
+
23  inline IAllocator &stringAllocator() { return *stringAllocator_; }
+
24 
+
25  IAllocator *setDefaultAllocator(IAllocator *allocator);
+
26  IAllocator *setStringAllocator(IAllocator *allocator);
+
27 
+
28  private:
+
29  IAllocator *defaultAllocator_;
+
30  IAllocator *stringAllocator_;
+
31 
+
32  AllocManager();
+
33  ~AllocManager();
+
34 
+
35  friend AllocManager DLL_PUBLIC &theAllocManager();
+
36  friend class AllocManagerInitializer;
+
37 };
+
38 
+
39 extern DLL_PUBLIC AllocManager &theAllocManager();
+
40 
+
41 extern DLL_PUBLIC IAllocator &theDefaultAllocator();
+
42 extern DLL_PUBLIC IAllocator &theStringAllocator();
+
43 extern DLL_PUBLIC IAllocator &theImGuiAllocator();
+
44 extern DLL_PUBLIC IAllocator &theNuklearAllocator();
+
45 extern DLL_PUBLIC IAllocator &theLuaAllocator();
+
46 extern DLL_PUBLIC IAllocator &theGlfwAllocator();
+
47 
+
48 }
+
49 
+
50 #endif
+
The allocators manager.
Definition: AllocManager.h:20
+
Allocator manager initializer.
Definition: AllocManager.h:12
+
The allocator interface.
Definition: IAllocator.h:18
+
+ + + + diff --git a/master/_android_application_8h_source.html b/master/_android_application_8h_source.html new file mode 100644 index 0000000000..59674c47ee --- /dev/null +++ b/master/_android_application_8h_source.html @@ -0,0 +1,145 @@ + + + + + + + +nCine: include/ncine/AndroidApplication.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
AndroidApplication.h
+
+
+
1 #ifndef CLASS_NCINE_ANDROIDAPPLICATION
+
2 #define CLASS_NCINE_ANDROIDAPPLICATION
+
3 
+
4 #include "Application.h"
+
5 
+
6 struct android_app;
+
7 struct AInputEvent;
+
8 
+
9 namespace ncine {
+
10 
+
12 class DLL_PUBLIC AndroidApplication : public Application
+
13 {
+
14  public:
+
16  static void start(struct android_app *state, nctl::UniquePtr<IAppEventHandler> (*createAppEventHandler)());
+
17 
+
19  static void processCommand(struct android_app *state, int32_t cmd);
+
20 
+
22  unsigned int sdkVersion() const;
+
24  void enableAccelerometer(bool enabled);
+
25 
+
27  inline bool isInitialized() const { return isInitialized_; }
+
28 
+
30  inline const char *packageName() const { return packageName_.data(); }
+
31 
+
33  const char *internalDataPath() const;
+
35  const char *externalDataPath() const;
+
37  const char *obbPath() const;
+
38 
+
40  void toggleSoftInput();
+
41 
+
42  private:
+
43  bool isInitialized_;
+
44  nctl::String packageName_;
+
45 
+
46  struct android_app *state_;
+
47  nctl::UniquePtr<IAppEventHandler> (*createAppEventHandler_)();
+
48  void preInit();
+
50  void init();
+
52  void shutdown();
+
53 
+
54  void setFocus(bool hasFocus) override;
+
55 
+ +
58  : Application(), isInitialized_(false), packageName_(128), state_(nullptr), createAppEventHandler_(nullptr) {}
+
60  ~AndroidApplication() {}
+
62  AndroidApplication(const AndroidApplication &) = delete;
+
64  AndroidApplication &operator=(const AndroidApplication &) = delete;
+
65 
+
67  static AndroidApplication &theAndroidApplication() { return static_cast<AndroidApplication &>(theApplication()); }
+
68 
+
69  friend DLL_PUBLIC Application &theApplication();
+
70 };
+
71 
+
73 DLL_PUBLIC Application &theApplication();
+
74 
+
75 }
+
76 
+
77 #endif
+
Main entry point and handler for nCine Android applications.
Definition: AndroidApplication.h:13
+
const char * packageName() const
Returns the package name for the Android application.
Definition: AndroidApplication.h:30
+
bool isInitialized() const
Returns true if the application has already called init()
Definition: AndroidApplication.h:27
+
Main entry point and handler for nCine applications.
Definition: Application.h:24
+
A basic string class made of chars.
Definition: String.h:23
+
A unique pointer implementation.
Definition: UniquePtr.h:118
+
+ + + + diff --git a/master/_animated_sprite_8h_source.html b/master/_animated_sprite_8h_source.html new file mode 100644 index 0000000000..1804a86660 --- /dev/null +++ b/master/_animated_sprite_8h_source.html @@ -0,0 +1,157 @@ + + + + + + + +nCine: include/ncine/AnimatedSprite.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
AnimatedSprite.h
+
+
+
1 #ifndef CLASS_NCINE_ANIMATEDSPRITE
+
2 #define CLASS_NCINE_ANIMATEDSPRITE
+
3 
+
4 #include "Sprite.h"
+
5 #include "RectAnimation.h"
+
6 
+
7 namespace ncine {
+
8 
+
10 class DLL_PUBLIC AnimatedSprite : public Sprite
+
11 {
+
12  public:
+ +
16  AnimatedSprite(SceneNode *parent, Texture *texture);
+
18  explicit AnimatedSprite(Texture *texture);
+
20  AnimatedSprite(SceneNode *parent, Texture *texture, float xx, float yy);
+
22  AnimatedSprite(SceneNode *parent, Texture *texture, const Vector2f &position);
+
24  AnimatedSprite(Texture *texture, float xx, float yy);
+
26  AnimatedSprite(Texture *texture, const Vector2f &position);
+
27 
+ + +
32 
+
34  inline AnimatedSprite clone() const { return AnimatedSprite(*this); }
+
35 
+
37  bool isPaused() const;
+
39  void setPaused(bool isPaused);
+
40 
+
41  void update(float interval) override;
+
42 
+
44  void addAnimation(const RectAnimation &anim);
+
46  void addAnimation(RectAnimation &&anim);
+
48  void clearAnimations();
+
49 
+
51  inline unsigned int numAnimations() { return anims_.size(); }
+
53  inline nctl::Array<RectAnimation> &animations() { return anims_; }
+
55  inline const nctl::Array<RectAnimation> &animations() const { return anims_; }
+
56 
+
58  unsigned int animationIndex() const { return currentAnimIndex_; }
+
60  void setAnimationIndex(unsigned int animIndex);
+
61 
+
63  RectAnimation *currentAnimation();
+
65  const RectAnimation *currentAnimation() const;
+
66 
+
68  unsigned int numFrames() const;
+
70  unsigned int frame() const;
+
72  void setFrame(unsigned int frameNum);
+
73 
+
74  inline static ObjectType sType() { return ObjectType::ANIMATED_SPRITE; }
+
75 
+
76  protected:
+
78  AnimatedSprite(const AnimatedSprite &other);
+
79 
+
80  private:
+ +
82  unsigned int currentAnimIndex_;
+
83 
+
85  AnimatedSprite &operator=(const AnimatedSprite &) = delete;
+
86 };
+
87 
+
88 }
+
89 
+
90 #endif
+
A class for an animated sprite.
Definition: AnimatedSprite.h:11
+
AnimatedSprite & operator=(AnimatedSprite &&)=default
Default move assignment operator.
+
unsigned int numAnimations()
Returns the number of animations.
Definition: AnimatedSprite.h:51
+
nctl::Array< RectAnimation > & animations()
Returns the array of all animations.
Definition: AnimatedSprite.h:53
+
const nctl::Array< RectAnimation > & animations() const
Returns the constant array of all animations.
Definition: AnimatedSprite.h:55
+
AnimatedSprite clone() const
Returns a copy of this object.
Definition: AnimatedSprite.h:34
+
AnimatedSprite(AnimatedSprite &&)=default
Default move constructor.
+
unsigned int animationIndex() const
Returns the current animation index.
Definition: AnimatedSprite.h:58
+
The class containing data for a rectangles based animation.
Definition: RectAnimation.h:11
+
The base class for the transformation nodes hierarchy.
Definition: SceneNode.h:19
+
A scene node representing a regular sprite.
Definition: Sprite.h:10
+
Texture class.
Definition: Texture.h:16
+ +
A dynamic array based on templates that stores elements in the heap.
Definition: Array.h:31
+
+ + + + diff --git a/master/_app_configuration_8h_source.html b/master/_app_configuration_8h_source.html new file mode 100644 index 0000000000..c04f8531df --- /dev/null +++ b/master/_app_configuration_8h_source.html @@ -0,0 +1,222 @@ + + + + + + + +nCine: include/ncine/AppConfiguration.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
AppConfiguration.h
+
+
+
1 #ifndef CLASS_NCINE_APPCONFIGURATION
+
2 #define CLASS_NCINE_APPCONFIGURATION
+
3 
+
4 #include <nctl/String.h>
+
5 #include "ILogger.h"
+
6 #include "Vector2.h"
+
7 
+
8 namespace ncine {
+
9 
+
11 class DLL_PUBLIC AppConfiguration
+
12 {
+
13  public:
+
14  static const int WindowPositionIgnore = 2147483647; // `INT_MAX`
+
15 
+ +
18 
+
19  // User configurable compile-time variables
+
20 
+ + + + +
29 
+
31 
+ +
34 
+
35  float refreshRate;
+
37 
+ +
41  bool fullScreen;
+
43  bool resizable;
+ +
47  unsigned int frameLimit;
+
48 
+ + +
53 
+ +
57 
+ +
60 
+
63  unsigned int fixedBatchSize;
+
65 
+ + +
70 
+ +
72 
+
74  unsigned long vboSize;
+
76  unsigned long iboSize;
+
78  unsigned int vaoPoolSize;
+
80  unsigned int renderCommandPoolSize;
+
81 
+
83 
+
84  unsigned int outputAudioFrequency;
+
86 
+
87  unsigned int monoAudioSources;
+
89 
+
90  unsigned int stereoAudioSources;
+
91 
+ +
95  bool withAudio;
+ + +
101  bool withVSync;
+ + +
106 
+
108  const nctl::String &dataPath() const;
+
110  nctl::String &dataPath();
+
111 
+
113  inline bool glCoreProfile() const { return glCoreProfile_; }
+
115  inline bool glForwardCompatible() const { return glForwardCompatible_; }
+
117  inline unsigned int glMajorVersion() const { return glMajorVersion_; }
+
119  inline unsigned int glMinorVersion() const { return glMinorVersion_; }
+
121  inline float profileTextUpdateTime() const { return profileTextUpdateTime_; }
+
122 
+
124  inline int argc() const { return argc_; }
+
126  const char *argv(int index) const;
+
127 
+
128  private:
+
129  // Pre-configured compile-time variables
+
130  const bool glCoreProfile_;
+
131  const bool glForwardCompatible_;
+
132  const unsigned int glMajorVersion_;
+
133  const unsigned int glMinorVersion_;
+
134  const float profileTextUpdateTime_;
+
135 
+
136  int argc_;
+
137  char **argv_;
+
138 
+
139  friend class PCApplication;
+
140 };
+
141 
+
142 }
+
143 
+
144 #endif
+
The class storing initialization settings for an nCine application.
Definition: AppConfiguration.h:12
+
bool deferShaderQueries
The flag is true when error checking and introspection of shader programs are deferred to first use.
Definition: AppConfiguration.h:58
+
unsigned long iboSize
The maximum size in bytes for each IBO collecting index data.
Definition: AppConfiguration.h:76
+
unsigned long vboSize
The maximum size in bytes for each VBO collecting geometry data.
Definition: AppConfiguration.h:74
+
bool useBufferMapping
The flag is true if mapping is used to update OpenGL buffers.
Definition: AppConfiguration.h:55
+
unsigned int glMinorVersion() const
Definition: AppConfiguration.h:119
+
bool fullScreen
The flag is true if the application is going to be in full screen mode.
Definition: AppConfiguration.h:41
+
unsigned int fixedBatchSize
Fixed size of render commands to be collected for batching on Emscripten and ANGLE.
Definition: AppConfiguration.h:63
+
unsigned int stereoAudioSources
The number of stereo audio sources.
Definition: AppConfiguration.h:90
+
nctl::String shaderCacheDirname
The directory name (not the complete path) for the binary shaders cache.
Definition: AppConfiguration.h:68
+
float frameTimerLogInterval
The interval for frame timer accumulation average and log.
Definition: AppConfiguration.h:28
+
bool withThreads
The flag is true if the threading subsystem is enabled.
Definition: AppConfiguration.h:97
+
ILogger::LogLevel consoleLogLevel
The logging level for messages printed on the console.
Definition: AppConfiguration.h:24
+
bool useBinaryShaderCache
The flag is true if the shader cache is enabled to load and save binary shader programs.
Definition: AppConfiguration.h:66
+
bool resizable
The flag is true if the window is going to be resizable.
Definition: AppConfiguration.h:43
+
bool withGlDebugContext
The flag is true if the OpenGL debug context is enabled.
Definition: AppConfiguration.h:103
+
nctl::String logFile
The path for the log file.
Definition: AppConfiguration.h:22
+
int argc() const
Definition: AppConfiguration.h:124
+
unsigned int renderCommandPoolSize
The initial size for the pool of render commands.
Definition: AppConfiguration.h:80
+
bool glCoreProfile() const
Definition: AppConfiguration.h:113
+
unsigned int glMajorVersion() const
Definition: AppConfiguration.h:117
+
float refreshRate
The refresh rate of the screen mode used to go in full screen.
Definition: AppConfiguration.h:35
+
bool withVSync
The flag is true if the vertical synchronization is enabled.
Definition: AppConfiguration.h:101
+
Vector2i windowPosition
The window position coordinates in the virtual screen made of all the connected monitors.
Definition: AppConfiguration.h:39
+
bool compileBatchedShadersTwice
The flag is true if, on devices with UBOs smaller than 64 KB, batched shaders will be compiled twice ...
Definition: AppConfiguration.h:71
+
unsigned int monoAudioSources
The number of mono audio sources.
Definition: AppConfiguration.h:87
+
nctl::String windowIconFilename
The window icon filename.
Definition: AppConfiguration.h:52
+
bool windowScaling
The flag is true if the window size is automatically scaled according to the display factor.
Definition: AppConfiguration.h:45
+
float profileTextUpdateTime() const
Definition: AppConfiguration.h:121
+
bool withConsoleColors
The flag is true if console log messages should use colors.
Definition: AppConfiguration.h:105
+
nctl::String windowTitle
The window title.
Definition: AppConfiguration.h:50
+
ILogger::LogLevel fileLogLevel
The logging level for messages written in the log file.
Definition: AppConfiguration.h:26
+
unsigned int vaoPoolSize
The maximum size for the pool of VAOs.
Definition: AppConfiguration.h:78
+
bool withScenegraph
The flag is true if the scenegraph based rendering is enabled.
Definition: AppConfiguration.h:99
+
bool withAudio
The flag is true if the audio subsystem is enabled.
Definition: AppConfiguration.h:95
+
unsigned int outputAudioFrequency
The output frequency of the audio system.
Definition: AppConfiguration.h:84
+
bool withDebugOverlay
The flag is true if the debug overlay is enabled.
Definition: AppConfiguration.h:93
+
bool glForwardCompatible() const
Definition: AppConfiguration.h:115
+
Vector2i resolution
The window size or the resolution of the closest video mode if going full screen.
Definition: AppConfiguration.h:32
+
unsigned int frameLimit
The maximum number of frames to render per second or 0 for no limit.
Definition: AppConfiguration.h:47
+
LogLevel
Log levels, from less to more severe.
Definition: ILogger.h:18
+
Handler class for nCine applications on PC.
Definition: PCApplication.h:12
+ +
A basic string class made of chars.
Definition: String.h:23
+
+ + + + diff --git a/master/_application_8h_source.html b/master/_application_8h_source.html new file mode 100644 index 0000000000..baa93a773e --- /dev/null +++ b/master/_application_8h_source.html @@ -0,0 +1,302 @@ + + + + + + + +nCine: include/ncine/Application.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Application.h
+
+
+
1 #ifndef CLASS_NCINE_APPLICATION
+
2 #define CLASS_NCINE_APPLICATION
+
3 
+
4 #include "IGfxDevice.h"
+
5 #include "AppConfiguration.h"
+
6 #include "IDebugOverlay.h"
+
7 #include "TimeStamp.h"
+
8 #include <nctl/UniquePtr.h>
+
9 
+
10 namespace ncine {
+
11 
+
12 class IFrameTimer;
+
13 class FrameTimer;
+
14 class SceneNode;
+
15 class Viewport;
+
16 class ScreenViewport;
+
17 class IInputManager;
+
18 class IAppEventHandler;
+
19 class ImGuiDrawing;
+
20 class NuklearDrawing;
+
21 
+
23 class DLL_PUBLIC Application
+
24 {
+
25  public:
+ +
28  {
+ +
30  : batchingEnabled(true), batchingWithIndices(false),
+
31  cullingEnabled(true), minBatchSize(4), maxBatchSize(512) {}
+
32 
+ + + +
40  unsigned int minBatchSize;
+
42  unsigned int maxBatchSize;
+
43  };
+
44 
+
46  struct GuiSettings
+
47  {
+
48  GuiSettings();
+
49 
+
51  uint16_t imguiLayer;
+
53  uint16_t nuklearLayer;
+
55 
+ +
58 
+ +
60  };
+
61 
+
62  struct Timings
+
63  {
+
64  enum
+
65  {
+
66  PRE_INIT,
+
67  INIT_COMMON,
+
68  APP_INIT,
+
69  FRAME_START,
+
70  UPDATE_VISIT_DRAW,
+
71  UPDATE,
+
72  POST_UPDATE,
+
73  VISIT,
+
74  DRAW,
+
75  IMGUI,
+
76  NUKLEAR,
+
77  FRAME_END,
+
78 
+
79  COUNT
+
80  };
+
81  };
+
82 
+
84  inline const AppConfiguration &appConfiguration() const { return appCfg_; }
+
86  inline RenderingSettings &renderingSettings() { return renderingSettings_; }
+
88  inline GuiSettings &guiSettings() { return guiSettings_; }
+ +
91  {
+
92  return (debugOverlay_) ? debugOverlay_->settings() : debugOverlayNullSettings_;
+
93  }
+
94 
+
96  inline const float *timings() const { return timings_; }
+
97 
+
99  inline IGfxDevice &gfxDevice() { return *gfxDevice_; }
+
101  inline SceneNode &rootNode() { return *rootNode_; }
+
103  Viewport &screenViewport();
+
105  inline IInputManager &inputManager() { return *inputManager_; }
+
106 
+
108  unsigned long int numFrames() const;
+
110  float interval() const;
+
112  IFrameTimer &frameTimer();
+
113 
+
115  inline float width() const { return static_cast<float>(gfxDevice_->drawableWidth()); }
+
117  inline float height() const { return static_cast<float>(gfxDevice_->drawableHeight()); }
+
119  inline Vector2f resolution() const { return Vector2f(width(), height()); }
+
120 
+
122  inline int widthInt() const { return gfxDevice_->drawableWidth(); }
+
124  inline int heightInt() const { return gfxDevice_->drawableHeight(); }
+
126  inline Vector2i resolutionInt() const { return gfxDevice_->drawableResolution(); }
+
127 
+
129 
+
130  inline bool isSuspended() const { return isSuspended_; }
+
132  inline void setSuspended(bool suspended) { isSuspended_ = suspended; }
+
133 
+
135 
+
136  inline bool autoSuspension() const { return autoSuspension_; }
+
138  inline void setAutoSuspension(bool autoSuspension) { autoSuspension_ = autoSuspension; }
+
139 
+
141  inline void quit() { shouldQuit_ = true; }
+
143  inline bool shouldQuit() const { return shouldQuit_; }
+
144 
+
146  inline bool hasFocus() const { return hasFocus_; }
+
147 
+
148  protected:
+
149  bool isSuspended_;
+
150  bool autoSuspension_;
+
151  bool hasFocus_;
+
152  bool shouldQuit_;
+
153  const AppConfiguration appCfg_;
+
154  RenderingSettings renderingSettings_;
+
155  GuiSettings guiSettings_;
+
156  float timings_[Timings::COUNT];
+
157  IDebugOverlay::DisplaySettings debugOverlayNullSettings_;
+
158 
+
159  TimeStamp profileStartTime_;
+
160  nctl::UniquePtr<FrameTimer> frameTimer_;
+
161  nctl::UniquePtr<IGfxDevice> gfxDevice_;
+
162  nctl::UniquePtr<SceneNode> rootNode_;
+
163  nctl::UniquePtr<ScreenViewport> screenViewport_;
+
164  nctl::UniquePtr<IDebugOverlay> debugOverlay_;
+
165  nctl::UniquePtr<IInputManager> inputManager_;
+
166  nctl::UniquePtr<IAppEventHandler> appEventHandler_;
+
167 #ifdef WITH_IMGUI
+
168  nctl::UniquePtr<ImGuiDrawing> imguiDrawing_;
+
169 #endif
+
170 #ifdef WITH_NUKLEAR
+
171  nctl::UniquePtr<NuklearDrawing> nuklearDrawing_;
+
172 #endif
+
173 
+
174  Application();
+
175  ~Application();
+
176 
+
178  void initCommon();
+
180  void step();
+
182  void shutdownCommon();
+
183 
+
185  void suspend();
+
187  void resume();
+
188 
+
190  virtual void setFocus(bool hasFocus);
+
191 
+
193  bool resizeScreenViewport(int width, int height);
+
194 
+
196  bool updateScalingFactor();
+
197 
+
198  private:
+
200  Application(const Application &) = delete;
+
202  Application &operator=(const Application &) = delete;
+
203 
+
204  bool shouldSuspend();
+
205 
+
206  friend class PCApplication;
+
207  friend class AndroidApplication;
+
208 #ifdef __EMSCRIPTEN__
+
209  friend class IGfxDevice;
+
210 #endif
+
211  friend class Viewport; // for `onDrawViewport()`
+
212  friend class GlfwInputManager; // for `resizeScreenViewport()`
+
213  friend class Qt5Widget; // for `resizeScreenViewport()`
+
214 };
+
215 
+
216 // Meyers' Singleton
+
217 extern DLL_PUBLIC Application &theApplication();
+
218 
+
219 }
+
220 
+
221 #endif
+
Main entry point and handler for nCine Android applications.
Definition: AndroidApplication.h:13
+
The class storing initialization settings for an nCine application.
Definition: AppConfiguration.h:12
+
Main entry point and handler for nCine applications.
Definition: Application.h:24
+
float height() const
Returns the drawable screen height as a float number.
Definition: Application.h:117
+
const float * timings() const
Returns all timings.
Definition: Application.h:96
+
IGfxDevice & gfxDevice()
Returns the graphics device instance.
Definition: Application.h:99
+
void setAutoSuspension(bool autoSuspension)
Sets the auto-suspension flag value.
Definition: Application.h:138
+
bool hasFocus() const
Returns the focus flag value.
Definition: Application.h:146
+
SceneNode & rootNode()
Returns the root node of the transformation graph.
Definition: Application.h:101
+
Vector2i resolutionInt() const
Returns the drawable screen resolution as a Vector2i object.
Definition: Application.h:126
+
bool autoSuspension() const
Returns the value of the auto-suspension flag.
Definition: Application.h:136
+
Vector2f resolution() const
Returns the drawable screen resolution as a Vector2f object.
Definition: Application.h:119
+
IDebugOverlay::DisplaySettings & debugOverlaySettings()
Returns the run-time debug overlay settings, if debug overlay is available.
Definition: Application.h:90
+
void setSuspended(bool suspended)
Sets the suspension flag value.
Definition: Application.h:132
+
GuiSettings & guiSettings()
Returns the run-time GUI settings.
Definition: Application.h:88
+
int heightInt() const
Returns the drawable screen height as an integer number.
Definition: Application.h:124
+
RenderingSettings & renderingSettings()
Returns the run-time rendering settings.
Definition: Application.h:86
+
bool shouldQuit() const
Returns the value of the quit flag.
Definition: Application.h:143
+
bool isSuspended() const
Returns the value of the suspension flag.
Definition: Application.h:130
+
IInputManager & inputManager()
Returns the input manager instance.
Definition: Application.h:105
+
const AppConfiguration & appConfiguration() const
Returns the configuration used to initialize the application.
Definition: Application.h:84
+
void quit()
Asks the application to quit as soon as possible (by raising the quit flag)
Definition: Application.h:141
+
int widthInt() const
Returns the drawable screen width as an integer number.
Definition: Application.h:122
+
float width() const
Returns the drawable screen width as a float number.
Definition: Application.h:115
+
Frame interval and average FPS calculator interface class.
Definition: IFrameTimer.h:10
+
It represents the interface to the graphics device where everything is rendered.
Definition: IGfxDevice.h:21
+
The interface class for parsing and dispatching input events.
Definition: IInputManager.h:16
+
Handler class for nCine applications on PC.
Definition: PCApplication.h:12
+
The Qt5 nCine widget.
Definition: Qt5Widget.h:24
+
The base class for the transformation nodes hierarchy.
Definition: SceneNode.h:19
+
A class representing a point in time or a duration.
Definition: TimeStamp.h:11
+ +
The class handling a viewport and its corresponding render target texture.
Definition: Viewport.h:22
+ +
GUI settings (for ImGui and Nuklear) that can be changed at run-time.
Definition: Application.h:47
+
uint16_t nuklearLayer
Nuklear drawable node layer.
Definition: Application.h:53
+
Viewport * nuklearViewport
Nuklear viewport.
Definition: Application.h:59
+
Viewport * imguiViewport
ImGui viewport.
Definition: Application.h:56
+
uint16_t imguiLayer
ImGui drawable node layer.
Definition: Application.h:51
+
Rendering settings that can be changed at run-time.
Definition: Application.h:28
+
bool cullingEnabled
True if node culling is enabled.
Definition: Application.h:38
+
bool batchingEnabled
True if batching is enabled.
Definition: Application.h:34
+
bool batchingWithIndices
True if using indices for vertex batching.
Definition: Application.h:36
+
unsigned int minBatchSize
Minimum size for a batch to be collected.
Definition: Application.h:40
+
unsigned int maxBatchSize
Maximum size for a batch before a forced split.
Definition: Application.h:42
+
Definition: Application.h:63
+
Definition: IDebugOverlay.h:13
+
+ + + + diff --git a/master/_array_8h_source.html b/master/_array_8h_source.html new file mode 100644 index 0000000000..5a60964d53 --- /dev/null +++ b/master/_array_8h_source.html @@ -0,0 +1,766 @@ + + + + + + + +nCine: include/nctl/Array.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Array.h
+
+
+
1 #ifndef CLASS_NCTL_ARRAY
+
2 #define CLASS_NCTL_ARRAY
+
3 
+
4 #include <new>
+
5 #include <ncine/common_macros.h>
+
6 #include "ArrayIterator.h"
+
7 #include "ReverseIterator.h"
+
8 #include "utility.h"
+
9 
+
10 #include <ncine/config.h>
+
11 #if NCINE_WITH_ALLOCATORS
+
12  #include "AllocManager.h"
+
13  #include "IAllocator.h"
+
14 #endif
+
15 
+
16 namespace nctl {
+
17 
+
19 
+
20 enum class ArrayMode
+
21 {
+
23  GROWING_CAPACITY,
+
25  FIXED_CAPACITY
+
26 };
+
27 
+
29 template <class T>
+
30 class Array
+
31 {
+
32  public:
+ + + + +
41 
+ +
44  : Array(0, ArrayMode::GROWING_CAPACITY) {}
+
46  explicit Array(unsigned int capacity)
+
47  : Array(capacity, ArrayMode::GROWING_CAPACITY) {}
+
48 #if !NCINE_WITH_ALLOCATORS
+
50  Array(unsigned int capacity, ArrayMode mode);
+
51 #else
+
53  Array(unsigned int capacity, ArrayMode mode)
+
54  : Array(capacity, mode, theDefaultAllocator()) {}
+
56  Array(unsigned int capacity, IAllocator &alloc)
+
57  : Array(capacity, ArrayMode::GROWING_CAPACITY, alloc) {}
+
59  Array(unsigned int capacity, ArrayMode mode, IAllocator &alloc);
+
60 #endif
+
61  ~Array();
+
62 
+
64  Array(const Array &other);
+
66  Array(Array &&other);
+
68  Array &operator=(const Array &other);
+
70  Array &operator=(Array &&other);
+
71 
+
73  inline void swap(Array &first, Array &second)
+
74  {
+
75 #if NCINE_WITH_ALLOCATORS
+
76  nctl::swap(first.alloc_, second.alloc_);
+
77 #endif
+
78  nctl::swap(first.array_, second.array_);
+
79  nctl::swap(first.size_, second.size_);
+
80  nctl::swap(first.capacity_, second.capacity_);
+
81  nctl::swap(first.fixedCapacity_, second.fixedCapacity_);
+
82  }
+
83 
+
85  inline Iterator begin() { return Iterator(array_); }
+
87  inline ReverseIterator rBegin() { return ReverseIterator(Iterator(array_ + size_ - 1)); }
+
89  inline Iterator end() { return Iterator(array_ + size_); }
+
91  inline ReverseIterator rEnd() { return ReverseIterator(Iterator(array_ - 1)); }
+
92 
+
94  inline ConstIterator begin() const { return ConstIterator(array_); }
+
96  inline ConstReverseIterator rBegin() const { return ConstReverseIterator(ConstIterator(array_ + size_ - 1)); }
+
98  inline ConstIterator end() const { return ConstIterator(array_ + size_); }
+
100  inline ConstReverseIterator rEnd() const { return ConstReverseIterator(ConstIterator(array_ - 1)); }
+
101 
+
103  inline ConstIterator cBegin() const { return ConstIterator(array_); }
+
105  inline ConstReverseIterator crBegin() const { return ConstReverseIterator(ConstIterator(array_ + size_ - 1)); }
+
107  inline ConstIterator cEnd() const { return ConstIterator(array_ + size_); }
+
109  inline ConstReverseIterator crEnd() const { return ConstReverseIterator(ConstIterator(array_ - 1)); }
+
110 
+
112  inline bool isEmpty() const { return size_ == 0; }
+
114 
+
115  inline unsigned int size() const { return size_; }
+
117 
+
118  inline unsigned int capacity() const { return capacity_; }
+
120  void setSize(unsigned int newSize);
+
122  void setCapacity(unsigned int newCapacity);
+
124  void shrinkToFit();
+
125 
+
127  void clear();
+
129  const T &front() const;
+
131  T &front();
+
133  const T &back() const;
+
135  T &back();
+
137  inline void pushBack(const T &element) { new (extendOne()) T(element); }
+
139  inline void pushBack(T &&element) { new (extendOne()) T(nctl::move(element)); }
+
141  template <typename... Args> void emplaceBack(Args &&... args);
+
143  void popBack();
+
145  T *insertRange(unsigned int index, const T *firstPtr, const T *lastPtr);
+
147  T *insertAt(unsigned int index, const T &element);
+
149  T *insertAt(unsigned int index, T &&element);
+
151  template <typename... Args> T *emplaceAt(unsigned int index, Args &&... args);
+
153  Iterator insert(Iterator position, const T &value);
+
155  Iterator insert(Iterator position, T &&value);
+
157  Iterator insert(Iterator position, Iterator first, Iterator last);
+
159  template <typename... Args> Iterator emplace(Iterator position, Args &&... args);
+
160 
+
162  T *removeRange(unsigned int firstIndex, unsigned int lastIndex);
+
164  inline Iterator removeAt(unsigned int index) { return Iterator(removeRange(index, index + 1)); }
+ +
168  Iterator erase(Iterator first, const Iterator last);
+
169 
+
171  T *unorderedRemoveRange(unsigned int firstIndex, unsigned int lastIndex);
+
173  inline Iterator unorderedRemoveAt(unsigned int index) { return Iterator(unorderedRemoveRange(index, index + 1)); }
+ + +
178 
+
180  const T &at(unsigned int index) const;
+
182  T &at(unsigned int index);
+
184  const T &operator[](unsigned int index) const;
+
186  T &operator[](unsigned int index);
+
187 
+
189  inline const T *data() const { return array_; }
+
191 
+
192  inline T *data() { return array_; }
+
193 
+
194  private:
+
195 #if NCINE_WITH_ALLOCATORS
+
197  IAllocator &alloc_;
+
198 #endif
+
199  T *array_;
+
200  unsigned int size_;
+
201  unsigned int capacity_;
+
202  bool fixedCapacity_;
+
203 
+
205  T *extendOne();
+
206 };
+
207 
+
208 #if !NCINE_WITH_ALLOCATORS
+
209 template <class T>
+
210 Array<T>::Array(unsigned int capacity, ArrayMode mode)
+
211  : array_(nullptr), size_(0), capacity_(0), fixedCapacity_(mode == ArrayMode::FIXED_CAPACITY)
+
212 {
+
213  if (capacity > 0)
+ +
215 }
+
216 #else
+
217 template <class T>
+
218 Array<T>::Array(unsigned int capacity, ArrayMode mode, IAllocator &alloc)
+
219  : alloc_(alloc), array_(nullptr), size_(0), capacity_(0),
+
220  fixedCapacity_(mode == ArrayMode::FIXED_CAPACITY)
+
221 {
+
222  if (capacity > 0)
+ +
224 }
+
225 #endif
+
226 
+
227 template <class T>
+
228 Array<T>::~Array()
+
229 {
+
230  destructArray(array_, size_);
+
231 #if !NCINE_WITH_ALLOCATORS
+
232  ::operator delete(array_);
+
233 #else
+
234  alloc_.deallocate(array_);
+
235 #endif
+
236 }
+
237 
+
238 template <class T>
+ +
240  :
+
241 #if NCINE_WITH_ALLOCATORS
+
242  alloc_(other.alloc_),
+
243 #endif
+
244  array_(nullptr), size_(other.size_), capacity_(other.capacity_), fixedCapacity_(other.fixedCapacity_)
+
245 {
+
246 #if !NCINE_WITH_ALLOCATORS
+
247  array_ = static_cast<T *>(::operator new(capacity_ * sizeof(T)));
+
248 #else
+
249  array_ = static_cast<T *>(alloc_.allocate(capacity_ * sizeof(T)));
+
250 #endif
+
251  copyConstructArray(array_, other.array_, size_);
+
252 }
+
253 
+
254 template <class T>
+ +
256  :
+
257 #if NCINE_WITH_ALLOCATORS
+
258  alloc_(other.alloc_),
+
259 #endif
+
260  array_(nullptr), size_(0), capacity_(0), fixedCapacity_(false)
+
261 {
+
262  swap(*this, other);
+
263 }
+
264 
+
265 template <class T>
+ +
267 {
+
268  if (this == &other)
+
269  return *this;
+
270 
+
271  if (other.size_ > capacity_)
+
272  setCapacity(other.size_);
+
273 
+
274  if (other.size_ > 0 && other.size_ >= size_)
+
275  {
+
276  copyAssignArray(array_, other.array_, size_);
+
277  copyConstructArray(array_ + size_, other.array_ + size_, other.size_ - size_);
+
278  }
+
279  else if (size_ > 0 && size_ >= other.size_)
+
280  {
+
281  copyAssignArray(array_, other.array_, other.size_);
+
282  destructArray(array_ + other.size_, size_ - other.size_);
+
283  }
+
284 
+
285  size_ = other.size_;
+
286  return *this;
+
287 }
+
288 
+
289 template <class T>
+ +
291 {
+
292  if (this != &other)
+
293  {
+
294  swap(*this, other);
+
295  other.clear();
+
296  }
+
297  return *this;
+
298 }
+
299 
+
300 template <class T>
+
301 void Array<T>::setSize(unsigned int newSize)
+
302 {
+
303  const int newElements = newSize - size_;
+
304 
+
305  if (newSize > capacity_)
+
306  {
+
307  setCapacity(newSize);
+
308  // Modifying size only if the capacity is not fixed
+
309  if (capacity_ < newSize)
+
310  return;
+
311  }
+
312 
+
313  if (newElements > 0)
+
314  constructArray(array_ + size_, newElements);
+
315  else if (newElements < 0)
+
316  destructArray(array_ + size_ + newElements, -newElements);
+
317  size_ += newElements;
+
318 }
+
319 
+
320 template <class T>
+
321 void Array<T>::setCapacity(unsigned int newCapacity)
+
322 {
+
323  // If the call does not come from the constructor
+
324  if (capacity_ != 0)
+
325  {
+
326  // Setting a new capacity is disabled if the array is fixed
+
327  if (fixedCapacity_)
+
328  {
+
329  LOGW_X("Trying to change the capacity of a fixed array, from from %u to %u", capacity_, newCapacity);
+
330  return;
+
331  }
+
332 
+
333  if (newCapacity == capacity_)
+
334  {
+
335  LOGW_X("Array capacity already equal to %u", capacity_);
+
336  return;
+
337  }
+
338  else if (newCapacity < capacity_)
+
339  LOGI_X("Array capacity shrinking from %u to %u", capacity_, newCapacity);
+
340  else if (newCapacity > capacity_)
+
341  LOGD_X("Array capacity growing from %u to %u", capacity_, newCapacity);
+
342  }
+
343 
+
344  T *newArray = nullptr;
+
345  if (newCapacity > 0)
+
346  {
+
347 #if !NCINE_WITH_ALLOCATORS
+
348  newArray = static_cast<T *>(::operator new(newCapacity * sizeof(T)));
+
349 #else
+
350  newArray = static_cast<T *>(alloc_.allocate(newCapacity * sizeof(T)));
+
351 #endif
+
352  }
+
353 
+
354  if (size_ > 0)
+
355  {
+
356  const unsigned int oldSize = size_;
+
357  if (newCapacity < size_) // shrinking
+
358  size_ = newCapacity; // cropping last elements
+
359 
+
360  moveConstructArray(newArray, array_, size_);
+
361  destructArray(array_, oldSize);
+
362  }
+
363 
+
364 #if !NCINE_WITH_ALLOCATORS
+
365  ::operator delete(array_);
+
366 #else
+
367  alloc_.deallocate(array_);
+
368 #endif
+
369  array_ = newArray;
+
370  capacity_ = newCapacity;
+
371 }
+
372 
+
373 template <class T>
+ +
375 {
+
376  if (size_ > 0)
+
377  setCapacity(size_);
+
378 }
+
379 
+
381 template <class T>
+ +
383 {
+
384  destructArray(array_, size_);
+
385  size_ = 0;
+
386 }
+
387 
+
388 template <class T>
+
389 const T &Array<T>::front() const
+
390 {
+
391  FATAL_ASSERT_MSG(size_ > 0, "Cannot retrieve an element from an empty array");
+
392  return array_[0];
+
393 }
+
394 
+
395 template <class T>
+ +
397 {
+
398  FATAL_ASSERT_MSG(size_ > 0, "Cannot retrieve an element from an empty array");
+
399  return array_[0];
+
400 }
+
401 
+
402 template <class T>
+
403 const T &Array<T>::back() const
+
404 {
+
405  FATAL_ASSERT_MSG(size_ > 0, "Cannot retrieve an element from an empty array");
+
406  return array_[size_ - 1];
+
407 }
+
408 
+
409 template <class T>
+ +
411 {
+
412  FATAL_ASSERT_MSG(size_ > 0, "Cannot retrieve an element from an empty array");
+
413  return array_[size_ - 1];
+
414 }
+
415 
+
416 template <class T>
+
417 template <typename... Args>
+
418 void Array<T>::emplaceBack(Args &&... args)
+
419 {
+
420  new (extendOne()) T(nctl::forward<Args>(args)...);
+
421 }
+
422 
+
423 template <class T>
+ +
425 {
+
426  FATAL_ASSERT_MSG(size_ > 0, "Cannot pop an element from an empty array");
+
427  destructObject(array_ + size_ - 1);
+
428  size_--;
+
429 }
+
430 
+
431 template <class T>
+
432 T *Array<T>::insertRange(unsigned int index, const T *firstPtr, const T *lastPtr)
+
433 {
+
434  // Cannot insert at more than one position after the last element
+
435  FATAL_ASSERT_MSG_X(index <= size_, "Index %u is out of bounds (size: %u)", index, size_);
+
436  FATAL_ASSERT_MSG_X(firstPtr <= lastPtr, "First pointer %p should precede or be equal to the last one %p", firstPtr, lastPtr);
+
437 
+
438  const unsigned int numElements = static_cast<unsigned int>(lastPtr - firstPtr);
+
439 
+
440  if (size_ + numElements > capacity_)
+
441  setCapacity((size_ + numElements) * 2);
+
442 
+
443  // Backwards loop to account for overlapping areas
+
444  for (unsigned int i = size_ - index; i > 0; i--)
+
445  array_[index + numElements + i - 1] = nctl::move(array_[index + i - 1]);
+
446  copyConstructArray(array_ + index, firstPtr, numElements);
+
447  size_ += numElements;
+
448 
+
449  return (array_ + index + numElements);
+
450 }
+
451 
+
452 template <class T>
+
453 T *Array<T>::insertAt(unsigned int index, const T &element)
+
454 {
+
455  // Cannot insert at more than one position after the last element
+
456  FATAL_ASSERT_MSG_X(index <= size_, "Index %u is out of bounds (size: %u)", index, size_);
+
457 
+
458  if (size_ + 1 > capacity_)
+
459  {
+
460  const unsigned int newCapacity = (size_ == 0) ? 1 : size_ * 2;
+
461  setCapacity(newCapacity);
+
462  }
+
463 
+
464  if (index < size_)
+
465  {
+
466  // Constructing a new element by moving the last one
+
467  new (array_ + size_) T(nctl::move(array_[size_ - 1]));
+
468  // Backwards loop to account for overlapping areas
+
469  for (unsigned int i = size_ - index - 1; i > 0; i--)
+
470  array_[index + i] = nctl::move(array_[index + i - 1]);
+
471  array_[index] = element;
+
472  }
+
473  else
+
474  new (array_ + size_) T(element);
+
475  size_++;
+
476 
+
477  return (array_ + index + 1);
+
478 }
+
479 
+
480 template <class T>
+
481 T *Array<T>::insertAt(unsigned int index, T &&element)
+
482 {
+
483  // Cannot insert at more than one position after the last element
+
484  FATAL_ASSERT_MSG_X(index <= size_, "Index %u is out of bounds (size: %u)", index, size_);
+
485 
+
486  if (size_ + 1 > capacity_)
+
487  {
+
488  const unsigned int newCapacity = (size_ == 0) ? 1 : size_ * 2;
+
489  setCapacity(newCapacity);
+
490  }
+
491 
+
492  if (index < size_)
+
493  {
+
494  // Constructing a new element by moving the last one
+
495  new (array_ + size_) T(nctl::move(array_[size_ - 1]));
+
496  // Backwards loop to account for overlapping areas
+
497  for (unsigned int i = size_ - index - 1; i > 0; i--)
+
498  array_[index + i] = nctl::move(array_[index + i - 1]);
+
499  array_[index] = nctl::move(element);
+
500  }
+
501  else
+
502  new (array_ + size_) T(nctl::move(element));
+
503  size_++;
+
504 
+
505  return (array_ + index + 1);
+
506 }
+
507 
+
508 template <class T>
+
509 template <typename... Args>
+
510 T *Array<T>::emplaceAt(unsigned int index, Args &&... args)
+
511 {
+
512  // Cannot emplace at more than one position after the last element
+
513  FATAL_ASSERT_MSG_X(index <= size_, "Index %u is out of bounds (size: %u)", index, size_);
+
514 
+
515  if (size_ + 1 > capacity_)
+
516  {
+
517  const unsigned int newCapacity = (size_ == 0) ? 1 : size_ * 2;
+
518  setCapacity(newCapacity);
+
519  }
+
520 
+
521  if (index < size_)
+
522  {
+
523  // Constructing a new element by moving the last one
+
524  new (array_ + size_) T(nctl::move(array_[size_ - 1]));
+
525  // Backwards loop to account for overlapping areas
+
526  for (unsigned int i = size_ - index - 1; i > 0; i--)
+
527  array_[index + i] = nctl::move(array_[index + i - 1]);
+
528  destructObject(array_ + index);
+
529  }
+
530  new (array_ + index) T(nctl::forward<Args>(args)...);
+
531  size_++;
+
532 
+
533  return (array_ + index + 1);
+
534 }
+
535 
+
536 template <class T>
+
537 typename Array<T>::Iterator Array<T>::insert(Iterator position, const T &value)
+
538 {
+
539  const unsigned int index = &(*position) - array_;
+
540  T *nextElement = insertAt(index, value);
+
541 
+
542  return Iterator(nextElement);
+
543 }
+
544 
+
545 template <class T>
+
546 typename Array<T>::Iterator Array<T>::insert(Iterator position, T &&value)
+
547 {
+
548  const unsigned int index = &(*position) - array_;
+
549  T *nextElement = insertAt(index, nctl::move(value));
+
550 
+
551  return Iterator(nextElement);
+
552 }
+
553 
+
554 template <class T>
+ +
556 {
+
557  const unsigned int index = static_cast<unsigned int>(&(*position) - array_);
+
558  const T *firstPtr = &(*first);
+
559  const T *lastPtr = &(*last);
+
560  T *nextElement = insertRange(index, firstPtr, lastPtr);
+
561 
+
562  return Iterator(nextElement);
+
563 }
+
564 
+
565 template <class T>
+
566 template <typename... Args>
+
567 typename Array<T>::Iterator Array<T>::emplace(Iterator position, Args &&... args)
+
568 {
+
569  const unsigned int index = &(*position) - array_;
+
570  T *nextElement = emplaceAt(index, nctl::forward<Args>(args)...);
+
571 
+
572  return Iterator(nextElement);
+
573 }
+
574 
+
575 template <class T>
+
576 T *Array<T>::removeRange(unsigned int firstIndex, unsigned int lastIndex)
+
577 {
+
578  // Cannot remove past the last element
+
579  FATAL_ASSERT_MSG_X(firstIndex < size_, "First index %u out of size range", firstIndex);
+
580  FATAL_ASSERT_MSG_X(lastIndex <= size_, "Last index %u out of size range", lastIndex);
+
581  FATAL_ASSERT_MSG_X(firstIndex <= lastIndex, "First index %u should precede or be equal to the last one %u", firstIndex, lastIndex);
+
582 
+
583  const unsigned int numElements = lastIndex - firstIndex;
+
584  moveAssignArray(array_ + firstIndex, array_ + lastIndex, size_ - lastIndex);
+
585  destructArray(array_ + size_ - numElements, numElements);
+
586  size_ -= numElements;
+
587 
+
588  return (array_ + firstIndex);
+
589 }
+
590 
+
591 template <class T>
+ +
593 {
+
594  const unsigned int index = static_cast<unsigned int>(&(*position) - array_);
+
595  return removeAt(index);
+
596 }
+
597 
+
598 template <class T>
+ +
600 {
+
601  const unsigned int firstIndex = static_cast<unsigned int>(&(*first) - array_);
+
602  const unsigned int lastIndex = static_cast<unsigned int>(&(*last) - array_);
+
603  T *nextElement = removeRange(firstIndex, lastIndex);
+
604 
+
605  return Iterator(nextElement);
+
606 }
+
607 
+
609 template <class T>
+
610 T *Array<T>::unorderedRemoveRange(unsigned int firstIndex, unsigned int lastIndex)
+
611 {
+
612  // Cannot remove past the last element
+
613  FATAL_ASSERT_MSG_X(firstIndex < size_, "First index %u out of size range", firstIndex);
+
614  FATAL_ASSERT_MSG_X(lastIndex <= size_, "Last index %u out of size range", lastIndex);
+
615  FATAL_ASSERT_MSG_X(firstIndex <= lastIndex, "First index %u should precede or be equal to the last one %u", firstIndex, lastIndex);
+
616 
+
617  const unsigned int numElements = lastIndex - firstIndex;
+
618  for (unsigned int i = 0; i < numElements; i++)
+
619  array_[firstIndex + i] = nctl::move(array_[size_ - i - 1]);
+
620  destructArray(array_ + size_ - numElements, numElements);
+
621  size_ -= numElements;
+
622 
+
623  return (array_ + firstIndex + 1);
+
624 }
+
625 
+
627 template <class T>
+ +
629 {
+
630  const unsigned int index = static_cast<unsigned int>(&(*position) - array_);
+
631  return unorderedRemoveAt(index);
+
632 }
+
633 
+
635 template <class T>
+ +
637 {
+
638  const unsigned int firstIndex = static_cast<unsigned int>(&(*first) - array_);
+
639  const unsigned int lastIndex = static_cast<unsigned int>(&(*last) - array_);
+
640  T *nextElement = unorderedRemoveRange(firstIndex, lastIndex);
+
641 
+
642  return Iterator(nextElement);
+
643 }
+
644 
+
645 template <class T>
+
646 const T &Array<T>::at(unsigned int index) const
+
647 {
+
648  FATAL_ASSERT_MSG_X(index < size_, "Index %u is out of bounds (size: %u)", index, size_);
+
649  return operator[](index);
+
650 }
+
651 
+
652 template <class T>
+
653 T &Array<T>::at(unsigned int index)
+
654 {
+
655  FATAL_ASSERT_MSG_X(index < size_, "Index %u is out of bounds (size: %u)", index, size_);
+
656  return operator[](index);
+
657 }
+
658 
+
659 template <class T>
+
660 const T &Array<T>::operator[](unsigned int index) const
+
661 {
+
662  ASSERT_MSG_X(index < size_, "Index %u is out of bounds (size: %u)", index, size_);
+
663  return array_[index];
+
664 }
+
665 
+
666 template <class T>
+
667 T &Array<T>::operator[](unsigned int index)
+
668 {
+
669  ASSERT_MSG_X(index < size_, "Index %u is out of bounds (size: %u)", index, size_);
+
670  return array_[index];
+
671 }
+
672 
+
673 template <class T>
+ +
675 {
+
676  // Need growing
+
677  if (size_ == capacity_)
+
678  {
+
679  const unsigned int newCapacity = (capacity_ == 0) ? 1 : capacity_ * 2;
+
680  setCapacity(newCapacity);
+
681  // Extending size only if the capacity is not fixed
+
682  FATAL_ASSERT_MSG_X(capacity_ == newCapacity, "Cannot extend array capacity to %u elements", newCapacity);
+
683  if (capacity_ == newCapacity)
+
684  size_++;
+
685  }
+
686  else
+
687  size_++;
+
688 
+
689  return array_ + size_ - 1;
+
690 }
+
691 
+
692 }
+
693 
+
694 #endif
+
A dynamic array based on templates that stores elements in the heap.
Definition: Array.h:31
+
void setSize(unsigned int newSize)
Sets a new size for the array (allowing for "holes")
Definition: Array.h:301
+
const T & back() const
Returns a constant reference to the last element in constant time.
Definition: Array.h:403
+
nctl::ReverseIterator< ConstIterator > ConstReverseIterator
Reverse constant iterator type.
Definition: Array.h:40
+
ConstReverseIterator crEnd() const
Returns a constant reverse iterator to prior the first element.
Definition: Array.h:109
+
ConstIterator begin() const
Returns a constant iterator to the first element.
Definition: Array.h:94
+
T & front()
Returns a reference to the first element in constant time.
Definition: Array.h:396
+
Iterator unorderedRemoveAt(unsigned int index)
Removes an element at a specified position (moving the last element in place)
Definition: Array.h:173
+
Iterator erase(Iterator first, const Iterator last)
Removes the elements in the range, last not included (shifting elements around)
Definition: Array.h:599
+
T * insertAt(unsigned int index, const T &element)
Inserts a new element at a specified position (shifting elements around)
Definition: Array.h:453
+
ReverseIterator rBegin()
Returns a reverse iterator to the last element.
Definition: Array.h:87
+
Iterator begin()
Returns an iterator to the first element.
Definition: Array.h:85
+
T * removeRange(unsigned int firstIndex, unsigned int lastIndex)
Removes the specified range of elements, last not included (shifting elements around)
Definition: Array.h:576
+
T & operator[](unsigned int index)
Subscript operator.
Definition: Array.h:667
+
void pushBack(T &&element)
Appends a new element in constant time, the element is moved into the array.
Definition: Array.h:139
+
void clear()
Clears the array.
Definition: Array.h:382
+
T * data()
Returns a pointer to the allocated memory.
Definition: Array.h:192
+
ReverseIterator rEnd()
Returns a reverse iterator to prior the first element.
Definition: Array.h:91
+
T & at(unsigned int index)
Access to the specified element (with bounds checking)
Definition: Array.h:653
+
Array()
Constructs an array without allocating memory.
Definition: Array.h:43
+
T & back()
Returns a reference to the last element in constant time.
Definition: Array.h:410
+
ArrayIterator< T, true > ConstIterator
Constant iterator type.
Definition: Array.h:36
+
void shrinkToFit()
Decreases the capacity to match the current size of the array.
Definition: Array.h:374
+
ConstReverseIterator rBegin() const
Returns a constant reverse iterator to the last element.
Definition: Array.h:96
+
void swap(Array &first, Array &second)
Swaps two arrays without copying their data.
Definition: Array.h:73
+
ConstIterator cBegin() const
Returns a constant iterator to the first element.
Definition: Array.h:103
+
Iterator insert(Iterator position, Iterator first, Iterator last)
Inserts new elements from a source at the position specified by the iterator (shifting elements aroun...
Definition: Array.h:555
+
T * unorderedRemoveRange(unsigned int firstIndex, unsigned int lastIndex)
Removes the specified range of elements, last not included (moving tail elements in place)
Definition: Array.h:610
+
const T & operator[](unsigned int index) const
Read-only subscript operator.
Definition: Array.h:660
+
ConstIterator cEnd() const
Returns a constant iterator to past the last lement.
Definition: Array.h:107
+
Array(Array &&other)
Move constructor.
Definition: Array.h:255
+
void emplaceBack(Args &&... args)
Constructs a new element at the end of the array.
Definition: Array.h:418
+
T * insertAt(unsigned int index, T &&element)
Move inserts a new element at a specified position (shifting elements around)
Definition: Array.h:481
+
const T * data() const
Returns a constant pointer to the allocated memory.
Definition: Array.h:189
+
const T & front() const
Returns a constant reference to the first element in constant time.
Definition: Array.h:389
+
Iterator insert(Iterator position, T &&value)
Move inserts a new element at the position specified by the iterator (shifting elements around)
Definition: Array.h:546
+
Iterator removeAt(unsigned int index)
Removes an element at a specified position (shifting elements around)
Definition: Array.h:164
+
ArrayIterator< T, false > Iterator
Iterator type.
Definition: Array.h:34
+
unsigned int size() const
Returns the array size.
Definition: Array.h:115
+
Array(unsigned int capacity)
Constructs an array with explicit capacity.
Definition: Array.h:46
+
Iterator emplace(Iterator position, Args &&... args)
Constructs a new element at the position specified by the iterator.
Definition: Array.h:567
+
Array(unsigned int capacity, ArrayMode mode)
Constructs an array with explicit capacity and the option for it to be fixed.
Definition: Array.h:210
+
Iterator erase(Iterator position)
Removes the element pointed by the iterator (shifting elements around)
Definition: Array.h:592
+
Array & operator=(Array &&other)
Move assignment operator.
Definition: Array.h:290
+
T * insertRange(unsigned int index, const T *firstPtr, const T *lastPtr)
Inserts new elements at the specified position from a source range, last not included (shifting eleme...
Definition: Array.h:432
+
ConstReverseIterator crBegin() const
Returns a constant reverse iterator to the last element.
Definition: Array.h:105
+
ConstIterator end() const
Returns a constant iterator to past the last lement.
Definition: Array.h:98
+
void popBack()
Removes the last element in constant time.
Definition: Array.h:424
+
Iterator insert(Iterator position, const T &value)
Inserts a new element at the position specified by the iterator (shifting elements around)
Definition: Array.h:537
+
bool isEmpty() const
Returns true if the array is empty.
Definition: Array.h:112
+
Array(const Array &other)
Copy constructor.
Definition: Array.h:239
+
nctl::ReverseIterator< Iterator > ReverseIterator
Reverse iterator type.
Definition: Array.h:38
+
T * emplaceAt(unsigned int index, Args &&... args)
Constructs a new element at the position specified by the index.
Definition: Array.h:510
+
Array & operator=(const Array &other)
Assignment operator.
Definition: Array.h:266
+
void setCapacity(unsigned int newCapacity)
Sets a new capacity for the array (can be bigger or smaller than the current one)
Definition: Array.h:321
+
void pushBack(const T &element)
Appends a new element in constant time, the element is copied into the array.
Definition: Array.h:137
+
Iterator unorderedErase(Iterator first, const Iterator last)
Removes the elements in the range, last not included (moving tail elements in place)
Definition: Array.h:636
+
Iterator end()
Returns an iterator to past the last element.
Definition: Array.h:89
+
ConstReverseIterator rEnd() const
Returns a constant reverse iterator to prior the first element.
Definition: Array.h:100
+
unsigned int capacity() const
Returns the array capacity.
Definition: Array.h:118
+
const T & at(unsigned int index) const
Read-only access to the specified element (with bounds checking)
Definition: Array.h:646
+
Iterator unorderedErase(Iterator position)
Removes the element pointed by the iterator (moving the last element in place)
Definition: Array.h:628
+
An Array iterator.
Definition: ArrayIterator.h:13
+
The allocator interface.
Definition: IAllocator.h:18
+
A generic reverse iterator.
Definition: ReverseIterator.h:11
+
+ + + + diff --git a/master/_array_iterator_8h_source.html b/master/_array_iterator_8h_source.html new file mode 100644 index 0000000000..364007a129 --- /dev/null +++ b/master/_array_iterator_8h_source.html @@ -0,0 +1,319 @@ + + + + + + + +nCine: include/nctl/ArrayIterator.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ArrayIterator.h
+
+
+
1 #ifndef CLASS_NCTL_ARRAYITERATOR
+
2 #define CLASS_NCTL_ARRAYITERATOR
+
3 
+
4 #include <ncine/common_macros.h>
+
5 #include "iterator.h"
+
6 #include "ReverseIterator.h"
+
7 
+
8 namespace nctl {
+
9 
+
11 template <class T, bool IsConst>
+ +
13 {
+
14  public:
+ + +
19 
+
20  explicit ArrayIterator(T *elementPtr)
+
21  : elementPtr_(elementPtr) {}
+
22 
+ +
25  : elementPtr_(it.elementPtr_) {}
+
26 
+
28  Reference operator*() const;
+
29 
+ + +
34 
+ + +
39 
+
41  ArrayIterator &operator+=(int n);
+
43  ArrayIterator &operator-=(int n);
+
45  ArrayIterator operator+(int n) const;
+
47  ArrayIterator operator-(int n) const;
+
49  friend inline int operator-(const ArrayIterator &lhs, const ArrayIterator &rhs) { return static_cast<int>(lhs.elementPtr_ - rhs.elementPtr_); }
+
50 
+
52  Reference operator[](int n) const;
+
53 
+
55  friend inline bool operator==(const ArrayIterator &lhs, const ArrayIterator &rhs) { return lhs.elementPtr_ == rhs.elementPtr_; }
+
56 
+
58  friend inline bool operator!=(const ArrayIterator &lhs, const ArrayIterator &rhs) { return lhs.elementPtr_ != rhs.elementPtr_; }
+
59 
+
61  friend inline bool operator>(const ArrayIterator &lhs, const ArrayIterator &rhs) { return lhs.elementPtr_ > rhs.elementPtr_; }
+
63  friend inline bool operator<(const ArrayIterator &lhs, const ArrayIterator &rhs) { return lhs.elementPtr_ < rhs.elementPtr_; }
+
65  friend inline bool operator>=(const ArrayIterator &lhs, const ArrayIterator &rhs) { return lhs.elementPtr_ >= rhs.elementPtr_; }
+
67  friend inline bool operator<=(const ArrayIterator &lhs, const ArrayIterator &rhs) { return lhs.elementPtr_ <= rhs.elementPtr_; }
+
68 
+
69  private:
+
70  Pointer elementPtr_;
+
71 
+
73  friend class ArrayIterator<T, true>;
+
74 };
+
75 
+
77 template <class T>
+
78 struct IteratorTraits<ArrayIterator<T, false>>
+
79 {
+
81  using ValueType = T;
+
83  using Pointer = T *;
+
85  using Reference = T &;
+ +
88 };
+
89 
+
91 template <class T>
+
92 struct IteratorTraits<ArrayIterator<T, true>>
+
93 {
+
95  using ValueType = T;
+
97  using Pointer = const T *;
+
99  using Reference = const T &;
+ +
102 };
+
103 
+
104 template <class T, bool IsConst>
+ +
106 {
+
107  ASSERT(elementPtr_);
+
108  return *elementPtr_;
+
109 }
+
110 
+
111 template <class T, bool IsConst>
+ +
113 {
+
114  ++elementPtr_;
+
115 
+
116  return *this;
+
117 }
+
118 
+
119 template <class T, bool IsConst>
+ +
121 {
+
122  // Create an unmodified copy to return
+
123  ArrayIterator<T, IsConst> iterator = *this;
+
124 
+
125  ++elementPtr_;
+
126 
+
127  return iterator;
+
128 }
+
129 
+
130 template <class T, bool IsConst>
+ +
132 {
+
133  --elementPtr_;
+
134 
+
135  return *this;
+
136 }
+
137 
+
138 template <class T, bool IsConst>
+ +
140 {
+
141  // Create an unmodified copy to return
+
142  ArrayIterator<T, IsConst> iterator = *this;
+
143 
+
144  --elementPtr_;
+
145 
+
146  return iterator;
+
147 }
+
148 
+
149 template <class T, bool IsConst>
+ +
151 {
+
152  elementPtr_ += n;
+
153 
+
154  return *this;
+
155 }
+
156 
+
157 template <class T, bool IsConst>
+ +
159 {
+
160  elementPtr_ -= n;
+
161 
+
162  return *this;
+
163 }
+
164 
+
165 template <class T, bool IsConst>
+ +
167 {
+
168  ArrayIterator<T, IsConst> iterator = *this;
+
169  iterator.elementPtr_ += n;
+
170 
+
171  return iterator;
+
172 }
+
173 
+
174 template <class T, bool IsConst>
+ +
176 {
+
177  ArrayIterator<T, IsConst> iterator = *this;
+
178  iterator.elementPtr_ -= n;
+
179 
+
180  return iterator;
+
181 }
+
182 
+
183 template <class T, bool IsConst>
+ +
185 {
+
186  return *(elementPtr_ + n);
+
187 }
+
188 
+
190 // C-STYLE ARRAYS
+
192 
+
193 template <class T, unsigned int N>
+
194 ArrayIterator<T, false> begin(T (&array)[N])
+
195 {
+
196  return ArrayIterator<T, false>(array);
+
197 }
+
198 
+
199 template <class T, unsigned int N>
+
200 ReverseIterator<ArrayIterator<T, false>> rBegin(T (&array)[N])
+
201 {
+
202  return ReverseIterator<ArrayIterator<T, false>>(ArrayIterator<T, false>(array + N - 1));
+
203 }
+
204 
+
205 template <class T, unsigned int N>
+
206 const ArrayIterator<T, true> cBegin(T (&array)[N])
+
207 {
+
208  return ArrayIterator<T, true>(array);
+
209 }
+
210 
+
211 template <class T, unsigned int N>
+
212 const ReverseIterator<ArrayIterator<T, true>> crBegin(T (&array)[N])
+
213 {
+
214  return ReverseIterator<ArrayIterator<T, true>>(ArrayIterator<T, true>(array + N - 1));
+
215 }
+
216 
+
217 template <class T, unsigned int N>
+
218 ArrayIterator<T, false> end(T (&array)[N])
+
219 {
+
220  return ArrayIterator<T, false>(array + N);
+
221 }
+
222 
+
223 template <class T, unsigned int N>
+
224 ReverseIterator<ArrayIterator<T, false>> rEnd(T (&array)[N])
+
225 {
+
226  return ReverseIterator<ArrayIterator<T, false>>(ArrayIterator<T, false>(array - 1));
+
227 }
+
228 
+
229 template <class T, unsigned int N>
+
230 const ArrayIterator<T, true> cEnd(T (&array)[N])
+
231 {
+
232  return ArrayIterator<T, true>(array + N);
+
233 }
+
234 
+
235 template <class T, unsigned int N>
+
236 const ReverseIterator<ArrayIterator<T, true>> crEnd(T (&array)[N])
+
237 {
+
238  return ReverseIterator<ArrayIterator<T, true>>(ArrayIterator<T, true>(array - 1));
+
239 }
+
240 
+
241 }
+
242 
+
243 #endif
+
An Array iterator.
Definition: ArrayIterator.h:13
+
ArrayIterator & operator++()
Iterates to the next element (prefix)
Definition: ArrayIterator.h:112
+
ArrayIterator operator-(int n) const
Subtraction operator.
Definition: ArrayIterator.h:175
+
ArrayIterator & operator+=(int n)
Compound addition operator.
Definition: ArrayIterator.h:150
+
friend bool operator>=(const ArrayIterator &lhs, const ArrayIterator &rhs)
Greater than or equal to operator.
Definition: ArrayIterator.h:65
+
friend bool operator!=(const ArrayIterator &lhs, const ArrayIterator &rhs)
Inequality operator.
Definition: ArrayIterator.h:58
+
typename IteratorTraits< ArrayIterator >::Reference Reference
Reference type which respects iterator constness.
Definition: ArrayIterator.h:18
+
friend int operator-(const ArrayIterator &lhs, const ArrayIterator &rhs)
Pointer subtraction operator.
Definition: ArrayIterator.h:49
+
ArrayIterator & operator--()
Iterates to the previous element (prefix)
Definition: ArrayIterator.h:131
+
ArrayIterator operator+(int n) const
Addition operator.
Definition: ArrayIterator.h:166
+
friend bool operator<(const ArrayIterator &lhs, const ArrayIterator &rhs)
Less than operator.
Definition: ArrayIterator.h:63
+
ArrayIterator & operator-=(int n)
Compound subtraction operator.
Definition: ArrayIterator.h:158
+
friend bool operator==(const ArrayIterator &lhs, const ArrayIterator &rhs)
Equality operator.
Definition: ArrayIterator.h:55
+
friend bool operator>(const ArrayIterator &lhs, const ArrayIterator &rhs)
Greater than operator.
Definition: ArrayIterator.h:61
+
Reference operator[](int n) const
Subscript operator.
Definition: ArrayIterator.h:184
+
friend bool operator<=(const ArrayIterator &lhs, const ArrayIterator &rhs)
Less than or equal to operator.
Definition: ArrayIterator.h:67
+
Reference operator*() const
Deferencing operator.
Definition: ArrayIterator.h:105
+
typename IteratorTraits< ArrayIterator >::Pointer Pointer
Pointer type which respects iterator constness.
Definition: ArrayIterator.h:16
+
ArrayIterator(const ArrayIterator< T, false > &it)
Copy constructor to implicitly convert a non constant iterator to a constant one.
Definition: ArrayIterator.h:24
+
T * Pointer
Pointer to the type of the values deferenced by the iterator.
Definition: ArrayIterator.h:83
+
T & Reference
Reference to the type of the values deferenced by the iterator.
Definition: ArrayIterator.h:85
+
T ValueType
Type of the values deferenced by the iterator.
Definition: ArrayIterator.h:81
+
static RandomAccessIteratorTag IteratorCategory()
Type trait for iterator category.
Definition: ArrayIterator.h:87
+
const T * Pointer
Pointer to the type of the values deferenced by the iterator.
Definition: ArrayIterator.h:97
+
const T & Reference
Reference to the type of the values deferenced by the iterator.
Definition: ArrayIterator.h:99
+
T ValueType
Type of the values deferenced by the iterator (never const)
Definition: ArrayIterator.h:95
+
static RandomAccessIteratorTag IteratorCategory()
Type trait for iterator category.
Definition: ArrayIterator.h:101
+
Base iterator traits structure.
Definition: iterator.h:19
+
Dispatching tag for iterators that can jump arbitrary distances in both ways.
Definition: iterator.h:14
+
+ + + + diff --git a/master/_asset_file_8h_source.html b/master/_asset_file_8h_source.html new file mode 100644 index 0000000000..3953c10f9c --- /dev/null +++ b/master/_asset_file_8h_source.html @@ -0,0 +1,138 @@ + + + + + + + +nCine: include/ncine/AssetFile.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
AssetFile.h
+
+
+
1 #ifndef CLASS_NCINE_ASSETFILE
+
2 #define CLASS_NCINE_ASSETFILE
+
3 
+
4 #include "IFile.h"
+
5 #include <android_native_app_glue.h> // for android_app
+
6 #include <android/asset_manager.h>
+
7 
+
8 namespace ncine {
+
9 
+
11 class DLL_PUBLIC AssetFile : public IFile
+
12 {
+
13  public:
+
14  static const char *Prefix;
+
15 
+
17 
+
18  explicit AssetFile(const char *filename);
+
19  ~AssetFile() override;
+
20 
+
22  void open(unsigned char mode) override;
+
24  void close() override;
+
25  long int seek(long int offset, int whence) const override;
+
26  long int tell() const override;
+
27  unsigned long int read(void *buffer, unsigned long int bytes) const override;
+
28  unsigned long int write(const void *buffer, unsigned long int bytes) override { return 0; }
+
29 
+
30  bool isOpened() const override;
+
31 
+
33  static void initAssetManager(struct android_app *state) { assetManager_ = state->activity->assetManager; }
+
34 
+
36  static const char *assetPath(const char *path);
+
37 
+
39  static bool tryOpen(const char *path);
+
41  static bool tryOpenFile(const char *path);
+
43  static bool tryOpenDirectory(const char *path);
+
45  static off_t length(const char *path);
+
46 
+
47  static AAssetDir *openDir(const char *dirName);
+
48  static void closeDir(AAssetDir *assetDir);
+
49  static void rewindDir(AAssetDir *assetDir);
+
50  static const char *nextFileName(AAssetDir *assetDir);
+
51 
+
52  private:
+
53  static AAssetManager *assetManager_;
+
54  AAsset *asset_;
+
55  unsigned long int startOffset_;
+
56 
+
58  void openFD(unsigned char mode);
+
60  void openAsset(unsigned char mode);
+
61 };
+
62 
+
63 }
+
64 
+
65 #endif
+
The class dealing with Android asset files.
Definition: AssetFile.h:12
+
unsigned long int write(const void *buffer, unsigned long int bytes) override
Writes a certain amount of bytes from a buffer to the file.
Definition: AssetFile.h:28
+
static void initAssetManager(struct android_app *state)
Sets the global pointer to the AAssetManager.
Definition: AssetFile.h:33
+
The interface class dealing with file operations.
Definition: IFile.h:13
+
+ + + + diff --git a/master/_atomic_8h_source.html b/master/_atomic_8h_source.html new file mode 100644 index 0000000000..40bdc58af1 --- /dev/null +++ b/master/_atomic_8h_source.html @@ -0,0 +1,206 @@ + + + + + + + +nCine: include/nctl/Atomic.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Atomic.h
+
+
+
1 #ifndef NCTL_ATOMIC
+
2 #define NCTL_ATOMIC
+
3 
+
4 #include <cstdint>
+
5 #include <ncine/common_macros.h>
+
6 
+
7 #if defined(__APPLE__)
+
8  #include <atomic>
+
9 #endif
+
10 
+
11 namespace nctl {
+
12 
+
14 class DLL_PUBLIC Atomic32
+
15 {
+
16  public:
+
17  enum class MemoryModel
+
18  {
+
19  RELAXED,
+
20  ACQUIRE,
+
21  RELEASE,
+
22  SEQ_CST
+
23  };
+
24 
+
25  Atomic32()
+
26  : value_(0) {}
+
27  explicit Atomic32(int32_t value)
+
28  : value_(value) {}
+
29  ~Atomic32() = default;
+
30 
+
31  int32_t load(MemoryModel memModel);
+
32  inline int32_t load() { return load(MemoryModel::SEQ_CST); }
+
33  void store(int32_t value, MemoryModel memModel);
+
34  inline void store(int32_t value) { store(value, MemoryModel::SEQ_CST); }
+
35 
+
36  int32_t fetchAdd(int32_t value, MemoryModel memModel);
+
37  inline int32_t fetchAdd(int32_t value) { return fetchAdd(value, MemoryModel::SEQ_CST); }
+
38  int32_t fetchSub(int32_t value, MemoryModel memModel);
+
39  inline int32_t fetchSub(int32_t value) { return fetchSub(value, MemoryModel::SEQ_CST); }
+
40  bool cmpExchange(int32_t newValue, int32_t cmpValue, MemoryModel memModel);
+
41  inline bool cmpExchange(int32_t newValue, int32_t cmpValue) { return cmpExchange(newValue, cmpValue, MemoryModel::SEQ_CST); }
+
42 
+
43  int32_t operator=(int32_t value)
+
44  {
+
45  store(value);
+
46  return value_;
+
47  }
+
48 
+
49  operator int32_t() { return load(); }
+
50 
+
51  inline int32_t operator++() { return fetchAdd(1) + 1; }
+
52  inline int32_t operator++(int) { return fetchAdd(1); }
+
53  inline int32_t operator--() { return fetchSub(1) - 1; }
+
54  inline int32_t operator--(int) { return fetchSub(1); }
+
55 
+
56  private:
+
57 #ifdef __APPLE__
+
58  std::atomic<int32_t> value_;
+
59 #else
+
60  int32_t value_;
+
61 #endif
+
62 
+
64  Atomic32(const Atomic32 &) = delete;
+
66  Atomic32(Atomic32 &&) = delete;
+
68  Atomic32 &operator=(const Atomic32 &) = delete;
+
69 };
+
70 
+
72 class DLL_PUBLIC Atomic64
+
73 {
+
74  public:
+
75  enum class MemoryModel
+
76  {
+
77  RELAXED,
+
78  ACQUIRE,
+
79  RELEASE,
+
80  SEQ_CST
+
81  };
+
82 
+
83  Atomic64()
+
84  : value_(0) {}
+
85  explicit Atomic64(int64_t value)
+
86  : value_(value) {}
+
87  ~Atomic64() = default;
+
88 
+
89  int64_t load(MemoryModel memModel);
+
90  inline int64_t load() { return load(MemoryModel::SEQ_CST); }
+
91  void store(int64_t value, MemoryModel memModel);
+
92  inline void store(int64_t value) { store(value, MemoryModel::SEQ_CST); }
+
93 
+
94  int64_t fetchAdd(int64_t value, MemoryModel memModel);
+
95  inline int64_t fetchAdd(int64_t value) { return fetchAdd(value, MemoryModel::SEQ_CST); }
+
96  int64_t fetchSub(int64_t value, MemoryModel memModel);
+
97  inline int64_t fetchSub(int64_t value) { return fetchSub(value, MemoryModel::SEQ_CST); }
+
98  bool cmpExchange(int64_t newValue, int64_t cmpValue, MemoryModel memModel);
+
99  inline bool cmpExchange(int64_t newValue, int64_t cmpValue) { return cmpExchange(newValue, cmpValue, MemoryModel::SEQ_CST); }
+
100 
+
101  inline int64_t operator=(int64_t value)
+
102  {
+
103  store(value);
+
104  return value_;
+
105  }
+
106 
+
107  operator int64_t() { return load(); }
+
108 
+
109  inline int64_t operator++() { return fetchAdd(1) + 1; }
+
110  inline int64_t operator++(int) { return fetchAdd(1); }
+
111  inline int64_t operator--() { return fetchSub(1) - 1; }
+
112  inline int64_t operator--(int) { return fetchSub(1); }
+
113 
+
114  private:
+
115 #ifdef __APPLE__
+
116  std::atomic<int64_t> value_;
+
117 #else
+
118  int64_t value_;
+
119 #endif
+
120 
+
122  Atomic64(const Atomic64 &) = delete;
+
124  Atomic64(Atomic64 &&) = delete;
+
126  Atomic64 &operator=(const Atomic64 &) = delete;
+
127 };
+
128 
+
129 }
+
130 
+
131 #endif
+
An atomic int32_t class.
Definition: Atomic.h:15
+
An atomic int64_t class.
Definition: Atomic.h:73
+
+ + + + diff --git a/master/_audio_buffer_8h_source.html b/master/_audio_buffer_8h_source.html new file mode 100644 index 0000000000..683861891f --- /dev/null +++ b/master/_audio_buffer_8h_source.html @@ -0,0 +1,157 @@ + + + + + + + +nCine: include/ncine/AudioBuffer.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
AudioBuffer.h
+
+
+
1 #ifndef CLASS_NCINE_AUDIOBUFFER
+
2 #define CLASS_NCINE_AUDIOBUFFER
+
3 
+
4 #include "Object.h"
+
5 
+
6 namespace ncine {
+
7 
+
8 class IAudioLoader;
+
9 
+
11 
+
13 class DLL_PUBLIC AudioBuffer : public Object
+
14 {
+
15  public:
+
16  enum class Format
+
17  {
+
18  MONO8,
+
19  STEREO8,
+
20  MONO16,
+
21  STEREO16
+
22  };
+
23 
+
25  AudioBuffer();
+
27  AudioBuffer(const char *bufferName, const unsigned char *bufferPtr, unsigned long int bufferSize);
+
29  explicit AudioBuffer(const char *filename);
+
30  ~AudioBuffer() override;
+
31 
+
33  AudioBuffer(AudioBuffer &&other);
+
35  AudioBuffer &operator=(AudioBuffer &&other);
+
36 
+
38  void init(const char *name, Format format, int frequency);
+
39 
+
40  bool loadFromMemory(const char *bufferName, const unsigned char *bufferPtr, unsigned long int bufferSize);
+
41  bool loadFromFile(const char *filename);
+
43  bool loadFromSamples(const unsigned char *bufferPtr, unsigned long int bufferSize);
+
44 
+
46  inline unsigned int bufferId() const { return bufferId_; }
+
47 
+
49  inline int bytesPerSample() const { return bytesPerSample_; }
+
51  inline int numChannels() const { return numChannels_; }
+
53  inline int frequency() const { return frequency_; }
+
54 
+
56  inline unsigned long int numSamples() const { return numSamples_; }
+
58  inline float duration() const { return duration_; }
+
59 
+
61  inline unsigned long bufferSize() const { return numSamples_ * numChannels_ * bytesPerSample_; }
+
62 
+
63  inline static ObjectType sType() { return ObjectType::AUDIOBUFFER; }
+
64 
+
65  private:
+
67  unsigned int bufferId_;
+
68 
+
70  int bytesPerSample_;
+
72  int numChannels_;
+
74  int frequency_;
+
75 
+
77  unsigned long int numSamples_;
+
79  float duration_;
+
80 
+
82  bool load(IAudioLoader &audioLoader);
+
83 
+
85  AudioBuffer(const AudioBuffer &) = delete;
+
87  AudioBuffer &operator=(const AudioBuffer &) = delete;
+
88 };
+
89 
+
90 }
+
91 
+
92 #endif
+
A class representing an OpenAL buffer.
Definition: AudioBuffer.h:14
+
int numChannels() const
Returns the number of audio channels.
Definition: AudioBuffer.h:51
+
unsigned int bufferId() const
Returns the OpenAL buffer id.
Definition: AudioBuffer.h:46
+
unsigned long int numSamples() const
Returns number of samples.
Definition: AudioBuffer.h:56
+
float duration() const
Returns the duration in seconds.
Definition: AudioBuffer.h:58
+
int bytesPerSample() const
Returns the number of bytes per sample.
Definition: AudioBuffer.h:49
+
int frequency() const
Returns the samples frequency.
Definition: AudioBuffer.h:53
+
unsigned long bufferSize() const
Returns the size of the buffer in bytes.
Definition: AudioBuffer.h:61
+
Static RRTI and identification index.
Definition: Object.h:10
+
+ + + + diff --git a/master/_audio_buffer_player_8h_source.html b/master/_audio_buffer_player_8h_source.html new file mode 100644 index 0000000000..abb1149925 --- /dev/null +++ b/master/_audio_buffer_player_8h_source.html @@ -0,0 +1,140 @@ + + + + + + + +nCine: include/ncine/AudioBufferPlayer.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
AudioBufferPlayer.h
+
+
+
1 #ifndef CLASS_NCINE_AUDIOBUFFERPLAYER
+
2 #define CLASS_NCINE_AUDIOBUFFERPLAYER
+
3 
+
4 #include "common_defines.h"
+
5 #include "IAudioPlayer.h"
+
6 
+
7 namespace ncine {
+
8 
+
9 class AudioBuffer;
+
10 
+
12 class DLL_PUBLIC AudioBufferPlayer : public IAudioPlayer
+
13 {
+
14  public:
+ +
18  explicit AudioBufferPlayer(AudioBuffer *audioBuffer);
+
19  ~AudioBufferPlayer() override;
+
20 
+ + +
25 
+
26  unsigned int bufferId() const override;
+
27 
+
28  int bytesPerSample() const override;
+
29  int numChannels() const override;
+
30  int frequency() const override;
+
31 
+
32  unsigned long int numSamples() const override;
+
33  float duration() const override;
+
34 
+
35  unsigned long int bufferSize() const override;
+
36 
+
38  inline const AudioBuffer *audioBuffer() const { return audioBuffer_; }
+
40  void setAudioBuffer(AudioBuffer *audioBuffer);
+
41 
+
42  void play() override;
+
43  void pause() override;
+
44  void stop() override;
+
45 
+
46  inline static ObjectType sType() { return ObjectType::AUDIOBUFFER_PLAYER; }
+
47 
+
48  protected:
+
50  void updateState() override;
+
51 
+
52  private:
+
53  AudioBuffer *audioBuffer_;
+
54 
+
56  AudioBufferPlayer(const AudioBufferPlayer &) = delete;
+
58  AudioBufferPlayer &operator=(const AudioBufferPlayer &) = delete;
+
59 };
+
60 
+
61 }
+
62 
+
63 #endif
+
A class representing an OpenAL buffer.
Definition: AudioBuffer.h:14
+
Audio buffer player class.
Definition: AudioBufferPlayer.h:13
+
AudioBufferPlayer(AudioBufferPlayer &&)=default
Default move constructor.
+
const AudioBuffer * audioBuffer() const
Gets the audio buffer used for playing.
Definition: AudioBufferPlayer.h:38
+
AudioBufferPlayer & operator=(AudioBufferPlayer &&)=default
Default move assignment operator.
+
Audio player interface class.
Definition: IAudioPlayer.h:15
+
+ + + + diff --git a/master/_audio_effect_8h_source.html b/master/_audio_effect_8h_source.html new file mode 100644 index 0000000000..e95f831a5c --- /dev/null +++ b/master/_audio_effect_8h_source.html @@ -0,0 +1,142 @@ + + + + + + + +nCine: include/ncine/AudioEffect.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
AudioEffect.h
+
+
+
1 #ifndef CLASS_NCINE_AUDIOEFFECT
+
2 #define CLASS_NCINE_AUDIOEFFECT
+
3 
+
4 #include "common_defines.h"
+
5 
+
6 namespace ncine {
+
7 
+
8 class AudioEffectProperties;
+
9 
+
11 class DLL_PUBLIC AudioEffect
+
12 {
+
13  public:
+
14  enum class Type
+
15  {
+
16  NULL_EFFECT,
+
17  REVERB,
+
18  EAXREVERB,
+
19  CHORUS,
+
20  DISTORTION,
+
21  ECHO,
+
22  FLANGER,
+
23  FREQUENCY_SHIFTER,
+
24  VOCAL_MORPHER,
+
25  PITCH_SHIFTER,
+
26  RING_MODULATOR,
+
27  AUTOWAH,
+
28  COMPRESSOR,
+
29  EQUALIZER
+
30  };
+
31 
+
33  AudioEffect();
+
35  explicit AudioEffect(Type type);
+
36  ~AudioEffect();
+
37 
+
39  AudioEffect(AudioEffect &&other);
+
41  AudioEffect &operator=(AudioEffect &&other);
+
42 
+
44  inline Type type() const { return type_; }
+
45 
+
47  inline unsigned int effectId() const { return effectId_; }
+
48 
+
50  void applyProperties(const AudioEffectProperties &properties);
+
51 
+
52  private:
+
54  Type type_;
+
55 
+
57  unsigned int effectId_;
+
58 
+
60  AudioEffect(const AudioEffect &) = delete;
+
62  AudioEffect &operator=(const AudioEffect &) = delete;
+
63 
+
65  void setType(Type type);
+
66 };
+
67 
+
68 }
+
69 
+
70 #endif
+
A class representing an OpenAL effect.
Definition: AudioEffect.h:12
+
Type type() const
Returns the effect type.
Definition: AudioEffect.h:44
+
unsigned int effectId() const
Returns the OpenAL effect id.
Definition: AudioEffect.h:47
+
A class representing a set of OpenAL effect properties.
Definition: AudioEffectProperties.h:10
+
+ + + + diff --git a/master/_audio_effect_properties_8h_source.html b/master/_audio_effect_properties_8h_source.html new file mode 100644 index 0000000000..9186e07e4f --- /dev/null +++ b/master/_audio_effect_properties_8h_source.html @@ -0,0 +1,539 @@ + + + + + + + +nCine: include/ncine/AudioEffectProperties.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
AudioEffectProperties.h
+
+
+
1 #ifndef CLASS_NCINE_AUDIOEFFECTPROPERTIES
+
2 #define CLASS_NCINE_AUDIOEFFECTPROPERTIES
+
3 
+
4 #include "AudioEffect.h"
+
5 
+
6 namespace ncine {
+
7 
+
9 class DLL_PUBLIC AudioEffectProperties
+
10 {
+
11  public:
+ +
13  {
+
14  float density;
+
15  float diffusion;
+
16  float gain;
+
17  float gainHF;
+
18  float decayTime;
+
19  float decayHFRatio;
+
20  float reflectionsGain;
+
21  float reflectionsDelay;
+
22  float lateReverbGain;
+
23  float lateReverbDelay;
+
24  float airAbsorptionGainHF;
+
25  float roomRolloffFactor;
+
26  int decayHFLimit;
+
27 
+
28  DLL_PUBLIC ReverbProperties();
+
29  };
+
30 
+
31  enum EfxReverbPresets
+
32  {
+
33  // Default Presets
+
34  GENERIC,
+
35  PADDED_CELL,
+
36  ROOM,
+
37  BATHROOM,
+
38  LIVING_ROOM,
+
39  STONE_ROOM,
+
40  AUDITORIUM,
+
41  CONCERT_HALL,
+
42  CAVE,
+
43  ARENA,
+
44  HANGAR,
+
45  CARPETED_HALLWAY,
+
46  HALLWAY,
+
47  STONE_CORRIDOR,
+
48  ALLEY,
+
49  FOREST,
+
50  CITY,
+
51  MOUNTAINS,
+
52  QUARRY,
+
53  PLAIN,
+
54  PARKING_LOT,
+
55  SEWER_PIPE,
+
56  UNDERWATER,
+
57  DRUGGED,
+
58  DIZZY,
+
59  PSYCHOTIC,
+
60  // Castle Presets
+
61  CASTLE_SMALL_ROOM,
+
62  CASTLE_SHORT_PASSAGE,
+
63  CASTLE_MEDIUM_ROOM,
+
64  CASTLE_LARGE_ROOM,
+
65  CASTLE_LONG_PASSAGE,
+
66  CASTLE_HALL,
+
67  CASTLE_CUPBOARD,
+
68  CASTLE_COURTYARD,
+
69  CASTLE_ALCOVE,
+
70  // Factory Presets
+
71  FACTORY_SMALL_ROOM,
+
72  FACTORY_SHORT_PASSAGE,
+
73  FACTORY_MEDIUM_ROOM,
+
74  FACTORY_LARGE_ROOM,
+
75  FACTORY_LONG_PASSAGE,
+
76  FACTORY_HALL,
+
77  FACTORY_CUPBOARD,
+
78  FACTORY_COURTYARD,
+
79  FACTORY_ALCOVE,
+
80  // Ice Palace Presets
+
81  ICEPALACE_SMALL_ROOM,
+
82  ICEPALACE_SHORT_PASSAGE,
+
83  ICEPALACE_MEDIUM_ROOM,
+
84  ICEPALACE_LARGE_ROOM,
+
85  ICEPALACE_LONG_PASSAGE,
+
86  ICEPALACE_HALL,
+
87  ICEPALACE_CUPBOARD,
+
88  ICEPALACE_COURTYARD,
+
89  ICEPALACE_ALCOVE,
+
90  // Space Station Presets
+
91  SPACE_STATION_SMALL_ROOM,
+
92  SPACE_STATION_SHORT_PASSAGE,
+
93  SPACE_STATION_MEDIUM_ROOM,
+
94  SPACE_STATION_LARGE_ROOM,
+
95  SPACE_STATION_LONG_PASSAGE,
+
96  SPACE_STATION_HALL,
+
97  SPACE_STATION_CUPBOARD,
+
98  SPACE_STATION_ALCOVE,
+
99  // Wooden Galleon Presets
+
100  WOODEN_GALLEON_SMALL_ROOM,
+
101  WOODEN_GALLEON_SHORT_PASSAGE,
+
102  WOODEN_GALLEON_MEDIUM_ROOM,
+
103  WOODEN_GALLEON_LARGE_ROOM,
+
104  WOODEN_GALLEON_LONG_PASSAGE,
+
105  WOODEN_GALLEON_HALL,
+
106  WOODEN_GALLEON_CUPBOARD,
+
107  WOODEN_GALLEON_COURTYARD,
+
108  WOODEN_GALLEON_ALCOVE,
+
109  // Sports Presets
+
110  SPORT_EMPTY_STADIUM,
+
111  SPORT_SQUASH_COURT,
+
112  SPORT_SMALL_SWIMMING_POOL,
+
113  SPORT_LARGE_SWIMMING_POOL,
+
114  SPORT_GYMNASIUM,
+
115  SPORT_FULL_STADIUM,
+
116  SPORT_STADIUM_TANNOY,
+
117  // Prefab Presets
+
118  PREFAB_WORKSHOP,
+
119  PREFAB_SCHOOL_ROOM,
+
120  PREFAB_PRACTISE_ROOM,
+
121  PREFAB_OUTHOUSE,
+
122  PREFAB_CARAVAN,
+
123  // Dome and Pipe Presets
+
124  DOME_TOMB,
+
125  PIPE_SMALL,
+
126  DOME_SAINT_PAULS,
+
127  PIPE_LONGTHIN,
+
128  PIPE_LARGE,
+
129  PIPE_RESONANT,
+
130  // Outdoors Presets
+
131  OUTDOORS_BACKYARD,
+
132  OUTDOORS_ROLLING_PLAINS,
+
133  OUTDOORS_DEEP_CANYON,
+
134  OUTDOORS_CREEK,
+
135  OUTDOORS_VALLEY,
+
136  // Mood Presets
+
137  MOOD_HEAVEN,
+
138  MOOD_HELL,
+
139  MOOD_MEMORY,
+
140  // Driving Presets
+
141  DRIVING_COMMENTATOR,
+
142  DRIVING_PIT_GARAGE,
+
143  DRIVING_INCAR_RACER,
+
144  DRIVING_INCAR_SPORTS,
+
145  DRIVING_INCAR_LUXURY,
+
146  DRIVING_FULL_GRANDSTAND,
+
147  DRIVING_EMPTY_GRANDSTAND,
+
148  DRIVING_TUNNEL,
+
149  // City Presets
+
150  CITY_STREETS,
+
151  CITY_SUBWAY,
+
152  CITY_MUSEUM,
+
153  CITY_LIBRARY,
+
154  CITY_UNDERPASS,
+
155  CITY_ABANDONED,
+
156  // Misc. Presets
+
157  DUSTY_ROOM,
+
158  CHAPEL,
+
159  SMALL_WATER_ROOM,
+
160 
+
161  COUNT
+
162  };
+
163 
+ +
165  {
+
166  static const float MinPan;
+
167  static const float MaxPan;
+
168 
+
169  float density;
+
170  float diffusion;
+
171  float gain;
+
172  float gainHF;
+
173  float gainLF;
+
174  float decayTime;
+
175  float decayHFRatio;
+
176  float decayLFRatio;
+
177  float reflectionsGain;
+
178  float reflectionsDelay;
+
179  float reflectionsPan[3];
+
180  float lateReverbGain;
+
181  float lateReverbDelay;
+
182  float lateReverbPan[3];
+
183  float echoTime;
+
184  float echoDepth;
+
185  float modulationTime;
+
186  float modulationDepth;
+
187  float airAbsorptionGainHF;
+
188  float hfReference;
+
189  float lfReference;
+
190  float roomRolloffFactor;
+
191  int decayHFLimit;
+
192 
+
193  DLL_PUBLIC EaxReverbProperties();
+
195  DLL_PUBLIC void loadPreset(const EfxReverbPresets preset);
+
196  };
+
197 
+ +
199  {
+
200  int waveform;
+
201  int phase;
+
202  float rate;
+
203  float depth;
+
204  float feedback;
+
205  float delay;
+
206 
+
207  DLL_PUBLIC ChorusProperties();
+
208  };
+
209 
+ +
211  {
+
212  float edge;
+
213  float gain;
+
214  float lowpassCutoff;
+
215  float eqCenter;
+
216  float eqBandwidth;
+
217 
+
218  DLL_PUBLIC DistortionProperties();
+
219  };
+
220 
+ +
222  {
+
223  float delay;
+
224  float lrDelay;
+
225  float damping;
+
226  float feedback;
+
227  float spread;
+
228 
+
229  DLL_PUBLIC EchoProperties();
+
230  };
+
231 
+ +
233  {
+
234  int waveform;
+
235  int phase;
+
236  float rate;
+
237  float depth;
+
238  float feedback;
+
239  float delay;
+
240 
+
241  DLL_PUBLIC FlangerProperties();
+
242  };
+
243 
+ +
245  {
+
246  float frequency;
+
247  int leftDirection;
+
248  int rightDirection;
+
249 
+
250  DLL_PUBLIC FrequencyShifterProperties();
+
251  };
+
252 
+ +
254  {
+
255  int phonemeA;
+
256  int phonemeACoarseTuning;
+
257  int phonemeB;
+
258  int phonemeBCoarseTuning;
+
259  int waveform;
+
260  float rate;
+
261 
+
262  DLL_PUBLIC VocalMorpherProperties();
+
263  };
+
264 
+ +
266  {
+
267  int coarseTune;
+
268  int fineTune;
+
269 
+
270  DLL_PUBLIC PitchShifterProperties();
+
271  };
+
272 
+ +
274  {
+
275  float frequency;
+
276  float highpassCutoff;
+
277  int waveform;
+
278 
+
279  DLL_PUBLIC RingModulatorProperties();
+
280  };
+
281 
+ +
283  {
+
284  float attackTime;
+
285  float releaseTime;
+
286  float resonance;
+
287  float peakGain;
+
288 
+
289  DLL_PUBLIC AutoWahProperties();
+
290  };
+
291 
+ +
293  {
+
294  int onOff;
+
295 
+
296  DLL_PUBLIC CompressorProperties();
+
297  };
+
298 
+ +
300  {
+
301  float lowGain;
+
302  float lowCutoff;
+
303  float mid1Gain;
+
304  float mid1Center;
+
305  float mid1Width;
+
306  float mid2Gain;
+
307  float mid2Center;
+
308  float mid2Width;
+
309  float highGain;
+
310  float highCutoff;
+
311 
+
312  DLL_PUBLIC EqualizerProperties();
+
313  };
+
314 
+ +
318  explicit AudioEffectProperties(AudioEffect::Type type);
+
319 
+ + +
324 
+ + +
329 
+
331  inline AudioEffect::Type type() const { return type_; }
+
333  void setType(AudioEffect::Type type);
+
334 
+
336  static ReverbProperties minReverbProperties();
+
338  static ReverbProperties maxReverbProperties();
+
339 
+
341  const ReverbProperties &reverbProperties() const;
+
343  ReverbProperties &reverbProperties();
+
345  void setReverbProperties(const ReverbProperties &newReverbProperties);
+
347  void resetReverbProperties();
+
348 
+
350  static EaxReverbProperties minEaxReverbProperties();
+
352  static EaxReverbProperties maxEaxReverbProperties();
+
353 
+
355  const EaxReverbProperties &eaxReverbProperties() const;
+
357  EaxReverbProperties &eaxReverbProperties();
+
359  void setEaxReverbProperties(const EaxReverbProperties &newEaxReverbProperties);
+
361  void resetEaxReverbProperties();
+
362 
+
364  static ChorusProperties minChorusProperties();
+
366  static ChorusProperties maxChorusProperties();
+
367 
+
369  const ChorusProperties &chorusProperties() const;
+
371  ChorusProperties &chorusProperties();
+
373  void setChorusProperties(const ChorusProperties &newChorusProperties);
+
375  void resetChorusProperties();
+
376 
+
378  static DistortionProperties minDistortionProperties();
+
380  static DistortionProperties maxDistortionProperties();
+
381 
+
383  const DistortionProperties &distortionProperties() const;
+
385  DistortionProperties &distortionProperties();
+
387  void setDistortionProperties(const DistortionProperties &newDistortionProperties);
+
389  void resetDistortionProperties();
+
390 
+
392  static EchoProperties minEchoProperties();
+
394  static EchoProperties maxEchoProperties();
+
395 
+
397  const EchoProperties &echoProperties() const;
+
399  EchoProperties &echoProperties();
+
401  void setEchoProperties(const EchoProperties &newEchoProperties);
+
403  void resetEchoProperties();
+
404 
+
406  static FlangerProperties minFlangerProperties();
+
408  static FlangerProperties maxFlangerProperties();
+
409 
+
411  const FlangerProperties &flangerProperties() const;
+
413  FlangerProperties &flangerProperties();
+
415  void setFlangerProperties(const FlangerProperties &newFlangerProperties);
+
417  void resetFlangerProperties();
+
418 
+
420  static FrequencyShifterProperties minFrequencyShifterProperties();
+
422  static FrequencyShifterProperties maxFrequencyShifterProperties();
+
423 
+
425  const FrequencyShifterProperties &frequencyShifterProperties() const;
+
427  FrequencyShifterProperties &frequencyShifterProperties();
+
429  void setFrequencyShifterProperties(const FrequencyShifterProperties &newFrequencyShifterProperties);
+
431  void resetFrequencyShifterProperties();
+
432 
+
434  static VocalMorpherProperties minVocalMorpherProperties();
+
436  static VocalMorpherProperties maxVocalMorpherProperties();
+
437 
+
439  const VocalMorpherProperties &vocalMorpherProperties() const;
+
441  VocalMorpherProperties &vocalMorpherProperties();
+
443  void setVocalMorpherProperties(const VocalMorpherProperties &newVocalMorpherProperties);
+
445  void resetVocalMorpherProperties();
+
446 
+
448  static PitchShifterProperties minPitchShifterProperties();
+
450  static PitchShifterProperties maxPitchShifterProperties();
+
451 
+
453  const PitchShifterProperties &pitchShifterProperties() const;
+
455  PitchShifterProperties &pitchShifterProperties();
+
457  void setPitchShifterProperties(const PitchShifterProperties &newPitchShifterProperties);
+
459  void resetPitchShifterProperties();
+
460 
+
462  static RingModulatorProperties minRingModulatorProperties();
+
464  static RingModulatorProperties maxRingModulatorProperties();
+
465 
+
467  const RingModulatorProperties &ringModulatorProperties() const;
+
469  RingModulatorProperties &ringModulatorProperties();
+
471  void setRingModulatorProperties(const RingModulatorProperties &newRingModulatorProperties);
+
473  void resetRingModulatorProperties();
+
474 
+
476  static AutoWahProperties minAutoWahProperties();
+
478  static AutoWahProperties maxAutoWahProperties();
+
479 
+
481  const AutoWahProperties &autoWahProperties() const;
+
483  AutoWahProperties &autoWahProperties();
+
485  void setAutoWahProperties(const AutoWahProperties &newAutoWahProperties);
+
487  void resetAutoWahProperties();
+
488 
+
490  static CompressorProperties minCompressorProperties();
+
492  static CompressorProperties maxCompressorProperties();
+
493 
+
495  const CompressorProperties &compressorProperties() const;
+
497  CompressorProperties &compressorProperties();
+
499  void setCompressorProperties(const CompressorProperties &newCompressorProperties);
+
501  void resetCompressorProperties();
+
502 
+
504  static EqualizerProperties minEqualizerProperties();
+
506  static EqualizerProperties maxEqualizerProperties();
+
507 
+
509  const EqualizerProperties &equalizerProperties() const;
+
511  EqualizerProperties &equalizerProperties();
+
513  void setEqualizerProperties(const EqualizerProperties &newEqualizerProperties);
+
515  void resetEqualizerProperties();
+
516 
+
517  private:
+
518  AudioEffect::Type type_;
+
520  static const unsigned int PropertiesDataSize = 26 * sizeof(float) + sizeof(int);
+
522  char propertiesData_[PropertiesDataSize];
+
523 
+
524  bool checkType(AudioEffect::Type type) const;
+
525 };
+
526 
+
527 }
+
528 
+
529 #endif
+
A class representing a set of OpenAL effect properties.
Definition: AudioEffectProperties.h:10
+
AudioEffectProperties(AudioEffectProperties &&other)=default
Default move constructor.
+
AudioEffectProperties & operator=(AudioEffectProperties &&other)=default
Default move assignment operator.
+
AudioEffectProperties & operator=(const AudioEffectProperties &)=default
DEfault assignment operator.
+
AudioEffect::Type type() const
Returns the effect properties type.
Definition: AudioEffectProperties.h:331
+
AudioEffectProperties(const AudioEffectProperties &)=default
Default copy constructor.
+
Definition: AudioEffectProperties.h:283
+
Definition: AudioEffectProperties.h:199
+
Definition: AudioEffectProperties.h:293
+
Definition: AudioEffectProperties.h:211
+
Definition: AudioEffectProperties.h:165
+
Definition: AudioEffectProperties.h:222
+
Definition: AudioEffectProperties.h:300
+
Definition: AudioEffectProperties.h:233
+
Definition: AudioEffectProperties.h:245
+
Definition: AudioEffectProperties.h:266
+
Definition: AudioEffectProperties.h:13
+
Definition: AudioEffectProperties.h:274
+
Definition: AudioEffectProperties.h:254
+
+ + + + diff --git a/master/_audio_effect_slot_8h_source.html b/master/_audio_effect_slot_8h_source.html new file mode 100644 index 0000000000..1564f5612a --- /dev/null +++ b/master/_audio_effect_slot_8h_source.html @@ -0,0 +1,129 @@ + + + + + + + +nCine: include/ncine/AudioEffectSlot.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
AudioEffectSlot.h
+
+
+
1 #ifndef CLASS_NCINE_AUDIOEFFECTSLOT
+
2 #define CLASS_NCINE_AUDIOEFFECTSLOT
+
3 
+
4 #include "common_macros.h"
+
5 
+
6 namespace ncine {
+
7 
+
8 class AudioEffect;
+
9 
+
11 class DLL_PUBLIC AudioEffectSlot
+
12 {
+
13  public:
+ +
16  explicit AudioEffectSlot(const AudioEffect &effect);
+
17  ~AudioEffectSlot();
+
18 
+ +
22  AudioEffectSlot &operator=(AudioEffectSlot &&other);
+
23 
+
25  inline unsigned int effectSlotId() const { return effectSlotId_; }
+
26 
+
28  inline float gain() const { return gain_; }
+
30  void setGain(float gain);
+
31 
+
33 
+
35  inline bool auxSendAuto() const { return auxSendAuto_; }
+
37 
+
39  void setAuxSendAuto(bool auxSendAuto);
+
40 
+
42  void applyEffect(const AudioEffect &effect);
+
43 
+
44  private:
+
46  unsigned int effectSlotId_;
+
48  float gain_;
+
50  bool auxSendAuto_;
+
51 
+
53  AudioEffectSlot(const AudioEffectSlot &) = delete;
+
55  AudioEffectSlot &operator=(const AudioEffectSlot &) = delete;
+
56 };
+
57 
+
58 }
+
59 
+
60 #endif
+
A class representing an OpenAL effect.
Definition: AudioEffect.h:12
+
A class representing an OpenAL auxilary effect slot.
Definition: AudioEffectSlot.h:12
+
float gain() const
Returns the gain output level of the auxilary effect slot.
Definition: AudioEffectSlot.h:28
+
unsigned int effectSlotId() const
Returns the OpenAL auxilary effect slot id.
Definition: AudioEffectSlot.h:25
+
bool auxSendAuto() const
Returns the state of the auxilary slot send auto flag.
Definition: AudioEffectSlot.h:35
+
+ + + + diff --git a/master/_audio_filter_8h_source.html b/master/_audio_filter_8h_source.html new file mode 100644 index 0000000000..ea318cbfa0 --- /dev/null +++ b/master/_audio_filter_8h_source.html @@ -0,0 +1,138 @@ + + + + + + + +nCine: include/ncine/AudioFilter.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
AudioFilter.h
+
+
+
1 #ifndef CLASS_NCINE_AUDIOFILTER
+
2 #define CLASS_NCINE_AUDIOFILTER
+
3 
+
4 #include "common_defines.h"
+
5 
+
6 namespace ncine {
+
7 
+
9 class DLL_PUBLIC AudioFilter
+
10 {
+
11  public:
+
12  enum class Type
+
13  {
+
14  NULL_FILTER,
+
15  LOWPASS,
+
16  HIGHPASS,
+
17  BANDPASS
+
18  };
+
19 
+
20  struct Properties
+
21  {
+
22  Type type = Type::NULL_FILTER;
+
23  float gain = 1.0f;
+
24  float gainLF = 1.0f;
+
25  float gainHF = 1.0f;
+
26  };
+
27 
+
29  AudioFilter();
+
31  explicit AudioFilter(Type type);
+
32  ~AudioFilter();
+
33 
+
35  AudioFilter(AudioFilter &&other);
+
37  AudioFilter &operator=(AudioFilter &&other);
+
38 
+
40  inline Type type() const { return type_; }
+
41 
+
43  inline unsigned int filterId() const { return filterId_; }
+
44 
+
46  void applyProperties(const Properties &properties);
+
47 
+
48  private:
+
50  Type type_;
+
51 
+
53  unsigned int filterId_;
+
54 
+
56  AudioFilter(const AudioFilter &) = delete;
+
58  AudioFilter &operator=(const AudioFilter &) = delete;
+
59 
+
61  void setType(Type type);
+
62 };
+
63 
+
64 }
+
65 
+
66 #endif
+
A class representing an OpenAL filter.
Definition: AudioFilter.h:10
+
unsigned int filterId() const
Returns the OpenAL filter id.
Definition: AudioFilter.h:43
+
Type type() const
Returns the filter type.
Definition: AudioFilter.h:40
+
Definition: AudioFilter.h:21
+
+ + + + diff --git a/master/_audio_stream_8h_source.html b/master/_audio_stream_8h_source.html new file mode 100644 index 0000000000..73d5d5bca7 --- /dev/null +++ b/master/_audio_stream_8h_source.html @@ -0,0 +1,171 @@ + + + + + + + +nCine: include/ncine/AudioStream.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
AudioStream.h
+
+
+
1 #ifndef CLASS_NCINE_AUDIOSTREAM
+
2 #define CLASS_NCINE_AUDIOSTREAM
+
3 
+
4 #include <nctl/StaticArray.h>
+
5 
+
6 namespace ncine {
+
7 
+
8 class IAudioReader;
+
9 class IAudioLoader;
+
10 
+
12 class DLL_PUBLIC AudioStream
+
13 {
+
14  public:
+
15  ~AudioStream();
+
16 
+
18  inline unsigned int bufferId() const { return currentBufferId_; }
+
19 
+
21  inline int bytesPerSample() const { return bytesPerSample_; }
+
23  inline int numChannels() const { return numChannels_; }
+
25  inline int frequency() const { return frequency_; }
+
26 
+
28  inline unsigned long int numSamples() const { return numSamples_; }
+
30  inline float duration() const { return duration_; }
+
31 
+
33  inline unsigned long bufferSize() const { return numSamples_ * numChannels_ * bytesPerSample_; }
+
34 
+
36  unsigned long int numSamplesInStreamBuffer() const;
+
38  inline int streamBufferSize() const { return BufferSize; }
+
40  inline unsigned int totalProcessedBuffers() const { return totalProcessedBuffers_; }
+
41 
+
43  bool enqueue(unsigned int source, bool looping);
+
45  void stop(unsigned int source);
+
46 
+
47  private:
+
49  static const int NumBuffers = 3;
+ +
53  int nextAvailableBufferIndex_;
+
54 
+
56  static const int BufferSize = 16 * 1024;
+
58  nctl::UniquePtr<char[]> memBuffer_;
+
59 
+
61  unsigned int currentBufferId_;
+
62 
+
64 
+
65  unsigned int totalProcessedBuffers_;
+
66 
+
68  int bytesPerSample_;
+
70  int numChannels_;
+
72  int frequency_;
+
73 
+
75  unsigned long int numSamples_;
+
77  float duration_;
+
78 
+
80  int format_;
+
82  nctl::UniquePtr<IAudioReader> audioReader_;
+
83 
+
85  AudioStream();
+
87  AudioStream(const char *bufferName, const unsigned char *bufferPtr, unsigned long int bufferSize);
+
89  explicit AudioStream(const char *filename);
+
90 
+ +
94  AudioStream &operator=(AudioStream &&);
+
95 
+
96  bool loadFromMemory(const char *bufferName, const unsigned char *bufferPtr, unsigned long int bufferSize);
+
97  bool loadFromFile(const char *filename);
+
98 
+
99  void createReader(IAudioLoader &audioLoader);
+
100 
+
102  AudioStream(const AudioStream &) = delete;
+
104  AudioStream &operator=(const AudioStream &) = delete;
+
105 
+
106  friend class AudioStreamPlayer;
+
107 };
+
108 
+
109 }
+
110 
+
111 #endif
+
Audio stream class.
Definition: AudioStream.h:13
+
int bytesPerSample() const
Returns the number of bytes per sample.
Definition: AudioStream.h:21
+
int streamBufferSize() const
Returns the size of the streaming buffer in bytes.
Definition: AudioStream.h:38
+
unsigned int totalProcessedBuffers() const
Returns the number of processed buffers since first enqueue.
Definition: AudioStream.h:40
+
unsigned int bufferId() const
Returns the OpenAL id of the currently playing buffer, or 0 if not.
Definition: AudioStream.h:18
+
unsigned long int numSamples() const
Returns number of samples.
Definition: AudioStream.h:28
+
float duration() const
Returns the duration in seconds.
Definition: AudioStream.h:30
+
unsigned long bufferSize() const
Returns the size of the loaded buffer in bytes.
Definition: AudioStream.h:33
+
int frequency() const
Returns the samples frequency.
Definition: AudioStream.h:25
+
int numChannels() const
Returns the number of audio channels.
Definition: AudioStream.h:23
+
Audio stream player class.
Definition: AudioStreamPlayer.h:12
+ + +
+ + + + diff --git a/master/_audio_stream_player_8h_source.html b/master/_audio_stream_player_8h_source.html new file mode 100644 index 0000000000..da481ccc0c --- /dev/null +++ b/master/_audio_stream_player_8h_source.html @@ -0,0 +1,150 @@ + + + + + + + +nCine: include/ncine/AudioStreamPlayer.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
AudioStreamPlayer.h
+
+
+
1 #ifndef CLASS_NCINE_AUDIOSTREAMPLAYER
+
2 #define CLASS_NCINE_AUDIOSTREAMPLAYER
+
3 
+
4 #include "common_defines.h"
+
5 #include "IAudioPlayer.h"
+
6 #include "AudioStream.h"
+
7 
+
8 namespace ncine {
+
9 
+
11 class DLL_PUBLIC AudioStreamPlayer : public IAudioPlayer
+
12 {
+
13  public:
+ +
17  AudioStreamPlayer(const char *bufferName, const unsigned char *bufferPtr, unsigned long int bufferSize);
+
19  explicit AudioStreamPlayer(const char *filename);
+
20  ~AudioStreamPlayer() override;
+
21 
+ + +
26 
+
27  bool loadFromMemory(const char *bufferName, const unsigned char *bufferPtr, unsigned long int bufferSize);
+
28  bool loadFromFile(const char *filename);
+
29 
+
30  inline unsigned int bufferId() const override { return audioStream_.bufferId(); }
+
31 
+
32  inline int bytesPerSample() const override { return audioStream_.bytesPerSample(); }
+
33  inline int numChannels() const override { return audioStream_.numChannels(); }
+
34  inline int frequency() const override { return audioStream_.frequency(); }
+
35 
+
36  inline unsigned long int numSamples() const override { return audioStream_.numSamples(); }
+
37  inline float duration() const override { return audioStream_.duration(); }
+
38 
+
39  inline unsigned long bufferSize() const override { return audioStream_.bufferSize(); }
+
40 
+
42  inline unsigned long int numSamplesInStreamBuffer() const { return audioStream_.numSamplesInStreamBuffer(); }
+
44  inline int streamBufferSize() const { return audioStream_.streamBufferSize(); }
+
46  unsigned long int sampleOffsetInStream() const;
+
47 
+
48  void play() override;
+
49  void pause() override;
+
50  void stop() override;
+
51 
+
53  void updateState() override;
+
54 
+
55  inline static ObjectType sType() { return ObjectType::AUDIOSTREAM_PLAYER; }
+
56 
+
57  private:
+
58  AudioStream audioStream_;
+
59 
+
61  AudioStreamPlayer(const AudioStreamPlayer &) = delete;
+
63  AudioStreamPlayer &operator=(const AudioStreamPlayer &) = delete;
+
64 };
+
65 
+
66 }
+
67 
+
68 #endif
+
Audio stream player class.
Definition: AudioStreamPlayer.h:12
+
unsigned long int numSamplesInStreamBuffer() const
Returns the number of samples in the streaming buffer.
Definition: AudioStreamPlayer.h:42
+
unsigned long bufferSize() const override
Returns the size of the currently playing buffer in bytes.
Definition: AudioStreamPlayer.h:39
+
unsigned long int numSamples() const override
Returns the number of samples.
Definition: AudioStreamPlayer.h:36
+
int frequency() const override
Returns the samples frequency of the currently playing buffer.
Definition: AudioStreamPlayer.h:34
+
AudioStreamPlayer(AudioStreamPlayer &&)=default
Default move constructor.
+
float duration() const override
Returns the duration in seconds.
Definition: AudioStreamPlayer.h:37
+
int bytesPerSample() const override
Returns the number of bytes per sample.
Definition: AudioStreamPlayer.h:32
+
int numChannels() const override
Returns the number of audio channels of the currently playing buffer.
Definition: AudioStreamPlayer.h:33
+
int streamBufferSize() const
Returns the size of the streaming buffer in bytes.
Definition: AudioStreamPlayer.h:44
+
unsigned int bufferId() const override
Returns the OpenAL id of the currently playing buffer.
Definition: AudioStreamPlayer.h:30
+
AudioStreamPlayer & operator=(AudioStreamPlayer &&)=default
Default move assignment operator.
+
Audio player interface class.
Definition: IAudioPlayer.h:15
+
+ + + + diff --git a/master/_base_sprite_8h_source.html b/master/_base_sprite_8h_source.html new file mode 100644 index 0000000000..e93b8ac4c8 --- /dev/null +++ b/master/_base_sprite_8h_source.html @@ -0,0 +1,159 @@ + + + + + + + +nCine: include/ncine/BaseSprite.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
BaseSprite.h
+
+
+
1 #ifndef CLASS_NCINE_BASESPRITE
+
2 #define CLASS_NCINE_BASESPRITE
+
3 
+
4 #include "DrawableNode.h"
+
5 #include "Rect.h"
+
6 
+
7 namespace ncine {
+
8 
+
9 class Texture;
+
10 class GLUniformBlockCache;
+
11 
+
13 
+
14 class DLL_PUBLIC BaseSprite : public DrawableNode
+
15 {
+
16  public:
+
18  BaseSprite(BaseSprite &&) = default;
+ +
21 
+
23  void setSize(float width, float height);
+
25  inline void setSize(const Vector2f &size) { setSize(size.x, size.y); }
+
26 
+
28  inline const Texture *texture() const { return texture_; }
+
30  void setTexture(Texture *texture);
+
32  void resetTexture();
+
33 
+
35  inline Recti texRect() const { return texRect_; }
+
37  void setTexRect(const Recti &rect);
+
38 
+
40  inline bool isFlippedX() const { return flippedX_; }
+
42  void setFlippedX(bool flippedX);
+
44  inline bool isFlippedY() const { return flippedY_; }
+
46  void setFlippedY(bool flippedY);
+
47 
+
48  protected:
+ + +
53 
+
55  bool flippedX_;
+
57  bool flippedY_;
+
58 
+
59  GLUniformBlockCache *instanceBlock_;
+
60 
+
62  BaseSprite(SceneNode *parent, Texture *texture, float xx, float yy);
+
64  BaseSprite(SceneNode *parent, Texture *texture, const Vector2f &position);
+
65 
+
67  BaseSprite(const BaseSprite &other);
+
68 
+
70  void shaderHasChanged() override;
+
71 
+
73  virtual void textureHasChanged(Texture *newTexture) = 0;
+
74 
+
75  void updateRenderCommand() override;
+
76 
+
77  private:
+
79  BaseSprite &operator=(const BaseSprite &) = delete;
+
80 };
+
81 
+
82 }
+
83 
+
84 #endif
+
The base class for sprites.
Definition: BaseSprite.h:15
+
Texture * texture_
The sprite texture.
Definition: BaseSprite.h:50
+
bool flippedX_
A flag indicating if the sprite texture is horizontally flipped.
Definition: BaseSprite.h:55
+
virtual void textureHasChanged(Texture *newTexture)=0
Performs the required tasks upon a change to the texture.
+
Recti texRect() const
Gets the texture source rectangle for blitting.
Definition: BaseSprite.h:35
+
BaseSprite(BaseSprite &&)=default
Default move constructor.
+
bool isFlippedY() const
Returns true if the sprite texture is vertically flipped.
Definition: BaseSprite.h:44
+
Recti texRect_
The texture source rectangle.
Definition: BaseSprite.h:52
+
bool flippedY_
A flag indicating if the sprite texture is vertically flipped.
Definition: BaseSprite.h:57
+
BaseSprite & operator=(BaseSprite &&)=default
Default move assignment operator.
+
const Texture * texture() const
Gets the texture object.
Definition: BaseSprite.h:28
+
bool isFlippedX() const
Returns true if the sprite texture is horizontally flipped.
Definition: BaseSprite.h:40
+
void setSize(const Vector2f &size)
Sets the sprite size with a Vector2f
Definition: BaseSprite.h:25
+
A class for objects that can be drawn through the render queue.
Definition: DrawableNode.h:14
+ +
The base class for the transformation nodes hierarchy.
Definition: SceneNode.h:19
+
Texture class.
Definition: Texture.h:16
+ +
+ + + + diff --git a/master/_bit_set_8h_source.html b/master/_bit_set_8h_source.html new file mode 100644 index 0000000000..09ef7e8826 --- /dev/null +++ b/master/_bit_set_8h_source.html @@ -0,0 +1,333 @@ + + + + + + + +nCine: include/nctl/BitSet.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
BitSet.h
+
+
+
1 #ifndef CLASS_NCTL_BITSET
+
2 #define CLASS_NCTL_BITSET
+
3 
+
4 #include <cstdint>
+
5 #include "type_traits.h"
+
6 
+
7 namespace nctl {
+
8 
+
10 template <class T>
+
11 class BitSet
+
12 {
+
13  public:
+
14  BitSet();
+
15  explicit BitSet(T value);
+
16 
+
17  bool operator==(const BitSet &other) const;
+
18  bool operator!=(const BitSet &other) const;
+
19 
+
21  bool test(unsigned int pos) const;
+
22 
+
24  bool all() const;
+
26  bool any() const;
+
28  bool none() const;
+
29 
+
31  unsigned int count() const;
+
32 
+
34  unsigned int size() const;
+
35 
+
36  BitSet &operator&=(const BitSet &other);
+
37  BitSet &operator|=(const BitSet &other);
+
38  BitSet &operator^=(const BitSet &other);
+
39 
+
40  BitSet operator~() const;
+
41 
+
42  BitSet &operator<<=(unsigned int pos);
+
43  BitSet &operator>>=(unsigned int pos);
+
44 
+
45  BitSet operator<<(unsigned int pos) const;
+
46  BitSet operator>>(unsigned int pos) const;
+
47 
+
49  void set();
+
51  void set(unsigned int pos);
+
53  void set(unsigned int pos, bool value);
+
54 
+
56  void reset();
+
58  void reset(unsigned int pos);
+
59 
+
61  void flip(unsigned int pos);
+
62 
+
63  friend BitSet operator&(const BitSet &lhs, const BitSet &rhs) { return BitSet(lhs.bits_ & rhs.bits_); }
+
64  friend BitSet operator|(const BitSet &lhs, const BitSet &rhs) { return BitSet(lhs.bits_ | rhs.bits_); }
+
65  friend BitSet operator^(const BitSet &lhs, const BitSet &rhs) { return BitSet(lhs.bits_ ^ rhs.bits_); }
+
66 
+
67  private:
+
68  T bits_;
+
69 };
+
70 
+
71 template <class T>
+
72 BitSet<T>::BitSet()
+
73  : bits_(T(0))
+
74 {
+
75  static_assert(nctl::isIntegral<T>::value, "Integral type is required");
+
76  static_assert(T(0) < T(-1), "Unsigned type is required");
+
77 }
+
78 
+
79 template <class T>
+
80 BitSet<T>::BitSet(T value)
+
81  : bits_(value)
+
82 {
+
83  static_assert(nctl::isIntegral<T>::value, "Integral type is required");
+
84  static_assert(T(0) < T(-1), "Unsigned type is required");
+
85 }
+
86 
+
87 template <class T>
+
88 inline bool BitSet<T>::operator==(const BitSet &other) const
+
89 {
+
90  return other.bits_ == bits_;
+
91 }
+
92 
+
93 template <class T>
+
94 inline bool BitSet<T>::operator!=(const BitSet &other) const
+
95 {
+
96  return other.bits_ != bits_;
+
97 }
+
98 
+
99 template <class T>
+
100 inline bool BitSet<T>::test(unsigned int pos) const
+
101 {
+
102  return ((bits_ >> pos) & T(1)) != T(0);
+
103 }
+
104 
+
105 template <class T>
+
106 inline bool BitSet<T>::all() const
+
107 {
+
108  return ~bits_ == T(0);
+
109 }
+
110 
+
111 template <class T>
+
112 inline bool BitSet<T>::any() const
+
113 {
+
114  return bits_ != T(0);
+
115 }
+
116 
+
117 template <class T>
+
118 inline bool BitSet<T>::none() const
+
119 {
+
120  return bits_ == T(0);
+
121 }
+
122 
+
123 template <>
+
124 inline unsigned int BitSet<uint8_t>::count() const
+
125 {
+
126  static const uint8_t splitLookup[] = { 0, 1, 1, 2, 1, 2, 2, 3, 1, 2, 2, 3, 2, 3, 3, 4 };
+
127  return splitLookup[bits_ & 0xF] + splitLookup[bits_ >> 4];
+
128 }
+
129 
+
130 template <>
+
131 inline unsigned int BitSet<uint16_t>::count() const
+
132 {
+
133  return BitSet<uint8_t>(bits_ & 0xFF).count() + BitSet<uint8_t>(bits_ >> 8).count();
+
134 }
+
135 
+
136 template <>
+
137 inline unsigned int BitSet<uint32_t>::count() const
+
138 {
+
139  uint32_t bits = bits_;
+
140  bits = bits - ((bits >> 1) & 0x55555555);
+
141  bits = (bits & 0x33333333) + ((bits >> 2) & 0x33333333);
+
142  return (((bits + (bits >> 4)) & 0x0F0F0F0F) * 0x01010101) >> 24;
+
143 }
+
144 
+
145 template <>
+
146 inline unsigned int BitSet<uint64_t>::count() const
+
147 {
+
148  uint64_t bits = bits_;
+
149  bits = bits - ((bits >> 1) & 0x5555555555555555);
+
150  bits = (bits & 0x3333333333333333) + ((bits >> 2) & 0x3333333333333333);
+
151  return (((bits + (bits >> 4)) & 0x0F0F0F0F0F0F0F0F) * 0x0101010101010101) >> 56;
+
152 }
+
153 
+
154 template <class T>
+
155 inline unsigned int BitSet<T>::size() const
+
156 {
+
157  return sizeof(T) * 8;
+
158 }
+
159 
+
160 template <class T>
+
161 inline BitSet<T> &BitSet<T>::operator&=(const BitSet &other)
+
162 {
+
163  bits_ &= other.bits_;
+
164  return *this;
+
165 }
+
166 
+
167 template <class T>
+
168 inline BitSet<T> &BitSet<T>::operator|=(const BitSet &other)
+
169 {
+
170  bits_ |= other.bits_;
+
171  return *this;
+
172 }
+
173 
+
174 template <class T>
+
175 inline BitSet<T> &BitSet<T>::operator^=(const BitSet &other)
+
176 {
+
177  bits_ ^= other.bits_;
+
178  return *this;
+
179 }
+
180 
+
181 template <class T>
+
182 inline BitSet<T> BitSet<T>::operator~() const
+
183 {
+
184  return BitSet(~bits_);
+
185 }
+
186 
+
187 template <class T>
+
188 inline BitSet<T> &BitSet<T>::operator<<=(unsigned int pos)
+
189 {
+
190  bits_ <<= pos;
+
191  return *this;
+
192 }
+
193 
+
194 template <class T>
+
195 inline BitSet<T> &BitSet<T>::operator>>=(unsigned int pos)
+
196 {
+
197  bits_ >>= pos;
+
198  return *this;
+
199 }
+
200 
+
201 template <class T>
+
202 inline BitSet<T> BitSet<T>::operator<<(unsigned int pos) const
+
203 {
+
204  return BitSet(bits_ << pos);
+
205 }
+
206 
+
207 template <class T>
+
208 inline BitSet<T> BitSet<T>::operator>>(unsigned int pos) const
+
209 {
+
210  return BitSet(bits_ >> pos);
+
211 }
+
212 
+
213 template <class T>
+
214 inline void BitSet<T>::set()
+
215 {
+
216  bits_ = ~T(0);
+
217 }
+
218 
+
219 template <class T>
+
220 inline void BitSet<T>::set(unsigned int pos)
+
221 {
+
222  bits_ |= T(1) << pos;
+
223 }
+
224 
+
225 template <class T>
+
226 inline void BitSet<T>::set(unsigned int pos, bool value)
+
227 {
+
228  value ? set(pos) : reset(pos);
+
229 }
+
230 
+
231 template <class T>
+
232 inline void BitSet<T>::reset()
+
233 {
+
234  bits_ = T(0);
+
235 }
+
236 
+
237 template <class T>
+
238 inline void BitSet<T>::reset(unsigned int pos)
+
239 {
+
240  bits_ &= ~(T(1) << pos);
+
241 }
+
242 
+
243 template <class T>
+
244 inline void BitSet<T>::flip(unsigned int pos)
+
245 {
+
246  bits_ ^= (T(1) << pos);
+
247 }
+
248 
+
249 }
+
250 
+
251 #endif
+
A sequence of bits to be manipulated with logical operators.
Definition: BitSet.h:12
+
bool any() const
Definition: BitSet.h:112
+
void flip(unsigned int pos)
Flips the bit at the specified position.
Definition: BitSet.h:244
+
void reset(unsigned int pos)
Resets the bit at the specified position.
Definition: BitSet.h:238
+
void reset()
Resets all bits in the bitset.
Definition: BitSet.h:232
+
void set(unsigned int pos)
Sets the bit at the specified position.
Definition: BitSet.h:220
+
unsigned int count() const
+
bool none() const
Definition: BitSet.h:118
+
void set()
Sets all bits in the bitset.
Definition: BitSet.h:214
+
void set(unsigned int pos, bool value)
Sets the bit at the specified position with the specified value.
Definition: BitSet.h:226
+
unsigned int size() const
Definition: BitSet.h:155
+
bool all() const
Definition: BitSet.h:106
+
bool test(unsigned int pos) const
Definition: BitSet.h:100
+
Definition: type_traits.h:149
+
+ + + + diff --git a/master/_c_string_8h_source.html b/master/_c_string_8h_source.html new file mode 100644 index 0000000000..56dfd85dfa --- /dev/null +++ b/master/_c_string_8h_source.html @@ -0,0 +1,100 @@ + + + + + + + +nCine: include/nctl/CString.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
CString.h
+
+
+
1 #ifndef CLASS_NCTL_CSTRING
+
2 #define CLASS_NCTL_CSTRING
+
3 
+
4 #include <ncine/common_macros.h>
+
5 
+
6 namespace nctl {
+
7 
+
8 DLL_PUBLIC size_t strnlen(const char *str, size_t maxLen);
+
9 DLL_PUBLIC int stricmp(const char *str1, const char *str2);
+
10 DLL_PUBLIC char *strncpy(char *dest, const char *source, size_t count);
+
11 DLL_PUBLIC char *strncpy(char *dest, size_t elements, const char *source, size_t count);
+
12 DLL_PUBLIC char *strncat(char *dest, const char *source, size_t count);
+
13 DLL_PUBLIC char *strncat(char *dest, size_t elements, const char *source, size_t count);
+
14 DLL_PUBLIC int vsnprintf(char *str, size_t maxLen, const char *format, va_list arg);
+
15 DLL_PUBLIC int vsnprintfTrunc(char *str, size_t maxLen, const char *format, va_list arg);
+
16 
+
17 }
+
18 
+
19 #endif
+
+ + + + diff --git a/master/_camera_8h_source.html b/master/_camera_8h_source.html new file mode 100644 index 0000000000..f4740f4b3e --- /dev/null +++ b/master/_camera_8h_source.html @@ -0,0 +1,167 @@ + + + + + + + +nCine: include/ncine/Camera.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Camera.h
+
+
+
1 #ifndef CLASS_NCINE_CAMERA
+
2 #define CLASS_NCINE_CAMERA
+
3 
+
4 #if defined(_WIN32) && (defined(near) || defined(far))
+
5  #undef near
+
6  #undef far
+
7 #endif
+
8 
+
9 #include "common_defines.h"
+
10 #include "Matrix4x4.h"
+
11 
+
12 namespace ncine {
+
13 
+
15 class DLL_PUBLIC Camera
+
16 {
+
17  public:
+ +
19  {
+
20  float left;
+
21  float right;
+
22  float top;
+
23  float bottom;
+
24  float near = -1.0f;
+
25  float far = 1.0f;
+
26 
+ +
28  : left(0.0f), right(0.0f), top(0.0f), bottom(0.0f) {}
+
29 
+
30  ProjectionValues(float ll, float rr, float tt, float bb)
+
31  : left(ll), right(rr), top(tt), bottom(bb) {}
+
32  };
+
33 
+
34  struct ViewValues
+
35  {
+
36  Vector2f position;
+
37  float rotation;
+
38  float scale;
+
39 
+
40  ViewValues()
+
41  : position(0.0f, 0.0f), rotation(0.0f), scale(1.0f) {}
+
42 
+
43  ViewValues(float xx, float yy, float rr, float ss)
+
44  : position(xx, yy), rotation(rr), scale(ss) {}
+
45  };
+
46 
+
48  Camera();
+
49 
+
51  inline const ProjectionValues &projectionValues() const { return projectionValues_; }
+
53  inline const ViewValues &viewValues() const { return viewValues_; }
+
54 
+
56  inline const Matrix4x4f &projection() const { return projection_; }
+
58  inline const Matrix4x4f &view() const { return view_; }
+
59 
+
61  void setOrthoProjection(float left, float right, float top, float bottom);
+
63  void setOrthoProjection(const ProjectionValues &values);
+
64 
+
66  void setView(const Vector2f &pos, float rotation, float scale);
+
68  void setView(float x, float y, float rotation, float scale);
+
70  void setView(const ViewValues &values);
+
71 
+
73  inline unsigned long int updateFrameProjectionMatrix() const { return updateFrameProjectionMatrix_; }
+
75  inline unsigned long int updateFrameViewMatrix() const { return updateFrameViewMatrix_; }
+
76 
+
77  private:
+
78  ProjectionValues projectionValues_;
+
79  ViewValues viewValues_;
+
80  Matrix4x4f projection_;
+
81  Matrix4x4f view_;
+
83  unsigned long int updateFrameProjectionMatrix_;
+
85  unsigned long int updateFrameViewMatrix_;
+
86 };
+
87 
+
88 }
+
89 
+
90 #endif
+
The camera class that handles matrices for shaders.
Definition: Camera.h:16
+
unsigned long int updateFrameViewMatrix() const
Returns the last frame when the model matrix was changed.
Definition: Camera.h:75
+
unsigned long int updateFrameProjectionMatrix() const
Returns the last frame when the projection matrix was changed.
Definition: Camera.h:73
+
const ProjectionValues & projectionValues() const
Returns the projection values that are used to create the projection matrix.
Definition: Camera.h:51
+
const Matrix4x4f & projection() const
Returns the current projection matrix.
Definition: Camera.h:56
+
const ViewValues & viewValues() const
Returns the view values that are used to create the model matrix.
Definition: Camera.h:53
+
const Matrix4x4f & view() const
Returns the current model matrix.
Definition: Camera.h:58
+ + +
Definition: Camera.h:19
+
Definition: Camera.h:35
+
+ + + + diff --git a/master/_color_8h_source.html b/master/_color_8h_source.html new file mode 100644 index 0000000000..d0a08aa5d7 --- /dev/null +++ b/master/_color_8h_source.html @@ -0,0 +1,164 @@ + + + + + + + +nCine: include/ncine/Color.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Color.h
+
+
+
1 #ifndef CLASS_NCINE_COLOR
+
2 #define CLASS_NCINE_COLOR
+
3 
+
4 #include "common_defines.h"
+
5 
+
6 namespace ncine {
+
7 
+
8 class Colorf;
+
9 
+
11 class DLL_PUBLIC Color
+
12 {
+
13  public:
+
14  static const int NumChannels = 4;
+
15  static const Color Black;
+
16  static const Color White;
+
17  static const Color Red;
+
18  static const Color Green;
+
19  static const Color Blue;
+
20  static const Color Yellow;
+
21  static const Color Magenta;
+
22  static const Color Cyan;
+
23 
+
25  Color();
+
27  Color(unsigned int red, unsigned int green, unsigned int blue);
+
29  Color(unsigned int red, unsigned int green, unsigned int blue, unsigned int alpha);
+
31  explicit Color(unsigned int hex);
+
33  explicit Color(const unsigned int channels[NumChannels]);
+
35  explicit Color(const Colorf &color);
+
36 
+
38  inline unsigned char r() const { return red_; }
+
40  inline unsigned char g() const { return green_; }
+
42  inline unsigned char b() const { return blue_; }
+
44  inline unsigned char a() const { return alpha_; }
+
45 
+
47  unsigned int rgba() const;
+
49  unsigned int argb() const;
+
51  unsigned int abgr() const;
+
53  unsigned int bgra() const;
+
54 
+
56  inline const unsigned char *data() const { return &red_; }
+
58  inline unsigned char *data() { return &red_; }
+
59 
+
61  void set(unsigned int red, unsigned int green, unsigned int blue, unsigned int alpha);
+
63  void set(unsigned int red, unsigned int green, unsigned int blue);
+
65  void set(unsigned int hex);
+
67  void setVec(const unsigned int channels[NumChannels]);
+
68 
+
70  void setAlpha(unsigned int alpha);
+
71 
+
73  Color &operator=(const Colorf &color);
+
74 
+
76  bool operator==(const Color &color) const;
+
77 
+
78  Color &operator+=(const Color &v);
+
79  Color &operator-=(const Color &v);
+
80 
+
81  Color &operator*=(const Color &color);
+
83  Color &operator*=(float scalar);
+
84 
+
85  Color operator+(const Color &color) const;
+
86  Color operator-(const Color &color) const;
+
87 
+
88  Color operator*(const Color &color) const;
+
90  Color operator*(float scalar) const;
+
91 
+
92  private:
+
93  unsigned char red_;
+
94  unsigned char green_;
+
95  unsigned char blue_;
+
96  unsigned char alpha_;
+
97 };
+
98 
+
99 }
+
100 
+
101 #endif
+
A four channels unsigned char color.
Definition: Color.h:12
+
unsigned char * data()
Gets the color array.
Definition: Color.h:58
+
unsigned char g() const
Gets the green channel of the color.
Definition: Color.h:40
+
unsigned char a() const
Gets the alpha channel of the color.
Definition: Color.h:44
+
const unsigned char * data() const
Gets the color array.
Definition: Color.h:56
+
unsigned char r() const
Gets the red channel of the color.
Definition: Color.h:38
+
unsigned char b() const
Gets the blue channel of the color.
Definition: Color.h:42
+
A four channels normalized float color.
Definition: Colorf.h:13
+
+ + + + diff --git a/master/_color_hdr_8h_source.html b/master/_color_hdr_8h_source.html new file mode 100644 index 0000000000..bf90ae6ba0 --- /dev/null +++ b/master/_color_hdr_8h_source.html @@ -0,0 +1,147 @@ + + + + + + + +nCine: include/ncine/ColorHdr.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ColorHdr.h
+
+
+
1 #ifndef CLASS_NCINE_COLORHDR
+
2 #define CLASS_NCINE_COLORHDR
+
3 
+
4 #include "common_defines.h"
+
5 
+
6 namespace ncine {
+
7 
+
8 class Colorf;
+
9 
+
11 class DLL_PUBLIC ColorHdr
+
12 {
+
13  public:
+
14  static const int NumChannels = 3;
+
15  static const ColorHdr Black;
+
16  static const ColorHdr White;
+
17  static const ColorHdr Red;
+
18  static const ColorHdr Green;
+
19  static const ColorHdr Blue;
+
20 
+
22  ColorHdr();
+
24  ColorHdr(float red, float green, float blue);
+
26  explicit ColorHdr(const float channels[NumChannels]);
+
28  explicit ColorHdr(const Colorf &color);
+
29 
+
31  inline float r() const { return red_; }
+
33  inline float g() const { return green_; }
+
35  inline float b() const { return blue_; }
+
37  inline const float *data() const { return &red_; }
+
39  inline float *data() { return &red_; }
+
40 
+
42  void set(float red, float green, float blue);
+
44  void setVec(const float channels[NumChannels]);
+
45 
+
47  void clamp();
+
49  ColorHdr clamped() const;
+
50 
+
52  ColorHdr &operator=(const Colorf &color);
+
53 
+
54  ColorHdr &operator+=(const ColorHdr &v);
+
55  ColorHdr &operator-=(const ColorHdr &v);
+
56 
+
57  ColorHdr &operator*=(const ColorHdr &color);
+
59  ColorHdr &operator*=(float scalar);
+
60 
+
61  ColorHdr operator+(const ColorHdr &color) const;
+
62  ColorHdr operator-(const ColorHdr &color) const;
+
63 
+
64  ColorHdr operator*(const ColorHdr &color) const;
+
66  ColorHdr operator*(float scalar) const;
+
67 
+
68  private:
+
69  float red_;
+
70  float green_;
+
71  float blue_;
+
72 };
+
73 
+
74 }
+
75 
+
76 #endif
+
A three channels unclamped float color.
Definition: ColorHdr.h:12
+
float b() const
Gets the blue channel of the color.
Definition: ColorHdr.h:35
+
float * data()
Gets the color array.
Definition: ColorHdr.h:39
+
float r() const
Gets the red channel of the color.
Definition: ColorHdr.h:31
+
float g() const
Gets the green channel of the color.
Definition: ColorHdr.h:33
+
const float * data() const
Gets the color array.
Definition: ColorHdr.h:37
+
A four channels normalized float color.
Definition: Colorf.h:13
+
+ + + + diff --git a/master/_colorf_8h_source.html b/master/_colorf_8h_source.html new file mode 100644 index 0000000000..6489d0b4cb --- /dev/null +++ b/master/_colorf_8h_source.html @@ -0,0 +1,156 @@ + + + + + + + +nCine: include/ncine/Colorf.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Colorf.h
+
+
+
1 #ifndef CLASS_NCINE_COLORF
+
2 #define CLASS_NCINE_COLORF
+
3 
+
4 #include "common_defines.h"
+
5 
+
6 namespace ncine {
+
7 
+
8 class Color;
+
9 class ColorHdr;
+
10 
+
12 class DLL_PUBLIC Colorf
+
13 {
+
14  public:
+
15  static const int NumChannels = 4;
+
16  static const Colorf Black;
+
17  static const Colorf White;
+
18  static const Colorf Red;
+
19  static const Colorf Green;
+
20  static const Colorf Blue;
+
21  static const Colorf Yellow;
+
22  static const Colorf Magenta;
+
23  static const Colorf Cyan;
+
24 
+
26  Colorf();
+
28  Colorf(float red, float green, float blue);
+
30  Colorf(float red, float green, float blue, float alpha);
+
32  explicit Colorf(const float channels[NumChannels]);
+
34  explicit Colorf(const Color &color);
+
36  explicit Colorf(const ColorHdr &color);
+
37 
+
39  inline float r() const { return red_; }
+
41  inline float g() const { return green_; }
+
43  inline float b() const { return blue_; }
+
45  inline float a() const { return alpha_; }
+
47  inline const float *data() const { return &red_; }
+
49  inline float *data() { return &red_; }
+
50 
+
52  void set(float red, float green, float blue, float alpha);
+
54  void set(float red, float green, float blue);
+
56  void setVec(const float channels[NumChannels]);
+
58  void setAlpha(float alpha);
+
59 
+
61  Colorf &operator=(const Color &color);
+
62 
+
63  Colorf &operator+=(const Colorf &v);
+
64  Colorf &operator-=(const Colorf &v);
+
65 
+
66  Colorf &operator*=(const Colorf &color);
+
68  Colorf &operator*=(float scalar);
+
69 
+
70  Colorf operator+(const Colorf &color) const;
+
71  Colorf operator-(const Colorf &color) const;
+
72 
+
73  Colorf operator*(const Colorf &color) const;
+
75  Colorf operator*(float scalar) const;
+
76 
+
77  private:
+
78  float red_;
+
79  float green_;
+
80  float blue_;
+
81  float alpha_;
+
82 };
+
83 
+
84 }
+
85 
+
86 #endif
+
A three channels unclamped float color.
Definition: ColorHdr.h:12
+
A four channels unsigned char color.
Definition: Color.h:12
+
A four channels normalized float color.
Definition: Colorf.h:13
+
float * data()
Gets the color array.
Definition: Colorf.h:49
+
float g() const
Gets the green channel of the color.
Definition: Colorf.h:41
+
const float * data() const
Gets the color array.
Definition: Colorf.h:47
+
float b() const
Gets the blue channel of the color.
Definition: Colorf.h:43
+
float a() const
Gets the alpha channel of the color.
Definition: Colorf.h:45
+
float r() const
Gets the red channel of the color.
Definition: Colorf.h:39
+
+ + + + diff --git a/master/_display_mode_8h_source.html b/master/_display_mode_8h_source.html new file mode 100644 index 0000000000..31435e41c5 --- /dev/null +++ b/master/_display_mode_8h_source.html @@ -0,0 +1,147 @@ + + + + + + + +nCine: include/ncine/DisplayMode.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
DisplayMode.h
+
+
+
1 #ifndef CLASS_NCINE_DISPLAYMODE
+
2 #define CLASS_NCINE_DISPLAYMODE
+
3 
+
4 #include "common_defines.h"
+
5 
+
6 namespace ncine {
+
7 
+
9 class DLL_PUBLIC DisplayMode
+
10 {
+
11  public:
+
12  enum class DoubleBuffering
+
13  {
+
14  DISABLED,
+
15  ENABLED
+
16  };
+
17 
+
18  enum class VSync
+
19  {
+
20  DISABLED,
+
21  ENABLED
+
22  };
+
23 
+
24  DisplayMode(unsigned char redBits, unsigned char greenBits, unsigned char blueBits)
+
25  : DisplayMode(redBits, greenBits, blueBits, 0, 0, 0, DoubleBuffering::ENABLED, VSync::DISABLED) {}
+
26  DisplayMode(unsigned char redBits, unsigned char greenBits, unsigned char blueBits, unsigned char alphaBits)
+
27  : DisplayMode(redBits, greenBits, blueBits, alphaBits, 0, 0, DoubleBuffering::ENABLED, VSync::DISABLED) {}
+
28  DisplayMode(unsigned char depthBits, unsigned char stencilBits, DoubleBuffering dbMode, VSync vsMode)
+
29  : DisplayMode(0, 0, 0, 0, depthBits, stencilBits, dbMode, vsMode) {}
+
30  DisplayMode(unsigned char redBits, unsigned char greenBits, unsigned char blueBits, unsigned char alphaBits,
+
31  unsigned char depthBits, unsigned char stencilBits, DoubleBuffering dbMode, VSync vsMode)
+
32  : redBits_(redBits), greenBits_(greenBits), blueBits_(blueBits), alphaBits_(alphaBits),
+
33  depthBits_(depthBits), stencilBits_(stencilBits), isDoubleBuffered_(dbMode == DoubleBuffering::ENABLED),
+
34  hasVSync_(vsMode == VSync::ENABLED) {}
+
35 
+
37  inline unsigned char redBits() const { return redBits_; }
+
39  inline unsigned char greenBits() const { return greenBits_; }
+
41  inline unsigned char blueBits() const { return blueBits_; }
+
43  inline unsigned char alphaBits() const { return alphaBits_; }
+
45  inline unsigned char depthBits() const { return depthBits_; }
+
47  inline unsigned char stencilBits() const { return stencilBits_; }
+
49  inline bool isDoubleBuffered() const { return isDoubleBuffered_; }
+
51  inline bool hasVSync() const { return hasVSync_; }
+
52 
+
53  private:
+
55  unsigned char redBits_;
+
57  unsigned char greenBits_;
+
59  unsigned char blueBits_;
+
61  unsigned char alphaBits_;
+
63  unsigned char depthBits_;
+
65  unsigned char stencilBits_;
+
67  bool isDoubleBuffered_;
+
69  bool hasVSync_;
+
70 };
+
71 
+
72 }
+
73 
+
74 #endif
+
Display properties.
Definition: DisplayMode.h:10
+
unsigned char alphaBits() const
Returns the number of bits for the alpha channel.
Definition: DisplayMode.h:43
+
bool isDoubleBuffered() const
Returns true if the display is double buffered.
Definition: DisplayMode.h:49
+
unsigned char blueBits() const
Returns the number of bits for the blue channel.
Definition: DisplayMode.h:41
+
unsigned char redBits() const
Returns the number of bits for the red channel.
Definition: DisplayMode.h:37
+
bool hasVSync() const
Returns true if the dislpay has V-sync enabled.
Definition: DisplayMode.h:51
+
unsigned char greenBits() const
Returns the number of bits for the green channel.
Definition: DisplayMode.h:39
+
unsigned char stencilBits() const
Returns the number of bits for the stencil buffer.
Definition: DisplayMode.h:47
+
unsigned char depthBits() const
Returns the number of bits for the depth buffer.
Definition: DisplayMode.h:45
+
+ + + + diff --git a/master/_drawable_node_8h_source.html b/master/_drawable_node_8h_source.html new file mode 100644 index 0000000000..6fcf5a9843 --- /dev/null +++ b/master/_drawable_node_8h_source.html @@ -0,0 +1,220 @@ + + + + + + + +nCine: include/ncine/DrawableNode.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
DrawableNode.h
+
+
+
1 #ifndef CLASS_NCINE_DRAWABLENODE
+
2 #define CLASS_NCINE_DRAWABLENODE
+
3 
+
4 #include "SceneNode.h"
+
5 #include "Rect.h"
+
6 
+
7 namespace ncine {
+
8 
+
9 class RenderCommand;
+
10 class RenderQueue;
+
11 
+
13 class DLL_PUBLIC DrawableNode : public SceneNode
+
14 {
+
15  public:
+
16  // Notable anchor points for a drawable node
+
17  static const Vector2f AnchorCenter;
+
18  static const Vector2f AnchorBottomLeft;
+
19  static const Vector2f AnchorTopLeft;
+
20  static const Vector2f AnchorBottomRight;
+
21  static const Vector2f AnchorTopRight;
+
22 
+
24  enum class BlendingPreset
+
25  {
+
26  DISABLED,
+
27  ALPHA,
+
28  PREMULTIPLIED_ALPHA,
+
29  ADDITIVE,
+
30  MULTIPLY
+
31  };
+
32 
+
34  enum class BlendingFactor
+
35  {
+
36  ZERO,
+
37  ONE,
+
38  SRC_COLOR,
+
39  ONE_MINUS_SRC_COLOR,
+
40  DST_COLOR,
+
41  ONE_MINUS_DST_COLOR,
+
42  SRC_ALPHA,
+
43  ONE_MINUS_SRC_ALPHA,
+
44  DST_ALPHA,
+
45  ONE_MINUS_DST_ALPHA,
+
46  CONSTANT_COLOR,
+
47  ONE_MINUS_CONSTANT_COLOR,
+
48  CONSTANT_ALPHA,
+
49  ONE_MINUS_CONSTANT_ALPHA,
+
50  SRC_ALPHA_SATURATE,
+
51  };
+
52 
+
54  DrawableNode(SceneNode *parent, float xx, float yy);
+
56  DrawableNode(SceneNode *parent, const Vector2f &position);
+
58  explicit DrawableNode(SceneNode *parent);
+
60  DrawableNode();
+
61  ~DrawableNode() override;
+
62 
+ + +
67 
+
69  bool draw(RenderQueue &renderQueue) override;
+
70 
+
72  inline virtual float width() const { return width_ * scaleFactor_.x; }
+
74  inline virtual float height() const { return height_ * scaleFactor_.y; }
+
76  inline Vector2f size() const { return Vector2f(width(), height()); }
+
77 
+
79  inline virtual float absWidth() const { return width_ * absScaleFactor_.x; }
+
81  inline virtual float absHeight() const { return height_ * absScaleFactor_.y; }
+
83  inline Vector2f absSize() const { return Vector2f(absWidth(), absHeight()); }
+
84 
+
86  inline Vector2f anchorPoint() const { return (anchorPoint_ / size()) + 0.5f; }
+
88  void setAnchorPoint(float xx, float yy);
+
90  inline void setAnchorPoint(const Vector2f &point) { setAnchorPoint(point.x, point.y); }
+
91 
+
93  bool isBlendingEnabled() const;
+
95  void setBlendingEnabled(bool blendingEnabled);
+
96 
+
98  BlendingFactor srcBlendingFactor() const;
+
100  BlendingFactor destBlendingFactor() const;
+
101 
+
103  void setBlendingPreset(BlendingPreset blendingPreset);
+
105  void setBlendingFactors(BlendingFactor srcBlendingFactor, BlendingFactor destBlendingFactor);
+
106 
+
108  inline unsigned long int lastFrameRendered() const { return lastFrameRendered_; }
+
110  inline Rectf aabb() const { return aabb_; }
+
111 
+
112  protected:
+
114  float width_;
+
116  float height_;
+
117 
+ +
120 
+
122  unsigned long int lastFrameRendered_;
+ +
126  virtual void updateAabb();
+
128  void updateCulling();
+
129 
+
131  DrawableNode(const DrawableNode &other);
+
132 
+
134  virtual void shaderHasChanged() = 0;
+
135 
+
137  virtual void updateRenderCommand() = 0;
+
138 
+
139  private:
+
141  DrawableNode &operator=(const DrawableNode &) = delete;
+
142 
+
143  friend class ShaderState;
+
144  friend class Viewport;
+
145 };
+
146 
+
147 }
+
148 
+
149 #endif
+
A class for objects that can be drawn through the render queue.
Definition: DrawableNode.h:14
+
Vector2f size() const
Returns the size of the node area.
Definition: DrawableNode.h:76
+
unsigned long int lastFrameRendered_
The last frame any viewports rendered this node.
Definition: DrawableNode.h:122
+
unsigned long int lastFrameRendered() const
Returns the last frame in which any of the viewports have rendered this node (node was not culled)
Definition: DrawableNode.h:108
+
virtual void shaderHasChanged()=0
Performs the required tasks upon a change to the shader.
+
virtual float width() const
Returns the width of the node area.
Definition: DrawableNode.h:72
+
DrawableNode(DrawableNode &&)
Default move constructor.
+
float height_
Node height in pixel.
Definition: DrawableNode.h:116
+
virtual float height() const
Returns the height of the node area.
Definition: DrawableNode.h:74
+
Vector2f absSize() const
Returns the absolute size of the node area.
Definition: DrawableNode.h:83
+
Rectf aabb() const
Returns the axis-aligned bounding box of the node area in the last frame.
Definition: DrawableNode.h:110
+
BlendingPreset
Presets for blending factors.
Definition: DrawableNode.h:25
+
void setAnchorPoint(const Vector2f &point)
Sets the transformation anchor point with a Vector2f
Definition: DrawableNode.h:90
+
nctl::UniquePtr< RenderCommand > renderCommand_
The render command class associated with this node.
Definition: DrawableNode.h:119
+
float width_
Node width in pixel.
Definition: DrawableNode.h:114
+
Rectf aabb_
Axis-aligned bounding box of the node area.
Definition: DrawableNode.h:124
+
virtual void updateRenderCommand()=0
Updates the render command.
+
Vector2f anchorPoint() const
Gets the transformation anchor point.
Definition: DrawableNode.h:86
+
virtual float absWidth() const
Returns the absolute width of the node area.
Definition: DrawableNode.h:79
+
virtual float absHeight() const
Returns the absolute height of the node area.
Definition: DrawableNode.h:81
+
BlendingFactor
OpenGL blending factors.
Definition: DrawableNode.h:35
+
DrawableNode & operator=(DrawableNode &&)
Default move assignment operator.
+ +
The base class for the transformation nodes hierarchy.
Definition: SceneNode.h:19
+
Shader state class for the user to use custom shaders.
Definition: ShaderState.h:16
+ +
The class handling a viewport and its corresponding render target texture.
Definition: Viewport.h:22
+ +
+ + + + diff --git a/master/_emscripten_local_file_8h_source.html b/master/_emscripten_local_file_8h_source.html new file mode 100644 index 0000000000..17fbed49d4 --- /dev/null +++ b/master/_emscripten_local_file_8h_source.html @@ -0,0 +1,140 @@ + + + + + + + +nCine: include/ncine/EmscriptenLocalFile.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
EmscriptenLocalFile.h
+
+
+
1 #ifndef CLASS_NCINE_EMSCRIPTENLOCALFILE
+
2 #define CLASS_NCINE_EMSCRIPTENLOCALFILE
+
3 
+
4 #include <nctl/String.h>
+
5 #include <nctl/UniquePtr.h>
+
6 
+
7 namespace ncine {
+
8 
+
10 class DLL_PUBLIC EmscriptenLocalFile
+
11 {
+
12  public:
+
13  using LoadedCallbackType = void(const EmscriptenLocalFile &localFile, void *userData);
+
14 
+ +
16  : fileSize_(0), filename_(MaxFilenameLength), loading_(false), loadedCallback_(nullptr) {}
+
17 
+
19  void load();
+
21  void load(const char *fileFilter);
+
23  void save(const char *filename);
+
25 
+
26  unsigned long int read(void *buffer, unsigned long int bytes) const;
+
28 
+
29  unsigned long int write(void *buffer, unsigned long int bytes);
+
30 
+
32  inline void setLoadedCallback(LoadedCallbackType *loadedCallback) { setLoadedCallback(loadedCallback, nullptr); }
+
34  void setLoadedCallback(LoadedCallbackType *loadedCallback, void *userData);
+
35 
+
37  inline const char *data() const { return fileBuffer_.get(); }
+
39  inline long int size() const { return fileSize_; }
+
41  inline const char *filename() const { return filename_.data(); }
+
43  inline bool isLoading() const { return loading_; }
+
44 
+
45  private:
+
47  static const unsigned int MaxFilenameLength = 256;
+
48 
+
50  nctl::UniquePtr<char[]> fileBuffer_;
+
52  long int fileSize_;
+
54  nctl::String filename_;
+
56  bool loading_;
+
57 
+
58  LoadedCallbackType *loadedCallback_;
+
59  void *userData_;
+
60 
+
61  static void fileDataCallback(void *context, char *contentPointer, size_t contentSize, const char *fileName);
+
62  static void loadingCallback(void *context);
+
63  static void cannotLoadCallback(void *context);
+
64 };
+
65 
+
66 }
+
67 
+
68 #endif
+
The class dealing with opening and saving a local file on Emscripten.
Definition: EmscriptenLocalFile.h:11
+
const char * filename() const
Returns the file name.
Definition: EmscriptenLocalFile.h:41
+
long int size() const
Returns the file size in bytes.
Definition: EmscriptenLocalFile.h:39
+
const char * data() const
Returns a read-only pointer to the internal file buffer.
Definition: EmscriptenLocalFile.h:37
+
void setLoadedCallback(LoadedCallbackType *loadedCallback)
Sets the callback to be invoked when loading is complete.
Definition: EmscriptenLocalFile.h:32
+
bool isLoading() const
Returns true if loading is in progress.
Definition: EmscriptenLocalFile.h:43
+
A basic string class made of chars.
Definition: String.h:23
+ +
+ + + + diff --git a/master/_file_system_8h_source.html b/master/_file_system_8h_source.html new file mode 100644 index 0000000000..c47fe48d1d --- /dev/null +++ b/master/_file_system_8h_source.html @@ -0,0 +1,228 @@ + + + + + + + +nCine: include/ncine/FileSystem.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
FileSystem.h
+
+
+
1 #ifndef CLASS_NCINE_FILESYSTEM
+
2 #define CLASS_NCINE_FILESYSTEM
+
3 
+
4 #include "common_defines.h"
+
5 #include <nctl/String.h>
+
6 
+
7 #ifdef _WIN32
+
8 typedef void *HANDLE;
+
9 #elif defined(__APPLE__)
+
10  #include <dirent.h>
+
11 #elif defined(__ANDROID__)
+
12 using DIR = struct DIR;
+
13 using AAssetDir = struct AAssetDir;
+
14 #else
+
15 struct __dirstream;
+
16 using DIR = struct __dirstream;
+
17 #endif
+
18 
+
19 namespace ncine {
+
20 
+
22 class DLL_PUBLIC FileSystem
+
23 {
+
24  public:
+
26  static const unsigned int MaxPathLength;
+
27 
+ +
30  {
+
31  READ = 1,
+
32  WRITE = 2,
+
33  EXECUTE = 4
+
34  };
+
35 
+
36  struct FileDate
+
37  {
+
38  int year;
+
39  int month;
+
40  int day;
+
41  int weekDay;
+
42  int hour;
+
43  int minute;
+
44  int second;
+
45  };
+
46 
+
48  class DLL_PUBLIC Directory
+
49  {
+
50  public:
+
51  Directory(const char *path);
+
52  ~Directory();
+
53 
+
55  bool open(const char *path);
+
57  void close();
+
59  const char *readNext();
+
60 
+
61  private:
+
62 #ifdef _WIN32
+
63  bool firstFile_ = true;
+
64  HANDLE hFindFile_ = NULL;
+
65  char fileName_[260];
+
66 #else
+
67  #ifdef __ANDROID__
+
68  AAssetDir *assetDir_ = nullptr;
+
69  #endif
+
70  DIR *dirStream_ = nullptr;
+
71 #endif
+
72  };
+
73 
+
75  static nctl::String joinPath(const nctl::String &first, const nctl::String &second);
+
77  static nctl::String absoluteJoinPath(const nctl::String &first, const nctl::String &second);
+
78 
+
80  static nctl::String dirName(const char *path);
+
82  static nctl::String baseName(const char *path);
+
84 
+
85  static nctl::String absolutePath(const char *path);
+
86 
+
88  static const char *extension(const char *path);
+
90  static bool hasExtension(const char *path, const char *extension);
+
92  static bool fixExtension(nctl::String &path, const char *extension);
+
93 
+
95  static unsigned long logicalDrives();
+
97  static const char *logicalDriveStrings();
+
98 
+
100  static nctl::String currentDir();
+
102  static bool setCurrentDir(const char *path);
+
103 #ifdef __ANDROID__
+
105  static nctl::String externalStorageDir();
+
106 #endif
+
107 
+
109  static bool isDirectory(const char *path);
+
111  static bool isFile(const char *path);
+
112 
+
114  static bool exists(const char *path);
+
116  static bool isReadable(const char *path);
+
118  static bool isWritable(const char *path);
+
120  static bool isExecutable(const char *path);
+
121 
+
123  static bool isReadableFile(const char *path);
+
125  static bool isWritableFile(const char *path);
+
126 
+
128  static bool isHidden(const char *path);
+
130  static bool setHidden(const char *path, bool hidden);
+
131 
+
133  static bool createDir(const char *path);
+
135  static bool deleteEmptyDir(const char *path);
+
137  static bool deleteFile(const char *path);
+
139  static bool rename(const char *oldPath, const char *newPath);
+
141  static bool copy(const char *oldPath, const char *newPath);
+
142 
+
144  static long int fileSize(const char *path);
+
146  static FileDate lastModificationTime(const char *path);
+
148  static FileDate lastAccessTime(const char *path);
+
149 
+
151  static int permissions(const char *path);
+
153  static bool changePermissions(const char *path, int mode);
+
155  static bool addPermissions(const char *path, int mode);
+
157  static bool removePermissions(const char *path, int mode);
+
158 
+
160  inline static const nctl::String &dataPath() { return dataPath_; }
+
162  static const nctl::String &homePath();
+
164  static const nctl::String &savePath();
+
166  static const nctl::String &cachePath();
+
167 
+
168  private:
+
170  static nctl::String dataPath_;
+
172  static nctl::String homePath_;
+
174  static nctl::String savePath_;
+
176  static nctl::String cachePath_;
+
177 
+
179  static void initHomePath();
+
181  static void initSavePath();
+
183  static void initCachePath();
+
184 
+
186  friend class AppConfiguration;
+
187 };
+
188 
+
189 using fs = FileSystem;
+
190 
+
191 }
+
192 
+
193 #endif
+
The class storing initialization settings for an nCine application.
Definition: AppConfiguration.h:12
+
The class that handles directory traversal.
Definition: FileSystem.h:49
+
File system related methods.
Definition: FileSystem.h:23
+
static const unsigned int MaxPathLength
Maximum allowed length for a path string.
Definition: FileSystem.h:26
+
static const nctl::String & dataPath()
Returns the base directory for data loading.
Definition: FileSystem.h:160
+
Permission
The available permissions to check or set.
Definition: FileSystem.h:30
+
A basic string class made of chars.
Definition: String.h:23
+
Definition: FileSystem.h:37
+
+ + + + diff --git a/master/_font_8h_source.html b/master/_font_8h_source.html new file mode 100644 index 0000000000..4d1b4cc2e3 --- /dev/null +++ b/master/_font_8h_source.html @@ -0,0 +1,195 @@ + + + + + + + +nCine: include/ncine/Font.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Font.h
+
+
+
1 #ifndef CLASS_NCINE_FONT
+
2 #define CLASS_NCINE_FONT
+
3 
+
4 #include "Object.h"
+
5 #include "Vector2.h"
+
6 #include <nctl/HashMap.h>
+
7 
+
8 namespace ncine {
+
9 
+
10 class FntParser;
+
11 class FontGlyph;
+
12 class Texture;
+
13 
+
15 class DLL_PUBLIC Font : public Object
+
16 {
+
17  public:
+
19 
+ +
21  {
+ + +
27  GLYPH_SPRITE
+
28  };
+
29 
+
31  Font();
+
32 
+
34  Font(const char *fntBufferName, const unsigned char *fntBufferPtr, unsigned long int fntBufferSize, const char *texFilename);
+
36  Font(const char *fntBufferName, const unsigned char *fntBufferPtr, unsigned long int fntBufferSize,
+
37  const char *texBufferName, const unsigned char *texBufferPtr, unsigned long int texBufferSize);
+
39  Font(const char *fntBufferName, const unsigned char *fntBufferPtr, unsigned long int fntBufferSize, Texture *texture);
+
40 
+
42  explicit Font(const char *fntFilename);
+
44  Font(const char *fntFilename, const char *texFilename);
+
46  Font(const char *fntFilename, Texture *texture);
+
47 
+
48  ~Font() override;
+
49 
+
51  Font(Font &&);
+ +
54 
+
55  bool loadFromMemory(const char *fntBufferName, const unsigned char *fntBufferPtr, unsigned long int fntBufferSize, const char *texFilename);
+
56  bool loadFromMemory(const char *fntBufferName, const unsigned char *fntBufferPtr, unsigned long int fntBufferSize,
+
57  const char *texBufferName, const unsigned char *texBufferPtr, unsigned long int texBufferSize);
+
58  bool loadFromMemory(const char *fntBufferName, const unsigned char *fntBufferPtr, unsigned long int fntBufferSize, Texture *texture);
+
59  bool loadFromFile(const char *fntFilename);
+
60  bool loadFromFile(const char *fntFilename, const char *texFilename);
+
61  bool loadFromFile(const char *fntFilename, Texture *texture);
+
62 
+
64  inline const Texture *texture() const { return (texture_ != nullptr) ? texture_.get() : texturePtr_; }
+
66  inline Texture *texture() { return (texture_ != nullptr) ? texture_.get() : texturePtr_; }
+
68  bool setTexture(Texture *texture);
+
69 
+
71  inline unsigned int lineHeight() const { return lineHeight_; }
+
73  inline unsigned int base() const { return base_; }
+
75  inline Vector2i textureSize() const { return Vector2i(width_, height_); }
+
77  inline unsigned int numGlyphs() const { return numGlyphs_; }
+
79  inline unsigned int numKernings() const { return numKernings_; }
+
81  const FontGlyph *glyph(unsigned int glyphId) const;
+
82 
+
84  inline RenderMode renderMode() const { return renderMode_; }
+
85 
+
86  inline static ObjectType sType() { return ObjectType::FONT; }
+
87 
+
88  private:
+
90  nctl::UniquePtr<Texture> texture_;
+
92  Texture *texturePtr_;
+
94  unsigned int lineHeight_;
+
96  unsigned int base_;
+
98  unsigned int width_;
+
100  unsigned int height_;
+
102  unsigned int numGlyphs_;
+
104  unsigned int numKernings_;
+
105 
+
107  static const unsigned int GlyphArraySize = 256;
+
109  nctl::UniquePtr<FontGlyph[]> glyphArray_;
+
111  static const unsigned int GlyphHashmapSize = 1024;
+ +
114 
+
115  RenderMode renderMode_;
+
116 
+
118  Font(const Font &) = delete;
+
120  Font &operator=(const Font &) = delete;
+
121 
+
122  bool loadTextureFromMemory(const char *texBufferName, const unsigned char *texBufferPtr, unsigned long int texBufferSize);
+
123  bool loadTextureFromFile(const char *texFilename);
+
124 
+
126  bool checkFntInformation(const FntParser &fntParser);
+
127 
+
129  void determineRenderMode(const FntParser &fntParser);
+
131  void retrieveInfoFromFnt(const FntParser &fntParser);
+
132 };
+
133 
+
134 }
+
135 
+
136 #endif
+
A class holding the font and glyphs information needed to render text.
Definition: Font.h:16
+
unsigned int lineHeight() const
Returns the font line height.
Definition: Font.h:71
+
unsigned int base() const
Returns the font base.
Definition: Font.h:73
+
Texture * texture()
Returns the texture object in use by the font.
Definition: Font.h:66
+
unsigned int numGlyphs() const
Returns the number of glyphs.
Definition: Font.h:77
+
RenderMode renderMode() const
Returns the mode detected by the font to render text nodes.
Definition: Font.h:84
+
const Texture * texture() const
Returns the constant texture object in use by the font.
Definition: Font.h:64
+
RenderMode
The available modes for text nodes rendering.
Definition: Font.h:21
+
@ GLYPH_IN_RED
Glyph data is in the red channel.
Definition: Font.h:25
+
@ GLYPH_IN_ALPHA
Glyph data is in the alpha channel.
Definition: Font.h:23
+
Vector2i textureSize() const
Returns the texture atlas size.
Definition: Font.h:75
+
Font & operator=(Font &&)
Default move assignment operator.
+
unsigned int numKernings() const
Returns the number of kerning pairs.
Definition: Font.h:79
+
Font(Font &&)
Default move constructor.
+
Static RRTI and identification index.
Definition: Object.h:10
+
Texture class.
Definition: Texture.h:16
+ + +
A unique pointer implementation.
Definition: UniquePtr.h:118
+
+ + + + diff --git a/master/_free_list_allocator_8h_source.html b/master/_free_list_allocator_8h_source.html new file mode 100644 index 0000000000..f6d504ffef --- /dev/null +++ b/master/_free_list_allocator_8h_source.html @@ -0,0 +1,157 @@ + + + + + + + +nCine: include/nctl/FreeListAllocator.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
FreeListAllocator.h
+
+
+
1 #ifndef CLASS_NCTL_FREELISTALLOCATOR
+
2 #define CLASS_NCTL_FREELISTALLOCATOR
+
3 
+
4 #include <nctl/IAllocator.h>
+
5 
+
6 namespace nctl {
+
7 
+
9 class DLL_PUBLIC FreeListAllocator : public IAllocator
+
10 {
+
11  public:
+
13  enum class FitStrategy
+
14  {
+
15  FIRST_FIT,
+
16  BEST_FIT,
+
17  WORST_FIT
+
18  };
+
19 
+
20  struct Block
+
21  {
+
22  size_t size;
+
23  Block *next;
+
24  };
+
25 
+ +
27  : FreeListAllocator("FreeList") {}
+
28  explicit FreeListAllocator(const char *name);
+
29  FreeListAllocator(size_t size, void *base)
+
30  : FreeListAllocator("FreeList", size, base, true) {}
+
31  FreeListAllocator(const char *name, size_t size, void *base)
+
32  : FreeListAllocator(name, size, base, true) {}
+
33  FreeListAllocator(size_t size, void *base, bool defragOnDeallocation)
+
34  : FreeListAllocator("FreeList", size, base, defragOnDeallocation) {}
+
35  FreeListAllocator(const char *name, size_t size, void *base, bool defragOnDeallocation);
+
36  ~FreeListAllocator();
+
37 
+
38  void init(size_t size, void *base);
+
40  void defrag();
+
41  inline const Block *freeBlock() const { return freeBlocks_; }
+
42 
+
44  inline FitStrategy fitStrategy() const { return fitStrategy_; }
+
46  inline void setFitStrategy(FitStrategy fitStrategy) { fitStrategy_ = fitStrategy; }
+
47 
+
49  inline bool defragOnDeallocation() const { return defragOnDeallocation_; }
+
51 
+
52  inline void setDefragOnDeallocation(bool value) { defragOnDeallocation_ = value; }
+
53 
+
54  private:
+
55  struct Header
+
56  {
+
57  size_t size;
+
58  uint8_t adjustment;
+
59  };
+
60 
+
61  Block *freeBlocks_;
+
62  FitStrategy fitStrategy_;
+
63  bool defragOnDeallocation_;
+
64 
+
65  FreeListAllocator(const FreeListAllocator &) = delete;
+
66  FreeListAllocator &operator=(const FreeListAllocator &) = delete;
+
67 
+
68  static void *allocateImpl(IAllocator *allocator, size_t size, uint8_t alignment);
+
69  static void *reallocateImpl(IAllocator *allocator, void *ptr, size_t size, uint8_t alignment, size_t &oldSize);
+
70  static void deallocateImpl(IAllocator *allocator, void *ptr);
+
71 };
+
72 
+
73 }
+
74 
+
75 #endif
+
A free list allocator.
Definition: FreeListAllocator.h:10
+
void setFitStrategy(FitStrategy fitStrategy)
Sets the allocation strategy.
Definition: FreeListAllocator.h:46
+
FitStrategy fitStrategy() const
Returns the allocation strategy.
Definition: FreeListAllocator.h:44
+
FitStrategy
Block allocation strategy.
Definition: FreeListAllocator.h:14
+
void setDefragOnDeallocation(bool value)
Sets the state of the defrag on deallocation flag.
Definition: FreeListAllocator.h:52
+
bool defragOnDeallocation() const
Returns the state of the defrag on deallocation flag.
Definition: FreeListAllocator.h:49
+
The allocator interface.
Definition: IAllocator.h:18
+
Definition: FreeListAllocator.h:21
+
+ + + + diff --git a/master/_hash64_8h_source.html b/master/_hash64_8h_source.html new file mode 100644 index 0000000000..14076943b6 --- /dev/null +++ b/master/_hash64_8h_source.html @@ -0,0 +1,123 @@ + + + + + + + +nCine: include/ncine/Hash64.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Hash64.h
+
+
+
1 #ifndef CLASS_NCINE_HASH64
+
2 #define CLASS_NCINE_HASH64
+
3 
+
4 #include <cstdint>
+
5 #include "common_defines.h"
+
6 
+
7 namespace ncine {
+
8 
+
10 class DLL_PUBLIC Hash64
+
11 {
+
12  public:
+
14  struct Statistics
+
15  {
+
16  mutable unsigned int HashStringCalls = 0;
+
17  mutable unsigned int HashedStrings = 0;
+
18  mutable unsigned int HashedCharacters = 0;
+
19  mutable unsigned int HashedFiles = 0;
+
20  mutable unsigned int ScannedHashStrings = 0;
+
21  };
+
22 
+
24  uint64_t hashStrings(unsigned int count, const char **strings, const int *lengths) const;
+
26  uint64_t hashString(const char *string, int length) const;
+
28  uint64_t hashFileStat(const char *filename) const;
+
30  uint64_t scanHashString(const char *string, unsigned int length) const;
+
32  uint64_t scanHashString(const char *string) const;
+
33 
+
35  inline const Statistics &statistics() const { return statistics_; }
+
36 
+
38  void clearStatistics();
+
39 
+
40  private:
+
42  Statistics statistics_;
+
43 };
+
44 
+
46 extern DLL_PUBLIC Hash64 &hash64();
+
47 
+
48 }
+
49 
+
50 #endif
+
Utility methods to calculate a uint64_t hash from strings or files.
Definition: Hash64.h:11
+
const Statistics & statistics() const
Returns the statistics about the hashing requests.
Definition: Hash64.h:35
+
The statistics about hashing requests.
Definition: Hash64.h:15
+
+ + + + diff --git a/master/_hash_functions_8h_source.html b/master/_hash_functions_8h_source.html new file mode 100644 index 0000000000..f168da6526 --- /dev/null +++ b/master/_hash_functions_8h_source.html @@ -0,0 +1,359 @@ + + + + + + + +nCine: include/nctl/HashFunctions.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
HashFunctions.h
+
+
+
1 #ifndef CLASS_NCTL_HASHFUNCTIONS
+
2 #define CLASS_NCTL_HASHFUNCTIONS
+
3 
+
4 #include <cstdint>
+
5 #include <cstring>
+
6 #include "String.h"
+
7 
+
8 namespace nctl {
+
9 
+
10 using hash_t = uint32_t;
+
11 const hash_t NullHash = static_cast<hash_t>(~0);
+
12 
+
14 template <class K>
+ +
16 {
+
17  public:
+
18  hash_t operator()(const K &key) const { return static_cast<hash_t>(0); }
+
19 };
+
20 
+
22 template <class K, unsigned int Value>
+ +
24 {
+
25  public:
+
26  hash_t operator()(const K &key) const { return static_cast<hash_t>(key % Value); }
+
27 };
+
28 
+
30 
+
31 template <class K>
+ +
33 {
+
34  public:
+
35  hash_t operator()(const K &key) const { return static_cast<hash_t>(key); }
+
36 };
+
37 
+
39 template <class K>
+ +
41 {
+
42  public:
+
43  hash_t operator()(const K &key) const
+
44  {
+
45  const unsigned char *bytes = reinterpret_cast<const unsigned char *>(&key);
+
46  hash_t hash = static_cast<hash_t>(0);
+
47  for (unsigned int i = 0; i < sizeof(K); i++)
+
48  hash ^= (hash << 5) + (hash >> 2) + static_cast<hash_t>(bytes[i]);
+
49 
+
50  return hash;
+
51  }
+
52 };
+
53 
+
55 
+
58 template <>
+
59 class SaxHashFunc<const char *>
+
60 {
+
61  public:
+
62  hash_t operator()(const char *key) const
+
63  {
+
64  const unsigned int length = strlen(key);
+
65  hash_t hash = static_cast<hash_t>(0);
+
66  for (unsigned int i = 0; i < length; i++)
+
67  hash ^= (hash << 5) + (hash >> 2) + static_cast<hash_t>(key[i]);
+
68 
+
69  return hash;
+
70  }
+
71 };
+
72 
+
74 
+
77 template <>
+ +
79 {
+
80  public:
+
81  hash_t operator()(const String &string) const
+
82  {
+
83  const unsigned int length = string.length();
+
84  hash_t hash = static_cast<hash_t>(0);
+
85  for (unsigned int i = 0; i < length; i++)
+
86  hash ^= (hash << 5) + (hash >> 2) + static_cast<hash_t>(string[i]);
+
87 
+
88  return hash;
+
89  }
+
90 };
+
91 
+
93 
+
96 template <class K>
+ +
98 {
+
99  public:
+
100  hash_t operator()(const K &key) const
+
101  {
+
102  const unsigned char *bytes = reinterpret_cast<const unsigned char *>(&key);
+
103  hash_t hash = static_cast<hash_t>(0);
+
104  for (unsigned int i = 0; i < sizeof(K); i++)
+
105  {
+
106  hash += static_cast<hash_t>(bytes[i]);
+
107  hash += (hash << 10);
+
108  hash ^= (hash >> 6);
+
109  }
+
110  hash += (hash << 3);
+
111  hash ^= (hash >> 11);
+
112  hash += (hash << 15);
+
113 
+
114  return hash;
+
115  }
+
116 };
+
117 
+
119 
+
124 template <>
+
125 class JenkinsHashFunc<const char *>
+
126 {
+
127  public:
+
128  hash_t operator()(const char *key) const
+
129  {
+
130  const unsigned int length = strlen(key);
+
131  hash_t hash = static_cast<hash_t>(0);
+
132  for (unsigned int i = 0; i < length; i++)
+
133  {
+
134  hash += static_cast<hash_t>(key[i]);
+
135  hash += (hash << 10);
+
136  hash ^= (hash >> 6);
+
137  }
+
138  hash += (hash << 3);
+
139  hash ^= (hash >> 11);
+
140  hash += (hash << 15);
+
141 
+
142  return hash;
+
143  }
+
144 };
+
145 
+
147 
+
152 template <>
+ +
154 {
+
155  public:
+
156  hash_t operator()(const String &string) const
+
157  {
+
158  const unsigned int length = string.length();
+
159  hash_t hash = static_cast<hash_t>(0);
+
160  for (unsigned int i = 0; i < length; i++)
+
161  {
+
162  hash += static_cast<hash_t>(string[i]);
+
163  hash += (hash << 10);
+
164  hash ^= (hash >> 6);
+
165  }
+
166  hash += (hash << 3);
+
167  hash ^= (hash >> 11);
+
168  hash += (hash << 15);
+
169 
+
170  return hash;
+
171  }
+
172 };
+
173 
+
175 
+
178 template <class K>
+ +
180 {
+
181  public:
+
182  hash_t operator()(const K &key) const
+
183  {
+
184  const unsigned char *bytes = reinterpret_cast<const unsigned char *>(&key);
+
185  hash_t hash = static_cast<hash_t>(Seed);
+
186  for (unsigned int i = 0; i < sizeof(K); i++)
+
187  hash = fnv1a(bytes[i], hash);
+
188 
+
189  return hash;
+
190  }
+
191 
+
192  private:
+
193  static const hash_t Prime = 0x01000193; // 16777619
+
194  static const hash_t Seed = 0x811C9DC5; // 2166136261
+
195 
+
196  inline hash_t fnv1a(const unsigned char oneByte, hash_t hash = Seed) const
+
197  {
+
198  return (oneByte ^ hash) * Prime;
+
199  }
+
200 };
+
201 
+
207 template <>
+
208 class FNV1aHashFunc<const char *>
+
209 {
+
210  public:
+
211  hash_t operator()(const char *key) const
+
212  {
+
213  const unsigned int length = strlen(key);
+
214  hash_t hash = static_cast<hash_t>(Seed);
+
215  for (unsigned int i = 0; i < length; i++)
+
216  hash = fnv1a(key[i], hash);
+
217 
+
218  return hash;
+
219  }
+
220 
+
221  private:
+
222  static const hash_t Prime = 0x01000193; // 16777619
+
223  static const hash_t Seed = 0x811C9DC5; // 2166136261
+
224 
+
225  inline hash_t fnv1a(const char oneByte, hash_t hash = Seed) const
+
226  {
+
227  return (oneByte ^ hash) * Prime;
+
228  }
+
229 };
+
230 
+
232 
+
237 template <>
+ +
239 {
+
240  public:
+
241  hash_t operator()(const String &string) const
+
242  {
+
243  const unsigned int length = string.length();
+
244  hash_t hash = static_cast<hash_t>(Seed);
+
245  for (unsigned int i = 0; i < length; i++)
+
246  hash = fnv1a(static_cast<hash_t>(string[i]), hash);
+
247 
+
248  return hash;
+
249  }
+
250 
+
251  private:
+
252  static const hash_t Prime = 0x01000193; // 16777619
+
253  static const hash_t Seed = 0x811C9DC5; // 2166136261
+
254 
+
255  inline hash_t fnv1a(unsigned char oneByte, hash_t hash = Seed) const
+
256  {
+
257  return (oneByte ^ hash) * Prime;
+
258  }
+
259 };
+
260 
+
261 uint64_t fasthash64(const void *buf, size_t len, uint64_t seed);
+
262 uint32_t fasthash32(const void *buf, size_t len, uint32_t seed);
+
263 
+
265 
+
268 template <class K>
+ +
270 {
+
271  public:
+
272  hash_t operator()(const K &key) const
+
273  {
+
274  const unsigned char *bytes = reinterpret_cast<const unsigned char *>(&key);
+
275  const hash_t hash = fasthash32(bytes, sizeof(K), Seed);
+
276 
+
277  return hash;
+
278  }
+
279 
+
280  private:
+
281  static const uint64_t Seed = 0x01000193811C9DC5;
+
282 };
+
283 
+
285 
+
290 template <>
+
291 class FastHashFunc<const char *>
+
292 {
+
293  public:
+
294  hash_t operator()(const char *key) const { return fasthash32(key, strlen(key), Seed); }
+
295 
+
296  private:
+
297  static const uint32_t Seed = 0x811C9DC5;
+
298 };
+
299 
+
301 
+
306 template <>
+ +
308 {
+
309  public:
+
310  hash_t operator()(const String &string) const { return fasthash32(string.data(), string.length(), Seed); }
+
311 
+
312  private:
+
313  static const uint32_t Seed = 0x811C9DC5;
+
314 };
+
315 
+
316 }
+
317 
+
318 #endif
+
Fowler-Noll-Vo Hash (FNV-1a)
Definition: HashFunctions.h:180
+
fast-hash
Definition: HashFunctions.h:270
+
Hash function returning always the first hashmap bucket, for debug purposes.
Definition: HashFunctions.h:16
+
Hash function returning the key unchanged.
Definition: HashFunctions.h:33
+
Jenkins hash function.
Definition: HashFunctions.h:98
+
Hash function returning the modulo of the key, for debug purposes.
Definition: HashFunctions.h:24
+
Shift-Add-XOR hash function.
Definition: HashFunctions.h:41
+
A basic string class made of chars.
Definition: String.h:23
+
unsigned int length() const
Returns the string length.
Definition: String.h:104
+
+ + + + diff --git a/master/_hash_map_8h_source.html b/master/_hash_map_8h_source.html new file mode 100644 index 0000000000..8690c9ad61 --- /dev/null +++ b/master/_hash_map_8h_source.html @@ -0,0 +1,1044 @@ + + + + + + + +nCine: include/nctl/HashMap.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
HashMap.h
+
+
+
1 #ifndef CLASS_NCTL_HASHMAP
+
2 #define CLASS_NCTL_HASHMAP
+
3 
+
4 #include <new>
+
5 #include <ncine/common_macros.h>
+
6 #include "HashFunctions.h"
+
7 #include "ReverseIterator.h"
+
8 #include <cstring> // for memcpy()
+
9 #include <nctl/PointerMath.h>
+
10 
+
11 #include <ncine/config.h>
+
12 #if NCINE_WITH_ALLOCATORS
+
13  #include "AllocManager.h"
+
14  #include "IAllocator.h"
+
15 #endif
+
16 
+
17 namespace nctl {
+
18 
+
19 template <class K, class T, class HashFunc, bool IsConst> class HashMapIterator;
+
20 template <class K, class T, class HashFunc, bool IsConst> struct HashMapHelperTraits;
+
21 class String;
+
22 
+
24 template <class K, class T, class HashFunc = FNV1aHashFunc<K>>
+
25 class HashMap
+
26 {
+
27  public:
+ + + + +
36 
+
37  explicit HashMap(unsigned int capacity);
+
38 #if NCINE_WITH_ALLOCATORS
+
39  HashMap(unsigned int capacity, IAllocator &alloc);
+
40 #endif
+
41  ~HashMap();
+
42 
+
44  HashMap(const HashMap &other);
+
46  HashMap(HashMap &&other);
+
48  HashMap &operator=(const HashMap &other);
+ +
51 
+
53  inline void swap(HashMap &first, HashMap &second)
+
54  {
+
55 #if NCINE_WITH_ALLOCATORS
+
56  nctl::swap(first.alloc_, second.alloc_);
+
57 #endif
+
58  nctl::swap(first.size_, second.size_);
+
59  nctl::swap(first.capacity_, second.capacity_);
+
60  nctl::swap(first.buffer_, second.buffer_);
+
61  nctl::swap(first.delta1_, second.delta1_);
+
62  nctl::swap(first.delta2_, second.delta2_);
+
63  nctl::swap(first.hashes_, second.hashes_);
+
64  nctl::swap(first.nodes_, second.nodes_);
+
65  }
+
66 
+ + + + +
75 
+ + +
81  ConstIterator end() const;
+ +
84 
+
86  inline ConstIterator cBegin() const { return begin(); }
+
88  inline ConstReverseIterator crBegin() const { return rBegin(); }
+
90  inline ConstIterator cEnd() const { return end(); }
+
92  inline ConstReverseIterator crEnd() const { return rEnd(); }
+
93 
+
95  T &operator[](const K &key);
+
97  bool insert(const K &key, const T &value);
+
99  bool insert(const K &key, T &&value);
+
101  template <typename... Args> bool emplace(const K &key, Args &&... args);
+
102 
+
104  inline unsigned int capacity() const { return capacity_; }
+
106  inline bool isEmpty() const { return size_ == 0; }
+
108  inline unsigned int size() const { return size_; }
+
110  inline float loadFactor() const { return size_ / static_cast<float>(capacity_); }
+
112  inline hash_t hash(const K &key) const { return hashFunc_(key); }
+
113 
+
115  void clear();
+
117  bool contains(const K &key, T &returnedValue) const;
+
119  T *find(const K &key);
+
121  const T *find(const K &key) const;
+
123  bool remove(const K &key);
+
124 
+
126  void rehash(unsigned int count);
+
127 
+
128  private:
+
129  static const unsigned int AlignmentBytes = sizeof(int);
+
130 
+
132  class Node
+
133  {
+
134  public:
+
135  K key;
+
136  T value;
+
137 
+
138  Node() {}
+
139  explicit Node(K kk)
+
140  : key(kk) {}
+
141  Node(K kk, const T &vv)
+
142  : key(kk), value(vv) {}
+
143  Node(K kk, T &&vv)
+
144  : key(kk), value(nctl::move(vv)) {}
+
145  template <typename... Args>
+
146  Node(K kk, Args &&... args)
+
147  : key(kk), value(nctl::forward<Args>(args)...) {}
+
148  };
+
149 
+
150 #if NCINE_WITH_ALLOCATORS
+
152  IAllocator &alloc_;
+
153 #endif
+
154  unsigned int size_;
+
155  unsigned int capacity_;
+
157  uint8_t *buffer_;
+
158  uint8_t *delta1_;
+
159  uint8_t *delta2_;
+
160  hash_t *hashes_;
+
161  Node *nodes_;
+
162  HashFunc hashFunc_;
+
163 
+
164  void initPointers();
+
165  void initValues();
+
166  void destructNodes();
+
167  void deallocate();
+
168  bool findBucketIndex(const K &key, unsigned int &foundIndex, unsigned int &prevFoundIndex) const;
+
169  inline bool findBucketIndex(const K &key, unsigned int &foundIndex) const;
+
170  unsigned int addDelta1(unsigned int bucketIndex) const;
+
171  unsigned int addDelta2(unsigned int bucketIndex) const;
+
172  unsigned int calcNewDelta(unsigned int bucketIndex, unsigned int newIndex) const;
+
173  unsigned int linearSearch(unsigned int index, hash_t hash, const K &key) const;
+
174  bool bucketFoundOrEmpty(unsigned int index, hash_t hash, const K &key) const;
+
175  bool bucketFound(unsigned int index, hash_t hash, const K &key) const;
+
176  T &addNode(unsigned int index, hash_t hash, const K &key);
+
177  void insertNode(unsigned int index, hash_t hash, const K &key, const T &value);
+
178  void insertNode(unsigned int index, hash_t hash, const K &key, T &&value);
+
179  template <typename... Args> void emplaceNode(unsigned int index, hash_t hash, const K &key, Args &&... args);
+
180 
+
181  friend class HashMapIterator<K, T, HashFunc, false>;
+
182  friend class HashMapIterator<K, T, HashFunc, true>;
+
183  friend struct HashMapHelperTraits<K, T, HashFunc, false>;
+
184  friend struct HashMapHelperTraits<K, T, HashFunc, true>;
+
185 };
+
186 
+
187 template <class K, class T, class HashFunc>
+ +
189 {
+
190  Iterator iterator(this, Iterator::SentinelTagInit::BEGINNING);
+
191  return ++iterator;
+
192 }
+
193 
+
194 template <class K, class T, class HashFunc>
+ +
196 {
+
197  Iterator iterator(this, Iterator::SentinelTagInit::END);
+
198  return ReverseIterator(--iterator);
+
199 }
+
200 
+
201 template <class K, class T, class HashFunc>
+ +
203 {
+
204  return Iterator(this, Iterator::SentinelTagInit::END);
+
205 }
+
206 
+
207 template <class K, class T, class HashFunc>
+ +
209 {
+
210  Iterator iterator(this, Iterator::SentinelTagInit::BEGINNING);
+
211  return ReverseIterator(iterator);
+
212 }
+
213 
+
214 template <class K, class T, class HashFunc>
+ +
216 {
+
217  ConstIterator iterator(this, ConstIterator::SentinelTagInit::BEGINNING);
+
218  return ++iterator;
+
219 }
+
220 
+
221 template <class K, class T, class HashFunc>
+ +
223 {
+
224  ConstIterator iterator(this, ConstIterator::SentinelTagInit::END);
+
225  return ConstReverseIterator(--iterator);
+
226 }
+
227 
+
228 template <class K, class T, class HashFunc>
+ +
230 {
+
231  return ConstIterator(this, ConstIterator::SentinelTagInit::END);
+
232 }
+
233 
+
234 template <class K, class T, class HashFunc>
+ +
236 {
+
237  ConstIterator iterator(this, ConstIterator::SentinelTagInit::BEGINNING);
+
238  return ConstReverseIterator(iterator);
+
239 }
+
240 
+
241 template <class K, class T, class HashFunc>
+
242 HashMap<K, T, HashFunc>::HashMap(unsigned int capacity)
+
243  :
+
244 #if NCINE_WITH_ALLOCATORS
+
245  alloc_(theDefaultAllocator()),
+
246 #endif
+
247  size_(0), capacity_(capacity), buffer_(nullptr),
+
248  delta1_(nullptr), delta2_(nullptr), hashes_(nullptr), nodes_(nullptr)
+
249 {
+
250  FATAL_ASSERT_MSG(capacity > 0, "Zero is not a valid capacity");
+
251 
+
252  const unsigned int bytes = capacity_ * (sizeof(uint8_t) * 2 + sizeof(hash_t));
+
253  const unsigned int alignedBytes = bytes + 3 * AlignmentBytes; // 3 align adjustments in `initPointers()`
+
254 #if !NCINE_WITH_ALLOCATORS
+
255  buffer_ = static_cast<uint8_t *>(::operator new(alignedBytes));
+
256  nodes_ = static_cast<Node *>(::operator new(sizeof(Node) * capacity_));
+
257 #else
+
258  buffer_ = static_cast<uint8_t *>(alloc_.allocate(alignedBytes));
+
259  nodes_ = static_cast<Node *>(alloc_.allocate(sizeof(Node) * capacity_));
+
260 #endif
+
261 
+
262  uint8_t *pointer = buffer_;
+
263  delta1_ = pointer;
+
264  pointer += sizeof(uint8_t) * capacity_;
+
265  delta2_ = pointer;
+
266  pointer += sizeof(uint8_t) * capacity_;
+
267  hashes_ = reinterpret_cast<hash_t *>(pointer);
+
268  pointer += sizeof(hash_t) * capacity_;
+
269  FATAL_ASSERT(pointer == buffer_ + bytes);
+
270 
+
271  initValues();
+
272 }
+
273 
+
274 #if NCINE_WITH_ALLOCATORS
+
275 template <class K, class T, class HashFunc>
+
276 HashMap<K, T, HashFunc>::HashMap(unsigned int capacity, IAllocator &alloc)
+
277  : alloc_(alloc), size_(0), capacity_(capacity), buffer_(nullptr),
+
278  delta1_(nullptr), delta2_(nullptr), hashes_(nullptr), nodes_(nullptr)
+
279 {
+
280  FATAL_ASSERT_MSG(capacity > 0, "Zero is not a valid capacity");
+
281 
+
282  const unsigned int bytes = capacity_ * (sizeof(uint8_t) * 2 + sizeof(hash_t));
+
283  buffer_ = static_cast<uint8_t *>(alloc_.allocate(bytes));
+
284  nodes_ = static_cast<Node *>(alloc_.allocate(sizeof(Node) * capacity_));
+
285 
+
286  initPointers();
+
287  initValues();
+
288 }
+
289 #endif
+
290 
+
291 template <class K, class T, class HashFunc>
+
292 HashMap<K, T, HashFunc>::~HashMap()
+
293 {
+
294  destructNodes();
+
295  deallocate();
+
296 }
+
297 
+
298 template <class K, class T, class HashFunc>
+ +
300  :
+
301 #if NCINE_WITH_ALLOCATORS
+
302  alloc_(other.alloc_),
+
303 #endif
+
304  size_(other.size_), capacity_(other.capacity_), buffer_(nullptr),
+
305  delta1_(nullptr), delta2_(nullptr), hashes_(nullptr), nodes_(nullptr)
+
306 {
+
307  const unsigned int bytes = capacity_ * (sizeof(uint8_t) * 2 + sizeof(hash_t));
+
308  const unsigned int alignedBytes = bytes + 3 * AlignmentBytes; // 3 align adjustments in `initPointers()`
+
309 #if !NCINE_WITH_ALLOCATORS
+
310  buffer_ = static_cast<uint8_t *>(::operator new(alignedBytes));
+
311  nodes_ = static_cast<Node *>(::operator new(sizeof(Node) * capacity_));
+
312 #else
+
313  buffer_ = static_cast<uint8_t *>(alloc_.allocate(alignedBytes));
+
314  nodes_ = static_cast<Node *>(alloc_.allocate(sizeof(Node) * capacity_));
+
315 #endif
+
316  memcpy(buffer_, other.buffer_, bytes);
+
317  initPointers();
+
318 
+
319  for (unsigned int i = 0; i < capacity_; i++)
+
320  {
+
321  if (other.hashes_[i] != NullHash)
+
322  new (nodes_ + i) Node(other.nodes_[i]);
+
323  }
+
324 }
+
325 
+
326 template <class K, class T, class HashFunc>
+ +
328  :
+
329 #if NCINE_WITH_ALLOCATORS
+
330  alloc_(other.alloc_),
+
331 #endif
+
332  size_(other.size_), capacity_(other.capacity_), buffer_(other.buffer_),
+
333  delta1_(other.delta1_), delta2_(other.delta2_), hashes_(other.hashes_), nodes_(other.nodes_)
+
334 {
+
335  other.size_ = 0;
+
336  other.capacity_ = 0;
+
337  other.buffer_ = nullptr;
+
338  other.delta1_ = nullptr;
+
339  other.delta2_ = nullptr;
+
340  other.hashes_ = nullptr;
+
341  other.nodes_ = nullptr;
+
342 }
+
343 
+
344 template <class K, class T, class HashFunc>
+ +
346 {
+
347  if (this == &other)
+
348  return *this;
+
349 
+
350  if (other.size_ > capacity_)
+
351  {
+
352  destructNodes();
+
353  deallocate();
+
354 
+
355  capacity_ = other.capacity_;
+
356  const unsigned int bytes = capacity_ * (sizeof(uint8_t) * 2 + sizeof(hash_t));
+
357  const unsigned int alignedBytes = bytes + 3 * AlignmentBytes; // 3 align adjustments in `initPointers()`
+
358 #if !NCINE_WITH_ALLOCATORS
+
359  buffer_ = static_cast<uint8_t *>(::operator new(alignedBytes));
+
360  nodes_ = static_cast<Node *>(::operator new(sizeof(Node) * capacity_));
+
361 #else
+
362  buffer_ = static_cast<uint8_t *>(alloc_.allocate(alignedBytes));
+
363  nodes_ = static_cast<Node *>(alloc_.allocate(sizeof(Node) * capacity_));
+
364 #endif
+
365  initPointers();
+
366  }
+
367 
+
368  for (unsigned int i = 0; i < capacity_; i++)
+
369  {
+
370  if (other.hashes_[i] != NullHash)
+
371  {
+
372  if (hashes_[i] != NullHash)
+
373  nodes_[i] = other.nodes_[i];
+
374  else
+
375  new (nodes_ + i) Node(other.nodes_[i]);
+
376  }
+
377  else if (hashes_[i] != NullHash)
+
378  destructObject(nodes_ + i);
+
379 
+
380  delta1_[i] = other.delta1_[i];
+
381  delta2_[i] = other.delta2_[i];
+
382  hashes_[i] = other.hashes_[i];
+
383  }
+
384  size_ = other.size_;
+
385 
+
386  return *this;
+
387 }
+
388 
+
389 template <class K, class T, class HashFunc>
+ +
391 {
+
392  if (this != &other)
+
393  {
+
394  swap(*this, other);
+
395  other.clear();
+
396  }
+
397  return *this;
+
398 }
+
399 
+
400 template <class K, class T, class HashFunc>
+ +
402 {
+
403  const hash_t hash = hashFunc_(key);
+
404  int unsigned bucketIndex = hash % capacity_;
+
405 
+
406  if (bucketFoundOrEmpty(bucketIndex, hash, key) == false)
+
407  {
+
408  if (delta1_[bucketIndex] != 0)
+
409  {
+
410  bucketIndex = addDelta1(bucketIndex);
+
411  if (bucketFound(bucketIndex, hash, key) == false)
+
412  {
+
413  while (delta2_[bucketIndex] != 0)
+
414  {
+
415  bucketIndex = addDelta2(bucketIndex);
+
416  // Found at ideal index + delta1 + (n * delta2)
+
417  if (bucketFound(bucketIndex, hash, key))
+
418  return nodes_[bucketIndex].value;
+
419  }
+
420 
+
421  // Adding at ideal index + delta1 + (n * delta2)
+
422  const unsigned int newIndex = linearSearch(bucketIndex + 1, hash, key);
+
423  delta2_[bucketIndex] = calcNewDelta(bucketIndex, newIndex);
+
424  return addNode(newIndex, hash, key);
+
425  }
+
426  else
+
427  {
+
428  // Found at ideal index + delta1
+
429  return nodes_[bucketIndex].value;
+
430  }
+
431  }
+
432  else
+
433  {
+
434  // Adding at ideal index + delta1
+
435  const unsigned int newIndex = linearSearch(bucketIndex + 1, hash, key);
+
436  delta1_[bucketIndex] = calcNewDelta(bucketIndex, newIndex);
+
437  return addNode(newIndex, hash, key);
+
438  }
+
439  }
+
440  else
+
441  {
+
442  // Using the ideal bucket index for the node
+
443  if (hashes_[bucketIndex] == NullHash)
+
444  return addNode(bucketIndex, hash, key);
+
445  else
+
446  return nodes_[bucketIndex].value;
+
447  }
+
448 }
+
449 
+
451 template <class K, class T, class HashFunc>
+
452 bool HashMap<K, T, HashFunc>::insert(const K &key, const T &value)
+
453 {
+
454  const hash_t hash = hashFunc_(key);
+
455  int unsigned bucketIndex = hash % capacity_;
+
456 
+
457  if (bucketFoundOrEmpty(bucketIndex, hash, key) == false)
+
458  {
+
459  if (delta1_[bucketIndex] != 0)
+
460  {
+
461  bucketIndex = addDelta1(bucketIndex);
+
462  if (bucketFound(bucketIndex, hash, key) == false)
+
463  {
+
464  while (delta2_[bucketIndex] != 0)
+
465  {
+
466  bucketIndex = addDelta2(bucketIndex);
+
467  // Found at ideal index + delta1 + (n * delta2)
+
468  if (bucketFound(bucketIndex, hash, key))
+
469  return false;
+
470  }
+
471 
+
472  // Adding at ideal index + delta1 + (n * delta2)
+
473  const unsigned int newIndex = linearSearch(bucketIndex + 1, hash, key);
+
474  delta2_[bucketIndex] = calcNewDelta(bucketIndex, newIndex);
+
475  insertNode(newIndex, hash, key, value);
+
476  return true;
+
477  }
+
478  else
+
479  {
+
480  // Found at ideal index + delta1
+
481  return false;
+
482  }
+
483  }
+
484  else
+
485  {
+
486  // Adding at ideal index + delta1
+
487  const unsigned int newIndex = linearSearch(bucketIndex + 1, hash, key);
+
488  delta1_[bucketIndex] = calcNewDelta(bucketIndex, newIndex);
+
489  insertNode(newIndex, hash, key, value);
+
490  return true;
+
491  }
+
492  }
+
493  else
+
494  {
+
495  // Using the ideal bucket index for the node
+
496  if (hashes_[bucketIndex] == NullHash)
+
497  {
+
498  insertNode(bucketIndex, hash, key, value);
+
499  return true;
+
500  }
+
501  else
+
502  return false;
+
503  }
+
504 }
+
505 
+
507 template <class K, class T, class HashFunc>
+
508 bool HashMap<K, T, HashFunc>::insert(const K &key, T &&value)
+
509 {
+
510  const hash_t hash = hashFunc_(key);
+
511  int unsigned bucketIndex = hash % capacity_;
+
512 
+
513  if (bucketFoundOrEmpty(bucketIndex, hash, key) == false)
+
514  {
+
515  if (delta1_[bucketIndex] != 0)
+
516  {
+
517  bucketIndex = addDelta1(bucketIndex);
+
518  if (bucketFound(bucketIndex, hash, key) == false)
+
519  {
+
520  while (delta2_[bucketIndex] != 0)
+
521  {
+
522  bucketIndex = addDelta2(bucketIndex);
+
523  // Found at ideal index + delta1 + (n * delta2)
+
524  if (bucketFound(bucketIndex, hash, key))
+
525  return false;
+
526  }
+
527 
+
528  // Adding at ideal index + delta1 + (n * delta2)
+
529  const unsigned int newIndex = linearSearch(bucketIndex + 1, hash, key);
+
530  delta2_[bucketIndex] = calcNewDelta(bucketIndex, newIndex);
+
531  insertNode(newIndex, hash, key, nctl::move(value));
+
532  return true;
+
533  }
+
534  else
+
535  {
+
536  // Found at ideal index + delta1
+
537  return false;
+
538  }
+
539  }
+
540  else
+
541  {
+
542  // Adding at ideal index + delta1
+
543  const unsigned int newIndex = linearSearch(bucketIndex + 1, hash, key);
+
544  delta1_[bucketIndex] = calcNewDelta(bucketIndex, newIndex);
+
545  insertNode(newIndex, hash, key, nctl::move(value));
+
546  return true;
+
547  }
+
548  }
+
549  else
+
550  {
+
551  // Using the ideal bucket index for the node
+
552  if (hashes_[bucketIndex] == NullHash)
+
553  {
+
554  insertNode(bucketIndex, hash, key, nctl::move(value));
+
555  return true;
+
556  }
+
557  else
+
558  return false;
+
559  }
+
560 }
+
561 
+
563 template <class K, class T, class HashFunc>
+
564 template <typename... Args>
+
565 bool HashMap<K, T, HashFunc>::emplace(const K &key, Args &&... args)
+
566 {
+
567  const hash_t hash = hashFunc_(key);
+
568  int unsigned bucketIndex = hash % capacity_;
+
569 
+
570  if (bucketFoundOrEmpty(bucketIndex, hash, key) == false)
+
571  {
+
572  if (delta1_[bucketIndex] != 0)
+
573  {
+
574  bucketIndex = addDelta1(bucketIndex);
+
575  if (bucketFound(bucketIndex, hash, key) == false)
+
576  {
+
577  while (delta2_[bucketIndex] != 0)
+
578  {
+
579  bucketIndex = addDelta2(bucketIndex);
+
580  // Found at ideal index + delta1 + (n * delta2)
+
581  if (bucketFound(bucketIndex, hash, key))
+
582  return false;
+
583  }
+
584 
+
585  // Adding at ideal index + delta1 + (n * delta2)
+
586  const unsigned int newIndex = linearSearch(bucketIndex + 1, hash, key);
+
587  delta2_[bucketIndex] = calcNewDelta(bucketIndex, newIndex);
+
588  emplaceNode(newIndex, hash, key, nctl::forward<Args>(args)...);
+
589  return true;
+
590  }
+
591  else
+
592  {
+
593  // Found at ideal index + delta1
+
594  return false;
+
595  }
+
596  }
+
597  else
+
598  {
+
599  // Adding at ideal index + delta1
+
600  const unsigned int newIndex = linearSearch(bucketIndex + 1, hash, key);
+
601  delta1_[bucketIndex] = calcNewDelta(bucketIndex, newIndex);
+
602  emplaceNode(newIndex, hash, key, nctl::forward<Args>(args)...);
+
603  return true;
+
604  }
+
605  }
+
606  else
+
607  {
+
608  // Using the ideal bucket index for the node
+
609  if (hashes_[bucketIndex] == NullHash)
+
610  {
+
611  emplaceNode(bucketIndex, hash, key, nctl::forward<Args>(args)...);
+
612  return true;
+
613  }
+
614  else
+
615  return false;
+
616  }
+
617 }
+
618 
+
619 template <class K, class T, class HashFunc>
+ +
621 {
+
622  destructNodes();
+
623  initValues();
+
624 }
+
625 
+
626 template <class K, class T, class HashFunc>
+
627 bool HashMap<K, T, HashFunc>::contains(const K &key, T &returnedValue) const
+
628 {
+
629  int unsigned bucketIndex = 0;
+
630  const bool found = findBucketIndex(key, bucketIndex);
+
631 
+
632  if (found)
+
633  returnedValue = nodes_[bucketIndex].value;
+
634 
+
635  return found;
+
636 }
+
637 
+
639 template <class K, class T, class HashFunc>
+ +
641 {
+
642  int unsigned bucketIndex = 0;
+
643  const bool found = findBucketIndex(key, bucketIndex);
+
644 
+
645  T *returnedPtr = nullptr;
+
646  if (found)
+
647  returnedPtr = &nodes_[bucketIndex].value;
+
648 
+
649  return returnedPtr;
+
650 }
+
651 
+
653 template <class K, class T, class HashFunc>
+
654 const T *HashMap<K, T, HashFunc>::find(const K &key) const
+
655 {
+
656  int unsigned bucketIndex = 0;
+
657  const bool found = findBucketIndex(key, bucketIndex);
+
658 
+
659  const T *returnedPtr = nullptr;
+
660  if (found)
+
661  returnedPtr = &nodes_[bucketIndex].value;
+
662 
+
663  return returnedPtr;
+
664 }
+
665 
+
667 template <class K, class T, class HashFunc>
+ +
669 {
+
670  int unsigned foundBucketIndex = 0;
+
671  int unsigned prevFoundBucketIndex = 0;
+
672  const bool found = findBucketIndex(key, foundBucketIndex, prevFoundBucketIndex);
+
673  unsigned int bucketIndex = foundBucketIndex;
+
674 
+
675  if (found)
+
676  {
+
677  // The found bucket is the last of the chain, previous one needs a delta fix
+
678  if (foundBucketIndex != hashes_[foundBucketIndex] % capacity_ && delta2_[foundBucketIndex] == 0)
+
679  {
+
680  if (addDelta1(prevFoundBucketIndex) == foundBucketIndex)
+
681  delta1_[prevFoundBucketIndex] = 0;
+
682  else if (addDelta2(prevFoundBucketIndex) == foundBucketIndex)
+
683  delta2_[prevFoundBucketIndex] = 0;
+
684  }
+
685 
+
686  while (delta1_[bucketIndex] != 0 || delta2_[bucketIndex] != 0)
+
687  {
+
688  unsigned int lastBucketIndex = bucketIndex;
+
689  if (delta1_[lastBucketIndex] != 0)
+
690  lastBucketIndex = addDelta1(lastBucketIndex);
+
691  if (delta2_[lastBucketIndex] != 0)
+
692  {
+
693  unsigned int secondLastBucketIndex = lastBucketIndex;
+
694  while (delta2_[lastBucketIndex] != 0)
+
695  {
+
696  secondLastBucketIndex = lastBucketIndex;
+
697  lastBucketIndex = addDelta2(lastBucketIndex);
+
698  }
+
699  delta2_[secondLastBucketIndex] = 0;
+
700  }
+
701  else
+
702  delta1_[bucketIndex] = 0;
+
703 
+
704  if (bucketIndex != lastBucketIndex)
+
705  {
+
706  nodes_[bucketIndex].key = nctl::move(nodes_[lastBucketIndex].key);
+
707  nodes_[bucketIndex].value = nctl::move(nodes_[lastBucketIndex].value);
+
708  hashes_[bucketIndex] = hashes_[lastBucketIndex];
+
709  }
+
710 
+
711  bucketIndex = lastBucketIndex;
+
712  }
+
713 
+
714  hashes_[bucketIndex] = NullHash;
+
715  destructObject(nodes_ + bucketIndex);
+
716  size_--;
+
717  }
+
718 
+
719  return found;
+
720 }
+
721 
+
722 template <class K, class T, class HashFunc>
+
723 void HashMap<K, T, HashFunc>::rehash(unsigned int count)
+
724 {
+
725  if (size_ == 0 || count < size_)
+
726  return;
+
727 
+
728  HashMap<K, T, HashFunc> hashMap(count);
+
729 
+
730  unsigned int rehashedNodes = 0;
+
731  for (unsigned int i = 0; i < capacity_; i++)
+
732  {
+
733  if (hashes_[i] != NullHash)
+
734  {
+
735  Node &node = nodes_[i];
+
736  hashMap.insert(node.key, nctl::move(node.value));
+
737 
+
738  rehashedNodes++;
+
739  if (rehashedNodes == size_)
+
740  break;
+
741  }
+
742  }
+
743 
+
744  *this = nctl::move(hashMap);
+
745 }
+
746 
+
747 template <class K, class T, class HashFunc>
+ +
749 {
+
750  unsigned int alignAdjustment = PointerMath::alignAdjustment(buffer_, AlignmentBytes);
+
751  uint8_t *pointer = reinterpret_cast<uint8_t*>(PointerMath::align(buffer_, AlignmentBytes));
+
752  delta1_ = pointer;
+
753  pointer += sizeof(uint8_t) * capacity_;
+
754 
+
755  alignAdjustment += PointerMath::alignAdjustment(pointer, AlignmentBytes);
+
756  pointer = reinterpret_cast<uint8_t*>(PointerMath::align(pointer, AlignmentBytes));
+
757  delta2_ = pointer;
+
758  pointer += sizeof(uint8_t) * capacity_;
+
759 
+
760  alignAdjustment += PointerMath::alignAdjustment(pointer, AlignmentBytes);
+
761  pointer = reinterpret_cast<uint8_t*>(PointerMath::align(pointer, AlignmentBytes));
+
762  hashes_ = reinterpret_cast<hash_t *>(pointer);
+
763  pointer += sizeof(hash_t) * capacity_;
+
764 
+
765  const unsigned int bytes = capacity_ * (sizeof(uint8_t) * 2 + sizeof(hash_t));
+
766  FATAL_ASSERT(pointer == buffer_ + bytes + alignAdjustment);
+
767 }
+
768 
+
769 template <class K, class T, class HashFunc>
+
770 void HashMap<K, T, HashFunc>::initValues()
+
771 {
+
772  for (unsigned int i = 0; i < capacity_; i++)
+
773  delta1_[i] = 0;
+
774  for (unsigned int i = 0; i < capacity_; i++)
+
775  delta2_[i] = 0;
+
776  for (unsigned int i = 0; i < capacity_; i++)
+
777  hashes_[i] = NullHash;
+
778 }
+
779 
+
780 template <class K, class T, class HashFunc>
+
781 void HashMap<K, T, HashFunc>::destructNodes()
+
782 {
+
783  for (unsigned int i = 0; i < capacity_; i++)
+
784  {
+
785  if (hashes_[i] != NullHash)
+
786  {
+
787  destructObject(nodes_ + i);
+
788  hashes_[i] = NullHash;
+
789  }
+
790  }
+
791  size_ = 0;
+
792 }
+
793 
+
794 template <class K, class T, class HashFunc>
+
795 void HashMap<K, T, HashFunc>::deallocate()
+
796 {
+
797 #if !NCINE_WITH_ALLOCATORS
+
798  ::operator delete(buffer_);
+
799  ::operator delete(nodes_);
+
800 #else
+
801  alloc_.deallocate(buffer_);
+
802  alloc_.deallocate(nodes_);
+
803 #endif
+
804 }
+
805 
+
806 template <class K, class T, class HashFunc>
+
807 bool HashMap<K, T, HashFunc>::findBucketIndex(const K &key, unsigned int &foundIndex, unsigned int &prevFoundIndex) const
+
808 {
+
809  if (size_ == 0)
+
810  return false;
+
811 
+
812  bool found = false;
+
813  const hash_t hash = hashFunc_(key);
+
814  foundIndex = hash % capacity_;
+
815  prevFoundIndex = foundIndex;
+
816 
+
817  if (bucketFoundOrEmpty(foundIndex, hash, key) == false)
+
818  {
+
819  if (delta1_[foundIndex] != 0)
+
820  {
+
821  prevFoundIndex = foundIndex;
+
822  foundIndex = addDelta1(foundIndex);
+
823  if (bucketFound(foundIndex, hash, key) == false)
+
824  {
+
825  while (delta2_[foundIndex] != 0)
+
826  {
+
827  prevFoundIndex = foundIndex;
+
828  foundIndex = addDelta2(foundIndex);
+
829  if (bucketFound(foundIndex, hash, key))
+
830  {
+
831  // Found at ideal index + delta1 + (n * delta2)
+
832  found = true;
+
833  break;
+
834  }
+
835  }
+
836  }
+
837  else
+
838  {
+
839  // Found at ideal index + delta1
+
840  found = true;
+
841  }
+
842  }
+
843  }
+
844  else
+
845  {
+
846  if (hashes_[foundIndex] != NullHash)
+
847  {
+
848  // Found at ideal bucket index
+
849  found = true;
+
850  }
+
851  }
+
852 
+
853  return found;
+
854 }
+
855 
+
856 template <class K, class T, class HashFunc>
+
857 bool HashMap<K, T, HashFunc>::findBucketIndex(const K &key, unsigned int &foundIndex) const
+
858 {
+
859  unsigned int prevFoundIndex = 0;
+
860  return findBucketIndex(key, foundIndex, prevFoundIndex);
+
861 }
+
862 
+
863 template <class K, class T, class HashFunc>
+
864 unsigned int HashMap<K, T, HashFunc>::addDelta1(unsigned int bucketIndex) const
+
865 {
+
866  unsigned int newIndex = bucketIndex + delta1_[bucketIndex];
+
867  if (newIndex > capacity_ - 1)
+
868  newIndex -= capacity_;
+
869  return newIndex;
+
870 }
+
871 
+
872 template <class K, class T, class HashFunc>
+
873 unsigned int HashMap<K, T, HashFunc>::addDelta2(unsigned int bucketIndex) const
+
874 {
+
875  unsigned int newIndex = bucketIndex + delta2_[bucketIndex];
+
876  if (newIndex > capacity_ - 1)
+
877  newIndex -= capacity_;
+
878  return newIndex;
+
879 }
+
880 
+
881 template <class K, class T, class HashFunc>
+
882 unsigned int HashMap<K, T, HashFunc>::calcNewDelta(unsigned int bucketIndex, unsigned int newIndex) const
+
883 {
+
884  unsigned int delta = 0;
+
885  if (newIndex >= bucketIndex)
+
886  delta = newIndex - bucketIndex;
+
887  else
+
888  delta = capacity_ - bucketIndex + newIndex;
+
889 
+
890  FATAL_ASSERT(delta < 256); // deltas are uint8_t
+
891  return delta;
+
892 }
+
893 
+
894 template <class K, class T, class HashFunc>
+
895 unsigned int HashMap<K, T, HashFunc>::linearSearch(unsigned int index, hash_t hash, const K &key) const
+
896 {
+
897  for (unsigned int i = index; i < capacity_; i++)
+
898  {
+
899  if (bucketFoundOrEmpty(i, hash, key))
+
900  return i;
+
901  }
+
902 
+
903  for (unsigned int i = 0; i < index; i++)
+
904  {
+
905  if (bucketFoundOrEmpty(i, hash, key))
+
906  return i;
+
907  }
+
908 
+
909  return index;
+
910 }
+
911 
+
912 template <class K, class T, class HashFunc>
+
913 bool HashMap<K, T, HashFunc>::bucketFoundOrEmpty(unsigned int index, hash_t hash, const K &key) const
+
914 {
+
915  return (hashes_[index] == NullHash || (hashes_[index] == hash && equalTo(nodes_[index].key, key)));
+
916 }
+
917 
+
918 template <class K, class T, class HashFunc>
+
919 bool HashMap<K, T, HashFunc>::bucketFound(unsigned int index, hash_t hash, const K &key) const
+
920 {
+
921  return (hashes_[index] == hash && equalTo(nodes_[index].key, key));
+
922 }
+
923 
+
924 template <class K, class T, class HashFunc>
+
925 T &HashMap<K, T, HashFunc>::addNode(unsigned int index, hash_t hash, const K &key)
+
926 {
+
927  FATAL_ASSERT(size_ < capacity_);
+
928  FATAL_ASSERT(hashes_[index] == NullHash);
+
929 
+
930  size_++;
+
931  hashes_[index] = hash;
+
932  new (nodes_ + index) Node(key);
+
933 
+
934  return nodes_[index].value;
+
935 }
+
936 
+
937 template <class K, class T, class HashFunc>
+
938 void HashMap<K, T, HashFunc>::insertNode(unsigned int index, hash_t hash, const K &key, const T &value)
+
939 {
+
940  FATAL_ASSERT(size_ < capacity_);
+
941  FATAL_ASSERT(hashes_[index] == NullHash);
+
942 
+
943  size_++;
+
944  hashes_[index] = hash;
+
945  new (nodes_ + index) Node(key, value);
+
946 }
+
947 
+
948 template <class K, class T, class HashFunc>
+
949 void HashMap<K, T, HashFunc>::insertNode(unsigned int index, hash_t hash, const K &key, T &&value)
+
950 {
+
951  FATAL_ASSERT(size_ < capacity_);
+
952  FATAL_ASSERT(hashes_[index] == NullHash);
+
953 
+
954  size_++;
+
955  hashes_[index] = hash;
+
956  new (nodes_ + index) Node(key, nctl::move(value));
+
957 }
+
958 
+
959 template <class K, class T, class HashFunc>
+
960 template <typename... Args>
+
961 void HashMap<K, T, HashFunc>::emplaceNode(unsigned int index, hash_t hash, const K &key, Args &&... args)
+
962 {
+
963  FATAL_ASSERT(size_ < capacity_);
+
964  FATAL_ASSERT(hashes_[index] == NullHash);
+
965 
+
966  size_++;
+
967  hashes_[index] = hash;
+
968  new (nodes_ + index) Node(key, nctl::forward<Args>(args)...);
+
969 }
+
970 
+
971 }
+
972 
+
973 #endif
+
A template based hashmap implementation with open addressing and leapfrog probing.
Definition: HashMap.h:26
+
ConstIterator end() const
Returns a constant iterator to past the last lement.
Definition: HashMap.h:229
+
ConstReverseIterator crEnd() const
Returns a constant reverse iterator to prior the first element.
Definition: HashMap.h:92
+
hash_t hash(const K &key) const
Returns the hash of a given key.
Definition: HashMap.h:112
+
void swap(HashMap &first, HashMap &second)
Swaps two hashmaps without copying their data.
Definition: HashMap.h:53
+
Iterator begin()
Returns an iterator to the first element.
Definition: HashMap.h:188
+
bool remove(const K &key)
Removes a key from the hashmap, if it exists.
Definition: HashMap.h:668
+
ConstReverseIterator rEnd() const
Returns a constant reverse iterator to prior the first element.
Definition: HashMap.h:235
+
bool insert(const K &key, T &&value)
Moves an element if no other has the same key.
Definition: HashMap.h:508
+
HashMap & operator=(const HashMap &other)
Assignment operator.
Definition: HashMap.h:345
+
bool contains(const K &key, T &returnedValue) const
Checks whether an element is in the hashmap or not.
Definition: HashMap.h:627
+
bool emplace(const K &key, Args &&... args)
Constructs an element if no other has the same key.
Definition: HashMap.h:565
+
ConstReverseIterator rBegin() const
Returns a constant reverse iterator to the last element.
Definition: HashMap.h:222
+
HashMap & operator=(HashMap &&other)
Move assignment operator.
Definition: HashMap.h:390
+
bool isEmpty() const
Returns true if the hashmap is empty.
Definition: HashMap.h:106
+
Iterator end()
Returns an iterator to past the last element.
Definition: HashMap.h:202
+
unsigned int capacity() const
Returns the capacity of the hashmap.
Definition: HashMap.h:104
+
ReverseIterator rBegin()
Returns a reverse iterator to the last element.
Definition: HashMap.h:195
+
ConstIterator cEnd() const
Returns a constant iterator to past the last lement.
Definition: HashMap.h:90
+
T & operator[](const K &key)
Subscript operator.
Definition: HashMap.h:401
+
ConstIterator cBegin() const
Returns a constant iterator to the first element.
Definition: HashMap.h:86
+
HashMap(HashMap &&other)
Move constructor.
Definition: HashMap.h:327
+
HashMap(const HashMap &other)
Copy constructor.
Definition: HashMap.h:299
+
void rehash(unsigned int count)
Sets the number of buckets to the new specified size and rehashes the container.
Definition: HashMap.h:723
+
bool insert(const K &key, const T &value)
Inserts an element if no other has the same key.
Definition: HashMap.h:452
+
unsigned int size() const
Returns the number of elements in the hashmap.
Definition: HashMap.h:108
+
T * find(const K &key)
Checks whether an element is in the hashmap or not.
Definition: HashMap.h:640
+
const T * find(const K &key) const
Checks whether an element is in the hashmap or not (read-only)
Definition: HashMap.h:654
+
ReverseIterator rEnd()
Returns a reverse iterator to prior the first element.
Definition: HashMap.h:208
+
ConstReverseIterator crBegin() const
Returns a constant reverse iterator to the last element.
Definition: HashMap.h:88
+
float loadFactor() const
Returns the ratio between used and total buckets.
Definition: HashMap.h:110
+
void clear()
Clears the hashmap.
Definition: HashMap.h:620
+
ConstIterator begin() const
Returns a constant iterator to the first element.
Definition: HashMap.h:215
+
A hashmap iterator.
Definition: HashMapIterator.h:33
+
The allocator interface.
Definition: IAllocator.h:18
+
A generic reverse iterator.
Definition: ReverseIterator.h:11
+
+ + + + diff --git a/master/_hash_map_iterator_8h_source.html b/master/_hash_map_iterator_8h_source.html new file mode 100644 index 0000000000..156cdb4a89 --- /dev/null +++ b/master/_hash_map_iterator_8h_source.html @@ -0,0 +1,353 @@ + + + + + + + +nCine: include/nctl/HashMapIterator.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
HashMapIterator.h
+
+
+
1 #ifndef CLASS_NCTL_HASHMAPITERATOR
+
2 #define CLASS_NCTL_HASHMAPITERATOR
+
3 
+
4 #include "HashMap.h"
+
5 #include "iterator.h"
+
6 
+
7 namespace nctl {
+
8 
+
10 template <class K, class T, class HashFunc, bool IsConst>
+ +
12 {};
+
13 
+
15 template <class K, class T, class HashFunc>
+
16 struct HashMapHelperTraits<K, T, HashFunc, false>
+
17 {
+ +
19  using NodeReference = typename HashMap<K, T, HashFunc>::Node &;
+
20 };
+
21 
+
23 template <class K, class T, class HashFunc>
+
24 struct HashMapHelperTraits<K, T, HashFunc, true>
+
25 {
+
26  using HashMapPtr = const HashMap<K, T, HashFunc> *;
+
27  using NodeReference = const typename HashMap<K, T, HashFunc>::Node &;
+
28 };
+
29 
+
31 template <class K, class T, class HashFunc, bool IsConst>
+ +
33 {
+
34  public:
+ +
37 
+
39  enum class SentinelTagInit
+
40  {
+
42  BEGINNING,
+
44  END
+
45  };
+
46 
+
47  HashMapIterator(typename HashMapHelperTraits<K, T, HashFunc, IsConst>::HashMapPtr hashMap, unsigned int bucketIndex)
+
48  : hashMap_(hashMap), bucketIndex_(bucketIndex), tag_(SentinelTag::REGULAR) {}
+
49 
+
50  HashMapIterator(typename HashMapHelperTraits<K, T, HashFunc, IsConst>::HashMapPtr hashMap, SentinelTagInit tag);
+
51 
+ +
54  : hashMap_(it.hashMap_), bucketIndex_(it.bucketIndex_), tag_(SentinelTag(it.tag_)) {}
+
55 
+
57  Reference operator*() const;
+
58 
+ + +
63 
+ + +
68 
+
70  friend inline bool operator==(const HashMapIterator &lhs, const HashMapIterator &rhs)
+
71  {
+
72  if (lhs.tag_ == SentinelTag::REGULAR && rhs.tag_ == SentinelTag::REGULAR)
+
73  return (lhs.hashMap_ == rhs.hashMap_ && lhs.bucketIndex_ == rhs.bucketIndex_);
+
74  else
+
75  return (lhs.tag_ == rhs.tag_);
+
76  }
+
77 
+
79  friend inline bool operator!=(const HashMapIterator &lhs, const HashMapIterator &rhs)
+
80  {
+
81  if (lhs.tag_ == SentinelTag::REGULAR && rhs.tag_ == SentinelTag::REGULAR)
+
82  return (lhs.hashMap_ != rhs.hashMap_ || lhs.bucketIndex_ != rhs.bucketIndex_);
+
83  else
+
84  return (lhs.tag_ != rhs.tag_);
+
85  }
+
86 
+ +
90  const T &value() const;
+
92  const K &key() const;
+
94  hash_t hash() const;
+
95 
+
96  private:
+
98  enum SentinelTag
+
99  {
+
101  REGULAR,
+
103  BEGINNING,
+
105  END
+
106  };
+
107 
+
108  typename HashMapHelperTraits<K, T, HashFunc, IsConst>::HashMapPtr hashMap_;
+
109  unsigned int bucketIndex_;
+
110  SentinelTag tag_;
+
111 
+
113  void next();
+
115  void previous();
+
116 
+
118  friend class HashMapIterator<K, T, HashFunc, true>;
+
119 };
+
120 
+
122 template <class K, class T, class HashFunc>
+
123 struct IteratorTraits<HashMapIterator<K, T, HashFunc, false>>
+
124 {
+
126  using ValueType = T;
+
128  using Pointer = T *;
+
130  using Reference = T &;
+ +
133 };
+
134 
+
136 template <class K, class T, class HashFunc>
+
137 struct IteratorTraits<HashMapIterator<K, T, HashFunc, true>>
+
138 {
+
140  using ValueType = T;
+
142  using Pointer = const T *;
+
144  using Reference = const T &;
+ +
147 };
+
148 
+
149 template <class K, class T, class HashFunc, bool IsConst>
+
150 HashMapIterator<K, T, HashFunc, IsConst>::HashMapIterator(typename HashMapHelperTraits<K, T, HashFunc, IsConst>::HashMapPtr hashMap, SentinelTagInit tag)
+
151  : hashMap_(hashMap), bucketIndex_(0)
+
152 {
+
153  switch (tag)
+
154  {
+
155  case SentinelTagInit::BEGINNING: tag_ = SentinelTag::BEGINNING; break;
+
156  case SentinelTagInit::END: tag_ = SentinelTag::END; break;
+
157  }
+
158 }
+
159 
+
160 template <class K, class T, class HashFunc, bool IsConst>
+ +
162 {
+
163  return node().value;
+
164 }
+
165 
+
166 template <class K, class T, class HashFunc, bool IsConst>
+ +
168 {
+
169  next();
+
170  return *this;
+
171 }
+
172 
+
173 template <class K, class T, class HashFunc, bool IsConst>
+ +
175 {
+
176  // Create an unmodified copy to return
+ +
178  next();
+
179  return iterator;
+
180 }
+
181 
+
182 template <class K, class T, class HashFunc, bool IsConst>
+ +
184 {
+
185  previous();
+
186  return *this;
+
187 }
+
188 
+
189 template <class K, class T, class HashFunc, bool IsConst>
+ +
191 {
+
192  // Create an unmodified copy to return
+ +
194  previous();
+
195  return iterator;
+
196 }
+
197 
+
198 template <class K, class T, class HashFunc, bool IsConst>
+ +
200 {
+
201  return hashMap_->nodes_[bucketIndex_];
+
202 }
+
203 
+
204 template <class K, class T, class HashFunc, bool IsConst>
+ +
206 {
+
207  return node().value;
+
208 }
+
209 
+
210 template <class K, class T, class HashFunc, bool IsConst>
+ +
212 {
+
213  return node().key;
+
214 }
+
215 
+
216 template <class K, class T, class HashFunc, bool IsConst>
+ +
218 {
+
219  return hashMap_->hashes_[bucketIndex_];
+
220 }
+
221 
+
222 template <class K, class T, class HashFunc, bool IsConst>
+ +
224 {
+
225  if (tag_ == SentinelTag::REGULAR)
+
226  {
+
227  if (bucketIndex_ >= hashMap_->capacity() - 1)
+
228  {
+
229  tag_ = SentinelTag::END;
+
230  return;
+
231  }
+
232  else
+
233  bucketIndex_++;
+
234  }
+
235  else if (tag_ == SentinelTag::BEGINNING)
+
236  {
+
237  tag_ = SentinelTag::REGULAR;
+
238  bucketIndex_ = 0;
+
239  }
+
240  else if (tag_ == SentinelTag::END)
+
241  return;
+
242 
+
243  // Search the first non empty index starting from the current one
+
244  while (bucketIndex_ < hashMap_->capacity() - 1 && hashMap_->hashes_[bucketIndex_] == NullHash)
+
245  bucketIndex_++;
+
246 
+
247  if (hashMap_->hashes_[bucketIndex_] == NullHash)
+
248  tag_ = SentinelTag::END;
+
249 }
+
250 
+
251 template <class K, class T, class HashFunc, bool IsConst>
+
252 void HashMapIterator<K, T, HashFunc, IsConst>::previous()
+
253 {
+
254  if (tag_ == SentinelTag::REGULAR)
+
255  {
+
256  if (bucketIndex_ == 0)
+
257  {
+
258  tag_ = SentinelTag::BEGINNING;
+
259  return;
+
260  }
+
261  else
+
262  bucketIndex_--;
+
263  }
+
264  else if (tag_ == SentinelTag::END)
+
265  {
+
266  tag_ = SentinelTag::REGULAR;
+
267  bucketIndex_ = hashMap_->capacity() - 1;
+
268  }
+
269  else if (tag_ == SentinelTag::BEGINNING)
+
270  return;
+
271 
+
272  // Search the first non empty index starting from the current one
+
273  while (bucketIndex_ > 0 && hashMap_->hashes_[bucketIndex_] == NullHash)
+
274  bucketIndex_--;
+
275 
+
276  if (hashMap_->hashes_[bucketIndex_] == NullHash)
+
277  tag_ = SentinelTag::BEGINNING;
+
278 }
+
279 
+
280 }
+
281 
+
282 #endif
+
A template based hashmap implementation with open addressing and leapfrog probing.
Definition: HashMap.h:26
+
A hashmap iterator.
Definition: HashMapIterator.h:33
+
friend bool operator!=(const HashMapIterator &lhs, const HashMapIterator &rhs)
Inequality operator.
Definition: HashMapIterator.h:79
+
HashMapIterator(const HashMapIterator< K, T, HashFunc, false > &it)
Copy constructor to implicitly convert a non constant iterator to a constant one.
Definition: HashMapIterator.h:53
+
const T & value() const
Returns the value associated to the currently pointed node.
Definition: HashMapIterator.h:205
+
SentinelTagInit
Sentinel tags to initialize the iterator at the beginning and end.
Definition: HashMapIterator.h:40
+
typename IteratorTraits< HashMapIterator >::Reference Reference
Reference type which respects iterator constness.
Definition: HashMapIterator.h:36
+
HashMapIterator & operator--()
Iterates to the previous element (prefix)
Definition: HashMapIterator.h:183
+
@ BEGINNING
Iterator at the beginning, next element is the first one.
+
@ END
Iterator at the end, previous element is the last one.
+
const K & key() const
Returns the key associated to the currently pointed node.
Definition: HashMapIterator.h:211
+
HashMapHelperTraits< K, T, HashFunc, IsConst >::NodeReference node() const
Returns the hashmap node currently pointed by the iterator.
Definition: HashMapIterator.h:199
+
Reference operator*() const
Deferencing operator.
Definition: HashMapIterator.h:161
+
friend bool operator==(const HashMapIterator &lhs, const HashMapIterator &rhs)
Equality operator.
Definition: HashMapIterator.h:70
+
hash_t hash() const
Returns the hash associated to the currently pointed node.
Definition: HashMapIterator.h:217
+
HashMapIterator & operator++()
Iterates to the next element (prefix)
Definition: HashMapIterator.h:167
+
Dispatching tag for iterators that can move both ways, one element at a time.
Definition: iterator.h:11
+
Base helper structure for type traits used in the hashmap iterator.
Definition: HashMapIterator.h:12
+
static BidirectionalIteratorTag IteratorCategory()
Type trait for iterator category.
Definition: HashMapIterator.h:132
+
T * Pointer
Pointer to the type of the values deferenced by the iterator.
Definition: HashMapIterator.h:128
+
T ValueType
Type of the values deferenced by the iterator.
Definition: HashMapIterator.h:126
+
T & Reference
Reference to the type of the values deferenced by the iterator.
Definition: HashMapIterator.h:130
+
const T & Reference
Reference to the type of the values deferenced by the iterator.
Definition: HashMapIterator.h:144
+
const T * Pointer
Pointer to the type of the values deferenced by the iterator.
Definition: HashMapIterator.h:142
+
T ValueType
Type of the values deferenced by the iterator (never const)
Definition: HashMapIterator.h:140
+
static BidirectionalIteratorTag IteratorCategory()
Type trait for iterator category.
Definition: HashMapIterator.h:146
+
Base iterator traits structure.
Definition: iterator.h:19
+
+ + + + diff --git a/master/_hash_map_list_8h_source.html b/master/_hash_map_list_8h_source.html new file mode 100644 index 0000000000..1bf357a334 --- /dev/null +++ b/master/_hash_map_list_8h_source.html @@ -0,0 +1,788 @@ + + + + + + + +nCine: include/nctl/HashMapList.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
HashMapList.h
+
+
+
1 #ifndef CLASS_NCTL_HASHMAPLIST
+
2 #define CLASS_NCTL_HASHMAPLIST
+
3 
+
4 #include "Array.h"
+
5 #include "List.h"
+
6 #include "HashFunctions.h"
+
7 
+
8 #include <ncine/config.h>
+
9 #if NCINE_WITH_ALLOCATORS
+
10  #include "AllocManager.h"
+
11  #include "IAllocator.h"
+
12 #endif
+
13 
+
14 namespace nctl {
+
15 
+
16 template <class K, class T, class HashFunc, bool IsConst> class HashMapListIterator;
+
17 template <class K, class T, class HashFunc, bool IsConst> struct HashMapListHelperTraits;
+
18 class String;
+
19 
+
21 template <class K, class T, class HashFunc = FNV1aHashFunc<K>>
+ +
23 {
+
24  public:
+ + + + +
33 
+
34  explicit HashMapList(unsigned int capacity);
+
35 #if NCINE_WITH_ALLOCATORS
+
36  HashMapList(unsigned int capacity, IAllocator &alloc);
+
37 #endif
+
38  ~HashMapList() { clear(); }
+
39 
+
41  HashMapList(const HashMapList &other);
+
43  HashMapList(HashMapList &&other);
+
45  HashMapList &operator=(const HashMapList &other);
+ +
48 
+
50  Iterator begin();
+ +
54  Iterator end();
+ +
57 
+
59  ConstIterator begin() const;
+ +
63  ConstIterator end() const;
+
65  ConstReverseIterator rEnd() const;
+
66 
+
68  inline ConstIterator cBegin() const { return begin(); }
+
70  inline ConstReverseIterator crBegin() const { return rBegin(); }
+
72  inline ConstIterator cEnd() const { return end(); }
+
74  inline ConstReverseIterator crEnd() const { return rEnd(); }
+
75 
+
77  T &operator[](const K &key);
+
79  bool insert(const K &key, const T &value);
+
81  bool insert(const K &key, T &&value);
+
83  template <typename... Args> bool emplace(const K &key, Args &&... args);
+
84 
+
86  inline bool isEmpty() const { return size() == 0; }
+
88  unsigned int size() const;
+
90  inline float loadFactor() const { return size() / static_cast<float>(buckets_.size()); }
+
92  inline unsigned int bucketAmount() const { return buckets_.size(); }
+
94  inline unsigned int bucketSize(const K &key) const { return retrieveBucket(hashFunc_(key)).size(); }
+
96  inline unsigned int bucket(const K &key) const { return hashFunc_(key) % buckets_.size(); }
+
98  inline hash_t hash(const K &key) const { return hashFunc_(key); }
+
99 
+
101  void clear();
+
103  bool contains(const K &key, T &returnedValue) const;
+
105  T *find(const K &key);
+
107  const T *find(const K &key) const;
+
109  bool remove(const K &key);
+
110 
+
112  void rehash(unsigned int count);
+
113 
+
114  private:
+
116  class Node
+
117  {
+
118  public:
+
119  hash_t hash;
+
120  K key;
+
121  T value;
+
122 
+
123  Node()
+
124  : hash(NullHash) {}
+
125  Node(hash_t hh, const K &kk)
+
126  : hash(hh), key(kk) {}
+
127  Node(hash_t hh, const K &kk, const T &vv)
+
128  : hash(hh), key(kk), value(vv) {}
+
129  Node(hash_t hh, const K &kk, T &&vv)
+
130  : hash(hh), key(kk), value(nctl::move(vv)) {}
+
131  template <typename... Args>
+
132  Node(hash_t hh, const K &kk, Args &&... args)
+
133  : hash(hh), key(kk), value(nctl::forward<Args>(args)...) {}
+
134  };
+
135 
+
137  class HashBucket
+
138  {
+
139  public:
+
140 #if !NCINE_WITH_ALLOCATORS
+
141  inline HashBucket()
+
142  : size_(0) {}
+
143 #else
+
144  HashBucket()
+
145  : alloc_(theDefaultAllocator()), size_(0), collisionList_(theDefaultAllocator()) {}
+
146  HashBucket(IAllocator &alloc)
+
147  : alloc_(alloc), size_(0), collisionList_(alloc) {}
+
148 #endif
+
149  inline ~HashBucket() { clear(); }
+
150 
+
151  HashBucket(const HashBucket &other);
+
152  HashBucket(HashBucket &&other);
+
153  HashBucket &operator=(const HashBucket &other);
+
154  HashBucket &operator=(HashBucket &&other);
+
155 
+
156  unsigned int size() const { return size_; }
+
157  void clear();
+
158  bool contains(hash_t hash, const K &key, T &returnedValue) const;
+
159  T *find(hash_t hash, const K &key);
+
160  const T *find(hash_t hash, const K &key) const;
+
161  T &findOrInsert(hash_t hash, const K &key);
+
162  bool insert(hash_t hash, const K &key, const T &value);
+
163  bool insert(hash_t hash, const K &key, T &&value);
+
164  template <typename... Args> bool emplace(hash_t hash, const K &key, Args &&... args);
+
165  bool remove(hash_t hash, const K &key);
+
166 
+
167  private:
+
168 #if NCINE_WITH_ALLOCATORS
+
170  IAllocator &alloc_;
+
171 #endif
+
173  unsigned int size_;
+
174  unsigned char firstNodeBuffer_[sizeof(Node)];
+
176  Node &firstNode_ = reinterpret_cast<Node &>(firstNodeBuffer_);
+
178  List<Node> collisionList_;
+
179 
+
180  Node *findNode(hash_t hash, const K &key);
+
181  const Node *findNode(hash_t hash, const K &key) const;
+
182 
+
183  friend class HashMapListIterator<K, T, HashFunc, false>;
+
184  friend class HashMapListIterator<K, T, HashFunc, true>;
+
185  friend class HashMapList<K, T, HashFunc>;
+
186  };
+
187 
+
188  Array<HashBucket> buckets_;
+
189  HashFunc hashFunc_;
+
190 
+
191  HashBucket &retrieveBucket(hash_t hash);
+
192  const HashBucket &retrieveBucket(hash_t hash) const;
+
193 
+
194  friend class HashMapListIterator<K, T, HashFunc, false>;
+
195  friend class HashMapListIterator<K, T, HashFunc, true>;
+
196  friend struct HashMapListHelperTraits<K, T, HashFunc, false>;
+
197  friend struct HashMapListHelperTraits<K, T, HashFunc, true>;
+
198 };
+
199 
+
200 template <class K, class T, class HashFunc>
+ +
202 {
+
203  Iterator iterator(this, Iterator::SentinelTagInit::BEGINNING);
+
204  return ++iterator;
+
205 }
+
206 
+
207 template <class K, class T, class HashFunc>
+ +
209 {
+
210  Iterator iterator(this, Iterator::SentinelTagInit::END);
+
211  return ReverseIterator(--iterator);
+
212 }
+
213 
+
214 template <class K, class T, class HashFunc>
+ +
216 {
+
217  return Iterator(this, Iterator::SentinelTagInit::END);
+
218 }
+
219 
+
220 template <class K, class T, class HashFunc>
+ +
222 {
+
223  Iterator iterator(this, Iterator::SentinelTagInit::BEGINNING);
+
224  return ReverseIterator(iterator);
+
225 }
+
226 
+
227 template <class K, class T, class HashFunc>
+ +
229 {
+
230  ConstIterator iterator(this, ConstIterator::SentinelTagInit::BEGINNING);
+
231  return ++iterator;
+
232 }
+
233 
+
234 template <class K, class T, class HashFunc>
+ +
236 {
+
237  ConstIterator iterator(this, ConstIterator::SentinelTagInit::END);
+
238  return ConstReverseIterator(--iterator);
+
239 }
+
240 
+
241 template <class K, class T, class HashFunc>
+ +
243 {
+
244  return ConstIterator(this, ConstIterator::SentinelTagInit::END);
+
245 }
+
246 
+
247 template <class K, class T, class HashFunc>
+ +
249 {
+
250  ConstIterator iterator(this, ConstIterator::SentinelTagInit::BEGINNING);
+
251  return ConstReverseIterator(iterator);
+
252 }
+
253 
+
254 template <class K, class T, class HashFunc>
+ +
256  :
+
257 #if NCINE_WITH_ALLOCATORS
+
258  alloc_(other.alloc_),
+
259 #endif
+
260  size_(other.size_), collisionList_(other.collisionList_)
+
261 {
+
262  if (other.size_ > 0)
+
263  {
+
264  const Node &srcNode = other.firstNode_;
+
265  new (&firstNode_) Node(srcNode.hash, srcNode.key, srcNode.value);
+
266  }
+
267 }
+
268 
+
269 template <class K, class T, class HashFunc>
+
270 HashMapList<K, T, HashFunc>::HashBucket::HashBucket(HashBucket &&other)
+
271  :
+
272 #if NCINE_WITH_ALLOCATORS
+
273  alloc_(other.alloc_),
+
274 #endif
+
275  size_(other.size_), collisionList_(nctl::move(other.collisionList_))
+
276 {
+
277  if (other.size_ > 0)
+
278  new (&firstNode_) Node(nctl::move(other.firstNode_));
+
279 }
+
280 
+
281 template <class K, class T, class HashFunc>
+
282 typename HashMapList<K, T, HashFunc>::HashBucket &HashMapList<K, T, HashFunc>::HashBucket::operator=(const HashBucket &other)
+
283 {
+
284  if (other.size_ > 0 && size_ > 0)
+
285  firstNode_ = other.firstNode_;
+
286  else if (other.size_ > 0 && size_ == 0)
+
287  {
+
288  const Node &srcNode = other.firstNode_;
+
289  new (&firstNode_) Node(srcNode.hash, srcNode.key, srcNode.value);
+
290  }
+
291  else if (size_ > 0 && other.size_ == 0)
+
292  destructObject(&firstNode_);
+
293 
+
294  collisionList_ = other.collisionList_;
+
295  size_ = other.size_;
+
296  return *this;
+
297 }
+
298 
+
299 template <class K, class T, class HashFunc>
+
300 typename HashMapList<K, T, HashFunc>::HashBucket &HashMapList<K, T, HashFunc>::HashBucket::operator=(HashBucket &&other)
+
301 {
+
302 #if NCINE_WITH_ALLOCATORS
+
303  alloc_ = other.alloc_;
+
304 #endif
+
305  if (other.size_ > 0 && size_ > 0)
+
306  firstNode_ = nctl::move(other.firstNode_);
+
307  else if (other.size_ > 0 && size_ == 0)
+
308  {
+
309  Node &srcNode = other.firstNode_;
+
310  new (&firstNode_) Node(srcNode.hash, srcNode.key, nctl::move(srcNode.value));
+
311  }
+
312  else if (size_ > 0 && other.size_ == 0)
+
313  destructObject(&firstNode_);
+
314 
+
315  collisionList_ = nctl::move(other.collisionList_);
+
316  size_ = other.size_;
+
317  other.clear();
+
318  return *this;
+
319 }
+
320 
+
321 template <class K, class T, class HashFunc>
+
322 void HashMapList<K, T, HashFunc>::HashBucket::clear()
+
323 {
+
324  if (size_ > 1)
+
325  collisionList_.clear();
+
326  if (size_ > 0)
+
327  destructObject(&firstNode_);
+
328  size_ = 0;
+
329 }
+
330 
+
331 template <class K, class T, class HashFunc>
+
332 bool HashMapList<K, T, HashFunc>::HashBucket::contains(hash_t hash, const K &key, T &returnedValue) const
+
333 {
+
334  const Node *node = findNode(hash, key);
+
335 
+
336  if (node)
+
337  returnedValue = node->value;
+
338 
+
339  return (node != nullptr);
+
340 }
+
341 
+
342 template <class K, class T, class HashFunc>
+
343 T *HashMapList<K, T, HashFunc>::HashBucket::find(hash_t hash, const K &key)
+
344 {
+
345  Node *node = findNode(hash, key);
+
346 
+
347  if (node)
+
348  return &(node->value);
+
349 
+
350  return nullptr;
+
351 }
+
352 
+
353 template <class K, class T, class HashFunc>
+
354 const T *HashMapList<K, T, HashFunc>::HashBucket::find(hash_t hash, const K &key) const
+
355 {
+
356  const Node *node = findNode(hash, key);
+
357 
+
358  if (node)
+
359  return &(node->value);
+
360 
+
361  return nullptr;
+
362 }
+
363 
+
364 template <class K, class T, class HashFunc>
+
365 T &HashMapList<K, T, HashFunc>::HashBucket::findOrInsert(hash_t hash, const K &key)
+
366 {
+
367  if (size_ == 0)
+
368  {
+
369  // Early-out if the bucket is empty
+
370  new (&firstNode_) Node(hash, key);
+
371  size_++;
+
372  return firstNode_.value;
+
373  }
+
374 
+
375  Node *node = findNode(hash, key);
+
376  if (node)
+
377  return node->value;
+
378 
+
379  // The item has not been found, a new entry is created at the end of the list
+
380  size_++;
+
381  collisionList_.pushBack(Node(hash, key));
+
382  return collisionList_.back().value;
+
383 }
+
384 
+
385 template <class K, class T, class HashFunc>
+
386 bool HashMapList<K, T, HashFunc>::HashBucket::insert(hash_t hash, const K &key, const T &value)
+
387 {
+
388  if (size_ == 0)
+
389  {
+
390  // Early-out if the bucket is empty
+
391  new (&firstNode_) Node(hash, key, value);
+
392  size_++;
+
393  return true;
+
394  }
+
395 
+
396  Node *node = findNode(hash, key);
+
397  if (node)
+
398  return false;
+
399 
+
400  // The item has not been found, a new entry is created at the end of the list
+
401  size_++;
+
402  collisionList_.pushBack(Node(hash, key, value));
+
403  return true;
+
404 }
+
405 
+
406 template <class K, class T, class HashFunc>
+
407 bool HashMapList<K, T, HashFunc>::HashBucket::insert(hash_t hash, const K &key, T &&value)
+
408 {
+
409  if (size_ == 0)
+
410  {
+
411  // Early-out if the bucket is empty
+
412  new (&firstNode_) Node(hash, key, nctl::move(value));
+
413  size_++;
+
414  return true;
+
415  }
+
416 
+
417  Node *node = findNode(hash, key);
+
418  if (node)
+
419  return false;
+
420 
+
421  // The item has not been found, a new entry is created at the end of the list
+
422  size_++;
+
423  collisionList_.pushBack(Node(hash, key, nctl::move(value)));
+
424  return true;
+
425 }
+
426 
+
427 template <class K, class T, class HashFunc>
+
428 template <typename... Args>
+
429 bool HashMapList<K, T, HashFunc>::HashBucket::emplace(hash_t hash, const K &key, Args &&... args)
+
430 {
+
431  if (size_ == 0)
+
432  {
+
433  // Early-out if the bucket is empty
+
434  new (&firstNode_) Node(hash, key, nctl::forward<Args>(args)...);
+
435  size_++;
+
436  return true;
+
437  }
+
438 
+
439  Node *node = findNode(hash, key);
+
440  if (node)
+
441  return false;
+
442 
+
443  // The item has not been found, a new entry is created at the end of the list
+
444  size_++;
+
445  collisionList_.emplaceBack(hash, key, nctl::forward<Args>(args)...);
+
446  return true;
+
447 }
+
448 
+
450 template <class K, class T, class HashFunc>
+
451 bool HashMapList<K, T, HashFunc>::HashBucket::remove(hash_t hash, const K &key)
+
452 {
+
453  // Early-out if the bucket is empty
+
454  if (size_ == 0)
+
455  return false;
+
456 
+
457  bool found = false;
+
458  if (firstNode_.hash == hash && equalTo(firstNode_.key, key))
+
459  {
+
460  // The item has been found in the direct access node
+
461  found = true;
+
462  destructObject(&firstNode_);
+
463 
+
464  // Bring the first element of the list, if any, as direct access node
+
465  if (collisionList_.isEmpty() == false)
+
466  {
+
467  new (&firstNode_) Node(collisionList_.front());
+
468  collisionList_.popFront();
+
469  }
+
470  size_--;
+
471  }
+
472  else
+
473  {
+
474  for (typename List<Node>::ConstIterator i = collisionList_.begin(); i != collisionList_.end(); ++i)
+
475  {
+
476  if ((*i).hash == hash && equalTo((*i).key, key))
+
477  {
+
478  // The item has been found in the list
+
479  found = true;
+
480  i = collisionList_.erase(i);
+
481  size_--;
+
482 
+
483  // The item has been removed and the iterator is no longer valid
+
484  break;
+
485  }
+
486  }
+
487  }
+
488 
+
489  return found;
+
490 }
+
491 
+
492 template <class K, class T, class HashFunc>
+
493 typename HashMapList<K, T, HashFunc>::Node *HashMapList<K, T, HashFunc>::HashBucket::findNode(hash_t hash, const K &key)
+
494 {
+
495  if (size_ == 0)
+
496  return nullptr;
+
497 
+
498  if (firstNode_.hash == hash && equalTo(firstNode_.key, key))
+
499  // The item has been found in the direct access node
+
500  return &firstNode_;
+
501  else
+
502  {
+
503  for (typename List<Node>::Iterator i = collisionList_.begin(); i != collisionList_.end(); ++i)
+
504  {
+
505  // The item has been found in the list
+
506  if ((*i).hash == hash && equalTo((*i).key, key))
+
507  return &(*i);
+
508  }
+
509  }
+
510 
+
511  return nullptr;
+
512 }
+
513 
+
514 template <class K, class T, class HashFunc>
+
515 const typename HashMapList<K, T, HashFunc>::Node *HashMapList<K, T, HashFunc>::HashBucket::findNode(hash_t hash, const K &key) const
+
516 {
+
517  if (size_ == 0)
+
518  return nullptr;
+
519 
+
520  if (firstNode_.hash == hash && equalTo(firstNode_.key, key))
+
521  // The item has been found in the direct access node
+
522  return &firstNode_;
+
523  else
+
524  {
+
525  for (typename List<Node>::ConstIterator i = collisionList_.begin(); i != collisionList_.end(); ++i)
+
526  {
+
527  // The item has been found in the list
+
528  if ((*i).hash == hash && equalTo((*i).key, key))
+
529  return &(*i);
+
530  }
+
531  }
+
532 
+
533  return nullptr;
+
534 }
+
535 
+
536 #if !NCINE_WITH_ALLOCATORS
+
537 template <class K, class T, class HashFunc>
+
538 HashMapList<K, T, HashFunc>::HashMapList(unsigned int capacity)
+
539  : buckets_(capacity, ArrayMode::FIXED_CAPACITY)
+
540 {
+
541  FATAL_ASSERT_MSG(capacity > 0, "Zero is not a valid capacity");
+
542 
+
543  for (unsigned int i = 0; i < capacity; i++)
+
544  buckets_.emplaceBack(HashBucket());
+
545 }
+
546 #else
+
547 template <class K, class T, class HashFunc>
+
548 HashMapList<K, T, HashFunc>::HashMapList(unsigned int capacity)
+
549  : buckets_(capacity, ArrayMode::FIXED_CAPACITY, theDefaultAllocator())
+
550 {
+
551  FATAL_ASSERT_MSG(capacity > 0, "Zero is not a valid capacity");
+
552 
+
553  for (unsigned int i = 0; i < capacity; i++)
+
554  buckets_.emplaceBack(theDefaultAllocator());
+
555 }
+
556 
+
557 template <class K, class T, class HashFunc>
+
558 HashMapList<K, T, HashFunc>::HashMapList(unsigned int capacity, IAllocator &alloc)
+
559  : buckets_(capacity, ArrayMode::FIXED_CAPACITY, alloc)
+
560 {
+
561  FATAL_ASSERT_MSG(capacity > 0, "Zero is not a valid capacity");
+
562 
+
563  for (unsigned int i = 0; i < capacity; i++)
+
564  buckets_.emplaceBack(alloc);
+
565 }
+
566 #endif
+
567 
+
568 template <class K, class T, class HashFunc>
+ +
570  : buckets_(other.buckets_)
+
571 {
+
572 }
+
573 
+
574 template <class K, class T, class HashFunc>
+ +
576  : buckets_(nctl::move(other.buckets_))
+
577 {
+
578 }
+
579 
+
580 template <class K, class T, class HashFunc>
+ +
582 {
+
583  if (this != &other)
+
584  buckets_ = other.buckets_;
+
585  return *this;
+
586 }
+
587 
+
588 template <class K, class T, class HashFunc>
+ +
590 {
+
591  if (this != &other)
+
592  buckets_ = nctl::move(other.buckets_);
+
593  return *this;
+
594 }
+
595 
+
596 template <class K, class T, class HashFunc>
+ +
598 {
+
599  const hash_t hash = hashFunc_(key);
+
600  return retrieveBucket(hash).findOrInsert(hash, key);
+
601 }
+
602 
+
604 template <class K, class T, class HashFunc>
+
605 bool HashMapList<K, T, HashFunc>::insert(const K &key, const T &value)
+
606 {
+
607  const hash_t hash = hashFunc_(key);
+
608  return retrieveBucket(hash).insert(hash, key, value);
+
609 }
+
610 
+
612 template <class K, class T, class HashFunc>
+
613 bool HashMapList<K, T, HashFunc>::insert(const K &key, T &&value)
+
614 {
+
615  const hash_t hash = hashFunc_(key);
+
616  return retrieveBucket(hash).insert(hash, key, nctl::move(value));
+
617 }
+
618 
+
620 template <class K, class T, class HashFunc>
+
621 template <typename... Args>
+
622 bool HashMapList<K, T, HashFunc>::emplace(const K &key, Args &&... args)
+
623 {
+
624  const hash_t hash = hashFunc_(key);
+
625  return retrieveBucket(hash).emplace(hash, key, nctl::forward<Args>(args)...);
+
626 }
+
627 
+
628 template <class K, class T, class HashFunc>
+ +
630 {
+
631  unsigned int totalSize = 0;
+
632  for (unsigned int i = 0; i < buckets_.size(); i++)
+
633  totalSize += buckets_[i].size();
+
634 
+
635  return totalSize;
+
636 }
+
637 
+
638 template <class K, class T, class HashFunc>
+ +
640 {
+
641  for (unsigned int i = 0; i < buckets_.size(); i++)
+
642  buckets_[i].clear();
+
643 }
+
644 
+
645 template <class K, class T, class HashFunc>
+
646 bool HashMapList<K, T, HashFunc>::contains(const K &key, T &returnedValue) const
+
647 {
+
648  const hash_t hash = hashFunc_(key);
+
649  return retrieveBucket(hash).contains(hash, key, returnedValue);
+
650 }
+
651 
+
653 template <class K, class T, class HashFunc>
+ +
655 {
+
656  const hash_t hash = hashFunc_(key);
+
657  return retrieveBucket(hash).find(hash, key);
+
658 }
+
659 
+
661 template <class K, class T, class HashFunc>
+
662 const T *HashMapList<K, T, HashFunc>::find(const K &key) const
+
663 {
+
664  const hash_t hash = hashFunc_(key);
+
665  return retrieveBucket(hash).find(hash, key);
+
666 }
+
667 
+
668 template <class K, class T, class HashFunc>
+ +
670 {
+
671  const hash_t hash = hashFunc_(key);
+
672  return retrieveBucket(hash).remove(hash, key);
+
673 }
+
674 
+
675 template <class K, class T, class HashFunc>
+
676 void HashMapList<K, T, HashFunc>::rehash(unsigned int count)
+
677 {
+
678  const unsigned int totalSize = size();
+
679  if (totalSize == 0 || count < totalSize)
+
680  return;
+
681 
+
682  HashMapList<K, T, HashFunc> hashMap(count);
+
683 
+
684  unsigned int bucketIndex = 0;
+
685  while (bucketIndex < buckets_.size() - 1)
+
686  {
+
687  while (bucketIndex < buckets_.size() - 1 && buckets_[bucketIndex].size() == 0)
+
688  bucketIndex++;
+
689 
+
690  HashBucket &bucket = buckets_[bucketIndex];
+
691  if (bucket.size() > 0)
+
692  {
+
693  hashMap.insert(bucket.firstNode_.key, nctl::move(bucket.firstNode_.value));
+
694  for (typename List<Node>::Iterator i = bucket.collisionList_.begin(); i != bucket.collisionList_.end(); ++i)
+
695  hashMap.insert((*i).key, nctl::move((*i).value));
+
696 
+
697  ++bucketIndex;
+
698  }
+
699  }
+
700 
+
701  *this = nctl::move(hashMap);
+
702 }
+
703 
+
704 template <class K, class T, class HashFunc>
+ +
706 {
+
707  const unsigned int index = hash % buckets_.size();
+
708  return buckets_[index];
+
709 }
+
710 
+
711 template <class K, class T, class HashFunc>
+
712 const typename HashMapList<K, T, HashFunc>::HashBucket &HashMapList<K, T, HashFunc>::retrieveBucket(hash_t hash) const
+
713 {
+
714  const unsigned int index = hash % buckets_.size();
+
715  return buckets_[index];
+
716 }
+
717 
+
718 }
+
719 
+
720 #endif
+
void emplaceBack(Args &&... args)
Constructs a new element at the end of the array.
Definition: Array.h:418
+
unsigned int size() const
Returns the array size.
Definition: Array.h:115
+
A template based hashmap implementation with separate chaining and list head cell.
Definition: HashMapList.h:23
+
HashMapList & operator=(const HashMapList &other)
Assignment operator.
Definition: HashMapList.h:581
+
bool emplace(const K &key, Args &&... args)
Constructs an element if no other has the same key.
Definition: HashMapList.h:622
+
unsigned int bucket(const K &key) const
Returns the index of the bucket for the hash generated by the specified key.
Definition: HashMapList.h:96
+
ConstIterator cBegin() const
Returns a constant iterator to the first element.
Definition: HashMapList.h:68
+
ConstReverseIterator crBegin() const
Returns a constant reverse iterator to the last element.
Definition: HashMapList.h:70
+
unsigned int bucketSize(const K &key) const
Returns the size of the bucket for the hash generated by the specified key.
Definition: HashMapList.h:94
+
float loadFactor() const
Returns the average number of elements per bucket,.
Definition: HashMapList.h:90
+
HashMapListIterator< K, T, HashFunc, false > Iterator
Iterator type.
Definition: HashMapList.h:26
+
nctl::ReverseIterator< ConstIterator > ConstReverseIterator
Reverse constant iterator type.
Definition: HashMapList.h:32
+
T & operator[](const K &key)
Subscript operator.
Definition: HashMapList.h:597
+
HashMapListIterator< K, T, HashFunc, true > ConstIterator
Constant iterator type.
Definition: HashMapList.h:28
+
Iterator begin()
Returns an iterator to the first element.
Definition: HashMapList.h:201
+
bool isEmpty() const
Returns true if the hashmap is empty.
Definition: HashMapList.h:86
+
ConstIterator cEnd() const
Returns a constant iterator to past the last lement.
Definition: HashMapList.h:72
+
unsigned int bucketAmount() const
Returns the number of buckets.
Definition: HashMapList.h:92
+
bool insert(const K &key, const T &value)
Inserts an element if no other has the same key.
Definition: HashMapList.h:605
+
ConstReverseIterator crEnd() const
Returns a constant reverse iterator to prior the first element.
Definition: HashMapList.h:74
+
Iterator end()
Returns an iterator to past the last element.
Definition: HashMapList.h:215
+
void rehash(unsigned int count)
Sets the number of buckets to the new specified size and rehashes the container.
Definition: HashMapList.h:676
+
hash_t hash(const K &key) const
Returns the hash of a given key.
Definition: HashMapList.h:98
+
void clear()
Clears the hashmap.
Definition: HashMapList.h:639
+
T * find(const K &key)
Checks whether an element is in the hashmap or not.
Definition: HashMapList.h:654
+
bool remove(const K &key)
Removes a key from the hashmap, if it exists.
Definition: HashMapList.h:669
+
ReverseIterator rEnd()
Returns a reverse iterator to prior the first element.
Definition: HashMapList.h:221
+
unsigned int size() const
Returns the number of elements in the hashmap.
Definition: HashMapList.h:629
+
bool contains(const K &key, T &returnedValue) const
Checks whether an element is in the hashmap or not.
Definition: HashMapList.h:646
+
ReverseIterator rBegin()
Returns a reverse iterator to the last element.
Definition: HashMapList.h:208
+
A hashmap iterator.
Definition: HashMapListIterator.h:39
+
The allocator interface.
Definition: IAllocator.h:18
+
A double linked list based on templates.
Definition: List.h:65
+
ListIterator< Node, false > Iterator
Iterator type.
Definition: List.h:68
+
Iterator begin()
Returns an iterator to the first element.
Definition: List.h:109
+
ListIterator< Node, true > ConstIterator
Constant iterator type.
Definition: List.h:70
+
A generic reverse iterator.
Definition: ReverseIterator.h:11
+
+ + + + diff --git a/master/_hash_map_list_iterator_8h_source.html b/master/_hash_map_list_iterator_8h_source.html new file mode 100644 index 0000000000..e7ae518082 --- /dev/null +++ b/master/_hash_map_list_iterator_8h_source.html @@ -0,0 +1,432 @@ + + + + + + + +nCine: include/nctl/HashMapListIterator.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
HashMapListIterator.h
+
+
+
1 #ifndef CLASS_NCTL_HASHMAPLISTITERATOR
+
2 #define CLASS_NCTL_HASHMAPLISTITERATOR
+
3 
+
4 #include "HashMapList.h"
+
5 #include "iterator.h"
+
6 
+
7 namespace nctl {
+
8 
+
10 template <class K, class T, class HashFunc, bool IsConst>
+ +
12 {};
+
13 
+
15 template <class K, class T, class HashFunc>
+
16 struct HashMapListHelperTraits<K, T, HashFunc, false>
+
17 {
+
18  using NodeType = typename HashMapList<K, T, HashFunc>::Node;
+ +
20  using BucketPtr = typename HashMapList<K, T, HashFunc>::HashBucket *;
+
21  using ListIteratorType = typename List<NodeType>::Iterator;
+
22  using NodeReference = NodeType &;
+
23 };
+
24 
+
26 template <class K, class T, class HashFunc>
+
27 struct HashMapListHelperTraits<K, T, HashFunc, true>
+
28 {
+
29  using NodeType = typename HashMapList<K, T, HashFunc>::Node;
+ +
31  using BucketPtr = const typename HashMapList<K, T, HashFunc>::HashBucket *;
+
32  using ListIteratorType = typename List<NodeType>::ConstIterator;
+
33  using NodeReference = const NodeType &;
+
34 };
+
35 
+
37 template <class K, class T, class HashFunc, bool IsConst>
+ +
39 {
+
40  public:
+ +
43 
+
45  enum class SentinelTagInit
+
46  {
+
48  BEGINNING,
+
50  END
+
51  };
+
52 
+ +
54  typename HashMapListHelperTraits<K, T, HashFunc, IsConst>::ListIteratorType listIterator, bool atFirstNode)
+
55  : hashMap_(hashMap), bucketIndex_(bucketIndex), listIterator_(listIterator), atFirstNode_(atFirstNode), tag_(SentinelTag::REGULAR) {}
+
56 
+
57  HashMapListIterator(typename HashMapListHelperTraits<K, T, HashFunc, IsConst>::HashMapListPtr hashMap, SentinelTagInit tag);
+
58 
+ +
61  : hashMap_(it.hashMap_), bucketIndex_(it.bucketIndex_), listIterator_(it.listIterator_), atFirstNode_(it.atFirstNode_), tag_(SentinelTag(it.tag_)) {}
+
62 
+
64  Reference operator*() const;
+
65 
+ + +
70 
+ + +
75 
+
77  friend inline bool operator==(const HashMapListIterator &lhs, const HashMapListIterator &rhs)
+
78  {
+
79  if (lhs.tag_ == SentinelTag::REGULAR && rhs.tag_ == SentinelTag::REGULAR)
+
80  {
+
81  return (lhs.hashMap_ == rhs.hashMap_ && lhs.bucketIndex_ == rhs.bucketIndex_ &&
+
82  lhs.listIterator_ == rhs.listIterator_ && lhs.atFirstNode_ == rhs.atFirstNode_);
+
83  }
+
84  else
+
85  return (lhs.tag_ == rhs.tag_);
+
86  }
+
87 
+
89  friend inline bool operator!=(const HashMapListIterator &lhs, const HashMapListIterator &rhs)
+
90  {
+
91  if (lhs.tag_ == SentinelTag::REGULAR && rhs.tag_ == SentinelTag::REGULAR)
+
92  {
+
93  return (lhs.hashMap_ != rhs.hashMap_ || lhs.bucketIndex_ != rhs.bucketIndex_ ||
+
94  lhs.listIterator_ != rhs.listIterator_ || lhs.atFirstNode_ != rhs.atFirstNode_);
+
95  }
+
96  else
+
97  return (lhs.tag_ != rhs.tag_);
+
98  }
+
99 
+ +
103  const T &value() const;
+
105  const K &key() const;
+
107  hash_t hash() const;
+
108 
+
109  private:
+
111  enum SentinelTag
+
112  {
+
114  REGULAR,
+
116  BEGINNING,
+
118  END
+
119  };
+
120 
+
121  typename HashMapListHelperTraits<K, T, HashFunc, IsConst>::HashMapListPtr hashMap_;
+
122  unsigned int bucketIndex_;
+
123  typename HashMapListHelperTraits<K, T, HashFunc, IsConst>::ListIteratorType listIterator_;
+
124  bool atFirstNode_;
+
125  SentinelTag tag_;
+
126 
+
128  void next();
+
130  void previous();
+
132  void findFirstValid();
+
134  void findLastValid();
+
135 
+
137  friend class HashMapListIterator<K, T, HashFunc, true>;
+
138 };
+
139 
+
141 template <class K, class T, class HashFunc>
+
142 struct IteratorTraits<HashMapListIterator<K, T, HashFunc, false>>
+
143 {
+
145  using ValueType = T;
+
147  using Pointer = T *;
+
149  using Reference = T &;
+ +
152 };
+
153 
+
155 template <class K, class T, class HashFunc>
+
156 struct IteratorTraits<HashMapListIterator<K, T, HashFunc, true>>
+
157 {
+
159  using ValueType = T;
+
161  using Pointer = const T *;
+
163  using Reference = const T &;
+ +
166 };
+
167 
+
168 template <class K, class T, class HashFunc, bool IsConst>
+
169 HashMapListIterator<K, T, HashFunc, IsConst>::HashMapListIterator(typename HashMapListHelperTraits<K, T, HashFunc, IsConst>::HashMapListPtr hashMap, SentinelTagInit tag)
+
170  : hashMap_(hashMap), bucketIndex_(0), listIterator_(nullptr), atFirstNode_(true)
+
171 {
+
172  switch (tag)
+
173  {
+
174  case SentinelTagInit::BEGINNING: tag_ = SentinelTag::BEGINNING; break;
+
175  case SentinelTagInit::END: tag_ = SentinelTag::END; break;
+
176  }
+
177 }
+
178 
+
179 template <class K, class T, class HashFunc, bool IsConst>
+ +
181 {
+
182  return node().value;
+
183 }
+
184 
+
185 template <class K, class T, class HashFunc, bool IsConst>
+ +
187 {
+
188  next();
+
189  return *this;
+
190 }
+
191 
+
192 template <class K, class T, class HashFunc, bool IsConst>
+ +
194 {
+
195  // Create an unmodified copy to return
+ +
197  next();
+
198  return iterator;
+
199 }
+
200 
+
201 template <class K, class T, class HashFunc, bool IsConst>
+ +
203 {
+
204  previous();
+
205  return *this;
+
206 }
+
207 
+
208 template <class K, class T, class HashFunc, bool IsConst>
+ +
210 {
+
211  // Create an unmodified copy to return
+ +
213  previous();
+
214  return iterator;
+
215 }
+
216 
+
217 template <class K, class T, class HashFunc, bool IsConst>
+ +
219 {
+
220  if (atFirstNode_)
+
221  return hashMap_->buckets_[bucketIndex_].firstNode_;
+
222  else
+
223  return *listIterator_;
+
224 }
+
225 
+
226 template <class K, class T, class HashFunc, bool IsConst>
+ +
228 {
+
229  return node().value;
+
230 }
+
231 
+
232 template <class K, class T, class HashFunc, bool IsConst>
+ +
234 {
+
235  return node().key;
+
236 }
+
237 
+
238 template <class K, class T, class HashFunc, bool IsConst>
+ +
240 {
+
241  return node().hash;
+
242 }
+
243 
+
244 template <class K, class T, class HashFunc, bool IsConst>
+ +
246 {
+
247  if (tag_ == SentinelTag::BEGINNING)
+
248  {
+
249  findFirstValid();
+
250  return;
+
251  }
+
252  else if (tag_ == SentinelTag::END)
+
253  return;
+
254 
+
255  typename HashMapListHelperTraits<K, T, HashFunc, IsConst>::BucketPtr bucket = &(hashMap_->buckets_[bucketIndex_]);
+
256 
+
257  if (atFirstNode_)
+
258  {
+
259  atFirstNode_ = false;
+
260  listIterator_ = bucket->collisionList_.begin();
+
261  }
+
262  else
+
263  ++listIterator_;
+
264 
+
265  // The list iterator condition also applies when it points to the beginning of an empty list
+
266  if (listIterator_ == bucket->collisionList_.end())
+
267  {
+
268  if (bucketIndex_ == hashMap_->buckets_.size() - 1)
+
269  tag_ = SentinelTag::END;
+
270  else
+
271  {
+
272  do
+
273  {
+
274  bucket = &(hashMap_->buckets_[++bucketIndex_]);
+
275  } while (bucketIndex_ < hashMap_->buckets_.size() - 1 && bucket->size() == 0);
+
276  }
+
277 
+
278  if (bucket->size() == 0)
+
279  tag_ = SentinelTag::END;
+
280  else
+
281  atFirstNode_ = true;
+
282  }
+
283 }
+
284 
+
285 template <class K, class T, class HashFunc, bool IsConst>
+
286 void HashMapListIterator<K, T, HashFunc, IsConst>::previous()
+
287 {
+
288  if (tag_ == SentinelTag::END)
+
289  {
+
290  findLastValid();
+
291  return;
+
292  }
+
293  else if (tag_ == SentinelTag::BEGINNING)
+
294  return;
+
295 
+
296  typename HashMapListHelperTraits<K, T, HashFunc, IsConst>::BucketPtr bucket = &(hashMap_->buckets_[bucketIndex_]);
+
297 
+
298  if (atFirstNode_)
+
299  {
+
300  if (bucketIndex_ == 0)
+
301  tag_ = SentinelTag::BEGINNING;
+
302  else
+
303  {
+
304  do
+
305  {
+
306  bucket = &(hashMap_->buckets_[--bucketIndex_]);
+
307  } while (bucketIndex_ > 0 && bucket->size() == 0);
+
308  }
+
309 
+
310  if (bucket->size() == 0)
+
311  tag_ = SentinelTag::BEGINNING;
+
312  else if (bucket->size() > 1)
+
313  {
+
314  atFirstNode_ = false;
+
315  listIterator_ = --bucket->collisionList_.end();
+
316  }
+
317  }
+
318  else
+
319  --listIterator_;
+
320 
+
321  if (listIterator_ == bucket->collisionList_.end()) // nullptr sentinel
+
322  atFirstNode_ = true;
+
323 }
+
324 
+
325 template <class K, class T, class HashFunc, bool IsConst>
+
326 void HashMapListIterator<K, T, HashFunc, IsConst>::findFirstValid()
+
327 {
+
328  tag_ = SentinelTag::REGULAR;
+
329  bucketIndex_ = 0;
+
330  typename HashMapListHelperTraits<K, T, HashFunc, IsConst>::BucketPtr bucket = &(hashMap_->buckets_[bucketIndex_]);
+
331 
+
332  // Search the first non empty bucket starting from the first one
+
333  while (bucketIndex_ < hashMap_->buckets_.size() - 1 && bucket->size() == 0)
+
334  bucket = &(hashMap_->buckets_[++bucketIndex_]);
+
335 
+
336  if (bucket->size() == 0)
+
337  tag_ = SentinelTag::END;
+
338 }
+
339 
+
340 template <class K, class T, class HashFunc, bool IsConst>
+
341 void HashMapListIterator<K, T, HashFunc, IsConst>::findLastValid()
+
342 {
+
343  tag_ = SentinelTag::REGULAR;
+
344  bucketIndex_ = hashMap_->buckets_.size() - 1;
+
345  typename HashMapListHelperTraits<K, T, HashFunc, IsConst>::BucketPtr bucket = &(hashMap_->buckets_[bucketIndex_]);
+
346 
+
347  // Search the first non empty bucket starting from the last one
+
348  while (bucketIndex_ > 0 && bucket->size() == 0)
+
349  bucket = &(hashMap_->buckets_[--bucketIndex_]);
+
350 
+
351  if (bucket->size() > 1)
+
352  {
+
353  listIterator_ = --bucket->collisionList_.end();
+
354  atFirstNode_ = false;
+
355  }
+
356  else if (bucket->size() == 0)
+
357  tag_ = SentinelTag::BEGINNING;
+
358 }
+
359 
+
360 }
+
361 
+
362 #endif
+
A template based hashmap implementation with separate chaining and list head cell.
Definition: HashMapList.h:23
+
A hashmap iterator.
Definition: HashMapListIterator.h:39
+
HashMapListHelperTraits< K, T, HashFunc, IsConst >::NodeReference node() const
Returns the hashmap node currently pointed by the iterator.
Definition: HashMapListIterator.h:218
+
HashMapListIterator(const HashMapListIterator< K, T, HashFunc, false > &it)
Copy constructor to implicitly convert a non constant iterator to a constant one.
Definition: HashMapListIterator.h:60
+
@ BEGINNING
Iterator at the beginning, next element is the first one.
+
@ END
Iterator at the end, previous element is the last one.
+
hash_t hash() const
Returns the hash associated to the currently pointed node.
Definition: HashMapListIterator.h:239
+
friend bool operator==(const HashMapListIterator &lhs, const HashMapListIterator &rhs)
Equality operator.
Definition: HashMapListIterator.h:77
+
typename IteratorTraits< HashMapListIterator >::Reference Reference
Reference type which respects iterator constness.
Definition: HashMapListIterator.h:42
+
const K & key() const
Returns the key associated to the currently pointed node.
Definition: HashMapListIterator.h:233
+
friend bool operator!=(const HashMapListIterator &lhs, const HashMapListIterator &rhs)
Inequality operator.
Definition: HashMapListIterator.h:89
+
HashMapListIterator & operator--()
Iterates to the previous element (prefix)
Definition: HashMapListIterator.h:202
+
const T & value() const
Returns the value associated to the currently pointed node.
Definition: HashMapListIterator.h:227
+
HashMapListIterator & operator++()
Iterates to the next element (prefix)
Definition: HashMapListIterator.h:186
+
SentinelTagInit
Sentinel tags to initialize the iterator at the beginning and end.
Definition: HashMapListIterator.h:46
+
Reference operator*() const
Deferencing operator.
Definition: HashMapListIterator.h:180
+
A List iterator.
Definition: ListIterator.h:14
+
Dispatching tag for iterators that can move both ways, one element at a time.
Definition: iterator.h:11
+
Base helper structure for type traits used in the hashmap iterator.
Definition: HashMapListIterator.h:12
+
T & Reference
Reference to the type of the values deferenced by the iterator.
Definition: HashMapListIterator.h:149
+
T ValueType
Type of the values deferenced by the iterator.
Definition: HashMapListIterator.h:145
+
static BidirectionalIteratorTag IteratorCategory()
Type trait for iterator category.
Definition: HashMapListIterator.h:151
+
T * Pointer
Pointer to the type of the values deferenced by the iterator.
Definition: HashMapListIterator.h:147
+
static BidirectionalIteratorTag IteratorCategory()
Type trait for iterator category.
Definition: HashMapListIterator.h:165
+
const T & Reference
Reference to the type of the values deferenced by the iterator.
Definition: HashMapListIterator.h:163
+
T ValueType
Type of the values deferenced by the iterator (never const)
Definition: HashMapListIterator.h:159
+
const T * Pointer
Pointer to the type of the values deferenced by the iterator.
Definition: HashMapListIterator.h:161
+
Base iterator traits structure.
Definition: iterator.h:19
+
+ + + + diff --git a/master/_hash_set_8h_source.html b/master/_hash_set_8h_source.html new file mode 100644 index 0000000000..325bd67752 --- /dev/null +++ b/master/_hash_set_8h_source.html @@ -0,0 +1,867 @@ + + + + + + + +nCine: include/nctl/HashSet.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
HashSet.h
+
+
+
1 #ifndef CLASS_NCTL_HASHSET
+
2 #define CLASS_NCTL_HASHSET
+
3 
+
4 #include <new>
+
5 #include <ncine/common_macros.h>
+
6 #include "HashFunctions.h"
+
7 #include "ReverseIterator.h"
+
8 #include <cstring> // for memcpy()
+
9 #include <nctl/PointerMath.h>
+
10 
+
11 #include <ncine/config.h>
+
12 #if NCINE_WITH_ALLOCATORS
+
13  #include "AllocManager.h"
+
14  #include "IAllocator.h"
+
15 #endif
+
16 
+
17 namespace nctl {
+
18 
+
19 template <class K, class HashFunc> class HashSetIterator;
+
20 template <class K, class HashFunc> struct HashSetHelperTraits;
+
21 class String;
+
22 
+
24 template <class K, class HashFunc = FNV1aHashFunc<K>>
+
25 class HashSet
+
26 {
+
27  public:
+
29 
+ + + + +
37 
+
38  explicit HashSet(unsigned int capacity);
+
39 #if NCINE_WITH_ALLOCATORS
+
40  HashSet(unsigned int capacity, IAllocator &alloc);
+
41 #endif
+
42  ~HashSet();
+
43 
+
45  HashSet(const HashSet &other);
+
47  HashSet(HashSet &&other);
+
49  HashSet &operator=(const HashSet &other);
+
51  HashSet &operator=(HashSet &&other);
+
52 
+
54  inline void swap(HashSet &first, HashSet &second)
+
55  {
+
56 #if NCINE_WITH_ALLOCATORS
+
57  nctl::swap(first.alloc_, second.alloc_);
+
58 #endif
+
59  nctl::swap(first.size_, second.size_);
+
60  nctl::swap(first.capacity_, second.capacity_);
+
61  nctl::swap(first.buffer_, second.buffer_);
+
62  nctl::swap(first.delta1_, second.delta1_);
+
63  nctl::swap(first.delta2_, second.delta2_);
+
64  nctl::swap(first.hashes_, second.hashes_);
+
65  nctl::swap(first.keys_, second.keys_);
+
66  }
+
67 
+ + + + +
76 
+
78  ConstIterator begin() const;
+ +
82  ConstIterator end() const;
+
84  ConstReverseIterator rEnd() const;
+
85 
+
87  inline ConstIterator cBegin() const { return begin(); }
+
89  inline ConstReverseIterator crBegin() const { return rBegin(); }
+
91  inline ConstIterator cEnd() const { return end(); }
+
93  inline ConstReverseIterator crEnd() const { return rEnd(); }
+
94 
+
96  bool insert(const K &key);
+
98  bool insert(K &&key);
+
99 
+
101  inline unsigned int capacity() const { return capacity_; }
+
103  inline bool isEmpty() const { return size_ == 0; }
+
105  inline unsigned int size() const { return size_; }
+
107  inline float loadFactor() const { return size_ / static_cast<float>(capacity_); }
+
109  inline hash_t hash(const K &key) const { return hashFunc_(key); }
+
110 
+
112  void clear();
+
114  bool contains(const K &key) const;
+
116  K *find(const K &key);
+
118  const K *find(const K &key) const;
+
120  bool remove(const K &key);
+
121 
+
123  void rehash(unsigned int count);
+
124 
+
125  private:
+
126  static const unsigned int AlignmentBytes = sizeof(int);
+
127 
+
128 #if NCINE_WITH_ALLOCATORS
+
130  IAllocator &alloc_;
+
131 #endif
+
132  unsigned int size_;
+
133  unsigned int capacity_;
+
135  uint8_t *buffer_;
+
136  uint8_t *delta1_;
+
137  uint8_t *delta2_;
+
138  hash_t *hashes_;
+
139  K *keys_;
+
140  HashFunc hashFunc_;
+
141 
+
142  void initPointers();
+
143  void initValues();
+
144  void destructKeys();
+
145  void deallocate();
+
146  bool findBucketIndex(const K &key, unsigned int &foundIndex, unsigned int &prevFoundIndex) const;
+
147  inline bool findBucketIndex(const K &key, unsigned int &foundIndex) const;
+
148  unsigned int addDelta1(unsigned int bucketIndex) const;
+
149  unsigned int addDelta2(unsigned int bucketIndex) const;
+
150  unsigned int calcNewDelta(unsigned int bucketIndex, unsigned int newIndex) const;
+
151  unsigned int linearSearch(unsigned int index, hash_t hash, const K &key) const;
+
152  bool bucketFoundOrEmpty(unsigned int index, hash_t hash, const K &key) const;
+
153  bool bucketFound(unsigned int index, hash_t hash, const K &key) const;
+
154  void insertKey(unsigned int index, hash_t hash, const K &key);
+
155  void insertKey(unsigned int index, hash_t hash, K &&key);
+
156 
+
157  friend class HashSetIterator<K, HashFunc>;
+
158  friend struct HashSetHelperTraits<K, HashFunc>;
+
159 };
+
160 
+
161 template <class K, class HashFunc>
+ +
163 {
+
164  ConstIterator iterator(this, ConstIterator::SentinelTagInit::BEGINNING);
+
165  return ++iterator;
+
166 }
+
167 
+
168 template <class K, class HashFunc>
+ +
170 {
+
171  ConstIterator iterator(this, ConstIterator::SentinelTagInit::END);
+
172  return ConstReverseIterator(--iterator);
+
173 }
+
174 
+
175 template <class K, class HashFunc>
+ +
177 {
+
178  return ConstIterator(this, ConstIterator::SentinelTagInit::END);
+
179 }
+
180 
+
181 template <class K, class HashFunc>
+ +
183 {
+
184  ConstIterator iterator(this, ConstIterator::SentinelTagInit::BEGINNING);
+
185  return ConstReverseIterator(iterator);
+
186 }
+
187 
+
188 template <class K, class HashFunc>
+ +
190 {
+
191  ConstIterator iterator(this, ConstIterator::SentinelTagInit::BEGINNING);
+
192  return ++iterator;
+
193 }
+
194 
+
195 template <class K, class HashFunc>
+ +
197 {
+
198  ConstIterator iterator(this, ConstIterator::SentinelTagInit::END);
+
199  return ConstReverseIterator(--iterator);
+
200 }
+
201 
+
202 template <class K, class HashFunc>
+ +
204 {
+
205  return ConstIterator(this, ConstIterator::SentinelTagInit::END);
+
206 }
+
207 
+
208 template <class K, class HashFunc>
+ +
210 {
+
211  ConstIterator iterator(this, ConstIterator::SentinelTagInit::BEGINNING);
+
212  return ConstReverseIterator(iterator);
+
213 }
+
214 
+
215 template <class K, class HashFunc>
+
216 HashSet<K, HashFunc>::HashSet(unsigned int capacity)
+
217  :
+
218 #if NCINE_WITH_ALLOCATORS
+
219  alloc_(theDefaultAllocator()),
+
220 #endif
+
221  size_(0), capacity_(capacity), buffer_(nullptr),
+
222  delta1_(nullptr), delta2_(nullptr), hashes_(nullptr), keys_(nullptr)
+
223 {
+
224  FATAL_ASSERT_MSG(capacity > 0, "Zero is not a valid capacity");
+
225 
+
226  const unsigned int bytes = capacity_ * (sizeof(uint8_t) * 2 + sizeof(hash_t));
+
227  const unsigned int alignedBytes = bytes + 3 * AlignmentBytes; // 3 align adjustments in `initPointers()`
+
228 #if !NCINE_WITH_ALLOCATORS
+
229  buffer_ = static_cast<uint8_t *>(::operator new(alignedBytes));
+
230  keys_ = static_cast<K *>(::operator new(sizeof(K) * capacity_));
+
231 #else
+
232  buffer_ = static_cast<uint8_t *>(alloc_.allocate(alignedBytes));
+
233  keys_ = static_cast<K *>(alloc_.allocate(sizeof(K) * capacity_));
+
234 #endif
+
235 
+
236  initPointers();
+
237  initValues();
+
238 }
+
239 
+
240 #if NCINE_WITH_ALLOCATORS
+
241 template <class K, class HashFunc>
+
242 HashSet<K, HashFunc>::HashSet(unsigned int capacity, IAllocator &alloc)
+
243  : alloc_(alloc), size_(0), capacity_(capacity), buffer_(nullptr),
+
244  delta1_(nullptr), delta2_(nullptr), hashes_(nullptr), keys_(nullptr)
+
245 {
+
246  FATAL_ASSERT_MSG(capacity > 0, "Zero is not a valid capacity");
+
247 
+
248  const unsigned int bytes = capacity_ * (sizeof(uint8_t) * 2 + sizeof(hash_t));
+
249  buffer_ = static_cast<uint8_t *>(alloc_.allocate(bytes));
+
250  keys_ = static_cast<K *>(alloc_.allocate(sizeof(K) * capacity_));
+
251 
+
252  initPointers();
+
253  initValues();
+
254 }
+
255 #endif
+
256 
+
257 template <class K, class HashFunc>
+
258 HashSet<K, HashFunc>::~HashSet()
+
259 {
+
260  destructKeys();
+
261  deallocate();
+
262 }
+
263 
+
264 template <class K, class HashFunc>
+ +
266  :
+
267 #if NCINE_WITH_ALLOCATORS
+
268  alloc_(other.alloc_),
+
269 #endif
+
270  size_(other.size_), capacity_(other.capacity_), buffer_(nullptr),
+
271  delta1_(nullptr), delta2_(nullptr), hashes_(nullptr), keys_(nullptr)
+
272 {
+
273  const unsigned int bytes = capacity_ * (sizeof(uint8_t) * 2 + sizeof(hash_t));
+
274  const unsigned int alignedBytes = bytes + 3 * AlignmentBytes; // 3 align adjustments in `initPointers()`
+
275 #if !NCINE_WITH_ALLOCATORS
+
276  buffer_ = static_cast<uint8_t *>(::operator new(alignedBytes));
+
277  keys_ = static_cast<K *>(::operator new(sizeof(K) * capacity_));
+
278 #else
+
279  buffer_ = static_cast<uint8_t *>(alloc_.allocate(alignedBytes));
+
280  keys_ = static_cast<K *>(alloc_.allocate(sizeof(K) * capacity_));
+
281 #endif
+
282  memcpy(buffer_, other.buffer_, bytes);
+
283  initPointers();
+
284 
+
285  for (unsigned int i = 0; i < capacity_; i++)
+
286  {
+
287  if (other.hashes_[i] != NullHash)
+
288  new (keys_ + i) K(other.keys_[i]);
+
289  }
+
290 }
+
291 
+
292 template <class K, class HashFunc>
+ +
294  :
+
295 #if NCINE_WITH_ALLOCATORS
+
296  alloc_(other.alloc_),
+
297 #endif
+
298  size_(other.size_), capacity_(other.capacity_), buffer_(other.buffer_),
+
299  delta1_(other.delta1_), delta2_(other.delta2_), hashes_(other.hashes_), keys_(other.keys_)
+
300 {
+
301  other.size_ = 0;
+
302  other.capacity_ = 0;
+
303  other.buffer_ = nullptr;
+
304  other.delta1_ = nullptr;
+
305  other.delta2_ = nullptr;
+
306  other.hashes_ = nullptr;
+
307  other.keys_ = nullptr;
+
308 }
+
309 
+
310 template <class K, class HashFunc>
+ +
312 {
+
313  if (this == &other)
+
314  return *this;
+
315 
+
316  if (other.size_ > capacity_)
+
317  {
+
318  destructKeys();
+
319  deallocate();
+
320 
+
321  capacity_ = other.capacity_;
+
322  const unsigned int bytes = capacity_ * (sizeof(uint8_t) * 2 + sizeof(hash_t));
+
323  const unsigned int alignedBytes = bytes + 3 * AlignmentBytes; // 3 align adjustments in `initPointers()`
+
324 #if !NCINE_WITH_ALLOCATORS
+
325  buffer_ = static_cast<uint8_t *>(::operator new(alignedBytes));
+
326  keys_ = static_cast<K *>(::operator new(sizeof(K) * capacity_));
+
327 #else
+
328  buffer_ = static_cast<uint8_t *>(alloc_.allocate(alignedBytes));
+
329  keys_ = static_cast<K *>(alloc_.allocate(sizeof(K) * capacity_));
+
330 #endif
+
331  initPointers();
+
332  }
+
333 
+
334  for (unsigned int i = 0; i < capacity_; i++)
+
335  {
+
336  if (other.hashes_[i] != NullHash)
+
337  {
+
338  if (hashes_[i] != NullHash)
+
339  keys_[i] = other.keys_[i];
+
340  else
+
341  new (keys_ + i) K(other.keys_[i]);
+
342  }
+
343  else if (hashes_[i] != NullHash)
+
344  destructObject(keys_ + i);
+
345 
+
346  delta1_[i] = other.delta1_[i];
+
347  delta2_[i] = other.delta2_[i];
+
348  hashes_[i] = other.hashes_[i];
+
349  }
+
350  size_ = other.size_;
+
351 
+
352  return *this;
+
353 }
+
354 
+
355 template <class K, class HashFunc>
+ +
357 {
+
358  if (this != &other)
+
359  {
+
360  swap(*this, other);
+
361  other.clear();
+
362  }
+
363  return *this;
+
364 }
+
365 
+
367 template <class K, class HashFunc>
+ +
369 {
+
370  const hash_t hash = hashFunc_(key);
+
371  int unsigned bucketIndex = hash % capacity_;
+
372 
+
373  if (bucketFoundOrEmpty(bucketIndex, hash, key) == false)
+
374  {
+
375  if (delta1_[bucketIndex] != 0)
+
376  {
+
377  bucketIndex = addDelta1(bucketIndex);
+
378  if (bucketFound(bucketIndex, hash, key) == false)
+
379  {
+
380  while (delta2_[bucketIndex] != 0)
+
381  {
+
382  bucketIndex = addDelta2(bucketIndex);
+
383  // Found at ideal index + delta1 + (n * delta2)
+
384  if (bucketFound(bucketIndex, hash, key))
+
385  return false;
+
386  }
+
387 
+
388  // Adding at ideal index + delta1 + (n * delta2)
+
389  const unsigned int newIndex = linearSearch(bucketIndex + 1, hash, key);
+
390  delta2_[bucketIndex] = calcNewDelta(bucketIndex, newIndex);
+
391  insertKey(newIndex, hash, key);
+
392  return true;
+
393  }
+
394  else
+
395  {
+
396  // Found at ideal index + delta1
+
397  return false;
+
398  }
+
399  }
+
400  else
+
401  {
+
402  // Adding at ideal index + delta1
+
403  const unsigned int newIndex = linearSearch(bucketIndex + 1, hash, key);
+
404  delta1_[bucketIndex] = calcNewDelta(bucketIndex, newIndex);
+
405  insertKey(newIndex, hash, key);
+
406  return true;
+
407  }
+
408  }
+
409  else
+
410  {
+
411  // Using the ideal bucket index for the node
+
412  if (hashes_[bucketIndex] == NullHash)
+
413  {
+
414  insertKey(bucketIndex, hash, key);
+
415  return true;
+
416  }
+
417  else
+
418  return false;
+
419  }
+
420 }
+
421 
+
423 template <class K, class HashFunc>
+ +
425 {
+
426  const hash_t hash = hashFunc_(key);
+
427  int unsigned bucketIndex = hash % capacity_;
+
428 
+
429  if (bucketFoundOrEmpty(bucketIndex, hash, key) == false)
+
430  {
+
431  if (delta1_[bucketIndex] != 0)
+
432  {
+
433  bucketIndex = addDelta1(bucketIndex);
+
434  if (bucketFound(bucketIndex, hash, key) == false)
+
435  {
+
436  while (delta2_[bucketIndex] != 0)
+
437  {
+
438  bucketIndex = addDelta2(bucketIndex);
+
439  // Found at ideal index + delta1 + (n * delta2)
+
440  if (bucketFound(bucketIndex, hash, key))
+
441  return false;
+
442  }
+
443 
+
444  // Adding at ideal index + delta1 + (n * delta2)
+
445  const unsigned int newIndex = linearSearch(bucketIndex + 1, hash, key);
+
446  delta2_[bucketIndex] = calcNewDelta(bucketIndex, newIndex);
+
447  insertKey(newIndex, hash, nctl::move(key));
+
448  return true;
+
449  }
+
450  else
+
451  {
+
452  // Found at ideal index + delta1
+
453  return false;
+
454  }
+
455  }
+
456  else
+
457  {
+
458  // Adding at ideal index + delta1
+
459  const unsigned int newIndex = linearSearch(bucketIndex + 1, hash, key);
+
460  delta1_[bucketIndex] = calcNewDelta(bucketIndex, newIndex);
+
461  insertKey(newIndex, hash, nctl::move(key));
+
462  return true;
+
463  }
+
464  }
+
465  else
+
466  {
+
467  // Using the ideal bucket index for the node
+
468  if (hashes_[bucketIndex] == NullHash)
+
469  {
+
470  insertKey(bucketIndex, hash, nctl::move(key));
+
471  return true;
+
472  }
+
473  else
+
474  return false;
+
475  }
+
476 }
+
477 
+
478 template <class K, class HashFunc>
+ +
480 {
+
481  destructKeys();
+
482  initValues();
+
483 }
+
484 
+
485 template <class K, class HashFunc>
+
486 bool HashSet<K, HashFunc>::contains(const K &key) const
+
487 {
+
488  int unsigned bucketIndex = 0;
+
489  return findBucketIndex(key, bucketIndex);
+
490 }
+
491 
+
493 template <class K, class HashFunc>
+ +
495 {
+
496  int unsigned bucketIndex = 0;
+
497  const bool found = findBucketIndex(key, bucketIndex);
+
498 
+
499  K *returnedPtr = nullptr;
+
500  if (found)
+
501  returnedPtr = &keys_[bucketIndex];
+
502 
+
503  return returnedPtr;
+
504 }
+
505 
+
507 template <class K, class HashFunc>
+
508 const K *HashSet<K, HashFunc>::find(const K &key) const
+
509 {
+
510  int unsigned bucketIndex = 0;
+
511  const bool found = findBucketIndex(key, bucketIndex);
+
512 
+
513  const K *returnedPtr = nullptr;
+
514  if (found)
+
515  returnedPtr = &keys_[bucketIndex];
+
516 
+
517  return returnedPtr;
+
518 }
+
519 
+
521 template <class K, class HashFunc>
+ +
523 {
+
524  int unsigned foundBucketIndex = 0;
+
525  int unsigned prevFoundBucketIndex = 0;
+
526  const bool found = findBucketIndex(key, foundBucketIndex, prevFoundBucketIndex);
+
527  unsigned int bucketIndex = foundBucketIndex;
+
528 
+
529  if (found)
+
530  {
+
531  // The found bucket is the last of the chain, previous one needs a delta fix
+
532  if (foundBucketIndex != hashes_[foundBucketIndex] % capacity_ && delta2_[foundBucketIndex] == 0)
+
533  {
+
534  if (addDelta1(prevFoundBucketIndex) == foundBucketIndex)
+
535  delta1_[prevFoundBucketIndex] = 0;
+
536  else if (addDelta2(prevFoundBucketIndex) == foundBucketIndex)
+
537  delta2_[prevFoundBucketIndex] = 0;
+
538  }
+
539 
+
540  while (delta1_[bucketIndex] != 0 || delta2_[bucketIndex] != 0)
+
541  {
+
542  unsigned int lastBucketIndex = bucketIndex;
+
543  if (delta1_[lastBucketIndex] != 0)
+
544  lastBucketIndex = addDelta1(lastBucketIndex);
+
545  if (delta2_[lastBucketIndex] != 0)
+
546  {
+
547  unsigned int secondLastBucketIndex = lastBucketIndex;
+
548  while (delta2_[lastBucketIndex] != 0)
+
549  {
+
550  secondLastBucketIndex = lastBucketIndex;
+
551  lastBucketIndex = addDelta2(lastBucketIndex);
+
552  }
+
553  delta2_[secondLastBucketIndex] = 0;
+
554  }
+
555  else
+
556  delta1_[bucketIndex] = 0;
+
557 
+
558  if (bucketIndex != lastBucketIndex)
+
559  {
+
560  keys_[bucketIndex] = nctl::move(keys_[lastBucketIndex]);
+
561  hashes_[bucketIndex] = hashes_[lastBucketIndex];
+
562  }
+
563 
+
564  bucketIndex = lastBucketIndex;
+
565  }
+
566 
+
567  hashes_[bucketIndex] = NullHash;
+
568  destructObject(keys_ + bucketIndex);
+
569  size_--;
+
570  }
+
571 
+
572  return found;
+
573 }
+
574 
+
575 template <class K, class HashFunc>
+
576 void HashSet<K, HashFunc>::rehash(unsigned int count)
+
577 {
+
578  if (size_ == 0 || count < size_)
+
579  return;
+
580 
+
581  HashSet<K, HashFunc> hashSet(count);
+
582 
+
583  unsigned int rehashedKeys = 0;
+
584  for (unsigned int i = 0; i < capacity_; i++)
+
585  {
+
586  if (hashes_[i] != NullHash)
+
587  {
+
588  hashSet.insert(nctl::move(keys_[i]));
+
589 
+
590  rehashedKeys++;
+
591  if (rehashedKeys == size_)
+
592  break;
+
593  }
+
594  }
+
595 
+
596  *this = nctl::move(hashSet);
+
597 }
+
598 
+
599 template <class K, class HashFunc>
+ +
601 {
+
602  unsigned int alignAdjustment = PointerMath::alignAdjustment(buffer_, AlignmentBytes);
+
603  uint8_t *pointer = reinterpret_cast<uint8_t*>(PointerMath::align(buffer_, AlignmentBytes));
+
604  delta1_ = pointer;
+
605  pointer += sizeof(uint8_t) * capacity_;
+
606 
+
607  alignAdjustment += PointerMath::alignAdjustment(pointer, AlignmentBytes);
+
608  pointer = reinterpret_cast<uint8_t*>(PointerMath::align(pointer, AlignmentBytes));
+
609  delta2_ = pointer;
+
610  pointer += sizeof(uint8_t) * capacity_;
+
611 
+
612  alignAdjustment += PointerMath::alignAdjustment(pointer, AlignmentBytes);
+
613  pointer = reinterpret_cast<uint8_t*>(PointerMath::align(pointer, AlignmentBytes));
+
614  hashes_ = reinterpret_cast<hash_t *>(pointer);
+
615  pointer += sizeof(hash_t) * capacity_;
+
616 
+
617  const unsigned int bytes = capacity_ * (sizeof(uint8_t) * 2 + sizeof(hash_t));
+
618  FATAL_ASSERT(pointer == buffer_ + bytes + alignAdjustment);
+
619 }
+
620 
+
621 template <class K, class HashFunc>
+
622 void HashSet<K, HashFunc>::initValues()
+
623 {
+
624  for (unsigned int i = 0; i < capacity_; i++)
+
625  delta1_[i] = 0;
+
626  for (unsigned int i = 0; i < capacity_; i++)
+
627  delta2_[i] = 0;
+
628  for (unsigned int i = 0; i < capacity_; i++)
+
629  hashes_[i] = NullHash;
+
630 }
+
631 
+
632 template <class K, class HashFunc>
+
633 void HashSet<K, HashFunc>::destructKeys()
+
634 {
+
635  for (unsigned int i = 0; i < capacity_; i++)
+
636  {
+
637  if (hashes_[i] != NullHash)
+
638  {
+
639  destructObject(keys_ + i);
+
640  hashes_[i] = NullHash;
+
641  }
+
642  }
+
643  size_ = 0;
+
644 }
+
645 
+
646 template <class K, class HashFunc>
+
647 void HashSet<K, HashFunc>::deallocate()
+
648 {
+
649 #if !NCINE_WITH_ALLOCATORS
+
650  ::operator delete(buffer_);
+
651  ::operator delete(keys_);
+
652 #else
+
653  alloc_.deallocate(buffer_);
+
654  alloc_.deallocate(keys_);
+
655 #endif
+
656 }
+
657 
+
658 template <class K, class HashFunc>
+
659 bool HashSet<K, HashFunc>::findBucketIndex(const K &key, unsigned int &foundIndex, unsigned int &prevFoundIndex) const
+
660 {
+
661  if (size_ == 0)
+
662  return false;
+
663 
+
664  bool found = false;
+
665  const hash_t hash = hashFunc_(key);
+
666  foundIndex = hash % capacity_;
+
667  prevFoundIndex = foundIndex;
+
668 
+
669  if (bucketFoundOrEmpty(foundIndex, hash, key) == false)
+
670  {
+
671  if (delta1_[foundIndex] != 0)
+
672  {
+
673  prevFoundIndex = foundIndex;
+
674  foundIndex = addDelta1(foundIndex);
+
675  if (bucketFound(foundIndex, hash, key) == false)
+
676  {
+
677  while (delta2_[foundIndex] != 0)
+
678  {
+
679  prevFoundIndex = foundIndex;
+
680  foundIndex = addDelta2(foundIndex);
+
681  if (bucketFound(foundIndex, hash, key))
+
682  {
+
683  // Found at ideal index + delta1 + (n * delta2)
+
684  found = true;
+
685  break;
+
686  }
+
687  }
+
688  }
+
689  else
+
690  {
+
691  // Found at ideal index + delta1
+
692  found = true;
+
693  }
+
694  }
+
695  }
+
696  else
+
697  {
+
698  if (hashes_[foundIndex] != NullHash)
+
699  {
+
700  // Found at ideal bucket index
+
701  found = true;
+
702  }
+
703  }
+
704 
+
705  return found;
+
706 }
+
707 
+
708 template <class K, class HashFunc>
+
709 bool HashSet<K, HashFunc>::findBucketIndex(const K &key, unsigned int &foundIndex) const
+
710 {
+
711  unsigned int prevFoundIndex = 0;
+
712  return findBucketIndex(key, foundIndex, prevFoundIndex);
+
713 }
+
714 
+
715 template <class K, class HashFunc>
+
716 unsigned int HashSet<K, HashFunc>::addDelta1(unsigned int bucketIndex) const
+
717 {
+
718  unsigned int newIndex = bucketIndex + delta1_[bucketIndex];
+
719  if (newIndex > capacity_ - 1)
+
720  newIndex -= capacity_;
+
721  return newIndex;
+
722 }
+
723 
+
724 template <class K, class HashFunc>
+
725 unsigned int HashSet<K, HashFunc>::addDelta2(unsigned int bucketIndex) const
+
726 {
+
727  unsigned int newIndex = bucketIndex + delta2_[bucketIndex];
+
728  if (newIndex > capacity_ - 1)
+
729  newIndex -= capacity_;
+
730  return newIndex;
+
731 }
+
732 
+
733 template <class K, class HashFunc>
+
734 unsigned int HashSet<K, HashFunc>::calcNewDelta(unsigned int bucketIndex, unsigned int newIndex) const
+
735 {
+
736  unsigned int delta = 0;
+
737  if (newIndex >= bucketIndex)
+
738  delta = newIndex - bucketIndex;
+
739  else
+
740  delta = capacity_ - bucketIndex + newIndex;
+
741 
+
742  FATAL_ASSERT(delta < 256); // deltas are uint8_t
+
743  return delta;
+
744 }
+
745 
+
746 template <class K, class HashFunc>
+
747 unsigned int HashSet<K, HashFunc>::linearSearch(unsigned int index, hash_t hash, const K &key) const
+
748 {
+
749  for (unsigned int i = index; i < capacity_; i++)
+
750  {
+
751  if (bucketFoundOrEmpty(i, hash, key))
+
752  return i;
+
753  }
+
754 
+
755  for (unsigned int i = 0; i < index; i++)
+
756  {
+
757  if (bucketFoundOrEmpty(i, hash, key))
+
758  return i;
+
759  }
+
760 
+
761  return index;
+
762 }
+
763 
+
764 template <class K, class HashFunc>
+
765 bool HashSet<K, HashFunc>::bucketFoundOrEmpty(unsigned int index, hash_t hash, const K &key) const
+
766 {
+
767  return (hashes_[index] == NullHash || (hashes_[index] == hash && equalTo(keys_[index], key)));
+
768 }
+
769 
+
770 template <class K, class HashFunc>
+
771 bool HashSet<K, HashFunc>::bucketFound(unsigned int index, hash_t hash, const K &key) const
+
772 {
+
773  return (hashes_[index] == hash && equalTo(keys_[index], key));
+
774 }
+
775 
+
776 template <class K, class HashFunc>
+
777 void HashSet<K, HashFunc>::insertKey(unsigned int index, hash_t hash, const K &key)
+
778 {
+
779  FATAL_ASSERT(size_ < capacity_);
+
780  FATAL_ASSERT(hashes_[index] == NullHash);
+
781 
+
782  size_++;
+
783  hashes_[index] = hash;
+
784  new (keys_ + index) K(key);
+
785 }
+
786 
+
787 template <class K, class HashFunc>
+
788 void HashSet<K, HashFunc>::insertKey(unsigned int index, hash_t hash, K &&key)
+
789 {
+
790  FATAL_ASSERT(size_ < capacity_);
+
791  FATAL_ASSERT(hashes_[index] == NullHash);
+
792 
+
793  size_++;
+
794  hashes_[index] = hash;
+
795  new (keys_ + index) K(nctl::move(key));
+
796 }
+
797 
+
798 }
+
799 
+
800 #endif
+
A template based hashset implementation with open addressing and leapfrog probing.
Definition: HashSet.h:26
+
hash_t hash(const K &key) const
Returns the hash of a given key.
Definition: HashSet.h:109
+
bool isEmpty() const
Returns true if the hashset is empty.
Definition: HashSet.h:103
+
ConstIterator cBegin() const
Returns a constant iterator to the first element.
Definition: HashSet.h:87
+
float loadFactor() const
Returns the ratio between used and total buckets.
Definition: HashSet.h:107
+
HashSet & operator=(const HashSet &other)
Assignment operator.
Definition: HashSet.h:311
+
K * find(const K &key)
Checks whether an element is in the hashset or not.
Definition: HashSet.h:494
+
ConstReverseIterator crEnd() const
Returns a constant reverse iterator to prior the first element.
Definition: HashSet.h:93
+
ConstIterator end()
Returns a constant iterator to past the last element.
Definition: HashSet.h:176
+
ConstReverseIterator rEnd()
Returns a reverse constant iterator to prior the first element.
Definition: HashSet.h:182
+
HashSetIterator< K, HashFunc > ConstIterator
Constant iterator type.
Definition: HashSet.h:32
+
ConstIterator cEnd() const
Returns a constant iterator to past the last lement.
Definition: HashSet.h:91
+
ConstReverseIterator crBegin() const
Returns a constant reverse iterator to the last element.
Definition: HashSet.h:89
+
bool remove(const K &key)
Removes a key from the hashset, if it exists.
Definition: HashSet.h:522
+
void rehash(unsigned int count)
Sets the number of buckets to the new specified size and rehashes the container.
Definition: HashSet.h:576
+
void clear()
Clears the hashset.
Definition: HashSet.h:479
+
ConstIterator begin()
Returns a constant iterator to the first element.
Definition: HashSet.h:162
+
bool insert(const K &key)
Inserts an element if not already in.
Definition: HashSet.h:368
+
ConstReverseIterator rBegin()
Returns a reverse constant iterator to the last element.
Definition: HashSet.h:169
+
void swap(HashSet &first, HashSet &second)
Swaps two hashsets without copying their data.
Definition: HashSet.h:54
+
bool contains(const K &key) const
Checks whether an element is in the hashset or not.
Definition: HashSet.h:486
+
nctl::ReverseIterator< ConstIterator > ConstReverseIterator
Reverse constant iterator type.
Definition: HashSet.h:36
+
unsigned int capacity() const
Returns the capacity of the hashset.
Definition: HashSet.h:101
+
unsigned int size() const
Returns the number of elements in the hashset.
Definition: HashSet.h:105
+
A hashset iterator.
Definition: HashSetIterator.h:19
+
The allocator interface.
Definition: IAllocator.h:18
+
A generic reverse iterator.
Definition: ReverseIterator.h:11
+
Base helper structure for type traits used in the hashset iterator.
Definition: HashSetIterator.h:12
+
+ + + + diff --git a/master/_hash_set_iterator_8h_source.html b/master/_hash_set_iterator_8h_source.html new file mode 100644 index 0000000000..0fad3c159e --- /dev/null +++ b/master/_hash_set_iterator_8h_source.html @@ -0,0 +1,306 @@ + + + + + + + +nCine: include/nctl/HashSetIterator.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
HashSetIterator.h
+
+
+
1 #ifndef CLASS_NCTL_HASHSETITERATOR
+
2 #define CLASS_NCTL_HASHSETITERATOR
+
3 
+
4 #include "HashSet.h"
+
5 #include "iterator.h"
+
6 
+
7 namespace nctl {
+
8 
+
10 template <class K, class HashFunc>
+ +
12 {
+
13  using HashSetPtr = const HashSet<K, HashFunc> *;
+
14 };
+
15 
+
17 template <class K, class HashFunc>
+ +
19 {
+
20  public:
+ +
23 
+
25  enum class SentinelTagInit
+
26  {
+
28  BEGINNING,
+
30  END
+
31  };
+
32 
+
33  HashSetIterator(typename HashSetHelperTraits<K, HashFunc>::HashSetPtr hashSet, unsigned int bucketIndex)
+
34  : hashSet_(hashSet), bucketIndex_(bucketIndex), tag_(SentinelTag::REGULAR) {}
+
35 
+
36  HashSetIterator(typename HashSetHelperTraits<K, HashFunc>::HashSetPtr hashSet, SentinelTagInit tag);
+
37 
+
39  Reference operator*() const;
+
40 
+
42  HashSetIterator &operator++();
+
44  HashSetIterator operator++(int);
+
45 
+
47  HashSetIterator &operator--();
+
49  HashSetIterator operator--(int);
+
50 
+
52  friend inline bool operator==(const HashSetIterator &lhs, const HashSetIterator &rhs)
+
53  {
+
54  if (lhs.tag_ == SentinelTag::REGULAR && rhs.tag_ == SentinelTag::REGULAR)
+
55  return (lhs.hashSet_ == rhs.hashSet_ && lhs.bucketIndex_ == rhs.bucketIndex_);
+
56  else
+
57  return (lhs.tag_ == rhs.tag_);
+
58  }
+
59 
+
61  friend inline bool operator!=(const HashSetIterator &lhs, const HashSetIterator &rhs)
+
62  {
+
63  if (lhs.tag_ == SentinelTag::REGULAR && rhs.tag_ == SentinelTag::REGULAR)
+
64  return (lhs.hashSet_ != rhs.hashSet_ || lhs.bucketIndex_ != rhs.bucketIndex_);
+
65  else
+
66  return (lhs.tag_ != rhs.tag_);
+
67  }
+
68 
+
70  const K &key() const;
+
72  hash_t hash() const;
+
73 
+
74  private:
+
76  enum SentinelTag
+
77  {
+
79  REGULAR,
+
81  BEGINNING,
+
83  END
+
84  };
+
85 
+
86  typename HashSetHelperTraits<K, HashFunc>::HashSetPtr hashSet_;
+
87  unsigned int bucketIndex_;
+
88  SentinelTag tag_;
+
89 
+
91  void next();
+
93  void previous();
+
94 };
+
95 
+
97 template <class K, class HashFunc>
+
98 struct IteratorTraits<HashSetIterator<K, HashFunc>>
+
99 {
+
101  using ValueType = K;
+
103  using Pointer = const K *;
+
105  using Reference = const K &;
+ +
108 };
+
109 
+
110 template <class K, class HashFunc>
+
111 HashSetIterator<K, HashFunc>::HashSetIterator(typename HashSetHelperTraits<K, HashFunc>::HashSetPtr hashSet, SentinelTagInit tag)
+
112  : hashSet_(hashSet), bucketIndex_(0)
+
113 {
+
114  switch (tag)
+
115  {
+
116  case SentinelTagInit::BEGINNING: tag_ = SentinelTag::BEGINNING; break;
+
117  case SentinelTagInit::END: tag_ = SentinelTag::END; break;
+
118  }
+
119 }
+
120 
+
121 template <class K, class HashFunc>
+ +
123 {
+
124  return hashSet_->keys_[bucketIndex_];
+
125 }
+
126 
+
127 template <class K, class HashFunc>
+ +
129 {
+
130  next();
+
131  return *this;
+
132 }
+
133 
+
134 template <class K, class HashFunc>
+ +
136 {
+
137  // Create an unmodified copy to return
+
138  HashSetIterator<K, HashFunc> iterator = *this;
+
139  next();
+
140  return iterator;
+
141 }
+
142 
+
143 template <class K, class HashFunc>
+ +
145 {
+
146  previous();
+
147  return *this;
+
148 }
+
149 
+
150 template <class K, class HashFunc>
+ +
152 {
+
153  // Create an unmodified copy to return
+
154  HashSetIterator<K, HashFunc> iterator = *this;
+
155  previous();
+
156  return iterator;
+
157 }
+
158 
+
159 template <class K, class HashFunc>
+ +
161 {
+
162  return hashSet_->keys_[bucketIndex_];
+
163 }
+
164 
+
165 template <class K, class HashFunc>
+ +
167 {
+
168  return hashSet_->hashes_[bucketIndex_];
+
169 }
+
170 
+
171 template <class K, class HashFunc>
+ +
173 {
+
174  if (tag_ == SentinelTag::REGULAR)
+
175  {
+
176  if (bucketIndex_ >= hashSet_->capacity() - 1)
+
177  {
+
178  tag_ = SentinelTag::END;
+
179  return;
+
180  }
+
181  else
+
182  bucketIndex_++;
+
183  }
+
184  else if (tag_ == SentinelTag::BEGINNING)
+
185  {
+
186  tag_ = SentinelTag::REGULAR;
+
187  bucketIndex_ = 0;
+
188  }
+
189  else if (tag_ == SentinelTag::END)
+
190  return;
+
191 
+
192  // Search the first non empty index starting from the current one
+
193  while (bucketIndex_ < hashSet_->capacity() - 1 && hashSet_->hashes_[bucketIndex_] == NullHash)
+
194  bucketIndex_++;
+
195 
+
196  if (hashSet_->hashes_[bucketIndex_] == NullHash)
+
197  tag_ = SentinelTag::END;
+
198 }
+
199 
+
200 template <class K, class HashFunc>
+
201 void HashSetIterator<K, HashFunc>::previous()
+
202 {
+
203  if (tag_ == SentinelTag::REGULAR)
+
204  {
+
205  if (bucketIndex_ == 0)
+
206  {
+
207  tag_ = SentinelTag::BEGINNING;
+
208  return;
+
209  }
+
210  else
+
211  bucketIndex_--;
+
212  }
+
213  else if (tag_ == SentinelTag::END)
+
214  {
+
215  tag_ = SentinelTag::REGULAR;
+
216  bucketIndex_ = hashSet_->capacity() - 1;
+
217  }
+
218  else if (tag_ == SentinelTag::BEGINNING)
+
219  return;
+
220 
+
221  // Search the first non empty index starting from the current one
+
222  while (bucketIndex_ > 0 && hashSet_->hashes_[bucketIndex_] == NullHash)
+
223  bucketIndex_--;
+
224 
+
225  if (hashSet_->hashes_[bucketIndex_] == NullHash)
+
226  tag_ = SentinelTag::BEGINNING;
+
227 }
+
228 
+
229 }
+
230 
+
231 #endif
+
A template based hashset implementation with open addressing and leapfrog probing.
Definition: HashSet.h:26
+
A hashset iterator.
Definition: HashSetIterator.h:19
+
HashSetIterator & operator--()
Iterates to the previous element (prefix)
Definition: HashSetIterator.h:144
+
HashSetIterator & operator++()
Iterates to the next element (prefix)
Definition: HashSetIterator.h:128
+
SentinelTagInit
Sentinel tags to initialize the iterator at the beginning and end.
Definition: HashSetIterator.h:26
+
@ BEGINNING
Iterator at the beginning, next element is the first one.
+
@ END
Iterator at the end, previous element is the last one.
+
Reference operator*() const
Deferencing operator.
Definition: HashSetIterator.h:122
+
typename IteratorTraits< HashSetIterator >::Reference Reference
Reference type which respects iterator constness.
Definition: HashSetIterator.h:22
+
const K & key() const
Returns the key associated to the currently pointed element.
Definition: HashSetIterator.h:160
+
hash_t hash() const
Returns the hash associated to the currently pointed element.
Definition: HashSetIterator.h:166
+
friend bool operator==(const HashSetIterator &lhs, const HashSetIterator &rhs)
Equality operator.
Definition: HashSetIterator.h:52
+
friend bool operator!=(const HashSetIterator &lhs, const HashSetIterator &rhs)
Inequality operator.
Definition: HashSetIterator.h:61
+
Dispatching tag for iterators that can move both ways, one element at a time.
Definition: iterator.h:11
+
Base helper structure for type traits used in the hashset iterator.
Definition: HashSetIterator.h:12
+
const K * Pointer
Pointer to the type of the values deferenced by the iterator.
Definition: HashSetIterator.h:103
+
const K & Reference
Reference to the type of the values deferenced by the iterator.
Definition: HashSetIterator.h:105
+
static BidirectionalIteratorTag IteratorCategory()
Type trait for iterator category.
Definition: HashSetIterator.h:107
+
K ValueType
Type of the values deferenced by the iterator (never const)
Definition: HashSetIterator.h:101
+
Base iterator traits structure.
Definition: iterator.h:19
+
+ + + + diff --git a/master/_hash_set_list_8h_source.html b/master/_hash_set_list_8h_source.html new file mode 100644 index 0000000000..03769da57a --- /dev/null +++ b/master/_hash_set_list_8h_source.html @@ -0,0 +1,725 @@ + + + + + + + +nCine: include/nctl/HashSetList.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
HashSetList.h
+
+
+
1 #ifndef CLASS_NCTL_HASHSETLIST
+
2 #define CLASS_NCTL_HASHSETLIST
+
3 
+
4 #include "Array.h"
+
5 #include "List.h"
+
6 #include "HashFunctions.h"
+
7 
+
8 #include <ncine/config.h>
+
9 #if NCINE_WITH_ALLOCATORS
+
10  #include "AllocManager.h"
+
11  #include "IAllocator.h"
+
12 #endif
+
13 
+
14 namespace nctl {
+
15 
+
16 template <class K, class HashFunc> class HashSetListIterator;
+
17 template <class K, class HashFunc> struct HashSetListHelperTraits;
+
18 class String;
+
19 
+
21 template <class K, class HashFunc = FNV1aHashFunc<K>>
+ +
23 {
+
24  public:
+ + + + +
33 
+
34  explicit HashSetList(unsigned int capacity);
+
35 #if NCINE_WITH_ALLOCATORS
+
36  HashSetList(unsigned int capacity, IAllocator &alloc);
+
37 #endif
+
38  ~HashSetList() { clear(); }
+
39 
+
41  HashSetList(const HashSetList &other);
+
43  HashSetList(HashSetList &&other);
+
45  HashSetList &operator=(const HashSetList &other);
+ +
48 
+
50  Iterator begin();
+ +
54  Iterator end();
+ +
57 
+
59  ConstIterator begin() const;
+ +
63  ConstIterator end() const;
+
65  ConstReverseIterator rEnd() const;
+
66 
+
68  inline ConstIterator cBegin() const { return begin(); }
+
70  inline ConstReverseIterator crBegin() const { return rBegin(); }
+
72  inline ConstIterator cEnd() const { return end(); }
+
74  inline ConstReverseIterator crEnd() const { return rEnd(); }
+
75 
+
77  bool insert(const K &key);
+
79  bool insert(K &&key);
+
80 
+
82  inline bool isEmpty() const { return size() == 0; }
+
84  unsigned int size() const;
+
86  inline float loadFactor() const { return size() / static_cast<float>(buckets_.size()); }
+
88  inline unsigned int bucketAmount() const { return buckets_.size(); }
+
90  inline unsigned int bucketSize(const K &key) const { return retrieveBucket(hashFunc_(key)).size(); }
+
92  inline unsigned int bucket(const K &key) const { return hashFunc_(key) % buckets_.size(); }
+
94  inline hash_t hash(const K &key) const { return hashFunc_(key); }
+
95 
+
97  void clear();
+
99  bool contains(const K &key) const;
+
101  K *find(const K &key);
+
103  const K *find(const K &key) const;
+
105  bool remove(const K &key);
+
106 
+
108  void rehash(unsigned int count);
+
109 
+
110  private:
+
112  class Node
+
113  {
+
114  public:
+
115  hash_t hash;
+
116  K key;
+
117 
+
118  Node()
+
119  : hash(NullHash) {}
+
120  Node(hash_t hh, const K &kk)
+
121  : hash(hh), key(kk) {}
+
122  Node(hash_t hh, K &&kk)
+
123  : hash(hh), key(nctl::move(kk)) {}
+
124  };
+
125 
+
127  class HashBucket
+
128  {
+
129  public:
+
130 #if !NCINE_WITH_ALLOCATORS
+
131  HashBucket()
+
132  : size_(0) {}
+
133 #else
+
134  HashBucket()
+
135  : alloc_(theDefaultAllocator()), size_(0), collisionList_(theDefaultAllocator()) {}
+
136  HashBucket(IAllocator &alloc)
+
137  : alloc_(alloc), size_(0), collisionList_(alloc) {}
+
138 #endif
+
139  inline ~HashBucket() { clear(); }
+
140 
+
141  HashBucket(const HashBucket &other);
+
142  HashBucket(HashBucket &&other);
+
143  HashBucket &operator=(const HashBucket &other);
+
144  HashBucket &operator=(HashBucket &&other);
+
145 
+
146  unsigned int size() const { return size_; }
+
147  void clear();
+
148  bool contains(hash_t hash, const K &key) const;
+
149  K *find(hash_t hash, const K &key);
+
150  const K *find(hash_t hash, const K &key) const;
+
151  K &findOrInsert(hash_t hash, const K &key);
+
152  bool insert(hash_t hash, const K &key);
+
153  bool insert(hash_t hash, K &&key);
+
154  bool remove(hash_t hash, const K &key);
+
155 
+
156  private:
+
157 #if NCINE_WITH_ALLOCATORS
+
159  IAllocator &alloc_;
+
160 #endif
+
162  unsigned int size_;
+
163  unsigned char firstNodeBuffer_[sizeof(Node)];
+
165  Node &firstNode_ = reinterpret_cast<Node &>(firstNodeBuffer_);
+
167  List<Node> collisionList_;
+
168 
+
169  Node *findNode(hash_t hash, const K &key);
+
170  const Node *findNode(hash_t hash, const K &key) const;
+
171 
+
172  friend class HashSetListIterator<K, HashFunc>;
+
173  friend class HashSetList<K, HashFunc>;
+
174  };
+
175 
+
176  Array<HashBucket> buckets_;
+
177  HashFunc hashFunc_;
+
178 
+
179  HashBucket &retrieveBucket(hash_t hash);
+
180  const HashBucket &retrieveBucket(hash_t hash) const;
+
181 
+
182  friend class HashSetListIterator<K, HashFunc>;
+
183  friend struct HashSetListHelperTraits<K, HashFunc>;
+
184 };
+
185 
+
186 template <class K, class HashFunc>
+ +
188 {
+
189  Iterator iterator(this, Iterator::SentinelTagInit::BEGINNING);
+
190  return ++iterator;
+
191 }
+
192 
+
193 template <class K, class HashFunc>
+ +
195 {
+
196  Iterator iterator(this, Iterator::SentinelTagInit::END);
+
197  return ReverseIterator(--iterator);
+
198 }
+
199 
+
200 template <class K, class HashFunc>
+ +
202 {
+
203  return Iterator(this, Iterator::SentinelTagInit::END);
+
204 }
+
205 
+
206 template <class K, class HashFunc>
+ +
208 {
+
209  Iterator iterator(this, Iterator::SentinelTagInit::BEGINNING);
+
210  return ReverseIterator(iterator);
+
211 }
+
212 
+
213 template <class K, class HashFunc>
+ +
215 {
+
216  ConstIterator iterator(this, ConstIterator::SentinelTagInit::BEGINNING);
+
217  return ++iterator;
+
218 }
+
219 
+
220 template <class K, class HashFunc>
+ +
222 {
+
223  ConstIterator iterator(this, ConstIterator::SentinelTagInit::END);
+
224  return ConstReverseIterator(--iterator);
+
225 }
+
226 
+
227 template <class K, class HashFunc>
+ +
229 {
+
230  return ConstIterator(this, ConstIterator::SentinelTagInit::END);
+
231 }
+
232 
+
233 template <class K, class HashFunc>
+ +
235 {
+
236  ConstIterator iterator(this, ConstIterator::SentinelTagInit::BEGINNING);
+
237  return ConstReverseIterator(iterator);
+
238 }
+
239 
+
240 template <class K, class HashFunc>
+ +
242  :
+
243 #if NCINE_WITH_ALLOCATORS
+
244  alloc_(other.alloc_),
+
245 #endif
+
246  size_(other.size_), collisionList_(other.collisionList_)
+
247 {
+
248  if (other.size_ > 0)
+
249  new (&firstNode_) Node(other.firstNode_.hash, other.firstNode_.key);
+
250 }
+
251 
+
252 template <class K, class HashFunc>
+
253 HashSetList<K, HashFunc>::HashBucket::HashBucket(HashBucket &&other)
+
254  :
+
255 #if NCINE_WITH_ALLOCATORS
+
256  alloc_(other.alloc_),
+
257 #endif
+
258  size_(other.size_), collisionList_(nctl::move(other.collisionList_))
+
259 {
+
260  if (other.size_ > 0)
+
261  new (&firstNode_) Node(nctl::move(other.firstNode_));
+
262  other.clear();
+
263 }
+
264 
+
265 template <class K, class HashFunc>
+
266 typename HashSetList<K, HashFunc>::HashBucket &HashSetList<K, HashFunc>::HashBucket::operator=(const HashBucket &other)
+
267 {
+
268  if (other.size_ > 0 && size_ > 0)
+
269  firstNode_ = other.firstNode_;
+
270  else if (other.size_ > 0 && size_ == 0)
+
271  new (&firstNode_) Node(other.firstNode_.hash, other.firstNode_.key);
+
272  else if (size_ > 0 && other.size_ == 0)
+
273  destructObject(&firstNode_);
+
274 
+
275  collisionList_ = other.collisionList_;
+
276  size_ = other.size_;
+
277  return *this;
+
278 }
+
279 
+
280 template <class K, class HashFunc>
+
281 typename HashSetList<K, HashFunc>::HashBucket &HashSetList<K, HashFunc>::HashBucket::operator=(HashBucket &&other)
+
282 {
+
283 #if NCINE_WITH_ALLOCATORS
+
284  alloc_ = other.alloc_;
+
285 #endif
+
286  if (other.size_ > 0 && size_ > 0)
+
287  firstNode_ = nctl::move(other.firstNode_);
+
288  else if (other.size_ > 0 && size_ == 0)
+
289  new (&firstNode_) Node(nctl::move(other.firstNode_));
+
290  else if (size_ > 0 && other.size_ == 0)
+
291  destructObject(&firstNode_);
+
292 
+
293  collisionList_ = nctl::move(other.collisionList_);
+
294  size_ = other.size_;
+
295  other.clear();
+
296  return *this;
+
297 }
+
298 
+
299 template <class K, class HashFunc>
+
300 void HashSetList<K, HashFunc>::HashBucket::clear()
+
301 {
+
302  if (size_ > 1)
+
303  collisionList_.clear();
+
304  if (size_ > 0)
+
305  destructObject(&firstNode_);
+
306  size_ = 0;
+
307 }
+
308 
+
309 template <class K, class HashFunc>
+
310 bool HashSetList<K, HashFunc>::HashBucket::contains(hash_t hash, const K &key) const
+
311 {
+
312  const Node *node = findNode(hash, key);
+
313  return (node != nullptr);
+
314 }
+
315 
+
316 template <class K, class HashFunc>
+
317 K *HashSetList<K, HashFunc>::HashBucket::find(hash_t hash, const K &key)
+
318 {
+
319  Node *node = findNode(hash, key);
+
320 
+
321  if (node)
+
322  return &(node->key);
+
323 
+
324  return nullptr;
+
325 }
+
326 
+
327 template <class K, class HashFunc>
+
328 const K *HashSetList<K, HashFunc>::HashBucket::find(hash_t hash, const K &key) const
+
329 {
+
330  const Node *node = findNode(hash, key);
+
331 
+
332  if (node)
+
333  return &(node->key);
+
334 
+
335  return nullptr;
+
336 }
+
337 
+
338 template <class K, class HashFunc>
+
339 K &HashSetList<K, HashFunc>::HashBucket::findOrInsert(hash_t hash, const K &key)
+
340 {
+
341  if (size_ == 0)
+
342  {
+
343  // Early-out if the bucket is empty
+
344  new (&firstNode_) Node(hash, key);
+
345  size_++;
+
346  return firstNode_.key;
+
347  }
+
348 
+
349  Node *node = findNode(hash, key);
+
350  if (node)
+
351  return node->key;
+
352 
+
353  // The item has not been found, a new entry is created at the end of the list
+
354  size_++;
+
355  collisionList_.pushBack(Node(hash, key));
+
356  return collisionList_.back().key;
+
357 }
+
358 
+
359 template <class K, class HashFunc>
+
360 bool HashSetList<K, HashFunc>::HashBucket::insert(hash_t hash, const K &key)
+
361 {
+
362  if (size_ == 0)
+
363  {
+
364  // Early-out if the bucket is empty
+
365  new (&firstNode_) Node(hash, key);
+
366  size_++;
+
367  return true;
+
368  }
+
369 
+
370  Node *node = findNode(hash, key);
+
371  if (node)
+
372  return false;
+
373 
+
374  // The item has not been found, a new entry is created at the end of the list
+
375  size_++;
+
376  collisionList_.pushBack(Node(hash, key));
+
377  return true;
+
378 }
+
379 
+
380 template <class K, class HashFunc>
+
381 bool HashSetList<K, HashFunc>::HashBucket::insert(hash_t hash, K &&key)
+
382 {
+
383  if (size_ == 0)
+
384  {
+
385  // Early-out if the bucket is empty
+
386  new (&firstNode_) Node(hash, nctl::move(key));
+
387  size_++;
+
388  return true;
+
389  }
+
390 
+
391  Node *node = findNode(hash, key);
+
392  if (node)
+
393  return false;
+
394 
+
395  // The item has not been found, a new entry is created at the end of the list
+
396  size_++;
+
397  collisionList_.pushBack(Node(hash, nctl::move(key)));
+
398  return true;
+
399 }
+
400 
+
402 template <class K, class HashFunc>
+
403 bool HashSetList<K, HashFunc>::HashBucket::remove(hash_t hash, const K &key)
+
404 {
+
405  // Early-out if the bucket is empty
+
406  if (size_ == 0)
+
407  return false;
+
408 
+
409  bool found = false;
+
410  if (firstNode_.hash == hash && equalTo(firstNode_.key, key))
+
411  {
+
412  // The item has been found in the direct access node
+
413  found = true;
+
414  destructObject(&firstNode_);
+
415 
+
416  // Bring the first element of the list, if any, as direct access node
+
417  if (collisionList_.isEmpty() == false)
+
418  {
+
419  firstNode_ = collisionList_.front();
+
420  collisionList_.popFront();
+
421  }
+
422  size_--;
+
423  }
+
424  else
+
425  {
+
426  for (typename List<Node>::ConstIterator i = collisionList_.begin(); i != collisionList_.end(); ++i)
+
427  {
+
428  if ((*i).hash == hash && equalTo((*i).key, key))
+
429  {
+
430  // The item has been found in the list
+
431  found = true;
+
432  i = collisionList_.erase(i);
+
433  size_--;
+
434 
+
435  // The item has been removed and the iterator is no longer valid
+
436  break;
+
437  }
+
438  }
+
439  }
+
440 
+
441  return found;
+
442 }
+
443 
+
444 template <class K, class HashFunc>
+
445 typename HashSetList<K, HashFunc>::Node *HashSetList<K, HashFunc>::HashBucket::findNode(hash_t hash, const K &key)
+
446 {
+
447  if (size_ == 0)
+
448  return nullptr;
+
449 
+
450  if (firstNode_.hash == hash && equalTo(firstNode_.key, key))
+
451  // The item has been found in the direct access node
+
452  return &firstNode_;
+
453  else
+
454  {
+
455  for (typename List<Node>::Iterator i = collisionList_.begin(); i != collisionList_.end(); ++i)
+
456  {
+
457  // The item has been found in the list
+
458  if ((*i).hash == hash && equalTo((*i).key, key))
+
459  return &(*i);
+
460  }
+
461  }
+
462 
+
463  return nullptr;
+
464 }
+
465 
+
466 template <class K, class HashFunc>
+
467 const typename HashSetList<K, HashFunc>::Node *HashSetList<K, HashFunc>::HashBucket::findNode(hash_t hash, const K &key) const
+
468 {
+
469  if (size_ == 0)
+
470  return nullptr;
+
471 
+
472  if (firstNode_.hash == hash && equalTo(firstNode_.key, key))
+
473  // The item has been found in the direct access node
+
474  return &firstNode_;
+
475  else
+
476  {
+
477  for (typename List<Node>::ConstIterator i = collisionList_.begin(); i != collisionList_.end(); ++i)
+
478  {
+
479  // The item has been found in the list
+
480  if ((*i).hash == hash && equalTo((*i).key, key))
+
481  return &(*i);
+
482  }
+
483  }
+
484 
+
485  return nullptr;
+
486 }
+
487 
+
488 #if !NCINE_WITH_ALLOCATORS
+
489 template <class K, class HashFunc>
+
490 HashSetList<K, HashFunc>::HashSetList(unsigned int capacity)
+
491  : buckets_(capacity, ArrayMode::FIXED_CAPACITY)
+
492 {
+
493  FATAL_ASSERT_MSG(capacity > 0, "Zero is not a valid capacity");
+
494 
+
495  for (unsigned int i = 0; i < capacity; i++)
+
496  buckets_.emplaceBack(HashBucket());
+
497 }
+
498 #else
+
499 template <class K, class HashFunc>
+
500 HashSetList<K, HashFunc>::HashSetList(unsigned int capacity)
+
501  : buckets_(capacity, ArrayMode::FIXED_CAPACITY, theDefaultAllocator())
+
502 {
+
503  FATAL_ASSERT_MSG(capacity > 0, "Zero is not a valid capacity");
+
504 
+
505  for (unsigned int i = 0; i < capacity; i++)
+
506  buckets_.emplaceBack(theDefaultAllocator());
+
507 }
+
508 
+
509 template <class K, class HashFunc>
+
510 HashSetList<K, HashFunc>::HashSetList(unsigned int capacity, IAllocator &alloc)
+
511  : buckets_(capacity, ArrayMode::FIXED_CAPACITY, alloc)
+
512 {
+
513  FATAL_ASSERT_MSG(capacity > 0, "Zero is not a valid capacity");
+
514 
+
515  for (unsigned int i = 0; i < capacity; i++)
+
516  buckets_.emplaceBack(alloc);
+
517 }
+
518 #endif
+
519 
+
520 template <class K, class HashFunc>
+ +
522  : buckets_(other.buckets_)
+
523 {
+
524 }
+
525 
+
526 template <class K, class HashFunc>
+ +
528  : buckets_(nctl::move(other.buckets_))
+
529 {
+
530 }
+
531 
+
532 template <class K, class HashFunc>
+ +
534 {
+
535  if (this != &other)
+
536  buckets_ = other.buckets_;
+
537  return *this;
+
538 }
+
539 
+
540 template <class K, class HashFunc>
+ +
542 {
+
543  if (this != &other)
+
544  buckets_ = nctl::move(other.buckets_);
+
545  return *this;
+
546 }
+
547 
+
549 template <class K, class HashFunc>
+ +
551 {
+
552  const hash_t hash = hashFunc_(key);
+
553  return retrieveBucket(hash).insert(hash, key);
+
554 }
+
555 
+
557 template <class K, class HashFunc>
+ +
559 {
+
560  const hash_t hash = hashFunc_(key);
+
561  return retrieveBucket(hash).insert(hash, nctl::move(key));
+
562 }
+
563 
+
564 template <class K, class HashFunc>
+
565 unsigned int HashSetList<K, HashFunc>::size() const
+
566 {
+
567  unsigned int totalSize = 0;
+
568  for (unsigned int i = 0; i < buckets_.size(); i++)
+
569  totalSize += buckets_[i].size();
+
570 
+
571  return totalSize;
+
572 }
+
573 
+
574 template <class K, class HashFunc>
+ +
576 {
+
577  for (unsigned int i = 0; i < buckets_.size(); i++)
+
578  buckets_[i].clear();
+
579 }
+
580 
+
581 template <class K, class HashFunc>
+
582 bool HashSetList<K, HashFunc>::contains(const K &key) const
+
583 {
+
584  const hash_t hash = hashFunc_(key);
+
585  return retrieveBucket(hash).contains(hash, key);
+
586 }
+
587 
+
589 template <class K, class HashFunc>
+ +
591 {
+
592  const hash_t hash = hashFunc_(key);
+
593  return retrieveBucket(hash).find(hash, key);
+
594 }
+
595 
+
597 template <class K, class HashFunc>
+
598 const K *HashSetList<K, HashFunc>::find(const K &key) const
+
599 {
+
600  const hash_t hash = hashFunc_(key);
+
601  return retrieveBucket(hash).find(hash, key);
+
602 }
+
603 
+
604 template <class K, class HashFunc>
+ +
606 {
+
607  const hash_t hash = hashFunc_(key);
+
608  return retrieveBucket(hash).remove(hash, key);
+
609 }
+
610 
+
611 template <class K, class HashFunc>
+
612 void HashSetList<K, HashFunc>::rehash(unsigned int count)
+
613 {
+
614  const unsigned int totalSize = size();
+
615  if (totalSize == 0 || count < totalSize)
+
616  return;
+
617 
+
618  HashSetList<K, HashFunc> hashSet(count);
+
619 
+
620  unsigned int bucketIndex = 0;
+
621  while (bucketIndex < buckets_.size() - 1)
+
622  {
+
623  while (bucketIndex < buckets_.size() - 1 && buckets_[bucketIndex].size() == 0)
+
624  bucketIndex++;
+
625 
+
626  HashBucket &bucket = buckets_[bucketIndex];
+
627  if (bucket.size() > 0)
+
628  {
+
629  hashSet.insert(nctl::move(bucket.firstNode_.key));
+
630  for (typename List<Node>::Iterator i = bucket.collisionList_.begin(); i != bucket.collisionList_.end(); ++i)
+
631  hashSet.insert(nctl::move((*i).key));
+
632 
+
633  ++bucketIndex;
+
634  }
+
635  }
+
636 
+
637  *this = nctl::move(hashSet);
+
638 }
+
639 
+
640 template <class K, class HashFunc>
+ +
642 {
+
643  const unsigned int index = hash % buckets_.size();
+
644  return buckets_[index];
+
645 }
+
646 
+
647 template <class K, class HashFunc>
+
648 const typename HashSetList<K, HashFunc>::HashBucket &HashSetList<K, HashFunc>::retrieveBucket(hash_t hash) const
+
649 {
+
650  const unsigned int index = hash % buckets_.size();
+
651  return buckets_[index];
+
652 }
+
653 
+
654 }
+
655 
+
656 #endif
+
void emplaceBack(Args &&... args)
Constructs a new element at the end of the array.
Definition: Array.h:418
+
unsigned int size() const
Returns the array size.
Definition: Array.h:115
+
A template based hashset implementation with separate chaining and list head cell.
Definition: HashSetList.h:23
+
hash_t hash(const K &key) const
Returns the hash of a given key.
Definition: HashSetList.h:94
+
nctl::ReverseIterator< ConstIterator > ConstReverseIterator
Reverse constant iterator type.
Definition: HashSetList.h:32
+
HashSetListIterator< K, HashFunc > ConstIterator
Constant iterator type.
Definition: HashSetList.h:28
+
HashSetList & operator=(const HashSetList &other)
Assignment operator.
Definition: HashSetList.h:533
+
void rehash(unsigned int count)
Sets the number of buckets to the new specified size and rehashes the container.
Definition: HashSetList.h:612
+
ConstIterator cBegin() const
Returns a constant iterator to the first element.
Definition: HashSetList.h:68
+
Iterator end()
Returns an iterator to past the last element.
Definition: HashSetList.h:201
+
bool remove(const K &key)
Removes a key from the hashSet, if it exists.
Definition: HashSetList.h:605
+
unsigned int size() const
Returns the number of elements in the hashSet.
Definition: HashSetList.h:565
+
ConstReverseIterator crBegin() const
Returns a constant reverse iterator to the last element.
Definition: HashSetList.h:70
+
K * find(const K &key)
Checks whether an element is in the hashSet or not.
Definition: HashSetList.h:590
+
bool insert(const K &key)
Inserts an element if no other has the same key.
Definition: HashSetList.h:550
+
bool isEmpty() const
Returns true if the hashSet is empty.
Definition: HashSetList.h:82
+
ReverseIterator rBegin()
Returns a reverse iterator to the last element.
Definition: HashSetList.h:194
+
ConstIterator cEnd() const
Returns a constant iterator to past the last lement.
Definition: HashSetList.h:72
+
void clear()
Clears the hashSet.
Definition: HashSetList.h:575
+
HashSetListIterator< K, HashFunc > Iterator
Iterator type.
Definition: HashSetList.h:26
+
Iterator begin()
Returns an iterator to the first element.
Definition: HashSetList.h:187
+
unsigned int bucket(const K &key) const
Returns the index of the bucket for the hash generated by the specified key.
Definition: HashSetList.h:92
+
unsigned int bucketAmount() const
Returns the number of buckets.
Definition: HashSetList.h:88
+
unsigned int bucketSize(const K &key) const
Returns the size of the bucket for the hash generated by the specified key.
Definition: HashSetList.h:90
+
float loadFactor() const
Returns the average number of elements per bucket,.
Definition: HashSetList.h:86
+
ConstReverseIterator crEnd() const
Returns a constant reverse iterator to prior the first element.
Definition: HashSetList.h:74
+
bool contains(const K &key) const
Checks whether an element is in the hashSet or not.
Definition: HashSetList.h:582
+
ReverseIterator rEnd()
Returns a reverse iterator to prior the first element.
Definition: HashSetList.h:207
+
A hashset iterator.
Definition: HashSetListIterator.h:23
+
The allocator interface.
Definition: IAllocator.h:18
+
A double linked list based on templates.
Definition: List.h:65
+
ListIterator< Node, false > Iterator
Iterator type.
Definition: List.h:68
+
Iterator begin()
Returns an iterator to the first element.
Definition: List.h:109
+
ListIterator< Node, true > ConstIterator
Constant iterator type.
Definition: List.h:70
+
A generic reverse iterator.
Definition: ReverseIterator.h:11
+
+ + + + diff --git a/master/_hash_set_list_iterator_8h_source.html b/master/_hash_set_list_iterator_8h_source.html new file mode 100644 index 0000000000..72b63d32c7 --- /dev/null +++ b/master/_hash_set_list_iterator_8h_source.html @@ -0,0 +1,391 @@ + + + + + + + +nCine: include/nctl/HashSetListIterator.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
HashSetListIterator.h
+
+
+
1 #ifndef CLASS_NCTL_HASHSETLISTITERATOR
+
2 #define CLASS_NCTL_HASHSETLISTITERATOR
+
3 
+
4 #include "HashSetList.h"
+
5 #include "iterator.h"
+
6 
+
7 namespace nctl {
+
8 
+
10 template <class K, class HashFunc>
+ +
12 {
+
13  using NodeType = typename HashSetList<K, HashFunc>::Node;
+ +
15  using BucketPtr = const typename HashSetList<K, HashFunc>::HashBucket *;
+
16  using ListIteratorType = typename List<NodeType>::ConstIterator;
+
17  using NodeReference = const NodeType &;
+
18 };
+
19 
+
21 template <class K, class HashFunc>
+ +
23 {
+
24  public:
+ +
27 
+
29  enum class SentinelTagInit
+
30  {
+
32  BEGINNING,
+
34  END
+
35  };
+
36 
+
37  HashSetListIterator(typename HashSetListHelperTraits<K, HashFunc>::HashSetListPtr hashSet, unsigned int bucketIndex,
+
38  typename HashSetListHelperTraits<K, HashFunc>::ListIteratorType listIterator, bool atFirstNode)
+
39  : hashSet_(hashSet), bucketIndex_(bucketIndex), listIterator_(listIterator), atFirstNode_(atFirstNode), tag_(SentinelTag::REGULAR) {}
+
40 
+
41  HashSetListIterator(typename HashSetListHelperTraits<K, HashFunc>::HashSetListPtr hashSet, SentinelTagInit tag);
+
42 
+
44  Reference operator*() const;
+
45 
+
47  HashSetListIterator &operator++();
+
49  HashSetListIterator operator++(int);
+
50 
+
52  HashSetListIterator &operator--();
+
54  HashSetListIterator operator--(int);
+
55 
+
57  friend inline bool operator==(const HashSetListIterator &lhs, const HashSetListIterator &rhs)
+
58  {
+
59  if (lhs.tag_ == SentinelTag::REGULAR && rhs.tag_ == SentinelTag::REGULAR)
+
60  {
+
61  return (lhs.hashSet_ == rhs.hashSet_ && lhs.bucketIndex_ == rhs.bucketIndex_ &&
+
62  lhs.listIterator_ == rhs.listIterator_ && lhs.atFirstNode_ == rhs.atFirstNode_);
+
63  }
+
64  else
+
65  return (lhs.tag_ == rhs.tag_);
+
66  }
+
67 
+
69  friend inline bool operator!=(const HashSetListIterator &lhs, const HashSetListIterator &rhs)
+
70  {
+
71  if (lhs.tag_ == SentinelTag::REGULAR && rhs.tag_ == SentinelTag::REGULAR)
+
72  {
+
73  return (lhs.hashSet_ != rhs.hashSet_ || lhs.bucketIndex_ != rhs.bucketIndex_ ||
+
74  lhs.listIterator_ != rhs.listIterator_ || lhs.atFirstNode_ != rhs.atFirstNode_);
+
75  }
+
76  else
+
77  return (lhs.tag_ != rhs.tag_);
+
78  }
+
79 
+
81  typename HashSetListHelperTraits<K, HashFunc>::NodeReference node() const;
+
83  const K &key() const;
+
85  hash_t hash() const;
+
86 
+
87  private:
+
89  enum SentinelTag
+
90  {
+
92  REGULAR,
+
94  BEGINNING,
+
96  END
+
97  };
+
98 
+
99  typename HashSetListHelperTraits<K, HashFunc>::HashSetListPtr hashSet_;
+
100  unsigned int bucketIndex_;
+
101  typename HashSetListHelperTraits<K, HashFunc>::ListIteratorType listIterator_;
+
102  bool atFirstNode_;
+
103  SentinelTag tag_;
+
104 
+
106  void next();
+
108  void previous();
+
110  void findFirstValid();
+
112  void findLastValid();
+
113 };
+
114 
+
116 template <class K, class HashFunc>
+ +
118 {
+
120  using ValueType = K;
+
122  using Pointer = const K *;
+
124  using Reference = const K &;
+ +
127 };
+
128 
+
129 template <class K, class HashFunc>
+
130 HashSetListIterator<K, HashFunc>::HashSetListIterator(typename HashSetListHelperTraits<K, HashFunc>::HashSetListPtr hashSet, SentinelTagInit tag)
+
131  : hashSet_(hashSet), bucketIndex_(0), listIterator_(nullptr), atFirstNode_(true)
+
132 {
+
133  switch (tag)
+
134  {
+
135  case SentinelTagInit::BEGINNING: tag_ = SentinelTag::BEGINNING; break;
+
136  case SentinelTagInit::END: tag_ = SentinelTag::END; break;
+
137  }
+
138 }
+
139 
+
140 template <class K, class HashFunc>
+ +
142 {
+
143  return node().key;
+
144 }
+
145 
+
146 template <class K, class HashFunc>
+ +
148 {
+
149  next();
+
150  return *this;
+
151 }
+
152 
+
153 template <class K, class HashFunc>
+ +
155 {
+
156  // Create an unmodified copy to return
+
157  HashSetListIterator<K, HashFunc> iterator = *this;
+
158  next();
+
159  return iterator;
+
160 }
+
161 
+
162 template <class K, class HashFunc>
+ +
164 {
+
165  previous();
+
166  return *this;
+
167 }
+
168 
+
169 template <class K, class HashFunc>
+ +
171 {
+
172  // Create an unmodified copy to return
+
173  HashSetListIterator<K, HashFunc> iterator = *this;
+
174  previous();
+
175  return iterator;
+
176 }
+
177 
+
178 template <class K, class HashFunc>
+
179 typename HashSetListHelperTraits<K, HashFunc>::NodeReference HashSetListIterator<K, HashFunc>::node() const
+
180 {
+
181  if (atFirstNode_)
+
182  return hashSet_->buckets_[bucketIndex_].firstNode_;
+
183  else
+
184  return *listIterator_;
+
185 }
+
186 
+
187 template <class K, class HashFunc>
+ +
189 {
+
190  return node().key;
+
191 }
+
192 
+
193 template <class K, class HashFunc>
+ +
195 {
+
196  return node().hash;
+
197 }
+
198 
+
199 template <class K, class HashFunc>
+ +
201 {
+
202  if (tag_ == SentinelTag::BEGINNING)
+
203  {
+
204  findFirstValid();
+
205  return;
+
206  }
+
207  else if (tag_ == SentinelTag::END)
+
208  return;
+
209 
+
210  typename HashSetListHelperTraits<K, HashFunc>::BucketPtr bucket = &(hashSet_->buckets_[bucketIndex_]);
+
211 
+
212  if (atFirstNode_)
+
213  {
+
214  atFirstNode_ = false;
+
215  listIterator_ = bucket->collisionList_.begin();
+
216  }
+
217  else
+
218  ++listIterator_;
+
219 
+
220  // The list iterator condition also applies when it points to the beginning of an empty list
+
221  if (listIterator_ == bucket->collisionList_.end())
+
222  {
+
223  if (bucketIndex_ == hashSet_->buckets_.size() - 1)
+
224  tag_ = SentinelTag::END;
+
225  else
+
226  {
+
227  do
+
228  {
+
229  bucket = &(hashSet_->buckets_[++bucketIndex_]);
+
230  } while (bucketIndex_ < hashSet_->buckets_.size() - 1 && bucket->size() == 0);
+
231  }
+
232 
+
233  if (bucket->size() == 0)
+
234  tag_ = SentinelTag::END;
+
235  else
+
236  atFirstNode_ = true;
+
237  }
+
238 }
+
239 
+
240 template <class K, class HashFunc>
+
241 void HashSetListIterator<K, HashFunc>::previous()
+
242 {
+
243  if (tag_ == SentinelTag::END)
+
244  {
+
245  findLastValid();
+
246  return;
+
247  }
+
248  else if (tag_ == SentinelTag::BEGINNING)
+
249  return;
+
250 
+
251  typename HashSetListHelperTraits<K, HashFunc>::BucketPtr bucket = &(hashSet_->buckets_[bucketIndex_]);
+
252 
+
253  if (atFirstNode_)
+
254  {
+
255  if (bucketIndex_ == 0)
+
256  tag_ = SentinelTag::BEGINNING;
+
257  else
+
258  {
+
259  do
+
260  {
+
261  bucket = &(hashSet_->buckets_[--bucketIndex_]);
+
262  } while (bucketIndex_ > 0 && bucket->size() == 0);
+
263  }
+
264 
+
265  if (bucket->size() == 0)
+
266  tag_ = SentinelTag::BEGINNING;
+
267  else if (bucket->size() > 1)
+
268  {
+
269  atFirstNode_ = false;
+
270  listIterator_ = --bucket->collisionList_.end();
+
271  }
+
272  }
+
273  else
+
274  --listIterator_;
+
275 
+
276  if (listIterator_ == bucket->collisionList_.end()) // nullptr sentinel
+
277  atFirstNode_ = true;
+
278 }
+
279 
+
280 template <class K, class HashFunc>
+
281 void HashSetListIterator<K, HashFunc>::findFirstValid()
+
282 {
+
283  tag_ = SentinelTag::REGULAR;
+
284  bucketIndex_ = 0;
+
285  typename HashSetListHelperTraits<K, HashFunc>::BucketPtr bucket = &(hashSet_->buckets_[bucketIndex_]);
+
286 
+
287  // Search the first non empty bucket starting from the first one
+
288  while (bucketIndex_ < hashSet_->buckets_.size() - 1 && bucket->size() == 0)
+
289  bucket = &(hashSet_->buckets_[++bucketIndex_]);
+
290 
+
291  if (bucket->size() == 0)
+
292  tag_ = SentinelTag::END;
+
293 }
+
294 
+
295 template <class K, class HashFunc>
+
296 void HashSetListIterator<K, HashFunc>::findLastValid()
+
297 {
+
298  tag_ = SentinelTag::REGULAR;
+
299  bucketIndex_ = hashSet_->buckets_.size() - 1;
+
300  typename HashSetListHelperTraits<K, HashFunc>::BucketPtr bucket = &(hashSet_->buckets_[bucketIndex_]);
+
301 
+
302  // Search the first non empty bucket starting from the last one
+
303  while (bucketIndex_ > 0 && bucket->size() == 0)
+
304  bucket = &(hashSet_->buckets_[--bucketIndex_]);
+
305 
+
306  if (bucket->size() > 1)
+
307  {
+
308  listIterator_ = --bucket->collisionList_.end();
+
309  atFirstNode_ = false;
+
310  }
+
311  else if (bucket->size() == 0)
+
312  tag_ = SentinelTag::BEGINNING;
+
313 }
+
314 
+
315 }
+
316 
+
317 #endif
+
A template based hashset implementation with separate chaining and list head cell.
Definition: HashSetList.h:23
+
A hashset iterator.
Definition: HashSetListIterator.h:23
+
HashSetListIterator & operator++()
Iterates to the next element (prefix)
Definition: HashSetListIterator.h:147
+
friend bool operator!=(const HashSetListIterator &lhs, const HashSetListIterator &rhs)
Inequality operator.
Definition: HashSetListIterator.h:69
+
friend bool operator==(const HashSetListIterator &lhs, const HashSetListIterator &rhs)
Equality operator.
Definition: HashSetListIterator.h:57
+
const K & key() const
Returns the key associated to the currently pointed node.
Definition: HashSetListIterator.h:188
+
HashSetListIterator & operator--()
Iterates to the previous element (prefix)
Definition: HashSetListIterator.h:163
+
SentinelTagInit
Sentinel tags to initialize the iterator at the beginning and end.
Definition: HashSetListIterator.h:30
+
HashSetListHelperTraits< K, HashFunc >::NodeReference node() const
Returns the hashset node currently pointed by the iterator.
Definition: HashSetListIterator.h:179
+
typename IteratorTraits< HashSetListIterator >::Reference Reference
Reference type which respects iterator constness.
Definition: HashSetListIterator.h:26
+
Reference operator*() const
Deferencing operator.
Definition: HashSetListIterator.h:141
+
@ BEGINNING
Iterator at the beginning, next element is the first one.
+
@ END
Iterator at the end, previous element is the last one.
+
hash_t hash() const
Returns the hash associated to the currently pointed node.
Definition: HashSetListIterator.h:194
+
A List iterator.
Definition: ListIterator.h:14
+
Dispatching tag for iterators that can move both ways, one element at a time.
Definition: iterator.h:11
+
Base helper structure for type traits used in the hashset iterator.
Definition: HashSetListIterator.h:12
+
const K & Reference
Reference to the type of the values deferenced by the iterator.
Definition: HashSetListIterator.h:124
+
static BidirectionalIteratorTag IteratorCategory()
Type trait for iterator category.
Definition: HashSetListIterator.h:126
+
K ValueType
Type of the values deferenced by the iterator (never const)
Definition: HashSetListIterator.h:120
+
const K * Pointer
Pointer to the type of the values deferenced by the iterator.
Definition: HashSetListIterator.h:122
+
Base iterator traits structure.
Definition: iterator.h:19
+
+ + + + diff --git a/master/_i_allocator_8h_source.html b/master/_i_allocator_8h_source.html new file mode 100644 index 0000000000..10e9082e80 --- /dev/null +++ b/master/_i_allocator_8h_source.html @@ -0,0 +1,333 @@ + + + + + + + +nCine: include/nctl/IAllocator.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
IAllocator.h
+
+
+
1 #ifndef CLASS_NCTL_IALLOCATOR
+
2 #define CLASS_NCTL_IALLOCATOR
+
3 
+
4 #include <cstdint>
+
5 #include <new>
+
6 #include <ncine/common_defines.h>
+
7 #include <ncine/allocators_config.h>
+
8 #include "utility.h"
+
9 
+
10 #ifdef RECORD_ALLOCATIONS
+
11  #include <ncine/TimeStamp.h>
+
12 #endif
+
13 
+
14 namespace nctl {
+
15 
+
17 class DLL_PUBLIC IAllocator
+
18 {
+
19  public:
+
21  static const uint8_t DefaultAlignment = 2 * sizeof(void *);
+
22 
+
24  static const unsigned int MaxNameLength = 64;
+
25 
+
26 #ifdef RECORD_ALLOCATIONS
+
27  struct Entry
+
28  {
+
29  ncine::TimeStamp timestamp;
+
30  void *ptr = nullptr;
+
31  size_t bytes = 0;
+
33  uint8_t alignment = DefaultAlignment;
+
34  size_t usedMemory;
+
35  size_t numAllocations;
+
36  };
+
37 
+
38  inline bool recordAllocations() const { return recordAllocations_; }
+
39  inline void setRecordAllocations(bool recordAllocations) { recordAllocations_ = recordAllocations; }
+
40 
+
41  inline const Entry &entry(size_t index) const { return entries_[index]; }
+
42  inline size_t numEntries() const { return numEntries_; }
+
43 
+
44  static const size_t InvalidEntryIndex = static_cast<size_t>(~0);
+
45  size_t findAllocation(void *ptr);
+
46  size_t findAllocationBeforeIndex(void *ptr, size_t index);
+
47  size_t findDeallocation(size_t index);
+
48  void printEntriesCSV();
+
49  void countNotFreed();
+
50  void printPointerCounters();
+
51 #endif
+
52 
+
53  using AllocateFunction = void *(*)(IAllocator *allocator, size_t, uint8_t);
+
54  using ReallocateFunction = void *(*)(IAllocator *allocator, void *, size_t, uint8_t, size_t &);
+
55  using DeallocateFunction = void (*)(IAllocator *allocator, void *);
+
56 
+
57  IAllocator(const char *name, AllocateFunction allocFunc, ReallocateFunction reallocFunc, DeallocateFunction deallocFunc)
+
58  : IAllocator(name, allocFunc, reallocFunc, deallocFunc, 0, nullptr) {}
+
59  IAllocator(const char *name, AllocateFunction allocFunc, ReallocateFunction reallocFunc, DeallocateFunction deallocFunc, size_t size, void *base);
+
60 
+
62  inline void *allocate(size_t bytes, uint8_t alignment) { return (*allocateFunc_)(this, bytes, alignment); }
+
63  inline void *allocate(size_t bytes) { return (*allocateFunc_)(this, bytes, DefaultAlignment); }
+
65  void *reallocate(void *ptr, size_t bytes, uint8_t alignment);
+
66  inline void *reallocate(void *ptr, size_t bytes) { return reallocate(ptr, bytes, DefaultAlignment); }
+
68  inline void deallocate(void *ptr) { (*deallocateFunc_)(this, ptr); }
+
69 
+
71  inline const char *name() const { return name_; }
+
73  inline size_t size() const { return size_; }
+
75  inline void *base() const { return base_; }
+
78  inline size_t usedMemory() const { return usedMemory_; }
+
81  inline size_t freeMemory() const { return size_ - usedMemory_; }
+
83  inline size_t numAllocations() const { return numAllocations_; }
+
84 
+
86  inline bool copyOnReallocation() const { return copyOnReallocation_; }
+
88 
+
89  inline void setCopyOnReallocation(bool value) { copyOnReallocation_ = value; }
+
90 
+
91  template <class T, typename... Args> T *newObject(Args &&... args);
+
92  template <class T> void deleteObject(T *ptr);
+
93  template <class T> T *newArray(size_t numElements);
+
94  template <class T> void deleteArray(T *ptr);
+
95 
+
96  protected:
+
97  AllocateFunction allocateFunc_;
+
98  ReallocateFunction reallocateFunc_;
+
99  DeallocateFunction deallocateFunc_;
+
100 
+
101  char name_[MaxNameLength];
+
102  size_t size_;
+
103  void *base_;
+
104  size_t usedMemory_;
+
105  size_t numAllocations_;
+
106  bool copyOnReallocation_;
+
107 
+
108 #if defined(RECORD_ALLOCATIONS) || defined(WITH_TRACY)
+
109  AllocateFunction realAllocateFunc_;
+
110  ReallocateFunction realReallocateFunc_;
+
111  DeallocateFunction realDeallocateFunc_;
+
112 
+
113  static void *wrapAllocate(IAllocator *allocator, size_t bytes, uint8_t alignment);
+
114  static void *wrapReallocate(IAllocator *allocator, void *ptr, size_t bytes, uint8_t alignment, size_t &oldSize);
+
115  static void wrapDeallocate(IAllocator *allocator, void *ptr);
+
116 #endif
+
117 
+
118 #ifdef RECORD_ALLOCATIONS
+
119  bool recordAllocations_;
+
120  static const size_t MaxEntries = 128 * 1024;
+
121  Entry entries_[MaxEntries];
+
122  size_t numEntries_;
+
123 #endif
+
124 
+
125  friend class ProxyAllocator;
+
126 };
+
127 
+
128 namespace detail {
+
129 
+
131  template <bool value>
+ +
133  {
+
134  template <class T, typename... Args>
+
135  inline static T *newObject(IAllocator &alloc, Args &&... args)
+
136  {
+
137  return new (alloc.allocate(sizeof(T))) T(nctl::forward<Args>(args)...);
+
138  }
+
139 
+
140  template <class T>
+
141  inline static void deleteObject(IAllocator &alloc, T *ptr)
+
142  {
+
143  ptr->~T();
+
144  alloc.deallocate(ptr);
+
145  }
+
146 
+
147  template <class T>
+
148  inline static T *newArray(IAllocator &alloc, size_t numElements)
+
149  {
+
150  uint8_t headerSize = sizeof(size_t) / sizeof(T);
+
151 
+
152  if (sizeof(size_t) % sizeof(T) > 0)
+
153  headerSize += 1;
+
154 
+
155  // Allocate extra space to store array length in the bytes before the array
+
156  T *ptr = static_cast<T *>(alloc.allocate(sizeof(T) * (numElements + headerSize))) + headerSize;
+
157  *reinterpret_cast<size_t *>(uintptr_t(ptr) - sizeof(size_t)) = numElements;
+
158 
+
159  for (size_t i = 0; i < numElements; i++)
+
160  new (ptr + i) T();
+
161 
+
162  return ptr;
+
163  }
+
164 
+
165  template <class T>
+
166  inline static void deleteArray(IAllocator &alloc, T *ptr)
+
167  {
+
168  const size_t numElements = *reinterpret_cast<size_t *>(uintptr_t(ptr) - sizeof(size_t));
+
169 
+
170  for (size_t i = numElements; i > 0; i--)
+
171  (ptr + i - 1)->~T();
+
172 
+
173  // Calculate how much extra memory was allocated to store the length before the array
+
174  uint8_t headerSize = sizeof(size_t) / sizeof(T);
+
175  if (sizeof(size_t) % sizeof(T) > 0)
+
176  headerSize += 1;
+
177  alloc.deallocate(ptr - headerSize);
+
178  }
+
179  };
+
180 
+
182  template <>
+
183  struct allocHelpers<true>
+
184  {
+
185  template <class T, typename... Args>
+
186  inline static T *newObject(IAllocator &alloc, Args &&... args)
+
187  {
+
188  // Trivially constructible types should still got their arguments forwarded
+
189  return new (alloc.allocate(sizeof(T))) T(nctl::forward<Args>(args)...);
+
190  }
+
191 
+
192  template <class T>
+
193  inline static void deleteObject(IAllocator &alloc, T *ptr)
+
194  {
+
195  alloc.deallocate(ptr);
+
196  }
+
197 
+
198  template <class T>
+
199  inline static T *newArray(IAllocator &alloc, size_t numElements)
+
200  {
+
201  uint8_t headerSize = sizeof(size_t) / sizeof(T);
+
202 
+
203  if (sizeof(size_t) % sizeof(T) > 0)
+
204  headerSize += 1;
+
205 
+
206  // Allocate extra space to store array length in the bytes before the array
+
207  T *ptr = static_cast<T *>(alloc.allocate(sizeof(T) * (numElements + headerSize))) + headerSize;
+
208  *reinterpret_cast<size_t *>(uintptr_t(ptr) - sizeof(size_t)) = numElements;
+
209 
+
210  return ptr;
+
211  }
+
212 
+
213  template <class T>
+
214  inline static void deleteArray(IAllocator &alloc, T *ptr)
+
215  {
+
216  // Calculate how much extra memory was allocated to store the length before the array
+
217  uint8_t headerSize = sizeof(size_t) / sizeof(T);
+
218  if (sizeof(size_t) % sizeof(T) > 0)
+
219  headerSize += 1;
+
220  alloc.deallocate(ptr - headerSize);
+
221  }
+
222  };
+
223 
+
224 }
+
225 
+
226 template <class T, typename... Args>
+
227 T *IAllocator::newObject(Args &&... args)
+
228 {
+
229  return detail::allocHelpers<isTriviallyConstructible<T>::value>::template newObject<T>(*this, nctl::forward<Args>(args)...);
+
230 }
+
231 
+
232 template <class T>
+
233 void IAllocator::deleteObject(T *ptr)
+
234 {
+
235  if (ptr)
+
236  detail::allocHelpers<isTriviallyDestructible<T>::value>::deleteObject(*this, ptr);
+
237 }
+
238 
+
239 template <class T>
+
240 T *IAllocator::newArray(size_t numElements)
+
241 {
+
242  if (numElements == 0)
+
243  return nullptr;
+
244 
+
245  return detail::allocHelpers<isTriviallyConstructible<T>::value>::template newArray<T>(*this, numElements);
+
246 }
+
247 
+
248 template <class T>
+
249 void IAllocator::deleteArray(T *ptr)
+
250 {
+
251  if (ptr)
+
252  detail::allocHelpers<isTriviallyDestructible<T>::value>::deleteArray(*this, ptr);
+
253 }
+
254 
+
255 }
+
256 
+
257 #endif
+
A class representing a point in time or a duration.
Definition: TimeStamp.h:11
+
The allocator interface.
Definition: IAllocator.h:18
+
size_t numAllocations() const
Returns the number of active allocations.
Definition: IAllocator.h:83
+
size_t usedMemory() const
Definition: IAllocator.h:78
+
void * base() const
Returns the address of the buffer used for allocations.
Definition: IAllocator.h:75
+
const char * name() const
Returns the name of the allocator.
Definition: IAllocator.h:71
+
size_t freeMemory() const
Definition: IAllocator.h:81
+
void * allocate(size_t bytes, uint8_t alignment)
Tries to allocate the specified amount of memory with the specified alignment requirement.
Definition: IAllocator.h:62
+
size_t size() const
Returns the size of the buffer used for allocations.
Definition: IAllocator.h:73
+
bool copyOnReallocation() const
Returns the state of the copy on reallocation flag.
Definition: IAllocator.h:86
+
void deallocate(void *ptr)
Deallocates the allocation at the specified pointer.
Definition: IAllocator.h:68
+
void setCopyOnReallocation(bool value)
Sets the state of the copy on reallocation flag.
Definition: IAllocator.h:89
+
A proxy allocator.
Definition: ProxyAllocator.h:10
+
A container for functions to allocate and construct objects and arrays of objects.
Definition: IAllocator.h:133
+
+ + + + diff --git a/master/_i_app_event_handler_8h_source.html b/master/_i_app_event_handler_8h_source.html new file mode 100644 index 0000000000..44bc208fee --- /dev/null +++ b/master/_i_app_event_handler_8h_source.html @@ -0,0 +1,131 @@ + + + + + + + +nCine: include/ncine/IAppEventHandler.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
IAppEventHandler.h
+
+
+
1 #ifndef CLASS_NCINE_IAPPEVENTHANDLER
+
2 #define CLASS_NCINE_IAPPEVENTHANDLER
+
3 
+
4 #include "common_defines.h"
+
5 
+
6 namespace ncine {
+
7 
+
8 class AppConfiguration;
+
9 class Viewport;
+
10 
+
12 class DLL_PUBLIC IAppEventHandler
+
13 {
+
14  public:
+
16  virtual ~IAppEventHandler() = 0;
+
17 
+
19 
+
21  virtual void onPreInit(AppConfiguration &config) {}
+
23  virtual void onInit() {}
+
25  virtual void onFrameStart() {}
+
27  virtual void onPostUpdate() {}
+
29  virtual void onDrawViewport(Viewport &viewport) {}
+
31  virtual void onFrameEnd() {}
+
33 
+
35  virtual void onResizeWindow(int width, int height) {}
+
37  virtual void onChangeScalingFactor(float factor) {}
+
39  virtual void onShutdown() {}
+
41  virtual void onSuspend() {}
+
43  virtual void onResume() {}
+
44 };
+
45 
+ +
47 
+
48 }
+
49 
+
50 #endif
+
The class storing initialization settings for an nCine application.
Definition: AppConfiguration.h:12
+
The interface class for handling nCine application events.
Definition: IAppEventHandler.h:13
+
virtual void onPreInit(AppConfiguration &config)
Called once before initialization to setup the application.
Definition: IAppEventHandler.h:21
+
virtual void onSuspend()
Called every time the application needs to be suspended.
Definition: IAppEventHandler.h:41
+
virtual void onShutdown()
Called once on application shutdown.
Definition: IAppEventHandler.h:39
+
virtual void onFrameStart()
Called at the start of each frame.
Definition: IAppEventHandler.h:25
+
virtual void onResume()
Called every time the application resumes from suspension.
Definition: IAppEventHandler.h:43
+
virtual void onInit()
Called once on application initialization.
Definition: IAppEventHandler.h:23
+
virtual ~IAppEventHandler()=0
Pure virtual destructor in order to make the class abstract.
Definition: IAppEventHandler.h:46
+
virtual void onChangeScalingFactor(float factor)
Called every time the window scaling factor changes.
Definition: IAppEventHandler.h:37
+
virtual void onResizeWindow(int width, int height)
Called every time the window is resized (by the system or the user)
Definition: IAppEventHandler.h:35
+
virtual void onDrawViewport(Viewport &viewport)
Called every time a viewport is going to be drawn.
Definition: IAppEventHandler.h:29
+
virtual void onPostUpdate()
Called every time the scenegraph has been traversed and all nodes have been transformed.
Definition: IAppEventHandler.h:27
+
virtual void onFrameEnd()
Called at the end of each frame, just before swapping buffers.
Definition: IAppEventHandler.h:31
+
The class handling a viewport and its corresponding render target texture.
Definition: Viewport.h:22
+
+ + + + diff --git a/master/_i_audio_device_8h_source.html b/master/_i_audio_device_8h_source.html new file mode 100644 index 0000000000..369e0f2d08 --- /dev/null +++ b/master/_i_audio_device_8h_source.html @@ -0,0 +1,277 @@ + + + + + + + +nCine: include/ncine/IAudioDevice.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
IAudioDevice.h
+
+
+
1 #ifndef CLASS_NCINE_IAUDIODEVICE
+
2 #define CLASS_NCINE_IAUDIODEVICE
+
3 
+
4 #include "common_defines.h"
+
5 #include "Vector3.h"
+
6 
+
7 namespace ncine {
+
8 
+
9 class IAudioPlayer;
+
10 
+
12 class DLL_PUBLIC IAudioDevice
+
13 {
+
14  public:
+
15  static const unsigned int InvalidSource = ~0U;
+
16 
+
18  struct Attributes
+
19  {
+
20  const char *deviceName = nullptr;
+
21 
+
22  int majorVersion = 0;
+
23  int minorVersion = 0;
+
24  int outputFrequency = 0;
+
25  int numMonoSources = 0;
+
26  int numStereoSources = 0;
+
27  int refreshRate = 0;
+
28  int synchronous = 0;
+
29 
+
30  // EFX attributes
+
31  int efxMajorVersion = 0;
+
32  int efxMinorVersion = 0;
+
33  int maxAuxiliarySends = 0;
+
34  };
+
35 
+
37  struct ALExtensions
+
38  {
+
39  enum Enum
+
40  {
+
41  EXT_EFX = 0,
+
42  SOFT_PAUSE_DEVICE,
+
43  SOFT_DEFERRED_UPDATES,
+
44  SOFT_SOURCE_SPATIALIZE,
+
45 
+
46  COUNT
+
47  };
+
48  };
+
49 
+
50  enum class PlayerType
+
51  {
+
52  BUFFER,
+
53  STREAM
+
54  };
+
55 
+
57  virtual const Attributes &attributes() const = 0;
+
59  virtual const char *name() const = 0;
+
61  virtual bool hasExtension(ALExtensions::Enum extensionName) const = 0;
+
62 
+
63  virtual ~IAudioDevice() = 0;
+
65  virtual float gain() const = 0;
+
67  virtual void setGain(float gain) = 0;
+
68 
+
70  virtual Vector3f position() const = 0;
+
72  virtual void setPosition(const Vector3f &position) = 0;
+
74  virtual void setPosition(float x, float y, float z) = 0;
+
75 
+
77  virtual Vector3f velocity() const = 0;
+
79  virtual void setVelocity(const Vector3f &velocity) = 0;
+
81  virtual void setVelocity(float x, float y, float z) = 0;
+
82 
+
84  virtual unsigned int maxNumSources() const = 0;
+
86  virtual unsigned int numAvailableSources() const = 0;
+
87 
+
89  virtual unsigned int numPlayers() const = 0;
+
91  virtual const IAudioPlayer *player(unsigned int index) const = 0;
+
93  virtual IAudioPlayer *player(unsigned int index) = 0;
+
94 
+
96 
+
97  virtual void pausePlayers() = 0;
+
99  virtual void stopPlayers() = 0;
+
101  virtual void pausePlayers(PlayerType playerType) = 0;
+
103  virtual void stopPlayers(PlayerType playerType) = 0;
+
105  virtual void resumePlayers() = 0;
+
106 
+
108 
+
109  virtual void pauseDevice() = 0;
+
112  virtual void resumeDevice() = 0;
+
113 
+
115  virtual void registerPlayer(IAudioPlayer *player) = 0;
+
117  virtual void unregisterPlayer(IAudioPlayer *player) = 0;
+
119  virtual void updatePlayers() = 0;
+
120 };
+
121 
+
122 inline IAudioDevice::~IAudioDevice() {}
+
123 
+
125 class DLL_PUBLIC NullAudioDevice : public IAudioDevice
+
126 {
+
127  public:
+
128  const Attributes &attributes() const override { return properties_; }
+
129  const char *name() const override { return "NullAudioDevice"; }
+
130  bool hasExtension(ALExtensions::Enum extensionName) const override { return false; }
+
131 
+
132  float gain() const override { return 1.0f; }
+
133  void setGain(float gain) override {}
+
134 
+
135  Vector3f position() const override { return Vector3f::Zero; }
+
136  void setPosition(const Vector3f &position) override {}
+
137  void setPosition(float x, float y, float z) override {}
+
138 
+
139  Vector3f velocity() const override { return Vector3f::Zero; }
+
140  void setVelocity(const Vector3f &velocity) override {}
+
141  void setVelocity(float x, float y, float z) override {}
+
142 
+
143  unsigned int maxNumSources() const override { return 0; }
+
144  unsigned int numAvailableSources() const override { return 0; }
+
145 
+
146  unsigned int numPlayers() const override { return 0; }
+
147  const IAudioPlayer *player(unsigned int index) const override { return nullptr; }
+
148  IAudioPlayer *player(unsigned int index) override { return nullptr; }
+
149 
+
150  void pausePlayers() override {}
+
151  void stopPlayers() override {}
+
152  void pausePlayers(PlayerType playerType) override {}
+
153  void stopPlayers(PlayerType playerType) override {}
+
154  void resumePlayers() override {}
+
155 
+
156  void pauseDevice() override {}
+
157  void resumeDevice() override {}
+
158 
+
159  void registerPlayer(IAudioPlayer *player) override {}
+
160  void unregisterPlayer(IAudioPlayer *player) override {}
+
161  void updatePlayers() override {}
+
162 
+
163  private:
+
164  Attributes properties_;
+
165 };
+
166 
+
167 }
+
168 
+
169 #endif
+
Audio device interface class.
Definition: IAudioDevice.h:13
+
virtual void stopPlayers()=0
Stops every player currently playing.
+
virtual bool hasExtension(ALExtensions::Enum extensionName) const =0
Returns true if the specified OpenAL extension is available.
+
virtual void pauseDevice()=0
Pauses all audio device activities using an OpenAL-soft extension (if available)
+
virtual void unregisterPlayer(IAudioPlayer *player)=0
Remove a stream player from the array of active players.
+
virtual void setPosition(const Vector3f &position)=0
Sets the listener position vector.
+
virtual const char * name() const =0
Returns the name of the audio device.
+
virtual unsigned int numPlayers() const =0
Returns the number of active players.
+
virtual unsigned int numAvailableSources() const =0
Returns the number of available audio sources.
+
virtual Vector3f position() const =0
Returns the listener position vector.
+
virtual void registerPlayer(IAudioPlayer *player)=0
Registers a new stream player for buffer update.
+
virtual float gain() const =0
Returns the listener gain value.
+
virtual void pausePlayers(PlayerType playerType)=0
Pauses every player of the specified type.
+
virtual void pausePlayers()=0
Pauses every player currently playing.
+
virtual void setPosition(float x, float y, float z)=0
Sets the listener position vector through components.
+
virtual void stopPlayers(PlayerType playerType)=0
Stops every player of the specified type.
+
virtual void setVelocity(const Vector3f &velocity)=0
Sets the listener velocity vector.
+
virtual void resumePlayers()=0
Resumes all and only the players that were paused by a pausePlayers() call.
+
virtual void setVelocity(float x, float y, float z)=0
Sets the listener velocity vector through components.
+
virtual Vector3f velocity() const =0
Returns the listener velocity vector.
+
virtual void resumeDevice()=0
+
virtual const IAudioPlayer * player(unsigned int index) const =0
Returns the specified active player object (const version)
+
virtual void setGain(float gain)=0
Sets the listener gain value.
+
virtual const Attributes & attributes() const =0
Returns the audio device attributes.
+
virtual IAudioPlayer * player(unsigned int index)=0
Returns the specified active player object.
+
virtual unsigned int maxNumSources() const =0
Returns the maximum number of audio sources.
+
virtual void updatePlayers()=0
Updates players state (and buffer queue in the case of stream players)
+
Audio player interface class.
Definition: IAudioPlayer.h:15
+
A fake audio device which doesn't play anything.
Definition: IAudioDevice.h:126
+
void updatePlayers() override
Updates players state (and buffer queue in the case of stream players)
Definition: IAudioDevice.h:161
+
void stopPlayers(PlayerType playerType) override
Stops every player of the specified type.
Definition: IAudioDevice.h:153
+
void resumeDevice() override
Definition: IAudioDevice.h:157
+
Vector3f position() const override
Returns the listener position vector.
Definition: IAudioDevice.h:135
+
Vector3f velocity() const override
Returns the listener velocity vector.
Definition: IAudioDevice.h:139
+
void pauseDevice() override
Pauses all audio device activities using an OpenAL-soft extension (if available)
Definition: IAudioDevice.h:156
+
void resumePlayers() override
Resumes all and only the players that were paused by a pausePlayers() call.
Definition: IAudioDevice.h:154
+
unsigned int maxNumSources() const override
Returns the maximum number of audio sources.
Definition: IAudioDevice.h:143
+
unsigned int numPlayers() const override
Returns the number of active players.
Definition: IAudioDevice.h:146
+
void unregisterPlayer(IAudioPlayer *player) override
Remove a stream player from the array of active players.
Definition: IAudioDevice.h:160
+
void pausePlayers(PlayerType playerType) override
Pauses every player of the specified type.
Definition: IAudioDevice.h:152
+
void setGain(float gain) override
Sets the listener gain value.
Definition: IAudioDevice.h:133
+
const char * name() const override
Returns the name of the audio device.
Definition: IAudioDevice.h:129
+
const Attributes & attributes() const override
Returns the audio device attributes.
Definition: IAudioDevice.h:128
+
IAudioPlayer * player(unsigned int index) override
Returns the specified active player object.
Definition: IAudioDevice.h:148
+
unsigned int numAvailableSources() const override
Returns the number of available audio sources.
Definition: IAudioDevice.h:144
+
void setVelocity(float x, float y, float z) override
Sets the listener velocity vector through components.
Definition: IAudioDevice.h:141
+
void setVelocity(const Vector3f &velocity) override
Sets the listener velocity vector.
Definition: IAudioDevice.h:140
+
void setPosition(float x, float y, float z) override
Sets the listener position vector through components.
Definition: IAudioDevice.h:137
+
void registerPlayer(IAudioPlayer *player) override
Registers a new stream player for buffer update.
Definition: IAudioDevice.h:159
+
const IAudioPlayer * player(unsigned int index) const override
Returns the specified active player object (const version)
Definition: IAudioDevice.h:147
+
void stopPlayers() override
Stops every player currently playing.
Definition: IAudioDevice.h:151
+
float gain() const override
Returns the listener gain value.
Definition: IAudioDevice.h:132
+
void setPosition(const Vector3f &position) override
Sets the listener position vector.
Definition: IAudioDevice.h:136
+
void pausePlayers() override
Pauses every player currently playing.
Definition: IAudioDevice.h:150
+ +
static const Vector3 Zero
A vector with all zero elements.
Definition: Vector3.h:72
+
OpenAL queryable extensions.
Definition: IAudioDevice.h:38
+
Audio device attributes class.
Definition: IAudioDevice.h:19
+
+ + + + diff --git a/master/_i_audio_player_8h_source.html b/master/_i_audio_player_8h_source.html new file mode 100644 index 0000000000..cc74425a1b --- /dev/null +++ b/master/_i_audio_player_8h_source.html @@ -0,0 +1,304 @@ + + + + + + + +nCine: include/ncine/IAudioPlayer.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
IAudioPlayer.h
+
+
+
1 #ifndef CLASS_NCINE_IAUDIOPLAYER
+
2 #define CLASS_NCINE_IAUDIOPLAYER
+
3 
+
4 #include <ncine/config.h>
+
5 #include "Object.h"
+
6 #include "Vector3.h"
+
7 
+
8 namespace ncine {
+
9 
+
10 class AudioEffectSlot;
+
11 class AudioFilter;
+
12 
+
14 class DLL_PUBLIC IAudioPlayer : public Object
+
15 {
+
16  public:
+
17  static const float MinGain;
+
18  static const float DefaultGain;
+
19  static const float MaxGain;
+
20 
+
21  static const float MinPitch;
+
22  static const float DefaultPitch;
+
23  static const float MaxPitch;
+
24 
+
25  static const float MinConeAngle;
+
26  static const float DefaultConeAngle;
+
27  static const float MaxConeAngle;
+
28 
+
29  static const float MinConeOuterGain;
+
30  static const float DefaultConeOuterGain;
+
31  static const float MaxConeOuterGain;
+
32 
+
33  static const float MinAirAbsorptionFactor;
+
34  static const float DefaultAirAbsorptionFactor;
+
35  static const float MaxAirAbsorptionFactor;
+
36 
+
37  static const float MinRoomRolloffFactor;
+
38  static const float DefaultRoomRolloffFactor;
+
39  static const float MaxRoomRolloffFactor;
+
40 
+
41  static const float MinConeOuterGainHF;
+
42  static const float DefaultConeOuterGainHF;
+
43  static const float MaxConeOuterGainHF;
+
44 
+
46  enum class PlayerState
+
47  {
+
48  INITIAL = 0,
+
49  PLAYING,
+
50  PAUSED,
+
51  STOPPED
+
52  };
+
53 
+
54  IAudioPlayer(ObjectType type, const char *name);
+
55  IAudioPlayer(ObjectType type);
+
56  ~IAudioPlayer() override;
+
57 
+
59  IAudioPlayer(IAudioPlayer &&) = default;
+ +
62 
+
64  bool hasSource() const;
+
66  inline unsigned int sourceId() const { return sourceId_; }
+
68  virtual unsigned int bufferId() const = 0;
+
69 
+
71  virtual int bytesPerSample() const = 0;
+
73  virtual int numChannels() const = 0;
+
75  virtual int frequency() const = 0;
+
76 
+
78  virtual unsigned long int numSamples() const = 0;
+
80  virtual float duration() const = 0;
+
81 
+
83  virtual unsigned long bufferSize() const = 0;
+
84 
+
86  int sampleOffset() const;
+
88  void setSampleOffset(int offset);
+
89 
+
91  inline bool isSourceLocked() const { return sourceLocked_; }
+
93  void setSourceLocked(bool sourceLocked);
+
94 
+
96  virtual void play() = 0;
+
98  virtual void pause() = 0;
+
100  virtual void stop() = 0;
+
101 
+
103  inline PlayerState state() const { return state_; }
+
105  inline bool isPlaying() const { return state_ == PlayerState::PLAYING; }
+
107  inline bool isPaused() const { return state_ == PlayerState::PAUSED; }
+
109  inline bool isStopped() const { return state_ == PlayerState::STOPPED; }
+
110 
+
112  inline bool isLooping() const { return isLooping_; }
+
114  inline void setLooping(bool isLooping) { isLooping_ = isLooping; }
+
115 
+
117  inline float gain() const { return gain_; }
+
119  void setGain(float gain);
+
121  inline float pitch() const { return pitch_; }
+
123  void setPitch(float pitch);
+
124 
+
126  inline Vector3f position() const { return position_; }
+
128  void setPosition(const Vector3f &position);
+
130  void setPosition(float x, float y, float z);
+
132  inline Vector3f velocity() const { return velocity_; }
+
134  void setVelocity(const Vector3f &velocity);
+
136  void setVelocity(float x, float y, float z);
+
138  inline Vector3f direction() const { return direction_; }
+
140  void setDirection(const Vector3f &direction);
+
142  void setDirection(float x, float y, float z);
+
143 
+
145  inline float coneInnerAngle() const { return coneInnerAngle_; }
+
147  void setConeInnerAngle(float coneAngle);
+
149  inline float coneOuterAngle() const { return coneOuterAngle_; }
+
151  void setConeOuterAngle(float coneAngle);
+
153  inline float coneOuterGain() const { return coneOuterGain_; }
+
155  void setConeOuterGain(float gain);
+
156 
+
157 #if NCINE_WITH_OPENAL_EXT
+
159  inline float airAbsorptionFactor() const { return airAbsorptionFactor_; }
+
161  void setAirAbsorptionFactor(float factor);
+
162 
+
164  inline float roomRolloffFactor() const { return roomRooloffFactor_; }
+
166  void setRoomRolloffFactor(float factor);
+
167 
+
169  inline float coneOuterGainHF() const { return coneOuterGainHF_; }
+
171  void setConeOuterGainHF(float gain);
+
172 
+
174  bool hasEffectSlot() const;
+
176  inline unsigned int effectSlotId() const { return effectSlotId_; }
+
178  bool hasAuxFilter() const;
+
180  inline unsigned int auxFilterId() const { return auxFilterId_; }
+
182  bool hasDirectFilter() const;
+
184  inline unsigned int directFilterId() const { return directFilterId_; }
+
185 
+
187  void setEffectSlot(const AudioEffectSlot *effectSlot, const AudioFilter *filter);
+
189  inline void setEffectSlot(const AudioEffectSlot *effectSlot) { setEffectSlot(effectSlot, nullptr); }
+
191  void setDirectFilter(const AudioFilter *audioFilter);
+
192 #endif
+
193 
+
194  protected:
+
196  unsigned int sourceId_;
+ + + +
203 
+
205  float gain_;
+
207  float pitch_;
+
208 
+ + +
214 
+ +
216 
+
218 
+ +
221 
+ + +
225 
+ + + +
232 
+
234  unsigned int effectSlotId_;
+
236  unsigned int auxFilterId_;
+
238  unsigned int directFilterId_;
+
239 
+
241 
+
243  virtual void updateState() = 0;
+
244 
+
246  void applySourceProperties();
+
247 
+
248  friend class ALAudioDevice;
+
249 };
+
250 
+
251 }
+
252 
+
253 #endif
+
Audio player interface class.
Definition: IAudioPlayer.h:15
+
unsigned int auxFilterId_
The OpenAL auxiliary filter id to use when playing.
Definition: IAudioPlayer.h:236
+
float airAbsorptionFactor_
Player air absorption factor value.
Definition: IAudioPlayer.h:227
+
Vector3f velocity() const
Returns the player velocity vector.
Definition: IAudioPlayer.h:132
+
Vector3f direction() const
Returns the player direction vector.
Definition: IAudioPlayer.h:138
+
bool isPaused() const
Returns true if the player is paused.
Definition: IAudioPlayer.h:107
+
bool isStopped() const
Returns true if the player is stopped.
Definition: IAudioPlayer.h:109
+
PlayerState state_
Current player state.
Definition: IAudioPlayer.h:200
+
virtual void pause()=0
Pauses playing.
+
Vector3f position() const
Returns the player position vector.
Definition: IAudioPlayer.h:126
+
float coneOuterGainHF_
Player cone outer gain HF value.
Definition: IAudioPlayer.h:231
+
unsigned int sourceId() const
Returns the OpenAL id of the player source.
Definition: IAudioPlayer.h:66
+
void setLooping(bool isLooping)
Sets the looping property of the player.
Definition: IAudioPlayer.h:114
+
virtual unsigned long int numSamples() const =0
Returns the number of samples.
+
float roomRooloffFactor_
Player room rolloff factor value.
Definition: IAudioPlayer.h:229
+
PlayerState state() const
Returns the state of the player.
Definition: IAudioPlayer.h:103
+
Vector3f velocity_
Player velocity in space.
Definition: IAudioPlayer.h:212
+
float coneOuterAngle_
Outside angle of the sound cone in degrees.
Definition: IAudioPlayer.h:222
+
unsigned int effectSlotId_
The OpenAL effect slot id to use when playing.
Definition: IAudioPlayer.h:234
+
float gain_
Player gain value.
Definition: IAudioPlayer.h:205
+
float gain() const
Returns the player gain value.
Definition: IAudioPlayer.h:117
+
bool isLooping_
Looping status flag.
Definition: IAudioPlayer.h:202
+
float coneInnerAngle() const
Returns the player inside angle of the sound cone in degrees.
Definition: IAudioPlayer.h:145
+
float coneOuterGain_
Multiplication factor to determine the gain outside the cone.
Definition: IAudioPlayer.h:224
+
bool sourceLocked_
The flag indicating if an OpenAL source is locked and never released to the pool.
Definition: IAudioPlayer.h:198
+
virtual void play()=0
Starts playing.
+
Vector3f direction_
Player direction in space.
Definition: IAudioPlayer.h:215
+
float pitch() const
Returns the player pitch value.
Definition: IAudioPlayer.h:121
+
virtual int bytesPerSample() const =0
Returns the number of bytes per sample.
+
virtual void updateState()=0
Updates the state of the player if the source has finished playing.
+
bool isSourceLocked() const
Returns true if the OpenAL source is locked.
Definition: IAudioPlayer.h:91
+
bool isLooping() const
Returns the looping property of the player.
Definition: IAudioPlayer.h:112
+
Vector3f position_
Player position in space.
Definition: IAudioPlayer.h:210
+
bool isPlaying() const
Returns true if the player is playing.
Definition: IAudioPlayer.h:105
+
IAudioPlayer & operator=(IAudioPlayer &&)=default
Default move assignment operator.
+
PlayerState
Player state.
Definition: IAudioPlayer.h:47
+
float coneOuterGain() const
Returns the player multiplication factor to determine the gain outside the cone.
Definition: IAudioPlayer.h:153
+
float pitch_
Player pitch value.
Definition: IAudioPlayer.h:207
+
virtual void stop()=0
Stops playing and rewinds.
+
unsigned int sourceId_
The OpenAL source id.
Definition: IAudioPlayer.h:196
+
float coneOuterAngle() const
Returns the player outside angle of the sound cone in degrees.
Definition: IAudioPlayer.h:149
+
virtual unsigned long bufferSize() const =0
Returns the size of the currently playing buffer in bytes.
+
virtual float duration() const =0
Returns the duration in seconds.
+
IAudioPlayer(IAudioPlayer &&)=default
Default move constructor.
+
unsigned int directFilterId_
The OpenAL direct filter id to use when playing.
Definition: IAudioPlayer.h:238
+
virtual int frequency() const =0
Returns the samples frequency of the currently playing buffer.
+
virtual int numChannels() const =0
Returns the number of audio channels of the currently playing buffer.
+
virtual unsigned int bufferId() const =0
Returns the OpenAL id of the currently playing buffer.
+
float coneInnerAngle_
Inside angle of the sound cone in degrees.
Definition: IAudioPlayer.h:219
+
Static RRTI and identification index.
Definition: Object.h:10
+ +
+ + + + diff --git a/master/_i_debug_overlay_8h_source.html b/master/_i_debug_overlay_8h_source.html new file mode 100644 index 0000000000..df92455cbc --- /dev/null +++ b/master/_i_debug_overlay_8h_source.html @@ -0,0 +1,133 @@ + + + + + + + +nCine: include/ncine/IDebugOverlay.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
IDebugOverlay.h
+
+
+
1 #ifndef CLASS_NCINE_IDEBUGOVERLAY
+
2 #define CLASS_NCINE_IDEBUGOVERLAY
+
3 
+
4 #include "TimeStamp.h"
+
5 
+
6 namespace ncine {
+
7 
+
9 class DLL_PUBLIC IDebugOverlay
+
10 {
+
11  public:
+ +
13  {
+ +
15  : showProfilerGraphs(true), showInfoText(true), showInterface(false) {}
+
16 
+ + + +
23  };
+
24 
+
25  explicit IDebugOverlay(float profileTextUpdateTime);
+
26  virtual ~IDebugOverlay();
+
27 
+
28  inline DisplaySettings &settings() { return settings_; }
+
29  virtual void update() = 0;
+
30  virtual void updateFrameTimings() = 0;
+
31 
+
32  protected:
+
33  DisplaySettings settings_;
+
34  TimeStamp lastUpdateTime_;
+
35  float updateTime_;
+
36 
+
38  IDebugOverlay(const IDebugOverlay &) = delete;
+ +
41 };
+
42 
+
43 inline IDebugOverlay::IDebugOverlay(float profileTextUpdateTime)
+
44  : updateTime_(profileTextUpdateTime) {}
+
45 
+
46 inline IDebugOverlay::~IDebugOverlay() {}
+
47 
+
48 }
+
49 
+
50 #endif
+
Interface for debug overlays.
Definition: IDebugOverlay.h:10
+
IDebugOverlay & operator=(const IDebugOverlay &)=delete
Deleted assignment operator.
+
IDebugOverlay(const IDebugOverlay &)=delete
Deleted copy constructor.
+
A class representing a point in time or a duration.
Definition: TimeStamp.h:11
+
Definition: IDebugOverlay.h:13
+
bool showProfilerGraphs
True if showing the profiler graphs.
Definition: IDebugOverlay.h:18
+
bool showInterface
True if showing the debug interface.
Definition: IDebugOverlay.h:22
+
bool showInfoText
True if showing the information text.
Definition: IDebugOverlay.h:20
+
+ + + + diff --git a/master/_i_file_8h_source.html b/master/_i_file_8h_source.html new file mode 100644 index 0000000000..fe629cdd46 --- /dev/null +++ b/master/_i_file_8h_source.html @@ -0,0 +1,226 @@ + + + + + + + +nCine: include/ncine/IFile.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
IFile.h
+
+
+
1 #ifndef CLASS_NCINE_IFILE
+
2 #define CLASS_NCINE_IFILE
+
3 
+
4 #include <cstdio> // for FILE
+
5 #include <cstdint> // for endianness conversions
+
6 #include <nctl/String.h>
+
7 #include <nctl/UniquePtr.h>
+
8 
+
9 namespace ncine {
+
10 
+
12 class DLL_PUBLIC IFile
+
13 {
+
14  public:
+
16  enum class FileType
+
17  {
+
18  BASE = 0,
+
19  MEMORY,
+
20  STANDARD,
+
21  ASSET
+
22  };
+
23 
+
25  struct OpenMode
+
26  {
+
27  enum
+
28  {
+
29 #if !(defined(_WIN32) && !defined(__MINGW32__))
+
30  FD = 1,
+
31 #endif
+
32  READ = 2,
+
33  WRITE = 4,
+
34  BINARY = 8
+
35  };
+
36  };
+
37 
+
39 
+
40  explicit IFile(const char *filename);
+
41  virtual ~IFile() {}
+
42 
+
44  FileType type() const { return type_; }
+
45 
+
47  virtual void open(unsigned char mode) = 0;
+
49  virtual void close() = 0;
+
51  virtual long int seek(long int offset, int whence) const = 0;
+
53  virtual long int tell() const = 0;
+
55 
+
56  virtual unsigned long int read(void *buffer, unsigned long int bytes) const = 0;
+
58 
+
59  virtual unsigned long int write(const void *buffer, unsigned long int bytes) = 0;
+
60 
+
62 
+
63  inline void setCloseOnDestruction(bool shouldCloseOnDestruction) { shouldCloseOnDestruction_ = shouldCloseOnDestruction; }
+
65  virtual bool isOpened() const;
+
66 
+
68  const char *filename() const { return filename_.data(); }
+
69 
+
71  inline int fd() const { return fileDescriptor_; }
+
73  inline FILE *ptr() const { return filePointer_; }
+
75  inline unsigned long int size() const { return fileSize_; }
+
76 
+
78  virtual inline const void *bufferPtr() const { return nullptr; }
+
80  virtual inline void *bufferPtr() { return nullptr; }
+
81 
+
83  inline static uint16_t int16FromLE(uint16_t number) { return number; }
+
85  inline static uint32_t int32FromLE(uint32_t number) { return number; }
+
87  inline static uint64_t int64FromLE(uint64_t number) { return number; }
+
89  inline static uint16_t int16FromBE(uint16_t number)
+
90  {
+
91  return (number >> 8) | (number << 8);
+
92  }
+
94  inline static uint32_t int32FromBE(uint32_t number)
+
95  {
+
96  return (number >> 24) | ((number << 8) & 0x00FF0000) | ((number >> 8) & 0x0000FF00) | (number << 24);
+
97  }
+
99  inline static uint64_t int64FromBE(uint64_t number)
+
100  {
+
101  return (number >> 56) | ((number << 40) & 0x00FF000000000000ULL) | ((number << 24) & 0x0000FF0000000000ULL) |
+
102  ((number << 8) & 0x000000FF00000000ULL) | ((number >> 8) & 0x00000000FF000000ULL) |
+
103  ((number >> 24) & 0x0000000000FF0000ULL) | ((number >> 40) & 0x000000000000FF00ULL) | (number << 56);
+
104  }
+
105 
+
107  static nctl::UniquePtr<IFile> createFromMemory(const char *bufferName, unsigned char *bufferPtr, unsigned long int bufferSize);
+
109  static nctl::UniquePtr<IFile> createFromMemory(const char *bufferName, const unsigned char *bufferPtr, unsigned long int bufferSize);
+
111  static nctl::UniquePtr<IFile> createFromMemory(unsigned char *bufferPtr, unsigned long int bufferSize);
+
113  static nctl::UniquePtr<IFile> createFromMemory(const unsigned char *bufferPtr, unsigned long int bufferSize);
+
114 
+
116  static nctl::UniquePtr<IFile> createFromMemory(const char *bufferName, unsigned long int bufferSize);
+
118  static nctl::UniquePtr<IFile> createFromMemory(unsigned long int bufferSize);
+
119 
+
121  static nctl::UniquePtr<IFile> createFromMemory(const char *bufferName, nctl::UniquePtr<unsigned char []> buffer, unsigned long int bufferSize);
+
123  static nctl::UniquePtr<IFile> createFromMemory(nctl::UniquePtr<unsigned char []> buffer, unsigned long int bufferSize);
+
124 
+
126  static nctl::UniquePtr<IFile> createFileHandle(const char *filename);
+
127 
+
128  protected:
+ +
131 
+
133  static const unsigned int MaxFilenameLength = 256;
+ +
136 
+ + +
142 
+ +
144 
+
146  unsigned long int fileSize_;
+
147 
+
148  private:
+
150  friend class TextureSaverPng;
+
151 };
+
152 
+
153 }
+
154 
+
155 #endif
+
The interface class dealing with file operations.
Definition: IFile.h:13
+
virtual long int seek(long int offset, int whence) const =0
Seeks in an opened file.
+
const char * filename() const
Returns file name with path.
Definition: IFile.h:68
+
static uint64_t int64FromBE(uint64_t number)
Reads a big endian 64 bit unsigned integer.
Definition: IFile.h:99
+
virtual void close()=0
Closes the file.
+
static uint16_t int16FromLE(uint16_t number)
Reads a little endian 16 bit unsigned integer.
Definition: IFile.h:83
+
FILE * ptr() const
Returns file stream pointer.
Definition: IFile.h:73
+
void setCloseOnDestruction(bool shouldCloseOnDestruction)
Sets the close on destruction flag.
Definition: IFile.h:63
+
virtual unsigned long int write(const void *buffer, unsigned long int bytes)=0
Writes a certain amount of bytes from a buffer to the file.
+
virtual unsigned long int read(void *buffer, unsigned long int bytes) const =0
Reads a certain amount of bytes from the file to a buffer.
+
FILE * filePointer_
File pointer for fopen() and fclose()
Definition: IFile.h:140
+
virtual long int tell() const =0
Tells the seek position of an opened file.
+
FileType type_
File type.
Definition: IFile.h:130
+
virtual void open(unsigned char mode)=0
Tries to open the file.
+
static uint32_t int32FromLE(uint32_t number)
Reads a little endian 32 bit unsigned integer.
Definition: IFile.h:85
+
unsigned long int size() const
Returns file size in bytes.
Definition: IFile.h:75
+
unsigned long int fileSize_
File size in bytes.
Definition: IFile.h:146
+
nctl::String filename_
File name with path.
Definition: IFile.h:135
+
int fileDescriptor_
File descriptor for open() and close()
Definition: IFile.h:138
+
bool shouldCloseOnDestruction_
A flag indicating whether the destructor should also close the file.
Definition: IFile.h:143
+
FileType type() const
Returns the file type (RTTI)
Definition: IFile.h:44
+
static uint64_t int64FromLE(uint64_t number)
Reads a little endian 64 bit unsigned integer.
Definition: IFile.h:87
+
static uint32_t int32FromBE(uint32_t number)
Reads a big endian 32 bit unsigned integer.
Definition: IFile.h:94
+
static uint16_t int16FromBE(uint16_t number)
Reads a big endian 16 bit unsigned integer.
Definition: IFile.h:89
+
virtual void * bufferPtr()
Returns the buffer pointer of a memory file or nullptr for other file types.
Definition: IFile.h:80
+
virtual const void * bufferPtr() const
Returns the constant buffer pointer of a memory file or nullptr for other file types.
Definition: IFile.h:78
+
FileType
File types.
Definition: IFile.h:17
+
int fd() const
Returns file descriptor.
Definition: IFile.h:71
+
PNG texture saver.
Definition: TextureSaverPng.h:10
+
A basic string class made of chars.
Definition: String.h:23
+
A unique pointer implementation.
Definition: UniquePtr.h:118
+
Open mode bitmask.
Definition: IFile.h:26
+
+ + + + diff --git a/master/_i_frame_timer_8h_source.html b/master/_i_frame_timer_8h_source.html new file mode 100644 index 0000000000..1ab7c3df97 --- /dev/null +++ b/master/_i_frame_timer_8h_source.html @@ -0,0 +1,133 @@ + + + + + + + +nCine: include/ncine/IFrameTimer.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
IFrameTimer.h
+
+
+
1 #ifndef CLASS_NCINE_IFRAMETIMER
+
2 #define CLASS_NCINE_IFRAMETIMER
+
3 
+
4 #include "ILogger.h"
+
5 
+
6 namespace ncine {
+
7 
+ +
10 {
+
11  public:
+
12  virtual ~IFrameTimer();
+
13 
+
15  virtual unsigned long int totalNumberFrames() const = 0;
+
17  virtual float lastFrameDuration() const = 0;
+
19  virtual float currentFrameDuration() const = 0;
+
20 
+
22  virtual float averageFps() const = 0;
+
24  virtual float averageFrameTime() const = 0;
+
25 
+
27  virtual bool averageEnabled() const = 0;
+
29  virtual bool loggingEnabled() const = 0;
+
30 
+
32  virtual float averageInterval() const = 0;
+
34  virtual void setAverageInterval(float averageInterval) = 0;
+
35 
+
37 
+
38  virtual float loggingInterval() const = 0;
+
40  virtual void setLoggingInterval(float loggingInterval) = 0;
+
41 
+
43  virtual ILogger::LogLevel logLevel() const = 0;
+ +
46 };
+
47 
+
48 }
+
49 
+
50 #endif
+
Frame interval and average FPS calculator interface class.
Definition: IFrameTimer.h:10
+
virtual float loggingInterval() const =0
Returns the number of seconds between two logging events.
+
virtual float averageFps() const =0
Returns the average FPS during the update interval.
+
virtual void setLogLevel(ILogger::LogLevel logLevel)=0
Sets the level for the logging events.
+
virtual bool loggingEnabled() const =0
Returns true if logging of averages is enabled.
+
virtual float averageFrameTime() const =0
Returns the average frame time in seconds during the update interval.
+
virtual bool averageEnabled() const =0
Returns true if the average FPS calculation is enabled.
+
virtual void setAverageInterval(float averageInterval)=0
Sets the number of seconds between two average FPS calculations.
+
virtual unsigned long int totalNumberFrames() const =0
Returns the total number of frames rendered since the application started.
+
virtual float currentFrameDuration() const =0
Returns the elapsed time in seconds since current frame started.
+
virtual ~IFrameTimer()
Definition: FrameTimer.cpp:11
+
virtual void setLoggingInterval(float loggingInterval)=0
Sets the number of seconds between two logging events.
+
virtual ILogger::LogLevel logLevel() const =0
Returns the level for the logging events.
+
virtual float lastFrameDuration() const =0
Returns the time in seconds that last frame took to complete.
+
virtual float averageInterval() const =0
Returns the number of seconds between two average FPS calculations.
+
LogLevel
Log levels, from less to more severe.
Definition: ILogger.h:18
+
+ + + + diff --git a/master/_i_gfx_capabilities_8h_source.html b/master/_i_gfx_capabilities_8h_source.html new file mode 100644 index 0000000000..6e35bb423f --- /dev/null +++ b/master/_i_gfx_capabilities_8h_source.html @@ -0,0 +1,194 @@ + + + + + + + +nCine: include/ncine/IGfxCapabilities.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
IGfxCapabilities.h
+
+
+
1 #ifndef CLASS_NCINE_IGFXCAPABILITIES
+
2 #define CLASS_NCINE_IGFXCAPABILITIES
+
3 
+
4 #include "common_defines.h"
+
5 
+
6 namespace ncine {
+
7 
+
9 class DLL_PUBLIC IGfxCapabilities
+
10 {
+
11  public:
+
13  enum class GLVersion
+
14  {
+
15  MAJOR,
+
16  MINOR,
+
17  RELEASE
+
18  };
+
19 
+ +
22  {
+
23  const unsigned char *vendor = nullptr;
+
24  const unsigned char *renderer = nullptr;
+
25  const unsigned char *glVersion = nullptr;
+
26  const unsigned char *glslVersion = nullptr;
+
27  };
+
28 
+
30  struct GLIntValues
+
31  {
+
32  enum Enum
+
33  {
+
34  MAX_TEXTURE_SIZE = 0,
+
35  MAX_TEXTURE_IMAGE_UNITS,
+
36  UNCLAMPED_MAX_UNIFORM_BLOCK_SIZE,
+
37  MAX_UNIFORM_BLOCK_SIZE,
+
38  MAX_UNIFORM_BUFFER_BINDINGS,
+
39  MAX_VERTEX_UNIFORM_BLOCKS,
+
40  MAX_FRAGMENT_UNIFORM_BLOCKS,
+
41  UNIFORM_BUFFER_OFFSET_ALIGNMENT,
+
42  MAX_VERTEX_ATTRIB_STRIDE,
+
43  MAX_COLOR_ATTACHMENTS,
+
44  NUM_PROGRAM_BINARY_FORMATS,
+
45 
+
46  COUNT
+
47  };
+
48  };
+
49 
+ +
52  {
+
53  enum Enum
+
54  {
+
55  PROGRAM_BINARY_FORMATS = 0,
+
56 
+
57  COUNT
+
58  };
+
59  };
+
60 
+
62  struct GLExtensions
+
63  {
+
64  enum Enum
+
65  {
+
66  KHR_DEBUG = 0,
+
67  ARB_TEXTURE_STORAGE,
+
68  ARB_GET_PROGRAM_BINARY,
+
69  EXT_TEXTURE_COMPRESSION_S3TC,
+
70  OES_COMPRESSED_ETC1_RGB8_TEXTURE,
+
71  AMD_COMPRESSED_ATC_TEXTURE,
+
72  IMG_TEXTURE_COMPRESSION_PVRTC,
+
73  KHR_TEXTURE_COMPRESSION_ASTC_LDR,
+
74 
+
75  COUNT
+
76  };
+
77  };
+
78 
+
79  virtual ~IGfxCapabilities() = 0;
+
80 
+
82  virtual int glVersion(GLVersion version) const = 0;
+
84  virtual const GlInfoStrings &glInfoStrings() const = 0;
+
86  virtual int value(GLIntValues::Enum valueName) const = 0;
+
88  virtual int arrayValue(GLArrayIntValues::Enum arrayValueName, unsigned int index) const = 0;
+
90  virtual bool hasExtension(GLExtensions::Enum extensionName) const = 0;
+
91 };
+
92 
+
93 inline IGfxCapabilities::~IGfxCapabilities() {}
+
94 
+
96 class DLL_PUBLIC NullGfxCapabilities : public IGfxCapabilities
+
97 {
+
98  public:
+
99  inline int glVersion(GLVersion version) const override { return 0; }
+
100  inline const GlInfoStrings &glInfoStrings() const override { return glInfoStrings_; }
+
101  inline int value(GLIntValues::Enum valueName) const override { return 0; }
+
102  inline int arrayValue(GLArrayIntValues::Enum arrayValueName, unsigned int index) const override { return 0; }
+
103  inline bool hasExtension(GLExtensions::Enum extensionName) const override { return false; }
+
104 
+
105  private:
+
106  GlInfoStrings glInfoStrings_;
+
107 };
+
108 
+
109 }
+
110 
+
111 #endif
+
The interface class to query runtime OpenGL device capabilities.
Definition: IGfxCapabilities.h:10
+
GLVersion
OpenGL version components.
Definition: IGfxCapabilities.h:14
+
virtual const GlInfoStrings & glInfoStrings() const =0
Returns the OpenGL information strings structure.
+
virtual int arrayValue(GLArrayIntValues::Enum arrayValueName, unsigned int index) const =0
Returns the value of a runtime OpenGL integer value from an array.
+
virtual int value(GLIntValues::Enum valueName) const =0
Returns the value of a runtime OpenGL integer value.
+
virtual int glVersion(GLVersion version) const =0
Returns the OpenGL version numbers.
+
virtual bool hasExtension(GLExtensions::Enum extensionName) const =0
Returns true if the specified OpenGL extension is available.
+
A fake graphics capabilities class that reports no available capabilities.
Definition: IGfxCapabilities.h:97
+
const GlInfoStrings & glInfoStrings() const override
Returns the OpenGL information strings structure.
Definition: IGfxCapabilities.h:100
+
int glVersion(GLVersion version) const override
Returns the OpenGL version numbers.
Definition: IGfxCapabilities.h:99
+
OpenGL queryable runtime integer array values.
Definition: IGfxCapabilities.h:52
+
OpenGL queryable extensions.
Definition: IGfxCapabilities.h:63
+
OpenGL queryable runtime integer values.
Definition: IGfxCapabilities.h:31
+
OpenGL information strings.
Definition: IGfxCapabilities.h:22
+
+ + + + diff --git a/master/_i_gfx_device_8h_source.html b/master/_i_gfx_device_8h_source.html new file mode 100644 index 0000000000..923fcb86de --- /dev/null +++ b/master/_i_gfx_device_8h_source.html @@ -0,0 +1,375 @@ + + + + + + + +nCine: include/ncine/IGfxDevice.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
IGfxDevice.h
+
+
+
1 #ifndef CLASS_NCINE_IGFXDEVICE
+
2 #define CLASS_NCINE_IGFXDEVICE
+
3 
+
4 #include "Vector2.h"
+
5 #include "Rect.h"
+
6 #include "DisplayMode.h"
+
7 #include "AppConfiguration.h"
+
8 
+
9 #ifdef __EMSCRIPTEN__
+
10 class EmscriptenUiEvent;
+
11 class EmscriptenFullscreenChangeEvent;
+
12 class EmscriptenFocusEvent;
+
13 #endif
+
14 
+
15 namespace ncine {
+
16 
+
17 class Colorf;
+
18 
+
20 class DLL_PUBLIC IGfxDevice
+
21 {
+
22  public:
+
23  static const unsigned int MaxMonitors = 4;
+
24 #if defined(WITH_QT5)
+
25  // Qt5 cannot query the list of supported video modes of a monitor
+
26  static const unsigned int MaxVideoModes = 1;
+
27 #elif defined(__ANDROID__)
+
28  static const unsigned int MaxVideoModes = 16;
+
29 #else
+
30  static const unsigned int MaxVideoModes = 128;
+
31 #endif
+
32 
+
34  struct WindowMode
+
35  {
+
36  WindowMode()
+
37  : width(0), height(0), refreshRate(0.0f), windowPositionX(AppConfiguration::WindowPositionIgnore),
+
38  windowPositionY(AppConfiguration::WindowPositionIgnore), isFullScreen(false), isResizable(false), hasWindowScaling(true) {}
+
39  WindowMode(unsigned int w, unsigned int h, float refresh, int posX, int posY, bool fullscreen, bool resizable, bool windowScaling)
+
40  : width(w), height(h), refreshRate(refresh), windowPositionX(posX), windowPositionY(posY),
+
41  isFullScreen(fullscreen), isResizable(resizable), hasWindowScaling(windowScaling) {}
+
42  explicit WindowMode(const AppConfiguration &appCfg)
+
43  : width(appCfg.resolution.x), height(appCfg.resolution.y), refreshRate(appCfg.refreshRate), windowPositionX(appCfg.windowPosition.x),
+
44  windowPositionY(appCfg.windowPosition.y), isFullScreen(appCfg.fullScreen), isResizable(appCfg.resizable), hasWindowScaling(appCfg.windowScaling) {}
+
45 
+
46  unsigned int width;
+
47  unsigned int height;
+
48  float refreshRate;
+
49  int windowPositionX;
+
50  int windowPositionY;
+
51  bool isFullScreen;
+
52  bool isResizable;
+
53  bool hasWindowScaling;
+
54  };
+
55 
+
57  struct VideoMode
+
58  {
+
59  VideoMode()
+
60  : width(0), height(0), refreshRate(0.0f), redBits(8), greenBits(8), blueBits(8) {}
+
61  inline bool operator==(const VideoMode &mode) const
+
62  {
+
63  return (width == mode.width && height == mode.height && refreshRate == mode.refreshRate &&
+
64  redBits == mode.redBits && greenBits == mode.greenBits && blueBits == mode.blueBits);
+
65  }
+
66  inline bool operator!=(const VideoMode &mode) const { return !operator==(mode); }
+
67 
+
68  unsigned int width;
+
69  unsigned int height;
+
70  float refreshRate;
+
71  unsigned char redBits;
+
72  unsigned char greenBits;
+
73  unsigned char blueBits;
+
74  };
+
75 
+
77  struct Monitor
+
78  {
+
80  const char *name;
+ + + +
87 
+
89  unsigned int numVideoModes;
+
91  VideoMode videoModes[MaxVideoModes];
+
92  };
+
93 
+ +
96  {
+
97  explicit GLContextInfo(const AppConfiguration &appCfg)
+
98  : majorVersion(appCfg.glMajorVersion()), minorVersion(appCfg.glMinorVersion()),
+
99  coreProfile(appCfg.glCoreProfile()), forwardCompatible(appCfg.glForwardCompatible()),
+
100  debugContext(appCfg.withGlDebugContext) {}
+
101 
+
102  unsigned int majorVersion;
+
103  unsigned int minorVersion;
+
104  bool coreProfile;
+
105  bool forwardCompatible;
+
106  bool debugContext;
+
107  };
+
108 
+
109  IGfxDevice(const WindowMode &windowMode, const GLContextInfo &glContextInfo, const DisplayMode &displayMode);
+
110  virtual ~IGfxDevice() {}
+
111 
+
113 
+
114  virtual void setSwapInterval(int interval) = 0;
+
115 
+
117  inline bool isFullScreen() const { return isFullScreen_; }
+
119  virtual void setFullScreen(bool fullScreen) = 0;
+
120 
+
122  inline bool isResizable() const { return isResizable_; }
+
123 
+
125  inline virtual int windowPositionX() const { return 0; }
+
127  inline virtual int windowPositionY() const { return 0; }
+
129  inline virtual const Vector2i windowPosition() const { return Vector2i(0, 0); }
+
131  virtual void setWindowPosition(int x, int y) = 0;
+
133  inline void setWindowPosition(Vector2i position) { setWindowPosition(position.x, position.y); }
+
134 
+
136  inline int width() const { return width_; }
+
138  inline int height() const { return height_; }
+
140  inline Vector2i resolution() const { return Vector2i(width_, height_); }
+
142  inline Rectf screenRect() const { return Rectf(0.0f, 0.0f, static_cast<float>(width_), static_cast<float>(height_)); }
+
144  inline float aspect() const { return width_ / static_cast<float>(height_); }
+
146 
+
147  virtual void setWindowSize(int width, int height) = 0;
+
149 
+
150  inline void setWindowSize(Vector2i size) { setWindowSize(size.x, size.y); }
+
151 
+
153 
+
154  inline int drawableWidth() const { return drawableWidth_; }
+
156 
+
157  inline int drawableHeight() const { return drawableHeight_; }
+
159  inline Vector2i drawableResolution() const { return Vector2i(drawableWidth_, drawableHeight_); }
+
161  inline Rectf drawableScreenRect() const { return Rectf(0.0f, 0.0f, static_cast<float>(drawableWidth_), static_cast<float>(drawableHeight_)); }
+
163  inline float drawableAspect() const { return drawableWidth_ / static_cast<float>(drawableHeight_); }
+
164 
+
166  virtual void setWindowTitle(const char *windowTitle) = 0;
+
168  virtual void setWindowIcon(const char *windowIconFilename) = 0;
+
170  inline virtual void flashWindow() const {}
+
171 
+
173  inline const GLContextInfo &glContextInfo() const { return glContextInfo_; }
+
175  inline const DisplayMode &displayMode() const { return displayMode_; }
+
176 
+
178  unsigned int numMonitors() const;
+
180 
+
181  inline virtual unsigned int primaryMonitorIndex() const { return 0; }
+
183  inline virtual unsigned int windowMonitorIndex() const { return 0; }
+
185  const Monitor &monitor(unsigned int index) const;
+
187  inline const Monitor &monitor() const { return monitor(windowMonitorIndex()); }
+
188 
+
190  virtual const VideoMode &currentVideoMode(unsigned int monitorIndex) const = 0;
+
192  inline const VideoMode &currentVideoMode() const { return currentVideoMode(windowMonitorIndex()); }
+
194 
+
195  inline virtual bool setVideoMode(unsigned int modeIndex) { return false; }
+
196 
+
198  float windowScalingFactor() const;
+
199 
+
200  protected:
+
202  static const float DefaultDpi;
+
203 
+
205  int width_;
+
207  int height_;
+ + + + + + +
220 
+
221  Monitor monitors_[MaxMonitors];
+
222  unsigned int numMonitors_;
+ +
225 
+
227 
+ +
229 
+ +
232 
+
234  void initWindowScaling(const WindowMode &windowMode);
+
235 
+
237  void initGLViewport();
+
238 
+
240 
+
241  int containingMonitorIndex(int x, int y, int width, int height) const;
+
243 
+
244  inline int containingMonitorIndex(const Recti &rect) const { return containingMonitorIndex(rect.x, rect.y, rect.w, rect.h); }
+
246 
+
247  inline int containingMonitorIndex(const WindowMode &windowMode) const
+
248  {
+
249  return containingMonitorIndex(windowMode.windowPositionX, windowMode.windowPositionY, windowMode.width, windowMode.height);
+
250  }
+
251 
+
253  int containingMonitorIndex(int x, int y) const;
+
255  inline int containingMonitorIndex(const Vector2i &point) const { return containingMonitorIndex(point.x, point.y); }
+
256 
+
258  inline virtual void updateMonitors() {}
+
259 
+
260  private:
+
262  virtual void setupGL();
+
263 
+
265  virtual void update() = 0;
+
266 
+
268  bool scaleWindowSize(bool windowScaling);
+
269 
+
270  friend class Application;
+
271 #if defined(WITH_SDL)
+
272  friend class PCApplication;
+
273 #endif
+
274 
+
275 #ifdef __EMSCRIPTEN__
+
276  static bool resize_callback(int eventType, const EmscriptenUiEvent *event, void *userData);
+
277  static bool fullscreenchange_callback(int eventType, const EmscriptenFullscreenChangeEvent *event, void *userData);
+
278  static bool focus_callback(int eventType, const EmscriptenFocusEvent *event, void *userData);
+
279 #endif
+
280 };
+
281 
+
282 }
+
283 
+
284 #endif
+
The class storing initialization settings for an nCine application.
Definition: AppConfiguration.h:12
+
unsigned int glMinorVersion() const
Definition: AppConfiguration.h:119
+
bool fullScreen
The flag is true if the application is going to be in full screen mode.
Definition: AppConfiguration.h:41
+
bool resizable
The flag is true if the window is going to be resizable.
Definition: AppConfiguration.h:43
+
bool withGlDebugContext
The flag is true if the OpenGL debug context is enabled.
Definition: AppConfiguration.h:103
+
bool glCoreProfile() const
Definition: AppConfiguration.h:113
+
unsigned int glMajorVersion() const
Definition: AppConfiguration.h:117
+
float refreshRate
The refresh rate of the screen mode used to go in full screen.
Definition: AppConfiguration.h:35
+
Vector2i windowPosition
The window position coordinates in the virtual screen made of all the connected monitors.
Definition: AppConfiguration.h:39
+
bool windowScaling
The flag is true if the window size is automatically scaled according to the display factor.
Definition: AppConfiguration.h:45
+
bool glForwardCompatible() const
Definition: AppConfiguration.h:115
+
Vector2i resolution
The window size or the resolution of the closest video mode if going full screen.
Definition: AppConfiguration.h:32
+
Main entry point and handler for nCine applications.
Definition: Application.h:24
+
Display properties.
Definition: DisplayMode.h:10
+
It represents the interface to the graphics device where everything is rendered.
Definition: IGfxDevice.h:21
+
int drawableHeight() const
Returns the window height in pixels.
Definition: IGfxDevice.h:157
+
int drawableHeight_
Window height in pixels (for HiDPI screens)
Definition: IGfxDevice.h:211
+
bool isFullScreen() const
Returns true if the device renders in full screen.
Definition: IGfxDevice.h:117
+
bool isResizable() const
Returns true if the window is resizable.
Definition: IGfxDevice.h:122
+
Rectf drawableScreenRect() const
Returns the window resolution in pixels as a Rectf object.
Definition: IGfxDevice.h:161
+
float drawableAspect() const
Returns the window drawable resolution aspect ratio.
Definition: IGfxDevice.h:163
+
int containingMonitorIndex(const Vector2i &point) const
Returns the monitor index that contains the specified point as a Vector2i object, or -1 if the point ...
Definition: IGfxDevice.h:255
+
virtual unsigned int windowMonitorIndex() const
Returns the array index of the monitor associated with the window.
Definition: IGfxDevice.h:183
+
int drawableWidth() const
Returns the window width in pixels.
Definition: IGfxDevice.h:154
+
bool isResizable_
Whether the window is resizable.
Definition: IGfxDevice.h:215
+
float previousScalingFactor_
The window scaling factor from last frame.
Definition: IGfxDevice.h:231
+
DisplayMode displayMode_
Display properties.
Definition: IGfxDevice.h:219
+
void setWindowPosition(Vector2i position)
Sets the position of the application window with a Vector2i object.
Definition: IGfxDevice.h:133
+
const DisplayMode & displayMode() const
Returns display mode.
Definition: IGfxDevice.h:175
+
float aspect() const
Returns the window or video mode resolution aspect ratio.
Definition: IGfxDevice.h:144
+
VideoMode currentVideoMode_
Used as a cache to avoid searching the current video mode in a monitor's array.
Definition: IGfxDevice.h:224
+
virtual void setWindowSize(int width, int height)=0
Sets the window size with two integers.
+
virtual void setFullScreen(bool fullScreen)=0
Sets the full screen flag of the window.
+
int width_
Window width in screen coordinates.
Definition: IGfxDevice.h:205
+
virtual void setSwapInterval(int interval)=0
Sets the number of vertical blanks to occur before a buffer swap.
+
virtual void setWindowIcon(const char *windowIconFilename)=0
Sets the application window icon.
+
const GLContextInfo & glContextInfo() const
Returns the OpenGL context creation attributes.
Definition: IGfxDevice.h:173
+
virtual const Vector2i windowPosition() const
Returns the window position as a Vector2i object.
Definition: IGfxDevice.h:129
+
int height_
Window height in screen coordinates.
Definition: IGfxDevice.h:207
+
GLContextInfo glContextInfo_
OpenGL context creation attributes.
Definition: IGfxDevice.h:217
+
Vector2i drawableResolution() const
Returns the window resolution in pixels as a Vector2i object.
Definition: IGfxDevice.h:159
+
int width() const
Returns the window or video mode width in screen coordinates.
Definition: IGfxDevice.h:136
+
virtual int windowPositionY() const
Returns the window vertical position.
Definition: IGfxDevice.h:127
+
int height() const
Returns the window or video mode height in screen coordinates.
Definition: IGfxDevice.h:138
+
virtual bool setVideoMode(unsigned int modeIndex)
Sets the video mode that will be used in full screen by the monitor that hosts the window.
Definition: IGfxDevice.h:195
+
int containingMonitorIndex(const Recti &rect) const
Returns the monitor index that contains the center of the specified rectangle as a Recti object,...
Definition: IGfxDevice.h:244
+
const Monitor & monitor() const
Returns the monitor that hosts the window.
Definition: IGfxDevice.h:187
+
int containingMonitorIndex(const WindowMode &windowMode) const
Returns the monitor index that contains the center of the specified rectangle as a WindowMode object,...
Definition: IGfxDevice.h:247
+
virtual void setWindowPosition(int x, int y)=0
Sets the position of the application window with two integers.
+
int drawableWidth_
Window width in pixels (for HiDPI screens)
Definition: IGfxDevice.h:209
+
virtual const VideoMode & currentVideoMode(unsigned int monitorIndex) const =0
Returns the current video mode for the specified monitor.
+
bool isFullScreen_
Whether rendering occurs in full screen.
Definition: IGfxDevice.h:213
+
static const float DefaultDpi
The default value used for a monitor DPI when the real vaue cannot be queried.
Definition: IGfxDevice.h:202
+
virtual unsigned int primaryMonitorIndex() const
Returns the array index of the primary monitor.
Definition: IGfxDevice.h:181
+
virtual void updateMonitors()
Updates the array of connected monitors.
Definition: IGfxDevice.h:258
+
virtual void flashWindow() const
Highlights the application window to notify the user.
Definition: IGfxDevice.h:170
+
Vector2i resolution() const
Returns the window or video mode resolution in screen coordinates as a Vector2i object.
Definition: IGfxDevice.h:140
+
const VideoMode & currentVideoMode() const
Returns the current video mode for the monitor that hosts the window.
Definition: IGfxDevice.h:192
+
void setWindowSize(Vector2i size)
Sets the window size with a Vector2i object.
Definition: IGfxDevice.h:150
+
virtual void setWindowTitle(const char *windowTitle)=0
Sets the application window title.
+
Rectf screenRect() const
Returns the window or video mode resolution in screen coordinates as a Rectf object.
Definition: IGfxDevice.h:142
+
virtual int windowPositionX() const
Returns the window horizontal position.
Definition: IGfxDevice.h:125
+
bool backendScalesWindowSize_
A flag indicating if the backend is responsible for scaling the window size.
Definition: IGfxDevice.h:228
+
Handler class for nCine applications on PC.
Definition: PCApplication.h:12
+ +
T h
Height as a public property.
Definition: Rect.h:21
+
T y
Top-left Y coordinate as a public property (top with positive height)
Definition: Rect.h:17
+
T x
Top-left X coordinate as a public property (left with positive width)
Definition: Rect.h:15
+
T w
Width as a public property.
Definition: Rect.h:19
+ +
Contains the attributes to create an OpenGL context.
Definition: IGfxDevice.h:96
+
A structure representing a connected monitor.
Definition: IGfxDevice.h:78
+
Vector2f scale
The content scale factor.
Definition: IGfxDevice.h:86
+
unsigned int numVideoModes
The number of video modes in the array.
Definition: IGfxDevice.h:89
+
const char * name
The monitor name.
Definition: IGfxDevice.h:80
+
Vector2i position
The position of the monitor's viewport on the virtual screen.
Definition: IGfxDevice.h:82
+
Vector2i dpi
The horizontal and vertical dots per inch.
Definition: IGfxDevice.h:84
+
A structure representing a video mode supported by a monitor.
Definition: IGfxDevice.h:58
+
A structure used to initialize window properties.
Definition: IGfxDevice.h:35
+
+ + + + diff --git a/master/_i_indexer_8h_source.html b/master/_i_indexer_8h_source.html new file mode 100644 index 0000000000..ab39e010d5 --- /dev/null +++ b/master/_i_indexer_8h_source.html @@ -0,0 +1,146 @@ + + + + + + + +nCine: include/ncine/IIndexer.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
IIndexer.h
+
+
+
1 #ifndef CLASS_NCINE_IINDEXER
+
2 #define CLASS_NCINE_IINDEXER
+
3 
+
4 #include "common_defines.h"
+
5 
+
6 namespace ncine {
+
7 
+
8 class Object;
+
9 
+
11 class DLL_PUBLIC IIndexer
+
12 {
+
13  public:
+
14  virtual ~IIndexer() = 0;
+
15 
+
17  virtual unsigned int addObject(Object *object) = 0;
+
19  virtual bool removeObject(unsigned int id) = 0;
+
20 
+
22  virtual Object *object(unsigned int id) const = 0;
+
24  virtual bool setObject(unsigned int id, Object *object) = 0;
+
25 
+
27  virtual bool isEmpty() const = 0;
+
28 
+
30  virtual unsigned int size() const = 0;
+
31 
+
33  virtual void logReport() const = 0;
+
34 };
+
35 
+
36 inline IIndexer::~IIndexer() {}
+
37 
+
39 class DLL_PUBLIC NullIndexer : public IIndexer
+
40 {
+
41  public:
+
42  unsigned int addObject(Object *object) override { return 0U; }
+
43  bool removeObject(unsigned int id) override { return true; }
+
44 
+
45  Object *object(unsigned int id) const override { return nullptr; }
+
46  bool setObject(unsigned int id, Object *object) override { return true; };
+
47 
+
48  bool isEmpty() const override { return true; }
+
49 
+
50  unsigned int size() const override { return 0U; }
+
51 
+
52  void logReport() const override {}
+
53 };
+
54 
+
55 }
+
56 
+
57 #endif
+
The Interface for every Object indexer.
Definition: IIndexer.h:12
+
virtual bool setObject(unsigned int id, Object *object)=0
Sets the object pointer for the specified id.
+
virtual bool removeObject(unsigned int id)=0
Removes an object from the index.
+
virtual Object * object(unsigned int id) const =0
Returns the object with the specified object id, if any.
+
virtual void logReport() const =0
Prints in the log a list of currently indexed objects.
+
virtual bool isEmpty() const =0
Returns true if the index is empty.
+
virtual unsigned int size() const =0
Returns the number of objects in the index.
+
virtual unsigned int addObject(Object *object)=0
Adds an object to the index.
+
Fake indexer, always returning nullptr and a zero index.
Definition: IIndexer.h:40
+
bool isEmpty() const override
Returns true if the index is empty.
Definition: IIndexer.h:48
+
Object * object(unsigned int id) const override
Returns the object with the specified object id, if any.
Definition: IIndexer.h:45
+
bool setObject(unsigned int id, Object *object) override
Sets the object pointer for the specified id.
Definition: IIndexer.h:46
+
unsigned int addObject(Object *object) override
Adds an object to the index.
Definition: IIndexer.h:42
+
void logReport() const override
Prints in the log a list of currently indexed objects.
Definition: IIndexer.h:52
+
unsigned int size() const override
Returns the number of objects in the index.
Definition: IIndexer.h:50
+
bool removeObject(unsigned int id) override
Removes an object from the index.
Definition: IIndexer.h:43
+
Static RRTI and identification index.
Definition: Object.h:10
+
+ + + + diff --git a/master/_i_input_event_handler_8h_source.html b/master/_i_input_event_handler_8h_source.html new file mode 100644 index 0000000000..5ca29d0abc --- /dev/null +++ b/master/_i_input_event_handler_8h_source.html @@ -0,0 +1,169 @@ + + + + + + + +nCine: include/ncine/IInputEventHandler.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
IInputEventHandler.h
+
+
+
1 #ifndef CLASS_NCINE_IINPUTEVENTHANDLER
+
2 #define CLASS_NCINE_IINPUTEVENTHANDLER
+
3 
+
4 #include "IInputManager.h"
+
5 
+
6 namespace ncine {
+
7 
+
9 class DLL_PUBLIC IInputEventHandler
+
10 {
+
11  public:
+ +
13  inline virtual ~IInputEventHandler() {}
+
14 
+
16  inline virtual void onKeyPressed(const KeyboardEvent &event) {}
+
18  inline virtual void onKeyReleased(const KeyboardEvent &event) {}
+
20  inline virtual void onTextInput(const TextInputEvent &event) {}
+
22  inline virtual void onTouchDown(const TouchEvent &event) {}
+
24  inline virtual void onTouchUp(const TouchEvent &event) {}
+
26  inline virtual void onTouchMove(const TouchEvent &event) {}
+
28  inline virtual void onPointerDown(const TouchEvent &event) {}
+
30  inline virtual void onPointerUp(const TouchEvent &event) {}
+
31 #ifdef __ANDROID__
+
33  inline virtual void onAcceleration(const AccelerometerEvent &event) {}
+
34 #endif
+
36  inline virtual void onMouseButtonPressed(const MouseEvent &event) {}
+
38  inline virtual void onMouseButtonReleased(const MouseEvent &event) {}
+
40  inline virtual void onMouseMoved(const MouseState &state) {}
+
42  inline virtual void onScrollInput(const ScrollEvent &event) {}
+
43 
+
45  inline virtual void onJoyButtonPressed(const JoyButtonEvent &event) {}
+
47  inline virtual void onJoyButtonReleased(const JoyButtonEvent &event) {}
+
49  inline virtual void onJoyHatMoved(const JoyHatEvent &event) {}
+
51  inline virtual void onJoyAxisMoved(const JoyAxisEvent &event) {}
+
52 
+
54  inline virtual void onJoyMappedButtonPressed(const JoyMappedButtonEvent &event) {}
+
56  inline virtual void onJoyMappedButtonReleased(const JoyMappedButtonEvent &event) {}
+
58  inline virtual void onJoyMappedAxisMoved(const JoyMappedAxisEvent &event) {}
+
59 
+
61  inline virtual void onJoyConnected(const JoyConnectionEvent &event) {}
+
63  inline virtual void onJoyDisconnected(const JoyConnectionEvent &event) {}
+
64 
+
66  inline virtual void onFilesDropped(const DropEvent &event) {}
+
67 
+
69 
+
70  inline virtual bool onQuitRequest() { return true; }
+
71 };
+
72 
+
73 }
+
74 
+
75 #endif
+
Information about a drag'n'drop event.
Definition: InputEvents.h:135
+
The interface class for handling input events from keyboard, screen touches, mouse,...
Definition: IInputEventHandler.h:10
+
virtual void onPointerUp(const TouchEvent &event)
Callback function called every time a screen touch different than the last one is released.
Definition: IInputEventHandler.h:30
+
virtual void onJoyDisconnected(const JoyConnectionEvent &event)
Callback function called every time a joystick is disconnected.
Definition: IInputEventHandler.h:63
+
virtual void onMouseButtonReleased(const MouseEvent &event)
Callback function called every time a mouse button is released.
Definition: IInputEventHandler.h:38
+
virtual void onJoyButtonReleased(const JoyButtonEvent &event)
Callback function called every time a joystick button is released.
Definition: IInputEventHandler.h:47
+
virtual void onJoyMappedButtonPressed(const JoyMappedButtonEvent &event)
Callback function called every time a button of a joystick with mapping is pressed.
Definition: IInputEventHandler.h:54
+
virtual void onFilesDropped(const DropEvent &event)
Callback function called every time some files or directories are dropped on the window.
Definition: IInputEventHandler.h:66
+
virtual void onJoyConnected(const JoyConnectionEvent &event)
Callback function called every time a joystick is connected.
Definition: IInputEventHandler.h:61
+
virtual void onJoyMappedButtonReleased(const JoyMappedButtonEvent &event)
Callback function called every time a button of a joystick with mapping is released.
Definition: IInputEventHandler.h:56
+
virtual void onMouseButtonPressed(const MouseEvent &event)
Callback function called every time a mouse button is pressed.
Definition: IInputEventHandler.h:36
+
virtual void onPointerDown(const TouchEvent &event)
Callback function called every time a screen touch different than the first one is made.
Definition: IInputEventHandler.h:28
+
virtual void onKeyReleased(const KeyboardEvent &event)
Callback function called every time a key is released.
Definition: IInputEventHandler.h:18
+
virtual void onTouchMove(const TouchEvent &event)
Callback function called every time a screen touch is moved.
Definition: IInputEventHandler.h:26
+
virtual void onJoyButtonPressed(const JoyButtonEvent &event)
Callback function called every time a joystick button is pressed.
Definition: IInputEventHandler.h:45
+
virtual void onScrollInput(const ScrollEvent &event)
Callback function called every time a scroll input occurs (mouse wheel, touchpad gesture,...
Definition: IInputEventHandler.h:42
+
virtual void onTouchDown(const TouchEvent &event)
Callback function called every time the first screen touch is made.
Definition: IInputEventHandler.h:22
+
virtual void onJoyAxisMoved(const JoyAxisEvent &event)
Callback function called every time a joystick axis is moved.
Definition: IInputEventHandler.h:51
+
virtual void onJoyHatMoved(const JoyHatEvent &event)
Callback function called every time a joystick hat is moved.
Definition: IInputEventHandler.h:49
+
virtual void onJoyMappedAxisMoved(const JoyMappedAxisEvent &event)
Callback function called every time an axis of a joystick with mapping is moved.
Definition: IInputEventHandler.h:58
+
virtual bool onQuitRequest()
Callback function called when the system sends a quit event, for example when the user clicks the win...
Definition: IInputEventHandler.h:70
+
virtual void onKeyPressed(const KeyboardEvent &event)
Callback function called every time a key is pressed.
Definition: IInputEventHandler.h:16
+
virtual void onTextInput(const TextInputEvent &event)
Callback function called every time a text input is generated.
Definition: IInputEventHandler.h:20
+
virtual void onMouseMoved(const MouseState &state)
Callback function called every time the mouse is moved.
Definition: IInputEventHandler.h:40
+
virtual void onTouchUp(const TouchEvent &event)
Callback function called every time the last screen touch is released.
Definition: IInputEventHandler.h:24
+
static void setHandler(IInputEventHandler *inputEventHandler)
Sets the input event handler for the manager.
Definition: IInputManager.cpp:28
+
Information about a joystick axis event.
Definition: InputEvents.h:205
+
Information about a joystick button event.
Definition: InputEvents.h:166
+
Information about a joystick connection event.
Definition: InputEvents.h:219
+
Information about a joystick hat event.
Definition: InputEvents.h:193
+
Information about a joystick mapped axis event.
Definition: InputEvents.h:290
+
Information about a joystick mapped button event.
Definition: InputEvents.h:280
+
Information about a keyboard event.
Definition: InputEvents.h:107
+
Information about a mouse event.
Definition: InputEvents.h:73
+
Information about the mouse state.
Definition: InputEvents.h:57
+
Information about a scroll event (mouse wheel, touchpad gesture, etc.)
Definition: InputEvents.h:89
+
Information about a text input event.
Definition: InputEvents.h:122
+
Information about a screen touch event.
Definition: InputEvents.h:11
+
+ + + + diff --git a/master/_i_input_manager_8h_source.html b/master/_i_input_manager_8h_source.html new file mode 100644 index 0000000000..c88a14894d --- /dev/null +++ b/master/_i_input_manager_8h_source.html @@ -0,0 +1,171 @@ + + + + + + + +nCine: include/ncine/IInputManager.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
IInputManager.h
+
+
+
1 #ifndef CLASS_NCINE_IINPUTMANAGER
+
2 #define CLASS_NCINE_IINPUTMANAGER
+
3 
+
4 #include "InputEvents.h"
+
5 
+
6 namespace ncine {
+
7 
+
8 class IInputEventHandler;
+
9 class JoyMapping;
+
10 template <class T>
+
11 class Vector2;
+
12 using Vector2f = Vector2<float>;
+
13 
+
15 class DLL_PUBLIC IInputManager
+
16 {
+
17  public:
+
18  enum class MouseCursorMode
+
19  {
+
21  NORMAL,
+
23  HIDDEN,
+
25 
+
26  DISABLED
+
27  };
+
28 
+
29  static const int MaxNumJoysticks;
+
30  static const short int MaxAxisValue = 32767;
+
31 
+
32  // From `XInput.h` in DirectX SDK
+
33  static const float LeftStickDeadZone;
+
34  static const float RightStickDeadZone;
+
35  static const float TriggerDeadZone;
+
36 
+
37  IInputManager() {}
+
38  virtual ~IInputManager() {}
+
40  static inline IInputEventHandler *handler() { return inputEventHandler_; }
+
42  static void setHandler(IInputEventHandler *inputEventHandler);
+
43 
+
45  virtual const MouseState &mouseState() const = 0;
+
47  virtual const KeyboardState &keyboardState() const = 0;
+
48 
+
50  virtual bool isJoyPresent(int joyId) const = 0;
+
52  virtual const char *joyName(int joyId) const = 0;
+
54  virtual const char *joyGuid(int joyId) const = 0;
+
56  virtual int joyNumButtons(int joyId) const = 0;
+
58  virtual int joyNumHats(int joyId) const = 0;
+
60  virtual int joyNumAxes(int joyId) const = 0;
+
62  virtual const JoystickState &joystickState(int joyId) const = 0;
+
63 
+
65  bool isJoyMapped(int joyId) const;
+
67  const JoyMappedState &joyMappedState(int joyId) const;
+
69  void deadZoneNormalize(Vector2f &joyVector, float deadZoneValue) const;
+
70 
+
72  void addJoyMappingsFromFile(const char *filename);
+
74  void addJoyMappingsFromStrings(const char **mappingStrings);
+
76  unsigned int numJoyMappings() const;
+
77 
+
79  inline MouseCursorMode mouseCursorMode() const { return mouseCursorMode_; }
+
81  virtual void setMouseCursorMode(MouseCursorMode mode);
+
82 
+
83  protected:
+
84  static IInputEventHandler *inputEventHandler_;
+
85  static MouseCursorMode mouseCursorMode_;
+
86 
+
87  static JoyMapping joyMapping_;
+
88  static DropEvent dropEvent_;
+
89 };
+
90 
+
91 }
+
92 
+
93 #endif
+
Information about a drag'n'drop event.
Definition: InputEvents.h:135
+
The interface class for handling input events from keyboard, screen touches, mouse,...
Definition: IInputEventHandler.h:10
+
The interface class for parsing and dispatching input events.
Definition: IInputManager.h:16
+
MouseCursorMode
Definition: IInputManager.h:19
+
virtual const MouseState & mouseState() const =0
Returns current mouse state.
+
virtual const char * joyName(int joyId) const =0
Returns the name of the specified joystick.
+
virtual int joyNumHats(int joyId) const =0
Returns the number of available hats for the specified joystick.
+
MouseCursorMode mouseCursorMode() const
Returns current mouse cursor mode.
Definition: IInputManager.h:79
+
virtual const KeyboardState & keyboardState() const =0
Returns current keyboard state.
+
static IInputEventHandler * handler()
Gets the current input event handler for the manager.
Definition: IInputManager.h:40
+
virtual const char * joyGuid(int joyId) const =0
Returns the GUID of the specified joystick.
+
virtual const JoystickState & joystickState(int joyId) const =0
Returns the state of the joystick.
+
virtual int joyNumAxes(int joyId) const =0
Returns the number of available axes for the specified joystick.
+
virtual int joyNumButtons(int joyId) const =0
Returns the number of available buttons for the specified joystick.
+
virtual bool isJoyPresent(int joyId) const =0
Returns true if the specified joystick is connected.
+
Information about the mapped joystick state.
Definition: InputEvents.h:263
+
Information about the joystick state.
Definition: InputEvents.h:152
+
Information about the keyboard state.
Definition: InputEvents.h:99
+
Information about the mouse state.
Definition: InputEvents.h:57
+ +
+ + + + diff --git a/master/_i_logger_8h_source.html b/master/_i_logger_8h_source.html new file mode 100644 index 0000000000..a0ce2a3f34 --- /dev/null +++ b/master/_i_logger_8h_source.html @@ -0,0 +1,145 @@ + + + + + + + +nCine: include/ncine/ILogger.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ILogger.h
+
+
+
1 #ifndef CLASS_NCINE_ILOGGER
+
2 #define CLASS_NCINE_ILOGGER
+
3 
+
4 #if defined(_WIN32) && defined(ERROR)
+
5  #undef ERROR
+
6 #endif
+
7 
+
8 #include "common_defines.h"
+
9 
+
10 namespace ncine {
+
11 
+
13 class DLL_PUBLIC ILogger
+
14 {
+
15  public:
+
17  enum class LogLevel
+
18  {
+
19  UNKNOWN = -1,
+
20  OFF = 0,
+
21  VERBOSE,
+
22  DEBUG,
+
23  INFO,
+
24  WARN,
+
25  ERROR,
+
26  FATAL
+
27  };
+
28 
+
29  virtual ~ILogger() = 0;
+
30 
+
32  virtual unsigned int write(LogLevel level, const char *fmt, ...) = 0;
+
33 
+
35  virtual const char *logString() const = 0;
+
37  virtual void clearLogString() = 0;
+
39  virtual unsigned int logStringLength() const = 0;
+
41  virtual unsigned int logStringCapacity() const = 0;
+
42 };
+
43 
+
44 inline ILogger::~ILogger() {}
+
45 
+
47 class DLL_PUBLIC NullLogger : public ILogger
+
48 {
+
49  public:
+
50  inline unsigned int write(LogLevel level, const char *fmt, ...) override { return 0; }
+
51  inline const char *logString() const override { return nullptr; }
+
52  inline void clearLogString() override {}
+
53  inline unsigned int logStringLength() const override { return 0; }
+
54  inline unsigned int logStringCapacity() const override { return 0; }
+
55 };
+
56 
+
57 }
+
58 
+
59 #endif
+
The interface class for loggers.
Definition: ILogger.h:14
+
virtual unsigned int write(LogLevel level, const char *fmt,...)=0
Logs a message with a specified level of severity.
+
virtual void clearLogString()=0
Clears the entries from the log string.
+
virtual unsigned int logStringLength() const =0
Returns the length of the log string.
+
virtual const char * logString() const =0
Returns the log string with all the recorded log entries.
+
virtual unsigned int logStringCapacity() const =0
Returns the capacity of the log string.
+
LogLevel
Log levels, from less to more severe.
Definition: ILogger.h:18
+
A fake logger which doesn't log anything.
Definition: ILogger.h:48
+
unsigned int logStringCapacity() const override
Returns the capacity of the log string.
Definition: ILogger.h:54
+
const char * logString() const override
Returns the log string with all the recorded log entries.
Definition: ILogger.h:51
+
unsigned int write(LogLevel level, const char *fmt,...) override
Logs a message with a specified level of severity.
Definition: ILogger.h:50
+
void clearLogString() override
Clears the entries from the log string.
Definition: ILogger.h:52
+
unsigned int logStringLength() const override
Returns the length of the log string.
Definition: ILogger.h:53
+
+ + + + diff --git a/master/_i_texture_saver_8h_source.html b/master/_i_texture_saver_8h_source.html new file mode 100644 index 0000000000..812476107c --- /dev/null +++ b/master/_i_texture_saver_8h_source.html @@ -0,0 +1,129 @@ + + + + + + + +nCine: include/ncine/ITextureSaver.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ITextureSaver.h
+
+
+
1 #ifndef CLASS_NCINE_ITEXTURESAVER
+
2 #define CLASS_NCINE_ITEXTURESAVER
+
3 
+
4 #include "common_defines.h"
+
5 #include <nctl/UniquePtr.h>
+
6 
+
7 namespace ncine {
+
8 
+
9 class IFile;
+
10 
+
12 class DLL_PUBLIC ITextureSaver
+
13 {
+
14  public:
+
15  enum class Format
+
16  {
+
17  RGB8,
+
18  RGBA8,
+
19  RGB_FLOAT
+
20  };
+
21 
+
22  struct Properties
+
23  {
+
24  Properties()
+
25  : width(0), height(0), format(Format::RGB8), verticalFlip(false), pixels(nullptr) {}
+
26 
+
27  int width;
+
28  int height;
+
29  Format format;
+
30  bool verticalFlip;
+
31  void *pixels;
+
32  };
+
33 
+
34  virtual ~ITextureSaver();
+
35 
+
36  virtual bool saveToFile(const Properties &properties, const char *filename) = 0;
+
37  virtual bool saveToFile(const Properties &properties, nctl::UniquePtr<IFile> fileHandle) = 0;
+
38 
+
39  unsigned int bpp(const Format format);
+
40  unsigned int dataSize(const Properties &properties);
+
41  void flipPixels(const Properties &properties, unsigned char *dest);
+
42 };
+
43 
+
44 }
+
45 
+
46 #endif
+
Texture saver interface class.
Definition: ITextureSaver.h:13
+
A unique pointer implementation.
Definition: UniquePtr.h:118
+
Definition: ITextureSaver.h:23
+
+ + + + diff --git a/master/_i_thread_command_8h_source.html b/master/_i_thread_command_8h_source.html new file mode 100644 index 0000000000..63360645e9 --- /dev/null +++ b/master/_i_thread_command_8h_source.html @@ -0,0 +1,101 @@ + + + + + + + +nCine: include/ncine/IThreadCommand.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
IThreadCommand.h
+
+
+
1 #ifndef CLASS_NCINE_ITHREADCOMMAND
+
2 #define CLASS_NCINE_ITHREADCOMMAND
+
3 
+
4 #include "common_defines.h"
+
5 
+
6 namespace ncine {
+
7 
+
9 class DLL_PUBLIC IThreadCommand
+
10 {
+
11  public:
+
12  virtual ~IThreadCommand() {}
+
13 
+
15  virtual void execute() = 0;
+
16 };
+
17 
+
18 }
+
19 
+
20 #endif
+
Thread pool command interface.
Definition: IThreadCommand.h:10
+
virtual void execute()=0
Executes the command on a worker thread.
+
+ + + + diff --git a/master/_i_thread_pool_8h_source.html b/master/_i_thread_pool_8h_source.html new file mode 100644 index 0000000000..15e70ef5c9 --- /dev/null +++ b/master/_i_thread_pool_8h_source.html @@ -0,0 +1,114 @@ + + + + + + + +nCine: include/ncine/IThreadPool.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
IThreadPool.h
+
+
+
1 #ifndef CLASS_NCINE_ITHREADPOOL
+
2 #define CLASS_NCINE_ITHREADPOOL
+
3 
+
4 #include "common_defines.h"
+
5 #include "IThreadCommand.h"
+
6 #include <nctl/UniquePtr.h>
+
7 
+
8 namespace ncine {
+
9 
+
11 class DLL_PUBLIC IThreadPool
+
12 {
+
13  public:
+
14  virtual ~IThreadPool() = 0;
+
15 
+
17  virtual void enqueueCommand(nctl::UniquePtr<IThreadCommand> threadCommand) = 0;
+
18 };
+
19 
+
20 inline IThreadPool::~IThreadPool() {}
+
21 
+
23 class DLL_PUBLIC NullThreadPool : public IThreadPool
+
24 {
+
25  public:
+
26  void enqueueCommand(nctl::UniquePtr<IThreadCommand> threadCommand) override {}
+
27 };
+
28 
+
29 }
+
30 
+
31 #endif
+
Thread pool interface class.
Definition: IThreadPool.h:12
+
virtual void enqueueCommand(nctl::UniquePtr< IThreadCommand > threadCommand)=0
Enqueues a command request for a worker thread.
+
A fake thread pool which doesn't create any thread.
Definition: IThreadPool.h:24
+
void enqueueCommand(nctl::UniquePtr< IThreadCommand > threadCommand) override
Enqueues a command request for a worker thread.
Definition: IThreadPool.h:26
+
A unique pointer implementation.
Definition: UniquePtr.h:118
+
+ + + + diff --git a/master/_input_events_8h_source.html b/master/_input_events_8h_source.html new file mode 100644 index 0000000000..4bf17753d1 --- /dev/null +++ b/master/_input_events_8h_source.html @@ -0,0 +1,380 @@ + + + + + + + +nCine: include/ncine/InputEvents.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
InputEvents.h
+
+
+
1 #ifndef NCINE_INPUTEVENTS
+
2 #define NCINE_INPUTEVENTS
+
3 
+
4 #include "common_defines.h"
+
5 #include "Keys.h"
+
6 
+
7 namespace ncine {
+
8 
+
10 class DLL_PUBLIC TouchEvent
+
11 {
+
12  public:
+
13  static const unsigned int MaxPointers = 10;
+
14  struct Pointer
+
15  {
+
16  int id;
+
17  float x, y;
+
18  float pressure;
+
19  };
+
20 
+
21  TouchEvent()
+
22  : count(0), actionIndex(-1) {}
+
23 
+
24  unsigned int count;
+
25  int actionIndex;
+
26  Pointer pointers[MaxPointers];
+
27 
+
28  inline int findPointerIndex(int pointerId) const
+
29  {
+
30  int pointerIndex = -1;
+
31  for (unsigned int i = 0; i < count && i < MaxPointers; i++)
+
32  {
+
33  if (pointers[i].id == pointerId)
+
34  {
+
35  pointerIndex = i;
+
36  break;
+
37  }
+
38  }
+
39  return pointerIndex;
+
40  }
+
41 };
+
42 
+
43 #ifdef __ANDROID__
+
45 class DLL_PUBLIC AccelerometerEvent
+
46 {
+
47  public:
+
48  AccelerometerEvent()
+
49  : x(0.0f), y(0.0f), z(0.0f) {}
+
50 
+
51  float x, y, z;
+
52 };
+
53 #endif
+
54 
+
56 class DLL_PUBLIC MouseState
+
57 {
+
58  public:
+
60  int x;
+
62  int y;
+
63 
+
64  virtual bool isLeftButtonDown() const = 0;
+
65  virtual bool isMiddleButtonDown() const = 0;
+
66  virtual bool isRightButtonDown() const = 0;
+
67  virtual bool isFourthButtonDown() const = 0;
+
68  virtual bool isFifthButtonDown() const = 0;
+
69 };
+
70 
+
72 class DLL_PUBLIC MouseEvent
+
73 {
+
74  public:
+
76  int x;
+
78  int y;
+
79 
+
80  virtual bool isLeftButton() const = 0;
+
81  virtual bool isMiddleButton() const = 0;
+
82  virtual bool isRightButton() const = 0;
+
83  virtual bool isFourthButton() const = 0;
+
84  virtual bool isFifthButton() const = 0;
+
85 };
+
86 
+
88 class DLL_PUBLIC ScrollEvent
+
89 {
+
90  public:
+
92  float x;
+
94  float y;
+
95 };
+
96 
+
98 class DLL_PUBLIC KeyboardState
+
99 {
+
100  public:
+
102  virtual bool isKeyDown(KeySym key) const = 0;
+
103 };
+
104 
+
106 class DLL_PUBLIC KeyboardEvent
+
107 {
+
108  public:
+
110  int scancode;
+
112  KeySym sym;
+
114  int mod;
+
115 
+
116  KeyboardEvent()
+
117  : scancode(0), sym(KeySym::UNKNOWN), mod(0) {}
+
118 };
+
119 
+
121 class DLL_PUBLIC TextInputEvent
+
122 {
+
123  public:
+
125  char text[5];
+
126 
+ +
128  {
+
129  text[0] = '\0';
+
130  }
+
131 };
+
132 
+
134 class DLL_PUBLIC DropEvent
+
135 {
+
136  public:
+
137  static const int MaxNumPaths = 16;
+
138  static const int MaxPathLength = 256;
+
139  unsigned int numPaths;
+
140  char paths[MaxNumPaths][MaxPathLength];
+
141 
+
142  DropEvent()
+
143  : numPaths(0)
+
144  {
+
145  for (unsigned int i = 0; i < MaxNumPaths; i++)
+
146  paths[i][0] = '\0';
+
147  }
+
148 };
+
149 
+
151 class DLL_PUBLIC JoystickState
+
152 {
+
153  public:
+
155  virtual bool isButtonPressed(int buttonId) const = 0;
+
157  virtual unsigned char hatState(int hatId) const = 0;
+
159  virtual short int axisValue(int axisId) const = 0;
+
161  virtual float axisNormValue(int axisId) const = 0;
+
162 };
+
163 
+
165 class DLL_PUBLIC JoyButtonEvent
+
166 {
+
167  public:
+
169  int joyId;
+
171  int buttonId;
+
172 };
+
173 
+
175 struct HatState
+
176 {
+
177  enum
+
178  {
+
179  CENTERED = 0,
+
180  UP = 1,
+
181  RIGHT = 2,
+
182  DOWN = 4,
+
183  LEFT = 8,
+
184  RIGHT_UP = RIGHT | UP,
+
185  RIGHT_DOWN = RIGHT | DOWN,
+
186  LEFT_UP = LEFT | UP,
+
187  LEFT_DOWN = LEFT | DOWN
+
188  };
+
189 };
+
190 
+
192 class DLL_PUBLIC JoyHatEvent
+
193 {
+
194  public:
+
196  int joyId;
+
198  int hatId;
+
200  unsigned char hatState;
+
201 };
+
202 
+
204 class DLL_PUBLIC JoyAxisEvent
+
205 {
+
206  public:
+
208  int joyId;
+
210  int axisId;
+
212  short int value;
+
214  float normValue;
+
215 };
+
216 
+
218 class DLL_PUBLIC JoyConnectionEvent
+
219 {
+
220  public:
+
222  int joyId;
+
223 };
+
224 
+
225 enum class ButtonName : short int
+
226 {
+
227  UNKNOWN = -1,
+
228  A = 0,
+
229  B,
+
230  X,
+
231  Y,
+
232  BACK,
+
233  GUIDE,
+
234  START,
+
235  LSTICK,
+
236  RSTICK,
+
237  LBUMPER,
+
238  RBUMPER,
+
239  DPAD_UP,
+
240  DPAD_DOWN,
+
241  DPAD_LEFT,
+
242  DPAD_RIGHT,
+
243  MISC1,
+
244  PADDLE1,
+
245  PADDLE2,
+
246  PADDLE3,
+
247  PADDLE4
+
248 };
+
249 
+
250 enum class AxisName : short int
+
251 {
+
252  UNKNOWN = -1,
+
253  LX = 0,
+
254  LY,
+
255  RX,
+
256  RY,
+
257  LTRIGGER,
+
258  RTRIGGER
+
259 };
+
260 
+
262 class DLL_PUBLIC JoyMappedState
+
263 {
+
264  public:
+
266  static const unsigned int NumButtons = 20;
+
268  static const unsigned int NumAxes = 6;
+
269 
+
270  virtual ~JoyMappedState() {}
+
271 
+
273  virtual bool isButtonPressed(ButtonName name) const = 0;
+
275  virtual float axisValue(AxisName name) const = 0;
+
276 };
+
277 
+
279 class DLL_PUBLIC JoyMappedButtonEvent
+
280 {
+
281  public:
+
283  int joyId;
+
285  ButtonName buttonName;
+
286 };
+
287 
+
289 class DLL_PUBLIC JoyMappedAxisEvent
+
290 {
+
291  public:
+
293  int joyId;
+
295  AxisName axisName;
+
297  float value;
+
298 };
+
299 
+
300 }
+
301 
+
302 #endif
+
Information about a drag'n'drop event.
Definition: InputEvents.h:135
+
Information about a joystick axis event.
Definition: InputEvents.h:205
+
int joyId
Joystick id.
Definition: InputEvents.h:208
+
int axisId
Axis id.
Definition: InputEvents.h:210
+
short int value
Axis value between -32768 and 32767.
Definition: InputEvents.h:212
+
float normValue
Axis value normalized between -1.0f and 1.0f.
Definition: InputEvents.h:214
+
Information about a joystick button event.
Definition: InputEvents.h:166
+
int buttonId
Button id.
Definition: InputEvents.h:171
+
int joyId
Joystick id.
Definition: InputEvents.h:169
+
Information about a joystick connection event.
Definition: InputEvents.h:219
+
int joyId
Joystick id.
Definition: InputEvents.h:222
+
Information about a joystick hat event.
Definition: InputEvents.h:193
+
unsigned char hatState
Hat position state.
Definition: InputEvents.h:200
+
int joyId
Joystick id.
Definition: InputEvents.h:196
+
int hatId
Hat id.
Definition: InputEvents.h:198
+
Information about a joystick mapped axis event.
Definition: InputEvents.h:290
+
float value
Axis value between its minimum and maximum.
Definition: InputEvents.h:297
+
int joyId
Joystick id.
Definition: InputEvents.h:293
+
AxisName axisName
Axis name.
Definition: InputEvents.h:295
+
Information about a joystick mapped button event.
Definition: InputEvents.h:280
+
int joyId
Joystick id.
Definition: InputEvents.h:283
+
ButtonName buttonName
Button name.
Definition: InputEvents.h:285
+
Information about the mapped joystick state.
Definition: InputEvents.h:263
+
virtual bool isButtonPressed(ButtonName name) const =0
Returns 'true' if the specified button is pressed.
+
virtual float axisValue(AxisName name) const =0
Returns the value of the specified axis.
+
Information about the joystick state.
Definition: InputEvents.h:152
+
virtual float axisNormValue(int axisId) const =0
Returns a normalized value between -1.0 and 1.0 for a joystick axis.
+
virtual bool isButtonPressed(int buttonId) const =0
Returns 'true' if the specified button is pressed.
+
virtual short int axisValue(int axisId) const =0
Returns a value between -32768 and 32767 for a joystick axis.
+
virtual unsigned char hatState(int hatId) const =0
Returns the state of the specified hat.
+
Information about a keyboard event.
Definition: InputEvents.h:107
+
int scancode
Key scan code.
Definition: InputEvents.h:110
+
int mod
Key modifiers mask.
Definition: InputEvents.h:114
+
KeySym sym
Key symbol code.
Definition: InputEvents.h:112
+
Information about the keyboard state.
Definition: InputEvents.h:99
+
virtual bool isKeyDown(KeySym key) const =0
Returns true if the specified key is down.
+
Information about a mouse event.
Definition: InputEvents.h:73
+
int y
Pointer position on the Y axis.
Definition: InputEvents.h:78
+
int x
Pointer position on the X axis.
Definition: InputEvents.h:76
+
Information about the mouse state.
Definition: InputEvents.h:57
+
int y
Pointer position on the Y axis.
Definition: InputEvents.h:62
+
int x
Pointer position on the X axis.
Definition: InputEvents.h:60
+
Information about a scroll event (mouse wheel, touchpad gesture, etc.)
Definition: InputEvents.h:89
+
float x
Scroll offset on the X axis.
Definition: InputEvents.h:92
+
float y
Scroll offset on the Y axis.
Definition: InputEvents.h:94
+
Information about a text input event.
Definition: InputEvents.h:122
+
Information about a screen touch event.
Definition: InputEvents.h:11
+
A structure containing joystick hat values.
Definition: InputEvents.h:176
+
Definition: InputEvents.h:15
+
+ + + + diff --git a/master/_joy_mapping_db_8h_source.html b/master/_joy_mapping_db_8h_source.html new file mode 100644 index 0000000000..f759198d9e --- /dev/null +++ b/master/_joy_mapping_db_8h_source.html @@ -0,0 +1,1077 @@ + + + + + + + +nCine: src/input/JoyMappingDb.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
JoyMappingDb.h
+
+
+
1 #if defined(_WIN32)
+
2  #define SDL_JOYSTICK_XINPUT
+
3  #define SDL_JOYSTICK_WGI
+
4  #define SDL_JOYSTICK_DINPUT
+
5 #endif
+
6 
+
7 #if defined(__linux__)
+
8  #define SDL_JOYSTICK_LINUX
+
9 #endif
+
10 
+
11 #if defined(__EMSCRIPTEN__)
+
12  #define SDL_JOYSTICK_EMSCRIPTEN
+
13 #endif
+
14 
+
15 static const char *ControllerMappings[] = {
+
16 
+
17 // Additional nCine joystick mappings
+
18 #if defined(__ANDROID__)
+
19  "05000000791d000009000000cf7f3f00,NYKO PLAYPAD PRO,a:b0,b:b1,x:b2,y:b3,leftshoulder:b4,rightshoulder:b5,leftstick:b6,rightstick:b7,start:b8,back:b9,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a4,righttrigger:a5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2",
+
20  "05000000c82d000001610000ffff3f00,8BitDo SN30 Pro,a:b1,b:b0,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b9,rightx:a2,righty:a3,start:b12,x:b4,y:b3",
+
21 #elif defined(__linux__)
+
22  "03000000c82d00000160000011010000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3",
+
23 #endif
+
24 
+
25 // SDL2 mappings from `SDL2-2.30.5/src/joystick/SDL_gamecontrollerdb.h`
+
26 #ifdef SDL_JOYSTICK_XINPUT
+
27  "xinput,*,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
28 #endif
+
29 #ifdef SDL_JOYSTICK_WGI
+
30  "03000000491900001904000000007700,Amazon Luna Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b9,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b7,x:b2,y:b3,",
+
31  "03000000d11800000094000000007700,Google Stadia Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b12,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,",
+
32  "030000007e0500000920000000007701,Nintendo Switch Pro Controller,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
33  "030000007e0500000920000000007701,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
34  "030000004c050000c405000000007701,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
35  "030000004c050000e60c000000007700,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b14,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
36  "0300000032150000000a000000007703,Razer Atrox Arcade Stick,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b11,dpup:b10,leftshoulder:b4,lefttrigger:b8,rightshoulder:b5,righttrigger:b9,x:b2,y:b3,",
+
37  "03000000de280000ff11000000007701,Steam Virtual Gamepad,a:b0,b:b1,back:b6,dpdown:b12,dpleft:b13,dpright:b11,dpup:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a4,leftx:a1,lefty:a0~,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a2~,start:b7,x:b2,y:b3,",
+
38 #endif
+
39 #ifdef SDL_JOYSTICK_DINPUT
+
40  "03000000fa2d00000100000000000000,3DRUDDER,leftx:a0,lefty:a1,rightx:a5,righty:a2,",
+
41  "03000000c82d00000090000000000000,8BitDo FC30 Pro,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
42  "03000000c82d00000090000000000000,8BitDo FC30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
43  "03000000c82d00001038000000000000,8BitDo FC30 Pro,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
44  "03000000c82d00001038000000000000,8BitDo FC30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
45  "03000000c82d00000650000000000000,8BitDo M30 Gamepad,a:b0,b:b1,back:b10,guide:b2,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
46  "03000000c82d00000650000000000000,8BitDo M30 Gamepad,a:b1,b:b0,back:b10,guide:b2,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
47  "03000000c82d00005106000000000000,8BitDo M30 Gamepad,a:b0,b:b1,back:b10,guide:b2,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
48  "03000000c82d00005106000000000000,8BitDo M30 Gamepad,a:b1,b:b0,back:b10,guide:b2,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
49  "03000000c82d00001590000000000000,8BitDo N30 Pro 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
50  "03000000c82d00001590000000000000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
51  "03000000c82d00006528000000000000,8BitDo N30 Pro 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
52  "03000000c82d00006528000000000000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
53  "030000003512000012ab000000000000,8BitDo NES30 Gamepad,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
54  "030000003512000012ab000000000000,8BitDo NES30 Gamepad,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
55  "03000000022000000090000000000000,8BitDo NES30 Pro,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
56  "03000000022000000090000000000000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
57  "03000000203800000900000000000000,8BitDo NES30 Pro,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
58  "03000000203800000900000000000000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
59  "03000000c82d00002038000000000000,8BitDo NES30 Pro,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
60  "03000000c82d00002038000000000000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
61  "03000000c82d00000660000000000000,8BitDo Pro 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
62  "03000000c82d00000660000000000000,8BitDo Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
63  "03000000c82d00000060000000000000,8BitDo SF30 Pro,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
64  "03000000c82d00000060000000000000,8BitDo SF30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
65  "03000000c82d00000061000000000000,8BitDo SF30 Pro,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
66  "03000000c82d00000061000000000000,8BitDo SF30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
67  "03000000102800000900000000000000,8BitDo SFC30 Gamepad,a:b0,b:b1,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
68  "03000000102800000900000000000000,8BitDo SFC30 Gamepad,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
69  "03000000c82d00001290000000000000,8BitDo SN30 Gamepad,a:b0,b:b1,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
70  "03000000c82d00001290000000000000,8BitDo SN30 Gamepad,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
71  "03000000c82d00006228000000000000,8BitDo SN30 Gamepad,a:b0,b:b1,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
72  "03000000c82d00006228000000000000,8BitDo SN30 Gamepad,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
73  "03000000c82d00000260000000000000,8BitDo SN30 Pro+,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
74  "03000000c82d00000260000000000000,8BitDo SN30 Pro+,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
75  "03000000c82d00000261000000000000,8BitDo SN30 Pro+,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
76  "03000000c82d00000261000000000000,8BitDo SN30 Pro+,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
77  "03000000c82d00000160000000000000,8BitDo SN30 Pro,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
78  "03000000c82d00000160000000000000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
79  "030000003512000020ab000000000000,8BitDo SNES30 Gamepad,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
80  "030000003512000020ab000000000000,8BitDo SNES30 Gamepad,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
81  "03000000c82d00001130000000000000,8BitDo Ultimate Wired Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,misc1:b26,paddle1:b24,paddle2:b25,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,",
+
82  "03000000c82d00001330000000000000,8BitDo Ultimate Wireless Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,misc1:b26,paddle1:b23,paddle2:b19,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,",
+
83  "03000000c82d00001890000000000000,8BitDo Zero 2,a:b0,b:b1,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
84  "03000000c82d00001890000000000000,8BitDo Zero 2,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
85  "03000000c82d00003032000000000000,8BitDo Zero 2,a:b0,b:b1,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
86  "03000000c82d00003032000000000000,8BitDo Zero 2,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
87  "03000000a00500003232000000000000,8BitDo Zero Gamepad,a:b0,b:b1,back:b10,dpdown:+a2,dpleft:-a0,dpright:+a0,dpup:-a2,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
88  "03000000a00500003232000000000000,8BitDo Zero Gamepad,a:b1,b:b0,back:b10,dpdown:+a2,dpleft:-a0,dpright:+a0,dpup:-a2,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
89  "03000000050b00000579000000000000,ASUS ROG Kunai 3 Gamepad,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,",
+
90  "03000000050b00000679000000000000,ASUS ROG Kunai 3 Gamepad,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,misc1:b15,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,",
+
91  "030000008f0e00001200000000000000,Acme GA-02,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b2,y:b3,",
+
92  "03000000fa190000f0ff000000000000,Acteck AGJ-3200,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,",
+
93  "03000000341a00003608000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
94  "030000006f0e00000263000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
95  "030000006f0e00001101000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
96  "030000006f0e00001401000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
97  "030000006f0e00001402000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
98  "030000006f0e00001901000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
99  "030000006f0e00001a01000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
100  "03000000d62000001d57000000000000,Airflo PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
101  "03000000491900001904000000000000,Amazon Luna Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b9,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b7,x:b2,y:b3,",
+
102  "03000000d62000002a79000000000000,BDA PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
103  "03000000d81d00000b00000000000000,BUFFALO BSGP1601 Series ,a:b5,b:b3,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b9,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b13,x:b4,y:b2,",
+
104  "03000000d6200000e557000000000000,Batarang,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
105  "03000000c01100001352000000000000,Battalife Joystick,a:b6,b:b7,back:b2,leftshoulder:b0,leftx:a0,lefty:a1,rightshoulder:b1,start:b3,x:b4,y:b5,",
+
106  "030000006f0e00003201000000000000,Battlefield 4 PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
107  "03000000bc2000006012000000000000,Betop 2126F,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,",
+
108  "03000000bc2000000055000000000000,Betop BFM Gamepad,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,",
+
109  "03000000bc2000006312000000000000,Betop Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,",
+
110  "03000000bc2000006412000000000000,Betop Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,",
+
111  "03000000c01100000555000000000000,Betop Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,",
+
112  "03000000c01100000655000000000000,Betop Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,",
+
113  "03000000790000000700000000000000,Betop Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b3,y:b0,",
+
114  "03000000808300000300000000000000,Betop Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b3,y:b0,",
+
115  "030000006b1400000055000000000000,Bigben PS3 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,",
+
116  "030000006b1400000103000000000000,Bigben PS3 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,",
+
117  "0300000066f700000500000000000000,BrutalLegendTest,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b3,",
+
118  "03000000e82000006058000000000000,Cideko AK08b,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,",
+
119  "03000000260900008888000000000000,Cyber Gadget GameCube Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:a4,rightx:a2,righty:a3~,start:b7,x:b2,y:b3,",
+
120  "03000000a306000022f6000000000000,Cyborg V.3 Rumble Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:-a3,rightx:a2,righty:a4,start:b9,x:b0,y:b3,",
+
121  "03000000451300000830000000000000,Defender Game Racer X7,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,",
+
122  "03000000790000000600000000000000,Defender Joystick Cobra R4,crc:c77a,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2~,righty:a3~,start:b9,x:b3,y:b0,",
+
123  "03000000791d00000103000000000000,Dual Box WII,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b0,",
+
124  "03000000bd12000002e0000000000000,Dual USB Vibration Joystick,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a3,righty:a2,start:b11,x:b3,y:b0,",
+
125  "030000006f0e00003001000000000000,EA SPORTS PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
126  "03000000341a00000108000000000000,EXEQ RF USB Gamepad 8206,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,",
+
127  "030000008f0e00000f31000000000000,EXEQ,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,",
+
128  "03000000b80500000410000000000000,Elecom Gamepad,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b1,",
+
129  "03000000b80500000610000000000000,Elecom Gamepad,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b1,",
+
130  "03000000852100000201000000000000,FF-GP1,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
131  "030000000d0f00002700000000000000,FIGHTING STICK V3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,",
+
132  "03000000790000000600000000000000,G-Shark GS-GP702,crc:8e4f,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,",
+
133  "030000008f0e00000d31000000000000,GAMEPAD 3 TURBO,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
134  "03000000300f00000b01000000000000,GGE909 Recoil Pad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,",
+
135  "03000000790000002201000000000000,Game Controller for PC,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,",
+
136  "0300000066f700000100000000000000,Game VIB Joystick,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,start:b11,x:b0,y:b1,",
+
137  "03000000491900000204000000000000,GameSir T4 Pro,crc:1aa4,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,",
+
138  "03000000ac0500003d03000000000000,GameSir,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,",
+
139  "03000000ac0500004d04000000000000,GameSir,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,",
+
140  "03000000ac0500001a06000000000000,GameSir-T3 2.02,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,",
+
141  "03000000ffff00000000000000000000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,",
+
142  "03000000c01100000140000000000000,GameStop PS4 Fun Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
143  "03000000260900002625000000000000,Gamecube Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,lefttrigger:a4,leftx:a0,lefty:a1,righttrigger:a5,rightx:a2,righty:a3,start:b7,x:b2,y:b3,",
+
144  "03000000280400000140000000000000,Gamepad Pro USB,a:b1,b:b2,back:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,",
+
145  "030000005c1a00003330000000000000,Genius MaxFire Grandias 12V,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b2,y:b3,",
+
146  "030000008305000031b0000000000000,Genius Maxfire Blaze 3,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,",
+
147  "03000000451300000010000000000000,Genius Maxfire Grandias 12,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,",
+
148  "030000008305000009a0000000000000,Genius,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,",
+
149  "03000000f025000021c1000000000000,Gioteck PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,",
+
150  "03000000f0250000c383000000000000,Gioteck VX2 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,",
+
151  "03000000f0250000c483000000000000,Gioteck VX2 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,",
+
152  "03000000f0250000c283000000000000,Gioteck,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,",
+
153  "03000000d11800000094000000000000,Google Stadia Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:b12,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:b11,rightx:a3,righty:a4,start:b9,x:b2,y:b3,",
+
154  "03000000632500002605000000000000,HJD-X,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,",
+
155  "030000000d0f00008400000000000000,HORI Fighting Commander,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
156  "030000000d0f00008500000000000000,HORI Fighting Commander,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
157  "030000000d0f00008800000000000000,HORI Fighting Stick mini 4 (PS3),a:b1,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b8,x:b0,y:b3,",
+
158  "030000000d0f00008700000000000000,HORI Fighting Stick mini 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,",
+
159  "030000000d0f00006e00000000000000,HORIPAD 4 (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
160  "030000000d0f00006600000000000000,HORIPAD 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
161  "030000000d0f0000ee00000000000000,HORIPAD mini4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
162  "03000000250900000017000000000000,HRAP2 on PS/SS/N64 Joypad to USB BOX,a:b2,b:b1,back:b9,leftshoulder:b5,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b6,start:b8,x:b3,y:b0,",
+
163  "03000000341a00000302000000000000,Hama Scorpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
164  "030000000d0f00004900000000000000,Hatsune Miku Sho Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
165  "03000000d81400000862000000000000,HitBox Edition Cthulhu+,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b5,lefttrigger:b4,rightshoulder:b7,righttrigger:b6,start:b9,x:b0,y:b3,",
+
166  "030000000d0f00005f00000000000000,Hori Fighting Commander 4 (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
167  "030000000d0f00005e00000000000000,Hori Fighting Commander 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
168  "030000000d0f00004000000000000000,Hori Fighting Stick Mini 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b5,lefttrigger:b4,rightshoulder:b7,righttrigger:b6,start:b9,x:b0,y:b3,",
+
169  "030000000d0f00000900000000000000,Hori Pad 3 Turbo,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
170  "030000000d0f00005400000000000000,Hori Pad 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
171  "030000000d0f00004d00000000000000,Hori Pad A,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
172  "030000000d0f00009200000000000000,Hori Pokken Tournament DX Pro Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,",
+
173  "030000000d0f0000c100000000000000,Horipad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
174  "030000008f0e00001330000000000000,HuiJia SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b9,x:b3,y:b0,",
+
175  "030000006f0e00002401000000000000,INJUSTICE FightStick PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,",
+
176  "03000000ac0500002c02000000000000,IPEGA,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b8,leftstick:b13,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b9,rightstick:b14,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b3,y:b4,",
+
177  "03000000b50700001403000000000000,Impact Black,a:b2,b:b3,back:b8,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,",
+
178  "03000000491900000204000000000000,Ipega PG-9023,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,",
+
179  "030000006e0500000520000000000000,JC-P301U,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b0,y:b1,",
+
180  "030000006e0500000320000000000000,JC-U3613M (DInput),a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b0,y:b1,",
+
181  "030000006e0500000720000000000000,JC-W01U,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b1,",
+
182  "03000000790000000200000000000000,King PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b3,y:b0,",
+
183  "030000006d040000d1ca000000000000,Logitech ChillStream,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
184  "030000006d040000d2ca000000000000,Logitech Cordless Precision,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
185  "030000006d04000011c2000000000000,Logitech Cordless Wingman,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b5,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b2,righttrigger:b7,rightx:a3,righty:a4,x:b4,",
+
186  "030000006d04000016c2000000000000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
187  "030000006d04000018c2000000000000,Logitech F510 Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
188  "030000006d04000019c2000000000000,Logitech F710 Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", /* Guide button doesn't seem to be sent in DInput mode. */
+
189  "030000006d0400001ac2000000000000,Logitech Precision Gamepad,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,",
+
190  "03000000380700008081000000000000,MADCATZ SFV Arcade FightStick Alpha PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
191  "03000000380700006382000000000000,MLG Gamepad PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
192  "03000000c62400002a89000000000000,MOGA XP5-A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,",
+
193  "03000000c62400002b89000000000000,MOGA XP5-A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,",
+
194  "03000000c62400001a89000000000000,MOGA XP5-X Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,",
+
195  "03000000c62400001b89000000000000,MOGA XP5-X Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,",
+
196  "03000000250900006688000000000000,MP-8866 Super Dual Box,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,",
+
197  "03000000380700006652000000000000,Mad Catz C.T.R.L.R,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b0,y:b3,",
+
198  "03000000380700005032000000000000,Mad Catz FightPad PRO (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
199  "03000000380700005082000000000000,Mad Catz FightPad PRO (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
200  "03000000380700008433000000000000,Mad Catz FightStick TE S+ (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
201  "03000000380700008483000000000000,Mad Catz FightStick TE S+ (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
202  "03000000380700008134000000000000,Mad Catz FightStick TE2+ PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b7,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b4,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
203  "03000000380700008184000000000000,Mad Catz FightStick TE2+ PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b5,leftstick:b10,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b4,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
204  "03000000380700006252000000000000,Mad Catz Micro C.T.R.L.R,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b0,y:b3,",
+
205  "03000000380700008034000000000000,Mad Catz TE2 PS3 Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
206  "03000000380700008084000000000000,Mad Catz TE2 PS4 Fightstick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
207  "03000000380700001888000000000000,MadCatz SFIV FightStick PS3,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b5,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b4,righttrigger:b6,rightx:a2,righty:a3,start:b9,x:b2,y:b3,",
+
208  "03000000380700008532000000000000,Madcatz Arcade Fightstick TE S PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
209  "03000000380700003888000000000000,Madcatz Arcade Fightstick TE S+ PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
210  "030000002a0600001024000000000000,Matricom,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b2,y:b3,",
+
211  "03000000250900000128000000000000,Mayflash Arcade Stick,a:b1,b:b2,back:b8,leftshoulder:b0,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b3,righttrigger:b7,start:b9,x:b5,y:b6,",
+
212  "03000000790000004418000000000000,Mayflash GameCube Controller,a:b1,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,",
+
213  "030000008f0e00001030000000000000,Mayflash USB Adapter for original Sega Saturn controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b5,rightshoulder:b2,righttrigger:b7,start:b9,x:b3,y:b4,",
+
214  "0300000025090000e803000000000000,Mayflash Wii Classic Controller,a:b1,b:b0,back:b8,dpdown:b13,dpleft:b12,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,",
+
215  "03000000790000000018000000000000,Mayflash WiiU Pro Game Controller Adapter (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
216  "03000000efbe0000edfe000000000000,Monect Virtual Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b0,",
+
217  "030000006b140000010c000000000000,NACON GC-400ES,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,",
+
218  "030000001008000001e5000000000000,NEXT SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b6,start:b9,x:b3,y:b0,",
+
219  "03000000152000000182000000000000,NGDS,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b3,y:b0,",
+
220  "030000005509000000b4000000000000,NVIDIA Virtual Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
221  "030000004b120000014d000000000000,NYKO AIRFLO EX,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b2,y:b3,",
+
222  "03000000790000004318000000000000,Nintendo GameCube Controller,a:b1,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
223  "03000000790000004318000000000000,Nintendo GameCube Controller,a:b1,b:b0,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b2,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
224  "03000000bd12000015d0000000000000,Nintendo Retrolink USB Super SNES Classic Controller,a:b2,b:b1,back:b8,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b9,x:b3,y:b0,",
+
225  "030000007e0500000920000000000000,Nintendo Switch Pro Controller,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
226  "030000007e0500000920000000000000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
227  "030000000d0500000308000000000000,Nostromo N45,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b12,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b10,x:b2,y:b3,",
+
228  "03000000d62000006d57000000000000,OPP PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
229  "03000000362800000100000000000000,OUYA Game Controller,a:b0,b:b3,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b14,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:b13,rightx:a3,righty:a4,x:b1,y:b2,",
+
230  "03000000782300000a10000000000000,Onlive Wireless Controller,a:b15,b:b14,back:b7,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b11,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b13,y:b12,",
+
231  "030000006b14000001a1000000000000,Orange Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b2,y:b3,",
+
232  "03000000120c0000f60e000000000000,P4 Wired Gamepad,a:b1,b:b2,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b5,lefttrigger:b7,rightshoulder:b4,righttrigger:b6,start:b9,x:b0,y:b3,",
+
233  "030000006f0e00000901000000000000,PDP Versus Fighting Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,",
+
234  "03000000632500002306000000000000,PS Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,",
+
235  "03000000e30500009605000000000000,PS to USB convert cable,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,",
+
236  "03000000100800000100000000000000,PS1 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,",
+
237  "030000008f0e00007530000000000000,PS1 Controller,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b1,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
238  "03000000100800000300000000000000,PS2 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a4,righty:a2,start:b9,x:b3,y:b0,",
+
239  "03000000250900008888000000000000,PS2 Controller,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,",
+
240  "03000000666600006706000000000000,PS2 Controller,a:b2,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a2,righty:a3,start:b11,x:b3,y:b0,",
+
241  "030000006b1400000303000000000000,PS2 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,",
+
242  "030000009d0d00001330000000000000,PS2 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,",
+
243  "03000000250900000500000000000000,PS3 Controller,a:b2,b:b1,back:b9,dpdown:h0.8,dpleft:h0.4,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b0,y:b3,",
+
244  "030000004c0500006802000000000000,PS3 Controller,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b10,lefttrigger:a3~,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:a4~,rightx:a2,righty:a5,start:b8,x:b3,y:b0,",
+
245  "03000000632500007505000000000000,PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,",
+
246  "03000000888800000803000000000000,PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.8,dpleft:h0.4,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b9,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b0,y:b3,",
+
247  "030000008f0e00001431000000000000,PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
248  "030000003807000056a8000000000000,PS3 RF pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
249  "03000000100000008200000000000000,PS360+ v1.66,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:h0.4,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,",
+
250  "030000004c050000a00b000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
251  "030000004c050000c405000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,touchpad:b13,x:b0,y:b3,",
+
252  "030000004c050000cc09000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
253  "030000004c050000e60c000000000000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
254  "030000008f0e00000300000000000000,Piranha xtreme,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,",
+
255  "03000000d62000006dca000000000000,PowerA Pro Ex,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
256  "03000000d62000009557000000000000,Pro Elite PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
257  "03000000d62000009f31000000000000,Pro Ex mini PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
258  "03000000d6200000c757000000000000,Pro Ex mini PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
259  "03000000222c00000020000000000000,QANBA DRONE ARCADE JOYSTICK,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,rightshoulder:b5,righttrigger:a4,start:b9,x:b0,y:b3,",
+
260  "03000000300f00000011000000000000,QanBa Arcade JoyStick 1008,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b10,x:b0,y:b3,",
+
261  "03000000300f00001611000000000000,QanBa Arcade JoyStick 4018,a:b1,b:b2,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b8,x:b0,y:b3,",
+
262  "03000000300f00001210000000000000,QanBa Joystick Plus,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b2,y:b3,",
+
263  "03000000341a00000104000000000000,QanBa Joystick Q4RAF,a:b5,b:b6,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b0,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b3,righttrigger:b7,start:b9,x:b1,y:b2,",
+
264  "03000000222c00000025000000000000,Qanba Dragon Arcade Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
265  "03000000222c00000223000000000000,Qanba Obsidian Arcade Joystick (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
266  "03000000222c00000023000000000000,Qanba Obsidian Arcade Joystick (PS4),a:b1,b:b2,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
267  "030000000d0f00001100000000000000,REAL ARCADE PRO.3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,x:b0,y:b3,",
+
268  "030000000d0f00007000000000000000,REAL ARCADE PRO.4 VLX,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,x:b0,y:b3,",
+
269  "030000000d0f00002200000000000000,REAL ARCADE Pro.V3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
270  "03000000050b00005819000000000000,ROG Chakram Core,a:b1,b:b0,leftx:a0,lefty:a1,x:b2,y:b3,",
+
271  "03000000050b0000181a000000000000,ROG Chakram X,a:b1,b:b0,leftx:a0,lefty:a1,x:b2,y:b3,",
+
272  "03000000050b00001a1a000000000000,ROG Chakram X,a:b1,b:b0,leftx:a0,lefty:a1,x:b2,y:b3,",
+
273  "03000000050b00001c1a000000000000,ROG Chakram X,a:b1,b:b0,leftx:a0,lefty:a1,x:b2,y:b3,",
+
274  "03000000050b0000e318000000000000,ROG Chakram,a:b1,b:b0,leftx:a0,lefty:a1,x:b2,y:b3,",
+
275  "03000000050b0000e518000000000000,ROG Chakram,a:b1,b:b0,leftx:a0,lefty:a1,x:b2,y:b3,",
+
276  "030000000d0f0000ad00000000000000,RX Gamepad,a:b0,b:b4,back:b11,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b3,rightshoulder:b6,start:b9,x:b2,y:b1,",
+
277  "03000000321500000003000000000000,Razer Hydra,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
278  "03000000321500000204000000000000,Razer Panthera (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
279  "03000000321500000104000000000000,Razer Panthera (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
280  "03000000321500000507000000000000,Razer Raiju Mobile,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,",
+
281  "03000000321500000707000000000000,Razer Raiju Mobile,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,",
+
282  "03000000321500000011000000000000,Razer Raion Fightpad for PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
283  "03000000321500000009000000000000,Razer Serval,+lefty:+a2,-lefty:-a1,a:b0,b:b1,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,leftx:a0,rightshoulder:b5,rightstick:b9,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
284  "030000000d0f00006a00000000000000,Real Arcade Pro.4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
285  "030000000d0f00006b00000000000000,Real Arcade Pro.4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
286  "030000000d0f00008a00000000000000,Real Arcade Pro.4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
287  "030000000d0f00008b00000000000000,Real Arcade Pro.4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
288  "030000000d0f00005b00000000000000,Real Arcade Pro.V4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
289  "030000000d0f00005c00000000000000,Real Arcade Pro.V4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
290  "0300000000f000000300000000000000,RetroUSB.com RetroPad,a:b1,b:b5,back:b2,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b0,y:b4,",
+
291  "0300000000f00000f100000000000000,RetroUSB.com Super RetroPort,a:b1,b:b5,back:b2,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b0,y:b4,",
+
292  "03000000790000001100000000000000,Retrolink SNES Controller,a:b1,b:b2,back:b8,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,leftshoulder:b4,rightshoulder:b5,start:b9,x:b0,y:b3,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
293  "03000000790000001100000000000000,Retrolink SNES Controller,a:b2,b:b1,back:b8,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
294  "030000006b140000130d000000000000,Revolution Pro Controller 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
295  "030000006b140000010d000000000000,Revolution Pro Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
296  "030000006f0e00001e01000000000000,Rock Candy PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
297  "030000006f0e00002801000000000000,Rock Candy PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
298  "030000006f0e00002f01000000000000,Rock Candy PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
299  "03000000341a00000208000000000000,SL-6555-SBK,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:-a4,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a4,rightx:a3,righty:a2,start:b7,x:b2,y:b3,",
+
300  "03000000341a00000908000000000000,SL-6566,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,",
+
301  "03000000790000000600000000000000,SPEEDLINK STRIKE Gamepad,crc:5811,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b3,y:b0,",
+
302  "03000000790000001c18000000000000,STK-7024X,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,",
+
303  "03000000ff1100003133000000000000,SVEN X-PAD,a:b2,b:b3,back:b4,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b9,rightx:a2,righty:a4,start:b5,x:b0,y:b1,",
+
304  "03000000457500002211000000000000,SZMY-POWER PC Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
305  "03000000a306000023f6000000000000,Saitek Cyborg V.1 Game pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,",
+
306  "03000000a30600001af5000000000000,Saitek Cyborg,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b0,y:b3,",
+
307  "03000000300f00001201000000000000,Saitek Dual Analog Pad,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,",
+
308  "03000000a30600000cff000000000000,Saitek P2500 Force Rumble Pad,a:b2,b:b3,back:b11,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,x:b0,y:b1,",
+
309  "03000000a30600000c04000000000000,Saitek P2900,a:b1,b:b2,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b3,",
+
310  "03000000300f00001001000000000000,Saitek P480 Rumble Pad,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,",
+
311  "03000000a30600000b04000000010000,Saitek P990 Dual Analog Pad,a:b1,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b8,x:b0,y:b3,",
+
312  "03000000a30600000b04000000000000,Saitek P990,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b3,",
+
313  "03000000a30600002106000000000000,Saitek PS1000,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,",
+
314  "03000000a306000020f6000000000000,Saitek PS2700,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,",
+
315  "03000000300f00001101000000000000,Saitek Rumble Pad,a:b2,b:b3,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,",
+
316  "03000000790000000600000000000000,Sanwa Supply JY-P76USV,crc:20f0,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b2,y:b3,",
+
317  "0300000000050000289b000000000000,Saturn_Adapter_2.0,a:b1,b:b2,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b0,y:b3,",
+
318  "030000009b2800000500000000000000,Saturn_Adapter_2.0,a:b1,b:b2,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b0,y:b3,",
+
319  "030000008f0e00000800000000000000,SpeedLink Strike FX,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,",
+
320  "03000000c01100000591000000000000,Speedlink Torid,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,",
+
321  "03000000de280000ff11000000000000,Steam Virtual Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:-a2,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
322  "03000000110100003114000000000000,SteelSeries Stratus Duo,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,",
+
323  "03000000381000001814000000000000,SteelSeries Stratus XL,a:b0,b:b1,back:b18,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,guide:b19,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b2,y:b3,",
+
324  "03000000110100001914000000000000,SteelSeries,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:,leftstick:b13,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:,rightstick:b14,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b3,y:b4,",
+
325  "03000000d620000011a7000000000000,Switch,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
326  "030000004f04000007d0000000000000,T Mini Wireless,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
327  "03000000fa1900000706000000000000,Team 5,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,",
+
328  "03000000b50700001203000000000000,Techmobility X6-38V,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,",
+
329  "030000004f0400000ed0000000000000,ThrustMaster eSwap PRO Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
330  "030000004f04000015b3000000000000,Thrustmaster Dual Analog 4,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,",
+
331  "030000004f04000023b3000000000000,Thrustmaster Dual Trigger 3-in-1,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
332  "030000004f04000004b3000000000000,Thrustmaster Firestorm Dual Power 3,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,",
+
333  "030000004f04000000b3000000000000,Thrustmaster Firestorm Dual Power,a:b0,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b11,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b10,x:b1,y:b3,",
+
334  "03000000666600000488000000000000,TigerGame PS/PS2 Game Controller Adapter,a:b2,b:b1,back:b9,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,",
+
335  "03000000d62000006000000000000000,Tournament PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
336  "030000005f140000c501000000000000,Trust Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,",
+
337  "03000000b80500000210000000000000,Trust Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,",
+
338  "03000000d90400000200000000000000,TwinShock PS2,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,",
+
339  "03000000300f00000701000000000000,USB 4-Axis 12-Button Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,",
+
340  "03000000341a00002308000000000000,USB Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,",
+
341  "030000006b1400000203000000000000,USB Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,",
+
342  "03000000790000000a00000000000000,USB Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b3,y:b0,",
+
343  "03000000f0250000c183000000000000,USB Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
344  "03000000ff1100004133000000000000,USB Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a4,righty:a2,start:b9,x:b3,y:b0,",
+
345  "03000000632500002305000000000000,USB Vibration Joystick (BM),a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,",
+
346  "03000000790000001b18000000000000,Venom Arcade Joystick,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,",
+
347  "030000006f0e00000302000000000000,Victrix Pro Fight Stick for PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,",
+
348  "030000006f0e00000702000000000000,Victrix Pro Fight Stick for PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,",
+
349  "03000000450c00002043000000000000,XEOX Gamepad SL-6556-BK,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,",
+
350  "03000000341a00000608000000000000,Xeox,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,",
+
351  "03000000172700004431000000000000,XiaoMi Game Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b20,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a7,rightx:a2,righty:a5,start:b11,x:b3,y:b4,",
+
352  "03000000c0160000e105000000000000,Xin-Mo Dual Arcade,crc:2246,a:b1,b:b2,back:b9,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,rightshoulder:b4,righttrigger:b5,start:b8,x:b0,y:b3,", /* Ultimate Atari Fight Stick */
+
353  "03000000790000004f18000000000000,ZD-T Android,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b3,y:b4,",
+
354  "03000000120c0000101e000000000000,ZEROPLUS P4 Wired Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
355  "03000000d81d00000f00000000000000,iBUFFALO BSGP1204 Series,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b0,",
+
356  "03000000d81d00001000000000000000,iBUFFALO BSGP1204P Series,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b9,x:b3,y:b0,",
+
357  "03000000830500006020000000000000,iBuffalo SNES Controller,a:b0,b:b1,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b2,y:b3,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
358  "03000000830500006020000000000000,iBuffalo SNES Controller,a:b1,b:b0,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b3,y:b2,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
359  "030000004f04000003d0000000000000,run'n'drive,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b7,leftshoulder:a3,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:a4,rightstick:b11,righttrigger:b5,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
360  "03000000101c0000171c000000000000,uRage Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,",
+
361 #endif
+
362 #if defined(__MACOSX__)
+
363  "03000000c82d00000090000001000000,8BitDo FC30 Pro,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
364  "03000000c82d00000090000001000000,8BitDo FC30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
365  "03000000c82d00001038000000010000,8BitDo FC30 Pro,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
366  "03000000c82d00001038000000010000,8BitDo FC30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
367  "03000000c82d00000650000001000000,8BitDo M30 Gamepad,a:b0,b:b1,back:b10,guide:b2,leftshoulder:b6,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a5,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
368  "03000000c82d00000650000001000000,8BitDo M30 Gamepad,a:b1,b:b0,back:b10,guide:b2,leftshoulder:b6,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a5,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
369  "03000000c82d00005106000000010000,8BitDo M30 Gamepad,a:b0,b:b1,back:b10,guide:b2,leftshoulder:b6,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
370  "03000000c82d00005106000000010000,8BitDo M30 Gamepad,a:b1,b:b0,back:b10,guide:b2,leftshoulder:b6,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
371  "03000000c82d00001590000001000000,8BitDo N30 Pro 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
372  "03000000c82d00001590000001000000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
373  "03000000c82d00006528000000010000,8BitDo N30 Pro 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
374  "03000000c82d00006528000000010000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
375  "030000003512000012ab000001000000,8BitDo NES30 Gamepad,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
376  "030000003512000012ab000001000000,8BitDo NES30 Gamepad,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
377  "03000000022000000090000001000000,8BitDo NES30 Pro,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
378  "03000000022000000090000001000000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
379  "03000000203800000900000000010000,8BitDo NES30 Pro,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
380  "03000000203800000900000000010000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
381  "03000000c82d00000660000000020000,8BitDo Pro 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
382  "03000000c82d00000660000000020000,8BitDo Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
383  "03000000102800000900000000000000,8BitDo SFC30 Gamepad,a:b0,b:b1,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
384  "03000000102800000900000000000000,8BitDo SFC30 Gamepad,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
385  "03000000c82d00001290000001000000,8BitDo SN30 Gamepad,a:b0,b:b1,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
386  "03000000c82d00001290000001000000,8BitDo SN30 Gamepad,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
387  "03000000c82d00000260000001000000,8BitDo SN30 Pro+,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
388  "03000000c82d00000260000001000000,8BitDo SN30 Pro+,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
389  "03000000c82d00000261000000010000,8BitDo SN30 Pro+,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
390  "03000000c82d00000261000000010000,8BitDo SN30 Pro+,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
391  "03000000c82d00000160000001000000,8BitDo SN30 Pro,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
392  "03000000c82d00000160000001000000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
393  "03000000c82d00001130000000020000,8BitDo Ultimate Wired Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b26,paddle1:b24,paddle2:b25,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,",
+
394  "03000000c82d00001330000000020000,8BitDo Ultimate Wireless Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b26,paddle1:b23,paddle2:b19,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,",
+
395  "03000000c82d00001890000001000000,8BitDo Zero 2,a:b0,b:b1,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
396  "03000000c82d00001890000001000000,8BitDo Zero 2,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
397  "03000000c82d00003032000000010000,8BitDo Zero 2,a:b0,b:b1,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
398  "03000000c82d00003032000000010000,8BitDo Zero 2,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
399  "03000000a00500003232000008010000,8BitDo Zero Gamepad,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
400  "03000000a00500003232000008010000,8BitDo Zero Gamepad,a:b1,b:b2,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
401  "03000000a00500003232000009010000,8BitDo Zero Gamepad,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
402  "03000000a00500003232000009010000,8BitDo Zero Gamepad,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
403  "03000000050b00000579000000010000,ASUS ROG Kunai 3 Gamepad,a:b0,b:b1,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b14,leftshoulder:b6,leftstick:b15,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b42,paddle1:b9,paddle2:b11,rightshoulder:b7,rightstick:b16,righttrigger:a4,rightx:a2,righty:a3,start:b13,x:b3,y:b4,",
+
404  "03000000050b00000679000000010000,ASUS ROG Kunai 3 Gamepad,a:b0,b:b1,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b14,leftshoulder:b6,leftstick:b15,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b23,rightshoulder:b7,rightstick:b16,righttrigger:a4,rightx:a2,righty:a3,start:b13,x:b3,y:b4,",
+
405  "03000000491900001904000001010000,Amazon Luna Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b9,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b7,x:b2,y:b3,",
+
406  "03000000710100001904000000010000,Amazon Luna Controller,a:b0,b:b1,back:b11,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b9,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,",
+
407  "03000000c62400001a89000000010000,BDA MOGA XP5-X Plus,a:b0,b:b1,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b14,leftshoulder:b6,leftstick:b15,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b16,righttrigger:a4,rightx:a2,righty:a3,start:b13,x:b3,y:b4,",
+
408  "03000000c62400001b89000000010000,BDA MOGA XP5-X Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,",
+
409  "03000000d62000002a79000000010000,BDA PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
410  "030000008305000031b0000000000000,Cideko AK08b,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
411  "03000000260900008888000088020000,Cyber Gadget GameCube Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:a5,rightx:a2,righty:a3~,start:b7,x:b2,y:b3,",
+
412  "03000000a306000022f6000001030000,Cyborg V.3 Rumble Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:-a3,rightx:a2,righty:a4,start:b9,x:b0,y:b3,",
+
413  "030000000d0f00008400000000010000,Fighting Commander,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
414  "030000000d0f00008500000000010000,Fighting Commander,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
415  "03000000ac0500001a06000002020000,GameSir-T3 2.02,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,",
+
416  "0500000047532047616d657061640000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,",
+
417  "03000000c01100000140000000010000,GameStop PS4 Fun Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
418  "03000000ad1b000001f9000000000000,Gamestop BB-070 X360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,",
+
419  "03000000d11800000094000000010000,Google Stadia Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,",
+
420  "030000000d0f00005f00000000000000,HORI Fighting Commander 4 PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
421  "030000000d0f00005e00000000000000,HORI Fighting Commander 4 PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
422  "030000000d0f00008800000000010000,HORI Fighting Stick mini 4 (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,x:b0,y:b3,",
+
423  "030000000d0f00008700000000010000,HORI Fighting Stick mini 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,x:b0,y:b3,",
+
424  "030000000d0f00004d00000000000000,HORI Gem Pad 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
425  "030000000d0f0000aa00000072050000,HORI Real Arcade Pro,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,",
+
426  "030000000d0f00006e00000000010000,HORIPAD 4 (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
427  "030000000d0f00006600000000010000,HORIPAD 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
428  "030000000d0f00006600000000000000,HORIPAD FPS PLUS 4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
429  "030000000d0f00005f00000000010000,Hori Fighting Commander 4 (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
430  "030000000d0f00005e00000000010000,Hori Fighting Commander 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
431  "030000008f0e00001330000011010000,HuiJia SNES Controller,a:b4,b:b2,back:b16,dpdown:+a2,dpleft:-a0,dpright:+a0,dpup:-a2,leftshoulder:b12,rightshoulder:b14,start:b18,x:b6,y:b0,",
+
432  "030000006d04000016c2000000020000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
433  "030000006d04000016c2000000030000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
434  "030000006d04000016c2000014040000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
435  "030000006d04000016c2000000000000,Logitech F310 Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", /* Guide button doesn't seem to be sent in DInput mode. */
+
436  "030000006d04000018c2000000000000,Logitech F510 Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
437  "030000006d0400001fc2000000000000,Logitech F710 Gamepad (XInput),a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,",
+
438  "030000006d04000019c2000000000000,Logitech Wireless Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", /* This includes F710 in DInput mode and the "Logitech Cordless RumblePad 2", at the very least. */
+
439  "03000000d8140000cecf000000000000,MC Cthulhu,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,",
+
440  "03000000c62400002a89000000010000,MOGA XP5-A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b21,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,",
+
441  "03000000c62400002b89000000010000,MOGA XP5-A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,",
+
442  "03000000380700005032000000010000,Mad Catz FightPad PRO (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
443  "03000000380700005082000000010000,Mad Catz FightPad PRO (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
444  "03000000380700008433000000010000,Mad Catz FightStick TE S+ (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
445  "03000000380700008483000000010000,Mad Catz FightStick TE S+ (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
446  "03000000790000004418000000010000,Mayflash GameCube Controller,a:b1,b:b2,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,",
+
447  "0300000025090000e803000000000000,Mayflash Wii Classic Controller,a:b1,b:b0,back:b8,dpdown:b13,dpleft:b12,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,",
+
448  "03000000790000000018000000000000,Mayflash WiiU Pro Game Controller Adapter (DInput),a:b4,b:b8,back:b32,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b16,leftstick:b40,lefttrigger:b24,leftx:a0,lefty:a4,rightshoulder:b20,rightstick:b44,righttrigger:b28,rightx:a8,righty:a12,start:b36,x:b0,y:b12,",
+
449  "030000001008000001e5000006010000,NEXT SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b6,start:b9,x:b3,y:b0,",
+
450  "03000000550900001472000025050000,NVIDIA Controller v01.04,a:b0,b:b1,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b4,leftstick:b7,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a5,start:b6,x:b2,y:b3,",
+
451  "030000004b120000014d000000010000,NYKO AIRFLO EX,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b2,y:b3,",
+
452  "030000007e0500000920000000000000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,",
+
453  "050000007e05000009200000ff070000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b3,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
454  "050000007e05000009200000ff070000,Nintendo Switch Pro Controller,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b3,y:b2,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
455  "030000006f0e00000901000002010000,PDP Versus Fighting Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,",
+
456  "030000004c0500006802000000000000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,",
+
457  "030000004c0500006802000000010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,",
+
458  "030000004c050000a00b000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
459  "030000004c050000c405000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
460  "030000004c050000c405000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
461  "030000004c050000cc09000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
462  "050000004c050000e60c000000010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
463  "030000008f0e00000300000000000000,Piranha xtreme,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,",
+
464  "03000000222c00000225000000010000,Qanba Dragon Arcade Joystick (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
465  "030000008916000000fd000000000000,Razer Onza TE,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,",
+
466  "03000000321500000204000000010000,Razer Panthera (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
467  "03000000321500000104000000010000,Razer Panthera (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
468  "03000000321500000010000000010000,Razer RAIJU,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
469  "03000000321500000507000001010000,Razer Raiju Mobile,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b21,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,",
+
470  "03000000321500000011000000010000,Razer Raion Fightpad for PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
471  "03000000321500000009000000020000,Razer Serval,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,",
+
472  "0300000032150000030a000000000000,Razer Wildcat,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,",
+
473  "03000000790000001100000000000000,Retrolink Classic Controller,a:b2,b:b1,back:b8,leftshoulder:b4,leftx:a3,lefty:a4,rightshoulder:b5,start:b9,x:b3,y:b0,",
+
474  "03000000790000001100000006010000,Retrolink SNES Controller,a:b1,b:b2,back:b8,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,leftshoulder:b4,rightshoulder:b5,start:b9,x:b0,y:b3,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
475  "03000000790000001100000006010000,Retrolink SNES Controller,a:b2,b:b1,back:b8,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
476  "030000006b140000130d000000010000,Revolution Pro Controller 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
477  "030000006b140000010d000000010000,Revolution Pro Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
478  "030000003512000021ab000000000000,SFC30 Joystick,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,",
+
479  "03000000457500002211000000010000,SZMY-POWER PC Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
480  "03000000b40400000a01000000000000,Sega Saturn USB Gamepad,a:b0,b:b1,back:b5,guide:b2,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b8,x:b3,y:b4,",
+
481  "03000000811700007e05000000000000,Sega Saturn,a:b2,b:b4,dpdown:b16,dpleft:b15,dpright:b14,dpup:b17,leftshoulder:b8,lefttrigger:a5,leftx:a0,lefty:a2,rightshoulder:b9,righttrigger:a4,start:b13,x:b0,y:b6,",
+
482  "030000004c050000cc09000000000000,Sony DualShock 4 V2,a:b1,b:b2,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
483  "030000004c050000a00b000000000000,Sony DualShock 4 Wireless Adaptor,a:b1,b:b2,back:b13,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
484  "030000005e0400008e02000001000000,Steam Virtual Gamepad,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,",
+
485  "050000004e696d6275732b0000000000,SteelSeries Nimbus+,a:b0,b:b1,back:b15,dpdown:b11,dpleft:b13,dpright:b12,dpup:b10,guide:b16,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3~,start:b14,x:b2,y:b3,",
+
486  "03000000110100002014000000000000,SteelSeries Nimbus,a:b0,b:b1,dpdown:b9,dpleft:b11,dpright:b10,dpup:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b12,x:b2,y:b3,",
+
487  "03000000110100002014000001000000,SteelSeries Nimbus,a:b0,b:b1,dpdown:b9,dpleft:b11,dpright:b10,dpup:b8,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3~,x:b2,y:b3,",
+
488  "03000000381000002014000001000000,SteelSeries Nimbus,a:b0,b:b1,dpdown:b9,dpleft:b11,dpright:b10,dpup:b8,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3~,x:b2,y:b3,",
+
489  "03000000110100001714000000000000,SteelSeries Stratus XL,a:b0,b:b1,dpdown:b9,dpleft:b11,dpright:b10,dpup:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3~,start:b12,x:b2,y:b3,",
+
490  "03000000110100001714000020010000,SteelSeries Stratus XL,a:b0,b:b1,dpdown:b9,dpleft:b11,dpright:b10,dpup:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3~,start:b12,x:b2,y:b3,",
+
491  "030000004f0400000ed0000000020000,ThrustMaster eSwap PRO Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
492  "030000004f04000015b3000000000000,Thrustmaster Dual Analog 3.2,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,",
+
493  "030000004f04000000b3000000000000,Thrustmaster Firestorm Dual Power,a:b0,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b11,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:b7,rightx:a2,righty:a3,start:b10,x:b1,y:b3,",
+
494  "03000000bd12000015d0000000000000,Tomee SNES USB Controller,a:b2,b:b1,back:b8,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b9,x:b3,y:b0,",
+
495  "03000000bd12000015d0000000010000,Tomee SNES USB Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,",
+
496  "03000000100800000100000000000000,Twin USB Joystick,a:b4,b:b2,back:b16,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b12,leftstick:b20,lefttrigger:b8,leftx:a0,lefty:a2,rightshoulder:b14,rightstick:b22,righttrigger:b10,rightx:a6,righty:a4,start:b18,x:b6,y:b0,",
+
497  "030000006f0e00000302000025040000,Victrix Pro Fight Stick for PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,",
+
498  "030000006f0e00000702000003060000,Victrix Pro Fight Stick for PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,",
+
499  "050000005769696d6f74652028303000,Wii Remote,a:b4,b:b5,back:b7,dpdown:b3,dpleft:b0,dpright:b1,dpup:b2,guide:b8,leftshoulder:b11,lefttrigger:b12,leftx:a0,lefty:a1,start:b6,x:b10,y:b9,",
+
500  "050000005769696d6f74652028313800,Wii U Pro Controller,a:b16,b:b15,back:b7,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b8,leftshoulder:b19,leftstick:b23,lefttrigger:b21,leftx:a0,lefty:a1,rightshoulder:b20,rightstick:b24,righttrigger:b22,rightx:a2,righty:a3,start:b6,x:b18,y:b17,",
+
501  "030000005e0400008e02000000000000,X360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,",
+
502  "03000000c6240000045d000000000000,Xbox 360 Wired Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,",
+
503  "030000005e040000050b000003090000,Xbox Elite Wireless Controller,a:b0,b:b1,back:b38,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,",
+
504  "030000005e040000d102000000000000,Xbox One Wired Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,",
+
505  "030000005e040000dd02000000000000,Xbox One Wired Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,",
+
506  "030000005e040000e302000000000000,Xbox One Wired Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,",
+
507  "030000005e040000200b000011050000,Xbox Wireless Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,",
+
508  "030000005e040000e002000000000000,Xbox Wireless Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
509  "030000005e040000e002000003090000,Xbox Wireless Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
510  "030000005e040000ea02000000000000,Xbox Wireless Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,",
+
511  "030000005e040000fd02000003090000,Xbox Wireless Controller,a:b0,b:b1,back:b16,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,",
+
512  "03000000172700004431000029010000,XiaoMi Game Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a6,rightx:a2,righty:a5,start:b11,x:b3,y:b4,",
+
513  "03000000c0160000e105000000040000,Xin-Mo Dual Arcade,crc:82d5,a:b2,b:b4,back:b18,dpdown:+a2,dpleft:-a0,dpright:+a0,dpup:-a2,rightshoulder:b8,righttrigger:b10,start:b16,x:b0,y:b6,", /* Ultimate Atari Fight Stick */
+
514  "03000000120c0000100e000000010000,ZEROPLUS P4 Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
515  "03000000120c0000101e000000010000,ZEROPLUS P4 Wired Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
516  "03000000830500006020000000010000,iBuffalo SNES Controller,a:b0,b:b1,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b2,y:b3,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
517  "03000000830500006020000000010000,iBuffalo SNES Controller,a:b1,b:b0,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b3,y:b2,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
518  "03000000830500006020000000000000,iBuffalo USB 2-axis 8-button Gamepad,a:b1,b:b0,back:b6,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,start:b7,x:b3,y:b2,",
+
519 #endif
+
520 #if defined(SDL_JOYSTICK_LINUX) || defined(__OpenBSD__)
+
521  "03000000c82d00000090000011010000,8BitDo FC30 Pro,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
522  "03000000c82d00000090000011010000,8BitDo FC30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
523  "05000000c82d00001038000000010000,8BitDo FC30 Pro,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
524  "05000000c82d00001038000000010000,8BitDo FC30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
525  "03000000c82d00000650000011010000,8BitDo M30 Gamepad,a:b0,b:b1,back:b10,guide:b2,leftshoulder:b6,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a5,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
526  "05000000c82d00005106000000010000,8BitDo M30 Gamepad,a:b1,b:b0,back:b10,guide:b2,leftshoulder:b6,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
527  "03000000c82d00001590000011010000,8BitDo N30 Pro 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
528  "03000000c82d00001590000011010000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
529  "05000000c82d00006528000000010000,8BitDo N30 Pro 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
530  "05000000c82d00006528000000010000,8BitDo N30 Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
531  "030000003512000012ab000010010000,8BitDo NES30 Gamepad,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
532  "030000003512000012ab000010010000,8BitDo NES30 Gamepad,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
533  "03000000022000000090000011010000,8BitDo NES30 Pro,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
534  "03000000022000000090000011010000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
535  "03000000c82d00000190000011010000,8BitDo NES30 Pro,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
536  "03000000c82d00000190000011010000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
537  "05000000203800000900000000010000,8BitDo NES30 Pro,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
538  "05000000203800000900000000010000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
539  "05000000c82d00002038000000010000,8BitDo NES30 Pro,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
540  "05000000c82d00002038000000010000,8BitDo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
541  "03000000c82d00000020000000000000,8BitDo Pro 2 Wired Controller for Xbox,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
542  "06000000c82d00000020000006010000,8BitDo Pro 2 Wired Controller for Xbox,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
543  "03000000c82d00000660000011010000,8BitDo Pro 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
544  "03000000c82d00000660000011010000,8BitDo Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
545  "05000000c82d00000660000000010000,8BitDo Pro 2,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
546  "05000000c82d00000660000000010000,8BitDo Pro 2,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
547  "05000000c82d00000061000000010000,8BitDo SF30 Pro,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
548  "05000000c82d00000061000000010000,8BitDo SF30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
549  "05000000102800000900000000010000,8BitDo SFC30 Gamepad,a:b0,b:b1,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
550  "05000000102800000900000000010000,8BitDo SFC30 Gamepad,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
551  "05000000c82d00003028000000010000,8BitDo SFC30 Gamepad,a:b0,b:b1,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
552  "05000000c82d00003028000000010000,8BitDo SFC30 Gamepad,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
553  "03000000c82d00000260000011010000,8BitDo SN30 Pro+,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
554  "03000000c82d00000260000011010000,8BitDo SN30 Pro+,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
555  "05000000c82d00000261000000010000,8BitDo SN30 Pro+,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
556  "05000000c82d00000261000000010000,8BitDo SN30 Pro+,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b2,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
557  "03000000c82d00000160000011010000,8BitDo SN30 Pro,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
558  "03000000c82d00000160000011010000,8BitDo SN30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
559  "030000003512000020ab000010010000,8BitDo SNES30 Gamepad,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
560  "030000003512000020ab000010010000,8BitDo SNES30 Gamepad,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
561  "05000000202800000900000000010000,8BitDo SNES30 Gamepad,a:b0,b:b1,back:b10,dpdown:b122,dpleft:b119,dpright:b120,dpup:b117,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
562  "05000000202800000900000000010000,8BitDo SNES30 Gamepad,a:b1,b:b0,back:b10,dpdown:b122,dpleft:b119,dpright:b120,dpup:b117,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
563  "03000000c82d00001130000011010000,8BitDo Ultimate Wired Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b26,paddle1:b24,paddle2:b25,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,",
+
564  "03000000c82d00001330000011010000,8BitDo Ultimate Wireless Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b26,paddle1:b23,paddle2:b19,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,",
+
565  "03000000c82d00001890000011010000,8BitDo Zero 2,a:b0,b:b1,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
566  "03000000c82d00001890000011010000,8BitDo Zero 2,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
567  "05000000c82d00003032000000010000,8BitDo Zero 2,a:b0,b:b1,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
568  "05000000c82d00003032000000010000,8BitDo Zero 2,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
569  "05000000a00500003232000001000000,8BitDo Zero Gamepad,a:b0,b:b1,back:b10,dpdown:b122,dpleft:b119,dpright:b120,dpup:b117,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
570  "05000000a00500003232000001000000,8BitDo Zero Gamepad,a:b1,b:b0,back:b10,dpdown:b122,dpleft:b119,dpright:b120,dpup:b117,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
571  "05000000a00500003232000008010000,8BitDo Zero Gamepad,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
572  "05000000a00500003232000008010000,8BitDo Zero Gamepad,a:b1,b:b0,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
573  "03000000c82d00000031000011010000,8Bitdo Receiver,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,",
+
574  "03000000c82d00001290000011010000,8Bitdo SN30 Gamepad,a:b0,b:b1,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
575  "03000000c82d00001290000011010000,8Bitdo SN30 Gamepad,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
576  "05000000c82d00006228000000010000,8Bitdo SN30 Gamepad,a:b0,b:b1,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b3,y:b4,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
577  "05000000c82d00006228000000010000,8Bitdo SN30 Gamepad,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
578  "05000000050b00000045000031000000,ASUS Gamepad,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b10,x:b2,y:b3,",
+
579  "05000000050b00000045000040000000,ASUS Gamepad,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b10,x:b2,y:b3,",
+
580  "03000000050b00000579000011010000,ASUS ROG Kunai 3 Gamepad,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b36,paddle1:b52,paddle2:b53,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,",
+
581  "05000000050b00000679000000010000,ASUS ROG Kunai 3 Gamepad,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b21,paddle1:b22,paddle2:b23,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,",
+
582  "030000006f0e00003901000020060000,Afterglow Controller for Xbox One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
583  "030000006f0e00003901000000430000,Afterglow Prismatic Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
584  "030000006f0e00001302000000010000,Afterglow,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
585  "03000000100000008200000011010000,Akishop Customs PS360+ v1.66,a:b1,b:b2,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,",
+
586  "05000000491900000204000021000000,Amazon Fire Game Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b17,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b12,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,",
+
587  "03000000491900001904000011010000,Amazon Luna Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b9,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b7,x:b2,y:b3,",
+
588  "05000000710100001904000000010000,Amazon Luna Controller,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,",
+
589  "03000000790000003018000011010000,Arcade Fightstick F300,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,",
+
590  "03000000503200000110000000000000,Atari Classic Controller,a:b0,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b4,start:b3,x:b1,",
+
591  "05000000503200000110000000000000,Atari Classic Controller,a:b0,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b4,start:b3,x:b1,",
+
592  "03000000503200000210000000000000,Atari Game Controller,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a4,rightx:a2,righty:a3,start:b8,x:b2,y:b3,",
+
593  "05000000503200000210000000000000,Atari Game Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b2,",
+
594  "05000000503200000210000000000000128804098,Atari Game Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b2,",
+
595  "030000005e0400008e02000047010000,Atari Xbox 360 Game Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
596  "03000000c62400001b89000011010000,BDA MOGA XP5-X Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,",
+
597  "03000000d62000002a79000011010000,BDA PS4 Fightpad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
598  "03000000120c0000f70e000011010000,Brook Universal Fighting Board,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:,lefty:,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:,righty:,start:b9,x:b0,y:b3,",
+
599  "03000000b40400000a01000000010000,CYPRESS USB Gamepad,a:b0,b:b1,back:b5,guide:b2,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b8,x:b3,y:b4,",
+
600  "03000000ffff0000ffff000000010000,Chinese-made Xbox Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b4,",
+
601  "03000000e82000006058000001010000,Cideko AK08b,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,",
+
602  "03000000260900008888000000010000,Cyber Gadget GameCube Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:a5,rightx:a2,righty:a3~,start:b7,x:b2,y:b3,",
+
603  "03000000a306000022f6000011010000,Cyborg V.3 Rumble Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:-a3,rightx:a2,righty:a4,start:b9,x:b0,y:b3,",
+
604  "050000004c050000f20d000000010000,DualSense Edge Wireless Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
605  "030000006f0e00003001000001010000,EA Sports PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
606  "03000000790000001100000010010000,Elecom Gamepad,crc:e86c,a:b2,b:b3,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b0,y:b1,",
+
607  "0300000079000000d418000000010000,GPD Win 2 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
608  "0500000047532067616d657061640000,GS Gamepad,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,",
+
609  "03000000341a000005f7000010010000,GameCube {HuiJia USB box},a:b1,b:b2,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,",
+
610  "03000000bc2000000055000011010000,GameSir G3w,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,",
+
611  "0500000049190000020400001b010000,GameSir T4 Pro,crc:8283,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b23,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,",
+
612  "03000000ac0500001a06000011010000,GameSir-T3 2.02,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,",
+
613  "0500000047532047616d657061640000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,",
+
614  "03000000c01100000140000011010000,GameStop PS4 Fun Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
615  "030000006f0e00000104000000010000,Gamestop Logic3 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
616  "030000008f0e00000800000010010000,Gasia Co. Ltd PS(R) Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,",
+
617  "030000006f0e00001304000000010000,Generic X-Box pad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
618  "03000000f0250000c183000010010000,Goodbetterbest Ltd USB Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
619  "03000000d11800000094000011010000,Google Stadia Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,",
+
620  "05000000d11800000094000000010000,Google Stadia Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,",
+
621  "03000000280400000140000000010000,Gravis Gamepad Pro USB ,a:b1,b:b2,back:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,",
+
622  "030000008f0e00000610000000010000,GreenAsia Electronics 4Axes 12Keys Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a3,righty:a2,start:b11,x:b3,y:b0,",
+
623  "030000008f0e00001200000010010000,GreenAsia Inc. USB Joystick,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b2,y:b3,",
+
624  "03000000c9110000f055000011010000,HJC Game GAMEPAD,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,",
+
625  "030000000d0f00001000000011010000,HORI CO. LTD. FIGHTING STICK 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,",
+
626  "030000000d0f00002200000011010000,HORI CO. LTD. REAL ARCADE Pro.V3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,",
+
627  "030000000d0f00006a00000011010000,HORI CO. LTD. Real Arcade Pro.4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
628  "030000000d0f00006b00000011010000,HORI CO. LTD. Real Arcade Pro.4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
629  "030000000d0f00005001000009040000,HORI Fighting Commander OCTA,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
630  "030000000d0f00008400000011010000,HORI Fighting Commander,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
631  "030000000d0f00008500000010010000,HORI Fighting Commander,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
632  "030000000d0f00008800000011010000,HORI Fighting Stick mini 4 (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,rightstick:b11,righttrigger:b7,start:b9,x:b0,y:b3,",
+
633  "030000000d0f00008700000011010000,HORI Fighting Stick mini 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,rightshoulder:b5,rightstick:b11,righttrigger:a4,start:b9,x:b0,y:b3,",
+
634  "030000000d0f0000d800000072056800,HORI Real Arcade Pro S,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,",
+
635  "030000000d0f0000aa00000011010000,HORI Real Arcade Pro,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,",
+
636  "030000000d0f00006e00000011010000,HORIPAD 4 (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
637  "030000000d0f00006600000011010000,HORIPAD 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
638  "030000000d0f00006700000001010000,HORIPAD ONE,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
639  "06000000adde0000efbe000002010000,Hidromancer Game Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
640  "03000000d81400000862000011010000,HitBox (PS3/PC) Analog Mode,a:b1,b:b2,back:b8,guide:b9,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b12,x:b0,y:b3,",
+
641  "030000000d0f00005f00000011010000,Hori Fighting Commander 4 (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
642  "030000000d0f00005e00000011010000,Hori Fighting Commander 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
643  "030000000d0f00008600000002010000,Hori Fighting Commander,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,",
+
644  "03000000ad1b000001f5000033050000,Hori Pad EX Turbo 2,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
645  "030000008f0e00001330000010010000,HuiJia SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b9,x:b3,y:b0,",
+
646  "03000000242e00008816000001010000,Hyperkin X91,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
647  "03000000d80400008200000003000000,IMS PCU#0 Gamepad Interface,a:b1,b:b0,back:b4,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,start:b5,x:b3,y:b2,",
+
648  "03000000fd0500000030000000010000,InterAct GoPad I-73000 (Fighting Game Layout),a:b3,b:b4,back:b6,leftx:a0,lefty:a1,rightshoulder:b2,righttrigger:b5,start:b7,x:b0,y:b1,",
+
649  "05000000491900000204000000000000,Ipega PG-9087S,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b3,y:b4,",
+
650  "030000006e0500000320000010010000,JC-U3613M - DirectInput Mode,a:b2,b:b3,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,start:b11,x:b0,y:b1,",
+
651  "03000000300f00001001000010010000,Jess Tech Dual Analog Rumble Pad,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,",
+
652  "03000000ba2200002010000001010000,Jess Technology USB Game Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,",
+
653  "030000006f0e00000103000000020000,Logic3 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
654  "030000006d040000d1ca000011010000,Logitech Chillstream,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
655  "030000006d04000019c2000010010000,Logitech Cordless RumblePad 2,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
656  "030000006d04000016c2000010010000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
657  "030000006d04000016c2000011010000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
658  "030000006d0400001dc2000014400000,Logitech F310 Gamepad (XInput),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
659  "030000006d0400001ec2000020200000,Logitech F510 Gamepad (XInput),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
660  "030000006d04000019c2000011010000,Logitech F710 Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", /* Guide button doesn't seem to be sent in DInput mode. */
+
661  "030000006d0400001fc2000005030000,Logitech F710 Gamepad (XInput),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
662  "030000006d04000018c2000010010000,Logitech RumblePad 2,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
663  "030000006d04000011c2000010010000,Logitech WingMan Cordless RumblePad,a:b0,b:b1,back:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b6,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b10,rightx:a3,righty:a4,start:b8,x:b3,y:b4,",
+
664  "03000000c62400002b89000011010000,MOGA XP5-A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,",
+
665  "05000000c62400002a89000000010000,MOGA XP5-A Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b22,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,",
+
666  "05000000c62400001a89000000010000,MOGA XP5-X Plus,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,",
+
667  "03000000250900006688000000010000,MP-8866 Super Dual Box,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,",
+
668  "05000000380700006652000025010000,Mad Catz C.T.R.L.R ,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
669  "03000000380700005032000011010000,Mad Catz FightPad PRO (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
670  "03000000380700005082000011010000,Mad Catz FightPad PRO (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
671  "03000000380700008433000011010000,Mad Catz FightStick TE S+ (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
672  "03000000380700008483000011010000,Mad Catz FightStick TE S+ (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
673  "03000000ad1b00002ef0000090040000,Mad Catz Fightpad SFxT,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,lefttrigger:a2,rightshoulder:b5,righttrigger:a5,start:b7,x:b2,y:b3,",
+
674  "03000000380700003847000090040000,Mad Catz Wired Xbox 360 Controller (SFIV),a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,",
+
675  "03000000380700001647000010040000,Mad Catz Wired Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
676  "03000000ad1b000016f0000090040000,Mad Catz Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
677  "03000000380700008034000011010000,Mad Catz fightstick (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
678  "03000000380700008084000011010000,Mad Catz fightstick (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
679  "03000000380700001888000010010000,MadCatz PC USB Wired Stick 8818,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
680  "03000000380700003888000010010000,MadCatz PC USB Wired Stick 8838,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:a0,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
681  "03000000790000004418000010010000,Mayflash GameCube Controller,a:b1,b:b2,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,",
+
682  "03000000780000000600000010010000,Microntek USB Joystick,a:b2,b:b1,back:b8,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,",
+
683  "030000005e0400000e00000000010000,Microsoft SideWinder,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,rightshoulder:b7,start:b8,x:b3,y:b4,",
+
684  "030000005e0400008e02000004010000,Microsoft X-Box 360 pad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
685  "030000005e0400008e02000062230000,Microsoft X-Box 360 pad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
686  "030000005e040000d102000003020000,Microsoft X-Box One pad v2,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
687  "030000005e040000d102000001010000,Microsoft X-Box One pad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
688  "030000005e0400008502000000010000,Microsoft X-Box pad (Japan),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b4,",
+
689  "030000005e0400008902000021010000,Microsoft X-Box pad v2 (US),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b4,",
+
690  "030000005e0400008902000020010000,Microsoft Xbox Controller S,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b4,",
+
691  "05000000d6200000ad0d000001000000,Moga Pro,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,",
+
692  "030000006b140000010c000010010000,NACON GC-400ES,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,",
+
693  "030000001008000001e5000010010000,NEXT SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b6,start:b9,x:b3,y:b0,",
+
694  "03000000550900001472000011010000,NVIDIA Controller v01.04,a:b0,b:b1,back:b14,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b17,leftshoulder:b4,leftstick:b7,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b8,righttrigger:a4,rightx:a2,righty:a5,start:b6,x:b2,y:b3,",
+
695  "03000000550900001072000011010000,NVIDIA Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b13,leftshoulder:b4,leftstick:b8,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,",
+
696  "030000004b120000014d000000010000,NYKO AIRFLO EX,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b2,y:b3,",
+
697  "03000000451300000830000010010000,NYKO CORE,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
698  "03000000790000004318000010010000,Nintendo GameCube Controller,a:b1,b:b2,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
699  "03000000790000004318000010010000,Nintendo GameCube Controller,a:b1,b:b0,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b2,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
700  "050000007e0500000620000001800000,Nintendo Switch Joy-Con (L),a:b15,b:b16,guide:b4,leftshoulder:b6,leftstick:b12,leftx:a1,lefty:a0~,rightshoulder:b8,start:b9,x:b17,y:b14,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
701  "050000007e0500000620000001800000,Nintendo Switch Joy-Con (L),a:b16,b:b15,guide:b4,leftshoulder:b6,leftstick:b12,leftx:a1,lefty:a0~,rightshoulder:b8,start:b9,x:b14,y:b17,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
702  "060000007e0500000620000000000000,Nintendo Switch Joy-Con (L/R),a:b1,b:b0,back:b9,dpdown:b15,dpleft:b16,dpright:b17,dpup:b14,leftshoulder:b5,leftstick:b12,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b13,righttrigger:b8,rightx:a2,righty:a3,start:b10,x:b2,y:b3,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
703  "060000007e0500000620000000000000,Nintendo Switch Joy-Con (L/R),a:b0,b:b1,back:b9,dpdown:b15,dpleft:b16,dpright:b17,dpup:b14,leftshoulder:b5,leftstick:b12,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b13,righttrigger:b8,rightx:a2,righty:a3,start:b10,x:b3,y:b2,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
704  "060000007e0500000820000000000000,Nintendo Switch Joy-Con (L/R),a:b1,b:b0,back:b9,dpdown:b15,dpleft:b16,dpright:b17,dpup:b14,guide:b11,leftshoulder:b5,leftstick:b12,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b13,righttrigger:b8,rightx:a2,righty:a3,start:b10,x:b2,y:b3,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
705  "060000007e0500000820000000000000,Nintendo Switch Joy-Con (L/R),a:b0,b:b1,back:b9,dpdown:b15,dpleft:b16,dpright:b17,dpup:b14,guide:b11,leftshoulder:b5,leftstick:b12,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b13,righttrigger:b8,rightx:a2,righty:a3,start:b10,x:b3,y:b2,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
706  "050000007e0500000720000001800000,Nintendo Switch Joy-Con (R),a:b2,b:b1,guide:b9,leftshoulder:b4,leftstick:b10,leftx:a1~,lefty:a0,rightshoulder:b6,start:b8,x:b3,y:b0,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
707  "050000007e0500000720000001800000,Nintendo Switch Joy-Con (R),a:b1,b:b2,guide:b9,leftshoulder:b4,leftstick:b10,leftx:a1~,lefty:a0,rightshoulder:b6,start:b8,x:b0,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
708  "03000000d620000013a7000011010000,Nintendo Switch PowerA Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
709  "03000000d620000013a7000011010000,Nintendo Switch PowerA Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
710  "03000000d620000011a7000011010000,Nintendo Switch PowerA Core Plus Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
711  "03000000d620000011a7000011010000,Nintendo Switch PowerA Core Plus Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
712  "030000007e0500000920000011810000,Nintendo Switch Pro Controller,a:b1,b:b0,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b5,leftstick:b12,lefttrigger:b7,leftx:a0,lefty:a1,misc1:b4,rightshoulder:b6,rightstick:b13,righttrigger:b8,rightx:a2,righty:a3,start:b10,x:b2,y:b3,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
713  "030000007e0500000920000011810000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b5,leftstick:b12,lefttrigger:b7,leftx:a0,lefty:a1,misc1:b4,rightshoulder:b6,rightstick:b13,righttrigger:b8,rightx:a2,righty:a3,start:b10,x:b3,y:b2,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
714  "050000004c69632050726f20436f6e00,Nintendo Switch Pro Controller,crc:15b7,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
715  "050000004c69632050726f20436f6e00,Nintendo Switch Pro Controller,crc:15b7,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
716  "050000007e0500000920000001000000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
717  "050000007e0500000920000001000000,Nintendo Switch Pro Controller,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
718  "050000007e0500000920000001800000,Nintendo Switch Pro Controller,a:b1,b:b0,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b5,leftstick:b12,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b13,righttrigger:b8,rightx:a2,righty:a3,start:b10,x:b2,y:b3,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
719  "050000007e0500000920000001800000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b11,leftshoulder:b5,leftstick:b12,lefttrigger:b7,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b13,righttrigger:b8,rightx:a2,righty:a3,start:b10,x:b3,y:b2,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
720  "050000007e0500000603000000060000,Nintendo Wii Remote Classic Controller,crc:0d8a,a:b0,b:b1,back:b10,dpdown:b14,dpleft:b12,dpright:b13,dpup:b11,guide:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3~,start:b9,x:b2,y:b3,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
721  "050000007e0500000603000000060000,Nintendo Wii Remote Classic Controller,crc:0d8a,a:b1,b:b0,back:b10,dpdown:b14,dpleft:b12,dpright:b13,dpup:b11,guide:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3~,start:b9,x:b3,y:b2,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
722  "050000007e0500003003000001000000,Nintendo Wii Remote Pro Controller,a:b1,b:b0,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
723  "050000007e0500003003000001000000,Nintendo Wii Remote Pro Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
724  "050000007e0500000603000000060000,Nintendo Wii Remote,crc:60be,a:b1,b:b0,back:b4,dpdown:b8,dpleft:b6,dpright:b7,dpup:b5,guide:b2,start:b3,x:b9,y:b10,",
+
725  "05000000010000000100000003000000,Nintendo Wiimote,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,",
+
726  "030000000d0500000308000010010000,Nostromo n45 Dual Analog Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b12,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b10,x:b2,y:b3,",
+
727  "05000000362800000100000002010000,OUYA Game Controller,a:b0,b:b3,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b14,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,x:b1,y:b2,",
+
728  "05000000362800000100000003010000,OUYA Game Controller,a:b0,b:b3,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b14,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,x:b1,y:b2,",
+
729  "030000005e0400000202000000010000,Old Xbox pad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b5,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b2,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b3,y:b4,",
+
730  "03000000ff1100003133000010010000,PC Game Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,",
+
731  "030000006f0e00006401000001010000,PDP Battlefield One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
732  "030000006f0e00000901000011010000,PDP Versus Fighting Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,",
+
733  "03000000ff1100004133000010010000,PS2 Controller,a:b2,b:b1,back:b8,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,",
+
734  "03000000341a00003608000011010000,PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
735  "030000004c0500006802000010010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,",
+
736  "030000004c0500006802000010810000,PS3 Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,",
+
737  "030000004c0500006802000011010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:a12,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:a13,rightx:a2,righty:a3,start:b3,x:b15,y:b12,",
+
738  "030000004c0500006802000011810000,PS3 Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,",
+
739  "030000006f0e00001402000011010000,PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
740  "030000008f0e00000300000010010000,PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,",
+
741  "050000004c0500006802000000010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:a12,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:a13,rightx:a2,righty:a3,start:b3,x:b15,y:b12,",
+
742  "050000004c0500006802000000800000,PS3 Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,",
+
743  "050000004c0500006802000000810000,PS3 Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,",
+
744  "05000000504c415953544154494f4e00,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,",
+
745  "060000004c0500006802000000010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,",
+
746  "030000004c050000a00b000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
747  "030000004c050000a00b000011810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,",
+
748  "030000004c050000c405000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
749  "030000004c050000c405000011810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,",
+
750  "030000004c050000cc09000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
751  "030000004c050000cc09000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
752  "030000004c050000cc09000011810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,",
+
753  "050000004c050000c405000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
754  "050000004c050000c405000000810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,",
+
755  "050000004c050000cc09000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
756  "050000004c050000cc09000000810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,",
+
757  "050000004c050000cc09000001800000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,",
+
758  "030000004c050000e60c000000010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
759  "030000004c050000e60c000011010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
760  "030000004c050000e60c000011810000,PS5 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,",
+
761  "050000004c050000e60c000000010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,misc1:b13,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
762  "050000004c050000e60c000000810000,PS5 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,",
+
763  "030000004c050000da0c000011010000,Playstation Controller,a:b2,b:b1,back:b8,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,",
+
764  "03000000c62400003a54000001010000,PowerA XBox One Controller,a:b0,b:b1,back:b6,dpdown:h0.7,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
765  "03000000c62400000053000000010000,PowerA,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
766  "03000000300f00001211000011010000,QanBa Arcade JoyStick,a:b2,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b5,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b6,start:b9,x:b1,y:b3,",
+
767  "03000000222c00000225000011010000,Qanba Dragon Arcade Joystick (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
768  "03000000222c00000025000011010000,Qanba Dragon Arcade Joystick (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
769  "03000000222c00001020000011010000,Qanba Drone 2 Arcade Joystick (PS5),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
770  "03000000222c00001220000011010000,Qanba Drone 2 Arcade Joystick (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
771  "03000000222c00000020000011010000,Qanba Drone Arcade Joystick (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,rightshoulder:b5,righttrigger:a4,start:b9,x:b0,y:b3,",
+
772  "03000000222c00000223000011010000,Qanba Obsidian Arcade Joystick (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
773  "03000000222c00000023000011010000,Qanba Obsidian Arcade Joystick (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
774  "030000008916000001fd000024010000,Razer Onza Classic Edition,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
775  "03000000321500000204000011010000,Razer Panthera (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
776  "03000000321500000104000011010000,Razer Panthera (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
777  "03000000321500000010000011010000,Razer RAIJU,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
778  "03000000321500000507000000010000,Razer Raiju Mobile,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b21,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,",
+
779  "03000000321500000011000011010000,Razer Raion Fightpad for PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
780  "030000008916000000fe000024010000,Razer Sabertooth,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
781  "03000000c6240000045d000024010000,Razer Sabertooth,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
782  "03000000c6240000045d000025010000,Razer Sabertooth,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
783  "03000000321500000009000011010000,Razer Serval,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,",
+
784  "050000003215000000090000163a0000,Razer Serval,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,",
+
785  "0300000032150000030a000001010000,Razer Wildcat,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
786  "0300000000f000000300000000010000,RetroPad,a:b1,b:b5,back:b2,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b0,y:b4,",
+
787  "03000000790000001100000010010000,Retrolink SNES Controller,a:b1,b:b2,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b0,y:b3,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
788  "03000000790000001100000010010000,Retrolink SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
789  "030000006b140000130d000011010000,Revolution Pro Controller 3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
790  "030000006b140000010d000011010000,Revolution Pro Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
791  "030000006f0e00001e01000011010000,Rock Candy PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
792  "030000006f0e00004601000001010000,Rock Candy Xbox One Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
793  "030000006f0e00001f01000000010000,Rock Candy,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
794  "03000000632500007505000010010000,SHANWAN PS3/PC Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,",
+
795  "03000000341a00000908000010010000,SL-6566,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,",
+
796  "03000000457500002211000010010000,SZMY-POWER PC Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
797  "03000000a306000023f6000011010000,Saitek Cyborg V.1 Game Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a4,start:b9,x:b0,y:b3,",
+
798  "03000000a30600000cff000010010000,Saitek P2500 Force Rumble Pad,a:b2,b:b3,back:b11,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,x:b0,y:b1,",
+
799  "03000000a30600000c04000011010000,Saitek P2900 Wireless Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b12,x:b0,y:b3,",
+
800  "03000000a30600000901000000010000,Saitek P880,a:b2,b:b3,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,x:b0,y:b1,",
+
801  "03000000a30600000b04000000010000,Saitek P990 Dual Analog Pad,a:b1,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b8,x:b0,y:b3,",
+
802  "03000000a306000018f5000010010000,Saitek PLC Saitek P3200 Rumble Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b0,y:b3,",
+
803  "03000000c01600008704000011010000,Serial/Keyboard/Mouse/Joystick,a:b12,b:b10,back:b4,dpdown:b2,dpleft:b3,dpright:b1,dpup:b0,leftshoulder:b9,leftstick:b14,lefttrigger:b6,leftx:a1,lefty:a0,rightshoulder:b8,rightstick:b15,righttrigger:b7,rightx:a2,righty:a3,start:b5,x:b13,y:b11,",
+
804  "03000000f025000021c1000010010000,ShanWan Gioteck PS3 Wired Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,",
+
805  "03000000632500002305000010010000,ShanWan USB Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,",
+
806  "03000000250900000500000000010000,Sony PS2 pad with SmartJoy adapter,a:b2,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,",
+
807  "030000005e0400008e02000020200000,SpeedLink XEOX Pro Analog Gamepad pad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
808  "030000005e0400008e02000073050000,Speedlink TORID Wireless Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
809  "03000000de2800000112000001000000,Steam Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b11,paddle2:b10,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,",
+
810  "03000000de2800000112000011010000,Steam Controller,a:b2,b:b3,back:b10,dpdown:+a5,dpleft:-a4,dpright:+a4,dpup:-a5,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a7,leftx:a0,lefty:a1,paddle1:b15,paddle2:b16,rightshoulder:b7,rightstick:b14,righttrigger:a6,rightx:a2,righty:a3,start:b11,x:b4,y:b5,",
+
811  "03000000de2800000211000001000000,Steam Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b11,paddle2:b10,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,",
+
812  "03000000de2800000211000011010000,Steam Controller,a:b2,b:b3,back:b10,dpdown:+a5,dpleft:-a4,dpright:+a4,dpup:-a5,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a7,leftx:a0,lefty:a1,paddle1:b15,paddle2:b16,rightshoulder:b7,rightstick:b14,righttrigger:a6,rightx:a2,righty:a3,start:b11,x:b4,y:b5,",
+
813  "03000000de2800004211000001000000,Steam Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b11,paddle2:b10,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,",
+
814  "03000000de2800004211000011010000,Steam Controller,a:b2,b:b3,back:b10,dpdown:+a5,dpleft:-a4,dpright:+a4,dpup:-a5,guide:b12,leftshoulder:b6,leftstick:b13,lefttrigger:a7,leftx:a0,lefty:a1,paddle1:b15,paddle2:b16,rightshoulder:b7,rightstick:b14,righttrigger:a6,rightx:a2,righty:a3,start:b11,x:b4,y:b5,",
+
815  "03000000de280000fc11000001000000,Steam Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
816  "05000000de2800000212000001000000,Steam Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b11,paddle2:b10,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,",
+
817  "05000000de2800000511000001000000,Steam Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b11,paddle2:b10,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,",
+
818  "05000000de2800000611000001000000,Steam Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b11,paddle2:b10,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,",
+
819  "03000000de2800000512000011010000,Steam Deck,a:b3,b:b4,back:b11,dpdown:b17,dpleft:b18,dpright:b19,dpup:b16,guide:b13,leftshoulder:b7,leftstick:b14,lefttrigger:a9,leftx:a0,lefty:a1,misc1:b2,paddle1:b21,paddle2:b20,paddle3:b23,paddle4:b22,rightshoulder:b8,rightstick:b15,righttrigger:a8,rightx:a2,righty:a3,start:b12,x:b5,y:b6,",
+
820  "03000000de2800000512000000016800,Steam Deck,a:b0,b:b1,x:b2,y:b3,back:b4,guide:b5,start:b6,leftstick:b7,rightstick:b8,leftshoulder:b9,rightshoulder:b10,dpup:b11,dpdown:b12,dpleft:b13,dpright:b14,misc1:b15,paddle1:b16,paddle2:b17,paddle3:b18,paddle4:b19,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:a4,righttrigger:a5,",
+
821  "03000000de280000ff11000001000000,Steam Virtual Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
822  "0500000011010000311400001b010000,SteelSeries Stratus Duo,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b32,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,",
+
823  "05000000110100001914000009010000,SteelSeries Stratus XL,a:b0,b:b1,back:b17,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b18,leftshoulder:b6,leftstick:b13,lefttrigger:+a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:+a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,",
+
824  "03000000ad1b000038f0000090040000,Street Fighter IV FightStick TE,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
825  "03000000666600000488000000010000,Super Joy Box 5 Pro,a:b2,b:b1,back:b9,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b3,y:b0,",
+
826  "0300000000f00000f100000000010000,Super RetroPort,a:b1,b:b5,back:b2,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b0,y:b4,",
+
827  "030000004f0400000ed0000011010000,ThrustMaster eSwap PRO Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
828  "030000004f04000020b3000010010000,Thrustmaster 2 in 1 DT,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,",
+
829  "030000004f04000015b3000001010000,Thrustmaster Dual Analog 3.2,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,",
+
830  "030000004f04000015b3000010010000,Thrustmaster Dual Analog 4,a:b0,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b1,y:b3,",
+
831  "030000004f04000023b3000000010000,Thrustmaster Dual Trigger 3-in-1,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
832  "030000004f04000000b3000010010000,Thrustmaster Firestorm Dual Power,a:b0,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b11,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b10,x:b1,y:b3,",
+
833  "030000004f04000009d0000000010000,Thrustmaster Run N Drive Wireless PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
834  "030000004f04000008d0000000010000,Thrustmaster Run N Drive Wireless,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
835  "03000000bd12000015d0000010010000,Tomee SNES USB Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,",
+
836  "03000000d814000007cd000011010000,Toodles 2008 Chimp PC/PS3,a:b0,b:b1,back:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,start:b9,x:b3,y:b2,",
+
837  "03000000100800000100000010010000,Twin USB PS2 Adapter,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,",
+
838  "03000000100800000300000010010000,USB Gamepad,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b3,y:b0,",
+
839  "03000000790000001100000000010000,USB Gamepad1,a:b2,b:b1,back:b8,dpdown:a0,dpleft:a1,dpright:a2,dpup:a4,start:b9,",
+
840  "05000000ac0500003232000001000000,VR-BOX,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a3,righty:a2,start:b9,x:b2,y:b3,",
+
841  "030000006f0e00000302000011010000,Victrix Pro Fight Stick for PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,",
+
842  "030000006f0e00000702000011010000,Victrix Pro Fight Stick for PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,",
+
843  "030000005e0400008e02000010010000,X360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
844  "030000005e0400008e02000014010000,X360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
845  "030000005e0400001907000000010000,X360 Wireless Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
846  "030000005e0400009102000007010000,X360 Wireless Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
847  "030000005e040000a102000000010000,X360 Wireless Controller,a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
848  "030000005e040000a102000007010000,X360 Wireless Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
849  "03000000450c00002043000010010000,XEOX Gamepad SL-6556-BK,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,",
+
850  "0000000058626f782033363020576900,Xbox 360 Wireless Controller,a:b0,b:b1,back:b14,dpdown:b11,dpleft:b12,dpright:b13,dpup:b10,guide:b7,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,",
+
851  "030000005e040000a102000014010000,Xbox 360 Wireless Receiver (XBOX),a:b0,b:b1,back:b6,dpdown:b14,dpleft:b11,dpright:b12,dpup:b13,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
852  "0000000058626f782047616d65706100,Xbox Gamepad (userspace driver),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,",
+
853  "050000005e040000e002000003090000,Xbox One Wireless Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,",
+
854  "050000005e040000fd02000003090000,Xbox One Wireless Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,guide:b16,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,",
+
855  "05000000172700004431000029010000,XiaoMi Game Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b20,leftshoulder:b6,leftstick:b13,lefttrigger:a7,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a6,rightx:a2,righty:a5,start:b11,x:b3,y:b4,",
+
856  "03000000c0160000e105000010010000,Xin-Mo Dual Arcade,crc:82d5,a:b1,b:b2,back:b9,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,rightshoulder:b4,righttrigger:b5,start:b8,x:b0,y:b3,", /* Ultimate Atari Fight Stick */
+
857  "03000000120c0000100e000011010000,ZEROPLUS P4 Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
858  "03000000120c0000101e000011010000,ZEROPLUS P4 Wired Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
859  "03000000666600006706000000010000,boom PSX to PC Converter,a:b2,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,leftshoulder:b6,leftstick:b9,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b10,righttrigger:b5,rightx:a2,righty:a3,start:b11,x:b3,y:b0,",
+
860  "03000000830500006020000010010000,iBuffalo SNES Controller,a:b0,b:b1,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b2,y:b3,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
861  "03000000830500006020000010010000,iBuffalo SNES Controller,a:b1,b:b0,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b3,y:b2,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
862  "050000006964726f69643a636f6e0000,idroid:con,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,",
+
863  "03000000b50700001503000010010000,impact,a:b2,b:b3,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b0,y:b1,",
+
864  "030000009b2800008000000020020000,raphnet technologies 1-player WUSBMote v2.2,a:b1,b:b4,back:b2,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,leftshoulder:b6,rightshoulder:b7,start:b3,x:b0,y:b5,",
+
865  "030000009b2800000300000001010000,raphnet.net 4nes4snes v1.5,a:b0,b:b4,back:b2,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b3,x:b1,y:b5,",
+
866 #endif
+
867 #if defined(__OpenBSD__)
+
868  "030000004c050000c405000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
869  "030000004c050000e60c000000010000,PS5 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,",
+
870  "030000005e0400008e02000010010000,Xbox 360 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1~,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4~,start:b7,x:b2,y:b3,",
+
871 #endif
+
872 #if defined(__ANDROID__)
+
873  "05000000c82d000006500000ffff3f00,8BitDo M30 Gamepad,a:b0,b:b1,back:b4,guide:b17,leftshoulder:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:a4,start:b6,x:b2,y:b3,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
874  "05000000c82d000006500000ffff3f00,8BitDo M30 Gamepad,a:b1,b:b0,back:b4,guide:b17,leftshoulder:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:a4,start:b6,x:b3,y:b2,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
875  "05000000c82d000051060000ffff3f00,8BitDo M30 Gamepad,a:b0,b:b1,back:b4,guide:b17,leftshoulder:b9,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:a5,start:b6,x:b2,y:b3,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
876  "05000000c82d000051060000ffff3f00,8BitDo M30 Gamepad,a:b1,b:b0,back:b4,guide:b17,leftshoulder:b9,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:a5,start:b6,x:b3,y:b2,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
877  "05000000c82d000015900000ffff3f00,8BitDo N30 Pro 2,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
878  "05000000c82d000015900000ffff3f00,8BitDo N30 Pro 2,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b3,y:b2,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
879  "05000000c82d000065280000ffff3f00,8BitDo N30 Pro 2,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b17,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
880  "05000000c82d000065280000ffff3f00,8BitDo N30 Pro 2,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b17,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b3,y:b2,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
881  "050000000220000000900000ffff3f00,8BitDo NES30 Pro,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
882  "050000000220000000900000ffff3f00,8BitDo NES30 Pro,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b3,y:b2,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
883  "050000002038000009000000ffff3f00,8BitDo NES30 Pro,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
884  "050000002038000009000000ffff3f00,8BitDo NES30 Pro,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b3,y:b2,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
885  "05000000c82d000000600000ffff3f00,8BitDo SF30 Pro,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:b15,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b16,rightx:a2,righty:a3,start:b6,x:b2,y:b3,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
886  "05000000c82d000000600000ffff3f00,8BitDo SF30 Pro,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:b15,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b16,rightx:a2,righty:a3,start:b6,x:b3,y:b2,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
887  "05000000c82d000000610000ffff3f00,8BitDo SF30 Pro,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
888  "05000000c82d000000610000ffff3f00,8BitDo SF30 Pro,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b3,y:b2,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
889  "05000000c82d000012900000ffff3f00,8BitDo SN30 Gamepad,a:b0,b:b1,back:b4,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,start:b6,x:b2,y:b3,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
890  "05000000c82d000012900000ffff3f00,8BitDo SN30 Gamepad,a:b1,b:b0,back:b4,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,start:b6,x:b3,y:b2,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
891  "05000000c82d000062280000ffff3f00,8BitDo SN30 Gamepad,a:b0,b:b1,back:b4,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,start:b6,x:b2,y:b3,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
892  "05000000c82d000062280000ffff3f00,8BitDo SN30 Gamepad,a:b1,b:b0,back:b4,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,start:b6,x:b3,y:b2,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
893  "05000000c82d000002600000ffff0f00,8BitDo SN30 Pro+,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b17,leftshoulder:b9,leftstick:b7,lefttrigger:b15,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b16,rightx:a2,righty:a3,start:b6,x:b2,y:b3,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
894  "05000000c82d000002600000ffff0f00,8BitDo SN30 Pro+,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b17,leftshoulder:b9,leftstick:b7,lefttrigger:b15,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b16,rightx:a2,righty:a3,start:b6,x:b3,y:b2,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
895  "05000000c82d000001600000ffff3f00,8BitDo SN30 Pro,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
896  "05000000c82d000001600000ffff3f00,8BitDo SN30 Pro,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b3,y:b2,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
897  "050000002028000009000000ffff3f00,8BitDo SNES30 Gamepad,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
898  "050000002028000009000000ffff3f00,8BitDo SNES30 Gamepad,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b3,y:b2,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
899  "050000003512000020ab000000780f00,8BitDo SNES30 Gamepad,a:b20,b:b21,back:b30,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b26,rightshoulder:b27,start:b31,x:b23,y:b24,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
900  "050000003512000020ab000000780f00,8BitDo SNES30 Gamepad,a:b21,b:b20,back:b30,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b26,rightshoulder:b27,start:b31,x:b24,y:b23,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
901  "05000000c82d000018900000ffff0f00,8BitDo Zero 2,a:b0,b:b1,back:b4,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,start:b6,x:b2,y:b3,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
902  "05000000c82d000018900000ffff0f00,8BitDo Zero 2,a:b1,b:b0,back:b4,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,start:b6,x:b3,y:b2,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
903  "05000000c82d000030320000ffff0f00,8BitDo Zero 2,a:b0,b:b1,back:b4,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,start:b6,x:b2,y:b3,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
904  "05000000c82d000030320000ffff0f00,8BitDo Zero 2,a:b1,b:b0,back:b4,leftshoulder:b9,leftx:a0,lefty:a1,rightshoulder:b10,start:b6,x:b3,y:b2,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
905  "05000000d6020000e5890000dfff3f80,GPD XD Plus,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a3,rightx:a4,righty:a5,start:b6,x:b2,y:b3,",
+
906  "0500000031366332860c44aadfff0f00,GS Gamepad,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:b15,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b16,rightx:a2,righty:a3,start:b6,x:b2,y:b3,",
+
907  "05000000bc20000000550000ffff3f00,GameSir G3w,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a4,rightx:a2,righty:a3,start:b6,x:b2,y:b3,",
+
908  "050000005509000003720000cf7f3f00,NVIDIA Controller v01.01,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,",
+
909  "050000005509000010720000ffff3f00,NVIDIA Controller v01.03,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,",
+
910  "050000005509000014720000df7f3f80,NVIDIA Controller v01.04,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a3,rightx:a4,righty:a5,start:b6,x:b2,y:b3,",
+
911  "050000007e05000009200000ffff0f00,Nintendo Switch Pro Controller,a:b1,b:b0,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:b15,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b16,rightx:a2,righty:a3,start:b6,x:b3,y:b2,sdk>=:29,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
912  "050000007e05000009200000ffff0f00,Nintendo Switch Pro Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:b15,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:b16,rightx:a2,righty:a3,start:b6,x:b2,y:b3,sdk>=:29,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
913  "050000007e05000009200000ffff0f00,Nintendo Switch Pro Controller,a:b0,b:b1,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,leftstick:b4,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b16,x:b17,y:b2,sdk<=:28,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,", /* Extremely slow in Bluetooth mode on Android */
+
914  "050000007e05000009200000ffff0f00,Nintendo Switch Pro Controller,a:b1,b:b0,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,leftstick:b4,lefttrigger:b9,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:b10,rightx:a2,righty:a3,start:b16,x:b2,y:b17,sdk<=:28,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,", /* Extremely slow in Bluetooth mode on Android */
+
915  "050000004c05000068020000dfff3f00,PS3 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,",
+
916  "050000004c050000c405000000783f00,PS4 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,",
+
917  "050000004c050000c4050000fffe3f80,PS4 Controller,a:b1,b:b17,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,leftstick:b4,lefttrigger:+a2,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:+a3,rightx:a4,righty:a5,start:b16,x:b0,y:b2,",
+
918  "050000004c050000c4050000ffff3f00,PS4 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,",
+
919  "050000004c050000cc090000fffe3f80,PS4 Controller,a:b1,b:b17,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,leftstick:b4,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:a3,rightx:a4,righty:a5,start:b16,x:b0,y:b2,",
+
920  "050000004c050000cc090000ffff3f00,PS4 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,",
+
921  "050000004c050000e60c0000fffe3f80,PS5 Controller,a:b1,b:b17,back:b15,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b3,leftstick:b4,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:a3,rightx:a4,righty:a5,start:b16,x:b0,y:b2,",
+
922  "050000004c050000e60c0000ffff3f00,PS5 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,",
+
923  "05000000f8270000bf0b0000ffff3f00,Razer Kishi,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,",
+
924  "050000003215000005070000ffff3f00,Razer Raiju Mobile,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,",
+
925  "050000003215000007070000ffff3f00,Razer Raiju Mobile,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,",
+
926  "050000003215000000090000bf7f3f00,Razer Serval,a:b0,b:b1,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,x:b2,y:b3,",
+
927  "050000004f0400000ed00000fffe3f00,ThrustMaster eSwap PRO Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,",
+
928  "050000005e0400008e02000000783f00,Xbox 360 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,",
+
929  "050000005e040000000b000000783f80,Xbox One Elite 2 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,",
+
930  "050000005e040000050b0000ffff3f00,Xbox One Elite 2 Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a6,rightx:a2,righty:a3,start:b6,x:b2,y:b3,",
+
931  "050000005e040000e002000000783f00,Xbox One S Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,",
+
932  "050000005e040000ea02000000783f00,Xbox One S Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,",
+
933  "050000005e040000fd020000ff7f3f00,Xbox One S Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,",
+
934  "050000005e040000e00200000ffe3f80,Xbox One Wireless Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b3,leftstick:b15,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b16,righttrigger:a5,rightx:a2,righty:a3,start:b10,x:b17,y:b2,",
+
935  "050000005e040000fd020000ffff3f00,Xbox One Wireless Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,",
+
936  "050000005e040000120b000000783f80,Xbox Series X Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,",
+
937  "050000005e040000130b0000ffff3f00,Xbox Series X Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,",
+
938  "050000005e04000091020000ff073f80,Xbox Wireless Controller,a:b0,b:b1,back:b4,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,", /* The DPAD doesn't seem to work on this controller on Android TV? */
+
939  "050000001727000044310000ffff3f80,XiaoMi Game Controller,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b9,leftstick:b7,lefttrigger:a7,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a6,rightx:a4,righty:a5,start:b6,x:b2,y:b3,",
+
940  "0500000083050000602000000ffe0000,iBuffalo SNES Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b15,rightshoulder:b16,start:b10,x:b2,y:b3,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
941  "0500000083050000602000000ffe0000,iBuffalo SNES Controller,a:b1,b:b0,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,leftshoulder:b15,rightshoulder:b16,start:b10,x:b3,y:b2,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
942 #endif
+
943 #ifdef SDL_JOYSTICK_MFI
+
944  "05000000ac050000010000004f066d01,*,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b4,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a5,rightx:a3,righty:a4,x:b2,y:b3,",
+
945  "05000000ac05000001000000cf076d01,*,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,x:b2,y:b3,",
+
946  "05000000ac05000001000000df076d01,*,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b2,y:b3,",
+
947  "05000000ac05000001000000ff076d01,*,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b3,",
+
948  "05000000ac050000020000004f066d02,*,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b6,leftshoulder:b4,rightshoulder:b5,x:b2,y:b3,",
+
949  "050000008a35000003010000ff070000,Backbone One,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b3,",
+
950  "050000008a35000004010000ff070000,Backbone One,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b3,",
+
951  "050000007e050000062000000f060000,Nintendo Switch Joy-Con (L),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b2,b:b0,leftshoulder:b4,rightshoulder:b5,x:b3,y:b1,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
952  "050000007e050000062000000f060000,Nintendo Switch Joy-Con (L),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b2,leftshoulder:b4,rightshoulder:b5,x:b1,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
953  "050000007e050000062000004f060000,Nintendo Switch Joy-Con (L),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b2,b:b0,guide:b6,leftshoulder:b4,rightshoulder:b5,x:b3,y:b1,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
954  "050000007e050000062000004f060000,Nintendo Switch Joy-Con (L),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b2,guide:b6,leftshoulder:b4,rightshoulder:b5,x:b1,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
955  "050000007e05000008200000df070000,Nintendo Switch Joy-Con (L/R),a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b2,y:b3,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
956  "050000007e05000008200000df070000,Nintendo Switch Joy-Con (L/R),a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
957  "050000007e050000072000000f060000,Nintendo Switch Joy-Con (R),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b2,b:b0,leftshoulder:b4,rightshoulder:b5,x:b3,y:b1,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
958  "050000007e050000072000000f060000,Nintendo Switch Joy-Con (R),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b2,leftshoulder:b4,rightshoulder:b5,x:b1,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
959  "050000007e050000072000004f060000,Nintendo Switch Joy-Con (R),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b2,b:b0,guide:b6,leftshoulder:b4,rightshoulder:b5,x:b3,y:b1,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
960  "050000007e050000072000004f060000,Nintendo Switch Joy-Con (R),+leftx:h0.2,+lefty:h0.4,-leftx:h0.8,-lefty:h0.1,a:b0,b:b2,guide:b6,leftshoulder:b4,rightshoulder:b5,x:b1,y:b3,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
961  "050000007e05000009200000df870000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,misc1:b10,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b2,y:b3,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
962  "050000007e05000009200000df870000,Nintendo Switch Pro Controller,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,misc1:b10,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
963  "050000007e05000009200000ff870000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b3,hint:SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
964  "050000007e05000009200000ff870000,Nintendo Switch Pro Controller,a:b1,b:b0,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b3,y:b2,hint:!SDL_GAMECONTROLLER_USE_BUTTON_LABELS:=1,",
+
965  "050000004c050000cc090000df070000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b2,y:b3,",
+
966  "050000004c050000cc090000df870001,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b2,y:b3,",
+
967  "050000004c050000cc090000ff070000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b3,",
+
968  "050000004c050000cc090000ff870001,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,touchpad:b11,x:b2,y:b3,",
+
969  "050000004c050000e60c0000df870000,PS5 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b9,touchpad:b10,x:b2,y:b3,",
+
970  "050000004c050000e60c0000ff870000,PS5 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,touchpad:b11,x:b2,y:b3,",
+
971  "05000000ac0500000300000043006d03,Remote,a:b0,b:b2,leftx:a0,lefty:a1,",
+
972  "050000005e040000050b0000df070001,Xbox Elite Wireless Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b10,paddle2:b12,paddle3:b11,paddle4:b13,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b2,y:b3,",
+
973  "050000005e040000050b0000ff070001,Xbox Elite Wireless Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,paddle1:b11,paddle2:b13,paddle3:b12,paddle4:b14,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b3,",
+
974  "050000005e040000130b0000df870001,Xbox Series X Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,misc1:b10,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b2,y:b3,",
+
975  "050000005e040000130b0000ff870001,Xbox Series X Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,misc1:b11,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b3,",
+
976  "050000005e040000e0020000df070000,Xbox Wireless Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b2,y:b3,",
+
977  "050000005e040000e0020000ff070000,Xbox Wireless Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b10,x:b2,y:b3,",
+
978 #endif
+
979 #ifdef SDL_JOYSTICK_EMSCRIPTEN
+
980  "default,Standard Gamepad,a:b0,b:b1,back:b8,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,guide:b16,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,",
+
981 #endif
+
982 #ifdef SDL_JOYSTICK_PS2
+
983  "0000000050533220436f6e74726f6c00,PS2 Controller,crc:ed87,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,",
+
984 #endif
+
985 #ifdef SDL_JOYSTICK_PSP
+
986  "00000000505350206275696c74696e00,PSP builtin joypad,crc:bb86,a:b2,b:b1,back:b10,dpdown:b6,dpleft:b7,dpright:b9,dpup:b8,leftshoulder:b4,leftx:a0,lefty:a1,rightshoulder:b5,rightx:a2,righty:a3,start:b11,x:b3,y:b0,",
+
987 #endif
+
988 #ifdef SDL_JOYSTICK_VITA
+
989  "0000000050535669746120436f6e7400,PSVita Controller,crc:d598,a:b2,b:b1,back:b10,dpdown:b6,dpleft:b7,dpright:b9,dpup:b8,leftshoulder:b4,leftstick:b14,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b15,righttrigger:a5,rightx:a2,righty:a3,start:b11,x:b3,y:b0,",
+
990 #endif
+
991 #ifdef SDL_JOYSTICK_N3DS
+
992  "000000004e696e74656e646f20334400,Nintendo 3DS,crc:3210,a:b0,b:b1,back:b2,dpdown:b7,dpleft:b5,dpright:b4,dpup:b6,leftshoulder:b9,lefttrigger:b14,leftx:a0,lefty:a1,rightshoulder:b8,righttrigger:b15,rightx:a2,righty:a3,start:b3,x:b10,y:b11,",
+
993 #endif
+
994  "hidapi,*,a:b0,b:b1,back:b4,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b5,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,",
+
995  nullptr
+
996 };
+
+ + + + diff --git a/master/_keys_8h_source.html b/master/_keys_8h_source.html new file mode 100644 index 0000000000..ea39be0d92 --- /dev/null +++ b/master/_keys_8h_source.html @@ -0,0 +1,369 @@ + + + + + + + +nCine: include/ncine/Keys.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Keys.h
+
+
+
1 #ifndef NCINE_KEYS
+
2 #define NCINE_KEYS
+
3 
+
4 #if defined(_WIN32) && defined(DELETE)
+
5  #undef DELETE
+
6 #endif
+
7 
+
8 namespace ncine {
+
9 
+
10 enum class KeySym
+
11 {
+
12  UNKNOWN = -1,
+
13 
+
14  // Common keysyms
+
15  BACKSPACE,
+
16  TAB,
+
17  RETURN,
+
18  ESCAPE,
+
19  SPACE,
+
20  QUOTE,
+
21  PLUS,
+
22  COMMA,
+
23  MINUS,
+
24  PERIOD,
+
25  SLASH,
+
26  N0,
+
27  N1,
+
28  N2,
+
29  N3,
+
30  N4,
+
31  N5,
+
32  N6,
+
33  N7,
+
34  N8,
+
35  N9,
+
36  SEMICOLON,
+
37  LEFTBRACKET,
+
38  BACKSLASH,
+
39  RIGHTBRACKET,
+
40  BACKQUOTE,
+
41 
+
42  A,
+
43  B,
+
44  C,
+
45  D,
+
46  E,
+
47  F,
+
48  G,
+
49  H,
+
50  I,
+
51  J,
+
52  K,
+
53  L,
+
54  M,
+
55  N,
+
56  O,
+
57  P,
+
58  Q,
+
59  R,
+
60  S,
+
61  T,
+
62  U,
+
63  V,
+
64  W,
+
65  X,
+
66  Y,
+
67  Z,
+
68  DELETE,
+
69 
+
70  KP0,
+
71  KP1,
+
72  KP2,
+
73  KP3,
+
74  KP4,
+
75  KP5,
+
76  KP6,
+
77  KP7,
+
78  KP8,
+
79  KP9,
+
80  KP_PERIOD,
+
81  KP_DIVIDE,
+
82  KP_MULTIPLY,
+
83  KP_MINUS,
+
84  KP_PLUS,
+
85  KP_ENTER,
+
86  KP_EQUALS,
+
87 
+
88  UP,
+
89  DOWN,
+
90  RIGHT,
+
91  LEFT,
+
92  INSERT,
+
93  HOME,
+
94  END,
+
95  PAGEUP,
+
96  PAGEDOWN,
+
97 
+
98  F1,
+
99  F2,
+
100  F3,
+
101  F4,
+
102  F5,
+
103  F6,
+
104  F7,
+
105  F8,
+
106  F9,
+
107  F10,
+
108  F11,
+
109  F12,
+
110  F13,
+
111  F14,
+
112  F15,
+
113 
+
114  NUM_LOCK,
+
115  CAPS_LOCK,
+
116  SCROLL_LOCK,
+
117  RSHIFT,
+
118  LSHIFT,
+
119  RCTRL,
+
120  LCTRL,
+
121  RALT,
+
122  LALT,
+
123  RSUPER,
+
124  LSUPER,
+
125  PRINTSCREEN,
+
126  PAUSE,
+
127  MENU,
+
128 
+
129  // SDL only keysyms
+
130  CLEAR, // Android too
+
131  EXCLAIM,
+
132  QUOTEDBL,
+
133  HASH,
+
134  DOLLAR,
+
135  AMPERSAND,
+
136  LEFTPAREN,
+
137  RIGHTPAREN,
+
138  ASTERISK,
+
139  COLON,
+
140  LESS,
+
141  EQUALS, // Android too
+
142  GREATER,
+
143  QUESTION,
+
144  AT, // Android too
+
145  CARET,
+
146  UNDERSCORE,
+
147  MODE,
+
148  APPLICATION,
+
149  HELP,
+
150  SYSREQ, // Android too
+
151  POWER, // Android too
+
152  UNDO,
+
153 
+
154  // GLFW only keysyms
+
155  WORLD1,
+
156  WORLD2,
+
157 
+
158  // Android only keysyms
+
159  SOFT_LEFT,
+
160  SOFT_RIGHT,
+
161  BACK,
+
162  CALL,
+
163  ENDCALL,
+
164  STAR,
+
165  POUND,
+
166  DPAD_CENTER,
+
167  VOLUME_UP,
+
168  VOLUME_DOWN,
+
169  CAMERA,
+
170  SYM,
+
171  EXPLORER,
+
172  ENVELOPE,
+
173  NUM,
+
174  HEADSETHOOK,
+
175  FOCUS,
+
176  NOTIFICATION,
+
177  SEARCH,
+
178  MEDIA_PLAY_PAUSE,
+
179  MEDIA_STOP,
+
180  MEDIA_NEXT,
+
181  MEDIA_PREVIOUS,
+
182  MEDIA_REWIND,
+
183  MEDIA_FAST_FORWARD,
+
184  MUTE,
+
185  PICTSYMBOLS,
+
186  SWITCH_CHARSET,
+
187  BUTTON_A,
+
188  BUTTON_B,
+
189  BUTTON_C,
+
190  BUTTON_X,
+
191  BUTTON_Y,
+
192  BUTTON_Z,
+
193  BUTTON_L1,
+
194  BUTTON_R1,
+
195  BUTTON_L2,
+
196  BUTTON_R2,
+
197  BUTTON_THUMBL,
+
198  BUTTON_THUMBR,
+
199  BUTTON_START,
+
200  BUTTON_SELECT,
+
201  BUTTON_MODE,
+
202  // From API level 13
+
203  FUNCTION_KEY,
+
204  MOVE_HOME,
+
205  MOVE_END,
+
206  FORWARD,
+
207  MEDIA_PLAY,
+
208  MEDIA_PAUSE,
+
209  MEDIA_CLOSE,
+
210  MEDIA_EJECT,
+
211  MEDIA_RECORD,
+
212  KP_COMMA,
+
213  KP_LEFTPAREN,
+
214  KP_RIGHTPAREN,
+
215  VOLUME_MUTE,
+
216  INFO,
+
217  CHANNEL_UP,
+
218  CHANNEL_DOWN,
+
219  ZOOM_IN,
+
220  ZOOM_OUT,
+
221  TV,
+
222  WINDOW,
+
223  GUIDE,
+
224  DVR,
+
225  BOOKMARK,
+
226  CAPTIONS,
+
227  SETTINGS,
+
228  TV_POWER,
+
229  TV_INPUT,
+
230  STB_POWER,
+
231  STB_INPUT,
+
232  AVR_POWER,
+
233  AVR_INPUT,
+
234  PROG_RED,
+
235  PROG_GREEN,
+
236  PROG_YELLOW,
+
237  PROG_BLUE,
+
238  APP_SWITCH,
+
239  BUTTON_1,
+
240  BUTTON_2,
+
241  BUTTON_3,
+
242  BUTTON_4,
+
243  BUTTON_5,
+
244  BUTTON_6,
+
245  BUTTON_7,
+
246  BUTTON_8,
+
247  BUTTON_9,
+
248  BUTTON_10,
+
249  BUTTON_11,
+
250  BUTTON_12,
+
251  BUTTON_13,
+
252  BUTTON_14,
+
253  BUTTON_15,
+
254  BUTTON_16,
+
255 
+
256  COUNT
+
257 };
+
258 
+
259 enum KeyMod
+
260 {
+
261  // clang-format off
+
262  NONE = 0x0000,
+
263 
+
264  LSHIFT = 0x0001,
+
265  RSHIFT = 0x0002,
+
266  LCTRL = 0x0040,
+
267  RCTRL = 0x0080,
+
268  LALT = 0x0100,
+
269  RALT = 0x0200,
+
270  LSUPER = 0x0400,
+
271  RSUPER = 0x0800,
+
272  NUM = 0x1000,
+
273  CAPS = 0x2000,
+
274  MODE = 0x4000,
+
275  SYM = 0x8000,
+
276 
+
277  CTRL = (LCTRL | RCTRL),
+
278  SHIFT = (LSHIFT | RSHIFT),
+
279  ALT = (LALT | RALT),
+
280  SUPER = (LSUPER | RSUPER),
+
281 
+
282  COUNT
+
283  // clang-format on
+
284 };
+
285 
+
286 }
+
287 
+
288 #endif
+
+ + + + diff --git a/master/_linear_allocator_8h_source.html b/master/_linear_allocator_8h_source.html new file mode 100644 index 0000000000..9824bbb88c --- /dev/null +++ b/master/_linear_allocator_8h_source.html @@ -0,0 +1,119 @@ + + + + + + + +nCine: include/nctl/LinearAllocator.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
LinearAllocator.h
+
+
+
1 #ifndef CLASS_NCTL_LINEARALLOCATOR
+
2 #define CLASS_NCTL_LINEARALLOCATOR
+
3 
+
4 #include <nctl/IAllocator.h>
+
5 
+
6 namespace nctl {
+
7 
+
9 class DLL_PUBLIC LinearAllocator : public IAllocator
+
10 {
+
11  public:
+ +
13  : LinearAllocator("Linear") {}
+
14  explicit LinearAllocator(const char *name);
+
15  LinearAllocator(size_t size, void *base)
+
16  : LinearAllocator("Linear", size, base) {}
+
17  LinearAllocator(const char *name, size_t size, void *base);
+
18  ~LinearAllocator();
+
19 
+
20  void init(size_t size, void *base);
+
22  void clear();
+
23  inline const void *current() const { return current_; }
+
24 
+
25  private:
+
26  void *current_;
+
27 
+
28  LinearAllocator(const LinearAllocator &) = delete;
+
29  LinearAllocator &operator=(const LinearAllocator &) = delete;
+
30 
+
31  static void *allocateImpl(IAllocator *allocator, size_t size, uint8_t alignment);
+
32  static void *reallocateImpl(IAllocator *allocator, void *ptr, size_t size, uint8_t alignment, size_t &oldSize);
+
33  static void deallocateImpl(IAllocator *allocator, void *ptr);
+
34 };
+
35 
+
36 }
+
37 
+
38 #endif
+
The allocator interface.
Definition: IAllocator.h:18
+
A linear allocator.
Definition: LinearAllocator.h:10
+
+ + + + diff --git a/master/_list_8h_source.html b/master/_list_8h_source.html new file mode 100644 index 0000000000..fc783a5ea7 --- /dev/null +++ b/master/_list_8h_source.html @@ -0,0 +1,706 @@ + + + + + + + +nCine: include/nctl/List.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
List.h
+
+
+
1 #ifndef CLASS_NCTL_LIST
+
2 #define CLASS_NCTL_LIST
+
3 
+
4 #include <ncine/common_macros.h>
+
5 #include "ListIterator.h"
+
6 #include "ReverseIterator.h"
+
7 #include "utility.h"
+
8 
+
9 #include <ncine/config.h>
+
10 #if NCINE_WITH_ALLOCATORS
+
11  #include "AllocManager.h"
+
12  #include "IAllocator.h"
+
13 #endif
+
14 
+
15 namespace nctl {
+
16 
+
17 template <class T> class List;
+
18 
+ +
21 {
+
22  public:
+ + +
27 
+
28  protected:
+
29  BaseListNode()
+
30  : previous_(this), next_(this) {}
+
31 
+
32  BaseListNode(BaseListNode *previous, BaseListNode *next)
+
33  : previous_(previous), next_(next) {}
+
34 
+
35  template <class T>
+
36  friend class List;
+
37 };
+
38 
+
40 template <class T>
+
41 class ListNode : public BaseListNode
+
42 {
+
43  public:
+
45  T data_;
+
46 
+
47  private:
+
48  ListNode(BaseListNode *previous, BaseListNode *next, const T &data)
+
49  : BaseListNode(previous, next), data_(data) {}
+
50  ListNode(BaseListNode *previous, BaseListNode *next, T &&data)
+
51  : BaseListNode(previous, next), data_(nctl::move(data)) {}
+
52  template <typename... Args>
+
53  ListNode(BaseListNode *previous, BaseListNode *next, Args &&... args)
+
54  : BaseListNode(previous, next), data_(nctl::forward<Args>(args)...) {}
+
55 
+
56  friend class List<T>;
+
57 #if NCINE_WITH_ALLOCATORS
+
58  friend struct detail::allocHelpers<false>;
+
59 #endif
+
60 };
+
61 
+
63 template <class T>
+
64 class List
+
65 {
+
66  public:
+ + + + +
75 
+
76 #if !NCINE_WITH_ALLOCATORS
+
77  List()
+
78  : size_(0) {}
+
79 #else
+
80  List()
+
81  : List(theDefaultAllocator()) {}
+
82 
+
83  explicit List(IAllocator &alloc)
+
84  : alloc_(alloc), size_(0) {}
+
85 #endif
+
86  ~List() { clear(); }
+
87 
+
89  List(const List &other);
+
91  List(List &&other);
+
93  List &operator=(const List &other);
+
95  List &operator=(List &&other);
+
96 
+
98  inline void swap(List &first, List &second)
+
99  {
+
100 #if NCINE_WITH_ALLOCATORS
+
101  nctl::swap(first.alloc_, second.alloc_);
+
102 #endif
+
103  nctl::swap(first.size_, second.size_);
+
104  nctl::swap(first.sentinel_.previous_, second.sentinel_.previous_);
+
105  nctl::swap(first.sentinel_.next_, second.sentinel_.next_);
+
106  }
+
107 
+
109  inline Iterator begin() { return Iterator(static_cast<ListNode<T> *>(sentinel_.next_)); }
+
111  inline ReverseIterator rBegin() { return ReverseIterator(Iterator(static_cast<ListNode<T> *>(sentinel_.previous_))); }
+
113  inline Iterator end() { return Iterator(static_cast<ListNode<T> *>(&sentinel_)); }
+
115  inline ReverseIterator rEnd() { return ReverseIterator(end()); }
+
116 
+
118  inline ConstIterator begin() const { return ConstIterator(static_cast<ListNode<T> *>(sentinel_.next_)); }
+
120  inline ConstReverseIterator rBegin() const { return ConstReverseIterator(ConstIterator(static_cast<ListNode<T> *>(sentinel_.previous_))); }
+
122  inline ConstIterator end() const { return ConstIterator(static_cast<ListNode<T> *>(const_cast<BaseListNode *>(&sentinel_))); }
+
124  inline ConstReverseIterator rEnd() const { return ConstReverseIterator(end()); }
+
125 
+
127  inline ConstIterator cBegin() const { return ConstIterator(static_cast<ListNode<T> *>(sentinel_.next_)); }
+
129  inline ConstReverseIterator crBegin() const { return ConstReverseIterator(ConstIterator(static_cast<ListNode<T> *>(sentinel_.previous_))); }
+
131  inline ConstIterator cEnd() const { return ConstIterator(static_cast<ListNode<T> *>(const_cast<BaseListNode *>(&sentinel_))); }
+
133  inline ConstReverseIterator crEnd() const { return ConstReverseIterator(end()); }
+
134 
+
136  inline bool isEmpty() const { return (sentinel_.next_ == &sentinel_); }
+
138  inline unsigned int size() const { return size_; }
+
140  void clear();
+
142  const T &front() const;
+
144  T &front();
+
146  const T &back() const;
+
148  T &back();
+
150  inline void pushFront(const T &element) { insertBeforeNode(static_cast<ListNode<T> *>(sentinel_.next_), element); }
+
152  inline void pushFront(T &&element) { insertBeforeNode(static_cast<ListNode<T> *>(sentinel_.next_), nctl::move(element)); }
+
154  template <typename... Args> void emplaceFront(Args &&... args) { emplaceBeforeNode(static_cast<ListNode<T> *>(sentinel_.next_), nctl::forward<Args>(args)...); }
+
156  inline void pushBack(const T &element) { insertAfterNode(static_cast<ListNode<T> *>(sentinel_.previous_), element); }
+
158  inline void pushBack(T &&element) { insertAfterNode(static_cast<ListNode<T> *>(sentinel_.previous_), nctl::move(element)); }
+
160  template <typename... Args> void emplaceBack(Args &&... args) { emplaceAfterNode(static_cast<ListNode<T> *>(sentinel_.previous_), nctl::forward<Args>(args)...); }
+
162  inline void popFront() { removeNode(sentinel_.next_); }
+
164  inline void popBack() { removeNode(sentinel_.previous_); }
+
166  ConstIterator insertAfter(const Iterator position, const T &element);
+
168  ConstIterator insertAfter(const Iterator position, T &&element);
+
170  template <typename... Args> ConstIterator emplaceAfter(const Iterator position, Args &&... args);
+
172  ConstIterator insertBefore(const Iterator position, const T &element);
+
174  ConstIterator insertBefore(const Iterator position, T &&element);
+
176  template <typename... Args> ConstIterator emplaceBefore(const Iterator position, Args &&... args);
+
178  ConstIterator insert(const Iterator position, Iterator first, const Iterator last);
+ + +
184  void remove(const T &element);
+
186  template <class Predicate>
+
187  void removeIf(Predicate pred);
+
189  void splice(Iterator position, List &source);
+
191  void splice(Iterator position, List &source, Iterator it);
+
193  void splice(Iterator position, List &source, Iterator first, Iterator last);
+
194 
+
195  private:
+
196 #if NCINE_WITH_ALLOCATORS
+
198  IAllocator &alloc_;
+
199 #endif
+
201  unsigned int size_;
+
203  BaseListNode sentinel_;
+
204 
+
206  ListNode<T> *insertAfterNode(ListNode<T> *node, const T &element);
+
208  ListNode<T> *insertAfterNode(ListNode<T> *node, T &&element);
+
210  template <typename... Args> ListNode<T> *emplaceAfterNode(ListNode<T> *node, Args &&... args);
+
212  ListNode<T> *insertBeforeNode(ListNode<T> *node, const T &element);
+
214  ListNode<T> *insertBeforeNode(ListNode<T> *node, T &&element);
+
216  template <typename... Args> ListNode<T> *emplaceBeforeNode(ListNode<T> *node, Args &&... args);
+
218  ListNode<T> *removeNode(BaseListNode *node);
+
220  ListNode<T> *removeRange(ListNode<T> *firstNode, ListNode<T> *lastNode);
+
221 };
+
222 
+
223 template <class T>
+
224 List<T>::List(const List<T> &other)
+
225  :
+
226 #if NCINE_WITH_ALLOCATORS
+
227  alloc_(other.alloc_),
+
228 #endif
+
229  size_(0)
+
230 {
+
231  for (List<T>::ConstIterator i = other.begin(); i != other.end(); ++i)
+
232  pushBack(*i);
+
233 }
+
234 
+
235 template <class T>
+ +
237  :
+
238 #if NCINE_WITH_ALLOCATORS
+
239  alloc_(other.alloc_),
+
240 #endif
+
241  size_(other.size_)
+
242 {
+
243  if (other.size_ > 0)
+
244  {
+
245  sentinel_.previous_ = other.sentinel_.previous_;
+
246  sentinel_.next_ = other.sentinel_.next_;
+
247  sentinel_.previous_->next_ = &sentinel_;
+
248  sentinel_.next_->previous_ = &sentinel_;
+
249 
+
250  other.size_ = 0;
+
251  other.sentinel_.previous_ = &other.sentinel_;
+
252  other.sentinel_.next_ = &other.sentinel_;
+
253  }
+
254 }
+
255 
+
256 template <class T>
+ +
258 {
+
259  if (this != &other)
+
260  {
+
261  clear();
+
262  for (List<T>::ConstIterator i = other.begin(); i != other.end(); ++i)
+
263  pushBack(*i);
+
264  }
+
265 
+
266  return *this;
+
267 }
+
268 
+
269 template <class T>
+ +
271 {
+
272  if (this == &other)
+
273  return *this;
+
274 
+
275  clear();
+
276  if (size_ == 0)
+
277  {
+
278  sentinel_.previous_ = &other.sentinel_;
+
279  sentinel_.next_ = &other.sentinel_;
+
280  }
+
281  if (other.size_ == 0)
+
282  {
+
283  other.sentinel_.previous_ = &sentinel_;
+
284  other.sentinel_.next_ = &sentinel_;
+
285  }
+
286 
+
287  swap(*this, other);
+
288 
+
289  sentinel_.previous_->next_ = &sentinel_;
+
290  sentinel_.next_->previous_ = &sentinel_;
+
291  other.sentinel_.previous_->next_ = &other.sentinel_;
+
292  other.sentinel_.next_->previous_ = &other.sentinel_;
+
293 
+
294  return *this;
+
295 }
+
296 
+
297 template <class T>
+ +
299 {
+
300  BaseListNode *nextNode = sentinel_.next_;
+
301 
+
302  while (nextNode != &sentinel_)
+
303  {
+
304  nextNode = nextNode->next_;
+
305  // Cast is needed to prevent memory leaking
+
306 #if !NCINE_WITH_ALLOCATORS
+
307  delete static_cast<ListNode<T> *>(sentinel_.next_);
+
308 #else
+
309  alloc_.deleteObject(static_cast<ListNode<T> *>(sentinel_.next_));
+
310 #endif
+
311  sentinel_.next_ = nextNode;
+
312  }
+
313 
+
314  sentinel_.previous_ = &sentinel_;
+
315  size_ = 0;
+
316 }
+
317 
+
318 template <class T>
+
319 const T &List<T>::front() const
+
320 {
+
321  FATAL_ASSERT(sentinel_.next_ != &sentinel_);
+
322  return static_cast<ListNode<T> *>(sentinel_.next_)->data_;
+
323 }
+
324 
+
325 template <class T>
+ +
327 {
+
328  FATAL_ASSERT(sentinel_.next_ != &sentinel_);
+
329  return static_cast<ListNode<T> *>(sentinel_.next_)->data_;
+
330 }
+
331 
+
332 template <class T>
+
333 const T &List<T>::back() const
+
334 {
+
335  FATAL_ASSERT(sentinel_.previous_ != &sentinel_);
+
336  return static_cast<ListNode<T> *>(sentinel_.previous_)->data_;
+
337 }
+
338 
+
339 template <class T>
+ +
341 {
+
342  FATAL_ASSERT(sentinel_.previous_ != &sentinel_);
+
343  return static_cast<ListNode<T> *>(sentinel_.previous_)->data_;
+
344 }
+
345 
+
346 template <class T>
+
347 typename List<T>::ConstIterator List<T>::insertAfter(const Iterator position, const T &element)
+
348 {
+
349  return ConstIterator(insertAfterNode(position.node_, element));
+
350 }
+
351 
+
352 template <class T>
+
353 typename List<T>::ConstIterator List<T>::insertAfter(const Iterator position, T &&element)
+
354 {
+
355  return ConstIterator(insertAfterNode(position.node_, nctl::move(element)));
+
356 }
+
357 
+
358 template <class T>
+
359 template <typename... Args>
+
360 typename List<T>::ConstIterator List<T>::emplaceAfter(const Iterator position, Args &&... args)
+
361 {
+
362  return ConstIterator(emplaceAfterNode(position.node_, nctl::forward<Args>(args)...));
+
363 }
+
364 
+
365 template <class T>
+
366 typename List<T>::ConstIterator List<T>::insertBefore(const Iterator position, const T &element)
+
367 {
+
368  return ConstIterator(insertBeforeNode(position.node_, element));
+
369 }
+
370 
+
371 template <class T>
+
372 typename List<T>::ConstIterator List<T>::insertBefore(const Iterator position, T &&element)
+
373 {
+
374  return ConstIterator(insertBeforeNode(position.node_, nctl::move(element)));
+
375 }
+
376 
+
377 template <class T>
+
378 template <typename... Args>
+
379 typename List<T>::ConstIterator List<T>::emplaceBefore(const Iterator position, Args &&... args)
+
380 {
+
381  return ConstIterator(emplaceBeforeNode(position.node_, nctl::forward<Args>(args)...));
+
382 }
+
383 
+
384 template <class T>
+
385 typename List<T>::ConstIterator List<T>::insert(Iterator position, Iterator first, const Iterator last)
+
386 {
+
387  ListNode<T> *node = position.node_;
+
388  while (first != last)
+
389  {
+
390  node = insertAfterNode(node, *first);
+
391  ++first;
+
392  }
+
393 
+
394  return ConstIterator(node);
+
395 }
+
396 
+
398 template <class T>
+ +
400 {
+
401  ListNode<T> *nextNode = removeNode(position.node_);
+
402  return ConstIterator(nextNode);
+
403 }
+
404 
+
406 template <class T>
+ +
408 {
+
409  ListNode<T> *nextNode = removeRange(first.node_, last.node_);
+
410  return ConstIterator(nextNode);
+
411 }
+
412 
+
413 template <class T>
+
414 void List<T>::remove(const T &element)
+
415 {
+
416  BaseListNode *current = sentinel_.next_;
+
417 
+
418  while (current != &sentinel_)
+
419  {
+
420  ListNode<T> *dataNode = static_cast<ListNode<T> *>(current);
+
421  if (dataNode->data_ == element)
+
422  {
+
423  removeNode(dataNode);
+
424  break;
+
425  }
+
426 
+
427  current = current->next_;
+
428  }
+
429 }
+
430 
+
431 template <class T>
+
432 template <class Predicate>
+
433 void List<T>::removeIf(Predicate pred)
+
434 {
+
435  ConstIterator i = begin();
+
436  while (i != end())
+
437  {
+
438  if (pred(*i))
+
439  i = erase(i);
+
440  else
+
441  ++i;
+
442  }
+
443 }
+
444 
+
445 template <class T>
+
446 void List<T>::splice(Iterator position, List &source)
+
447 {
+
448  splice(position, source, source.begin(), source.end());
+
449 }
+
450 
+
451 template <class T>
+
452 void List<T>::splice(Iterator position, List &source, Iterator it)
+
453 {
+
454  Iterator next = it;
+
455  splice(position, source, it, ++next);
+
456 }
+
457 
+
458 template <class T>
+
459 void List<T>::splice(Iterator position, List &source, Iterator first, Iterator last)
+
460 {
+
461  // Early-out if the source list is empty
+
462  if (source.isEmpty())
+
463  return;
+
464 
+
465  BaseListNode *node = position.node_;
+
466  BaseListNode *firstNode = first.node_;
+
467 
+
468  BaseListNode *firstPrev = firstNode->previous_;
+
469  BaseListNode *lastIncludedNode = first.node_;
+
470  while (first != last)
+
471  {
+
472  lastIncludedNode = first.node_;
+
473 
+
474  ++first;
+
475  size_++;
+
476  source.size_--;
+
477  }
+
478 
+
479  // it also works if `firstPrev` is the source sentinel
+
480  firstPrev->next_ = lastIncludedNode->next_;
+
481  // it also works if `lastIncludedNode` is the source sentinel
+
482  lastIncludedNode->next_->previous_ = firstPrev;
+
483 
+
484  BaseListNode *prevNode = node->previous_;
+
485  node->previous_ = lastIncludedNode;
+
486  firstNode->previous_ = prevNode;
+
487  lastIncludedNode->next_ = node;
+
488  // it also works if `prevNode` is the sentinel
+
489  prevNode->next_ = firstNode;
+
490 }
+
491 
+
493 // PRIVATE FUNCTIONS
+
495 
+
496 template <class T>
+
497 ListNode<T> *List<T>::insertAfterNode(ListNode<T> *node, const T &element)
+
498 {
+
499 #if !NCINE_WITH_ALLOCATORS
+
500  ListNode<T> *newNode = new ListNode<T>(node, node->next_, element);
+
501 #else
+
502  ListNode<T> *newNode = alloc_.newObject<ListNode<T>>(node, node->next_, element);
+
503 #endif
+
504 
+
505  // it also works if `node->next_` is the sentinel
+
506  node->next_->previous_ = newNode;
+
507  node->next_ = newNode;
+
508  size_++;
+
509 
+
510  return newNode;
+
511 }
+
512 
+
513 template <class T>
+
514 ListNode<T> *List<T>::insertAfterNode(ListNode<T> *node, T &&element)
+
515 {
+
516 #if !NCINE_WITH_ALLOCATORS
+
517  ListNode<T> *newNode = new ListNode<T>(node, node->next_, nctl::move(element));
+
518 #else
+
519  ListNode<T> *newNode = alloc_.newObject<ListNode<T>>(node, node->next_, nctl::move(element));
+
520 #endif
+
521 
+
522  // it also works if `node->next_` is the sentinel
+
523  node->next_->previous_ = newNode;
+
524  node->next_ = newNode;
+
525  size_++;
+
526 
+
527  return newNode;
+
528 }
+
529 
+
530 template <class T>
+
531 template <typename... Args>
+
532 ListNode<T> *List<T>::emplaceAfterNode(ListNode<T> *node, Args &&... args)
+
533 {
+
534 #if !NCINE_WITH_ALLOCATORS
+
535  ListNode<T> *newNode = new ListNode<T>(node, node->next_, nctl::forward<Args>(args)...);
+
536 #else
+
537  ListNode<T> *newNode = alloc_.newObject<ListNode<T>>(node, node->next_, nctl::forward<Args>(args)...);
+
538 #endif
+
539 
+
540  // it also works if `node->next_` is the sentinel
+
541  node->next_->previous_ = newNode;
+
542  node->next_ = newNode;
+
543  size_++;
+
544 
+
545  return newNode;
+
546 }
+
547 
+
548 template <class T>
+
549 ListNode<T> *List<T>::insertBeforeNode(ListNode<T> *node, const T &element)
+
550 {
+
551 #if !NCINE_WITH_ALLOCATORS
+
552  ListNode<T> *newNode = new ListNode<T>(node->previous_, node, element);
+
553 #else
+
554  ListNode<T> *newNode = alloc_.newObject<ListNode<T>>(node->previous_, node, element);
+
555 #endif
+
556 
+
557  // it also works if `node->previous_` is the sentinel
+
558  node->previous_->next_ = newNode;
+
559  node->previous_ = newNode;
+
560  size_++;
+
561 
+
562  return newNode;
+
563 }
+
564 
+
565 template <class T>
+
566 ListNode<T> *List<T>::insertBeforeNode(ListNode<T> *node, T &&element)
+
567 {
+
568 #if !NCINE_WITH_ALLOCATORS
+
569  ListNode<T> *newNode = new ListNode<T>(node->previous_, node, nctl::move(element));
+
570 #else
+
571  ListNode<T> *newNode = alloc_.newObject<ListNode<T>>(node->previous_, node, nctl::move(element));
+
572 #endif
+
573 
+
574  // it also works if `node->previous_` is the sentinel
+
575  node->previous_->next_ = newNode;
+
576  node->previous_ = newNode;
+
577  size_++;
+
578 
+
579  return newNode;
+
580 }
+
581 
+
582 template <class T>
+
583 template <typename... Args>
+
584 ListNode<T> *List<T>::emplaceBeforeNode(ListNode<T> *node, Args &&... args)
+
585 {
+
586 #if !NCINE_WITH_ALLOCATORS
+
587  ListNode<T> *newNode = new ListNode<T>(node->previous_, node, nctl::forward<Args>(args)...);
+
588 #else
+
589  ListNode<T> *newNode = alloc_.newObject<ListNode<T>>(node->previous_, node, nctl::forward<Args>(args)...);
+
590 #endif
+
591 
+
592  // it also works if `node->previous_` is the sentinel
+
593  node->previous_->next_ = newNode;
+
594  node->previous_ = newNode;
+
595  size_++;
+
596 
+
597  return newNode;
+
598 }
+
599 
+
600 template <class T>
+
601 ListNode<T> *List<T>::removeNode(BaseListNode *node)
+
602 {
+
603  ListNode<T> *firstNode = static_cast<ListNode<T> *>(node);
+
604  ListNode<T> *lastNode = static_cast<ListNode<T> *>(node->next_);
+
605  return removeRange(firstNode, lastNode);
+
606 }
+
607 
+
608 template <class T>
+
609 ListNode<T> *List<T>::removeRange(ListNode<T> *firstNode, ListNode<T> *lastNode)
+
610 {
+
611  BaseListNode *previous = firstNode->previous_;
+
612  BaseListNode *next = &sentinel_;
+
613  BaseListNode *current = firstNode;
+
614  while (current != lastNode)
+
615  {
+
616  next = current->next_;
+
617  // Cast is needed to prevent memory leaking
+
618 #if !NCINE_WITH_ALLOCATORS
+
619  delete static_cast<ListNode<T> *>(current);
+
620 #else
+
621  alloc_.deleteObject(static_cast<ListNode<T> *>(current));
+
622 #endif
+
623  size_--;
+
624  current = next;
+
625  }
+
626 
+
627  // if `previous` is the sentinel, the head is going to be removed
+
628  previous->next_ = lastNode;
+
629  // if `lastNode` is the sentinel, the tail is going to be removed
+
630  lastNode->previous_ = previous;
+
631 
+
632  return lastNode;
+
633 }
+
634 
+
635 }
+
636 
+
637 #endif
+
The base list node used as sentinel.
Definition: List.h:21
+
BaseListNode * previous_
A pointer to the previous node in the list.
Definition: List.h:24
+
BaseListNode * next_
A pointer to the next node in the list.
Definition: List.h:26
+
The allocator interface.
Definition: IAllocator.h:18
+
A double linked list based on templates.
Definition: List.h:65
+
ConstIterator insertBefore(const Iterator position, T &&element)
Move inserts a new element before the node pointed by the constant iterator.
Definition: List.h:372
+
ListIterator< T, false > Iterator
Iterator type.
Definition: List.h:68
+
ConstIterator cEnd() const
Returns a constant iterator to the end of the list sentinel (valid reverse traversal too)
Definition: List.h:131
+
void splice(Iterator position, List &source)
Transfers all the elements from the source list in front of position
Definition: List.h:446
+
void splice(Iterator position, List &source, Iterator first, Iterator last)
Transfers a range of elements from the source list, last not included, in front of position
Definition: List.h:459
+
List & operator=(List &&other)
Move assignment operator.
Definition: List.h:270
+
ConstIterator begin() const
Returns a constant iterator to the first element.
Definition: List.h:118
+
T & back()
Returns a reference to the last element in constant time.
Definition: List.h:340
+
void pushFront(const T &element)
Inserts a new element as the first, in constant time.
Definition: List.h:150
+
Iterator begin()
Returns an iterator to the first element.
Definition: List.h:109
+
ConstReverseIterator crBegin() const
Returns a constant reverse iterator to the last element.
Definition: List.h:129
+
ConstIterator cBegin() const
Returns a constant iterator to the first element.
Definition: List.h:127
+
List(List &&other)
Move constructor.
Definition: List.h:236
+
void swap(List &first, List &second)
Swaps two lists without copying their data.
Definition: List.h:98
+
ConstIterator erase(ConstIterator first, const ConstIterator last)
Removes the range of nodes pointed by the iterators in constant time.
Definition: List.h:407
+
ListIterator< T, true > ConstIterator
Constant iterator type.
Definition: List.h:70
+
void pushBack(T &&element)
Move inserts a new element as the last, in constant time.
Definition: List.h:158
+
Iterator end()
Returns an iterator to the end of the list sentinel (valid for reverse traversal too)
Definition: List.h:113
+
void emplaceBack(Args &&... args)
Constructs a new element as the last, in constant time.
Definition: List.h:160
+
ConstReverseIterator rBegin() const
Returns a constant reverse iterator to the last element.
Definition: List.h:120
+
ReverseIterator rEnd()
Returns a reverse iterator to the end of the list sentinel.
Definition: List.h:115
+
void pushFront(T &&element)
Move inserts a new element as the first, in constant time.
Definition: List.h:152
+
const T & front() const
Returns a constant reference to the first element in constant time.
Definition: List.h:319
+
ConstIterator insertBefore(const Iterator position, const T &element)
Inserts a new element before the node pointed by the constant iterator.
Definition: List.h:366
+
void popBack()
Removes the last element in constant time.
Definition: List.h:164
+
ConstIterator end() const
Returns a constant iterator to the end of the list sentinel (valid reverse traversal too)
Definition: List.h:122
+
void emplaceFront(Args &&... args)
Constructs a new element as the first, in constant time.
Definition: List.h:154
+
ConstReverseIterator rEnd() const
Returns a constant reverse iterator to the end of the list sentinel.
Definition: List.h:124
+
List & operator=(const List &other)
Assignment operator.
Definition: List.h:257
+
ConstReverseIterator crEnd() const
Returns a constant reverse iterator to the end of the list sentinel.
Definition: List.h:133
+
void clear()
Clears the list.
Definition: List.h:298
+
nctl::ReverseIterator< ConstIterator > ConstReverseIterator
Reverse constant iterator type.
Definition: List.h:74
+
ConstIterator insert(const Iterator position, Iterator first, const Iterator last)
Inserts new elements from a source range after the node pointed by the constant iterator,...
Definition: List.h:385
+
nctl::ReverseIterator< Iterator > ReverseIterator
Reverse iterator type.
Definition: List.h:72
+
void remove(const T &element)
Removes a specified element in linear time.
Definition: List.h:414
+
T & front()
Returns a reference to the first element in constant time.
Definition: List.h:326
+
ConstIterator emplaceAfter(const Iterator position, Args &&... args)
Constructs a new element after the node pointed by the constant iterator.
Definition: List.h:360
+
const T & back() const
Returns a constant reference to the last element in constant time.
Definition: List.h:333
+
ConstIterator insertAfter(const Iterator position, const T &element)
Inserts a new element after the node pointed by the constant iterator.
Definition: List.h:347
+
void removeIf(Predicate pred)
Removes all the elements that fulfill the condition.
Definition: List.h:433
+
List(const List &other)
Copy constructor.
Definition: List.h:224
+
void splice(Iterator position, List &source, Iterator it)
Transfers one element at it from the source list in front of position
Definition: List.h:452
+
ReverseIterator rBegin()
Returns a reverse iterator to the last element.
Definition: List.h:111
+
ConstIterator erase(ConstIterator position)
Removes the node pointed by the constant iterator in constant time.
Definition: List.h:399
+
unsigned int size() const
Returns the number of elements in the list.
Definition: List.h:138
+
bool isEmpty() const
Returns true if the list is empty.
Definition: List.h:136
+
ConstIterator insertAfter(const Iterator position, T &&element)
Move inserts a new element after the node pointed by the constant iterator.
Definition: List.h:353
+
void pushBack(const T &element)
Inserts a new element as the last, in constant time.
Definition: List.h:156
+
void popFront()
Removes the first element in constant time.
Definition: List.h:162
+
ConstIterator emplaceBefore(const Iterator position, Args &&... args)
Constructs a new element before the node pointed by the constant iterator.
Definition: List.h:379
+
A List iterator.
Definition: ListIterator.h:14
+
A list node based on templates.
Definition: List.h:42
+
T data_
Data payload for the node.
Definition: List.h:45
+
A generic reverse iterator.
Definition: ReverseIterator.h:11
+
+ + + + diff --git a/master/_list_iterator_8h_source.html b/master/_list_iterator_8h_source.html new file mode 100644 index 0000000000..b17ca48839 --- /dev/null +++ b/master/_list_iterator_8h_source.html @@ -0,0 +1,205 @@ + + + + + + + +nCine: include/nctl/ListIterator.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ListIterator.h
+
+
+
1 #ifndef CLASS_NCTL_LISTITERATOR
+
2 #define CLASS_NCTL_LISTITERATOR
+
3 
+
4 #include "iterator.h"
+
5 
+
6 namespace nctl {
+
7 
+
8 template <class T> class List;
+
9 template <class T> class ListNode;
+
10 
+
12 template <class T, bool IsConst>
+ +
14 {
+
15  public:
+ +
18 
+
19  explicit ListIterator(ListNode<T> *node)
+
20  : node_(node) {}
+
21 
+ +
24  : node_(it.node_) {}
+
25 
+
27  Reference operator*() const;
+
28 
+ + +
33 
+ + +
38 
+
40  friend inline bool operator==(const ListIterator &lhs, const ListIterator &rhs) { return lhs.node_ == rhs.node_; }
+
42  friend inline bool operator!=(const ListIterator &lhs, const ListIterator &rhs) { return lhs.node_ != rhs.node_; }
+
43 
+
44  private:
+
45  ListNode<T> *node_;
+
46 
+
47  friend class List<T>;
+
48 
+
50  friend class ListIterator<T, true>;
+
51 };
+
52 
+
54 template <class T>
+
55 struct IteratorTraits<ListIterator<T, false>>
+
56 {
+
58  using ValueType = T;
+
60  using Pointer = T *;
+
62  using Reference = T &;
+ +
65 };
+
66 
+
68 template <class T>
+
69 struct IteratorTraits<ListIterator<T, true>>
+
70 {
+
72  using ValueType = T;
+
74  using Pointer = const T *;
+
76  using Reference = const T &;
+ +
79 };
+
80 
+
81 template <class T, bool IsConst>
+ +
83 {
+
84  return node_->data_;
+
85 }
+
86 
+
87 template <class T, bool IsConst>
+ +
89 {
+
90  node_ = static_cast<ListNode<T> *>(node_->next_);
+
91  return *this;
+
92 }
+
93 
+
94 template <class T, bool IsConst>
+ +
96 {
+
97  // Create an unmodified copy to return
+
98  ListIterator iterator = *this;
+
99 
+
100  node_ = static_cast<ListNode<T> *>(node_->next_);
+
101 
+
102  return iterator;
+
103 }
+
104 
+
105 template <class T, bool IsConst>
+ +
107 {
+
108  node_ = static_cast<ListNode<T> *>(node_->previous_);
+
109  return *this;
+
110 }
+
111 
+
112 template <class T, bool IsConst>
+ +
114 {
+
115  // Create an unmodified copy to return
+
116  ListIterator iterator = *this;
+
117 
+
118  node_ = static_cast<ListNode<T> *>(node_->previous_);
+
119 
+
120  return iterator;
+
121 }
+
122 
+
123 }
+
124 
+
125 #endif
+
A double linked list based on templates.
Definition: List.h:65
+
A List iterator.
Definition: ListIterator.h:14
+
typename IteratorTraits< ListIterator >::Reference Reference
Reference type which respects iterator constness.
Definition: ListIterator.h:17
+
ListIterator & operator++()
Iterates to the next element (prefix)
Definition: ListIterator.h:88
+
ListIterator(const ListIterator< T, false > &it)
Copy constructor to implicitly convert a non constant iterator to a constant one.
Definition: ListIterator.h:23
+
ListIterator & operator--()
Iterates to the previous element (prefix)
Definition: ListIterator.h:106
+
friend bool operator!=(const ListIterator &lhs, const ListIterator &rhs)
Inequality operator.
Definition: ListIterator.h:42
+
friend bool operator==(const ListIterator &lhs, const ListIterator &rhs)
Equality operator.
Definition: ListIterator.h:40
+
Reference operator*() const
Deferencing operator.
Definition: ListIterator.h:82
+
A list node based on templates.
Definition: List.h:42
+
Dispatching tag for iterators that can move both ways, one element at a time.
Definition: iterator.h:11
+
static BidirectionalIteratorTag IteratorCategory()
Type trait for iterator category.
Definition: ListIterator.h:64
+
T & Reference
Reference to the type of the values deferenced by the iterator.
Definition: ListIterator.h:62
+
T * Pointer
Pointer to the type of the values deferenced by the iterator.
Definition: ListIterator.h:60
+
T ValueType
Type of the values deferenced by the iterator.
Definition: ListIterator.h:58
+
const T * Pointer
Pointer to the type of the values deferenced by the iterator.
Definition: ListIterator.h:74
+
static BidirectionalIteratorTag IteratorCategory()
Type trait for iterator category.
Definition: ListIterator.h:78
+
T ValueType
Type of the values deferenced by the iterator (never const)
Definition: ListIterator.h:72
+
const T & Reference
Reference to the type of the values deferenced by the iterator.
Definition: ListIterator.h:76
+
Base iterator traits structure.
Definition: iterator.h:19
+
+ + + + diff --git a/master/_lua_color_utils_8h_source.html b/master/_lua_color_utils_8h_source.html new file mode 100644 index 0000000000..501d81d5e8 --- /dev/null +++ b/master/_lua_color_utils_8h_source.html @@ -0,0 +1,110 @@ + + + + + + + +nCine: include/ncine/LuaColorUtils.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
LuaColorUtils.h
+
+
+
1 #ifndef CLASS_NCINE_LUACOLORUTILS
+
2 #define CLASS_NCINE_LUACOLORUTILS
+
3 
+
4 #include "common_macros.h"
+
5 
+
6 struct lua_State;
+
7 
+
8 namespace ncine {
+
9 
+
10 class Colorf;
+
11 
+
13 class DLL_PUBLIC LuaColorUtils
+
14 {
+
15  public:
+
16  static void push(lua_State *L, const Colorf &color);
+
17  static void pushField(lua_State *L, const char *name, const Colorf &color);
+
18  static Colorf retrieve(lua_State *L, int index, int &newIndex);
+
19  static Colorf retrieveTable(lua_State *L, int index);
+
20  static Colorf retrieveArray(lua_State *L, int index);
+
21  static Colorf retrieveParams(lua_State *L, int index);
+
22  static Colorf retrieveTableField(lua_State *L, int index, const char *name);
+
23  static Colorf retrieveArrayField(lua_State *L, int index, const char *name);
+
24 };
+
25 
+
26 }
+
27 
+
28 #endif
+
A four channels normalized float color.
Definition: Colorf.h:13
+
Lua utilities for the Color class.
Definition: LuaColorUtils.h:14
+
+ + + + diff --git a/master/_lua_debug_8h_source.html b/master/_lua_debug_8h_source.html new file mode 100644 index 0000000000..45172b9c14 --- /dev/null +++ b/master/_lua_debug_8h_source.html @@ -0,0 +1,130 @@ + + + + + + + +nCine: include/ncine/LuaDebug.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
LuaDebug.h
+
+
+
1 #ifndef CLASS_NCINE_LUADEBUG
+
2 #define CLASS_NCINE_LUADEBUG
+
3 
+
4 #include <nctl/String.h>
+
5 
+
6 struct lua_State;
+
7 
+
8 namespace ncine {
+
9 
+
10 namespace LuaUtils {
+
11  class RunInfo;
+
12 }
+
13 
+
14 namespace LuaDebug {
+
15 
+
16  DLL_PUBLIC void traceError(lua_State *L, const char *errorMsg);
+
17  DLL_PUBLIC void assert(lua_State *L, bool condition, const char *errorMsg);
+
18 
+
19  // Varargs version of `traceError` must follow non-varargs one in order to find it
+
20  template <typename... Args>
+
21  void traceError(lua_State *L, const char *fmt, Args... args)
+
22  {
+
23  nctl::String errorMsg(128);
+
24  errorMsg.format(fmt, args...);
+
25  traceError(L, errorMsg.data());
+
26  }
+
27 
+
28  template <typename... Args>
+
29  void assert(lua_State *L, bool condition, const char *fmt, Args... args)
+
30  {
+
31  if (condition == false)
+
32  traceError(L, fmt, args...);
+
33  }
+
34 
+
35  DLL_PUBLIC const char *statusToString(int status);
+
36  DLL_PUBLIC const char *statusToDescription(int status);
+
37  void printStackValue(lua_State *L, int index);
+
38 
+
39  int traceMessageHandler(lua_State *L);
+
40  int debugInfoMessageHandler(lua_State *L);
+
41 
+
42  LuaUtils::RunInfo *retrieveRunInfo(lua_State *L);
+
43  void pushRunInfo(lua_State *L, LuaUtils::RunInfo *runInfo);
+
44 }
+
45 
+
46 }
+
47 
+
48 #endif
+
A basic string class made of chars.
Definition: String.h:23
+
+ + + + diff --git a/master/_lua_i_app_event_handler_8h_source.html b/master/_lua_i_app_event_handler_8h_source.html new file mode 100644 index 0000000000..2893801010 --- /dev/null +++ b/master/_lua_i_app_event_handler_8h_source.html @@ -0,0 +1,115 @@ + + + + + + + +nCine: include/ncine/LuaIAppEventHandler.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
LuaIAppEventHandler.h
+
+
+
1 #ifndef CLASS_NCINE_LUAIAPPEVENTHANDLER
+
2 #define CLASS_NCINE_LUAIAPPEVENTHANDLER
+
3 
+
4 #include "common_defines.h"
+
5 
+
6 struct lua_State;
+
7 
+
8 namespace ncine {
+
9 
+
10 class AppConfiguration;
+
11 class Viewport;
+
12 
+
14 class DLL_PUBLIC LuaIAppEventHandler
+
15 {
+
16  public:
+
17  static void onPreInit(lua_State *L, AppConfiguration &config);
+
18  static void onInit(lua_State *L);
+
19  static void onFrameStart(lua_State *L);
+
20  static void onPostUpdate(lua_State *L);
+
21  static void onDrawViewport(lua_State *L, Viewport &viewport);
+
22  static void onFrameEnd(lua_State *L);
+
23  static void onResizeWindow(lua_State *L, int width, int height);
+
24  static void onChangeScalingFactor(lua_State *L, float factor);
+
25  static void onShutdown(lua_State *L);
+
26  static void onSuspend(lua_State *L);
+
27  static void onResume(lua_State *L);
+
28 };
+
29 
+
30 }
+
31 
+
32 #endif
+
The class storing initialization settings for an nCine application.
Definition: AppConfiguration.h:12
+
Wrapper around the IAppEventHandler class.
Definition: LuaIAppEventHandler.h:15
+
The class handling a viewport and its corresponding render target texture.
Definition: Viewport.h:22
+
+ + + + diff --git a/master/_lua_i_input_event_handler_8h_source.html b/master/_lua_i_input_event_handler_8h_source.html new file mode 100644 index 0000000000..2e086ca154 --- /dev/null +++ b/master/_lua_i_input_event_handler_8h_source.html @@ -0,0 +1,154 @@ + + + + + + + +nCine: include/ncine/LuaIInputEventHandler.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
LuaIInputEventHandler.h
+
+
+
1 #ifndef CLASS_NCINE_LUAIINPUTEVENTHANDLER
+
2 #define CLASS_NCINE_LUAIINPUTEVENTHANDLER
+
3 
+
4 #include "common_defines.h"
+
5 
+
6 struct lua_State;
+
7 
+
8 namespace ncine {
+
9 
+
10 class KeyboardEvent;
+
11 class TextInputEvent;
+
12 class MouseEvent;
+
13 class MouseState;
+
14 class ScrollEvent;
+
15 class JoyButtonEvent;
+
16 class JoyHatEvent;
+
17 class JoyAxisEvent;
+
18 class JoyMappedButtonEvent;
+
19 class JoyMappedAxisEvent;
+
20 class JoyConnectionEvent;
+
21 class TouchEvent;
+
22 class AccelerometerEvent;
+
23 
+
25 class DLL_PUBLIC LuaIInputEventHandler
+
26 {
+
27  public:
+
28  static void onKeyPressed(lua_State *L, const KeyboardEvent &event);
+
29  static void onKeyReleased(lua_State *L, const KeyboardEvent &event);
+
30  static void onTextInput(lua_State *L, const TextInputEvent &event);
+
31  static void onTouchDown(lua_State *L, const TouchEvent &event);
+
32  static void onTouchUp(lua_State *L, const TouchEvent &event);
+
33  static void onTouchMove(lua_State *L, const TouchEvent &event);
+
34  static void onPointerDown(lua_State *L, const TouchEvent &event);
+
35  static void onPointerUp(lua_State *L, const TouchEvent &event);
+
36 #ifdef __ANDROID__
+
37  static void onAcceleration(lua_State *L, const AccelerometerEvent &event);
+
38 #endif
+
39  static void onMouseButtonPressed(lua_State *L, const MouseEvent &event);
+
40  static void onMouseButtonReleased(lua_State *L, const MouseEvent &event);
+
41  static void onMouseMoved(lua_State *L, const MouseState &state);
+
42  static void onScrollInput(lua_State *L, const ScrollEvent &event);
+
43 
+
44  static void onJoyButtonPressed(lua_State *L, const JoyButtonEvent &event);
+
45  static void onJoyButtonReleased(lua_State *L, const JoyButtonEvent &event);
+
46  static void onJoyHatMoved(lua_State *L, const JoyHatEvent &event);
+
47  static void onJoyAxisMoved(lua_State *L, const JoyAxisEvent &event);
+
48 
+
49  static void onJoyMappedButtonPressed(lua_State *L, const JoyMappedButtonEvent &event);
+
50  static void onJoyMappedButtonReleased(lua_State *L, const JoyMappedButtonEvent &event);
+
51  static void onJoyMappedAxisMoved(lua_State *L, const JoyMappedAxisEvent &event);
+
52 
+
53  static void onJoyConnected(lua_State *L, const JoyConnectionEvent &event);
+
54  static void onJoyDisconnected(lua_State *L, const JoyConnectionEvent &event);
+
55 
+
56  static bool onQuitRequest(lua_State *L);
+
57 };
+
58 
+
59 }
+
60 
+
61 #endif
+
Information about a joystick axis event.
Definition: InputEvents.h:205
+
Information about a joystick button event.
Definition: InputEvents.h:166
+
Information about a joystick connection event.
Definition: InputEvents.h:219
+
Information about a joystick hat event.
Definition: InputEvents.h:193
+
Information about a joystick mapped axis event.
Definition: InputEvents.h:290
+
Information about a joystick mapped button event.
Definition: InputEvents.h:280
+
Information about a keyboard event.
Definition: InputEvents.h:107
+
Wrapper around the IInputEventHandler class.
Definition: LuaIInputEventHandler.h:26
+
Information about a mouse event.
Definition: InputEvents.h:73
+
Information about the mouse state.
Definition: InputEvents.h:57
+
Information about a scroll event (mouse wheel, touchpad gesture, etc.)
Definition: InputEvents.h:89
+
Information about a text input event.
Definition: InputEvents.h:122
+
Information about a screen touch event.
Definition: InputEvents.h:11
+
+ + + + diff --git a/master/_lua_rect_utils_8h_source.html b/master/_lua_rect_utils_8h_source.html new file mode 100644 index 0000000000..80440acc1a --- /dev/null +++ b/master/_lua_rect_utils_8h_source.html @@ -0,0 +1,232 @@ + + + + + + + +nCine: include/ncine/LuaRectUtils.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
LuaRectUtils.h
+
+
+
1 #ifndef CLASS_NCINE_LUARECTUTILS
+
2 #define CLASS_NCINE_LUARECTUTILS
+
3 
+
4 #include "LuaUtils.h"
+
5 #include "Rect.h"
+
6 
+
7 namespace ncine {
+
8 
+
9 namespace LuaNames {
+
10 namespace Rect {
+
11  static const char *x = "x";
+
12  static const char *y = "y";
+
13  static const char *w = "w";
+
14  static const char *h = "h";
+
15 }}
+
16 
+
18 template <class T>
+ +
20 {
+
21  public:
+
22  static void push(lua_State *L, const Rect<T> &rect);
+
23  static void pushField(lua_State *L, const char *name, const Rect<T> &rect);
+
24  static Rect<T> retrieve(lua_State *L, int index, int &newIndex);
+
25  static Rect<T> retrieveTable(lua_State *L, int index);
+
26  static Rect<T> retrieveArray(lua_State *L, int index);
+
27  static Rect<T> retrieveParams(lua_State *L, int index);
+
28  static Rect<T> retrieveTableField(lua_State *L, int index, const char *name);
+
29  static Rect<T> retrieveArrayField(lua_State *L, int index, const char *name);
+
30 };
+
31 
+ + +
34 
+
35 template <class T>
+
36 void LuaRectUtils<T>::push(lua_State *L, const Rect<T> &rect)
+
37 {
+
38  LuaUtils::createTable(L, 0, 4);
+
39  LuaUtils::pushField(L, LuaNames::Rect::x, rect.x);
+
40  LuaUtils::pushField(L, LuaNames::Rect::y, rect.y);
+
41  LuaUtils::pushField(L, LuaNames::Rect::w, rect.w);
+
42  LuaUtils::pushField(L, LuaNames::Rect::h, rect.h);
+
43 }
+
44 
+
45 template <class T>
+
46 void LuaRectUtils<T>::pushField(lua_State *L, const char *name, const Rect<T> &rect)
+
47 {
+
48  push(L, rect);
+
49  LuaUtils::setField(L, -2, name);
+
50 }
+
51 
+
52 template <class T>
+
53 Rect<T> LuaRectUtils<T>::retrieve(lua_State *L, int index, int &newIndex)
+
54 {
+
55  if (LuaUtils::isTable(L, index))
+
56  {
+
57  newIndex = index;
+
58  return retrieveTable(L, index);
+
59  }
+
60  else
+
61  {
+
62  newIndex = index - 3;
+
63  return retrieveParams(L, newIndex);
+
64  }
+
65 }
+
66 
+
67 template <class T>
+
68 Rect<T> LuaRectUtils<T>::retrieveTable(lua_State *L, int index)
+
69 {
+
70  const T x = LuaUtils::retrieveField<T>(L, index, LuaNames::Rect::x);
+
71  const T y = LuaUtils::retrieveField<T>(L, index, LuaNames::Rect::y);
+
72  const T w = LuaUtils::retrieveField<T>(L, index, LuaNames::Rect::w);
+
73  const T h = LuaUtils::retrieveField<T>(L, index, LuaNames::Rect::h);
+
74  return Rect<T>(x, y, w, h);
+
75 }
+
76 
+
77 template <class T>
+
78 Rect<T> LuaRectUtils<T>::retrieveArray(lua_State *L, int index)
+
79 {
+
80  LuaUtils::rawGeti(L, index, 1);
+
81  const T x = LuaUtils::retrieve<T>(L, -1);
+
82  LuaUtils::pop(L);
+
83 
+
84  LuaUtils::rawGeti(L, index, 2);
+
85  const T y = LuaUtils::retrieve<T>(L, -1);
+
86  LuaUtils::pop(L);
+
87 
+
88  LuaUtils::rawGeti(L, index, 3);
+
89  const T w = LuaUtils::retrieve<T>(L, -1);
+
90  LuaUtils::pop(L);
+
91 
+
92  LuaUtils::rawGeti(L, index, 4);
+
93  const T h = LuaUtils::retrieve<T>(L, -1);
+
94  LuaUtils::pop(L);
+
95 
+
96  return Rect<T>(x, y, w, h);
+
97 }
+
98 
+
99 template <class T>
+
100 Rect<T> LuaRectUtils<T>::retrieveParams(lua_State *L, int index)
+
101 {
+
102  const T x = LuaUtils::retrieve<T>(L, index);
+
103  const T y = LuaUtils::retrieve<T>(L, index + 1);
+
104  const T w = LuaUtils::retrieve<T>(L, index + 2);
+
105  const T h = LuaUtils::retrieve<T>(L, index + 3);
+
106  return Rect<T>(x, y, w, h);
+
107 }
+
108 
+
109 template <class T>
+
110 Rect<T> LuaRectUtils<T>::retrieveTableField(lua_State *L, int index, const char *name)
+
111 {
+
112  LuaUtils::retrieveFieldTable(L, index, name);
+
113  const T x = LuaUtils::retrieveField<T>(L, -1, LuaNames::Rect::x);
+
114  const T y = LuaUtils::retrieveField<T>(L, -1, LuaNames::Rect::y);
+
115  const T w = LuaUtils::retrieveField<T>(L, -1, LuaNames::Rect::w);
+
116  const T h = LuaUtils::retrieveField<T>(L, -1, LuaNames::Rect::h);
+
117  LuaUtils::pop(L);
+
118 
+
119  return Rect<T>(x, y, w, h);
+
120 }
+
121 
+
122 template <class T>
+
123 Rect<T> LuaRectUtils<T>::retrieveArrayField(lua_State *L, int index, const char *name)
+
124 {
+
125  LuaUtils::retrieveFieldTable(L, index, name);
+
126 
+
127  LuaUtils::rawGeti(L, -1, 1);
+
128  const T x = LuaUtils::retrieve<T>(L, -1);
+
129  LuaUtils::pop(L);
+
130 
+
131  LuaUtils::rawGeti(L, -1, 2);
+
132  const T y = LuaUtils::retrieve<T>(L, -1);
+
133  LuaUtils::pop(L);
+
134 
+
135  LuaUtils::rawGeti(L, -1, 3);
+
136  const T w = LuaUtils::retrieve<T>(L, -1);
+
137  LuaUtils::pop(L);
+
138 
+
139  LuaUtils::rawGeti(L, -1, 4);
+
140  const T h = LuaUtils::retrieve<T>(L, -1);
+
141  LuaUtils::pop(L);
+
142 
+
143  LuaUtils::pop(L);
+
144 
+
145  return Rect<T>(x, y, w, h);
+
146 }
+
147 
+
148 }
+
149 
+
150 #endif
+
Lua utilities for the Rect template class.
Definition: LuaRectUtils.h:20
+
A template based rectangle in a two dimensional space.
Definition: Rect.h:12
+
+ + + + diff --git a/master/_lua_state_manager_8h_source.html b/master/_lua_state_manager_8h_source.html new file mode 100644 index 0000000000..89badbd0cb --- /dev/null +++ b/master/_lua_state_manager_8h_source.html @@ -0,0 +1,211 @@ + + + + + + + +nCine: include/ncine/LuaStateManager.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
LuaStateManager.h
+
+
+
1 #ifndef CLASS_NCINE_LUAMANAGER
+
2 #define CLASS_NCINE_LUAMANAGER
+
3 
+
4 #include "common_defines.h"
+
5 #include <nctl/HashMap.h>
+
6 #include "LuaTypes.h"
+
7 
+
8 struct lua_State;
+
9 struct lua_Debug;
+
10 
+
11 namespace nctl {
+
12 class String;
+
13 }
+
14 
+
15 namespace ncine {
+
16 
+
17 namespace LuaUtils {
+
18  class RunInfo;
+
19 }
+
20 
+
22 class DLL_PUBLIC LuaStateManager
+
23 {
+
24  public:
+
26  enum class ApiType
+
27  {
+
29  FULL,
+
31  EDIT_ONLY,
+
33  CONSTANTS_ONLY,
+
35  NONE
+
36  };
+
37 
+
39  enum class StatisticsTracking
+
40  {
+
41  ENABLED,
+
42  DISABLED
+
43  };
+
44 
+
46  enum class StandardLibraries
+
47  {
+
48  LOADED,
+
49  NOT_LOADED
+
50  };
+
51 
+ +
53  {
+ +
55  : luaState(nullptr), stateManager(nullptr) {}
+
56  StateToManager(lua_State *L, LuaStateManager *manager)
+
57  : luaState(L), stateManager(manager) {}
+
58 
+
59  lua_State *luaState;
+
60  LuaStateManager *stateManager;
+
61  };
+
62 
+
63  LuaStateManager(ApiType apiType, StatisticsTracking statsTracking, StandardLibraries stdLibraries);
+
64  LuaStateManager(lua_State *L, ApiType apiType, StatisticsTracking statsTracking, StandardLibraries stdLibraries);
+
65  ~LuaStateManager();
+
66 
+
67  void reopen(ApiType apiType, StatisticsTracking statsTracking, StandardLibraries stdLibraries);
+
68  void reopen();
+
69 
+
71  bool loadFromFile(const char *filename, const char *chunkName, nctl::String *errorMsg, int *status);
+
73  bool loadFromFile(const char *filename, const char *chunkName, nctl::String *errorMsg);
+
75  bool loadFromFile(const char *filename, const char *chunkName);
+
77  bool loadFromFile(const char *filename);
+
79  bool loadFromMemory(const char *bufferName, const char *bufferPtr, unsigned long int bufferSize, nctl::String *errorMsg, int *status);
+
81  bool loadFromMemory(const char *bufferName, const char *bufferPtr, unsigned long int bufferSize, nctl::String *errorMsg);
+
83  bool loadFromMemory(const char *bufferName, const char *bufferPtr, unsigned long int bufferSize);
+
84 
+
86  bool runFromFile(const char *filename, const char *chunkName, nctl::String *errorMsg, int *status, LuaUtils::RunInfo *runInfo);
+
88  bool runFromFile(const char *filename, const char *chunkName, nctl::String *errorMsg);
+
90  bool runFromFile(const char *filename, const char *chunkName);
+
92  bool runFromFile(const char *filename);
+
94  bool runFromMemory(const char *bufferName, const char *bufferPtr, unsigned long int bufferSize, nctl::String *errorMsg, int *status, LuaUtils::RunInfo *runInfo);
+
96  bool runFromMemory(const char *bufferName, const char *bufferPtr, unsigned long int bufferSize, nctl::String *errorMsg);
+
98  bool runFromMemory(const char *bufferName, const char *bufferPtr, unsigned long int bufferSize);
+
99 
+
100  inline lua_State *state() { return L_; }
+
101  inline ApiType apiType() const { return apiType_; }
+
102  inline StatisticsTracking statisticsTracking() const { return statsTracking_; }
+
103  inline StandardLibraries standardLibraries() const { return stdLibraries_; }
+
104 
+
105  LuaTypes::UserDataType trackedType(void *pointer) const;
+
106  inline nctl::HashMap<void *, LuaTypes::UserDataType> &trackedUserDatas() { return trackedUserDatas_; }
+
107  LuaTypes::UserDataType untrackedType(void *pointer) const;
+
108  inline nctl::HashMap<void *, LuaTypes::UserDataType> &untrackedUserDatas() { return untrackedUserDatas_; }
+
109 
+
110  static LuaStateManager *manager(lua_State *L);
+
111 
+
112  private:
+
113  static nctl::Array<StateToManager> managers_;
+
114 
+
115  lua_State *L_;
+
116  ApiType apiType_;
+
117  StatisticsTracking statsTracking_;
+
118  StandardLibraries stdLibraries_;
+ + +
122  bool closeOnDestruction_;
+
123 
+
124  static void *luaAllocator(void *ud, void *ptr, size_t osize, size_t nsize);
+
125  static void *luaAllocatorWithStatistics(void *ud, void *ptr, size_t osize, size_t nsize);
+
126  static void luaCountHook(lua_State *L, lua_Debug *ar);
+
127 
+
128  void init(ApiType apiType, StatisticsTracking statsTracking, StandardLibraries stdLibraries);
+
129  void shutdown();
+
130  void unregisterState();
+
131  void releaseTrackedMemory();
+
132 
+
133  void exposeScriptApi();
+
134  void exposeModuleApi();
+
135  void exposeApi();
+
136  void exposeConstants();
+
137 
+
138  friend class LuaEventHandler;
+
139  friend class LuaStatistics;
+
140 };
+
141 
+
142 }
+
143 
+
144 #endif
+
The Lua scripting state manager.
Definition: LuaStateManager.h:23
+
StatisticsTracking
To enable or not memory and instruction count statistics.
Definition: LuaStateManager.h:40
+
StandardLibraries
To load or not standard Lua system libraries.
Definition: LuaStateManager.h:47
+
ApiType
The Lua API type to enable.
Definition: LuaStateManager.h:27
+
A class that collects additional status information when running Lua scripts.
Definition: LuaUtils.h:19
+
A dynamic array based on templates that stores elements in the heap.
Definition: Array.h:31
+ +
A basic string class made of chars.
Definition: String.h:23
+
Definition: LuaStateManager.h:53
+
+ + + + diff --git a/master/_lua_types_8h_source.html b/master/_lua_types_8h_source.html new file mode 100644 index 0000000000..807e505332 --- /dev/null +++ b/master/_lua_types_8h_source.html @@ -0,0 +1,296 @@ + + + + + + + +nCine: include/ncine/LuaTypes.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
LuaTypes.h
+
+
+
1 #ifndef CLASS_NCINE_LUATYPES
+
2 #define CLASS_NCINE_LUATYPES
+
3 
+
4 #include "common_defines.h"
+
5 #include <nctl/Array.h>
+
6 
+
7 struct lua_State;
+
8 
+
9 namespace ncine {
+
10 
+
11 class KeyboardState;
+
12 class JoystickState;
+
13 class JoyMappedState;
+
14 
+
15 class Viewport;
+
16 class Camera;
+
17 class Shader;
+
18 class ShaderState;
+
19 
+
20 class AppConfiguration;
+
21 class Texture;
+
22 class SceneNode;
+
23 class DrawableNode;
+
24 class BaseSprite;
+
25 class Sprite;
+
26 class MeshSprite;
+
27 class AnimatedSprite;
+
28 class Font;
+
29 class TextNode;
+
30 
+
31 class AudioBuffer;
+
32 class AudioBufferPlayer;
+
33 class AudioStreamPlayer;
+
34 class AudioFilter;
+
35 class AudioEffectSlot;
+
36 class AudioEffect;
+
37 class AudioEffectProperties;
+
38 
+
39 class ParticleSystem;
+
40 class ParticleAffector;
+
41 
+
43 namespace LuaTypes {
+
44  enum UserDataType
+
45  {
+
46  KEYBOARDSTATE = 0,
+
47  JOYSTICKSTATE,
+
48  JOYMAPPEDSTATE,
+
49 
+
50  VIEWPORT,
+
51  CAMERA,
+
52  SHADER,
+
53  SHADERSTATE,
+
54 
+
55  TEXTURE,
+
56  SCENENODE,
+
57  DRAWABLENODE,
+
58  BASE_SPRITE,
+
59  SPRITE,
+
60  MESH_SPRITE,
+
61  ANIMATED_SPRITE,
+
62  FONT,
+
63  TEXTNODE,
+
64 
+
65  AUDIOBUFFER,
+
66  IAUDIOPLAYER,
+
67  AUDIOBUFFER_PLAYER,
+
68  AUDIOSTREAM_PLAYER,
+
69  AUDIO_FILTER,
+
70  AUDIO_EFFECT_SLOT,
+
71  AUDIO_EFFECT,
+
72  AUDIO_EFFECT_PROPERTIES,
+
73 
+
74  PARTICLE_SYSTEM,
+
75  PARTICLE_AFFECTOR,
+
76 
+
77  UNKNOWN
+
78  };
+
79 
+
80  template <class T> inline LuaTypes::UserDataType classToUserDataType(T *) { return LuaTypes::UserDataType::UNKNOWN; }
+
81 
+
82  template <> inline LuaTypes::UserDataType classToUserDataType<KeyboardState>(KeyboardState *) { return LuaTypes::UserDataType::KEYBOARDSTATE; }
+
83  template <> inline LuaTypes::UserDataType classToUserDataType<JoystickState>(JoystickState *) { return LuaTypes::UserDataType::JOYSTICKSTATE; }
+
84  template <> inline LuaTypes::UserDataType classToUserDataType<JoyMappedState>(JoyMappedState *) { return LuaTypes::UserDataType::JOYMAPPEDSTATE; }
+
85 
+
86  template <> inline LuaTypes::UserDataType classToUserDataType<Viewport>(Viewport *) { return LuaTypes::UserDataType::VIEWPORT; }
+
87  template <> inline LuaTypes::UserDataType classToUserDataType<Camera>(Camera *) { return LuaTypes::UserDataType::CAMERA; }
+
88  template <> inline LuaTypes::UserDataType classToUserDataType<Shader>(Shader *) { return LuaTypes::UserDataType::SHADER; }
+
89  template <> inline LuaTypes::UserDataType classToUserDataType<ShaderState>(ShaderState *) { return LuaTypes::UserDataType::SHADERSTATE; }
+
90 
+
91  template <> inline LuaTypes::UserDataType classToUserDataType<Texture>(Texture *) { return LuaTypes::UserDataType::TEXTURE; }
+
92  template <> inline LuaTypes::UserDataType classToUserDataType<SceneNode>(SceneNode *) { return LuaTypes::UserDataType::SCENENODE; }
+
93  template <> inline LuaTypes::UserDataType classToUserDataType<DrawableNode>(DrawableNode *) { return LuaTypes::UserDataType::DRAWABLENODE; }
+
94  template <> inline LuaTypes::UserDataType classToUserDataType<BaseSprite>(BaseSprite *) { return LuaTypes::UserDataType::BASE_SPRITE; }
+
95  template <> inline LuaTypes::UserDataType classToUserDataType<Sprite>(Sprite *) { return LuaTypes::UserDataType::SPRITE; }
+
96  template <> inline LuaTypes::UserDataType classToUserDataType<MeshSprite>(MeshSprite *) { return LuaTypes::UserDataType::MESH_SPRITE; }
+
97  template <> inline LuaTypes::UserDataType classToUserDataType<AnimatedSprite>(AnimatedSprite *) { return LuaTypes::UserDataType::ANIMATED_SPRITE; }
+
98  template <> inline LuaTypes::UserDataType classToUserDataType<Font>(Font *) { return LuaTypes::UserDataType::FONT; }
+
99  template <> inline LuaTypes::UserDataType classToUserDataType<TextNode>(TextNode *) { return LuaTypes::UserDataType::TEXTNODE; }
+
100 
+
101  template <> inline LuaTypes::UserDataType classToUserDataType<AudioBuffer>(AudioBuffer *) { return LuaTypes::UserDataType::AUDIOBUFFER; }
+
102  template <> inline LuaTypes::UserDataType classToUserDataType<IAudioPlayer>(IAudioPlayer *) { return LuaTypes::UserDataType::IAUDIOPLAYER; }
+
103  template <> inline LuaTypes::UserDataType classToUserDataType<AudioBufferPlayer>(AudioBufferPlayer *) { return LuaTypes::UserDataType::AUDIOBUFFER_PLAYER; }
+
104  template <> inline LuaTypes::UserDataType classToUserDataType<AudioStreamPlayer>(AudioStreamPlayer *) { return LuaTypes::UserDataType::AUDIOSTREAM_PLAYER; }
+
105  template <> inline LuaTypes::UserDataType classToUserDataType<AudioFilter>(AudioFilter *) { return LuaTypes::UserDataType::AUDIO_FILTER; }
+
106  template <> inline LuaTypes::UserDataType classToUserDataType<AudioEffectSlot>(AudioEffectSlot *) { return LuaTypes::UserDataType::AUDIO_EFFECT_SLOT; }
+
107  template <> inline LuaTypes::UserDataType classToUserDataType<AudioEffect>(AudioEffect *) { return LuaTypes::UserDataType::AUDIO_EFFECT; }
+
108  template <> inline LuaTypes::UserDataType classToUserDataType<AudioEffectProperties>(AudioEffectProperties *) { return LuaTypes::UserDataType::AUDIO_EFFECT_PROPERTIES; }
+
109 
+
110  template <> inline LuaTypes::UserDataType classToUserDataType<ParticleSystem>(ParticleSystem *) { return LuaTypes::UserDataType::PARTICLE_SYSTEM; }
+
111  template <> inline LuaTypes::UserDataType classToUserDataType<ParticleAffector>(ParticleAffector *) { return LuaTypes::UserDataType::PARTICLE_AFFECTOR; }
+
112 
+
113  template <class T> inline const char *classToName(T *) { return "unknown"; }
+
114 
+
115  template <> inline const char *classToName<KeyboardState>(KeyboardState *) { return "KeyboardState"; }
+
116  template <> inline const char *classToName<JoystickState>(JoystickState *) { return "JoystickState"; }
+
117  template <> inline const char *classToName<JoyMappedState>(JoyMappedState *) { return "JoyMappedState"; }
+
118 
+
119  template <> inline const char *classToName<Viewport>(Viewport *) { return "Viewport"; }
+
120  template <> inline const char *classToName<Camera>(Camera *) { return "Camera"; }
+
121  template <> inline const char *classToName<Shader>(Shader *) { return "Shader"; }
+
122  template <> inline const char *classToName<ShaderState>(ShaderState *) { return "ShaderState"; }
+
123 
+
124  template <> inline const char *classToName<Texture>(Texture *) { return "Texture"; }
+
125  template <> inline const char *classToName<SceneNode>(SceneNode *) { return "SceneNode"; }
+
126  template <> inline const char *classToName<DrawableNode>(DrawableNode *) { return "DrawableNode"; }
+
127  template <> inline const char *classToName<BaseSprite>(BaseSprite *) { return "BaseSprite"; }
+
128  template <> inline const char *classToName<Sprite>(Sprite *) { return "Sprite"; }
+
129  template <> inline const char *classToName<MeshSprite>(MeshSprite *) { return "MeshSprite"; }
+
130  template <> inline const char *classToName<AnimatedSprite>(AnimatedSprite *) { return "AnimatedSprite"; }
+
131  template <> inline const char *classToName<Font>(Font *) { return "Font"; }
+
132  template <> inline const char *classToName<TextNode>(TextNode *) { return "TextNode"; }
+
133 
+
134  template <> inline const char *classToName<AudioBuffer>(AudioBuffer *) { return "AudioBuffer"; }
+
135  template <> inline const char *classToName<IAudioPlayer>(IAudioPlayer *) { return "IAudioPlayer"; }
+
136  template <> inline const char *classToName<AudioBufferPlayer>(AudioBufferPlayer *) { return "AudioBufferPlayer"; }
+
137  template <> inline const char *classToName<AudioStreamPlayer>(AudioStreamPlayer *) { return "AudioStreamPlayer"; }
+
138  template <> inline const char *classToName<AudioFilter>(AudioFilter *) { return "AudioFilter"; }
+
139  template <> inline const char *classToName<AudioEffectSlot>(AudioEffectSlot *) { return "AudioEffectSlot"; }
+
140  template <> inline const char *classToName<AudioEffect>(AudioEffect *) { return "AudioEffect"; }
+
141  template <> inline const char *classToName<AudioEffectProperties>(AudioEffectProperties *) { return "AudioEffectProperties"; }
+
142 
+
143  template <> inline const char *classToName<ParticleSystem>(ParticleSystem *) { return "ParticleSystem"; }
+
144  template <> inline const char *classToName<ParticleAffector>(ParticleAffector *) { return "ParticleAffector"; }
+
145 
+
146  inline const char *userDataTypeToName(LuaTypes::UserDataType type)
+
147  {
+
148  switch (type)
+
149  {
+
150  case LuaTypes::UserDataType::UNKNOWN: return "unknown";
+
151 
+
152  case LuaTypes::UserDataType::KEYBOARDSTATE: return "KeyboardState";
+
153  case LuaTypes::UserDataType::JOYSTICKSTATE: return "JoystickState";
+
154  case LuaTypes::UserDataType::JOYMAPPEDSTATE: return "JoyMappedState";
+
155 
+
156  case LuaTypes::UserDataType::VIEWPORT: return "Viewport";
+
157  case LuaTypes::UserDataType::CAMERA: return "Camera";
+
158  case LuaTypes::UserDataType::SHADER: return "Shader";
+
159  case LuaTypes::UserDataType::SHADERSTATE: return "ShaderState";
+
160 
+
161  case LuaTypes::UserDataType::TEXTURE: return "Texture";
+
162  case LuaTypes::UserDataType::SCENENODE: return "SceneNode";
+
163  case LuaTypes::UserDataType::DRAWABLENODE: return "DrawableNode";
+
164  case LuaTypes::UserDataType::BASE_SPRITE: return "BaseSprite";
+
165  case LuaTypes::UserDataType::SPRITE: return "Sprite";
+
166  case LuaTypes::UserDataType::MESH_SPRITE: return "MeshSprite";
+
167  case LuaTypes::UserDataType::ANIMATED_SPRITE: return "AnimatedSprite";
+
168  case LuaTypes::UserDataType::FONT: return "Font";
+
169  case LuaTypes::UserDataType::TEXTNODE: return "TextNode";
+
170 
+
171  case LuaTypes::UserDataType::AUDIOBUFFER: return "AudioBuffer";
+
172  case LuaTypes::UserDataType::IAUDIOPLAYER: return "IAudioPlayer";
+
173  case LuaTypes::UserDataType::AUDIOBUFFER_PLAYER: return "AudioBufferPlayer";
+
174  case LuaTypes::UserDataType::AUDIOSTREAM_PLAYER: return "AudioStreamPlayer";
+
175  case LuaTypes::UserDataType::AUDIO_FILTER: return "AudioFilter";
+
176  case LuaTypes::UserDataType::AUDIO_EFFECT_SLOT: return "AudioEffectSlot";
+
177  case LuaTypes::UserDataType::AUDIO_EFFECT: return "AudioEffect";
+
178  case LuaTypes::UserDataType::AUDIO_EFFECT_PROPERTIES: return "AudioEffectProperties";
+
179 
+
180  case LuaTypes::UserDataType::PARTICLE_SYSTEM: return "ParticleSystem";
+
181  case LuaTypes::UserDataType::PARTICLE_AFFECTOR: return "ParticleAffector";
+
182  }
+
183 
+
184  return "unknown";
+
185  }
+
186 }
+
187 
+
188 }
+
189 
+
190 #endif
+
A class for an animated sprite.
Definition: AnimatedSprite.h:11
+
A class representing an OpenAL buffer.
Definition: AudioBuffer.h:14
+
Audio buffer player class.
Definition: AudioBufferPlayer.h:13
+
A class representing an OpenAL effect.
Definition: AudioEffect.h:12
+
A class representing a set of OpenAL effect properties.
Definition: AudioEffectProperties.h:10
+
A class representing an OpenAL auxilary effect slot.
Definition: AudioEffectSlot.h:12
+
A class representing an OpenAL filter.
Definition: AudioFilter.h:10
+
Audio stream player class.
Definition: AudioStreamPlayer.h:12
+
The base class for sprites.
Definition: BaseSprite.h:15
+
The camera class that handles matrices for shaders.
Definition: Camera.h:16
+
A class for objects that can be drawn through the render queue.
Definition: DrawableNode.h:14
+
A class holding the font and glyphs information needed to render text.
Definition: Font.h:16
+
Audio player interface class.
Definition: IAudioPlayer.h:15
+
Information about the mapped joystick state.
Definition: InputEvents.h:263
+
Information about the joystick state.
Definition: InputEvents.h:152
+
Information about the keyboard state.
Definition: InputEvents.h:99
+
A scene node representing a mesh with vertices and UVs.
Definition: MeshSprite.h:11
+
Base class for particle affectors.
Definition: ParticleAffectors.h:17
+
The class representing a particle system.
Definition: ParticleSystem.h:19
+
The base class for the transformation nodes hierarchy.
Definition: SceneNode.h:19
+
Shader class.
Definition: Shader.h:17
+
Shader state class for the user to use custom shaders.
Definition: ShaderState.h:16
+
A scene node representing a regular sprite.
Definition: Sprite.h:10
+
A scene node to draw a text label.
Definition: TextNode.h:17
+
Texture class.
Definition: Texture.h:16
+
The class handling a viewport and its corresponding render target texture.
Definition: Viewport.h:22
+
+ + + + diff --git a/master/_lua_untracked_user_data_8h_source.html b/master/_lua_untracked_user_data_8h_source.html new file mode 100644 index 0000000000..d30bf333d1 --- /dev/null +++ b/master/_lua_untracked_user_data_8h_source.html @@ -0,0 +1,270 @@ + + + + + + + +nCine: include/ncine/LuaUntrackedUserData.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
LuaUntrackedUserData.h
+
+
+
1 #ifndef CLASS_NCINE_LUAUNTRACKEDUSERDATA
+
2 #define CLASS_NCINE_LUAUNTRACKEDUSERDATA
+
3 
+
4 #include "common_macros.h"
+
5 #include "LuaStateManager.h"
+
6 #include "LuaUtils.h"
+
7 #include "LuaDebug.h"
+
8 
+
9 namespace ncine {
+
10 
+
12 template <class T>
+ +
14 {
+
15  public:
+
16  static T *retrieve(lua_State *L, int index) { return retrieve(L, index, RetrieveNull::TRACE); }
+
17  static T *retrieveOrNil(lua_State *L, int index) { return retrieve(L, index, RetrieveNull::ACCEPT); }
+
18 
+
19  static void push(lua_State *L, T *object);
+
20  static void push(lua_State *L, const T *object);
+
21 
+
22  static void pushField(lua_State *L, const char *name, T *object);
+
23  static void pushField(lua_State *L, const char *name, const T *object);
+
24 
+
25  private:
+
26  enum class RetrieveNull
+
27  {
+
28  TRACE,
+
29  ACCEPT
+
30  };
+
31 
+
32  static T *retrieve(lua_State *L, int index, RetrieveNull unwrapType);
+
33  static T *store(lua_State *L, T *object);
+
34 };
+
35 
+
36 template <class T>
+
37 T *LuaUntrackedUserData<T>::retrieve(lua_State *L, int index, RetrieveNull unwrapType)
+
38 {
+
39  if (LuaUtils::isNil(L, index))
+
40  {
+
41  if (unwrapType == RetrieveNull::TRACE)
+
42  LuaDebug::traceError(L, "Expecting an object instead of a null pointer");
+
43 
+
44  return nullptr;
+
45  }
+
46 
+
47  void *pointer = LuaUtils::retrieveUserData<void *>(L, index);
+
48 
+
49  LuaStateManager *stateManager = LuaStateManager::manager(L);
+
50  LuaTypes::UserDataType type = stateManager->trackedType(pointer);
+
51 
+
52  if (type == LuaTypes::UNKNOWN)
+
53  type = stateManager->untrackedType(pointer);
+
54 
+
55  if (type == LuaTypes::UNKNOWN)
+
56  return nullptr; // TODO: Caller should check return value and abort the call
+
57 
+
58  T *object = reinterpret_cast<T *>(pointer);
+
59  ASSERT(object != nullptr && type != LuaTypes::UNKNOWN);
+
60 
+
61  const LuaTypes::UserDataType objectType = LuaTypes::classToUserDataType(object);
+
62  switch (type)
+
63  {
+
64  case LuaTypes::ANIMATED_SPRITE:
+
65  if (objectType != type &&
+
66  objectType != LuaTypes::SPRITE &&
+
67  objectType != LuaTypes::BASE_SPRITE &&
+
68  objectType != LuaTypes::DRAWABLENODE &&
+
69  objectType != LuaTypes::SCENENODE)
+
70  {
+
71  LuaDebug::traceError(L, "Expecting a %s object instead of a %s", LuaTypes::classToName(object), LuaTypes::userDataTypeToName(type));
+
72  object = nullptr;
+
73  }
+
74  break;
+
75  case LuaTypes::MESH_SPRITE:
+
76  case LuaTypes::SPRITE:
+
77  if (objectType != type &&
+
78  objectType != LuaTypes::BASE_SPRITE &&
+
79  objectType != LuaTypes::DRAWABLENODE &&
+
80  objectType != LuaTypes::SCENENODE)
+
81  {
+
82  LuaDebug::traceError(L, "Expecting a %s object instead of a %s", LuaTypes::classToName(object), LuaTypes::userDataTypeToName(type));
+
83  object = nullptr;
+
84  }
+
85  break;
+
86  case LuaTypes::TEXTNODE:
+
87  if (objectType != type &&
+
88  objectType != LuaTypes::DRAWABLENODE &&
+
89  objectType != LuaTypes::SCENENODE)
+
90  {
+
91  LuaDebug::traceError(L, "Expecting a %s object instead of a %s", LuaTypes::classToName(object), LuaTypes::userDataTypeToName(type));
+
92  object = nullptr;
+
93  }
+
94  break;
+
95  case LuaTypes::PARTICLE_SYSTEM:
+
96  if (objectType != type &&
+
97  objectType != LuaTypes::SCENENODE)
+
98  {
+
99  LuaDebug::traceError(L, "Expecting a %s object instead of a %s", LuaTypes::classToName(object), LuaTypes::userDataTypeToName(type));
+
100  object = nullptr;
+
101  }
+
102  break;
+
103  case LuaTypes::AUDIOBUFFER_PLAYER:
+
104  if (objectType != type &&
+
105  objectType != LuaTypes::IAUDIOPLAYER)
+
106  {
+
107  LuaDebug::traceError(L, "Expecting a %s object instead of a %s", LuaTypes::classToName(object), LuaTypes::userDataTypeToName(type));
+
108  object = nullptr;
+
109  }
+
110  break;
+
111  case LuaTypes::AUDIOSTREAM_PLAYER:
+
112  if (objectType != type &&
+
113  objectType != LuaTypes::IAUDIOPLAYER)
+
114  {
+
115  LuaDebug::traceError(L, "Expecting a %s object instead of a %s", LuaTypes::classToName(object), LuaTypes::userDataTypeToName(type));
+
116  object = nullptr;
+
117  }
+
118  break;
+
119  default:
+
120  if (objectType != type)
+
121  {
+
122  LuaDebug::traceError(L, "Expecting a %s object instead of a %s", LuaTypes::classToName(object), LuaTypes::userDataTypeToName(type));
+
123  object = nullptr;
+
124  }
+
125  break;
+
126  }
+
127 
+
128  return object;
+
129 }
+
130 
+
131 template <class T>
+
132 void LuaUntrackedUserData<T>::push(lua_State *L, T *object)
+
133 {
+
134  if (object != nullptr)
+
135  {
+
136  store(L, object);
+
137  LuaUtils::push(L, reinterpret_cast<void *>(object));
+
138  }
+
139  else
+
140  LuaUtils::pushNil(L);
+
141 }
+
142 
+
143 template <class T>
+
144 void LuaUntrackedUserData<T>::push(lua_State *L, const T *object)
+
145 {
+
146  push(L, const_cast<T *>(object));
+
147 }
+
148 
+
149 template <class T>
+
150 void LuaUntrackedUserData<T>::pushField(lua_State *L, const char *name, T *object)
+
151 {
+
152  if (object != nullptr)
+
153  {
+
154  store(L, object);
+
155  LuaUtils::pushField(L, name, reinterpret_cast<void *>(object));
+
156  }
+
157  else
+
158  LuaUtils::pushFieldNil(L, name);
+
159 }
+
160 
+
161 template <class T>
+
162 void LuaUntrackedUserData<T>::pushField(lua_State *L, const char *name, const T *object)
+
163 {
+
164  pushField(L, name, const_cast<T *>(object));
+
165 }
+
166 
+
167 template <class T>
+
168 T *LuaUntrackedUserData<T>::store(lua_State *L, T *object)
+
169 {
+
170  FATAL_ASSERT(object != nullptr);
+
171 
+
172  LuaStateManager *stateManager = LuaStateManager::manager(L);
+
173 
+
174  nctl::HashMap<void *, LuaTypes::UserDataType> &hashMap = stateManager->untrackedUserDatas();
+
175  if (hashMap.loadFactor() >= 0.8f)
+
176  hashMap.rehash(hashMap.capacity() * 2);
+
177  hashMap.insert(object, LuaTypes::classToUserDataType(object));
+
178 
+
179  return object;
+
180 }
+
181 
+
182 }
+
183 
+
184 #endif
+
Common methods to retrieve an untracked C++ class in Lua.
Definition: LuaUntrackedUserData.h:14
+ +
unsigned int capacity() const
Returns the capacity of the hashmap.
Definition: HashMap.h:104
+
void rehash(unsigned int count)
Sets the number of buckets to the new specified size and rehashes the container.
Definition: HashMap.h:723
+
bool insert(const K &key, const T &value)
Inserts an element if no other has the same key.
Definition: HashMap.h:452
+
float loadFactor() const
Returns the ratio between used and total buckets.
Definition: HashMap.h:110
+
+ + + + diff --git a/master/_lua_utils_8h_source.html b/master/_lua_utils_8h_source.html new file mode 100644 index 0000000000..0ed9dccb6e --- /dev/null +++ b/master/_lua_utils_8h_source.html @@ -0,0 +1,451 @@ + + + + + + + +nCine: include/ncine/LuaUtils.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
LuaUtils.h
+
+
+
1 #ifndef CLASS_NCINE_LUAUTILS
+
2 #define CLASS_NCINE_LUAUTILS
+
3 
+
4 #include <stdint.h>
+
5 #include "common_macros.h"
+
6 
+
7 struct lua_State;
+
8 
+
9 namespace ncine {
+
10 
+
11 namespace LuaDebug {
+
12  int debugInfoMessageHandler(lua_State *L);
+
13 }
+
14 
+
15 namespace LuaUtils {
+
16 
+
18  class DLL_PUBLIC RunInfo
+
19  {
+
20  public:
+
21  struct DebugInfo
+
22  {
+
23  enum class WhatType
+
24  {
+
25  LUA,
+
26  C,
+
27  MAIN
+
28  };
+
29 
+
30  enum class NameWhatType
+
31  {
+
32  GLOBAL,
+
33  LOCAL,
+
34  METHOD,
+
35  FIELD,
+
36  UPVALUE,
+
37  EMPTY
+
38  };
+
39 
+
40  static const int MaxShortSrcLength = 64;
+
41 
+
42  const char *source;
+
43  size_t srcLen;
+
44  char shortSrc[MaxShortSrcLength];
+
45  int lineDefined;
+
46  int lastLineDefined;
+
47  WhatType what;
+
48  int currentLine;
+
49  const char *name;
+
50  NameWhatType nameWhat;
+
51  bool isTailCall;
+
52  int nUps;
+
53  int nParams;
+
54  bool isVarArg;
+
55 
+
56  const char *whatTypeToString(WhatType type) const;
+
57  const char *nameWhatTypeToString(DebugInfo::NameWhatType type) const;
+
58  };
+
59 
+
60  static const unsigned int MaxLevels = 8;
+
61 
+
62  inline unsigned int numLevels() const { return numLevels_; }
+
63  const DebugInfo &debugInfo(unsigned int level) const;
+
64 
+
65  private:
+
66  unsigned int numLevels_;
+
67  DebugInfo debugInfo_[MaxLevels];
+
68 
+
69  friend DLL_PUBLIC int pcall(lua_State *L, int nargs, int nresults, RunInfo *runInfo);
+
70  friend int LuaDebug::debugInfoMessageHandler(lua_State *L);
+
71  };
+
72 
+
73  DLL_PUBLIC void addFunction(lua_State *L, const char *name, int (*func)(lua_State *L));
+
74  DLL_PUBLIC void addGlobalFunction(lua_State *L, const char *name, int (*func)(lua_State *L));
+
75  DLL_PUBLIC void createTable(lua_State *L, int narr, int nrec);
+
76  DLL_PUBLIC void newTable(lua_State *L);
+
77  DLL_PUBLIC void call(lua_State *L, int nargs, int nresults);
+
78  DLL_PUBLIC int pcall(lua_State *L, int nargs, int nresults, RunInfo *runInfo);
+
79  DLL_PUBLIC int pcall(lua_State *L, int nargs, int nresults, int msgh);
+
80  DLL_PUBLIC int pcall(lua_State *L, int nargs, int nresults);
+
81  DLL_PUBLIC void pop(lua_State *L, int n);
+
82  DLL_PUBLIC void pop(lua_State *L);
+
83 
+
84  DLL_PUBLIC int registryIndex();
+
85  DLL_PUBLIC int getTable(lua_State *L, int index);
+
86  DLL_PUBLIC void setTable(lua_State *L, int index);
+
87  DLL_PUBLIC int getField(lua_State *L, int index, const char *name);
+
88  DLL_PUBLIC void setField(lua_State *L, int index, const char *name);
+
89 
+
90  DLL_PUBLIC bool isStatusOk(int status);
+
91  DLL_PUBLIC bool isStatusYield(int status);
+
92  DLL_PUBLIC bool isStatusErrRun(int status);
+
93  DLL_PUBLIC bool isStatusErrSyntax(int status);
+
94  DLL_PUBLIC bool isStatusErrMem(int status);
+
95  DLL_PUBLIC bool isStatusErrGcmm(int status);
+
96  DLL_PUBLIC bool isStatusErrErr(int status);
+
97 
+
98  DLL_PUBLIC bool isNil(int type);
+
99  DLL_PUBLIC bool isNil(lua_State *L, int index);
+
100  DLL_PUBLIC bool isBoolean(int type);
+
101  DLL_PUBLIC bool isBoolean(lua_State *L, int index);
+
102  DLL_PUBLIC bool isLightUserData(int type);
+
103  DLL_PUBLIC bool isLightUserData(lua_State *L, int index);
+
104  DLL_PUBLIC bool isNumber(int type);
+
105  DLL_PUBLIC bool isNumber(lua_State *L, int index);
+
106  DLL_PUBLIC bool isString(int type);
+
107  DLL_PUBLIC bool isString(lua_State *L, int index);
+
108  DLL_PUBLIC bool isTable(int type);
+
109  DLL_PUBLIC bool isTable(lua_State *L, int index);
+
110  DLL_PUBLIC bool isFunction(int type);
+
111  DLL_PUBLIC bool isFunction(lua_State *L, int index);
+
112  DLL_PUBLIC bool isUserData(int type);
+
113  DLL_PUBLIC bool isUserData(lua_State *L, int index);
+
114  DLL_PUBLIC bool isThread(int type);
+
115  DLL_PUBLIC bool isThread(lua_State *L, int index);
+
116 
+
117  DLL_PUBLIC size_t rawLen(lua_State *L, int index);
+
118  DLL_PUBLIC int rawGeti(lua_State *L, int index, int64_t n);
+
119  DLL_PUBLIC void rawSeti(lua_State *L, int index, int64_t i);
+
120 
+
121  DLL_PUBLIC int getGlobal(lua_State *L, const char *name);
+
122  DLL_PUBLIC void setGlobal(lua_State *L, const char *name);
+
123 
+
124  template <class T> T retrieve(lua_State *L, int index) {}
+
125  template <> DLL_PUBLIC double retrieve<double>(lua_State *L, int index);
+
126  template <> DLL_PUBLIC float retrieve<float>(lua_State *L, int index);
+
127  template <> DLL_PUBLIC int64_t retrieve<int64_t>(lua_State *L, int index);
+
128  template <> DLL_PUBLIC uint64_t retrieve<uint64_t>(lua_State *L, int index);
+
129  template <> DLL_PUBLIC int32_t retrieve<int32_t>(lua_State *L, int index);
+
130  template <> DLL_PUBLIC uint32_t retrieve<uint32_t>(lua_State *L, int index);
+
131  template <> DLL_PUBLIC const char *retrieve<const char *>(lua_State *L, int index);
+
132  DLL_PUBLIC const char *retrieve(lua_State *L, int index, size_t *length);
+
133  template <> DLL_PUBLIC bool retrieve<bool>(lua_State *L, int index);
+
134  void *retrieveUserData(lua_State *L, int index); // not DLL_PUBLIC
+
135  template <class T> T *retrieveUserData(lua_State *L, int index) { return static_cast<T *>(retrieveUserData(L, index)); }
+
136  void assertArrayLength(lua_State *L, int index, unsigned int length); // utility function, not DLL_PUBLIC
+
137 
+
138  template <class T>
+
139  void retrieveArray(lua_State *L, int index, int arrayIndex, int length, T *array)
+
140  {
+
141  assertArrayLength(L, index, arrayIndex + length);
+
142  for (int i = 0; i < length; i++)
+
143  {
+
144  rawGeti(L, index, arrayIndex + i);
+
145  array[i] = retrieve<T>(L, -1);
+
146  }
+
147  }
+
148  template <class T>
+
149  void retrieveArray(lua_State *L, int index, int length, T *array)
+
150  {
+
151  retrieveArray(L, index, 1, length, array);
+
152  }
+
153 
+
154  template <class T> T retrieveField(lua_State *L, int index, const char *name) {}
+
155  template <> DLL_PUBLIC double retrieveField<double>(lua_State *L, int index, const char *name);
+
156  template <> DLL_PUBLIC float retrieveField<float>(lua_State *L, int index, const char *name);
+
157  template <> DLL_PUBLIC int64_t retrieveField<int64_t>(lua_State *L, int index, const char *name);
+
158  template <> DLL_PUBLIC uint64_t retrieveField<uint64_t>(lua_State *L, int index, const char *name);
+
159  template <> DLL_PUBLIC int32_t retrieveField<int32_t>(lua_State *L, int index, const char *name);
+
160  template <> DLL_PUBLIC uint32_t retrieveField<uint32_t>(lua_State *L, int index, const char *name);
+
161  template <> DLL_PUBLIC const char *retrieveField<const char *>(lua_State *L, int index, const char *name);
+
162  DLL_PUBLIC void retrieveField(lua_State *L, int index, const char *name, char *dest, size_t *length);
+
163  template <> DLL_PUBLIC bool retrieveField<bool>(lua_State *L, int index, const char *name);
+
164  DLL_PUBLIC void retrieveFieldTable(lua_State *L, int index, const char *name);
+
165  DLL_PUBLIC void retrieveFieldFunction(lua_State *L, int index, const char *name);
+
166  DLL_PUBLIC void *retrieveFieldLightUserData(lua_State *L, int index, const char *name);
+
167 
+
168  template <class T>
+
169  void retrieveFieldArray(lua_State *L, int index, const char *name, int arrayIndex, int length, T *array)
+
170  {
+
171  getField(L, index, name);
+
172  assertArrayLength(L, index, arrayIndex + length);
+
173  for (int i = 0; i < length; i++)
+
174  {
+
175  rawGeti(L, index, arrayIndex + i);
+
176  array[i] = retrieve<T>(L, -1);
+
177  }
+
178  }
+
179 
+
180  template <class T>
+
181  void retrieveFieldArray(lua_State *L, int index, const char *name, int length, T *array)
+
182  {
+
183  retrieveFieldArray(L, index, name, 1, length, array);
+
184  }
+
185 
+
186  template <class T> bool tryRetrieveField(lua_State *L, int index, const char *name, T &value) { return false; }
+
187  template <> DLL_PUBLIC bool tryRetrieveField<double>(lua_State *L, int index, const char *name, double &value);
+
188  template <> DLL_PUBLIC bool tryRetrieveField<float>(lua_State *L, int index, const char *name, float &value);
+
189  template <> DLL_PUBLIC bool tryRetrieveField<int64_t>(lua_State *L, int index, const char *name, int64_t &value);
+
190  template <> DLL_PUBLIC bool tryRetrieveField<uint64_t>(lua_State *L, int index, const char *name, uint64_t &value);
+
191  template <> DLL_PUBLIC bool tryRetrieveField<int32_t>(lua_State *L, int index, const char *name, int32_t &value);
+
192  template <> DLL_PUBLIC bool tryRetrieveField<uint32_t>(lua_State *L, int index, const char *name, uint32_t &value);
+
193  DLL_PUBLIC bool tryRetrieveField(lua_State *L, int index, const char *name, const char *value);
+
194  DLL_PUBLIC bool tryRetrieveField(lua_State *L, int index, const char *name, const char *value, size_t *length);
+
195  template <> DLL_PUBLIC bool tryRetrieveField<bool>(lua_State *L, int index, const char *name, bool &value);
+
196  DLL_PUBLIC bool tryRetrieveFieldTable(lua_State *L, int index, const char *name);
+
197  DLL_PUBLIC bool tryRetrieveFieldFunction(lua_State *L, int index, const char *name);
+
198  DLL_PUBLIC bool tryRetrieveFieldLightUserData(lua_State *L, int index, const char *name);
+
199 
+
200  template <class T>
+
201  bool tryRetrieveFieldArray(lua_State *L, int index, const char *name, int arrayIndex, int length, T *array)
+
202  {
+
203  getField(L, index, name);
+
204  if (isTable(L, -1))
+
205  {
+
206  retrieveArray<T>(L, -1, arrayIndex, length, array);
+
207  return true;
+
208  }
+
209  return false;
+
210  }
+
211 
+
212  template <class T>
+
213  bool tryRetrieveFieldArray(lua_State *L, int index, const char *name, int length, T *array)
+
214  {
+
215  return tryRetrieveFieldArray(L, index, name, 1, length, array);
+
216  }
+
217 
+
218  template <class T> T retrieveGlobal(lua_State *L, const char *name) {}
+
219  template <> DLL_PUBLIC double retrieveGlobal<double>(lua_State *L, const char *name);
+
220  template <> DLL_PUBLIC float retrieveGlobal<float>(lua_State *L, const char *name);
+
221  template <> DLL_PUBLIC int64_t retrieveGlobal<int64_t>(lua_State *L, const char *name);
+
222  template <> DLL_PUBLIC uint64_t retrieveGlobal<uint64_t>(lua_State *L, const char *name);
+
223  template <> DLL_PUBLIC int32_t retrieveGlobal<int32_t>(lua_State *L, const char *name);
+
224  template <> DLL_PUBLIC uint32_t retrieveGlobal<uint32_t>(lua_State *L, const char *name);
+
225  template <> DLL_PUBLIC const char *retrieveGlobal<const char *>(lua_State *L, const char *name);
+
226  DLL_PUBLIC void retrieveGlobal(lua_State *L, const char *name, char *dest, size_t *length);
+
227  template <> DLL_PUBLIC bool retrieveGlobal<bool>(lua_State *L, const char *name);
+
228  DLL_PUBLIC void retrieveGlobalTable(lua_State *L, const char *name);
+
229  DLL_PUBLIC void retrieveGlobalFunction(lua_State *L, const char *name);
+
230  DLL_PUBLIC void retrieveGlobalLightUserData(lua_State *L, const char *name);
+
231  void assertIsTable(lua_State *L, const char *name); // utility function, not DLL_PUBLIC
+
232 
+
233  template <class T>
+
234  void retrieveGlobalArray(lua_State *L, const char *name, int arrayIndex, int length, T *array)
+
235  {
+
236  getGlobal(L, name);
+
237  assertIsTable(L, name);
+
238  retrieveArray<T>(L, -1, arrayIndex, length, array);
+
239  }
+
240 
+
241  template <class T>
+
242  void retrieveGlobalArray(lua_State *L, const char *name, int length, T *array)
+
243  {
+
244  retrieveGlobalArray(L, name, 1, length, array);
+
245  }
+
246 
+
247  template <class T> bool tryRetrieveGlobal(lua_State *L, const char *name, T &value) { return false; }
+
248  template <> DLL_PUBLIC bool tryRetrieveGlobal<double>(lua_State *L, const char *name, double &value);
+
249  template <> DLL_PUBLIC bool tryRetrieveGlobal<float>(lua_State *L, const char *name, float &value);
+
250  template <> DLL_PUBLIC bool tryRetrieveGlobal<int64_t>(lua_State *L, const char *name, int64_t &value);
+
251  template <> DLL_PUBLIC bool tryRetrieveGlobal<uint64_t>(lua_State *L, const char *name, uint64_t &value);
+
252  template <> DLL_PUBLIC bool tryRetrieveGlobal<int32_t>(lua_State *L, const char *name, int32_t &value);
+
253  template <> DLL_PUBLIC bool tryRetrieveGlobal<uint32_t>(lua_State *L, const char *name, uint32_t &value);
+
254  DLL_PUBLIC bool tryRetrieveGlobal(lua_State *L, const char *name, const char *value);
+
255  DLL_PUBLIC bool tryRetrieveGlobal(lua_State *L, const char *name, const char *value, size_t *length);
+
256  template <> DLL_PUBLIC bool tryRetrieveGlobal<bool>(lua_State *L, const char *name, bool &value);
+
257  DLL_PUBLIC bool tryRetrieveGlobalTable(lua_State *L, const char *name);
+
258  DLL_PUBLIC bool tryRetrieveGlobalFunction(lua_State *L, const char *name);
+
259  DLL_PUBLIC bool tryRetrieveGlobalLightUserData(lua_State *L, const char *name);
+
260 
+
261  template <class T>
+
262  bool tryRetrieveGlobalArray(lua_State *L, const char *name, int arrayIndex, int length, T *array)
+
263  {
+
264  getGlobal(L, name);
+
265  if (isTable(L, -1))
+
266  {
+
267  retrieveArray<T>(L, -1, arrayIndex, length, array);
+
268  return true;
+
269  }
+
270  return false;
+
271  }
+
272 
+
273  template <class T>
+
274  bool tryRetrieveGlobalArray(lua_State *L, const char *name, int length, T *array)
+
275  {
+
276  return tryRetrieveGlobalArray(L, name, 1, length, array);
+
277  }
+
278 
+
279  DLL_PUBLIC void pushNil(lua_State *L);
+
280  DLL_PUBLIC void push(lua_State *L, double number);
+
281  DLL_PUBLIC void push(lua_State *L, float number);
+
282  DLL_PUBLIC void push(lua_State *L, int64_t integer);
+
283  DLL_PUBLIC void push(lua_State *L, uint64_t integer);
+
284  DLL_PUBLIC void push(lua_State *L, int32_t integer);
+
285  DLL_PUBLIC void push(lua_State *L, uint32_t integer);
+
286  DLL_PUBLIC void push(lua_State *L, const char *string);
+
287  DLL_PUBLIC void push(lua_State *L, const char *string, size_t length);
+
288  DLL_PUBLIC void push(lua_State *L, int (*func)(lua_State *L));
+
289  DLL_PUBLIC void push(lua_State *L, bool boolean);
+
290  DLL_PUBLIC void push(lua_State *L, void *lightuserdata);
+
291  DLL_PUBLIC void push(lua_State *L, const void *lightuserdata);
+
292 
+
293  template <class T>
+
294  void pushArray(lua_State *L, int index, int arrayIndex, int length, T *array)
+
295  {
+
296  for (int i = 0; i < length; i++)
+
297  {
+
298  push(L, array[i]);
+
299  rawSeti(L, index, arrayIndex + i);
+
300  }
+
301  }
+
302 
+
303  template <class T>
+
304  void pushArray(lua_State *L, int index, int length, T *array)
+
305  {
+
306  pushArray(L, index, 1, length, array);
+
307  }
+
308 
+
309  DLL_PUBLIC void pushFieldNil(lua_State *L, const char *name);
+
310  DLL_PUBLIC void pushField(lua_State *L, const char *name, double number);
+
311  DLL_PUBLIC void pushField(lua_State *L, const char *name, float number);
+
312  DLL_PUBLIC void pushField(lua_State *L, const char *name, int64_t integer);
+
313  DLL_PUBLIC void pushField(lua_State *L, const char *name, uint64_t integer);
+
314  DLL_PUBLIC void pushField(lua_State *L, const char *name, int32_t integer);
+
315  DLL_PUBLIC void pushField(lua_State *L, const char *name, uint32_t integer);
+
316  DLL_PUBLIC void pushField(lua_State *L, const char *name, const char *string);
+
317  DLL_PUBLIC void pushField(lua_State *L, const char *name, const char *string, size_t length);
+
318  DLL_PUBLIC void pushField(lua_State *L, const char *name, int (*func)(lua_State *L));
+
319  DLL_PUBLIC void pushField(lua_State *L, const char *name, bool boolean);
+
320  DLL_PUBLIC void pushField(lua_State *L, const char *name, void *lightuserdata);
+
321 
+
322  template <class T>
+
323  void pushArrayField(lua_State *L, const char *name, int arrayIndex, int length, T *array)
+
324  {
+
325  const bool found = tryRetrieveFieldTable(L, -1, name);
+
326  if (found == false)
+
327  createTable(L, length, 0);
+
328  pushArray<T>(L, -2, arrayIndex, length, array);
+
329  }
+
330 
+
331  template <class T>
+
332  void pushArrayField(lua_State *L, const char *name, int length, T *array)
+
333  {
+
334  pushArrayField(L, name, 1, length, array);
+
335  }
+
336 
+
337  DLL_PUBLIC void setGlobal(lua_State *L, const char *name, double number);
+
338  DLL_PUBLIC void setGlobal(lua_State *L, const char *name, float number);
+
339  DLL_PUBLIC void setGlobal(lua_State *L, const char *name, int64_t integer);
+
340  DLL_PUBLIC void setGlobal(lua_State *L, const char *name, uint64_t integer);
+
341  DLL_PUBLIC void setGlobal(lua_State *L, const char *name, int32_t integer);
+
342  DLL_PUBLIC void setGlobal(lua_State *L, const char *name, uint32_t integer);
+
343  DLL_PUBLIC void setGlobal(lua_State *L, const char *name, const char *string);
+
344  DLL_PUBLIC void setGlobal(lua_State *L, const char *name, const char *string, size_t length);
+
345  DLL_PUBLIC void setGlobal(lua_State *L, const char *name, int (*func)(lua_State *L));
+
346  DLL_PUBLIC void setGlobal(lua_State *L, const char *name, bool boolean);
+
347  DLL_PUBLIC void setGlobal(lua_State *L, const char *name, void *lightuserdata);
+
348 
+
349  template <class T>
+
350  void setGlobalArray(lua_State *L, const char *name, int arrayIndex, int length, T *array)
+
351  {
+
352  const bool found = tryRetrieveGlobalTable(L, name);
+
353  if (found == false)
+
354  createTable(L, length, 0);
+
355  pushArray<T>(L, -2, arrayIndex, length, array);
+
356  if (found == false)
+
357  setGlobal(L, name);
+
358  }
+
359 
+
360  template <class T>
+
361  void setGlobalArray(lua_State *L, const char *name, int length, T *array)
+
362  {
+
363  setGlobalArray(L, name, 1, length, array);
+
364  }
+
365 }
+
366 
+
367 }
+
368 
+
369 #endif
+
A class that collects additional status information when running Lua scripts.
Definition: LuaUtils.h:19
+
Definition: LuaUtils.h:22
+
+ + + + diff --git a/master/_lua_vector2_utils_8h_source.html b/master/_lua_vector2_utils_8h_source.html new file mode 100644 index 0000000000..52aadf7e17 --- /dev/null +++ b/master/_lua_vector2_utils_8h_source.html @@ -0,0 +1,206 @@ + + + + + + + +nCine: include/ncine/LuaVector2Utils.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
LuaVector2Utils.h
+
+
+
1 #ifndef CLASS_NCINE_LUAVECTOR2UTILS
+
2 #define CLASS_NCINE_LUAVECTOR2UTILS
+
3 
+
4 #include "LuaUtils.h"
+
5 #include "Vector2.h"
+
6 
+
7 namespace ncine {
+
8 
+
9 namespace LuaNames {
+
10 namespace Vector2 {
+
11  static const char *x = "x";
+
12  static const char *y = "y";
+
13 }}
+
14 
+
16 template <class T>
+ +
18 {
+
19  public:
+
20  static void push(lua_State *L, const Vector2<T> &v);
+
21  static void pushField(lua_State *L, const char *name, const Vector2<T> &v);
+
22  static Vector2<T> retrieve(lua_State *L, int index, int &newIndex);
+
23  static Vector2<T> retrieveTable(lua_State *L, int index);
+
24  static Vector2<T> retrieveArray(lua_State *L, int index);
+
25  static Vector2<T> retrieveParams(lua_State *L, int index);
+
26  static Vector2<T> retrieveTableField(lua_State *L, int index, const char *name);
+
27  static Vector2<T> retrieveArrayField(lua_State *L, int index, const char *name);
+
28 };
+
29 
+ + +
32 
+
33 template <class T>
+
34 void LuaVector2Utils<T>::push(lua_State *L, const Vector2<T> &v)
+
35 {
+
36  LuaUtils::createTable(L, 0, 2);
+
37  LuaUtils::pushField(L, LuaNames::Vector2::x, v.x);
+
38  LuaUtils::pushField(L, LuaNames::Vector2::y, v.y);
+
39 }
+
40 
+
41 template <class T>
+
42 void LuaVector2Utils<T>::pushField(lua_State *L, const char *name, const Vector2<T> &v)
+
43 {
+
44  push(L, v);
+
45  LuaUtils::setField(L, -2, name);
+
46 }
+
47 
+
48 template <class T>
+
49 Vector2<T> LuaVector2Utils<T>::retrieve(lua_State *L, int index, int &newIndex)
+
50 {
+
51  if (LuaUtils::isTable(L, index))
+
52  {
+
53  newIndex = index;
+
54  return retrieveTable(L, index);
+
55  }
+
56  else
+
57  {
+
58  newIndex = index - 1;
+
59  return retrieveParams(L, newIndex);
+
60  }
+
61 }
+
62 
+
63 template <class T>
+
64 Vector2<T> LuaVector2Utils<T>::retrieveTable(lua_State *L, int index)
+
65 {
+
66  const T x = LuaUtils::retrieveField<T>(L, index, LuaNames::Vector2::x);
+
67  const T y = LuaUtils::retrieveField<T>(L, index, LuaNames::Vector2::y);
+
68  return Vector2<T>(x, y);
+
69 }
+
70 
+
71 template <class T>
+
72 Vector2<T> LuaVector2Utils<T>::retrieveArray(lua_State *L, int index)
+
73 {
+
74  LuaUtils::rawGeti(L, index, 1);
+
75  const T x = LuaUtils::retrieve<T>(L, -1);
+
76  LuaUtils::pop(L);
+
77 
+
78  LuaUtils::rawGeti(L, index, 2);
+
79  const T y = LuaUtils::retrieve<T>(L, -1);
+
80  LuaUtils::pop(L);
+
81 
+
82  return Vector2<T>(x, y);
+
83 }
+
84 
+
85 template <class T>
+
86 Vector2<T> LuaVector2Utils<T>::retrieveParams(lua_State *L, int index)
+
87 {
+
88  const T x = LuaUtils::retrieve<T>(L, index);
+
89  const T y = LuaUtils::retrieve<T>(L, index + 1);
+
90  return Vector2<T>(x, y);
+
91 }
+
92 
+
93 template <class T>
+
94 Vector2<T> LuaVector2Utils<T>::retrieveTableField(lua_State *L, int index, const char *name)
+
95 {
+
96  LuaUtils::retrieveFieldTable(L, index, name);
+
97  const T x = LuaUtils::retrieveField<T>(L, -1, LuaNames::Vector2::x);
+
98  const T y = LuaUtils::retrieveField<T>(L, -1, LuaNames::Vector2::y);
+
99  LuaUtils::pop(L);
+
100 
+
101  return Vector2<T>(x, y);
+
102 }
+
103 
+
104 template <class T>
+
105 Vector2<T> LuaVector2Utils<T>::retrieveArrayField(lua_State *L, int index, const char *name)
+
106 {
+
107  LuaUtils::retrieveFieldTable(L, index, name);
+
108 
+
109  LuaUtils::rawGeti(L, -1, 1);
+
110  const T x = LuaUtils::retrieve<T>(L, -1);
+
111  LuaUtils::pop(L);
+
112 
+
113  LuaUtils::rawGeti(L, -1, 2);
+
114  const T y = LuaUtils::retrieve<T>(L, -1);
+
115  LuaUtils::pop(L);
+
116 
+
117  LuaUtils::pop(L);
+
118 
+
119  return Vector2<T>(x, y);
+
120 }
+
121 
+
122 }
+
123 
+
124 #endif
+
Lua utilities for the Vector2 template class.
Definition: LuaVector2Utils.h:18
+
A two component vector based on templates.
Definition: Vector2.h:11
+
+ + + + diff --git a/master/_lua_vector3_utils_8h_source.html b/master/_lua_vector3_utils_8h_source.html new file mode 100644 index 0000000000..df0895ebff --- /dev/null +++ b/master/_lua_vector3_utils_8h_source.html @@ -0,0 +1,219 @@ + + + + + + + +nCine: include/ncine/LuaVector3Utils.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
LuaVector3Utils.h
+
+
+
1 #ifndef CLASS_NCINE_LUAVECTOR3UTILS
+
2 #define CLASS_NCINE_LUAVECTOR3UTILS
+
3 
+
4 #include "LuaUtils.h"
+
5 #include "Vector3.h"
+
6 
+
7 namespace ncine {
+
8 
+
9 namespace LuaNames {
+
10 namespace Vector3 {
+
11  static const char *x = "x";
+
12  static const char *y = "y";
+
13  static const char *z = "z";
+
14 }}
+
15 
+
17 template <class T>
+ +
19 {
+
20  public:
+
21  static void push(lua_State *L, const Vector3<T> &v);
+
22  static void pushField(lua_State *L, const char *name, const Vector3<T> &v);
+
23  static Vector3<T> retrieve(lua_State *L, int index, int &newIndex);
+
24  static Vector3<T> retrieveTable(lua_State *L, int index);
+
25  static Vector3<T> retrieveArray(lua_State *L, int index);
+
26  static Vector3<T> retrieveParams(lua_State *L, int index);
+
27  static Vector3<T> retrieveTableField(lua_State *L, int index, const char *name);
+
28  static Vector3<T> retrieveArrayField(lua_State *L, int index, const char *name);
+
29 };
+
30 
+ + +
33 
+
34 template <class T>
+
35 void LuaVector3Utils<T>::push(lua_State *L, const Vector3<T> &v)
+
36 {
+
37  LuaUtils::createTable(L, 0, 3);
+
38  LuaUtils::pushField(L, LuaNames::Vector3::x, v.x);
+
39  LuaUtils::pushField(L, LuaNames::Vector3::y, v.y);
+
40  LuaUtils::pushField(L, LuaNames::Vector3::z, v.z);
+
41 }
+
42 
+
43 template <class T>
+
44 void LuaVector3Utils<T>::pushField(lua_State *L, const char *name, const Vector3<T> &v)
+
45 {
+
46  push(L, v);
+
47  LuaUtils::setField(L, -2, name);
+
48 }
+
49 
+
50 template <class T>
+
51 Vector3<T> LuaVector3Utils<T>::retrieve(lua_State *L, int index, int &newIndex)
+
52 {
+
53  if (LuaUtils::isTable(L, index))
+
54  {
+
55  newIndex = index;
+
56  return retrieveTable(L, index);
+
57  }
+
58  else
+
59  {
+
60  newIndex = index - 2;
+
61  return retrieveParams(L, newIndex);
+
62  }
+
63 }
+
64 
+
65 template <class T>
+
66 Vector3<T> LuaVector3Utils<T>::retrieveTable(lua_State *L, int index)
+
67 {
+
68  const T x = LuaUtils::retrieveField<T>(L, index, LuaNames::Vector3::x);
+
69  const T y = LuaUtils::retrieveField<T>(L, index, LuaNames::Vector3::y);
+
70  const T z = LuaUtils::retrieveField<T>(L, index, LuaNames::Vector3::z);
+
71  return Vector3<T>(x, y, z);
+
72 }
+
73 
+
74 template <class T>
+
75 Vector3<T> LuaVector3Utils<T>::retrieveArray(lua_State *L, int index)
+
76 {
+
77  LuaUtils::rawGeti(L, index, 1);
+
78  const T x = LuaUtils::retrieve<T>(L, -1);
+
79  LuaUtils::pop(L);
+
80 
+
81  LuaUtils::rawGeti(L, index, 2);
+
82  const T y = LuaUtils::retrieve<T>(L, -1);
+
83  LuaUtils::pop(L);
+
84 
+
85  LuaUtils::rawGeti(L, index, 3);
+
86  const T z = LuaUtils::retrieve<T>(L, -1);
+
87  LuaUtils::pop(L);
+
88 
+
89  return Vector3<T>(x, y, z);
+
90 }
+
91 
+
92 template <class T>
+
93 Vector3<T> LuaVector3Utils<T>::retrieveParams(lua_State *L, int index)
+
94 {
+
95  const T x = LuaUtils::retrieve<T>(L, index);
+
96  const T y = LuaUtils::retrieve<T>(L, index + 1);
+
97  const T z = LuaUtils::retrieve<T>(L, index + 2);
+
98  return Vector3<T>(x, y, z);
+
99 }
+
100 
+
101 template <class T>
+
102 Vector3<T> LuaVector3Utils<T>::retrieveTableField(lua_State *L, int index, const char *name)
+
103 {
+
104  LuaUtils::retrieveFieldTable(L, index, name);
+
105  const T x = LuaUtils::retrieveField<T>(L, -1, LuaNames::Vector3::x);
+
106  const T y = LuaUtils::retrieveField<T>(L, -1, LuaNames::Vector3::y);
+
107  const T z = LuaUtils::retrieveField<T>(L, -1, LuaNames::Vector3::z);
+
108  LuaUtils::pop(L);
+
109 
+
110  return Vector3<T>(x, y, z);
+
111 }
+
112 
+
113 template <class T>
+
114 Vector3<T> LuaVector3Utils<T>::retrieveArrayField(lua_State *L, int index, const char *name)
+
115 {
+
116  LuaUtils::retrieveFieldTable(L, index, name);
+
117 
+
118  LuaUtils::rawGeti(L, -1, 1);
+
119  const T x = LuaUtils::retrieve<T>(L, -1);
+
120  LuaUtils::pop(L);
+
121 
+
122  LuaUtils::rawGeti(L, -1, 2);
+
123  const T y = LuaUtils::retrieve<T>(L, -1);
+
124  LuaUtils::pop(L);
+
125 
+
126  LuaUtils::rawGeti(L, -1, 3);
+
127  const T z = LuaUtils::retrieve<T>(L, -1);
+
128  LuaUtils::pop(L);
+
129 
+
130  LuaUtils::pop(L);
+
131 
+
132  return Vector3<T>(x, y, z);
+
133 }
+
134 
+
135 }
+
136 
+
137 #endif
+
Lua utilities for the Vector3 template class.
Definition: LuaVector3Utils.h:19
+
A three component vector based on templates.
Definition: Vector3.h:11
+
+ + + + diff --git a/master/_lua_vector4_utils_8h_source.html b/master/_lua_vector4_utils_8h_source.html new file mode 100644 index 0000000000..b633c54019 --- /dev/null +++ b/master/_lua_vector4_utils_8h_source.html @@ -0,0 +1,232 @@ + + + + + + + +nCine: include/ncine/LuaVector4Utils.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
LuaVector4Utils.h
+
+
+
1 #ifndef CLASS_NCINE_LUAVECTOR4UTILS
+
2 #define CLASS_NCINE_LUAVECTOR4UTILS
+
3 
+
4 #include "LuaUtils.h"
+
5 #include "Vector4.h"
+
6 
+
7 namespace ncine {
+
8 
+
9 namespace LuaNames {
+
10 namespace Vector4 {
+
11  static const char *x = "x";
+
12  static const char *y = "y";
+
13  static const char *z = "z";
+
14  static const char *w = "w";
+
15 }}
+
16 
+
18 template <class T>
+ +
20 {
+
21  public:
+
22  static void push(lua_State *L, const Vector4<T> &v);
+
23  static void pushField(lua_State *L, const char *name, const Vector4<T> &v);
+
24  static Vector4<T> retrieve(lua_State *L, int index, int &newIndex);
+
25  static Vector4<T> retrieveTable(lua_State *L, int index);
+
26  static Vector4<T> retrieveArray(lua_State *L, int index);
+
27  static Vector4<T> retrieveParams(lua_State *L, int index);
+
28  static Vector4<T> retrieveTableField(lua_State *L, int index, const char *name);
+
29  static Vector4<T> retrieveArrayField(lua_State *L, int index, const char *name);
+
30 };
+
31 
+ + +
34 
+
35 template <class T>
+
36 void LuaVector4Utils<T>::push(lua_State *L, const Vector4<T> &v)
+
37 {
+
38  LuaUtils::createTable(L, 0, 4);
+
39  LuaUtils::pushField(L, LuaNames::Vector4::x, v.x);
+
40  LuaUtils::pushField(L, LuaNames::Vector4::y, v.y);
+
41  LuaUtils::pushField(L, LuaNames::Vector4::z, v.z);
+
42  LuaUtils::pushField(L, LuaNames::Vector4::w, v.w);
+
43 }
+
44 
+
45 template <class T>
+
46 void LuaVector4Utils<T>::pushField(lua_State *L, const char *name, const Vector4<T> &v)
+
47 {
+
48  push(L, v);
+
49  LuaUtils::setField(L, -2, name);
+
50 }
+
51 
+
52 template <class T>
+
53 Vector4<T> LuaVector4Utils<T>::retrieve(lua_State *L, int index, int &newIndex)
+
54 {
+
55  if (LuaUtils::isTable(L, index))
+
56  {
+
57  newIndex = index;
+
58  return retrieveTable(L, index);
+
59  }
+
60  else
+
61  {
+
62  newIndex = index - 3;
+
63  return retrieveParams(L, newIndex);
+
64  }
+
65 }
+
66 
+
67 template <class T>
+
68 Vector4<T> LuaVector4Utils<T>::retrieveTable(lua_State *L, int index)
+
69 {
+
70  const T x = LuaUtils::retrieveField<T>(L, index, LuaNames::Vector4::x);
+
71  const T y = LuaUtils::retrieveField<T>(L, index, LuaNames::Vector4::y);
+
72  const T z = LuaUtils::retrieveField<T>(L, index, LuaNames::Vector4::z);
+
73  const T w = LuaUtils::retrieveField<T>(L, index, LuaNames::Vector4::w);
+
74  return Vector4<T>(x, y, z, w);
+
75 }
+
76 
+
77 template <class T>
+
78 Vector4<T> LuaVector4Utils<T>::retrieveArray(lua_State *L, int index)
+
79 {
+
80  LuaUtils::rawGeti(L, index, 1);
+
81  const T x = LuaUtils::retrieve<T>(L, -1);
+
82  LuaUtils::pop(L);
+
83 
+
84  LuaUtils::rawGeti(L, index, 2);
+
85  const T y = LuaUtils::retrieve<T>(L, -1);
+
86  LuaUtils::pop(L);
+
87 
+
88  LuaUtils::rawGeti(L, index, 3);
+
89  const T z = LuaUtils::retrieve<T>(L, -1);
+
90  LuaUtils::pop(L);
+
91 
+
92  LuaUtils::rawGeti(L, index, 4);
+
93  const T w = LuaUtils::retrieve<T>(L, -1);
+
94  LuaUtils::pop(L);
+
95 
+
96  return Vector4<T>(x, y, z, w);
+
97 }
+
98 
+
99 template <class T>
+
100 Vector4<T> LuaVector4Utils<T>::retrieveParams(lua_State *L, int index)
+
101 {
+
102  const T x = LuaUtils::retrieve<T>(L, index);
+
103  const T y = LuaUtils::retrieve<T>(L, index + 1);
+
104  const T z = LuaUtils::retrieve<T>(L, index + 2);
+
105  const T w = LuaUtils::retrieve<T>(L, index + 3);
+
106  return Vector4<T>(x, y, z, w);
+
107 }
+
108 
+
109 template <class T>
+
110 Vector4<T> LuaVector4Utils<T>::retrieveTableField(lua_State *L, int index, const char *name)
+
111 {
+
112  LuaUtils::retrieveFieldTable(L, index, name);
+
113  const T x = LuaUtils::retrieveField<T>(L, -1, LuaNames::Vector4::x);
+
114  const T y = LuaUtils::retrieveField<T>(L, -1, LuaNames::Vector4::y);
+
115  const T z = LuaUtils::retrieveField<T>(L, -1, LuaNames::Vector4::z);
+
116  const T w = LuaUtils::retrieveField<T>(L, -1, LuaNames::Vector4::w);
+
117  LuaUtils::pop(L);
+
118 
+
119  return Vector4<T>(x, y, z, w);
+
120 }
+
121 
+
122 template <class T>
+
123 Vector4<T> LuaVector4Utils<T>::retrieveArrayField(lua_State *L, int index, const char *name)
+
124 {
+
125  LuaUtils::retrieveFieldTable(L, index, name);
+
126 
+
127  LuaUtils::rawGeti(L, -1, 1);
+
128  const T x = LuaUtils::retrieve<T>(L, -1);
+
129  LuaUtils::pop(L);
+
130 
+
131  LuaUtils::rawGeti(L, -1, 2);
+
132  const T y = LuaUtils::retrieve<T>(L, -1);
+
133  LuaUtils::pop(L);
+
134 
+
135  LuaUtils::rawGeti(L, -1, 3);
+
136  const T z = LuaUtils::retrieve<T>(L, -1);
+
137  LuaUtils::pop(L);
+
138 
+
139  LuaUtils::rawGeti(L, -1, 4);
+
140  const T w = LuaUtils::retrieve<T>(L, -1);
+
141  LuaUtils::pop(L);
+
142 
+
143  LuaUtils::pop(L);
+
144 
+
145  return Vector4<T>(x, y, z, w);
+
146 }
+
147 
+
148 }
+
149 
+
150 #endif
+
Lua utilities for the Vector4 template class.
Definition: LuaVector4Utils.h:20
+
A four component vector based on templates.
Definition: Vector4.h:12
+
+ + + + diff --git a/master/_malloc_allocator_8h_source.html b/master/_malloc_allocator_8h_source.html new file mode 100644 index 0000000000..3080984814 --- /dev/null +++ b/master/_malloc_allocator_8h_source.html @@ -0,0 +1,110 @@ + + + + + + + +nCine: include/nctl/MallocAllocator.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
MallocAllocator.h
+
+
+
1 #ifndef CLASS_NCTL_MALLOCALLOCATOR
+
2 #define CLASS_NCTL_MALLOCALLOCATOR
+
3 
+
4 #include <nctl/IAllocator.h>
+
5 
+
6 namespace nctl {
+
7 
+
9 class DLL_PUBLIC MallocAllocator : public IAllocator
+
10 {
+
11  public:
+ +
13  : MallocAllocator("Malloc") {}
+
14  explicit MallocAllocator(const char *name);
+
15  ~MallocAllocator();
+
16 
+
17  private:
+
18  MallocAllocator(const MallocAllocator &) = delete;
+
19  MallocAllocator &operator=(const MallocAllocator &) = delete;
+
20 
+
21  static void *allocateImpl(IAllocator *allocator, size_t size, uint8_t alignment);
+
22  static void *reallocateImpl(IAllocator *allocator, void *ptr, size_t size, uint8_t alignment, size_t &oldSize);
+
23  static void deallocateImpl(IAllocator *allocator, void *ptr);
+
24 };
+
25 
+
26 }
+
27 
+
28 #endif
+
The allocator interface.
Definition: IAllocator.h:18
+
The allocator class based on malloc and free
Definition: MallocAllocator.h:10
+
+ + + + diff --git a/master/_matrix4x4_8h_source.html b/master/_matrix4x4_8h_source.html new file mode 100644 index 0000000000..af78c806de --- /dev/null +++ b/master/_matrix4x4_8h_source.html @@ -0,0 +1,798 @@ + + + + + + + +nCine: include/ncine/Matrix4x4.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Matrix4x4.h
+
+
+
1 #ifndef CLASS_NCINE_MATRIX4X4
+
2 #define CLASS_NCINE_MATRIX4X4
+
3 
+
4 #include "Vector3.h"
+
5 #include "Vector4.h"
+
6 
+
7 namespace ncine {
+
8 
+
10 template <class T>
+
11 class Matrix4x4
+
12 {
+
13  public:
+
14  Matrix4x4()
+
15  : vecs_{ Vector4<T>(1, 0, 0, 0), Vector4<T>(0, 1, 0, 0), Vector4<T>(0, 0, 1, 0), Vector4<T>(0, 0, 0, 1) } {}
+
16  Matrix4x4(const Vector4<T> &v0, const Vector4<T> &v1, const Vector4<T> &v2, const Vector4<T> &v3);
+
17 
+
18  void set(const Vector4<T> &v0, const Vector4<T> &v1, const Vector4<T> &v2, const Vector4<T> &v3);
+
19 
+
20  T *data();
+
21  const T *data() const;
+
22 
+
23  Vector4<T> &operator[](unsigned int index);
+
24  const Vector4<T> &operator[](unsigned int index) const;
+
25 
+
26  bool operator==(const Matrix4x4 &m) const;
+
27  Matrix4x4 operator-() const;
+
28 
+
29  Matrix4x4 &operator+=(const Matrix4x4 &m);
+
30  Matrix4x4 &operator-=(const Matrix4x4 &m);
+
31  Matrix4x4 &operator*=(const Matrix4x4 &m);
+
32  Matrix4x4 &operator/=(const Matrix4x4 &m);
+
33 
+
34  Matrix4x4 &operator+=(T s);
+
35  Matrix4x4 &operator-=(T s);
+
36  Matrix4x4 &operator*=(T s);
+
37  Matrix4x4 &operator/=(T s);
+
38 
+
39  Vector4<T> operator*(const Vector4<T> &v) const;
+
40  Vector3<T> operator*(const Vector3<T> &v) const;
+
41 
+
42  template <class S>
+
43  friend Vector4<S> operator*(const Vector4<S> &v, const Matrix4x4<S> &m);
+
44  template <class S>
+
45  friend Vector3<S> operator*(const Vector3<S> &v, const Matrix4x4<S> &m);
+
46 
+
47  Matrix4x4 operator+(const Matrix4x4 &m) const;
+
48  Matrix4x4 operator-(const Matrix4x4 &m) const;
+
49  Matrix4x4 operator*(const Matrix4x4 &m) const;
+
50  Matrix4x4 operator/(const Matrix4x4 &m) const;
+
51 
+
52  Matrix4x4 operator+(T s) const;
+
53  Matrix4x4 operator-(T s) const;
+
54  Matrix4x4 operator*(T s) const;
+
55  Matrix4x4 operator/(T s) const;
+
56 
+
57  template <class S>
+
58  friend Matrix4x4<S> operator*(S s, const Matrix4x4<S> &m);
+
59 
+
60  Matrix4x4 transposed() const;
+
61  Matrix4x4 &transpose();
+
62  Matrix4x4 inverse() const;
+
63 
+
64  Matrix4x4 &translate(T xx, T yy, T zz);
+
65  Matrix4x4 &translate(const Vector3<T> &v);
+
66  Matrix4x4 &rotateX(T degrees);
+
67  Matrix4x4 &rotateY(T degrees);
+
68  Matrix4x4 &rotateZ(T degrees);
+
69  Matrix4x4 &scale(T xx, T yy, T zz);
+
70  Matrix4x4 &scale(const Vector3<T> &v);
+
71  Matrix4x4 &scale(T s);
+
72 
+
73  static Matrix4x4 translation(T xx, T yy, T zz);
+
74  static Matrix4x4 translation(const Vector3<T> &v);
+
75  static Matrix4x4 rotationX(T degrees);
+
76  static Matrix4x4 rotationY(T degrees);
+
77  static Matrix4x4 rotationZ(T degrees);
+
78  static Matrix4x4 scaling(T xx, T yy, T zz);
+
79  static Matrix4x4 scaling(const Vector3<T> &v);
+
80  static Matrix4x4 scaling(T s);
+
81 
+
82  static Matrix4x4 ortho(T left, T right, T bottom, T top, T near, T far);
+
83  static Matrix4x4 frustum(T left, T right, T bottom, T top, T near, T far);
+
84  static Matrix4x4 perspective(T fovY, T aspect, T near, T far);
+
85 
+
87  static const Matrix4x4 Zero;
+
89  static const Matrix4x4 Identity;
+
90 
+
91  private:
+
92  Vector4<T> vecs_[4];
+
93 };
+
94 
+ +
96 
+
97 template <class T>
+
98 inline Matrix4x4<T>::Matrix4x4(const Vector4<T> &v0, const Vector4<T> &v1, const Vector4<T> &v2, const Vector4<T> &v3)
+
99 {
+
100  set(v0, v1, v2, v3);
+
101 }
+
102 
+
103 template <class T>
+
104 inline void Matrix4x4<T>::set(const Vector4<T> &v0, const Vector4<T> &v1, const Vector4<T> &v2, const Vector4<T> &v3)
+
105 {
+
106  vecs_[0] = v0;
+
107  vecs_[1] = v1;
+
108  vecs_[2] = v2;
+
109  vecs_[3] = v3;
+
110 }
+
111 
+
112 template <class T>
+
113 inline T *Matrix4x4<T>::data()
+
114 {
+
115  return &vecs_[0][0];
+
116 }
+
117 
+
118 template <class T>
+
119 inline const T *Matrix4x4<T>::data() const
+
120 {
+
121  return &vecs_[0][0];
+
122 }
+
123 
+
124 template <class T>
+
125 inline Vector4<T> &Matrix4x4<T>::operator[](unsigned int index)
+
126 {
+
127  index = (index < 4) ? index : 3;
+
128  return vecs_[index];
+
129 }
+
130 
+
131 template <class T>
+
132 inline const Vector4<T> &Matrix4x4<T>::operator[](unsigned int index) const
+
133 {
+
134  index = (index < 4) ? index : 3;
+
135  return vecs_[index];
+
136 }
+
137 
+
138 template <class T>
+
139 inline bool Matrix4x4<T>::operator==(const Matrix4x4 &m) const
+
140 {
+
141  return (vecs_[0] == m[0] && vecs_[1] == m[1] && vecs_[2] == m[2] && vecs_[3] == m[3]);
+
142 }
+
143 
+
144 template <class T>
+
145 inline Matrix4x4<T> Matrix4x4<T>::operator-() const
+
146 {
+
147  return Matrix4x4(-vecs_[0], -vecs_[1], -vecs_[2], -vecs_[3]);
+
148 }
+
149 
+
150 template <class T>
+
151 inline Matrix4x4<T> &Matrix4x4<T>::operator+=(const Matrix4x4 &m)
+
152 {
+
153  vecs_[0] += m[0];
+
154  vecs_[1] += m[1];
+
155  vecs_[2] += m[2];
+
156  vecs_[3] += m[3];
+
157 
+
158  return *this;
+
159 }
+
160 
+
161 template <class T>
+
162 inline Matrix4x4<T> &Matrix4x4<T>::operator-=(const Matrix4x4 &m)
+
163 {
+
164  vecs_[0] -= m[0];
+
165  vecs_[1] -= m[1];
+
166  vecs_[2] -= m[2];
+
167  vecs_[3] -= m[3];
+
168 
+
169  return *this;
+
170 }
+
171 
+
172 template <class T>
+
173 inline Matrix4x4<T> &Matrix4x4<T>::operator*=(const Matrix4x4 &m)
+
174 {
+
175  return (*this = *this * m);
+
176 }
+
177 
+
178 template <class T>
+
179 inline Matrix4x4<T> &Matrix4x4<T>::operator/=(const Matrix4x4 &m)
+
180 {
+
181  vecs_[0] /= m[0];
+
182  vecs_[1] /= m[1];
+
183  vecs_[2] /= m[2];
+
184  vecs_[3] /= m[3];
+
185 
+
186  return *this;
+
187 }
+
188 
+
189 template <class T>
+
190 inline Matrix4x4<T> &Matrix4x4<T>::operator+=(T s)
+
191 {
+
192  vecs_[0] += s;
+
193  vecs_[1] += s;
+
194  vecs_[2] += s;
+
195  vecs_[3] += s;
+
196 
+
197  return *this;
+
198 }
+
199 
+
200 template <class T>
+
201 inline Matrix4x4<T> &Matrix4x4<T>::operator-=(T s)
+
202 {
+
203  vecs_[0] -= s;
+
204  vecs_[1] -= s;
+
205  vecs_[2] -= s;
+
206  vecs_[3] -= s;
+
207 
+
208  return *this;
+
209 }
+
210 
+
211 template <class T>
+
212 inline Matrix4x4<T> &Matrix4x4<T>::operator*=(T s)
+
213 {
+
214  vecs_[0] *= s;
+
215  vecs_[1] *= s;
+
216  vecs_[2] *= s;
+
217  vecs_[3] *= s;
+
218 
+
219  return *this;
+
220 }
+
221 
+
222 template <class T>
+
223 inline Matrix4x4<T> &Matrix4x4<T>::operator/=(T s)
+
224 {
+
225  vecs_[0] /= s;
+
226  vecs_[1] /= s;
+
227  vecs_[2] /= s;
+
228  vecs_[3] /= s;
+
229 
+
230  return *this;
+
231 }
+
232 
+
233 template <class T>
+
234 inline Vector4<T> Matrix4x4<T>::operator*(const Vector4<T> &v) const
+
235 {
+
236  const Matrix4x4 &m = *this;
+
237 
+
238  return Vector4<T>(m[0][0] * v[0] + m[0][1] * v[1] + m[0][2] * v[2] + m[0][3] * v[3],
+
239  m[1][0] * v[0] + m[1][1] * v[1] + m[1][2] * v[2] + m[1][3] * v[3],
+
240  m[2][0] * v[0] + m[2][1] * v[1] + m[2][2] * v[2] + m[2][3] * v[3],
+
241  m[3][0] * v[0] + m[3][1] * v[1] + m[3][2] * v[2] + m[3][3] * v[3]);
+
242 }
+
243 
+
244 template <class T>
+
245 inline Vector3<T> Matrix4x4<T>::operator*(const Vector3<T> &v) const
+
246 {
+
247  const Matrix4x4 &m = *this;
+
248 
+
249  return Vector3<T>(m[0][0] * v[0] + m[0][1] * v[1] + m[0][2] * v[2],
+
250  m[1][0] * v[0] + m[1][1] * v[1] + m[1][2] * v[2],
+
251  m[2][0] * v[0] + m[2][1] * v[1] + m[2][2] * v[2]);
+
252 }
+
253 
+
254 template <class S>
+
255 inline Vector4<S> operator*(const Vector4<S> &v, const Matrix4x4<S> &m)
+
256 {
+
257  return Vector4<S>(m[0][0] * v[0] + m[1][0] * v[1] + m[2][0] * v[2] + m[3][0] * v[3],
+
258  m[0][1] * v[0] + m[1][1] * v[1] + m[2][1] * v[2] + m[3][1] * v[3],
+
259  m[0][2] * v[0] + m[1][2] * v[1] + m[2][2] * v[2] + m[3][2] * v[3],
+
260  m[0][3] * v[0] + m[1][3] * v[1] + m[2][3] * v[2] + m[3][3] * v[3]);
+
261 }
+
262 
+
263 template <class S>
+
264 inline Vector3<S> operator*(const Vector3<S> &v, const Matrix4x4<S> &m)
+
265 {
+
266  return Vector3<S>(m[0][0] * v[0] + m[1][0] * v[1] + m[2][0] * v[2],
+
267  m[0][1] * v[0] + m[1][1] * v[1] + m[2][1] * v[2],
+
268  m[0][2] * v[0] + m[1][2] * v[1] + m[2][2] * v[2]);
+
269 }
+
270 
+
271 template <class T>
+
272 inline Matrix4x4<T> Matrix4x4<T>::operator+(const Matrix4x4 &m) const
+
273 {
+
274  return Matrix4x4(vecs_[0] + m[0],
+
275  vecs_[1] + m[1],
+
276  vecs_[2] + m[2],
+
277  vecs_[3] + m[3]);
+
278 }
+
279 
+
280 template <class T>
+
281 inline Matrix4x4<T> Matrix4x4<T>::operator-(const Matrix4x4 &m) const
+
282 {
+
283  return Matrix4x4(vecs_[0] - m[0],
+
284  vecs_[1] - m[1],
+
285  vecs_[2] - m[2],
+
286  vecs_[3] - m[3]);
+
287 }
+
288 
+
289 template <class T>
+
290 inline Matrix4x4<T> Matrix4x4<T>::operator*(const Matrix4x4 &m2) const
+
291 {
+
292  const Matrix4x4 &m1 = *this;
+
293  Matrix4x4 result;
+
294 
+
295  result[0] = m1[0] * m2[0][0] + m1[1] * m2[0][1] + m1[2] * m2[0][2] + m1[3] * m2[0][3];
+
296  result[1] = m1[0] * m2[1][0] + m1[1] * m2[1][1] + m1[2] * m2[1][2] + m1[3] * m2[1][3];
+
297  result[2] = m1[0] * m2[2][0] + m1[1] * m2[2][1] + m1[2] * m2[2][2] + m1[3] * m2[2][3];
+
298  result[3] = m1[0] * m2[3][0] + m1[1] * m2[3][1] + m1[2] * m2[3][2] + m1[3] * m2[3][3];
+
299 
+
300  return result;
+
301 }
+
302 
+
303 template <class T>
+
304 inline Matrix4x4<T> Matrix4x4<T>::operator/(const Matrix4x4 &m) const
+
305 {
+
306  return Matrix4x4(vecs_[0] / m[0],
+
307  vecs_[1] / m[1],
+
308  vecs_[2] / m[2],
+
309  vecs_[3] / m[3]);
+
310 }
+
311 
+
312 template <class T>
+
313 inline Matrix4x4<T> Matrix4x4<T>::operator+(T s) const
+
314 {
+
315  return Matrix4x4(vecs_[0] + s,
+
316  vecs_[1] + s,
+
317  vecs_[2] + s,
+
318  vecs_[3] + s);
+
319 }
+
320 
+
321 template <class T>
+
322 inline Matrix4x4<T> Matrix4x4<T>::operator-(T s) const
+
323 {
+
324  return Matrix4x4(vecs_[0] - s,
+
325  vecs_[1] - s,
+
326  vecs_[2] - s,
+
327  vecs_[3] - s);
+
328 }
+
329 
+
330 template <class T>
+
331 inline Matrix4x4<T> Matrix4x4<T>::operator*(T s) const
+
332 {
+
333  return Matrix4x4(vecs_[0] * s,
+
334  vecs_[1] * s,
+
335  vecs_[2] * s,
+
336  vecs_[3] * s);
+
337 }
+
338 
+
339 template <class T>
+
340 inline Matrix4x4<T> Matrix4x4<T>::operator/(T s) const
+
341 {
+
342  return Matrix4x4(vecs_[0] / s,
+
343  vecs_[1] / s,
+
344  vecs_[2] / s,
+
345  vecs_[3] / s);
+
346 }
+
347 
+
348 template <class S>
+
349 inline Matrix4x4<S> operator*(S s, const Matrix4x4<S> &m)
+
350 {
+
351  return Matrix4x4<S>(s * m.vecs_[0],
+
352  s * m.vecs_[1],
+
353  s * m.vecs_[2],
+
354  s * m.vecs_[3]);
+
355 }
+
356 
+
357 template <class T>
+
358 inline Matrix4x4<T> Matrix4x4<T>::transposed() const
+
359 {
+
360  const Matrix4x4 &m = *this;
+
361  Matrix4x4 result;
+
362 
+
363  result[0][0] = m[0][0];
+
364  result[0][1] = m[1][0];
+
365  result[0][2] = m[2][0];
+
366  result[0][3] = m[3][0];
+
367 
+
368  result[1][0] = m[0][1];
+
369  result[1][1] = m[1][1];
+
370  result[1][2] = m[2][1];
+
371  result[1][3] = m[3][1];
+
372 
+
373  result[2][0] = m[0][2];
+
374  result[2][1] = m[1][2];
+
375  result[2][2] = m[2][2];
+
376  result[2][3] = m[3][2];
+
377 
+
378  result[3][0] = m[0][3];
+
379  result[3][1] = m[1][3];
+
380  result[3][2] = m[2][3];
+
381  result[3][3] = m[3][3];
+
382 
+
383  return result;
+
384 }
+
385 
+
386 template <class T>
+
387 inline Matrix4x4<T> &Matrix4x4<T>::transpose()
+
388 {
+
389  Matrix4x4 &m = *this;
+
390  T x;
+
391 
+
392  // clang-format off
+
393  x = m[0][1]; m[0][1] = m[1][0]; m[1][0] = x;
+
394  x = m[0][2]; m[0][2] = m[2][0]; m[2][0] = x;
+
395  x = m[0][3]; m[0][3] = m[3][0]; m[3][0] = x;
+
396  x = m[1][2]; m[1][2] = m[2][1]; m[2][1] = x;
+
397  x = m[1][3]; m[1][3] = m[3][1]; m[3][1] = x;
+
398  x = m[2][3]; m[2][3] = m[3][2]; m[3][2] = x;
+
399  // clang-format on
+
400 
+
401  return *this;
+
402 }
+
403 
+
404 template <class T>
+
405 inline Matrix4x4<T> Matrix4x4<T>::inverse() const
+
406 {
+
407  const Matrix4x4 &m = *this;
+
408 
+
409  const T coef00 = m[2][2] * m[3][3] - m[3][2] * m[2][3];
+
410  const T coef02 = m[1][2] * m[3][3] - m[3][2] * m[1][3];
+
411  const T coef03 = m[1][2] * m[2][3] - m[2][2] * m[1][3];
+
412 
+
413  const T coef04 = m[2][1] * m[3][3] - m[3][1] * m[2][3];
+
414  const T coef06 = m[1][1] * m[3][3] - m[3][1] * m[1][3];
+
415  const T coef07 = m[1][1] * m[2][3] - m[2][1] * m[1][3];
+
416 
+
417  const T coef08 = m[2][1] * m[3][2] - m[3][1] * m[2][2];
+
418  const T coef10 = m[1][1] * m[3][2] - m[3][1] * m[1][2];
+
419  const T coef11 = m[1][1] * m[2][2] - m[2][1] * m[1][2];
+
420 
+
421  const T coef12 = m[2][0] * m[3][3] - m[3][0] * m[2][3];
+
422  const T coef14 = m[1][0] * m[3][3] - m[3][0] * m[1][3];
+
423  const T coef15 = m[1][0] * m[2][3] - m[2][0] * m[1][3];
+
424 
+
425  const T coef16 = m[2][0] * m[3][2] - m[3][0] * m[2][2];
+
426  const T coef18 = m[1][0] * m[3][2] - m[3][0] * m[1][2];
+
427  const T coef19 = m[1][0] * m[2][2] - m[2][0] * m[1][2];
+
428 
+
429  const T coef20 = m[2][0] * m[3][1] - m[3][0] * m[2][1];
+
430  const T coef22 = m[1][0] * m[3][1] - m[3][0] * m[1][1];
+
431  const T coef23 = m[1][0] * m[2][1] - m[2][0] * m[1][1];
+
432 
+
433  const Vector4<T> fac0(coef00, coef00, coef02, coef03);
+
434  const Vector4<T> fac1(coef04, coef04, coef06, coef07);
+
435  const Vector4<T> fac2(coef08, coef08, coef10, coef11);
+
436  const Vector4<T> fac3(coef12, coef12, coef14, coef15);
+
437  const Vector4<T> fac4(coef16, coef16, coef18, coef19);
+
438  const Vector4<T> fac5(coef20, coef20, coef22, coef23);
+
439 
+
440  const Vector4<T> vec0(m[1][0], m[0][0], m[0][0], m[0][0]);
+
441  const Vector4<T> vec1(m[1][1], m[0][1], m[0][1], m[0][1]);
+
442  const Vector4<T> vec2(m[1][2], m[0][2], m[0][2], m[0][2]);
+
443  const Vector4<T> vec3(m[1][3], m[0][3], m[0][3], m[0][3]);
+
444 
+
445  const Vector4<T> inv0(vec1 * fac0 - vec2 * fac1 + vec3 * fac2);
+
446  const Vector4<T> inv1(vec0 * fac0 - vec2 * fac3 + vec3 * fac4);
+
447  const Vector4<T> inv2(vec0 * fac1 - vec1 * fac3 + vec3 * fac5);
+
448  const Vector4<T> inv3(vec0 * fac2 - vec1 * fac4 + vec2 * fac5);
+
449 
+
450  const Vector4<T> signA(+1, -1, +1, -1);
+
451  const Vector4<T> signB(-1, +1, -1, +1);
+
452  const Matrix4x4 inverse(inv0 * signA, inv1 * signB, inv2 * signA, inv3 * signB);
+
453 
+
454  const Vector4<T> row0(inverse[0][0], inverse[1][0], inverse[2][0], inverse[3][0]);
+
455 
+
456  const Vector4<T> dot0(m[0] * row0);
+
457  const T dot1 = (dot0.x + dot0.y) + (dot0.z + dot0.w);
+
458 
+
459  const T oneOverDeterminant = 1 / dot1;
+
460 
+
461  return inverse * oneOverDeterminant;
+
462 }
+
463 
+
464 template <class T>
+
465 inline Matrix4x4<T> &Matrix4x4<T>::translate(T xx, T yy, T zz)
+
466 {
+
467  Matrix4x4 &m = *this;
+
468 
+
469  m[3][0] += xx * m[0][0] + yy * m[1][0] + zz * m[2][0];
+
470  m[3][1] += xx * m[0][1] + yy * m[1][1] + zz * m[2][1];
+
471  m[3][2] += xx * m[0][2] + yy * m[1][2] + zz * m[2][2];
+
472 
+
473  return *this;
+
474 }
+
475 
+
476 template <class T>
+
477 inline Matrix4x4<T> &Matrix4x4<T>::translate(const Vector3<T> &v)
+
478 {
+
479  return translate(v.x, v.y, v.z);
+
480 }
+
481 
+
482 template <class T>
+
483 inline Matrix4x4<T> &Matrix4x4<T>::rotateX(T degrees)
+
484 {
+
485  Matrix4x4 &m = *this;
+
486  const T m10 = m[1][0];
+
487  const T m20 = m[2][0];
+
488  const T m11 = m[1][1];
+
489  const T m21 = m[2][1];
+
490  const T m12 = m[1][2];
+
491  const T m22 = m[2][2];
+
492  const T m13 = m[1][3];
+
493  const T m23 = m[2][3];
+
494 
+
495  const T radians = degrees * (static_cast<T>(Pi) / 180);
+
496  const T c = cos(radians);
+
497  const T s = sin(radians);
+
498 
+
499  m[1][0] = c * m10 + s * m20;
+
500  m[1][1] = c * m11 + s * m21;
+
501  m[1][2] = c * m12 + s * m22;
+
502  m[1][3] = c * m13 + s * m23;
+
503 
+
504  m[2][0] = -s * m10 + c * m20;
+
505  m[2][1] = -s * m11 + c * m21;
+
506  m[2][2] = -s * m12 + c * m22;
+
507  m[2][3] = -s * m13 + c * m23;
+
508 
+
509  return *this;
+
510 }
+
511 
+
512 template <class T>
+
513 inline Matrix4x4<T> &Matrix4x4<T>::rotateY(T degrees)
+
514 {
+
515  Matrix4x4 &m = *this;
+
516  const T m00 = m[0][0];
+
517  const T m20 = m[2][0];
+
518  const T m01 = m[0][1];
+
519  const T m21 = m[2][1];
+
520  const T m02 = m[0][2];
+
521  const T m22 = m[2][2];
+
522  const T m03 = m[0][3];
+
523  const T m23 = m[2][3];
+
524 
+
525  const T radians = degrees * (static_cast<T>(Pi) / 180);
+
526  const T c = cos(radians);
+
527  const T s = sin(radians);
+
528 
+
529  m[0][0] = c * m00 - s * m20;
+
530  m[0][1] = c * m01 - s * m21;
+
531  m[0][2] = c * m02 - s * m22;
+
532  m[0][3] = c * m03 - s * m23;
+
533 
+
534  m[2][0] = s * m00 + c * m20;
+
535  m[2][1] = s * m01 + c * m21;
+
536  m[2][2] = s * m02 + c * m22;
+
537  m[2][3] = s * m03 + c * m23;
+
538 
+
539  return *this;
+
540 }
+
541 
+
542 template <class T>
+
543 inline Matrix4x4<T> &Matrix4x4<T>::rotateZ(T degrees)
+
544 {
+
545  Matrix4x4 &m = *this;
+
546  const T m00 = m[0][0];
+
547  const T m10 = m[1][0];
+
548  const T m01 = m[0][1];
+
549  const T m11 = m[1][1];
+
550  const T m02 = m[0][2];
+
551  const T m12 = m[1][2];
+
552  const T m03 = m[0][3];
+
553  const T m13 = m[1][3];
+
554 
+
555  const T radians = degrees * (static_cast<T>(Pi) / 180);
+
556  const T c = cos(radians);
+
557  const T s = sin(radians);
+
558 
+
559  m[0][0] = c * m00 + s * m10;
+
560  m[0][1] = c * m01 + s * m11;
+
561  m[0][2] = c * m02 + s * m12;
+
562  m[0][3] = c * m03 + s * m13;
+
563 
+
564  m[1][0] = -s * m00 + c * m10;
+
565  m[1][1] = -s * m01 + c * m11;
+
566  m[1][2] = -s * m02 + c * m12;
+
567  m[1][3] = -s * m03 + c * m13;
+
568 
+
569  return *this;
+
570 }
+
571 
+
572 template <class T>
+
573 inline Matrix4x4<T> &Matrix4x4<T>::scale(T xx, T yy, T zz)
+
574 {
+
575  Matrix4x4 &m = *this;
+
576 
+
577  m[0][0] *= xx;
+
578  m[0][1] *= xx;
+
579  m[0][2] *= xx;
+
580 
+
581  m[1][0] *= yy;
+
582  m[1][1] *= yy;
+
583  m[1][2] *= yy;
+
584 
+
585  m[2][0] *= zz;
+
586  m[2][1] *= zz;
+
587  m[2][2] *= zz;
+
588 
+
589  return *this;
+
590 }
+
591 
+
592 template <class T>
+
593 inline Matrix4x4<T> &Matrix4x4<T>::scale(const Vector3<T> &v)
+
594 {
+
595  return scale(v.x, v.y, v.z);
+
596 }
+
597 
+
598 template <class T>
+
599 inline Matrix4x4<T> &Matrix4x4<T>::scale(T s)
+
600 {
+
601  return scale(s, s, s);
+
602 }
+
603 
+
604 template <class T>
+
605 inline Matrix4x4<T> Matrix4x4<T>::translation(T xx, T yy, T zz)
+
606 {
+
607  return Matrix4x4(Vector4<T>(1, 0, 0, 0),
+
608  Vector4<T>(0, 1, 0, 0),
+
609  Vector4<T>(0, 0, 1, 0),
+
610  Vector4<T>(xx, yy, zz, 1));
+
611 }
+
612 
+
613 template <class T>
+
614 inline Matrix4x4<T> Matrix4x4<T>::translation(const Vector3<T> &v)
+
615 {
+
616  return translation(v.x, v.y, v.z);
+
617 }
+
618 
+
619 template <class T>
+
620 inline Matrix4x4<T> Matrix4x4<T>::rotationX(T degrees)
+
621 {
+
622  const T radians = degrees * (static_cast<T>(Pi) / 180);
+
623  const T c = cos(radians);
+
624  const T s = sin(radians);
+
625 
+
626  return Matrix4x4(Vector4<T>(1, 0, 0, 0),
+
627  Vector4<T>(0, c, s, 0),
+
628  Vector4<T>(0, -s, c, 0),
+
629  Vector4<T>(0, 0, 0, 1));
+
630 }
+
631 
+
632 template <class T>
+
633 inline Matrix4x4<T> Matrix4x4<T>::rotationY(T degrees)
+
634 {
+
635  const T radians = degrees * (static_cast<T>(Pi) / 180);
+
636  const T c = cos(radians);
+
637  const T s = sin(radians);
+
638 
+
639  return Matrix4x4(Vector4<T>(c, 0, -s, 0),
+
640  Vector4<T>(0, 1, 0, 0),
+
641  Vector4<T>(s, 0, c, 0),
+
642  Vector4<T>(0, 0, 0, 1));
+
643 }
+
644 
+
645 template <class T>
+
646 inline Matrix4x4<T> Matrix4x4<T>::rotationZ(T degrees)
+
647 {
+
648  const T radians = degrees * (static_cast<T>(Pi) / 180);
+
649  const T c = cos(radians);
+
650  const T s = sin(radians);
+
651 
+
652  return Matrix4x4(Vector4<T>(c, s, 0, 0),
+
653  Vector4<T>(-s, c, 0, 0),
+
654  Vector4<T>(0, 0, 1, 0),
+
655  Vector4<T>(0, 0, 0, 1));
+
656 }
+
657 
+
658 template <class T>
+
659 inline Matrix4x4<T> Matrix4x4<T>::scaling(T xx, T yy, T zz)
+
660 {
+
661  return Matrix4x4(Vector4<T>(xx, 0, 0, 0),
+
662  Vector4<T>(0, yy, 0, 0),
+
663  Vector4<T>(0, 0, zz, 0),
+
664  Vector4<T>(0, 0, 0, 1));
+
665 }
+
666 
+
667 template <class T>
+
668 inline Matrix4x4<T> Matrix4x4<T>::scaling(const Vector3<T> &v)
+
669 {
+
670  return scaling(v.x, v.y, v.z);
+
671 }
+
672 
+
673 template <class T>
+
674 inline Matrix4x4<T> Matrix4x4<T>::scaling(T s)
+
675 {
+
676  return scaling(s, s, s);
+
677 }
+
678 
+
679 template <class T>
+
680 inline Matrix4x4<T> Matrix4x4<T>::ortho(T left, T right, T bottom, T top, T near, T far)
+
681 {
+
682  return Matrix4x4(Vector4<T>(2 / (right - left), 0, 0, 0),
+
683  Vector4<T>(0, 2 / (top - bottom), 0, 0),
+
684  Vector4<T>(0, 0, -2 / (far - near), 0),
+
685  Vector4<T>(-(right + left) / (right - left), -(top + bottom) / (top - bottom), -(far + near) / (far - near), 1));
+
686 }
+
687 
+
688 template <class T>
+
689 inline Matrix4x4<T> Matrix4x4<T>::frustum(T left, T right, T bottom, T top, T near, T far)
+
690 {
+
691  return Matrix4x4(Vector4<T>((2 * near) / (right - left), 0, 0, 0),
+
692  Vector4<T>(0, (2 * near) / (top - bottom), 0, 0),
+
693  Vector4<T>((right + left) / (right - left), (top + bottom) / (top - bottom), -(far + near) / (far - near), -1),
+
694  Vector4<T>(0, 0, (-2 * far * near) / (far - near), 0));
+
695 }
+
696 
+
697 template <class T>
+
698 inline Matrix4x4<T> Matrix4x4<T>::perspective(T fovY, T aspect, T near, T far)
+
699 {
+
700  const T yMax = near * tan(fovY * static_cast<T>(Pi) / 360);
+
701  const T yMin = -yMax;
+
702  const T xMin = yMin * aspect;
+
703  const T xMax = yMax * aspect;
+
704 
+
705  return frustum(xMin, xMax, yMin, yMax, near, far);
+
706 }
+
707 
+
708 template <class T>
+
709 const Matrix4x4<T> Matrix4x4<T>::Zero(Vector4<T>(0, 0, 0, 0), Vector4<T>(0, 0, 0, 0), Vector4<T>(0, 0, 0, 0), Vector4<T>(0, 0, 0, 0));
+
710 template <class T>
+
711 const Matrix4x4<T> Matrix4x4<T>::Identity(Vector4<T>(1, 0, 0, 0), Vector4<T>(0, 1, 0, 0), Vector4<T>(0, 0, 1, 0), Vector4<T>(0, 0, 0, 1));
+
712 
+
713 }
+
714 
+
715 #endif
+
A four by four matrix based on templates.
Definition: Matrix4x4.h:12
+
static const Matrix4x4 Identity
An identity matrix.
Definition: Matrix4x4.h:89
+
static const Matrix4x4 Zero
A matrix with all zero elements.
Definition: Matrix4x4.h:87
+
A three component vector based on templates.
Definition: Vector3.h:11
+
A four component vector based on templates.
Definition: Vector4.h:12
+
+ + + + diff --git a/master/_mesh_sprite_8h_source.html b/master/_mesh_sprite_8h_source.html new file mode 100644 index 0000000000..1af349367e --- /dev/null +++ b/master/_mesh_sprite_8h_source.html @@ -0,0 +1,213 @@ + + + + + + + +nCine: include/ncine/MeshSprite.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
MeshSprite.h
+
+
+
1 #ifndef CLASS_NCINE_MESHSPRITE
+
2 #define CLASS_NCINE_MESHSPRITE
+
3 
+
4 #include "BaseSprite.h"
+
5 #include <nctl/Array.h>
+
6 
+
7 namespace ncine {
+
8 
+
10 class DLL_PUBLIC MeshSprite : public BaseSprite
+
11 {
+
12  public:
+
14  struct Vertex
+
15  {
+
16  float x, y;
+
17  float u, v;
+
18 
+
19  Vertex()
+
20  : x(0.0f), y(0.0f), u(0.0f), v(0.0f) {}
+
21  Vertex(float xx, float yy, float uu, float vv)
+
22  : x(xx), y(yy), u(uu), v(vv) {}
+
23  };
+
24  static const unsigned int VertexBytes = sizeof(Vertex);
+
25  static const unsigned int VertexFloats = VertexBytes / sizeof(float);
+
26 
+ +
29  {
+
30  float x, y;
+
31 
+ +
33  : x(0.0f), y(0.0f) {}
+
34  VertexNoTexture(float xx, float yy)
+
35  : x(xx), y(yy) {}
+
36  };
+
37  static const unsigned int VertexNoTextureBytes = sizeof(VertexNoTexture);
+
38  static const unsigned int VertexNoTextureFloats = VertexNoTextureBytes / sizeof(float);
+
39 
+
40  enum class TextureCutMode
+
41  {
+
42  RESIZE,
+
43  CROP
+
44  };
+
45 
+
47  MeshSprite();
+
49  MeshSprite(SceneNode *parent, Texture *texture);
+
51  explicit MeshSprite(Texture *texture);
+
53  MeshSprite(SceneNode *parent, Texture *texture, float xx, float yy);
+
55  MeshSprite(SceneNode *parent, Texture *texture, const Vector2f &position);
+
57  MeshSprite(Texture *texture, float xx, float yy);
+
59  MeshSprite(Texture *texture, const Vector2f &position);
+
60 
+
62  MeshSprite(MeshSprite &&) = default;
+ +
65 
+
67  inline MeshSprite clone() const { return MeshSprite(*this); }
+
68 
+
70  inline unsigned int bytesPerVertex() const { return bytesPerVertex_; }
+
72  inline unsigned int numVertices() const { return numVertices_; }
+
74  inline unsigned int numBytes() const { return numVertices_ * bytesPerVertex_; }
+
76  inline const float *vertices() const { return vertexDataPointer_; }
+
78  inline bool uniqueVertices() const { return vertexDataPointer_ == vertices_.data(); }
+
79 
+
81  void copyVertices(unsigned int numVertices, unsigned int bytesPerVertex, const void *vertexData);
+
83  void copyVertices(unsigned int numVertices, const Vertex *vertices);
+
85  void copyVertices(unsigned int numVertices, const VertexNoTexture *vertices);
+
87  void copyVertices(const MeshSprite &meshSprite);
+
88 
+
90  void setVertices(unsigned int numVertices, unsigned int bytesPerVertex, const void *vertexData);
+
92  void setVertices(unsigned int numVertices, const Vertex *vertices);
+
94  void setVertices(unsigned int numVertices, const VertexNoTexture *vertices);
+
96  void setVertices(const MeshSprite &meshSprite);
+
97 
+
99  float *emplaceVertices(unsigned int numElements, unsigned int bytesPerVertex);
+
101  float *emplaceVertices(unsigned int numElements);
+
102 
+
104  void createVerticesFromTexels(unsigned int numVertices, const Vector2f *points, TextureCutMode cutMode);
+
106  void createVerticesFromTexels(unsigned int numVertices, const Vector2f *points);
+
107 
+
109  inline unsigned int numIndices() const { return numIndices_; }
+
111  inline const unsigned short *indices() const { return indexDataPointer_; }
+
113  inline bool uniqueIndices() const { return indexDataPointer_ == indices_.data(); }
+
115  void copyIndices(unsigned int numIndices, const unsigned short *indices);
+
117  void copyIndices(const MeshSprite &meshSprite);
+
119  void setIndices(unsigned int numIndices, const unsigned short *indices);
+
121  void setIndices(const MeshSprite &meshSprite);
+
122 
+
124  unsigned short *emplaceIndices(unsigned int numIndices);
+
125 
+
126  inline static ObjectType sType() { return ObjectType::MESH_SPRITE; }
+
127 
+
128  protected:
+
130  MeshSprite(const MeshSprite &other);
+
131 
+
132  private:
+
134  nctl::Array<float> vertices_;
+
136  const float *vertexDataPointer_;
+
138  unsigned int bytesPerVertex_;
+
140  unsigned int numVertices_;
+
141 
+ +
145  const unsigned short *indexDataPointer_;
+
147  unsigned int numIndices_;
+
148 
+
150  MeshSprite &operator=(const MeshSprite &) = delete;
+
151 
+
153  void init();
+
154 
+
155  void shaderHasChanged() override;
+
156  void textureHasChanged(Texture *newTexture) override;
+
157 };
+
158 
+
159 }
+
160 
+
161 #endif
+
The base class for sprites.
Definition: BaseSprite.h:15
+
A scene node representing a mesh with vertices and UVs.
Definition: MeshSprite.h:11
+
unsigned int numBytes() const
Returns the total number of bytes used by all sprite's vertices.
Definition: MeshSprite.h:74
+
unsigned int bytesPerVertex() const
Returns the number of bytes used by each vertex.
Definition: MeshSprite.h:70
+
MeshSprite clone() const
Returns a copy of this object.
Definition: MeshSprite.h:67
+
bool uniqueIndices() const
Returns true if the indices belong to the sprite and are not stored externally.
Definition: MeshSprite.h:113
+
MeshSprite & operator=(MeshSprite &&)=default
Default move assignment operator.
+
bool uniqueVertices() const
Returns true if the vertices belong to the sprite and are not stored externally.
Definition: MeshSprite.h:78
+
MeshSprite(MeshSprite &&)=default
Default move constructor.
+
unsigned int numVertices() const
Returns the number of vertices of the sprite mesh.
Definition: MeshSprite.h:72
+
unsigned int numIndices() const
Returns the number of indices used to draw the sprite mesh.
Definition: MeshSprite.h:109
+
const float * vertices() const
Returns the vertices data of the sprite mesh.
Definition: MeshSprite.h:76
+
const unsigned short * indices() const
Returns the indices used to draw the sprite mesh.
Definition: MeshSprite.h:111
+
The base class for the transformation nodes hierarchy.
Definition: SceneNode.h:19
+
Texture class.
Definition: Texture.h:16
+ + +
Vertex data for the mesh.
Definition: MeshSprite.h:15
+
Vertex data for the mesh when no texture is specified.
Definition: MeshSprite.h:29
+
+ + + + diff --git a/master/_nuklear_context_8h_source.html b/master/_nuklear_context_8h_source.html new file mode 100644 index 0000000000..37d6cec8db --- /dev/null +++ b/master/_nuklear_context_8h_source.html @@ -0,0 +1,134 @@ + + + + + + + +nCine: include/ncine/NuklearContext.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
NuklearContext.h
+
+
+
1 #ifndef CLASS_NCINE_NUKLEARCONTEXT
+
2 #define CLASS_NCINE_NUKLEARCONTEXT
+
3 
+
4 #include "common_macros.h"
+
5 
+
6 #define NK_INCLUDE_FIXED_TYPES
+
7 #define NK_INCLUDE_DEFAULT_ALLOCATOR
+
8 #define NK_INCLUDE_STANDARD_IO
+
9 #define NK_INCLUDE_VERTEX_BUFFER_OUTPUT
+
10 #define NK_INCLUDE_FONT_BAKING
+
11 #define NK_INCLUDE_DEFAULT_FONT
+
12 
+
13 struct nk_context;
+
14 struct nk_buffer;
+
15 struct nk_font_atlas;
+
16 struct nk_vec2;
+
17 
+
18 namespace ncine {
+
19 
+
21 class DLL_PUBLIC NuklearContext
+
22 {
+
23  public:
+
24  static void init();
+
25  static void shutdown();
+
26 
+
27  static struct nk_context *context();
+
28  static struct nk_font_atlas *atlas();
+
29 
+
30  private:
+
31  static int lastFrameWidth_;
+
32  static int lastFrameHeight_;
+
33 
+
34  static struct nk_context ctx_;
+
35  static struct nk_buffer cmds_;
+
36  static struct nk_font_atlas atlas_;
+
37  static struct nk_vec2 fbScale_;
+
38 
+
39  static int width_;
+
40  static int height_;
+
41  static int displayWidth_;
+
42  static int displayHeight_;
+
43 
+
44  friend class NuklearDrawing;
+
45  friend class NuklearGlfwInput;
+
46  friend class NuklearSdlInput;
+
47  friend class NuklearQt5Input;
+
48  friend class NuklearAndroidInput;
+
49 };
+
50 
+
51 }
+
52 
+
53 #endif
+
The class that stores Nuklear related variables.
Definition: NuklearContext.h:22
+
+ + + + diff --git a/master/_object_8h_source.html b/master/_object_8h_source.html new file mode 100644 index 0000000000..ef51a8772a --- /dev/null +++ b/master/_object_8h_source.html @@ -0,0 +1,152 @@ + + + + + + + +nCine: include/ncine/Object.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Object.h
+
+
+
1 #ifndef CLASS_NCINE_OBJECT
+
2 #define CLASS_NCINE_OBJECT
+
3 
+
4 #include <nctl/StaticString.h>
+
5 
+
6 namespace ncine {
+
7 
+
9 class DLL_PUBLIC Object
+
10 {
+
11  public:
+
13  enum class ObjectType
+
14  {
+
15  BASE = 0,
+
16  TEXTURE,
+
17  SHADER,
+
18  SCENENODE,
+
19  SPRITE,
+
20  MESH_SPRITE,
+
21  ANIMATED_SPRITE,
+
22  PARTICLE,
+
23  PARTICLE_SYSTEM,
+
24  FONT,
+
25  TEXTNODE,
+
26  AUDIOBUFFER,
+
27  AUDIOBUFFER_PLAYER,
+
28  AUDIOSTREAM_PLAYER
+
29  };
+
30 
+
32  static const unsigned int MaxNameLength = 128;
+
33 
+
35  explicit Object(ObjectType type);
+
37  Object(ObjectType type, const char *name);
+
39  virtual ~Object();
+
40 
+
42  Object(Object &&other);
+
44  Object &operator=(Object &&other);
+
45 
+
47  inline unsigned int id() const { return id_; }
+
48 
+
50  inline ObjectType type() const { return type_; }
+
52  inline static ObjectType sType() { return ObjectType::BASE; }
+
53 
+
55  const char *name() const;
+
57  void setName(const char *name);
+
58 
+
60  template <class T> static T *fromId(unsigned int id);
+
61 
+
62  protected:
+ +
65 
+
67  Object(const Object &other);
+
68 
+
69  private:
+
71  unsigned int id_;
+
72 
+
74 
+ +
77 
+
79  Object &operator=(const Object &) = delete;
+
80 };
+
81 
+
82 }
+
83 
+
84 #endif
+
Static RRTI and identification index.
Definition: Object.h:10
+
ObjectType
Object types.
Definition: Object.h:14
+
static ObjectType sType()
Static method to return class type.
Definition: Object.h:52
+
unsigned int id() const
Returns the object identification number.
Definition: Object.h:47
+
ObjectType type_
Object type.
Definition: Object.h:64
+
ObjectType type() const
Returns the object type (RTTI)
Definition: Object.h:50
+ +
+ + + + diff --git a/master/_p_c_application_8h_source.html b/master/_p_c_application_8h_source.html new file mode 100644 index 0000000000..ab72f2f40f --- /dev/null +++ b/master/_p_c_application_8h_source.html @@ -0,0 +1,126 @@ + + + + + + + +nCine: include/ncine/PCApplication.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
PCApplication.h
+
+
+
1 #ifndef CLASS_NCINE_PCAPPLICATION
+
2 #define CLASS_NCINE_PCAPPLICATION
+
3 
+
4 #include "Application.h"
+
5 
+
6 namespace ncine {
+
7 
+
8 class Qt5Widget;
+
9 
+
11 class DLL_PUBLIC PCApplication : public Application
+
12 {
+
13  public:
+
15  static int start(nctl::UniquePtr<IAppEventHandler> (*createAppEventHandler)(), int argc, char **argv);
+
16 
+
17  private:
+
19  bool wasSuspended_;
+
20 
+
22  Qt5Widget *qt5Widget_;
+
23 
+
25  void init(nctl::UniquePtr<IAppEventHandler> (*createAppEventHandler)(), int argc, char **argv);
+
27  void run();
+
29  void processEvents();
+
30 #ifdef __EMSCRIPTEN__
+
31  static void emscriptenStep();
+
32 #endif
+
33 
+ +
36  : Application(), wasSuspended_(false), qt5Widget_(nullptr) {}
+
38  ~PCApplication() = default;
+
40  PCApplication(const PCApplication &) = delete;
+
42  PCApplication &operator=(const PCApplication &) = delete;
+
43 
+
44  friend DLL_PUBLIC Application &theApplication();
+
45  friend class Qt5Widget;
+
46 };
+
47 
+
49 DLL_PUBLIC Application &theApplication();
+
50 
+
51 }
+
52 
+
53 #endif
+
Main entry point and handler for nCine applications.
Definition: Application.h:24
+
Handler class for nCine applications on PC.
Definition: PCApplication.h:12
+
The Qt5 nCine widget.
Definition: Qt5Widget.h:24
+
A unique pointer implementation.
Definition: UniquePtr.h:118
+
+ + + + diff --git a/master/_particle_8h_source.html b/master/_particle_8h_source.html new file mode 100644 index 0000000000..40ce831656 --- /dev/null +++ b/master/_particle_8h_source.html @@ -0,0 +1,145 @@ + + + + + + + +nCine: include/ncine/Particle.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Particle.h
+
+
+
1 #ifndef CLASS_NCINE_PARTICLE
+
2 #define CLASS_NCINE_PARTICLE
+
3 
+
4 #include "Sprite.h"
+
5 #include "Vector2.h"
+
6 
+
7 namespace ncine {
+
8 
+
9 class Texture;
+
10 
+
12 
+
16 class Particle : public Sprite
+
17 {
+
18  public:
+
20  float life_;
+
22  float startingLife; // for affectors
+
24  float startingRotation; // for affectors
+ + +
29 
+ +
32 
+
34  Particle(Particle &&) = default;
+
36  Particle &operator=(Particle &&) = default;
+
37 
+
39  inline bool isAlive() const { return life_ > 0.0f; }
+
40 
+
41  protected:
+
43 
+
44  inline Particle clone() const { return Particle(*this); }
+
45 
+
47  Particle(const Particle &other);
+
48 
+
49  private:
+
51  void init(float life, Vector2f pos, Vector2f vel, float rot, bool inLocalSpace);
+
53  void update(float interval) override;
+
55  void transform() override;
+
56 
+
58  Particle &operator=(const Particle &) = delete;
+
59 
+
60  friend class ParticleSystem;
+
61 };
+
62 
+
63 }
+
64 
+
65 #endif
+
const Texture * texture() const
Gets the texture object.
Definition: BaseSprite.h:28
+
The class holding all the relevant data for a single particle.
Definition: Particle.h:17
+
bool isAlive() const
Returns true if the particle is still alive.
Definition: Particle.h:39
+
Particle clone() const
Returns a copy of this object.
Definition: Particle.h:44
+
float life_
Current particle remaining life in seconds.
Definition: Particle.h:20
+
Particle(SceneNode *parent, Texture *texture)
Constructor for a particle with a parent and texture, positioned in the relative origin.
Definition: Particle.cpp:10
+
float startingLife
Initial particle remaining life.
Definition: Particle.h:22
+
bool inLocalSpace_
A flag indicating if particle transformations are in local space or not.
Definition: Particle.h:28
+
Vector2f velocity_
Current particle velocity vector.
Definition: Particle.h:26
+
Particle & operator=(Particle &&)=default
Default move assignment operator.
+
Particle(Particle &&)=default
Default move constructor.
+
float startingRotation
Initial particle rotation.
Definition: Particle.h:24
+
The class representing a particle system.
Definition: ParticleSystem.h:19
+
The base class for the transformation nodes hierarchy.
Definition: SceneNode.h:19
+
const SceneNode * parent() const
Returns the parent as a constant node, if there is any.
Definition: SceneNode.h:53
+
A scene node representing a regular sprite.
Definition: Sprite.h:10
+
Texture class.
Definition: Texture.h:16
+ +
+ + + + diff --git a/master/_particle_affectors_8h_source.html b/master/_particle_affectors_8h_source.html new file mode 100644 index 0000000000..9706f1e150 --- /dev/null +++ b/master/_particle_affectors_8h_source.html @@ -0,0 +1,419 @@ + + + + + + + +nCine: include/ncine/ParticleAffectors.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ParticleAffectors.h
+
+
+
1 #ifndef CLASS_NCINE_PARTICLEAFFECTORS
+
2 #define CLASS_NCINE_PARTICLEAFFECTORS
+
3 
+
4 #include "Vector2.h"
+
5 #include "Colorf.h"
+
6 #include <nctl/Array.h>
+
7 
+
8 namespace ncine {
+
9 
+
10 class Particle;
+
11 
+
12 const unsigned int StepsInitialSize = 4;
+
13 
+
15 
+
16 class DLL_PUBLIC ParticleAffector
+
17 {
+
18  public:
+
19  enum class Type
+
20  {
+
21  COLOR,
+
22  SIZE,
+
23  ROTATION,
+
24  POSITION,
+
25  VELOCITY
+
26  };
+
27 
+
28  ParticleAffector(Type type)
+
29  : type_(type), enabled_(true) {}
+
30  virtual ~ParticleAffector() {}
+
31 
+
33  void affect(Particle *particle);
+
35  virtual void affect(Particle *particle, float normalizedAge) = 0;
+
36 
+
38  inline Type type() const { return type_; }
+
39 
+
41  inline bool isEnabled() const { return enabled_; }
+
43  inline void setEnabled(bool enabled) { enabled_ = enabled; }
+
44 
+
46  virtual unsigned int numSteps() const = 0;
+
48  virtual void removeStep(unsigned int index) = 0;
+
50  virtual void clearSteps() = 0;
+
51 
+
52  protected:
+
54  Type type_;
+
56  bool enabled_;
+
57 
+
59  ParticleAffector(const ParticleAffector &other) = default;
+
60 };
+
61 
+
63 class DLL_PUBLIC ColorAffector : public ParticleAffector
+
64 {
+
65  public:
+
66  struct ColorStep
+
67  {
+
68  float age;
+
69  Colorf color;
+
70 
+
71  ColorStep()
+
72  : age(0.0f) {}
+
73  ColorStep(float newAge, const Colorf &newColor)
+
74  : age(newAge), color(newColor) {}
+
75  };
+
76 
+ +
78  : ParticleAffector(Type::COLOR), colorSteps_(StepsInitialSize) {}
+
79 
+ + +
84 
+
86  inline ColorAffector clone() const { return ColorAffector(*this); }
+
87 
+
89  void affect(Particle *particle, float normalizedAge) override;
+
90  void addColorStep(float age, const Colorf &color);
+
91  inline void addColorStep(const ColorStep &step) { addColorStep(step.age, step.color); }
+
92 
+
93  inline unsigned int numSteps() const override { return colorSteps_.size(); }
+
94  void removeStep(unsigned int index) override;
+
95  inline void clearSteps() override { colorSteps_.clear(); }
+
96 
+
97  inline nctl::Array<ColorStep> &steps() { return colorSteps_; }
+
98  inline const nctl::Array<ColorStep> &steps() const { return colorSteps_; }
+
99 
+
100  protected:
+
102  ColorAffector(const ColorAffector &other) = default;
+
103 
+
104  private:
+
105  nctl::Array<ColorStep> colorSteps_;
+
106 };
+
107 
+
109 class DLL_PUBLIC SizeAffector : public ParticleAffector
+
110 {
+
111  public:
+
112  struct SizeStep
+
113  {
+
114  float age;
+
115  Vector2f scale;
+
116 
+
117  SizeStep()
+
118  : age(0.0f), scale(1.0f, 1.0f) {}
+
119  SizeStep(float newAge, float newScale)
+
120  : age(newAge), scale(newScale, newScale) {}
+
121  SizeStep(float newAge, float newScaleX, float newScaleY)
+
122  : age(newAge), scale(newScaleX, newScaleY) {}
+
123  SizeStep(float newAge, const Vector2f &newScale)
+
124  : age(newAge), scale(newScale) {}
+
125  };
+
126 
+ +
129  : SizeAffector(1.0f, 1.0f) {}
+
131  explicit SizeAffector(float baseScale)
+
132  : SizeAffector(baseScale, baseScale) {}
+
134  SizeAffector(float baseScaleX, float baseScaleY)
+
135  : ParticleAffector(Type::SIZE), sizeSteps_(StepsInitialSize), baseScale_(baseScaleX, baseScaleY) {}
+
137  explicit SizeAffector(const Vector2f &baseScale)
+
138  : SizeAffector(baseScale.x, baseScale.y) {}
+
139 
+
141  SizeAffector(SizeAffector &&) = default;
+ +
144 
+
146  inline SizeAffector clone() const { return SizeAffector(*this); }
+
147 
+
149  void affect(Particle *particle, float normalizedAge) override;
+
150  inline void addSizeStep(float age, float scale) { addSizeStep(age, scale, scale); }
+
151  void addSizeStep(float age, float scaleX, float scaleY);
+
152  inline void addSizeStep(float age, const Vector2f &scale) { addSizeStep(age, scale.x, scale.y); }
+
153  inline void addSizeStep(const SizeStep &step) { addSizeStep(step.age, step.scale); }
+
154 
+
155  inline unsigned int numSteps() const override { return sizeSteps_.size(); }
+
156  void removeStep(unsigned int index) override;
+
157  inline void clearSteps() override { sizeSteps_.clear(); }
+
158 
+
159  inline nctl::Array<SizeStep> &steps() { return sizeSteps_; }
+
160  inline const nctl::Array<SizeStep> &steps() const { return sizeSteps_; }
+
161 
+
162  inline float baseScaleX() const { return baseScale_.x; }
+
163  inline void setBaseScaleX(float baseScaleX) { baseScale_.x = baseScaleX; }
+
164  inline float baseScaleY() const { return baseScale_.y; }
+
165  inline void setBaseScaleY(float baseScaleY) { baseScale_.y = baseScaleY; }
+
166 
+
168  inline const Vector2f &baseScale() const { return baseScale_; }
+
170  inline void setBaseScale(float baseScale) { baseScale_.set(baseScale, baseScale); }
+
172  inline void setBaseScale(const Vector2f &baseScale) { baseScale_ = baseScale; }
+
173 
+
174  protected:
+
176  SizeAffector(const SizeAffector &other) = default;
+
177 
+
178  private:
+
179  nctl::Array<SizeStep> sizeSteps_;
+
180  Vector2f baseScale_;
+
181 };
+
182 
+
184 class DLL_PUBLIC RotationAffector : public ParticleAffector
+
185 {
+
186  public:
+ +
188  {
+
189  float age;
+
190  float angle;
+
191 
+
192  RotationStep()
+
193  : age(0.0f), angle(0.0f) {}
+
194  RotationStep(float newAge, float newAngle)
+
195  : age(newAge), angle(newAngle) {}
+
196  };
+
197 
+ +
199  : ParticleAffector(Type::ROTATION), rotationSteps_(StepsInitialSize) {}
+
200 
+ + +
205 
+
207  inline RotationAffector clone() const { return RotationAffector(*this); }
+
208 
+
210  void affect(Particle *particle, float normalizedAge) override;
+
211  void addRotationStep(float age, float angle);
+
212  inline void addRotationStep(const RotationStep &step) { addRotationStep(step.age, step.angle); }
+
213 
+
214  inline unsigned int numSteps() const override { return rotationSteps_.size(); }
+
215  void removeStep(unsigned int index) override;
+
216  inline void clearSteps() override { rotationSteps_.clear(); }
+
217 
+
218  inline nctl::Array<RotationStep> &steps() { return rotationSteps_; }
+
219  inline const nctl::Array<RotationStep> &steps() const { return rotationSteps_; }
+
220 
+
221  protected:
+
223  RotationAffector(const RotationAffector &other) = default;
+
224 
+
225  private:
+
226  nctl::Array<RotationStep> rotationSteps_;
+
227 };
+
228 
+
230 class DLL_PUBLIC PositionAffector : public ParticleAffector
+
231 {
+
232  public:
+ +
234  {
+
235  float age;
+
236  Vector2f position;
+
237 
+
238  PositionStep()
+
239  : age(0.0f), position(0.0f, 0.0f) {}
+
240  PositionStep(float newAge, float newPositionX, float newPositionY)
+
241  : age(newAge), position(newPositionX, newPositionY) {}
+
242  };
+
243 
+ +
245  : ParticleAffector(Type::POSITION), positionSteps_(StepsInitialSize) {}
+
246 
+ + +
251 
+
253  inline PositionAffector clone() const { return PositionAffector(*this); }
+
254 
+
256  void affect(Particle *particle, float normalizedAge) override;
+
257  void addPositionStep(float age, float posX, float posY);
+
258  inline void addPositionStep(float age, const Vector2f &position) { addPositionStep(age, position.x, position.y); }
+
259  inline void addPositionStep(const PositionStep &step) { addPositionStep(step.age, step.position); }
+
260 
+
261  inline unsigned int numSteps() const override { return positionSteps_.size(); }
+
262  void removeStep(unsigned int index) override;
+
263  inline void clearSteps() override { positionSteps_.clear(); }
+
264 
+
265  inline nctl::Array<PositionStep> &steps() { return positionSteps_; }
+
266  inline const nctl::Array<PositionStep> &steps() const { return positionSteps_; }
+
267 
+
268  protected:
+
270  PositionAffector(const PositionAffector &other) = default;
+
271 
+
272  private:
+
273  nctl::Array<PositionStep> positionSteps_;
+
274 };
+
275 
+
277 class DLL_PUBLIC VelocityAffector : public ParticleAffector
+
278 {
+
279  public:
+ +
281  {
+
282  float age;
+
283  Vector2f velocity;
+
284 
+
285  VelocityStep()
+
286  : age(0.0f), velocity(0.0f, 0.0f) {}
+
287  VelocityStep(float newAge, float newVelocityX, float newVelocityY)
+
288  : age(newAge), velocity(newVelocityX, newVelocityY) {}
+
289  };
+
290 
+ +
292  : ParticleAffector(Type::VELOCITY), velocitySteps_(StepsInitialSize) {}
+
293 
+ + +
298 
+
300  inline VelocityAffector clone() const { return VelocityAffector(*this); }
+
301 
+
303  void affect(Particle *particle, float normalizedAge) override;
+
304  void addVelocityStep(float age, float velX, float velY);
+
305  inline void addVelocityStep(float age, const Vector2f &velocity) { addVelocityStep(age, velocity.x, velocity.y); }
+
306  inline void addVelocityStep(const VelocityStep &step) { addVelocityStep(step.age, step.velocity); }
+
307 
+
308  inline unsigned int numSteps() const override { return velocitySteps_.size(); }
+
309  void removeStep(unsigned int index) override;
+
310  inline void clearSteps() override { velocitySteps_.clear(); }
+
311 
+
312  inline nctl::Array<VelocityStep> &steps() { return velocitySteps_; }
+
313  inline const nctl::Array<VelocityStep> &steps() const { return velocitySteps_; }
+
314 
+
315  protected:
+
317  VelocityAffector(const VelocityAffector &other) = default;
+
318 
+
319  private:
+
320  nctl::Array<VelocityStep> velocitySteps_;
+
321 };
+
322 
+
323 }
+
324 
+
325 #endif
+
Particle color affector.
Definition: ParticleAffectors.h:64
+
unsigned int numSteps() const override
Returns the number of steps.
Definition: ParticleAffectors.h:93
+
ColorAffector(ColorAffector &&)=default
Default move constructor.
+
void clearSteps() override
Removes all steps.
Definition: ParticleAffectors.h:95
+
ColorAffector(const ColorAffector &other)=default
Protected default copy constructor used to clone objects.
+
ColorAffector & operator=(ColorAffector &&)=default
Default move assignment operator.
+
ColorAffector clone() const
Returns a copy of this object.
Definition: ParticleAffectors.h:86
+
A four channels normalized float color.
Definition: Colorf.h:13
+
Base class for particle affectors.
Definition: ParticleAffectors.h:17
+
void setEnabled(bool enabled)
Enables or disables the affector.
Definition: ParticleAffectors.h:43
+
Type type() const
Returns the affector type.
Definition: ParticleAffectors.h:38
+
virtual unsigned int numSteps() const =0
Returns the number of steps.
+
virtual void affect(Particle *particle, float normalizedAge)=0
Affects a property of the specified particle, without calculating the normalized age.
+
bool isEnabled() const
Returns true if the affector is enabled.
Definition: ParticleAffectors.h:41
+
ParticleAffector(const ParticleAffector &other)=default
Protected default copy constructor used to clone objects.
+
bool enabled_
A flag indicating whether the affector is enabled or not.
Definition: ParticleAffectors.h:56
+
virtual void removeStep(unsigned int index)=0
Removes the step at the specified position index.
+
virtual void clearSteps()=0
Removes all steps.
+
Type type_
Affector type.
Definition: ParticleAffectors.h:54
+
The class holding all the relevant data for a single particle.
Definition: Particle.h:17
+
Particle position affector.
Definition: ParticleAffectors.h:231
+
PositionAffector(const PositionAffector &other)=default
Protected default copy constructor used to clone objects.
+
unsigned int numSteps() const override
Returns the number of steps.
Definition: ParticleAffectors.h:261
+
PositionAffector(PositionAffector &&)=default
Default move constructor.
+
void clearSteps() override
Removes all steps.
Definition: ParticleAffectors.h:263
+
PositionAffector & operator=(PositionAffector &&)=default
Default move assignment operator.
+
PositionAffector clone() const
Returns a copy of this object.
Definition: ParticleAffectors.h:253
+
Particle rotation affector.
Definition: ParticleAffectors.h:185
+
unsigned int numSteps() const override
Returns the number of steps.
Definition: ParticleAffectors.h:214
+
RotationAffector(RotationAffector &&)=default
Default move constructor.
+
RotationAffector & operator=(RotationAffector &&)=default
Default move assignment operator.
+
void clearSteps() override
Removes all steps.
Definition: ParticleAffectors.h:216
+
RotationAffector clone() const
Returns a copy of this object.
Definition: ParticleAffectors.h:207
+
RotationAffector(const RotationAffector &other)=default
Protected default copy constructor used to clone objects.
+
Particle size affector.
Definition: ParticleAffectors.h:110
+
unsigned int numSteps() const override
Returns the number of steps.
Definition: ParticleAffectors.h:155
+
const Vector2f & baseScale() const
Returns the base scale factor that will be multiplied by all steps.
Definition: ParticleAffectors.h:168
+
SizeAffector(const SizeAffector &other)=default
Protected default copy constructor used to clone objects.
+
SizeAffector()
Constructs a size affector with a default base scale factor.
Definition: ParticleAffectors.h:128
+
SizeAffector(SizeAffector &&)=default
Default move constructor.
+
SizeAffector(float baseScale)
Constructs a size affector with a base scale factor as a reference.
Definition: ParticleAffectors.h:131
+
void setBaseScale(float baseScale)
Sets a base scale factor that will be multiplied by all steps.
Definition: ParticleAffectors.h:170
+
SizeAffector(float baseScaleX, float baseScaleY)
Constructs a size affector with a horizontal and a vertical base scale factor as a reference.
Definition: ParticleAffectors.h:134
+
SizeAffector(const Vector2f &baseScale)
Constructs a size affector with a vector base scale factor as a reference.
Definition: ParticleAffectors.h:137
+
void setBaseScale(const Vector2f &baseScale)
Sets a base scale factor with a Vector2f, that will be multiplied by all steps.
Definition: ParticleAffectors.h:172
+
SizeAffector clone() const
Returns a copy of this object.
Definition: ParticleAffectors.h:146
+
void clearSteps() override
Removes all steps.
Definition: ParticleAffectors.h:157
+
SizeAffector & operator=(SizeAffector &&)=default
Default move assignment operator.
+ +
Particle velocity affector.
Definition: ParticleAffectors.h:278
+
VelocityAffector(const VelocityAffector &other)=default
Protected default copy constructor used to clone objects.
+
VelocityAffector clone() const
Returns a copy of this object.
Definition: ParticleAffectors.h:300
+
VelocityAffector(VelocityAffector &&)=default
Default move constructor.
+
VelocityAffector & operator=(VelocityAffector &&)=default
Default move assignment operator.
+
void clearSteps() override
Removes all steps.
Definition: ParticleAffectors.h:310
+
unsigned int numSteps() const override
Returns the number of steps.
Definition: ParticleAffectors.h:308
+
A dynamic array based on templates that stores elements in the heap.
Definition: Array.h:31
+
Definition: ParticleAffectors.h:67
+
Definition: ParticleAffectors.h:234
+
Definition: ParticleAffectors.h:188
+
Definition: ParticleAffectors.h:113
+
Definition: ParticleAffectors.h:281
+
+ + + + diff --git a/master/_particle_initializer_8h_source.html b/master/_particle_initializer_8h_source.html new file mode 100644 index 0000000000..1843bc1f6a --- /dev/null +++ b/master/_particle_initializer_8h_source.html @@ -0,0 +1,138 @@ + + + + + + + +nCine: include/ncine/ParticleInitializer.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ParticleInitializer.h
+
+
+
1 #ifndef CLASS_NCINE_PARTICLEINITIALIZER
+
2 #define CLASS_NCINE_PARTICLEINITIALIZER
+
3 
+
4 #include "common_defines.h"
+
5 #include "Vector2.h"
+
6 
+
7 namespace ncine {
+
8 
+
10 
+
11 struct DLL_PUBLIC ParticleInitializer
+
12 {
+
13  Vector2i rndAmount = Vector2i(1, 1);
+
14  Vector2f rndLife = Vector2f(1.0f, 1.0f);
+
15  Vector2f rndPositionX = Vector2f::Zero;
+
16  Vector2f rndPositionY = Vector2f::Zero;
+
17  Vector2f rndVelocityX = Vector2f::Zero;
+
18  Vector2f rndVelocityY = Vector2f::Zero;
+
19  Vector2f rndRotation = Vector2f::Zero;
+
20  bool emitterRotation = true;
+
21 
+
23  void validateMinMax();
+
24 
+
25  void setAmount(int amount);
+
26  void setAmount(int minAmount, int maxAmount);
+
27 
+
28  void setLife(float life);
+
29  void setLife(float minLife, float maxLife);
+
30 
+
31  void setPosition(float x, float y);
+
32  void setPosition(float minX, float minY, float maxX, float maxY);
+
33  void setPositionAndRadius(float x, float y, float radius);
+
34  void setPosition(const Vector2f &pos);
+
35  void setPosition(const Vector2f &minPos, const Vector2f &maxPos);
+
36  void setPositionAndRadius(const Vector2f &pos, float radius);
+
37  void setPositionInDisc(float radius);
+
38 
+
39  void setVelocity(float x, float y);
+
40  void setVelocity(float minX, float minY, float maxX, float maxY);
+
41  void setVelocityAndRadius(float x, float y, float radius);
+
42  void setVelocityAndScale(float x, float y, float minScale, float maxScale);
+
43  void setVelocityAndAngle(float x, float y, float angle);
+
44  void setVelocity(const Vector2f &vel);
+
45  void setVelocity(const Vector2f &minVel, const Vector2f &maxVel);
+
46  void setVelocityAndRadius(const Vector2f &vel, float radius);
+
47  void setVelocityAndScale(const Vector2f &vel, float minScale, float maxScale);
+
48  void setVelocityAndAngle(const Vector2f &vel, float angle);
+
49 
+
50  void setRotation(float rot);
+
51  void setRotation(float minRot, float maxRot);
+
52 };
+
53 
+
54 }
+
55 
+
56 #endif
+ +
static const Vector2 Zero
A vector with all zero elements.
Definition: Vector2.h:68
+
Initialization parameters for particles.
Definition: ParticleInitializer.h:12
+
+ + + + diff --git a/master/_particle_system_8h_source.html b/master/_particle_system_8h_source.html new file mode 100644 index 0000000000..f728cda2e2 --- /dev/null +++ b/master/_particle_system_8h_source.html @@ -0,0 +1,192 @@ + + + + + + + +nCine: include/ncine/ParticleSystem.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ParticleSystem.h
+
+
+
1 #ifndef CLASS_NCINE_PARTICLESYSTEM
+
2 #define CLASS_NCINE_PARTICLESYSTEM
+
3 
+
4 #include <ctime>
+
5 #include <cstdlib>
+
6 #include "Rect.h"
+
7 #include "SceneNode.h"
+
8 #include "ParticleAffectors.h"
+
9 #include "Particle.h"
+
10 #include "DrawableNode.h"
+
11 
+
12 namespace ncine {
+
13 
+
14 class Texture;
+
15 struct ParticleInitializer;
+
16 
+
18 class DLL_PUBLIC ParticleSystem : public SceneNode
+
19 {
+
20  public:
+
22  ParticleSystem(SceneNode *parent, unsigned int count, Texture *texture);
+
24  ParticleSystem(SceneNode *parent, unsigned int count, Texture *texture, Recti texRect);
+
25 
+ + +
30 
+
32  inline ParticleSystem clone() const { return ParticleSystem(*this); }
+
33 
+
35  inline void addAffector(nctl::UniquePtr<ParticleAffector> affector) { affectors_.pushBack(nctl::move(affector)); }
+
37  void clearAffectors();
+
39  void emitParticles(const ParticleInitializer &init);
+
41  void killParticles();
+
42 
+
44  inline nctl::Array<nctl::UniquePtr<ParticleAffector>> &affectors() { return affectors_; }
+
46  inline const nctl::Array<nctl::UniquePtr<ParticleAffector>> &affectors() const { return affectors_; }
+
47 
+
49  inline bool inLocalSpace(void) const { return inLocalSpace_; }
+
51  inline void setInLocalSpace(bool inLocalSpace) { inLocalSpace_ = inLocalSpace; }
+
52 
+
54  inline bool isParticlesUpdateEnabled(void) const { return particlesUpdateEnabled_; }
+
56  inline void setParticlesUpdateEnabled(bool particlesUpdateEnabled) { particlesUpdateEnabled_ = particlesUpdateEnabled; }
+
57 
+
59  inline bool areAffectorsEnabled(void) const { return affectorsEnabled_; }
+
61  inline void setAffectorsEnabled(bool affectorsEnabled) { affectorsEnabled_ = affectorsEnabled; }
+
62 
+
64  inline unsigned int numParticles() const { return particleArray_.size(); }
+
66  inline unsigned int numAliveParticles() const { return particleArray_.size() - poolTop_ - 1; }
+
67 
+
69  void setTexture(Texture *texture);
+
71  void setTexRect(const Recti &rect);
+
72 
+
74  void setAnchorPoint(float xx, float yy);
+
76  void setAnchorPoint(const Vector2f &point);
+
77 
+
79  void setFlippedX(bool flippedX);
+
81  void setFlippedY(bool flippedY);
+
82 
+
84  void setBlendingPreset(DrawableNode::BlendingPreset blendingPreset);
+
86  void setBlendingFactors(DrawableNode::BlendingFactor srcBlendingFactor, DrawableNode::BlendingFactor destBlendingFactor);
+
87 
+
89  void setLayer(uint16_t layer);
+
90 
+
91  void update(float interval) override;
+
92 
+
93  inline static ObjectType sType() { return ObjectType::PARTICLE_SYSTEM; }
+
94 
+
95  protected:
+
97  ParticleSystem(const ParticleSystem &other);
+
98 
+
99  private:
+
101  unsigned int poolSize_;
+
103  int poolTop_;
+
105  nctl::Array<Particle *> particlePool_;
+ +
108 
+ +
111 
+
113  bool inLocalSpace_;
+
114 
+
115  bool particlesUpdateEnabled_;
+
116  bool affectorsEnabled_;
+
117 
+
119  ParticleSystem &operator=(const ParticleSystem &) = delete;
+
120 };
+
121 
+
122 }
+
123 
+
124 #endif
+
BlendingPreset
Presets for blending factors.
Definition: DrawableNode.h:25
+
BlendingFactor
OpenGL blending factors.
Definition: DrawableNode.h:35
+
The class representing a particle system.
Definition: ParticleSystem.h:19
+
ParticleSystem & operator=(ParticleSystem &&)
Default move assignment operator.
+
bool inLocalSpace(void) const
Returns true if particles are positioned using the particle system as their origin.
Definition: ParticleSystem.h:49
+
void setParticlesUpdateEnabled(bool particlesUpdateEnabled)
Enables or disables particles updating.
Definition: ParticleSystem.h:56
+
unsigned int numAliveParticles() const
Returns the number of particles currently alive.
Definition: ParticleSystem.h:66
+
const nctl::Array< nctl::UniquePtr< ParticleAffector > > & affectors() const
Returns the constant array of particle affectors.
Definition: ParticleSystem.h:46
+
nctl::Array< nctl::UniquePtr< ParticleAffector > > & affectors()
Returns the array of particle affectors.
Definition: ParticleSystem.h:44
+
bool isParticlesUpdateEnabled(void) const
Returns true if particles are updating.
Definition: ParticleSystem.h:54
+
void setAffectorsEnabled(bool affectorsEnabled)
Enables or disables affectors modifying particles properties.
Definition: ParticleSystem.h:61
+
void setInLocalSpace(bool inLocalSpace)
Sets or clears the local space flag, to move particles around the particle system or freely.
Definition: ParticleSystem.h:51
+
bool areAffectorsEnabled(void) const
Returns true if affectors are modifying particles properties.
Definition: ParticleSystem.h:59
+
ParticleSystem(ParticleSystem &&)
Default move constructor.
+
void addAffector(nctl::UniquePtr< ParticleAffector > affector)
Adds a particle affector.
Definition: ParticleSystem.h:35
+
ParticleSystem clone() const
Returns a copy of this object.
Definition: ParticleSystem.h:32
+
unsigned int numParticles() const
Returns the total number of particles in the system.
Definition: ParticleSystem.h:64
+ +
The base class for the transformation nodes hierarchy.
Definition: SceneNode.h:19
+
Texture class.
Definition: Texture.h:16
+ +
A dynamic array based on templates that stores elements in the heap.
Definition: Array.h:31
+
A unique pointer implementation.
Definition: UniquePtr.h:118
+
Initialization parameters for particles.
Definition: ParticleInitializer.h:12
+
+ + + + diff --git a/master/_pointer_math_8h_source.html b/master/_pointer_math_8h_source.html new file mode 100644 index 0000000000..bfe233256b --- /dev/null +++ b/master/_pointer_math_8h_source.html @@ -0,0 +1,138 @@ + + + + + + + +nCine: include/nctl/PointerMath.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
PointerMath.h
+
+
+
1 #ifndef CLASS_NCTL_POINTERMATH
+
2 #define CLASS_NCTL_POINTERMATH
+
3 
+
4 #include <cstdint>
+
5 #include <cstddef>
+
6 #include <ncine/common_defines.h>
+
7 
+
8 namespace nctl {
+
9 
+
11 namespace PointerMath
+
12 {
+
13  inline void *add(void *ptr, size_t amount) { return reinterpret_cast<void *>(reinterpret_cast<uintptr_t>(ptr) + amount); }
+
14  inline void *subtract(void *ptr, size_t amount) { return reinterpret_cast<void *>(reinterpret_cast<uintptr_t>(ptr) - amount); }
+
15 
+
16  inline uintptr_t add(void *first, void *second) { return reinterpret_cast<uintptr_t>(first) + reinterpret_cast<uintptr_t>(second); }
+
17  inline uintptr_t subtract(void *first, void *second) { return reinterpret_cast<uintptr_t>(first) - reinterpret_cast<uintptr_t>(second); }
+
18 
+
19  inline void *align(void *ptr, uint8_t alignment)
+
20  {
+
21  return reinterpret_cast<void *>((reinterpret_cast<uintptr_t>(ptr) +
+
22  static_cast<uintptr_t>(alignment - 1)) &
+
23  static_cast<uintptr_t>(~(alignment - 1)));
+
24  }
+
25 
+
26  inline uint8_t alignAdjustment(const void *ptr, uint8_t alignment)
+
27  {
+
28  const uint8_t amount = alignment - (reinterpret_cast<uintptr_t>(ptr) & (alignment - 1));
+
29 
+
30  if (amount == alignment)
+
31  return 0;
+
32 
+
33  return amount;
+
34  }
+
35 
+
36  inline uint8_t alignWithHeader(const void *ptr, uint8_t alignment, uint8_t headerSize)
+
37  {
+
38  uint8_t amount = alignAdjustment(ptr, alignment);
+
39  uint8_t spaceNeeded = headerSize;
+
40 
+
41  if (amount < spaceNeeded)
+
42  {
+
43  spaceNeeded -= amount;
+
44 
+
45  // Increase the amount to fit the header
+
46  amount += alignment * (spaceNeeded / alignment);
+
47 
+
48  if (spaceNeeded % alignment > 0)
+
49  amount += alignment;
+
50  }
+
51 
+
52  return amount;
+
53  }
+
54 }
+
55 
+
56 }
+
57 
+
58 #endif
+
+ + + + diff --git a/master/_pool_allocator_8h_source.html b/master/_pool_allocator_8h_source.html new file mode 100644 index 0000000000..0b18728adc --- /dev/null +++ b/master/_pool_allocator_8h_source.html @@ -0,0 +1,129 @@ + + + + + + + +nCine: include/nctl/PoolAllocator.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
PoolAllocator.h
+
+
+
1 #ifndef CLASS_NCTL_POOLALLOCATOR
+
2 #define CLASS_NCTL_POOLALLOCATOR
+
3 
+
4 #include <nctl/IAllocator.h>
+
5 
+
6 namespace nctl {
+
7 
+
9 class DLL_PUBLIC PoolAllocator : public IAllocator
+
10 {
+
11  public:
+ +
13  : PoolAllocator("Pool") {}
+
14  explicit PoolAllocator(const char *name);
+
15  PoolAllocator(size_t elementSize, size_t size, void *base)
+
16  : PoolAllocator("Pool", elementSize, DefaultAlignment, size, base) {}
+
17  PoolAllocator(const char *name, size_t elementSize, size_t size, void *base)
+
18  : PoolAllocator(name, elementSize, DefaultAlignment, size, base) {}
+
19  PoolAllocator(size_t elementSize, uint8_t elementAlignment, size_t size, void *base)
+
20  : PoolAllocator("Pool", elementSize, elementAlignment, size, base) {}
+
21  PoolAllocator(const char *name, size_t elementSize, uint8_t elementAlignment, size_t size, void *base);
+
22  ~PoolAllocator();
+
23 
+
24  inline void init(size_t elementSize, size_t size, void *base) { init(elementSize, DefaultAlignment, size, base); }
+
25  void init(size_t elementSize, uint8_t elementAlignment, size_t size, void *base);
+
26  inline size_t elementSize() const { return elementSize_; }
+
27  inline uint8_t elementAlignment() const { return elementAlignment_; }
+
28  void **freeList() const { return freeList_; }
+
29 
+
30  private:
+
31  size_t elementSize_;
+
32  uint8_t elementAlignment_;
+
33  void **freeList_;
+
34 
+
35  PoolAllocator(const PoolAllocator &) = delete;
+
36  PoolAllocator &operator=(const PoolAllocator &) = delete;
+
37 
+
38  void internalInit();
+
39 
+
40  static void *allocateImpl(IAllocator *allocator, size_t size, uint8_t alignment);
+
41  static void *reallocateImpl(IAllocator *allocator, void *ptr, size_t size, uint8_t alignment, size_t &oldSize);
+
42  static void deallocateImpl(IAllocator *allocator, void *ptr);
+
43 };
+
44 
+
45 }
+
46 
+
47 #endif
+
The allocator interface.
Definition: IAllocator.h:18
+
A pool allocator.
Definition: PoolAllocator.h:10
+
+ + + + diff --git a/master/_proxy_allocator_8h_source.html b/master/_proxy_allocator_8h_source.html new file mode 100644 index 0000000000..089ade5a65 --- /dev/null +++ b/master/_proxy_allocator_8h_source.html @@ -0,0 +1,112 @@ + + + + + + + +nCine: include/nctl/ProxyAllocator.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ProxyAllocator.h
+
+
+
1 #ifndef CLASS_NCTL_PROXYALLOCATOR
+
2 #define CLASS_NCTL_PROXYALLOCATOR
+
3 
+
4 #include <nctl/IAllocator.h>
+
5 
+
6 namespace nctl {
+
7 
+
9 class DLL_PUBLIC ProxyAllocator : public IAllocator
+
10 {
+
11  public:
+
12  explicit ProxyAllocator(IAllocator &allocator)
+
13  : ProxyAllocator("Proxy", allocator) {}
+
14  ProxyAllocator(const char *name, IAllocator &allocator);
+
15  ~ProxyAllocator();
+
16 
+
17  private:
+
18  IAllocator &allocator_;
+
19 
+
20  ProxyAllocator(const ProxyAllocator &) = delete;
+
21  ProxyAllocator &operator=(const ProxyAllocator &) = delete;
+
22 
+
23  static void *allocateImpl(IAllocator *allocator, size_t size, uint8_t alignment);
+
24  static void *reallocateImpl(IAllocator *allocator, void *ptr, size_t size, uint8_t alignment, size_t &oldSize);
+
25  static void deallocateImpl(IAllocator *allocator, void *ptr);
+
26 };
+
27 
+
28 }
+
29 
+
30 #endif
+
The allocator interface.
Definition: IAllocator.h:18
+
A proxy allocator.
Definition: ProxyAllocator.h:10
+
+ + + + diff --git a/master/_qt5_widget_8h_source.html b/master/_qt5_widget_8h_source.html new file mode 100644 index 0000000000..44912e0e01 --- /dev/null +++ b/master/_qt5_widget_8h_source.html @@ -0,0 +1,156 @@ + + + + + + + +nCine: include/ncine/Qt5Widget.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Qt5Widget.h
+
+
+
1 #ifndef CLASS_NCINE_QT5WIDGET
+
2 #define CLASS_NCINE_QT5WIDGET
+
3 
+
4 #include "common_macros.h"
+
5 #include <QOpenGLWidget>
+
6 
+
7 #if defined(_WIN32) && defined(ERROR)
+
8  #undef ERROR
+
9 #endif
+
10 
+
11 namespace ncine {
+
12 
+
13 class PCApplication;
+
14 class IAppEventHandler;
+
15 
+
16 }
+
17 
+
18 class QWindow;
+
19 
+
20 namespace ncine {
+
21 
+
23 class DLL_PUBLIC Qt5Widget : public QOpenGLWidget
+
24 {
+
25  Q_OBJECT
+
26 
+
27  public:
+
28  explicit Qt5Widget(nctl::UniquePtr<IAppEventHandler> (*createAppEventHandler)())
+
29  : Qt5Widget(nullptr, createAppEventHandler, 0, nullptr) {}
+
30  Qt5Widget(nctl::UniquePtr<IAppEventHandler> (*createAppEventHandler)(), int argc, char **argv)
+
31  : Qt5Widget(nullptr, createAppEventHandler, argc, argv) {}
+
32  Qt5Widget(QWidget *parent, nctl::UniquePtr<IAppEventHandler> (*createAppEventHandler)(), int argc, char **argv);
+
33  ~Qt5Widget();
+
34 
+
36  inline void setShouldUpdate(bool shouldUpdate) { shouldUpdate_ = shouldUpdate; }
+
37 
+
38  IAppEventHandler &appEventHandler();
+
39 
+
41  void makeCurrent();
+
42 
+
43  protected:
+
44  bool event(QEvent *event) override;
+
45 
+
46  void initializeGL() override;
+
47  void resizeGL(int w, int h) override;
+
48  void paintGL() override;
+
49 
+
50  QSize minimumSizeHint() const override;
+
51  QSize sizeHint() const override;
+
52 
+
53  private slots:
+
55  void autoUpdate();
+
57  void screenConfigurationChange(QScreen *);
+
58 
+
59  private:
+
60  PCApplication &application_;
+
61  nctl::UniquePtr<IAppEventHandler> (*createAppEventHandler_)();
+
62  bool isInitialized_;
+
63  bool shouldUpdate_;
+
64 
+
65  void shutdown();
+
66 
+
68  using QOpenGLWidget::makeCurrent;
+
69 
+
71  Qt5Widget(const Qt5Widget &) = delete;
+
73  Qt5Widget &operator=(const Qt5Widget &) = delete;
+
74 };
+
75 
+
76 }
+
77 
+
78 #endif
+
The interface class for handling nCine application events.
Definition: IAppEventHandler.h:13
+
Handler class for nCine applications on PC.
Definition: PCApplication.h:12
+
The Qt5 nCine widget.
Definition: Qt5Widget.h:24
+
void setShouldUpdate(bool shouldUpdate)
If set to false the widget will stop to automatically update each frame.
Definition: Qt5Widget.h:36
+
A unique pointer implementation.
Definition: UniquePtr.h:118
+
+ + + + diff --git a/master/_quaternion_8h_source.html b/master/_quaternion_8h_source.html new file mode 100644 index 0000000000..e200808bf4 --- /dev/null +++ b/master/_quaternion_8h_source.html @@ -0,0 +1,434 @@ + + + + + + + +nCine: include/ncine/Quaternion.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Quaternion.h
+
+
+
1 #ifndef CLASS_NCINE_QUATERNION
+
2 #define CLASS_NCINE_QUATERNION
+
3 
+
4 #include "Matrix4x4.h"
+
5 
+
6 namespace ncine {
+
7 
+
9 template <class T>
+ +
11 {
+
12  public:
+
13  T x, y, z, w;
+
14 
+
15  Quaternion()
+
16  : x(0), y(0), z(0), w(1) {}
+
17  Quaternion(T xx, T yy, T zz, T ww)
+
18  : x(xx), y(yy), z(zz), w(ww) {}
+
19  explicit Quaternion(const Vector4<T> &v)
+
20  : x(v.x), y(v.y), z(v.z), w(v.w) {}
+
21  Quaternion(const Quaternion &other)
+
22  : x(other.x), y(other.y), z(other.z), w(other.w) {}
+
23  Quaternion &operator=(const Quaternion &other);
+
24 
+
25  void set(T xx, T yy, T zz, T ww);
+
26 
+
27  T *data();
+
28  const T *data() const;
+
29 
+
30  T &operator[](unsigned int index);
+
31  const T &operator[](unsigned int index) const;
+
32 
+
33  bool operator==(const Quaternion &q) const;
+
34  Quaternion operator-() const;
+
35 
+
36  Quaternion &operator+=(const Quaternion &q);
+
37  Quaternion &operator-=(const Quaternion &q);
+
38  Quaternion &operator*=(const Quaternion &q);
+
39 
+
40  Quaternion &operator*=(T s);
+
41  Quaternion &operator/=(T s);
+
42 
+
43  Quaternion operator+(const Quaternion &q) const;
+
44  Quaternion operator-(const Quaternion &q) const;
+
45  Quaternion operator*(const Quaternion &q) const;
+
46 
+
47  Quaternion operator*(T s) const;
+
48  Quaternion operator/(T s) const;
+
49 
+
50  T magnitude() const;
+
51  T sqrMagnitude() const;
+
52  Quaternion normalized() const;
+
53  Quaternion &normalize();
+
54  Quaternion conjugated() const;
+
55  Quaternion &conjugate();
+
56 
+
57  Matrix4x4<T> toMatrix4x4() const;
+
58  static Quaternion fromAxisAngle(T xx, T yy, T zz, T degrees);
+
59  static Quaternion fromAxisAngle(const Vector3<T> &axis, T degrees);
+
60  static Quaternion fromXAxisAngle(T degrees);
+
61  static Quaternion fromYAxisAngle(T degrees);
+
62  static Quaternion fromZAxisAngle(T degrees);
+
63 
+
65  static const Quaternion Zero;
+
67  static const Quaternion Identity;
+
68 };
+
69 
+ +
71 
+
72 template <class T>
+ +
74 {
+
75  x = other.x;
+
76  y = other.y;
+
77  z = other.z;
+
78  w = other.w;
+
79 
+
80  return *this;
+
81 }
+
82 
+
83 template <class T>
+
84 inline void Quaternion<T>::set(T xx, T yy, T zz, T ww)
+
85 {
+
86  x = xx;
+
87  y = yy;
+
88  z = zz;
+
89  w = ww;
+
90 }
+
91 
+
92 template <class T>
+
93 inline T *Quaternion<T>::data()
+
94 {
+
95  return &x;
+
96 }
+
97 
+
98 template <class T>
+
99 inline const T *Quaternion<T>::data() const
+
100 {
+
101  return &x;
+
102 }
+
103 
+
104 template <class T>
+
105 inline T &Quaternion<T>::operator[](unsigned int index)
+
106 {
+
107  index = (index < 4) ? index : 3;
+
108  return (&x)[index];
+
109 }
+
110 
+
111 template <class T>
+
112 inline const T &Quaternion<T>::operator[](unsigned int index) const
+
113 {
+
114  index = (index < 4) ? index : 3;
+
115  return (&x)[index];
+
116 }
+
117 
+
118 template <class T>
+
119 inline bool Quaternion<T>::operator==(const Quaternion &q) const
+
120 {
+
121  return (x == q.x && y == q.y && z == q.z && w == q.w);
+
122 }
+
123 
+
124 template <class T>
+
125 inline Quaternion<T> Quaternion<T>::operator-() const
+
126 {
+
127  return Quaternion(-x, -y, -z, w);
+
128 }
+
129 
+
130 template <class T>
+
131 inline Quaternion<T> &Quaternion<T>::operator+=(const Quaternion &q)
+
132 {
+
133  x += q.x;
+
134  y += q.y;
+
135  z += q.z;
+
136  w += q.w;
+
137 
+
138  return *this;
+
139 }
+
140 
+
141 template <class T>
+
142 inline Quaternion<T> &Quaternion<T>::operator-=(const Quaternion &q)
+
143 {
+
144  x -= q.x;
+
145  y -= q.y;
+
146  z -= q.z;
+
147  w -= q.w;
+
148 
+
149  return *this;
+
150 }
+
151 
+
152 template <class T>
+
153 inline Quaternion<T> &Quaternion<T>::operator*=(const Quaternion &q)
+
154 {
+
155  const Quaternion<T> q0 = *this;
+
156 
+
157  x = q0.w * q.x + q0.x * q.w + q0.y * q.z - q0.z * q.y;
+
158  y = q0.w * q.y + q0.y * q.w + q0.z * q.x - q0.x * q.z;
+
159  z = q0.w * q.z + q0.z * q.w + q0.x * q.y - q0.y * q.x;
+
160  w = q0.w * q.w - q0.x * q.x - q0.y * q.y - q0.z * q.z;
+
161 
+
162  return *this;
+
163 }
+
164 
+
165 template <class T>
+
166 inline Quaternion<T> &Quaternion<T>::operator*=(T s)
+
167 {
+
168  x *= s;
+
169  y *= s;
+
170  z *= s;
+
171  w *= s;
+
172 
+
173  return *this;
+
174 }
+
175 
+
176 template <class T>
+
177 inline Quaternion<T> &Quaternion<T>::operator/=(T s)
+
178 {
+
179  x /= s;
+
180  y /= s;
+
181  z /= s;
+
182  w /= s;
+
183 
+
184  return *this;
+
185 }
+
186 
+
187 template <class T>
+
188 inline Quaternion<T> Quaternion<T>::operator+(const Quaternion &q) const
+
189 {
+
190  return Quaternion(x + q.x,
+
191  y + q.y,
+
192  z + q.z,
+
193  w + q.w);
+
194 }
+
195 
+
196 template <class T>
+
197 inline Quaternion<T> Quaternion<T>::operator-(const Quaternion &q) const
+
198 {
+
199  return Quaternion(x - q.x,
+
200  y - q.y,
+
201  z - q.z,
+
202  w - q.w);
+
203 }
+
204 
+
205 template <class T>
+
206 inline Quaternion<T> Quaternion<T>::operator*(const Quaternion &q) const
+
207 {
+
208  return Quaternion(w * q.x + x * q.w + y * q.z - z * q.y,
+
209  w * q.y + y * q.w + z * q.x - x * q.z,
+
210  w * q.z + z * q.w + x * q.y - y * q.x,
+
211  w * q.w - x * q.x - y * q.y - z * q.z);
+
212 }
+
213 
+
214 template <class T>
+
215 inline Quaternion<T> Quaternion<T>::operator*(T s) const
+
216 {
+
217  return Quaternion(x * s,
+
218  y * s,
+
219  z * s,
+
220  w * s);
+
221 }
+
222 
+
223 template <class T>
+
224 inline Quaternion<T> Quaternion<T>::operator/(T s) const
+
225 {
+
226  return Quaternion(x / s,
+
227  y / s,
+
228  z / s,
+
229  w / s);
+
230 }
+
231 
+
232 template <class T>
+
233 inline T Quaternion<T>::magnitude() const
+
234 {
+
235  return sqrt(x * x + y * y + z * z + w * w);
+
236 }
+
237 
+
238 template <class T>
+
239 inline T Quaternion<T>::sqrMagnitude() const
+
240 {
+
241  return x * x + y * y + z * z + w * w;
+
242 }
+
243 
+
244 template <class T>
+
245 inline Quaternion<T> Quaternion<T>::normalized() const
+
246 {
+
247  const T mag = magnitude();
+
248  return Quaternion(x / mag, y / mag, z / mag, w / mag);
+
249 }
+
250 
+
251 template <class T>
+
252 inline Quaternion<T> &Quaternion<T>::normalize()
+
253 {
+
254  const T mag = magnitude();
+
255 
+
256  x /= mag;
+
257  y /= mag;
+
258  z /= mag;
+
259  w /= mag;
+
260 
+
261  return *this;
+
262 }
+
263 
+
264 template <class T>
+
265 inline Quaternion<T> Quaternion<T>::conjugated() const
+
266 {
+
267  return Quaternion(-x, -y, -z, w);
+
268 }
+
269 
+
270 template <class T>
+
271 inline Quaternion<T> &Quaternion<T>::conjugate()
+
272 {
+
273  x = -x;
+
274  y = -y;
+
275  z = -z;
+
276 
+
277  return *this;
+
278 }
+
279 
+
280 template <class T>
+
281 inline Matrix4x4<T> Quaternion<T>::toMatrix4x4() const
+
282 {
+
283  const T x2 = x * 2;
+
284  const T y2 = y * 2;
+
285  const T z2 = z * 2;
+
286 
+
287  const T xx = x * x2;
+
288  const T xy = x * y2;
+
289  const T xz = x * z2;
+
290  const T yy = y * y2;
+
291  const T yz = y * z2;
+
292  const T zz = z * z2;
+
293 
+
294  const T xw = w * x2;
+
295  const T yw = w * y2;
+
296  const T zw = w * z2;
+
297 
+
298  return Matrix4x4<T>(Vector4<T>(1 - (yy + zz), xy + zw, xz - yw, 0),
+
299  Vector4<T>(xy - zw, 1 - (xx + zz), yz + xw, 0),
+
300  Vector4<T>(xz + yw, yz - xw, 1 - (xx + yy), 0),
+
301  Vector4<T>(0, 0, 0, 1));
+
302 }
+
303 
+
304 template <class T>
+
305 inline Quaternion<T> Quaternion<T>::fromAxisAngle(T xx, T yy, T zz, T degrees)
+
306 {
+
307  const T halfRadians = static_cast<T>(degrees * 0.5f) * (static_cast<T>(Pi) / 180);
+
308  const T sinus = sin(halfRadians);
+
309 
+
310  return Quaternion<T>(xx * sinus,
+
311  yy * sinus,
+
312  zz * sinus,
+
313  cos(halfRadians));
+
314 }
+
315 
+
316 template <class T>
+
317 inline Quaternion<T> Quaternion<T>::fromAxisAngle(const Vector3<T> &axis, T degrees)
+
318 {
+
319  return fromAxisAngle(axis.x, axis.y, axis.z, degrees);
+
320 }
+
321 
+
322 template <class T>
+
323 inline Quaternion<T> Quaternion<T>::fromXAxisAngle(T degrees)
+
324 {
+
325  const T halfRadians = static_cast<T>(degrees * 0.5f) * (static_cast<T>(Pi) / 180);
+
326  return Quaternion<T>(sin(halfRadians), 0, 0, cos(halfRadians));
+
327 }
+
328 
+
329 template <class T>
+
330 inline Quaternion<T> Quaternion<T>::fromYAxisAngle(T degrees)
+
331 {
+
332  const T halfRadians = static_cast<T>(degrees * 0.5f) * (static_cast<T>(Pi) / 180);
+
333  return Quaternion<T>(0, sin(halfRadians), 0, cos(halfRadians));
+
334 }
+
335 
+
336 template <class T>
+
337 inline Quaternion<T> Quaternion<T>::fromZAxisAngle(T degrees)
+
338 {
+
339  const T halfRadians = static_cast<T>(degrees * 0.5f) * (static_cast<T>(Pi) / 180);
+
340  return Quaternion<T>(0, 0, sin(halfRadians), cos(halfRadians));
+
341 }
+
342 
+
343 template <class T>
+
344 const Quaternion<T> Quaternion<T>::Zero(0, 0, 0, 0);
+
345 template <class T>
+
346 const Quaternion<T> Quaternion<T>::Identity(0, 0, 0, 1);
+
347 
+
348 }
+
349 
+
350 #endif
+
A four by four matrix based on templates.
Definition: Matrix4x4.h:12
+
A quaternion class based on templates.
Definition: Quaternion.h:11
+
static const Quaternion Zero
A quaternion with all zero elements.
Definition: Quaternion.h:65
+
static const Quaternion Identity
An identity quaternion.
Definition: Quaternion.h:67
+
A three component vector based on templates.
Definition: Vector3.h:11
+
A four component vector based on templates.
Definition: Vector4.h:12
+
+ + + + diff --git a/master/_random_8h_source.html b/master/_random_8h_source.html new file mode 100644 index 0000000000..74c7aadf8d --- /dev/null +++ b/master/_random_8h_source.html @@ -0,0 +1,119 @@ + + + + + + + +nCine: include/ncine/Random.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Random.h
+
+
+
1 #ifndef CLASS_NCINE_RANDOM
+
2 #define CLASS_NCINE_RANDOM
+
3 
+
4 #include <cstdint>
+
5 #include "common_defines.h"
+
6 
+
7 namespace ncine {
+
8 
+
10 
+
13 class DLL_PUBLIC Random
+
14 {
+
15  public:
+
17  Random();
+
19  Random(uint64_t initState, uint64_t initSequence);
+
20 
+
22  void init(uint64_t initState, uint64_t initSequence);
+
23 
+
25  uint32_t integer();
+
27  uint32_t integer(uint32_t min, uint32_t max);
+
29  float real();
+
31  float real(float min, float max);
+
32 
+
34  uint32_t fastInteger(uint32_t min, uint32_t max);
+
36  float fastReal();
+
38  float fastReal(float min, float max);
+
39 
+
40  private:
+
41  uint64_t state_;
+
42  uint64_t increment_;
+
43 };
+
44 
+
45 // Meyers' Singleton
+
46 extern DLL_PUBLIC Random &random();
+
47 
+
48 }
+
49 
+
50 #endif
+
PCG32 random number generator.
Definition: Random.h:14
+
+ + + + diff --git a/master/_rect_8h_source.html b/master/_rect_8h_source.html new file mode 100644 index 0000000000..3235df338f --- /dev/null +++ b/master/_rect_8h_source.html @@ -0,0 +1,384 @@ + + + + + + + +nCine: include/ncine/Rect.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Rect.h
+
+
+
1 #ifndef CLASS_NCINE_RECT
+
2 #define CLASS_NCINE_RECT
+
3 
+
4 #include <nctl/utility.h> // for `swap()`
+
5 #include "Vector2.h"
+
6 
+
7 namespace ncine {
+
8 
+
10 template <class T>
+
11 class Rect
+
12 {
+
13  public:
+
15  T x;
+
17  T y;
+
19  T w;
+
21  T h;
+
22 
+
24  Rect()
+
25  : x(0), y(0), w(0), h(0) {}
+
27  Rect(T xx, T yy, T ww, T hh)
+
28  : x(xx), y(yy), w(ww), h(hh) {}
+
30  Rect(const Vector2<T> &point, const Vector2<T> &size)
+
31  : x(point.x), y(point.y), w(size.x), h(size.y) {}
+
32 
+
34  static Rect fromCenterSize(T xx, T yy, T ww, T hh);
+
36  static Rect fromCenterSize(const Vector2<T> &center, const Vector2<T> &size);
+
37 
+
39  static Rect fromMinMax(T minX, T minY, T maxX, T maxY);
+
41  static Rect fromMinMax(const Vector2<T> &min, const Vector2<T> &max);
+
42 
+
44  Vector2<T> center() const;
+
46  Vector2<T> min() const;
+
48  Vector2<T> max() const;
+
49 
+
51  void set(T xx, T yy, T ww, T hh);
+
53  void set(const Vector2<T> &point, const Vector2<T> &size);
+
55  void setCenter(float cx, float cy);
+
57  void setCenter(const Vector2<T> &center);
+
59  void setSize(float ww, float hh);
+
61  void setSize(const Vector2<T> &size);
+
62 
+
64  void setCenterSize(T xx, T yy, T ww, T hh);
+
66  void setCenterSize(const Vector2<T> &center, const Vector2<T> &size);
+
67 
+
69  void setMinMax(T minX, T minY, T maxX, T maxY);
+
71  void setMinMax(const Vector2<T> &min, const Vector2<T> &max);
+
72 
+
74  void invertSize();
+
75 
+
77  bool contains(T px, T py) const;
+
79  bool contains(const Vector2<T> &p) const;
+
80 
+
82  bool contains(const Rect<T> &rect) const;
+
84  bool overlaps(const Rect<T> &rect) const;
+
85 
+
87  void intersect(const Rect<T> &rect);
+
88 
+
90  bool operator==(const Rect &rect) const;
+
91 };
+
92 
+
93 using Rectf = Rect<float>;
+
94 using Recti = Rect<int>;
+
95 
+
96 template <class T>
+
97 inline Rect<T> Rect<T>::fromCenterSize(T xx, T yy, T ww, T hh)
+
98 {
+
99  return Rect(xx - static_cast<T>(ww * 0.5f),
+
100  yy - static_cast<T>(hh * 0.5f),
+
101  ww, hh);
+
102 }
+
103 
+
104 template <class T>
+
105 inline Rect<T> Rect<T>::fromCenterSize(const Vector2<T> &center, const Vector2<T> &size)
+
106 {
+
107  return Rect(center.x - static_cast<T>(size.x * 0.5f),
+
108  center.y - static_cast<T>(size.y * 0.5f),
+
109  size.x, size.y);
+
110 }
+
111 
+
112 template <class T>
+
113 inline Rect<T> Rect<T>::fromMinMax(T minX, T minY, T maxX, T maxY)
+
114 {
+
115  return Rect(minX, minY, maxX - minX, maxY - minY);
+
116 }
+
117 
+
118 template <class T>
+
119 inline Rect<T> Rect<T>::fromMinMax(const Vector2<T> &min, const Vector2<T> &max)
+
120 {
+
121  return Rect(min.x, min.y, max.x - min.x, max.y - min.y);
+
122 }
+
123 
+
124 template <class T>
+ +
126 {
+
127  return Vector2<T>(x + static_cast<T>(w * 0.5f), y + static_cast<T>(h * 0.5f));
+
128 }
+
129 
+
130 template <class T>
+
131 inline Vector2<T> Rect<T>::min() const
+
132 {
+
133  return Vector2<T>((w > T(0)) ? x : x + w, (h > T(0)) ? y : y + h);
+
134 }
+
135 
+
136 template <class T>
+
137 inline Vector2<T> Rect<T>::max() const
+
138 {
+
139  return Vector2<T>((w > T(0)) ? x + w : x, (h > T(0)) ? y + h : y);
+
140 }
+
141 
+
142 template <class T>
+
143 inline void Rect<T>::set(T xx, T yy, T ww, T hh)
+
144 {
+
145  x = xx;
+
146  y = yy;
+
147  w = ww;
+
148  h = hh;
+
149 }
+
150 
+
151 template <class T>
+
152 inline void Rect<T>::set(const Vector2<T> &point, const Vector2<T> &size)
+
153 {
+
154  x = point.x;
+
155  y = point.y;
+
156  w = size.x;
+
157  h = size.y;
+
158 }
+
159 
+
160 template <class T>
+
161 inline void Rect<T>::setCenter(float cx, float cy)
+
162 {
+
163  x = cx - static_cast<T>(w * 0.5f);
+
164  y = cy - static_cast<T>(h * 0.5f);
+
165 }
+
166 
+
167 template <class T>
+
168 inline void Rect<T>::setCenter(const Vector2<T> &center)
+
169 {
+
170  x = center.x - static_cast<T>(w * 0.5f);
+
171  y = center.y - static_cast<T>(h * 0.5f);
+
172 }
+
173 
+
174 template <class T>
+
175 inline void Rect<T>::setSize(float ww, float hh)
+
176 {
+
177  w = ww;
+
178  h = hh;
+
179 }
+
180 
+
181 template <class T>
+
182 inline void Rect<T>::setSize(const Vector2<T> &size)
+
183 {
+
184  w = size.x;
+
185  h = size.y;
+
186 }
+
187 
+
188 template <class T>
+
189 inline void Rect<T>::setCenterSize(T xx, T yy, T ww, T hh)
+
190 {
+
191  x = xx - static_cast<T>(ww * 0.5f);
+
192  y = yy - static_cast<T>(hh * 0.5f);
+
193  w = ww;
+
194  h = hh;
+
195 }
+
196 
+
197 template <class T>
+
198 inline void Rect<T>::setCenterSize(const Vector2<T> &center, const Vector2<T> &size)
+
199 {
+
200  x = center.x - static_cast<T>(size.x * 0.5f);
+
201  y = center.y - static_cast<T>(size.y * 0.5f);
+
202  w = size.x;
+
203  h = size.y;
+
204 }
+
205 
+
206 template <class T>
+
207 inline void Rect<T>::setMinMax(T minX, T minY, T maxX, T maxY)
+
208 {
+
209  x = minX;
+
210  y = minY;
+
211  w = maxX - minX;
+
212  h = maxY - minY;
+
213 }
+
214 
+
215 template <class T>
+
216 inline void Rect<T>::setMinMax(const Vector2<T> &min, const Vector2<T> &max)
+
217 {
+
218  x = min.x;
+
219  y = min.y;
+
220  w = max.x - min.x;
+
221  h = max.y - min.y;
+
222 }
+
223 
+
224 template <class T>
+
225 inline void Rect<T>::invertSize()
+
226 {
+
227  x = x + w;
+
228  y = y + h;
+
229  w = -w;
+
230  h = -h;
+
231 }
+
232 
+
233 template <class T>
+
234 inline bool Rect<T>::contains(T px, T py) const
+
235 {
+
236  const bool xAxis = (w > T(0)) ? (px >= x && px <= x + w) : (px <= x && px >= x + w);
+
237  const bool yAxis = (h > T(0)) ? (py >= y && py <= y + h) : (py <= y && py >= y + h);
+
238  return xAxis && yAxis;
+
239 }
+
240 
+
241 template <class T>
+
242 inline bool Rect<T>::contains(const Vector2<T> &p) const
+
243 {
+
244  return contains(p.x, p.y);
+
245 }
+
246 
+
247 template <class T>
+
248 inline bool Rect<T>::contains(const Rect &rect) const
+
249 {
+
250  const bool containsMin = contains(rect.min());
+
251  const bool containsMax = contains(rect.max());
+
252  return (containsMin && containsMax);
+
253 }
+
254 
+
255 template <class T>
+
256 inline bool Rect<T>::overlaps(const Rect &rect) const
+
257 {
+
258  const Vector2<T> rectMin = rect.min();
+
259  const Vector2<T> rectMax = rect.max();
+
260  const Vector2<T> thisMin = min();
+
261  const Vector2<T> thisMax = max();
+
262 
+
263  const bool disjoint = (rectMax.x < thisMin.x || rectMin.x > thisMax.x ||
+
264  rectMax.y < thisMin.y || rectMin.y > thisMax.y);
+
265  return !disjoint;
+
266 }
+
267 
+
268 template <class T>
+
269 inline void Rect<T>::intersect(const Rect &rect)
+
270 {
+
271  const Vector2<T> rectMin = rect.min();
+
272  const Vector2<T> rectMax = rect.max();
+
273 
+
274  Vector2<T> newMin = min();
+
275  Vector2<T> newMax = max();
+
276  if (rectMin.x > newMin.x)
+
277  newMin.x = rectMin.x;
+
278  if (rectMin.y > newMin.y)
+
279  newMin.y = rectMin.y;
+
280  if (rectMax.x < newMax.x)
+
281  newMax.x = rectMax.x;
+
282  if (rectMax.y < newMax.y)
+
283  newMax.y = rectMax.y;
+
284 
+
285  if (w < T(0))
+
286  nctl::swap(newMin.x, newMax.x);
+
287  if (h < T(0))
+
288  nctl::swap(newMin.y, newMax.y);
+
289 
+
290  setMinMax(newMin, newMax);
+
291 }
+
292 
+
293 template <class T>
+
294 inline bool Rect<T>::operator==(const Rect &rect) const
+
295 {
+
296  return (x == rect.x && y == rect.y &&
+
297  w == rect.w && h == rect.h);
+
298 }
+
299 
+
300 }
+
301 
+
302 #endif
+
A template based rectangle in a two dimensional space.
Definition: Rect.h:12
+
static Rect fromCenterSize(const Vector2< T > &center, const Vector2< T > &size)
Creates a rectangle from center and size as two Vector2
Definition: Rect.h:105
+
void setSize(float ww, float hh)
Retains rectangle center but changes its size.
Definition: Rect.h:175
+
void set(T xx, T yy, T ww, T hh)
Sets rectangle top-left point and size.
Definition: Rect.h:143
+
void setCenter(const Vector2< T > &center)
Retains rectangle size but moves its center to another position with a Vector2
Definition: Rect.h:168
+
void setMinMax(const Vector2< T > &min, const Vector2< T > &max)
Sets rectangle minimum and maximum coordinates as two Vector2
Definition: Rect.h:216
+
Rect(T xx, T yy, T ww, T hh)
Constructs a rectangle from top-left point and size.
Definition: Rect.h:27
+
void setSize(const Vector2< T > &size)
Retains rectangle center but changes its size with a Vector2
Definition: Rect.h:182
+
Vector2< T > center() const
Calculates the center of the rectangle.
Definition: Rect.h:125
+
bool overlaps(const Rect< T > &rect) const
Definition: Rect.h:256
+
void setCenterSize(T xx, T yy, T ww, T hh)
Sets rectangle center and size.
Definition: Rect.h:189
+
bool contains(const Vector2< T > &p) const
Definition: Rect.h:242
+
T h
Height as a public property.
Definition: Rect.h:21
+
T y
Top-left Y coordinate as a public property (top with positive height)
Definition: Rect.h:17
+
Vector2< T > max() const
Calculates the maximum coordinates of the rectangle.
Definition: Rect.h:137
+
bool contains(T px, T py) const
Definition: Rect.h:234
+
void invertSize()
Inverts rectangle size and moves (x, y) to a different angle.
Definition: Rect.h:225
+
static Rect fromCenterSize(T xx, T yy, T ww, T hh)
Creates a rectangle from center and size.
Definition: Rect.h:97
+
Rect(const Vector2< T > &point, const Vector2< T > &size)
Constructs a rectangle from top-left point and size as two Vector2
Definition: Rect.h:30
+
T x
Top-left X coordinate as a public property (left with positive width)
Definition: Rect.h:15
+
T w
Width as a public property.
Definition: Rect.h:19
+
void intersect(const Rect< T > &rect)
Intersects this rectangle with the other rectangle.
Definition: Rect.h:269
+
bool contains(const Rect< T > &rect) const
Definition: Rect.h:248
+
void set(const Vector2< T > &point, const Vector2< T > &size)
Sets rectangle top-left point and size as two Vector2
Definition: Rect.h:152
+
void setCenterSize(const Vector2< T > &center, const Vector2< T > &size)
Sets rectangle center and size as two Vector2
Definition: Rect.h:198
+
Rect()
Default constructor, all zeros.
Definition: Rect.h:24
+
static Rect fromMinMax(T minX, T minY, T maxX, T maxY)
Creates a rectangle from minimum and maximum coordinates.
Definition: Rect.h:113
+
void setCenter(float cx, float cy)
Retains rectangle size but moves its center to another position.
Definition: Rect.h:161
+
bool operator==(const Rect &rect) const
Eqality operator.
Definition: Rect.h:294
+
static Rect fromMinMax(const Vector2< T > &min, const Vector2< T > &max)
Creates a rectangle from minimum and maximum coordinates as two Vector2
Definition: Rect.h:119
+
void setMinMax(T minX, T minY, T maxX, T maxY)
Sets rectangle minimum and maximum coordinates.
Definition: Rect.h:207
+
Vector2< T > min() const
Calculates the minimum coordinates of the rectangle.
Definition: Rect.h:131
+
A two component vector based on templates.
Definition: Vector2.h:11
+
+ + + + diff --git a/master/_rect_animation_8h_source.html b/master/_rect_animation_8h_source.html new file mode 100644 index 0000000000..f0d7143647 --- /dev/null +++ b/master/_rect_animation_8h_source.html @@ -0,0 +1,192 @@ + + + + + + + +nCine: include/ncine/RectAnimation.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
RectAnimation.h
+
+
+
1 #ifndef CLASS_NCINE_RECTANIMATION
+
2 #define CLASS_NCINE_RECTANIMATION
+
3 
+
4 #include <nctl/Array.h>
+
5 #include "Rect.h"
+
6 
+
7 namespace ncine {
+
8 
+
10 class DLL_PUBLIC RectAnimation
+
11 {
+
12  public:
+
14  enum class LoopMode
+
15  {
+
16  DISABLED,
+
17  ENABLED
+
18  };
+
19 
+
21  enum class RewindMode
+
22  {
+
24  FROM_START,
+
26  BACKWARD
+
27  };
+
28 
+ +
31  : RectAnimation(1.0f / 60.0f, LoopMode::DISABLED, RewindMode::FROM_START) {}
+
33  RectAnimation(float defaultFrameDuration, LoopMode loopMode, RewindMode rewindMode);
+
34 
+
36  inline bool isPaused() const { return isPaused_; }
+
38  inline void setPaused(bool isPaused) { isPaused_ = isPaused; }
+
39 
+
41  void updateFrame(float interval);
+
42 
+
44  inline unsigned int numFrames() const { return rects_.size(); }
+
46  inline unsigned int frame() const { return currentFrame_; }
+
48  void setFrame(unsigned int frameNum);
+
49 
+
51  float defaultFrameDuration() const { return defaultFrameDuration_; }
+
53  inline void setDefaultFrameDuration(float defaultFrameDuration) { defaultFrameDuration_ = defaultFrameDuration; }
+
54 
+
56  LoopMode loopMode() const { return loopMode_; }
+
58  inline void setLoopMode(LoopMode loopMode) { loopMode_ = loopMode; }
+
59 
+
61  RewindMode rewindMode() const { return rewindMode_; }
+
63  inline void setRewindMode(RewindMode rewindMode) { rewindMode_ = rewindMode; }
+
64 
+
66  void addRect(const Recti &rect, float frameDuration);
+
68  void addRect(int x, int y, int w, int h, float frameDuration);
+
69 
+
71  inline void addRect(const Recti &rect) { addRect(rect, defaultFrameDuration_); }
+
73  inline void addRect(int x, int y, int w, int h) { addRect(x, y, w, h, defaultFrameDuration_); }
+
74 
+
76  unsigned int addRects(const Vector2i &size, const Recti &srcRect, unsigned int rectsToSkip, const Vector2i &padding, float frameDuration);
+
77 
+
79 
+
80  inline unsigned int addRects(const Vector2i &size, const Recti &srcRect, unsigned int rectsToSkip) { return addRects(size, srcRect, rectsToSkip, Vector2i(0, 0), defaultFrameDuration_); }
+
81 
+
83 
+
84  inline unsigned int addRects(const Vector2i &size, const Recti &srcRect) { return addRects(size, srcRect, 0, Vector2i(0, 0), defaultFrameDuration_); }
+
85 
+
87  inline const Recti &rect() const { return rects_[currentFrame_]; }
+
89  inline float frameDuration() const { return frameDurations_[currentFrame_]; }
+
90 
+
92  inline nctl::Array<Recti> &rectangles() { return rects_; }
+
94  inline const nctl::Array<Recti> &rectangles() const { return rects_; }
+
95 
+
97  inline nctl::Array<float> &frameDurations() { return frameDurations_; }
+
99  inline const nctl::Array<float> &frameDurations() const { return frameDurations_; }
+
100 
+
101  private:
+
103  float defaultFrameDuration_;
+
105  LoopMode loopMode_;
+
107  RewindMode rewindMode_;
+
108 
+
110  nctl::Array<Recti> rects_;
+
112  nctl::Array<float> frameDurations_;
+
114  unsigned int currentFrame_;
+
116  float elapsedFrameTime_;
+
118  bool goingForward_;
+
120  bool isPaused_;
+
121 };
+
122 
+
123 }
+
124 
+
125 #endif
+
The class containing data for a rectangles based animation.
Definition: RectAnimation.h:11
+
void setDefaultFrameDuration(float defaultFrameDuration)
Sets the default frame duration in seconds.
Definition: RectAnimation.h:53
+
nctl::Array< float > & frameDurations()
Returns the array of all frame durations.
Definition: RectAnimation.h:97
+
RewindMode
Rewind modes.
Definition: RectAnimation.h:22
+
bool isPaused() const
Returns true if the animation is paused.
Definition: RectAnimation.h:36
+
const nctl::Array< Recti > & rectangles() const
Returns the constant array of all rectangles.
Definition: RectAnimation.h:94
+
unsigned int frame() const
Returns current frame.
Definition: RectAnimation.h:46
+
LoopMode
Loop modes.
Definition: RectAnimation.h:15
+
RectAnimation()
Default constructor.
Definition: RectAnimation.h:30
+
unsigned int addRects(const Vector2i &size, const Recti &srcRect)
Adds rectangles to the array specifying their size and the source rectangle.
Definition: RectAnimation.h:84
+
float frameDuration() const
Returns the current frame duration in seconds.
Definition: RectAnimation.h:89
+
const Recti & rect() const
Returns the current rectangle.
Definition: RectAnimation.h:87
+
const nctl::Array< float > & frameDurations() const
Returns the constant array of all frame durations.
Definition: RectAnimation.h:99
+
void addRect(const Recti &rect)
Adds a rectangle to the array with the default frame duration.
Definition: RectAnimation.h:71
+
void setRewindMode(RewindMode rewindMode)
Sets the rewind mode.
Definition: RectAnimation.h:63
+
void setPaused(bool isPaused)
Sets the pause flag.
Definition: RectAnimation.h:38
+
unsigned int addRects(const Vector2i &size, const Recti &srcRect, unsigned int rectsToSkip)
Adds rectangles to the array specifying their size, the source rectangle, and a number of rectangles ...
Definition: RectAnimation.h:80
+
LoopMode loopMode() const
Returns the loop mode.
Definition: RectAnimation.h:56
+
RewindMode rewindMode() const
Returns the rewind mode.
Definition: RectAnimation.h:61
+
nctl::Array< Recti > & rectangles()
Returns the array of all rectangles.
Definition: RectAnimation.h:92
+
float defaultFrameDuration() const
Returns the default frame duration in seconds.
Definition: RectAnimation.h:51
+
void addRect(int x, int y, int w, int h)
Creates a rectangle from origin and size and then adds it to the array, with the default frame durati...
Definition: RectAnimation.h:73
+
void setLoopMode(LoopMode loopMode)
Sets the loop mode.
Definition: RectAnimation.h:58
+
unsigned int numFrames() const
Returns the number of frames (rectangles)
Definition: RectAnimation.h:44
+ + +
A dynamic array based on templates that stores elements in the heap.
Definition: Array.h:31
+
+ + + + diff --git a/master/_render_doc_capture_8h_source.html b/master/_render_doc_capture_8h_source.html new file mode 100644 index 0000000000..76cda24eb7 --- /dev/null +++ b/master/_render_doc_capture_8h_source.html @@ -0,0 +1,127 @@ + + + + + + + +nCine: include/ncine/RenderDocCapture.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
RenderDocCapture.h
+
+
+
1 #ifndef CLASS_NCINE_RENDERDOCCAPTURE
+
2 #define CLASS_NCINE_RENDERDOCCAPTURE
+
3 
+
4 #include "common_defines.h"
+
5 
+
6 namespace ncine {
+
7 
+
9 class DLL_PUBLIC RenderDocCapture
+
10 {
+
11  public:
+
12  static bool isAvailable();
+
13  static bool isTargetControlConnected();
+
14  static bool isFrameCapturing();
+
15 
+
16  static void apiVersion(int *major, int *minor, int *patch);
+
17  static bool isOverlayEnabled();
+
18  static void enableOverlay(bool enabled);
+
19 
+
20  static void triggerCapture();
+
21  static void triggerMultiFrameCapture(uint32_t numFrames);
+
22  static bool endFrameCapture();
+
23  static bool discardFrameCapture();
+
24 
+
25  static uint32_t numCaptures();
+
26  static uint32_t captureInfo(uint32_t idx, char *filename, uint32_t *pathlength, uint64_t *timestamp);
+
27  static const char *captureFilePathTemplate();
+
28  static void setCaptureFilePathTemplate(const char *pathTemplate);
+
29  static void setCaptureFileComments(const char *filePath, const char *comments);
+
30 
+
31  static uint32_t launchReplayUI(uint32_t connectTargetControl, const char *cmdLine);
+
32  static void unloadCrashHandler();
+
33 
+
34  private:
+
35  static void init();
+
36  static void removeHooks();
+
37 
+
38  static void startFrameCapture();
+
39 
+
40  friend class Application;
+
41 };
+
42 
+
43 }
+
44 
+
45 #endif
+
Main entry point and handler for nCine applications.
Definition: Application.h:24
+
A class for in-application integration of RenderDoc.
Definition: RenderDocCapture.h:10
+
+ + + + diff --git a/master/_reverse_iterator_8h_source.html b/master/_reverse_iterator_8h_source.html new file mode 100644 index 0000000000..6465cf3611 --- /dev/null +++ b/master/_reverse_iterator_8h_source.html @@ -0,0 +1,280 @@ + + + + + + + +nCine: include/nctl/ReverseIterator.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ReverseIterator.h
+
+
+
1 #ifndef CLASS_NCTL_REVERSEITERATOR
+
2 #define CLASS_NCTL_REVERSEITERATOR
+
3 
+
4 #include "iterator.h"
+
5 
+
6 namespace nctl {
+
7 
+
9 template <class Iterator>
+ +
11 {
+
12  public:
+ + +
17 
+
18  explicit ReverseIterator(Iterator it)
+
19  : it_(it) {}
+
20 
+
22  template <typename Iter>
+ +
24  : it_(reverseIt.base()) {}
+
25 
+
27  Reference operator*() const;
+
28 
+ + +
33 
+ + +
38 
+ + +
44  ReverseIterator operator+(int n) const;
+
46  ReverseIterator operator-(int n) const;
+
48  friend inline int operator-(const ReverseIterator &lhs, const ReverseIterator &rhs) { return -static_cast<int>(lhs.it_ - rhs.it_); }
+
50  template <typename Iter>
+
51  friend inline int operator-(const ReverseIterator &lhs, const ReverseIterator<Iter> &rhs) { return -static_cast<int>(lhs.it_ - rhs.base()); }
+
52 
+
54  Reference operator[](int n) const;
+
55 
+
57  friend inline bool operator==(const ReverseIterator &lhs, const ReverseIterator &rhs) { return lhs.it_ == rhs.it_; }
+
59  template <typename Iter>
+
60  friend inline bool operator==(const ReverseIterator &lhs, const ReverseIterator<Iter> &rhs) { return lhs.it_ == rhs.base(); }
+
61 
+
63  friend inline bool operator!=(const ReverseIterator &lhs, const ReverseIterator &rhs) { return lhs.it_ != rhs.it_; }
+
65  template <typename Iter>
+
66  friend inline bool operator!=(const ReverseIterator &lhs, const ReverseIterator<Iter> &rhs) { return lhs.it_ != rhs.base(); }
+
67 
+
69  friend inline bool operator>(const ReverseIterator &lhs, const ReverseIterator &rhs) { return lhs.it_ < rhs.it_; }
+
70  template <typename Iter>
+
72  friend inline bool operator>(const ReverseIterator &lhs, const ReverseIterator<Iter> &rhs) { return lhs.it_ < rhs.base(); }
+
74  friend inline bool operator<(const ReverseIterator &lhs, const ReverseIterator &rhs) { return lhs.it_ > rhs.it_; }
+
76  template <typename Iter>
+
77  friend inline bool operator<(const ReverseIterator &lhs, const ReverseIterator<Iter> &rhs) { return lhs.it_ > rhs.base(); }
+
79  friend inline bool operator>=(const ReverseIterator &lhs, const ReverseIterator &rhs) { return lhs.it_ <= rhs.it_; }
+
81  template <typename Iter>
+
82  friend inline bool operator>=(const ReverseIterator &lhs, const ReverseIterator<Iter> &rhs) { return lhs.it_ <= rhs.base(); }
+
84  friend inline bool operator<=(const ReverseIterator &lhs, const ReverseIterator &rhs) { return lhs.it_ >= rhs.it_; }
+
86  template <typename Iter>
+
87  friend inline bool operator<=(const ReverseIterator &lhs, const ReverseIterator<Iter> &rhs) { return lhs.it_ >= rhs.base(); }
+
88 
+
90  Iterator base() const;
+
91 
+
92  private:
+
93  Iterator it_;
+
94 };
+
95 
+
97 template <class Iterator>
+ +
99 {
+
101  using ValueType = typename Iterator::ValueType;
+
103  using Pointer = typename Iterator::Pointer;
+
105  using Reference = typename Iterator::Reference;
+
107  static inline decltype(Iterator::IteratorCategory()) IteratorCategory() { return Iterator::IteratorCategory(); }
+
108 };
+
109 
+
110 template <class Iterator>
+ +
112 {
+
113  return *it_;
+
114 }
+
115 
+
116 template <class Iterator>
+ +
118 {
+
119  --it_;
+
120 
+
121  return *this;
+
122 }
+
123 
+
124 template <class Iterator>
+ +
126 {
+
127  // Create an unmodified copy to return
+
128  ReverseIterator<Iterator> iterator = *this;
+
129 
+
130  --it_;
+
131 
+
132  return iterator;
+
133 }
+
134 
+
135 template <class Iterator>
+ +
137 {
+
138  ++it_;
+
139 
+
140  return *this;
+
141 }
+
142 
+
143 template <class Iterator>
+ +
145 {
+
146  // Create an unmodified copy to return
+
147  ReverseIterator<Iterator> iterator = *this;
+
148 
+
149  ++it_;
+
150 
+
151  return iterator;
+
152 }
+
153 
+
154 template <class Iterator>
+ +
156 {
+
157  it_ -= n;
+
158 
+
159  return *this;
+
160 }
+
161 
+
162 template <class Iterator>
+ +
164 {
+
165  it_ += n;
+
166 
+
167  return *this;
+
168 }
+
169 
+
170 template <class Iterator>
+ +
172 {
+
173  ReverseIterator<Iterator> iterator = *this;
+
174  iterator.it_ -= n;
+
175 
+
176  return iterator;
+
177 }
+
178 
+
179 template <class Iterator>
+ +
181 {
+
182  ReverseIterator<Iterator> iterator = *this;
+
183  iterator.it_ += n;
+
184 
+
185  return iterator;
+
186 }
+
187 
+
188 template <class Iterator>
+ +
190 {
+
191  return *(it_ - n);
+
192 }
+
193 
+
194 template <class Iterator>
+
195 inline Iterator ReverseIterator<Iterator>::base() const
+
196 {
+
197  return it_;
+
198 }
+
199 
+
200 }
+
201 
+
202 #endif
+
A generic reverse iterator.
Definition: ReverseIterator.h:11
+
friend bool operator>(const ReverseIterator &lhs, const ReverseIterator< Iter > &rhs)
Greater than operator for compatible reverse iterators (reversed)
Definition: ReverseIterator.h:72
+
friend bool operator!=(const ReverseIterator &lhs, const ReverseIterator &rhs)
Inequality operator.
Definition: ReverseIterator.h:63
+
typename IteratorTraits< Iterator >::Reference Reference
Reference type which respects iterator constness.
Definition: ReverseIterator.h:16
+
Reference operator*() const
Deferencing operator.
Definition: ReverseIterator.h:111
+
friend bool operator<=(const ReverseIterator &lhs, const ReverseIterator< Iter > &rhs)
Less than or equal to operator for compatible reverse iterators (reversed)
Definition: ReverseIterator.h:87
+
ReverseIterator operator-(int n) const
Subtraction operator (reversed)
Definition: ReverseIterator.h:180
+
friend int operator-(const ReverseIterator &lhs, const ReverseIterator &rhs)
Pointer subtraction operator (reversed)
Definition: ReverseIterator.h:48
+
friend bool operator>=(const ReverseIterator &lhs, const ReverseIterator< Iter > &rhs)
Greater than or equal to operator for compatible reverse iterators (reversed)
Definition: ReverseIterator.h:82
+
ReverseIterator & operator--()
Iterates to the previous element (reversed prefix)
Definition: ReverseIterator.h:136
+
friend bool operator<=(const ReverseIterator &lhs, const ReverseIterator &rhs)
Less than or equal to operator (reversed)
Definition: ReverseIterator.h:84
+
Reference operator[](int n) const
Subscript operator.
Definition: ReverseIterator.h:189
+
friend bool operator==(const ReverseIterator &lhs, const ReverseIterator &rhs)
Equality operator.
Definition: ReverseIterator.h:57
+
ReverseIterator operator+(int n) const
Addition operator (reversed)
Definition: ReverseIterator.h:171
+
ReverseIterator(const ReverseIterator< Iter > &reverseIt)
Converting constructor between compatible reverse iterators.
Definition: ReverseIterator.h:23
+
Iterator base() const
Returns the base iterator.
Definition: ReverseIterator.h:195
+
ReverseIterator & operator++()
Iterates to the next element (reversed prefix)
Definition: ReverseIterator.h:117
+
ReverseIterator & operator+=(int n)
Compound addition operator (reversed)
Definition: ReverseIterator.h:155
+
friend bool operator==(const ReverseIterator &lhs, const ReverseIterator< Iter > &rhs)
Equality operator for compatible reverse iterators.
Definition: ReverseIterator.h:60
+
typename IteratorTraits< Iterator >::Pointer Pointer
Pointer type which respects iterator constness.
Definition: ReverseIterator.h:14
+
friend int operator-(const ReverseIterator &lhs, const ReverseIterator< Iter > &rhs)
Pointer subtraction operator for compatible reverse iterators (reversed)
Definition: ReverseIterator.h:51
+
friend bool operator!=(const ReverseIterator &lhs, const ReverseIterator< Iter > &rhs)
Inequality operator for compatible reverse iterators.
Definition: ReverseIterator.h:66
+
friend bool operator<(const ReverseIterator &lhs, const ReverseIterator< Iter > &rhs)
Less than operator for compatible reverse iterators (reversed)
Definition: ReverseIterator.h:77
+
friend bool operator<(const ReverseIterator &lhs, const ReverseIterator &rhs)
Less than operator (reversed)
Definition: ReverseIterator.h:74
+
ReverseIterator & operator-=(int n)
Compound subtraction operator (reversed)
Definition: ReverseIterator.h:163
+
friend bool operator>(const ReverseIterator &lhs, const ReverseIterator &rhs)
Greater than operator (reversed)
Definition: ReverseIterator.h:69
+
friend bool operator>=(const ReverseIterator &lhs, const ReverseIterator &rhs)
Greater than or equal to operator (reversed)
Definition: ReverseIterator.h:79
+
typename Iterator::ValueType ValueType
Type of the values deferenced by the iterator.
Definition: ReverseIterator.h:101
+
typename Iterator::Reference Reference
Reference to the type of the values deferenced by the iterator.
Definition: ReverseIterator.h:105
+
typename Iterator::Pointer Pointer
Pointer to the type of the values deferenced by the iterator.
Definition: ReverseIterator.h:103
+
Base iterator traits structure.
Definition: iterator.h:19
+
+ + + + diff --git a/master/_scene_node_8h_source.html b/master/_scene_node_8h_source.html new file mode 100644 index 0000000000..0fd8a2ede4 --- /dev/null +++ b/master/_scene_node_8h_source.html @@ -0,0 +1,511 @@ + + + + + + + +nCine: include/ncine/SceneNode.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SceneNode.h
+
+
+
1 #ifndef CLASS_NCINE_SCENENODE
+
2 #define CLASS_NCINE_SCENENODE
+
3 
+
4 #include "Object.h"
+
5 #include <nctl/Array.h>
+
6 #include <nctl/BitSet.h>
+
7 #include "Vector2.h"
+
8 #include "Matrix4x4.h"
+
9 #include "Color.h"
+
10 #include "Colorf.h"
+
11 
+
12 namespace ncine {
+
13 
+
14 class RenderQueue;
+
15 class Viewport;
+
16 
+
18 class DLL_PUBLIC SceneNode : public Object
+
19 {
+
20  public:
+
21  enum class VisitOrderState
+
22  {
+
23  ENABLED,
+
24  DISABLED,
+
25  SAME_AS_PARENT
+
26  };
+
27 
+
29  static const float MinRotation;
+
30 
+
32  SceneNode(SceneNode *parent, float x, float y);
+
34  SceneNode(SceneNode *parent, const Vector2f &position);
+
36  explicit SceneNode(SceneNode *parent);
+
38  SceneNode();
+
40  ~SceneNode() override;
+
41 
+
43  SceneNode(SceneNode &&other);
+
45  SceneNode &operator=(SceneNode &&other);
+
46 
+
48  inline SceneNode clone() const { return SceneNode(*this); }
+
49 
+
50  inline static ObjectType sType() { return ObjectType::SCENENODE; }
+
51 
+
53  inline const SceneNode *parent() const { return parent_; }
+
55  inline SceneNode *parent() { return parent_; }
+
57  bool setParent(SceneNode *parentNode);
+
59  inline const nctl::Array<SceneNode *> &children() { return children_; }
+
61  const nctl::Array<const SceneNode *> &children() const;
+
63  bool addChildNode(SceneNode *childNode);
+
65  bool removeChildNode(SceneNode *childNode);
+
67  bool removeChildNodeAt(unsigned int index);
+
69  bool removeAllChildrenNodes();
+
71  bool unlinkChildNode(SceneNode *childNode);
+
72 
+
74  unsigned int childOrderIndex() const;
+
76  bool swapChildrenNodes(unsigned int firstIndex, unsigned int secondIndex);
+
78  bool swapNodeForward();
+
80  bool swapNodeBack();
+
81 
+
83  inline enum VisitOrderState visitOrderState() const { return visitOrderState_; }
+
85  inline void setVisitOrderState(enum VisitOrderState visitOrderState) { visitOrderState_ = visitOrderState; }
+
87  inline uint16_t visitOrderIndex() const { return visitOrderIndex_; }
+
88 
+
90  virtual void update(float interval);
+
92  virtual void visit(RenderQueue &renderQueue, unsigned int &visitOrderIndex);
+
94  virtual bool draw(RenderQueue &renderQueue) { return false; }
+
95 
+
97  inline bool isUpdateEnabled() const { return updateEnabled_; }
+
99  inline void setUpdateEnabled(bool updateEnabled) { updateEnabled_ = updateEnabled; }
+
101  inline bool isDrawEnabled() const { return drawEnabled_; }
+
103  inline void setDrawEnabled(bool drawEnabled) { drawEnabled_ = drawEnabled; }
+
105  inline bool isEnabled() const { return (updateEnabled_ == true && drawEnabled_ == true); }
+
107  void setEnabled(bool isEnabled);
+
108 
+
110  inline Vector2f position() const { return position_; }
+
112  inline Vector2f absPosition() const { return absPosition_; }
+
114  void setPosition(float x, float y);
+
116  void setPosition(const Vector2f &position);
+
118  void setPositionX(float x);
+
120  void setPositionY(float y);
+
122  void move(float x, float y);
+
124  void move(const Vector2f &position);
+
126  void moveX(float x);
+
128  void moveY(float y);
+
129 
+
131  inline Vector2f absAnchorPoint() const { return anchorPoint_; }
+
133  void setAbsAnchorPoint(float x, float y);
+
135  void setAbsAnchorPoint(const Vector2f &point);
+
136 
+
138  inline const Vector2f &scale() const { return scaleFactor_; }
+
140  inline const Vector2f &absScale() const { return absScaleFactor_; }
+
142  void setScale(float scaleFactor);
+
144  void setScale(float scaleFactorX, float scaleFactorY);
+
146  void setScale(const Vector2f &scaleFactor);
+
147 
+
149  inline float rotation() const { return rotation_; }
+
151  inline float absRotation() const { return absRotation_; }
+
153  void setRotation(float rotation);
+
154 
+
156  inline Color color() const { return color_; }
+
158  inline Color absColor() const { return absColor_; }
+
160  void setColor(Color color);
+
162  void setColor(Colorf color);
+
164  void setColor(unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha);
+
166  void setColorF(float red, float green, float blue, float alpha);
+
168  inline float alpha() const { return color_.a(); }
+
170  inline float absAlpha() const { return absColor_.a(); }
+
172  void setAlpha(unsigned char alpha);
+
174  void setAlphaF(float alpha);
+
175 
+
177  inline uint16_t layer() const { return layer_; }
+
179 
+
180  inline uint16_t absLayer() const { return absLayer_; }
+
182 
+
184  void setLayer(uint16_t layer) { layer_ = layer; }
+
185 
+
187  inline const Matrix4x4f &worldMatrix() const { return worldMatrix_; }
+
189  void setWorldMatrix(const Matrix4x4f &worldMatrix);
+
190 
+
192  inline const Matrix4x4f &localMatrix() const { return localMatrix_; }
+
194  void setLocalMatrix(const Matrix4x4f &localMatrix);
+
195 
+
197 
+
198  inline bool deleteChildrenOnDestruction() const { return shouldDeleteChildrenOnDestruction_; }
+
200  inline void setDeleteChildrenOnDestruction(bool shouldDeleteChildrenOnDestruction) { shouldDeleteChildrenOnDestruction_ = shouldDeleteChildrenOnDestruction; }
+
201 
+
203  inline unsigned long int lastFrameUpdated() const { return lastFrameUpdated_; }
+
204 
+
205  protected:
+ +
208  {
+
209  TransformationBit = 0,
+
210  ColorBit = 1,
+
211  SizeBit = 2,
+
212  TextureBit = 3,
+
213  AabbBit = 4
+
214  };
+
215 
+
216  bool updateEnabled_;
+
217  bool drawEnabled_;
+
218 
+ + +
224 
+
225  unsigned int childOrderIndex_;
+
226 
+
228 
+
229  bool withVisitOrder_;
+
231  enum VisitOrderState visitOrderState_;
+ +
234 
+ + + +
243  float rotation_;
+
244 
+
246 
+ +
249 
+
251 
+
253  uint16_t layer_;
+
254 
+ + + +
261 
+ +
264 
+
266  uint16_t absLayer_;
+
267 
+ + +
272 
+ +
275 
+ +
278 
+
280  unsigned long int lastFrameUpdated_;
+
281 
+
283  SceneNode &operator=(const SceneNode &) = delete;
+
284 
+
286  SceneNode(const SceneNode &other);
+
287 
+
289  void swapChildPointer(SceneNode *first, SceneNode *second);
+
290 
+
291  virtual void transform();
+
292 };
+
293 
+ +
295 {
+
296  return reinterpret_cast<const nctl::Array<const SceneNode *> &>(children_);
+
297 }
+
298 
+
299 inline void SceneNode::setEnabled(bool enabled)
+
300 {
+
301  updateEnabled_ = enabled;
+
302  drawEnabled_ = enabled;
+
303 }
+
304 
+
305 inline void SceneNode::setPosition(float x, float y)
+
306 {
+
307  position_.set(x, y);
+
308  dirtyBits_.set(DirtyBitPositions::TransformationBit);
+
309  dirtyBits_.set(DirtyBitPositions::AabbBit);
+
310 }
+
311 
+
312 inline void SceneNode::setPosition(const Vector2f &position)
+
313 {
+ +
315  dirtyBits_.set(DirtyBitPositions::TransformationBit);
+
316  dirtyBits_.set(DirtyBitPositions::AabbBit);
+
317 }
+
318 
+
319 inline void SceneNode::setPositionX(float x)
+
320 {
+
321  position_.x = x;
+
322  dirtyBits_.set(DirtyBitPositions::TransformationBit);
+
323  dirtyBits_.set(DirtyBitPositions::AabbBit);
+
324 }
+
325 
+
326 inline void SceneNode::setPositionY(float y)
+
327 {
+
328  position_.y = y;
+
329  dirtyBits_.set(DirtyBitPositions::TransformationBit);
+
330  dirtyBits_.set(DirtyBitPositions::AabbBit);
+
331 }
+
332 
+
333 inline void SceneNode::move(float x, float y)
+
334 {
+
335  position_.x += x;
+
336  position_.y += y;
+
337  dirtyBits_.set(DirtyBitPositions::TransformationBit);
+
338  dirtyBits_.set(DirtyBitPositions::AabbBit);
+
339 }
+
340 
+
341 inline void SceneNode::move(const Vector2f &position)
+
342 {
+
343  position_ += position;
+
344  dirtyBits_.set(DirtyBitPositions::TransformationBit);
+
345  dirtyBits_.set(DirtyBitPositions::AabbBit);
+
346 }
+
347 
+
348 inline void SceneNode::moveX(float x)
+
349 {
+
350  position_.x += x;
+
351  dirtyBits_.set(DirtyBitPositions::TransformationBit);
+
352  dirtyBits_.set(DirtyBitPositions::AabbBit);
+
353 }
+
354 
+
355 inline void SceneNode::moveY(float y)
+
356 {
+
357  position_.y += y;
+
358  dirtyBits_.set(DirtyBitPositions::TransformationBit);
+
359  dirtyBits_.set(DirtyBitPositions::AabbBit);
+
360 }
+
361 
+
362 inline void SceneNode::setAbsAnchorPoint(float x, float y)
+
363 {
+
364  anchorPoint_.set(x, y);
+
365  dirtyBits_.set(DirtyBitPositions::TransformationBit);
+
366  dirtyBits_.set(DirtyBitPositions::AabbBit);
+
367 }
+
368 
+
369 inline void SceneNode::setAbsAnchorPoint(const Vector2f &point)
+
370 {
+
371  anchorPoint_ = point;
+
372  dirtyBits_.set(DirtyBitPositions::TransformationBit);
+
373  dirtyBits_.set(DirtyBitPositions::AabbBit);
+
374 }
+
375 
+
376 inline void SceneNode::setScale(float scaleFactor)
+
377 {
+
378  scaleFactor_.set(scaleFactor, scaleFactor);
+
379  dirtyBits_.set(DirtyBitPositions::TransformationBit);
+
380  dirtyBits_.set(DirtyBitPositions::AabbBit);
+
381 }
+
382 
+
383 inline void SceneNode::setScale(float scaleFactorX, float scaleFactorY)
+
384 {
+
385  scaleFactor_.set(scaleFactorX, scaleFactorY);
+
386  dirtyBits_.set(DirtyBitPositions::TransformationBit);
+
387  dirtyBits_.set(DirtyBitPositions::AabbBit);
+
388 }
+
389 
+
390 inline void SceneNode::setScale(const Vector2f &scaleFactor)
+
391 {
+
392  scaleFactor_ = scaleFactor;
+
393  dirtyBits_.set(DirtyBitPositions::TransformationBit);
+
394  dirtyBits_.set(DirtyBitPositions::AabbBit);
+
395 }
+
396 
+
397 inline void SceneNode::setRotation(float rotation)
+
398 {
+
399  rotation_ = fmodf(rotation, 360.0f);
+
400  dirtyBits_.set(DirtyBitPositions::TransformationBit);
+
401  dirtyBits_.set(DirtyBitPositions::AabbBit);
+
402 }
+
403 
+
404 inline void SceneNode::setColor(Color color)
+
405 {
+
406  color_ = color;
+
407  dirtyBits_.set(DirtyBitPositions::ColorBit);
+
408 }
+
409 
+
410 inline void SceneNode::setColor(Colorf color)
+
411 {
+
412  color_ = color;
+
413  dirtyBits_.set(DirtyBitPositions::ColorBit);
+
414 }
+
415 
+
416 inline void SceneNode::setColor(unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha)
+
417 {
+
418  color_.set(red, green, blue, alpha);
+
419  dirtyBits_.set(DirtyBitPositions::ColorBit);
+
420 }
+
421 
+
422 inline void SceneNode::setColorF(float red, float green, float blue, float alpha)
+
423 {
+
424  color_ = Colorf(red, green, blue, alpha);
+
425  dirtyBits_.set(DirtyBitPositions::ColorBit);
+
426 }
+
427 
+
428 inline void SceneNode::setAlpha(unsigned char alpha)
+
429 {
+ +
431  dirtyBits_.set(DirtyBitPositions::ColorBit);
+
432 }
+
433 
+
434 inline void SceneNode::setAlphaF(float alpha)
+
435 {
+
436  color_.setAlpha(static_cast<unsigned char>(alpha * 255));
+
437  dirtyBits_.set(DirtyBitPositions::ColorBit);
+
438 }
+
439 
+
440 inline void SceneNode::setWorldMatrix(const Matrix4x4f &worldMatrix)
+
441 {
+ +
443  dirtyBits_.set(DirtyBitPositions::TransformationBit);
+
444  dirtyBits_.set(DirtyBitPositions::AabbBit);
+
445 }
+
446 
+
447 inline void SceneNode::setLocalMatrix(const Matrix4x4f &localMatrix)
+
448 {
+ +
450  dirtyBits_.set(DirtyBitPositions::TransformationBit);
+
451  dirtyBits_.set(DirtyBitPositions::AabbBit);
+
452 }
+
453 
+
454 }
+
455 
+
456 #endif
+
A four channels unsigned char color.
Definition: Color.h:12
+
void set(unsigned int red, unsigned int green, unsigned int blue, unsigned int alpha)
Sets four color channels.
Definition: Color.cpp:83
+
void setAlpha(unsigned int alpha)
Sets the alpha channel.
Definition: Color.cpp:113
+
A four channels normalized float color.
Definition: Colorf.h:13
+ +
Static RRTI and identification index.
Definition: Object.h:10
+
The base class for the transformation nodes hierarchy.
Definition: SceneNode.h:19
+
DirtyBitPositions
Bit positions inside the dirty bitset.
Definition: SceneNode.h:208
+
const SceneNode * parent() const
Returns the parent as a constant node, if there is any.
Definition: SceneNode.h:53
+
bool isEnabled() const
Returns true if the node is both updating and drawing.
Definition: SceneNode.h:105
+
void setColorF(float red, float green, float blue, float alpha)
Sets the node color through float components.
Definition: SceneNode.h:422
+
float rotation() const
Gets the node rotation in degrees.
Definition: SceneNode.h:149
+
void moveY(float y)
Moves the node by an offset on the Y axis.
Definition: SceneNode.h:355
+
SceneNode * parent()
Returns the parent node, if there is any.
Definition: SceneNode.h:55
+
void setAbsAnchorPoint(float x, float y)
Sets the absolute transformation anchor point in pixels.
Definition: SceneNode.h:362
+
Vector2f position() const
Returns node position relative to its parent.
Definition: SceneNode.h:110
+
SceneNode * parent_
A pointer to the parent node.
Definition: SceneNode.h:220
+
Vector2f absPosition_
Absolute position as calculated by the transform() function.
Definition: SceneNode.h:256
+
unsigned int childOrderIndex_
The order index of this node among its siblings.
Definition: SceneNode.h:225
+
bool isUpdateEnabled() const
Returns true if the node is updating.
Definition: SceneNode.h:97
+
float absAlpha() const
Gets the node absolute alpha.
Definition: SceneNode.h:170
+
bool deleteChildrenOnDestruction() const
Gets the delete children on destruction flag.
Definition: SceneNode.h:198
+
void setUpdateEnabled(bool updateEnabled)
Enables or disables node updating.
Definition: SceneNode.h:99
+
void setEnabled(bool isEnabled)
Enables or disables both node updating and drawing.
Definition: SceneNode.h:299
+
unsigned long int lastFrameUpdated_
The last frame any viewport updated this node.
Definition: SceneNode.h:280
+
SceneNode clone() const
Returns a copy of this object.
Definition: SceneNode.h:48
+
Vector2f anchorPoint_
Definition: SceneNode.h:239
+
const Matrix4x4f & worldMatrix() const
Gets the node world matrix.
Definition: SceneNode.h:187
+
virtual bool draw(RenderQueue &renderQueue)
Renders the node.
Definition: SceneNode.h:94
+
Vector2f absAnchorPoint() const
Gets the absolute transformation anchor point in pixels.
Definition: SceneNode.h:131
+
const Vector2f & scale() const
Gets the node scale factors.
Definition: SceneNode.h:138
+
const nctl::Array< SceneNode * > & children()
Returns the array of child nodes.
Definition: SceneNode.h:59
+
Matrix4x4f localMatrix_
Local transformation matrix.
Definition: SceneNode.h:271
+
void setScale(float scaleFactor)
Scales the node size both horizontally and vertically.
Definition: SceneNode.h:376
+
void setAlpha(unsigned char alpha)
Sets the node alpha through an unsigned char component.
Definition: SceneNode.h:428
+
void setPositionY(float y)
Sets the Y coordinate of the node position.
Definition: SceneNode.h:326
+
void setWorldMatrix(const Matrix4x4f &worldMatrix)
Sets the node world matrix (only useful when called inside onPostUpdate())
Definition: SceneNode.h:440
+
float alpha() const
Gets the node alpha.
Definition: SceneNode.h:168
+
const Matrix4x4f & localMatrix() const
Gets the node local matrix.
Definition: SceneNode.h:192
+
Color color() const
Gets the node color.
Definition: SceneNode.h:156
+
void setPosition(float x, float y)
Sets the node position through two coordinates.
Definition: SceneNode.h:305
+
void setDrawEnabled(bool drawEnabled)
Enables or disables node drawing.
Definition: SceneNode.h:103
+
uint16_t absLayer() const
Gets the node absolute rendering layer.
Definition: SceneNode.h:180
+
bool shouldDeleteChildrenOnDestruction_
A flag indicating whether the destructor should also delete all children.
Definition: SceneNode.h:274
+
void setLocalMatrix(const Matrix4x4f &localMatrix)
Sets the node local matrix.
Definition: SceneNode.h:447
+
nctl::BitSet< uint8_t > dirtyBits_
Bitset that stores the various dirty states bits.
Definition: SceneNode.h:277
+
Vector2f absScaleFactor_
Absolute horizontal and vertical scale factors as calculated by the transform() function.
Definition: SceneNode.h:258
+
uint16_t layer_
The node rendering layer.
Definition: SceneNode.h:253
+
SceneNode & operator=(const SceneNode &)=delete
Deleted assignment operator.
+
Color absColor_
Absolute node color as calculated by the transform() function.
Definition: SceneNode.h:263
+
unsigned long int lastFrameUpdated() const
Returns the last frame in which any of the viewports have updated this node.
Definition: SceneNode.h:203
+
uint16_t visitOrderIndex_
The visit order index of this node.
Definition: SceneNode.h:233
+
uint16_t absLayer_
Absolute node rendering layer as calculated by the transform() function.
Definition: SceneNode.h:266
+
Vector2f position_
The node relative position.
Definition: SceneNode.h:236
+
bool isDrawEnabled() const
Returns true if the node is drawing.
Definition: SceneNode.h:101
+
void move(float x, float y)
Moves the node based on two offsets.
Definition: SceneNode.h:333
+
Color absColor() const
Gets the node absolute color.
Definition: SceneNode.h:158
+
float rotation_
Degrees for clock-wise node rotation in degrees.
Definition: SceneNode.h:243
+
void setColor(Color color)
Sets the node color through a Color object.
Definition: SceneNode.h:404
+
void moveX(float x)
Moves the node by an offset on the X axis.
Definition: SceneNode.h:348
+
uint16_t layer() const
Gets the node rendering layer.
Definition: SceneNode.h:177
+
nctl::Array< SceneNode * > children_
The array of child nodes.
Definition: SceneNode.h:222
+
void setPositionX(float x)
Sets the X coordinate of the node position.
Definition: SceneNode.h:319
+
uint16_t visitOrderIndex() const
Returns the visit drawing order of the node.
Definition: SceneNode.h:87
+
void setAlphaF(float alpha)
Sets the node alpha through a float component.
Definition: SceneNode.h:434
+
float absRotation_
Absolute node rotation as calculated by the transform() function.
Definition: SceneNode.h:260
+
void setDeleteChildrenOnDestruction(bool shouldDeleteChildrenOnDestruction)
Sets the delete children on destruction flag.
Definition: SceneNode.h:200
+
void setRotation(float rotation)
Sets the node rotation in degrees.
Definition: SceneNode.h:397
+
const Vector2f & absScale() const
Gets the node absolute scale factors.
Definition: SceneNode.h:140
+
void setVisitOrderState(enum VisitOrderState visitOrderState)
Enables the use of the node visit order together with the layer.
Definition: SceneNode.h:85
+
Vector2f scaleFactor_
Horizontal and vertical scale factors for node size.
Definition: SceneNode.h:241
+
Vector2f absPosition() const
Returns absolute node position.
Definition: SceneNode.h:112
+
float absRotation() const
Gets the node absolute rotation in degrees.
Definition: SceneNode.h:151
+
void setLayer(uint16_t layer)
Sets the node rendering layer.
Definition: SceneNode.h:184
+
Color color_
Node color for transparency and translucency.
Definition: SceneNode.h:248
+
static const float MinRotation
The minimum amount of rotation to trigger a sine and cosine calculation.
Definition: SceneNode.h:29
+
Matrix4x4f worldMatrix_
World transformation matrix (calculated from local and parent's world)
Definition: SceneNode.h:269
+ +
A dynamic array based on templates that stores elements in the heap.
Definition: Array.h:31
+ +
void set()
Sets all bits in the bitset.
Definition: BitSet.h:214
+
+ + + + diff --git a/master/_service_locator_8h_source.html b/master/_service_locator_8h_source.html new file mode 100644 index 0000000000..7cd13af9db --- /dev/null +++ b/master/_service_locator_8h_source.html @@ -0,0 +1,175 @@ + + + + + + + +nCine: include/ncine/ServiceLocator.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ServiceLocator.h
+
+
+
1 #ifndef CLASS_NCINE_SERVICELOCATOR
+
2 #define CLASS_NCINE_SERVICELOCATOR
+
3 
+
4 #ifdef __ANDROID__
+
5  #include <stdarg.h>
+
6  #include <android/log.h>
+
7 #else
+
8  #include <cstdarg>
+
9 #endif
+
10 
+
11 #include "IIndexer.h"
+
12 #include "ILogger.h"
+
13 #include "IAudioDevice.h"
+
14 #include "IThreadPool.h"
+
15 #include "IGfxCapabilities.h"
+
16 
+
17 namespace ncine {
+
18 
+
20 
+
21 class DLL_PUBLIC ServiceLocator
+
22 {
+
23  public:
+
25  IIndexer &indexer() { return *indexerService_; }
+
27  void registerIndexer(nctl::UniquePtr<IIndexer> service);
+
29  void unregisterIndexer();
+
30 
+
32  ILogger &logger() { return *loggerService_; }
+
34  void registerLogger(nctl::UniquePtr<ILogger> service);
+
36  void unregisterLogger();
+
37 
+
39  IAudioDevice &audioDevice() { return *audioDevice_; }
+
41  void registerAudioDevice(nctl::UniquePtr<IAudioDevice> service);
+
43  void unregisterAudioDevice();
+
44 
+
46  IThreadPool &threadPool() { return *threadPool_; }
+
48  void registerThreadPool(nctl::UniquePtr<IThreadPool> service);
+
50  void unregisterThreadPool();
+
51 
+
53  const IGfxCapabilities &gfxCapabilities() { return *gfxCapabilities_; }
+
55  void registerGfxCapabilities(nctl::UniquePtr<IGfxCapabilities> service);
+
57  void unregisterGfxCapabilities();
+
58 
+
60  void unregisterAll();
+
61 
+
62  private:
+
63  IIndexer *indexerService_;
+
64  nctl::UniquePtr<IIndexer> registeredIndexer_;
+
65  NullIndexer nullIndexer_;
+
66 
+
67  ILogger *loggerService_;
+
68  nctl::UniquePtr<ILogger> registeredLogger_;
+
69  NullLogger nullLogger_;
+
70 
+
71  IAudioDevice *audioDevice_;
+
72  nctl::UniquePtr<IAudioDevice> registeredAudioDevice_;
+
73  NullAudioDevice nullAudioDevice_;
+
74 
+
75  IThreadPool *threadPool_;
+
76  nctl::UniquePtr<IThreadPool> registeredThreadPool_;
+
77  NullThreadPool nullThreadPool_;
+
78 
+
79  IGfxCapabilities *gfxCapabilities_;
+
80  nctl::UniquePtr<IGfxCapabilities> registeredGfxCapabilities_;
+
81  NullGfxCapabilities nullGfxCapabilities_;
+
82 
+ +
85  ServiceLocator(const ServiceLocator &) = delete;
+
87  ServiceLocator &operator=(const ServiceLocator &) = delete;
+
88 
+
89  friend DLL_PUBLIC ServiceLocator &theServiceLocator();
+
90 };
+
91 
+
93 DLL_PUBLIC ServiceLocator &theServiceLocator();
+
94 
+
95 }
+
96 
+
97 #endif
+
Audio device interface class.
Definition: IAudioDevice.h:13
+
The interface class to query runtime OpenGL device capabilities.
Definition: IGfxCapabilities.h:10
+
The Interface for every Object indexer.
Definition: IIndexer.h:12
+
The interface class for loggers.
Definition: ILogger.h:14
+
Thread pool interface class.
Definition: IThreadPool.h:12
+
A fake audio device which doesn't play anything.
Definition: IAudioDevice.h:126
+
A fake graphics capabilities class that reports no available capabilities.
Definition: IGfxCapabilities.h:97
+
Fake indexer, always returning nullptr and a zero index.
Definition: IIndexer.h:40
+
A fake logger which doesn't log anything.
Definition: ILogger.h:48
+
A fake thread pool which doesn't create any thread.
Definition: IThreadPool.h:24
+
Provides base services to requesting classes.
Definition: ServiceLocator.h:22
+
IIndexer & indexer()
Returns a reference to the current indexer provider instance.
Definition: ServiceLocator.h:25
+
ILogger & logger()
Returns a reference to the current logger provider instance.
Definition: ServiceLocator.h:32
+
const IGfxCapabilities & gfxCapabilities()
Returns a reference to the current graphics capabilities instance.
Definition: ServiceLocator.h:53
+
IAudioDevice & audioDevice()
Returns a reference to the current audio device instance.
Definition: ServiceLocator.h:39
+
IThreadPool & threadPool()
Returns a reference to the current thread pool instance.
Definition: ServiceLocator.h:46
+
A unique pointer implementation.
Definition: UniquePtr.h:118
+
+ + + + diff --git a/master/_shader_8h_source.html b/master/_shader_8h_source.html new file mode 100644 index 0000000000..91fd79d79f --- /dev/null +++ b/master/_shader_8h_source.html @@ -0,0 +1,218 @@ + + + + + + + +nCine: include/ncine/Shader.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Shader.h
+
+
+
1 #ifndef CLASS_NCINE_SHADER
+
2 #define CLASS_NCINE_SHADER
+
3 
+
4 #include <stdint.h>
+
5 #include "Object.h"
+
6 
+
7 namespace nctl {
+
8 class String;
+
9 }
+
10 
+
11 namespace ncine {
+
12 
+
13 class GLShaderProgram;
+
14 
+
16 class DLL_PUBLIC Shader : public Object
+
17 {
+
18  public:
+
19  enum class LoadMode
+
20  {
+
21  STRING,
+
22  FILE
+
23  };
+
24 
+
25  enum class Introspection
+
26  {
+
27  ENABLED,
+
28  NO_UNIFORMS_IN_BLOCKS,
+
29  DISABLED
+
30  };
+
31 
+
32  enum class DefaultVertex
+
33  {
+
34  SPRITE,
+
35  SPRITE_NOTEXTURE,
+
36  MESHSPRITE,
+
37  MESHSPRITE_NOTEXTURE,
+
38  TEXTNODE,
+
39  BATCHED_SPRITES,
+
40  BATCHED_SPRITES_NOTEXTURE,
+
41  BATCHED_MESHSPRITES,
+
42  BATCHED_MESHSPRITES_NOTEXTURE,
+
43  BATCHED_TEXTNODES
+
44  };
+
45 
+
46  enum class DefaultFragment
+
47  {
+
48  SPRITE,
+
49  SPRITE_GRAY,
+
50  SPRITE_NOTEXTURE,
+
51  TEXTNODE_ALPHA,
+
52  TEXTNODE_RED
+
53  };
+
54 
+
56  Shader();
+
57 
+
58  Shader(const char *shaderName, LoadMode loadMode, Introspection introspection, const char *vertex, const char *fragment, uint64_t vertexHash, uint64_t fragmentHash);
+
59  Shader(const char *shaderName, LoadMode loadMode, Introspection introspection, const char *vertex, const char *fragment);
+
60  Shader(const char *shaderName, LoadMode loadMode, const char *vertex, const char *fragment);
+
61  Shader(LoadMode loadMode, const char *vertex, const char *fragment);
+
62 
+
63  Shader(const char *shaderName, LoadMode loadMode, Introspection introspection, DefaultVertex defaultVertex, const char *fragment, uint64_t fragmentHash);
+
64  Shader(const char *shaderName, LoadMode loadMode, Introspection introspection, DefaultVertex defaultVertex, const char *fragment);
+
65  Shader(const char *shaderName, LoadMode loadMode, DefaultVertex defaultVertex, const char *fragment);
+
66  Shader(LoadMode loadMode, DefaultVertex defaultVertex, const char *fragment);
+
67  Shader(const char *shaderName, LoadMode loadMode, Introspection introspection, const char *vertex, DefaultFragment defaultFragment, uint64_t vertexHash);
+
68  Shader(const char *shaderName, LoadMode loadMode, Introspection introspection, const char *vertex, DefaultFragment defaultFragment);
+
69  Shader(const char *shaderName, LoadMode loadMode, const char *vertex, DefaultFragment defaultFragment);
+
70  Shader(LoadMode loadMode, const char *vertex, DefaultFragment defaultFragment);
+
71 
+
72  ~Shader() override;
+
73 
+
74  bool loadFromMemory(const char *shaderName, Introspection introspection, const char *vertex, const char *fragment, uint64_t vertexHash, uint64_t fragmentHash);
+
75  bool loadFromMemory(const char *shaderName, Introspection introspection, const char *vertex, const char *fragment);
+
76  bool loadFromMemory(const char *shaderName, const char *vertex, const char *fragment);
+
77  bool loadFromMemory(const char *vertex, const char *fragment);
+
78 
+
79  bool loadFromMemory(const char *shaderName, Introspection introspection, DefaultVertex defaultVertex, const char *fragment, uint64_t fragmentHash);
+
80  bool loadFromMemory(const char *shaderName, Introspection introspection, DefaultVertex defaultVertex, const char *fragment);
+
81  bool loadFromMemory(const char *shaderName, DefaultVertex defaultVertex, const char *fragment);
+
82  bool loadFromMemory(DefaultVertex defaultVertex, const char *fragment);
+
83  bool loadFromMemory(const char *shaderName, Introspection introspection, const char *vertex, DefaultFragment defaultFragment, uint64_t vertexHash);
+
84  bool loadFromMemory(const char *shaderName, Introspection introspection, const char *vertex, DefaultFragment defaultFragment);
+
85  bool loadFromMemory(const char *shaderName, const char *vertex, DefaultFragment defaultFragment);
+
86  bool loadFromMemory(const char *vertex, DefaultFragment defaultFragment);
+
87 
+
88  bool loadFromFile(const char *shaderName, Introspection introspection, const char *vertex, const char *fragment);
+
89  bool loadFromFile(const char *shaderName, const char *vertex, const char *fragment);
+
90  bool loadFromFile(const char *vertex, const char *fragment);
+
91 
+
92  bool loadFromFile(const char *shaderName, Introspection introspection, DefaultVertex defaultVertex, const char *fragment);
+
93  bool loadFromFile(const char *shaderName, DefaultVertex defaultVertex, const char *fragment);
+
94  bool loadFromFile(DefaultVertex defaultVertex, const char *fragment);
+
95  bool loadFromFile(const char *shaderName, Introspection introspection, const char *vertex, DefaultFragment defaultFragment);
+
96  bool loadFromFile(const char *shaderName, const char *vertex, DefaultFragment defaultFragment);
+
97  bool loadFromFile(const char *vertex, DefaultFragment defaultFragment);
+
98 
+
100  bool setAttribute(const char *name, int stride, unsigned long int pointer);
+
101 
+
103  bool isLinked() const;
+
104 
+
106  unsigned int retrieveInfoLogLength() const;
+
108  void retrieveInfoLog(nctl::String &infoLog) const;
+
109 
+
111  bool logOnErrors() const;
+
113 
+
114  void setLogOnErrors(bool shouldLogOnErrors);
+
115 
+
117  void setGLShaderProgramLabel(const char *label);
+
118 
+
120  void registerBatchedShader(Shader &batchedShader);
+
121 
+
123  static bool isBinaryCacheEnabled();
+
125  static void setBinaryCacheEnabled(bool enable);
+
126 
+
127  inline static ObjectType sType() { return ObjectType::SHADER; }
+
128 
+
129  private:
+
131  nctl::UniquePtr<GLShaderProgram> glShaderProgram_;
+
132 
+
134  bool load(LoadMode loadMode, const char *shaderName, Introspection introspection, const char *vertex, const char *fragment,
+
135  DefaultVertex defaultVertex, DefaultFragment defaultFragment, uint64_t vertexHash, uint64_t fragmentHash);
+
136 
+
138  Shader(const Shader &) = delete;
+
140  Shader &operator=(const Shader &) = delete;
+
141 
+
142  friend class ShaderState;
+
143 };
+
144 
+
145 }
+
146 
+
147 #endif
+
Static RRTI and identification index.
Definition: Object.h:10
+
ObjectType
Object types.
Definition: Object.h:14
+
Shader class.
Definition: Shader.h:17
+
Shader state class for the user to use custom shaders.
Definition: ShaderState.h:16
+
A basic string class made of chars.
Definition: String.h:23
+ +
+ + + + diff --git a/master/_shader_state_8h_source.html b/master/_shader_state_8h_source.html new file mode 100644 index 0000000000..63d829006b --- /dev/null +++ b/master/_shader_state_8h_source.html @@ -0,0 +1,160 @@ + + + + + + + +nCine: include/ncine/ShaderState.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ShaderState.h
+
+
+
1 #ifndef CLASS_NCINE_SHADERSTATE
+
2 #define CLASS_NCINE_SHADERSTATE
+
3 
+
4 #include "common_defines.h"
+
5 #include "Vector4.h"
+
6 #include "Colorf.h"
+
7 
+
8 namespace ncine {
+
9 
+
10 class DrawableNode;
+
11 class Shader;
+
12 class Texture;
+
13 
+
15 class DLL_PUBLIC ShaderState
+
16 {
+
17  public:
+
18  ShaderState();
+
20  ShaderState(DrawableNode *node, Shader *shader);
+
21  ~ShaderState();
+
22 
+
24  inline const DrawableNode *node() const { return node_; }
+
26  bool setNode(DrawableNode *node);
+
27 
+
29  inline const Shader *shader() const { return shader_; }
+
31  bool setShader(Shader *shader);
+
33  bool resetShader();
+
34 
+
36  bool setTexture(unsigned int unit, const Texture *texture);
+
38  inline bool setTexture(const Texture *texture) { return setTexture(0, texture); }
+
39 
+
40  bool setUniformInt(const char *blockName, const char *name, const int *vector);
+
41  bool setUniformInt(const char *blockName, const char *name, int value0);
+
42  bool setUniformInt(const char *blockName, const char *name, int value0, int value1);
+
43  bool setUniformInt(const char *blockName, const char *name, int value0, int value1, int value2);
+
44  bool setUniformInt(const char *blockName, const char *name, int value0, int value1, int value2, int value3);
+
45 
+
46  bool setUniformInt(const char *blockName, const char *name, const Vector2i &vector);
+
47  bool setUniformInt(const char *blockName, const char *name, const Vector3i &vector);
+
48  bool setUniformInt(const char *blockName, const char *name, const Vector4i &vector);
+
49 
+
50  bool setUniformFloat(const char *blockName, const char *name, const float *vector);
+
51  bool setUniformFloat(const char *blockName, const char *name, float value0);
+
52  bool setUniformFloat(const char *blockName, const char *name, float value0, float value1);
+
53  bool setUniformFloat(const char *blockName, const char *name, float value0, float value1, float value2);
+
54  bool setUniformFloat(const char *blockName, const char *name, float value0, float value1, float value2, float value3);
+
55 
+
56  bool setUniformFloat(const char *blockName, const char *name, const Vector2f &vector);
+
57  bool setUniformFloat(const char *blockName, const char *name, const Vector3f &vector);
+
58  bool setUniformFloat(const char *blockName, const char *name, const Vector4f &vector);
+
59  bool setUniformFloat(const char *blockName, const char *name, const Colorf &color);
+
60 
+
61  unsigned int uniformBlockSize(const char *blockName);
+
62  bool copyToUniformBlock(const char *blockName, unsigned int destIndex, unsigned char *src, unsigned int numBytes);
+
63  bool copyToUniformBlock(const char *blockName, unsigned char *src, unsigned int numBytes);
+
64  bool copyToUniformBlock(const char *blockName, unsigned char *src);
+
65 
+
66  private:
+
67  DrawableNode *node_;
+
68  Shader *shader_;
+
69  int previousShaderType_;
+
70 
+
72  ShaderState(const ShaderState &) = delete;
+
74  ShaderState &operator=(const ShaderState &) = delete;
+
75 };
+
76 
+
77 }
+
78 
+
79 #endif
+
A four channels normalized float color.
Definition: Colorf.h:13
+
A class for objects that can be drawn through the render queue.
Definition: DrawableNode.h:14
+
Shader class.
Definition: Shader.h:17
+
Shader state class for the user to use custom shaders.
Definition: ShaderState.h:16
+
const Shader * shader() const
Return the associated custom shader.
Definition: ShaderState.h:29
+
const DrawableNode * node() const
Returns the drawable node affected by the shader state.
Definition: ShaderState.h:24
+
bool setTexture(const Texture *texture)
Assigns a texture to texture unit zero.
Definition: ShaderState.h:38
+
Texture class.
Definition: Texture.h:16
+ +
A three component vector based on templates.
Definition: Vector3.h:11
+
A four component vector based on templates.
Definition: Vector4.h:12
+
+ + + + diff --git a/master/_shared_ptr_8h_source.html b/master/_shared_ptr_8h_source.html new file mode 100644 index 0000000000..80d7f5ab4e --- /dev/null +++ b/master/_shared_ptr_8h_source.html @@ -0,0 +1,357 @@ + + + + + + + +nCine: include/nctl/SharedPtr.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SharedPtr.h
+
+
+
1 #ifndef CLASS_NCTL_SHAREDPTR
+
2 #define CLASS_NCTL_SHAREDPTR
+
3 
+
4 #include "../ncine/common_macros.h"
+
5 #include "UniquePtr.h"
+
6 #include "Atomic.h"
+
7 
+
8 namespace nctl {
+
9 
+
11 
+
12 template <class T>
+
13 class SharedPtr
+
14 {
+
15  public:
+
16  SharedPtr()
+
17  : ptr_(nullptr), ctrlBlock_(nullptr) {}
+
18  explicit SharedPtr(T *ptr);
+
19 #if NCINE_WITH_ALLOCATORS
+
20  SharedPtr(T *ptr, IAllocator &alloc);
+
21 #endif
+
22  explicit SharedPtr(UniquePtr<T> &&unique);
+
23  ~SharedPtr();
+
24 
+
25  SharedPtr(const SharedPtr &other);
+
26  SharedPtr &operator=(SharedPtr other);
+
27  SharedPtr(SharedPtr &&other);
+
28 
+
29  void reset(T *newPtr);
+
30  void reset(nullptr_t);
+
31  inline T *get() { return ptr_; }
+
32  inline const T *get() const { return ptr_; }
+
33  int32_t useCount() const;
+
34 
+
35  inline T &operator*() { return *ptr_; }
+
36  inline const T &operator*() const { return *ptr_; }
+
37 
+
38  inline T *operator->() { return ptr_; }
+
39  inline const T *operator->() const { return ptr_; }
+
40 
+
41  inline operator bool() const { return ptr_ != nullptr; }
+
42 
+
43  friend inline bool operator==(const SharedPtr &x, const SharedPtr &y) { return x.get() == y.get(); }
+
44  friend inline bool operator!=(const SharedPtr &x, const SharedPtr &y) { return x.get() != y.get(); }
+
45  friend inline bool operator==(const SharedPtr &x, nullptr_t) { return x.get() == nullptr; }
+
46  friend inline bool operator==(nullptr_t, const SharedPtr &y) { return nullptr == y.get(); }
+
47  friend inline bool operator!=(const SharedPtr &x, nullptr_t) { return x.get() != nullptr; }
+
48  friend inline bool operator!=(nullptr_t, const SharedPtr &y) { return nullptr != y.get(); }
+
49 
+
50  private:
+
52  struct ControlBlock
+
53  {
+
54 #if !NCINE_WITH_ALLOCATORS
+
55  ControlBlock()
+
56  : counter_(0) {}
+
57  ControlBlock(int32_t count)
+
58  : counter_(count) {}
+
59 #else
+
60  explicit ControlBlock(IAllocator &alloc)
+
61  : alloc_(alloc), counter_(0) {}
+
62  ControlBlock(IAllocator &alloc, int32_t count)
+
63  : alloc_(alloc), counter_(count) {}
+
64 #endif
+
65  virtual ~ControlBlock() {}
+
66  virtual void dispose() = 0;
+
67  virtual void reset(T *ptr) = 0;
+
68  virtual void reset(nullptr_t) = 0;
+
69 
+
70 #if NCINE_WITH_ALLOCATORS
+
72  IAllocator &alloc_;
+
73 #endif
+
74  Atomic32 counter_;
+
75  };
+
76 
+
78  struct ControlBlockAndPointer : public ControlBlock
+
79  {
+
80 #if !NCINE_WITH_ALLOCATORS
+
81  ControlBlockAndPointer()
+
82  : ptr_(nullptr) {}
+
83  explicit ControlBlockAndPointer(T *ptr)
+
84  : ControlBlock(1), ptr_(ptr) { FATAL_ASSERT(ptr); }
+
85 #else
+
86  ControlBlockAndPointer()
+
87  : ControlBlock(theDefaultAllocator()), ptr_(nullptr) {}
+
88  explicit ControlBlockAndPointer(T *ptr)
+
89  : ControlBlock(theDefaultAllocator(), 1), ptr_(ptr) { FATAL_ASSERT(ptr); }
+
90  explicit ControlBlockAndPointer(IAllocator &alloc)
+
91  : ControlBlock(alloc, 1), ptr_(nullptr) {}
+
92  ControlBlockAndPointer(IAllocator &alloc, T *ptr)
+
93  : ControlBlock(alloc, 1), ptr_(ptr) { FATAL_ASSERT(ptr); }
+
94 #endif
+
95  ~ControlBlockAndPointer() override { dispose(); }
+
96 
+
97  void dispose() override
+
98  {
+
99 #if !NCINE_WITH_ALLOCATORS
+
100  delete ptr_;
+
101 #else
+
102  ControlBlock::alloc_.deleteObject(ptr_);
+
103 #endif
+
104  }
+
105  void reset(T *ptr) override { ptr_ = ptr; }
+
106  void reset(nullptr_t) override { ptr_ = nullptr; }
+
107 
+
108  T *ptr_;
+
109  };
+
110 
+
112  struct ControlBlockAndObject : public ControlBlock
+
113  {
+
114 #if !NCINE_WITH_ALLOCATORS
+
115  template <class... Args>
+
116  ControlBlockAndObject(Args &&... args)
+
117  : ControlBlock(1), object_(nctl::forward<Args>(args)...) {}
+
118 #else
+
119  template <class... Args>
+
120  ControlBlockAndObject(Args &&... args)
+
121  : ControlBlock(theDefaultAllocator(), 1), object_(nctl::forward<Args>(args)...) {}
+
122  template <class... Args>
+
123  ControlBlockAndObject(IAllocator &alloc, Args &&... args)
+
124  : ControlBlock(alloc, 1), object_(nctl::forward<Args>(args)...) {}
+
125 #endif
+
126 
+
127  void dispose() override {}
+
128  void reset(T *) override { FATAL_MSG("Can't reset a control block that stores the object"); }
+
129  void reset(nullptr_t) override { FATAL_MSG("Can't reset a control block that stores the object"); }
+
130 
+
131  T object_;
+
132  };
+
133 
+
134  T *ptr_;
+
135  ControlBlock *ctrlBlock_;
+
136 
+
137  template <class S, class... Args>
+
138  friend SharedPtr<S> makeShared(Args &&... args);
+
139 #if NCINE_WITH_ALLOCATORS
+
140  template <class S, class... Args>
+
141  friend SharedPtr<S> allocateShared(IAllocator &alloc, Args &&... args);
+
142 #endif
+
143 };
+
144 
+
145 template <class T>
+ +
147  : ptr_(ptr),
+
148 #if !NCINE_WITH_ALLOCATORS
+
149  ctrlBlock_(new ControlBlockAndPointer(ptr_))
+
150 #else
+
151  ctrlBlock_(theDefaultAllocator().newObject<ControlBlockAndPointer>(theDefaultAllocator(), ptr_))
+
152 #endif
+
153 {
+
154 }
+
155 
+
156 #if NCINE_WITH_ALLOCATORS
+
157 template <class T>
+
158 SharedPtr<T>::SharedPtr(T *ptr, IAllocator &alloc)
+
159  : ptr_(ptr), ctrlBlock_(alloc.newObject<ControlBlockAndPointer>(alloc, ptr_))
+
160 {
+
161 }
+
162 #endif
+
163 
+
164 template <class T>
+
165 SharedPtr<T>::SharedPtr(UniquePtr<T> &&unique)
+
166  : ptr_(unique.release()),
+
167 #if !NCINE_WITH_ALLOCATORS
+
168  ctrlBlock_(new ControlBlockAndPointer(ptr_))
+
169 #else
+
170  ctrlBlock_(theDefaultAllocator().newObject<ControlBlockAndPointer>(theDefaultAllocator(), ptr_))
+
171 #endif
+
172 {
+
173 }
+
174 
+
175 template <class T>
+
176 SharedPtr<T>::~SharedPtr()
+
177 {
+
178  if (ctrlBlock_)
+
179  {
+
180  ctrlBlock_->counter_--;
+
181  if (ctrlBlock_->counter_ <= 0)
+
182 #if !NCINE_WITH_ALLOCATORS
+
183  delete ctrlBlock_;
+
184 #else
+
185  ctrlBlock_->alloc_.deleteObject(ctrlBlock_);
+
186 #endif
+
187  }
+
188 }
+
189 
+
190 template <class T>
+
191 SharedPtr<T>::SharedPtr(const SharedPtr &other)
+
192  : ptr_(other.ptr_), ctrlBlock_(other.ctrlBlock_)
+
193 {
+
194  ctrlBlock_->counter_++;
+
195 }
+
196 
+
197 template <class T>
+
198 SharedPtr<T> &SharedPtr<T>::operator=(SharedPtr other)
+
199 {
+
200  nctl::swap(ptr_, other.ptr_);
+
201  nctl::swap(ctrlBlock_, other.ctrlBlock_);
+
202  return *this;
+
203 }
+
204 
+
205 template <class T>
+
206 SharedPtr<T>::SharedPtr(SharedPtr &&other)
+
207  : ptr_(nullptr), ctrlBlock_(nullptr)
+
208 {
+
209  nctl::swap(ptr_, other.ptr_);
+
210  nctl::swap(ctrlBlock_, other.ctrlBlock_);
+
211 }
+
212 
+
213 template <class T>
+
214 int32_t SharedPtr<T>::useCount() const
+
215 {
+
216  return (ctrlBlock_ ? ctrlBlock_->counter_ : 0);
+
217 }
+
218 
+
219 template <class T>
+
220 void SharedPtr<T>::reset(T *newPtr)
+
221 {
+
222  // check for self reset
+
223  if (ptr_ != newPtr)
+
224  {
+
225  ctrlBlock_->counter_--;
+
226  if (ctrlBlock_->counter_ <= 0)
+
227  ctrlBlock_->dispose();
+
228 
+
229  ptr_ = newPtr;
+
230  ctrlBlock_->reset(newPtr);
+
231  ctrlBlock_->counter_ = 1;
+
232  }
+
233 }
+
234 
+
235 template <class T>
+
236 void SharedPtr<T>::reset(nullptr_t)
+
237 {
+
238  ctrlBlock_->counter_--;
+
239  if (ctrlBlock_->counter_ <= 0)
+
240  ctrlBlock_->dispose();
+
241 
+
242  ptr_ = nullptr;
+
243  ctrlBlock_->reset(nullptr);
+
244  ctrlBlock_->counter_ = 0;
+
245 }
+
246 
+
247 template <class T, class... Args>
+
248 SharedPtr<T> makeShared(Args &&... args)
+
249 {
+
250  SharedPtr<T> ptr;
+
251 #if !NCINE_WITH_ALLOCATORS
+
252  auto ctrlBlock = new typename SharedPtr<T>::ControlBlockAndObject(args...);
+
253 #else
+
254  auto ctrlBlock = theDefaultAllocator().newObject<typename SharedPtr<T>::ControlBlockAndObject>(theDefaultAllocator(), args...);
+
255 #endif
+
256  ptr.ptr_ = &ctrlBlock->object_;
+
257  ptr.ctrlBlock_ = ctrlBlock;
+
258 
+
259  return ptr;
+
260 }
+
261 
+
262 #if NCINE_WITH_ALLOCATORS
+
263 template <class T, class... Args>
+
264 SharedPtr<T> allocateShared(IAllocator &alloc, Args &&... args)
+
265 {
+
266  SharedPtr<T> ptr;
+
267  auto ctrlBlock = alloc.newObject<typename SharedPtr<T>::ControlBlockAndObject>(alloc, args...);
+
268  ptr.ptr_ = &ctrlBlock->object_;
+
269  ptr.ctrlBlock_ = ctrlBlock;
+
270 
+
271  return ptr;
+
272 }
+
273 #endif
+
274 
+
275 }
+
276 
+
277 #endif
+
An atomic int32_t class.
Definition: Atomic.h:15
+
The allocator interface.
Definition: IAllocator.h:18
+
A shared pointer implementation.
Definition: SharedPtr.h:14
+
A unique pointer implementation.
Definition: UniquePtr.h:118
+
+ + + + diff --git a/master/_sparse_set_8h_source.html b/master/_sparse_set_8h_source.html new file mode 100644 index 0000000000..e6d17fdb93 --- /dev/null +++ b/master/_sparse_set_8h_source.html @@ -0,0 +1,458 @@ + + + + + + + +nCine: include/nctl/SparseSet.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SparseSet.h
+
+
+
1 #ifndef CLASS_NCTL_SPARSESET
+
2 #define CLASS_NCTL_SPARSESET
+
3 
+
4 #include <ncine/common_macros.h>
+
5 #include "ReverseIterator.h"
+
6 #include <cstring> // for memcpy()
+
7 
+
8 #include <ncine/config.h>
+
9 #if NCINE_WITH_ALLOCATORS
+
10  #include "AllocManager.h"
+
11  #include "IAllocator.h"
+
12 #endif
+
13 
+
14 namespace nctl {
+
15 
+
16 template <class T> class SparseSetIterator;
+
17 
+
19 template <class T>
+
20 class SparseSet
+
21 {
+
22  public:
+
23  static const T NotFound = T(-1);
+
24 
+
26 
+ + + + +
34 
+
35  SparseSet(unsigned int capacity, unsigned int maxValue);
+
36 #if NCINE_WITH_ALLOCATORS
+
37  SparseSet(unsigned int capacity, unsigned int maxValue, IAllocator &alloc);
+
38 #endif
+
39  ~SparseSet();
+
40 
+
42  SparseSet(const SparseSet &other);
+
44  SparseSet(SparseSet &&other);
+
46  SparseSet &operator=(const SparseSet &other);
+
48  SparseSet &operator=(SparseSet &&other);
+
49 
+
51  inline void swap(SparseSet &first, SparseSet &second)
+
52  {
+
53 #if NCINE_WITH_ALLOCATORS
+
54  nctl::swap(first.alloc_, second.alloc_);
+
55 #endif
+
56  nctl::swap(first.size_, second.size_);
+
57  nctl::swap(first.capacity_, second.capacity_);
+
58  nctl::swap(first.maxValue_, second.maxValue_);
+
59  nctl::swap(first.sparse_, second.sparse_);
+
60  nctl::swap(first.dense_, second.dense_);
+
61  }
+
62 
+ + + + +
71 
+
73  ConstIterator begin() const;
+ +
77  ConstIterator end() const;
+
79  ConstReverseIterator rEnd() const;
+
80 
+
82  inline ConstIterator cBegin() const { return begin(); }
+
84  inline ConstReverseIterator crBegin() const { return rBegin(); }
+
86  inline ConstIterator cEnd() const { return end(); }
+
88  inline ConstReverseIterator crEnd() const { return rEnd(); }
+
89 
+
91  bool insert(T value);
+
92 
+
94  inline unsigned int maxValue() const { return maxValue_; }
+
96  inline unsigned int capacity() const { return capacity_; }
+
98  inline bool isEmpty() const { return size_ == 0; }
+
100  inline unsigned int size() const { return size_; }
+
102  inline float loadFactor() const { return size_ / static_cast<float>(capacity_); }
+
103 
+
105  inline void clear() { size_ = 0; }
+
107  bool contains(T value) const;
+
109  T find(T value) const;
+
111  bool remove(T value);
+
112 
+
114  void rehash(unsigned int count);
+
115 
+
116  private:
+
117 #if NCINE_WITH_ALLOCATORS
+
119  IAllocator &alloc_;
+
120 #endif
+
121  unsigned int size_;
+
122  unsigned int capacity_;
+
123  T maxValue_;
+
124  T *sparse_;
+
125  T *dense_;
+
126 
+
127  friend class SparseSetIterator<T>;
+
128 };
+
129 
+
130 template <class T>
+ +
132 {
+
133  ConstIterator iterator(this, 0);
+
134  return iterator;
+
135 }
+
136 
+
137 template <class T>
+ +
139 {
+
140  ConstIterator iterator(this, size_ - 1);
+
141  return ConstReverseIterator(iterator);
+
142 }
+
143 
+
144 template <class T>
+ +
146 {
+
147  return ConstIterator(this, size_);
+
148 }
+
149 
+
150 template <class T>
+ +
152 {
+
153  ConstIterator iterator(this, -1);
+
154  return ConstReverseIterator(iterator);
+
155 }
+
156 
+
157 template <class T>
+ +
159 {
+
160  ConstIterator iterator(this, 0);
+
161  return iterator;
+
162 }
+
163 
+
164 template <class T>
+ +
166 {
+
167  ConstIterator iterator(this, size_ - 1);
+
168  return ConstReverseIterator(iterator);
+
169 }
+
170 
+
171 template <class T>
+ +
173 {
+
174  return ConstIterator(this, size_);
+
175 }
+
176 
+
177 template <class T>
+ +
179 {
+
180  ConstIterator iterator(this, -1);
+
181  return ConstReverseIterator(iterator);
+
182 }
+
183 
+
184 template <class T>
+
185 SparseSet<T>::SparseSet(unsigned int capacity, unsigned int maxValue)
+
186  :
+
187 #if NCINE_WITH_ALLOCATORS
+
188  alloc_(theDefaultAllocator()),
+
189 #endif
+
190  size_(0), capacity_(capacity), maxValue_(maxValue),
+
191  sparse_(nullptr), dense_(nullptr)
+
192 {
+
193  FATAL_ASSERT_MSG(capacity > 0, "Zero is not a valid capacity");
+
194  FATAL_ASSERT(maxValue + 1 >= capacity);
+
195 
+
196 #if !NCINE_WITH_ALLOCATORS
+
197  sparse_ = new T[maxValue + 1];
+
198  dense_ = new T[capacity];
+
199 #else
+
200  sparse_ = alloc_.newArray<T>(maxValue + 1);
+
201  dense_ = alloc_.newArray<T>(capacity);
+
202 #endif
+
203 }
+
204 
+
205 #if NCINE_WITH_ALLOCATORS
+
206 template <class T>
+
207 SparseSet<T>::SparseSet(unsigned int capacity, unsigned int maxValue, IAllocator &alloc)
+
208  : alloc_(alloc), size_(0), capacity_(capacity), maxValue_(maxValue),
+
209  sparse_(nullptr), dense_(nullptr)
+
210 {
+
211  static_assert(nctl::isIntegral<T>::value, "Integral type is required");
+
212  FATAL_ASSERT_MSG(capacity > 0, "Zero is not a valid capacity");
+
213  FATAL_ASSERT(maxValue + 1 >= capacity);
+
214 
+
215  sparse_ = alloc_.newArray<T>(maxValue + 1);
+
216  dense_ = alloc_.newArray<T>(capacity);
+
217 }
+
218 #endif
+
219 
+
220 template <class T>
+
221 SparseSet<T>::~SparseSet()
+
222 {
+
223 #if !NCINE_WITH_ALLOCATORS
+
224  delete[] sparse_;
+
225  delete[] dense_;
+
226 #else
+
227  alloc_.deleteArray<T>(sparse_);
+
228  alloc_.deleteArray<T>(dense_);
+
229 #endif
+
230 }
+
231 
+
232 template <class T>
+ +
234  :
+
235 #if NCINE_WITH_ALLOCATORS
+
236  alloc_(other.alloc_),
+
237 #endif
+
238  size_(other.size_), capacity_(other.capacity_), maxValue_(other.maxValue_)
+
239 {
+
240 #if !NCINE_WITH_ALLOCATORS
+
241  sparse_ = new T[maxValue_ + 1];
+
242  dense_ = new T[capacity_];
+
243 #else
+
244  sparse_ = alloc_.newArray<T>(maxValue_ + 1);
+
245  dense_ = alloc_.newArray<T>(capacity_);
+
246 #endif
+
247 
+
248  memcpy(sparse_, other.sparse_, (maxValue_ + 1) * sizeof(T));
+
249  memcpy(dense_, other.dense_, capacity_ * sizeof(T));
+
250 }
+
251 
+
252 template <class T>
+ +
254  :
+
255 #if NCINE_WITH_ALLOCATORS
+
256  alloc_(other.alloc_),
+
257 #endif
+
258  size_(other.size_), capacity_(other.capacity_), maxValue_(other.maxValue_),
+
259  sparse_(other.sparse_), dense_(other.dense_)
+
260 {
+
261  other.size_ = 0;
+
262  other.capacity_ = 0;
+
263  other.maxValue_ = 0;
+
264  other.sparse_ = nullptr;
+
265  other.dense_ = nullptr;
+
266 }
+
267 
+
268 template <class T>
+ +
270 {
+
271  if (this == &other)
+
272  return *this;
+
273 
+
274  if (other.maxValue_ > maxValue_)
+
275  {
+
276  maxValue_ = other.maxValue_;
+
277 #if !NCINE_WITH_ALLOCATORS
+
278  delete[] sparse_;
+
279  sparse_ = new T[maxValue_ + 1];
+
280 #else
+
281  alloc_.deleteArray<T>(sparse_);
+
282  sparse_ = alloc_.newArray<T>(maxValue_ + 1);
+
283 #endif
+
284  }
+
285 
+
286  if (other.size_ > capacity_)
+
287  {
+
288  capacity_ = other.size_;
+
289 #if !NCINE_WITH_ALLOCATORS
+
290  delete[] dense_;
+
291  dense_ = new T[capacity_];
+
292 #else
+
293  alloc_.deleteArray<T>(dense_);
+
294  dense_ = alloc_.newArray<T>(capacity_);
+
295 #endif
+
296  }
+
297 
+
298  memcpy(sparse_, other.sparse_, maxValue_ * sizeof(T));
+
299  memcpy(dense_, other.dense_, capacity_ * sizeof(T));
+
300  size_ = other.size_;
+
301 
+
302  return *this;
+
303 }
+
304 
+
305 template <class T>
+ +
307 {
+
308  if (this != &other)
+
309  {
+
310  swap(*this, other);
+
311  other.clear();
+
312  }
+
313  return *this;
+
314 }
+
315 
+
317 template <class T>
+
318 bool SparseSet<T>::insert(T value)
+
319 {
+
320  if (value > maxValue_ || size_ >= capacity_ || contains(value) == true)
+
321  return false;
+
322 
+
323  dense_[size_] = value;
+
324  sparse_[value] = size_;
+
325  size_++;
+
326 
+
327  return true;
+
328 }
+
329 
+
330 template <class T>
+
331 bool SparseSet<T>::contains(T value) const
+
332 {
+
333  if (size_ == 0 || value > maxValue_)
+
334  return false;
+
335 
+
336  if (sparse_[value] < size_ && dense_[sparse_[value]] == value)
+
337  return true;
+
338 
+
339  return false;
+
340 }
+
341 
+
342 template <class T>
+
343 T SparseSet<T>::find(T value) const
+
344 {
+
345  if (size_ == 0 || value > maxValue_)
+
346  return NotFound;
+
347 
+
348  if (sparse_[value] < size_ && dense_[sparse_[value]] == value)
+
349  return sparse_[value];
+
350 
+
351  return NotFound;
+
352 }
+
353 
+
355 template <class T>
+
356 bool SparseSet<T>::remove(T value)
+
357 {
+
358  if (contains(value) == false)
+
359  return false;
+
360 
+
361  T temp = dense_[size_ - 1];
+
362  dense_[sparse_[value]] = temp;
+
363  sparse_[temp] = sparse_[value];
+
364  size_--;
+
365 
+
366  return true;
+
367 }
+
368 
+
369 template <class T>
+
370 void SparseSet<T>::rehash(unsigned int count)
+
371 {
+
372  if (size_ == 0 || count < size_)
+
373  return;
+
374 
+
375  SparseSet<T> sparseSet(count, maxValue_);
+
376 
+
377  for (unsigned int i = 0; i < size_; i++)
+
378  sparseSet.insert(dense_[i]);
+
379 
+
380  *this = nctl::move(sparseSet);
+
381 }
+
382 
+
383 }
+
384 
+
385 #endif
+
The allocator interface.
Definition: IAllocator.h:18
+
A generic reverse iterator.
Definition: ReverseIterator.h:11
+
A template based sparse set implementation.
Definition: SparseSet.h:21
+
ConstReverseIterator crBegin() const
Returns a constant reverse iterator to the last element.
Definition: SparseSet.h:84
+
bool remove(T value)
Removes a key from the sparseset, if it exists.
Definition: SparseSet.h:356
+
ConstIterator cBegin() const
Returns a constant iterator to the first element.
Definition: SparseSet.h:82
+
void rehash(unsigned int count)
Sets the number of buckets to the new specified size and rehashes the container.
Definition: SparseSet.h:370
+
bool insert(T value)
Inserts an element if not already in.
Definition: SparseSet.h:318
+
SparseSetIterator< T > ConstIterator
Constant iterator type.
Definition: SparseSet.h:29
+
T find(T value) const
Checks whether an element is in the sparseset or not.
Definition: SparseSet.h:343
+
ConstReverseIterator crEnd() const
Returns a constant reverse iterator to prior the first element.
Definition: SparseSet.h:88
+
float loadFactor() const
Returns the ratio between used and total buckets.
Definition: SparseSet.h:102
+
ConstIterator begin()
Returns a constant iterator to the first element.
Definition: SparseSet.h:131
+
ConstIterator end()
Returns a constant iterator to past the last element.
Definition: SparseSet.h:145
+
bool contains(T value) const
Checks whether an element is in the sparseset or not.
Definition: SparseSet.h:331
+
ConstReverseIterator rEnd()
Returns a reverse constant iterator to prior the first element.
Definition: SparseSet.h:151
+
nctl::ReverseIterator< ConstIterator > ConstReverseIterator
Reverse constant iterator type.
Definition: SparseSet.h:33
+
unsigned int capacity() const
Returns the capacity of the sparseset.
Definition: SparseSet.h:96
+
unsigned int maxValue() const
Returns the maximum value of the sparseset.
Definition: SparseSet.h:94
+
ConstReverseIterator rBegin()
Returns a reverse constant iterator to the last element.
Definition: SparseSet.h:138
+
SparseSet & operator=(const SparseSet &other)
Assignment operator.
Definition: SparseSet.h:269
+
unsigned int size() const
Returns the number of elements in the sparseset.
Definition: SparseSet.h:100
+
bool isEmpty() const
Returns true if the sparseset is empty.
Definition: SparseSet.h:98
+
ConstIterator cEnd() const
Returns a constant iterator to past the last lement.
Definition: SparseSet.h:86
+
void clear()
Clears the sparseset.
Definition: SparseSet.h:105
+
void swap(SparseSet &first, SparseSet &second)
Swaps two SparseSets without copying their data.
Definition: SparseSet.h:51
+
A sparseset iterator.
Definition: SparseSetIterator.h:12
+
Definition: type_traits.h:149
+
+ + + + diff --git a/master/_sparse_set_iterator_8h_source.html b/master/_sparse_set_iterator_8h_source.html new file mode 100644 index 0000000000..ce4d1152c5 --- /dev/null +++ b/master/_sparse_set_iterator_8h_source.html @@ -0,0 +1,185 @@ + + + + + + + +nCine: include/nctl/SparseSetIterator.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
SparseSetIterator.h
+
+
+
1 #ifndef CLASS_NCTL_SPARSESETITERATOR
+
2 #define CLASS_NCTL_SPARSESETITERATOR
+
3 
+
4 #include "SparseSet.h"
+
5 #include "iterator.h"
+
6 
+
7 namespace nctl {
+
8 
+
10 template <class T>
+ +
12 {
+
13  public:
+ +
16 
+
17  SparseSetIterator(const SparseSet<T> *sparseSet, int index)
+
18  : sparseSet_(sparseSet), index_(index) {}
+
19 
+
21  Reference operator*() const;
+
22 
+ + +
27 
+ + +
32 
+
34  friend inline bool operator==(const SparseSetIterator &lhs, const SparseSetIterator &rhs)
+
35  {
+
36  return (lhs.sparseSet_ == rhs.sparseSet_ && lhs.index_ == rhs.index_);
+
37  }
+
38 
+
40  friend inline bool operator!=(const SparseSetIterator &lhs, const SparseSetIterator &rhs)
+
41  {
+
42  return (lhs.sparseSet_ != rhs.sparseSet_ || lhs.index_ != rhs.index_);
+
43  }
+
44 
+
45  private:
+
46  const SparseSet<T> *sparseSet_;
+
47  int index_;
+
48 };
+
49 
+
51 template <class T>
+ +
53 {
+
55  using ValueType = T;
+
57  using Pointer = const T *;
+
59  using Reference = const T &;
+ +
62 };
+
63 
+
64 template <class T>
+ +
66 {
+
67  return sparseSet_->dense_[sparseSet_->sparse_[index_]];
+
68 }
+
69 
+
70 template <class T>
+ +
72 {
+
73  index_++;
+
74  return *this;
+
75 }
+
76 
+
77 template <class T>
+ +
79 {
+
80  // Create an unmodified copy to return
+
81  SparseSetIterator<T> iterator = *this;
+
82  index_++;
+
83  return iterator;
+
84 }
+
85 
+
86 template <class T>
+ +
88 {
+
89  index_--;
+
90  return *this;
+
91 }
+
92 
+
93 template <class T>
+ +
95 {
+
96  // Create an unmodified copy to return
+
97  SparseSetIterator<T> iterator = *this;
+
98  index_--;
+
99  return iterator;
+
100 }
+
101 
+
102 }
+
103 
+
104 #endif
+
A template based sparse set implementation.
Definition: SparseSet.h:21
+
A sparseset iterator.
Definition: SparseSetIterator.h:12
+
SparseSetIterator & operator++()
Iterates to the next element (prefix)
Definition: SparseSetIterator.h:71
+
friend bool operator==(const SparseSetIterator &lhs, const SparseSetIterator &rhs)
Equality operator.
Definition: SparseSetIterator.h:34
+
friend bool operator!=(const SparseSetIterator &lhs, const SparseSetIterator &rhs)
Inequality operator.
Definition: SparseSetIterator.h:40
+
SparseSetIterator & operator--()
Iterates to the previous element (prefix)
Definition: SparseSetIterator.h:87
+
typename IteratorTraits< SparseSetIterator >::Reference Reference
Reference type which respects iterator constness.
Definition: SparseSetIterator.h:15
+
Reference operator*() const
Deferencing operator.
Definition: SparseSetIterator.h:65
+
Dispatching tag for iterators that can move both ways, one element at a time.
Definition: iterator.h:11
+
T ValueType
Type of the values deferenced by the iterator (never const)
Definition: SparseSetIterator.h:55
+
const T & Reference
Reference to the type of the values deferenced by the iterator.
Definition: SparseSetIterator.h:59
+
static BidirectionalIteratorTag IteratorCategory()
Type trait for iterator category.
Definition: SparseSetIterator.h:61
+
const T * Pointer
Pointer to the type of the values deferenced by the iterator.
Definition: SparseSetIterator.h:57
+
Base iterator traits structure.
Definition: iterator.h:19
+
+ + + + diff --git a/master/_sprite_8h_source.html b/master/_sprite_8h_source.html new file mode 100644 index 0000000000..e17201387d --- /dev/null +++ b/master/_sprite_8h_source.html @@ -0,0 +1,128 @@ + + + + + + + +nCine: include/ncine/Sprite.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Sprite.h
+
+
+
1 #ifndef CLASS_NCINE_SPRITE
+
2 #define CLASS_NCINE_SPRITE
+
3 
+
4 #include "BaseSprite.h"
+
5 
+
6 namespace ncine {
+
7 
+
9 class DLL_PUBLIC Sprite : public BaseSprite
+
10 {
+
11  public:
+
13  Sprite();
+
15  Sprite(SceneNode *parent, Texture *texture);
+
17  explicit Sprite(Texture *texture);
+
19  Sprite(SceneNode *parent, Texture *texture, float xx, float yy);
+
21  Sprite(SceneNode *parent, Texture *texture, const Vector2f &position);
+
23  Sprite(Texture *texture, float xx, float yy);
+
25  Sprite(Texture *texture, const Vector2f &position);
+
26 
+
28  Sprite(Sprite &&) = default;
+
30  Sprite &operator=(Sprite &&) = default;
+
31 
+
33  inline Sprite clone() const { return Sprite(*this); }
+
34 
+
35  inline static ObjectType sType() { return ObjectType::SPRITE; }
+
36 
+
37  protected:
+
39  Sprite(const Sprite &other);
+
40 
+
41  private:
+
43  Sprite &operator=(const Sprite &) = delete;
+
44 
+
46  void init();
+
47 
+
48  void textureHasChanged(Texture *newTexture) override;
+
49 };
+
50 
+
51 }
+
52 
+
53 #endif
+
The base class for sprites.
Definition: BaseSprite.h:15
+
The base class for the transformation nodes hierarchy.
Definition: SceneNode.h:19
+
A scene node representing a regular sprite.
Definition: Sprite.h:10
+
Sprite clone() const
Returns a copy of this object.
Definition: Sprite.h:33
+
Sprite(Sprite &&)=default
Default move constructor.
+
Sprite & operator=(Sprite &&)=default
Default move assignment operator.
+
Texture class.
Definition: Texture.h:16
+ +
+ + + + diff --git a/master/_stack_allocator_8h_source.html b/master/_stack_allocator_8h_source.html new file mode 100644 index 0000000000..eb1a623c31 --- /dev/null +++ b/master/_stack_allocator_8h_source.html @@ -0,0 +1,133 @@ + + + + + + + +nCine: include/nctl/StackAllocator.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
StackAllocator.h
+
+
+
1 #ifndef CLASS_NCTL_STACKALLOCATOR
+
2 #define CLASS_NCTL_STACKALLOCATOR
+
3 
+
4 #define STACK_DEBUG (0)
+
5 #include <nctl/IAllocator.h>
+
6 
+
7 namespace nctl {
+
8 
+
10 class DLL_PUBLIC StackAllocator : public IAllocator
+
11 {
+
12  public:
+ +
14  : StackAllocator("Stack") {}
+
15  explicit StackAllocator(const char *name);
+
16  StackAllocator(size_t size, void *base)
+
17  : StackAllocator("Stack", size, base) {}
+
18  StackAllocator(const char *name, size_t size, void *base);
+
19  ~StackAllocator();
+
20 
+
21  void init(size_t size, void *base);
+
22 #if STACK_DEBUG
+
23  inline const void *previous() const { return previous_; }
+
24 #endif
+
25  inline const void *current() const { return current_; }
+
26 
+
27  private:
+
28  struct Header
+
29  {
+
30 #if STACK_DEBUG
+
31  void *previous;
+
32 #endif
+
33  uint8_t adjustment;
+
34  };
+
35 
+
36 #if STACK_DEBUG
+
37  void *previous_;
+
38 #endif
+
39  void *current_;
+
40 
+
41  StackAllocator(const StackAllocator &) = delete;
+
42  StackAllocator &operator=(const StackAllocator &) = delete;
+
43 
+
44  static void *allocateImpl(IAllocator *allocator, size_t size, uint8_t alignment);
+
45  static void *reallocateImpl(IAllocator *allocator, void *ptr, size_t size, uint8_t alignment, size_t &oldSize);
+
46  static void deallocateImpl(IAllocator *allocator, void *ptr);
+
47 };
+
48 
+
49 }
+
50 
+
51 #endif
+
The allocator interface.
Definition: IAllocator.h:18
+
A stack allocator.
Definition: StackAllocator.h:11
+
+ + + + diff --git a/master/_static_array_8h_source.html b/master/_static_array_8h_source.html new file mode 100644 index 0000000000..728c5433c0 --- /dev/null +++ b/master/_static_array_8h_source.html @@ -0,0 +1,609 @@ + + + + + + + +nCine: include/nctl/StaticArray.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
StaticArray.h
+
+
+
1 #ifndef CLASS_NCTL_STATICARRAY
+
2 #define CLASS_NCTL_STATICARRAY
+
3 
+
4 #include <new>
+
5 #include <ncine/common_macros.h>
+
6 #include "ArrayIterator.h"
+
7 #include "ReverseIterator.h"
+
8 #include "utility.h"
+
9 
+
10 namespace nctl {
+
11 
+
13 
+
14 enum class StaticArrayMode
+
15 {
+
17  ZERO_SIZE,
+
19  EXTEND_SIZE
+
20 };
+
21 
+
23 template <class T, unsigned int C>
+ +
25 {
+
26  public:
+ + + + +
35 
+ +
38  : StaticArray(StaticArrayMode::ZERO_SIZE) {}
+
40  explicit StaticArray(StaticArrayMode mode)
+
41  : size_(0), capacity_(C)
+
42  {
+
43  if (mode == StaticArrayMode::EXTEND_SIZE)
+
44  setSize(capacity_);
+
45  }
+
46  inline ~StaticArray() { destructArray(array_, size_); }
+
47 
+
49  StaticArray(const StaticArray &other);
+ + + +
56 
+
58  inline Iterator begin() { return Iterator(array_); }
+
60  inline ReverseIterator rBegin() { return ReverseIterator(Iterator(array_ + size_ - 1)); }
+
62  inline Iterator end() { return Iterator(array_ + size_); }
+
64  inline ReverseIterator rEnd() { return ReverseIterator(Iterator(array_ - 1)); }
+
65 
+
67  inline ConstIterator begin() const { return ConstIterator(array_); }
+
69  inline ConstReverseIterator rBegin() const { return ConstReverseIterator(ConstIterator(array_ + size_ - 1)); }
+
71  inline ConstIterator end() const { return ConstIterator(array_ + size_); }
+
73  inline ConstReverseIterator rEnd() const { return ConstReverseIterator(ConstIterator(array_ - 1)); }
+
74 
+
76  inline ConstIterator cBegin() const { return ConstIterator(array_); }
+
78  inline ConstReverseIterator crBegin() const { return ConstReverseIterator(ConstIterator(array_ + size_ - 1)); }
+
80  inline ConstIterator cEnd() const { return ConstIterator(array_ + size_); }
+
82  inline ConstReverseIterator crEnd() const { return ConstReverseIterator(ConstIterator(array_ - 1)); }
+
83 
+
85  inline bool isEmpty() const { return size_ == 0; }
+
87 
+
88  inline unsigned int size() const { return size_; }
+
90  inline unsigned int capacity() const { return capacity_; }
+
92  void setSize(unsigned int newSize);
+
93 
+
95  void clear();
+
97  const T &front() const;
+
99  T &front();
+
101  const T &back() const;
+
103  T &back();
+
105  inline void pushBack(const T &element) { new (extendOne()) T(element); }
+
107  inline void pushBack(T &&element) { new (extendOne()) T(nctl::move(element)); }
+
109  template <typename... Args> void emplaceBack(Args &&... args);
+
111  void popBack();
+
113  T *insertRange(unsigned int index, const T *firstPtr, const T *lastPtr);
+
115  T *insertAt(unsigned int index, const T &element);
+
117  T *insertAt(unsigned int index, T &&element);
+
119  template <typename... Args> T *emplaceAt(unsigned int index, Args &&... args);
+
121  Iterator insert(Iterator position, const T &value);
+
123  Iterator insert(Iterator position, T &&value);
+
125  Iterator insert(Iterator position, Iterator first, Iterator last);
+
127  template <typename... Args> Iterator emplace(Iterator position, Args &&... args);
+
128 
+
130  T *removeRange(unsigned int firstIndex, unsigned int lastIndex);
+
132  inline Iterator removeAt(unsigned int index) { return Iterator(removeRange(index, index + 1)); }
+ +
136  Iterator erase(Iterator first, const Iterator last);
+
137 
+
139  T *unorderedRemoveRange(unsigned int firstIndex, unsigned int lastIndex);
+
141  inline Iterator unorderedRemoveAt(unsigned int index) { return Iterator(unorderedRemoveRange(index, index + 1)); }
+ + +
146 
+
148  const T &at(unsigned int index) const;
+
150  T &at(unsigned int index);
+
152  const T &operator[](unsigned int index) const;
+
154  T &operator[](unsigned int index);
+
155 
+
157  inline const T *data() const { return array_; }
+
159  inline T *data() { return array_; }
+
160 
+
161  private:
+
162  unsigned char arrayBuffer_[C * sizeof(T)];
+
163  T *array_ = reinterpret_cast<T *>(arrayBuffer_);
+
164  unsigned int size_;
+
165  unsigned int capacity_;
+
166 
+
168  T *extendOne();
+
169 };
+
170 
+
171 template <class T, unsigned int C>
+ +
173  : size_(other.size_), capacity_(other.capacity_)
+
174 {
+
175  copyConstructArray(array_, other.array_, size_);
+
176 }
+
177 
+
178 template <class T, unsigned int C>
+ +
180  : size_(other.size_), capacity_(other.capacity_)
+
181 {
+
182  moveConstructArray(array_, other.array_, size_);
+
183  other.clear();
+
184 }
+
185 
+
186 template <class T, unsigned int C>
+ +
188 {
+
189  if (this == &other)
+
190  return *this;
+
191 
+
192  if (other.size_ > 0 && other.size_ >= size_)
+
193  {
+
194  copyAssignArray(array_, other.array_, size_);
+
195  copyConstructArray(array_ + size_, other.array_ + size_, other.size_ - size_);
+
196  }
+
197  else if (size_ > 0 && size_ >= other.size_)
+
198  {
+
199  copyAssignArray(array_, other.array_, other.size_);
+
200  destructArray(array_ + other.size_, size_ - other.size_);
+
201  }
+
202 
+
203  size_ = other.size_;
+
204  return *this;
+
205 }
+
206 
+
207 template <class T, unsigned int C>
+ +
209 {
+
210  if (this == &other)
+
211  return *this;
+
212 
+
213  if (other.size_ > 0 && other.size_ >= size_)
+
214  {
+
215  moveAssignArray(array_, other.array_, size_);
+
216  moveConstructArray(array_ + size_, other.array_ + size_, other.size_ - size_);
+
217  }
+
218  else if (size_ > 0 && size_ >= other.size_)
+
219  {
+
220  moveAssignArray(array_, other.array_, other.size_);
+
221  destructArray(array_ + other.size_, size_ - other.size_);
+
222  }
+
223 
+
224  size_ = other.size_;
+
225  other.clear();
+
226  return *this;
+
227 }
+
228 
+
229 template <class T, unsigned int C>
+
230 void StaticArray<T, C>::setSize(unsigned int newSize)
+
231 {
+
232  const int newElements = newSize - size_;
+
233 
+
234  if (newSize > capacity_)
+
235  {
+
236  LOGW_X("Trying to extend the size of a static array beyond its cpacity, from from %u to %u", capacity_, newSize);
+
237  return;
+
238  }
+
239 
+
240  if (newElements > 0)
+
241  constructArray(array_ + size_, newElements);
+
242  else if (newElements < 0)
+
243  destructArray(array_ + size_ + newElements, -newElements);
+
244  size_ += newElements;
+
245 }
+
246 
+
248 template <class T, unsigned int C>
+ +
250 {
+
251  destructArray(array_, size_);
+
252  size_ = 0;
+
253 }
+
254 
+
255 template <class T, unsigned int C>
+
256 const T &StaticArray<T, C>::front() const
+
257 {
+
258  FATAL_ASSERT_MSG(size_ > 0, "Cannot retrieve an element from an empty array");
+
259  return array_[0];
+
260 }
+
261 
+
262 template <class T, unsigned int C>
+ +
264 {
+
265  FATAL_ASSERT_MSG(size_ > 0, "Cannot retrieve an element from an empty array");
+
266  return array_[0];
+
267 }
+
268 
+
269 template <class T, unsigned int C>
+
270 const T &StaticArray<T, C>::back() const
+
271 {
+
272  FATAL_ASSERT_MSG(size_ > 0, "Cannot retrieve an element from an empty array");
+
273  return array_[size_ - 1];
+
274 }
+
275 
+
276 template <class T, unsigned int C>
+ +
278 {
+
279  FATAL_ASSERT_MSG(size_ > 0, "Cannot retrieve an element from an empty array");
+
280  return array_[size_ - 1];
+
281 }
+
282 
+
283 template <class T, unsigned int C>
+
284 template <typename... Args>
+
285 void StaticArray<T, C>::emplaceBack(Args &&... args)
+
286 {
+
287  new (extendOne()) T(nctl::forward<Args>(args)...);
+
288 }
+
289 
+
290 template <class T, unsigned int C>
+ +
292 {
+
293  FATAL_ASSERT_MSG(size_ > 0, "Cannot pop an element from an empty array");
+
294  destructObject(array_ + size_ - 1);
+
295  size_--;
+
296 }
+
297 
+
298 template <class T, unsigned int C>
+
299 T *StaticArray<T, C>::insertRange(unsigned int index, const T *firstPtr, const T *lastPtr)
+
300 {
+
301  // Cannot insert at more than one position after the last element
+
302  FATAL_ASSERT_MSG_X(index <= size_, "Index %u is out of bounds (size: %u)", index, size_);
+
303  FATAL_ASSERT_MSG_X(firstPtr <= lastPtr, "First pointer %p should precede or be equal to the last one %p", firstPtr, lastPtr);
+
304 
+
305  const unsigned int numElements = static_cast<unsigned int>(lastPtr - firstPtr);
+
306  FATAL_ASSERT_MSG_X(size_ + numElements <= capacity_, "Can't add element beyond capacity (%d)", capacity_);
+
307 
+
308  // Backwards loop to account for overlapping areas
+
309  for (unsigned int i = size_ - index; i > 0; i--)
+
310  array_[index + numElements + i - 1] = nctl::move(array_[index + i - 1]);
+
311  copyConstructArray(array_ + index, firstPtr, numElements);
+
312  size_ += numElements;
+
313 
+
314  return (array_ + index + numElements);
+
315 }
+
316 
+
317 template <class T, unsigned int C>
+
318 T *StaticArray<T, C>::insertAt(unsigned int index, const T &element)
+
319 {
+
320  // Cannot insert at more than one position after the last element
+
321  FATAL_ASSERT_MSG_X(index <= size_, "Index %u is out of bounds (size: %u)", index, size_);
+
322  FATAL_ASSERT_MSG_X(size_ + 1 <= capacity_, "Can't add element beyond capacity (%d)", capacity_);
+
323 
+
324  if (index < size_)
+
325  {
+
326  // Constructing a new element by moving the last one
+
327  new (array_ + size_) T(nctl::move(array_[size_ - 1]));
+
328  // Backwards loop to account for overlapping areas
+
329  for (unsigned int i = size_ - index - 1; i > 0; i--)
+
330  array_[index + i] = nctl::move(array_[index + i - 1]);
+
331  array_[index] = element;
+
332  }
+
333  else
+
334  new (array_ + size_) T(element);
+
335  size_++;
+
336 
+
337  return (array_ + index + 1);
+
338 }
+
339 
+
340 template <class T, unsigned int C>
+
341 T *StaticArray<T, C>::insertAt(unsigned int index, T &&element)
+
342 {
+
343  // Cannot insert at more than one position after the last element
+
344  FATAL_ASSERT_MSG_X(index <= size_, "Index %u is out of bounds (size: %u)", index, size_);
+
345  FATAL_ASSERT_MSG_X(size_ + 1 <= capacity_, "Can't add element beyond capacity (%d)", capacity_);
+
346 
+
347  if (index < size_)
+
348  {
+
349  // Constructing a new element by moving the last one
+
350  new (array_ + size_) T(nctl::move(array_[size_ - 1]));
+
351  // Backwards loop to account for overlapping areas
+
352  for (unsigned int i = size_ - index - 1; i > 0; i--)
+
353  array_[index + i] = nctl::move(array_[index + i - 1]);
+
354  array_[index] = nctl::move(element);
+
355  }
+
356  else
+
357  new (array_ + size_) T(nctl::move(element));
+
358  size_++;
+
359 
+
360  return (array_ + index + 1);
+
361 }
+
362 
+
363 template <class T, unsigned int C>
+
364 template <typename... Args>
+
365 T *StaticArray<T, C>::emplaceAt(unsigned int index, Args &&... args)
+
366 {
+
367  // Cannot emplace at more than one position after the last element
+
368  FATAL_ASSERT_MSG_X(index <= size_, "Index %u is out of bounds (size: %u)", index, size_);
+
369  FATAL_ASSERT_MSG_X(size_ + 1 <= capacity_, "Can't add element beyond capacity (%d)", capacity_);
+
370 
+
371  if (index < size_)
+
372  {
+
373  // Constructing a new element by moving the last one
+
374  new (array_ + size_) T(nctl::move(array_[size_ - 1]));
+
375  // Backwards loop to account for overlapping areas
+
376  for (unsigned int i = size_ - index - 1; i > 0; i--)
+
377  array_[index + i] = nctl::move(array_[index + i - 1]);
+
378  destructObject(array_ + index);
+
379  }
+
380  new (array_ + index) T(nctl::forward<Args>(args)...);
+
381  size_++;
+
382 
+
383  return (array_ + index + 1);
+
384 }
+
385 
+
386 template <class T, unsigned int C>
+ +
388 {
+
389  const unsigned int index = &(*position) - array_;
+
390  T *nextElement = insertAt(index, value);
+
391 
+
392  return Iterator(nextElement);
+
393 }
+
394 
+
395 template <class T, unsigned int C>
+ +
397 {
+
398  const unsigned int index = &(*position) - array_;
+
399  T *nextElement = insertAt(index, nctl::move(value));
+
400 
+
401  return Iterator(nextElement);
+
402 }
+
403 
+
404 template <class T, unsigned int C>
+ +
406 {
+
407  const unsigned int index = static_cast<unsigned int>(&(*position) - array_);
+
408  const T *firstPtr = &(*first);
+
409  const T *lastPtr = &(*last);
+
410  T *nextElement = insertRange(index, firstPtr, lastPtr);
+
411 
+
412  return Iterator(nextElement);
+
413 }
+
414 
+
415 template <class T, unsigned int C>
+
416 template <typename... Args>
+ +
418 {
+
419  const unsigned int index = &(*position) - array_;
+
420  T *nextElement = emplaceAt(index, nctl::forward<Args>(args)...);
+
421 
+
422  return Iterator(nextElement);
+
423 }
+
424 
+
425 template <class T, unsigned int C>
+
426 T *StaticArray<T, C>::removeRange(unsigned int firstIndex, unsigned int lastIndex)
+
427 {
+
428  // Cannot remove past the last element
+
429  FATAL_ASSERT_MSG_X(firstIndex < size_, "First index %u out of size range", firstIndex);
+
430  FATAL_ASSERT_MSG_X(lastIndex <= size_, "Last index %u out of size range", lastIndex);
+
431  FATAL_ASSERT_MSG_X(firstIndex <= lastIndex, "First index %u should precede or be equal to the last one %u", firstIndex, lastIndex);
+
432 
+
433  const unsigned int numElements = lastIndex - firstIndex;
+
434  moveAssignArray(array_ + firstIndex, array_ + lastIndex, size_ - lastIndex);
+
435  destructArray(array_ + size_ - numElements, numElements);
+
436  size_ -= numElements;
+
437 
+
438  return (array_ + firstIndex);
+
439 }
+
440 
+
441 template <class T, unsigned int C>
+ +
443 {
+
444  const unsigned int index = static_cast<unsigned int>(&(*position) - array_);
+
445  return removeAt(index);
+
446 }
+
447 
+
448 template <class T, unsigned int C>
+ +
450 {
+
451  const unsigned int firstIndex = static_cast<unsigned int>(&(*first) - array_);
+
452  const unsigned int lastIndex = static_cast<unsigned int>(&(*last) - array_);
+
453  T *nextElement = removeRange(firstIndex, lastIndex);
+
454 
+
455  return Iterator(nextElement);
+
456 }
+
457 
+
459 template <class T, unsigned int C>
+
460 T *StaticArray<T, C>::unorderedRemoveRange(unsigned int firstIndex, unsigned int lastIndex)
+
461 {
+
462  // Cannot remove past the last element
+
463  FATAL_ASSERT_MSG_X(firstIndex < size_, "First index %u out of size range", firstIndex);
+
464  FATAL_ASSERT_MSG_X(lastIndex <= size_, "Last index %u out of size range", lastIndex);
+
465  FATAL_ASSERT_MSG_X(firstIndex <= lastIndex, "First index %u should precede or be equal to the last one %u", firstIndex, lastIndex);
+
466 
+
467  const unsigned int numElements = lastIndex - firstIndex;
+
468  for (unsigned int i = 0; i < numElements; i++)
+
469  array_[firstIndex + i] = nctl::move(array_[size_ - i - 1]);
+
470  destructArray(array_ + size_ - numElements, numElements);
+
471  size_ -= numElements;
+
472 
+
473  return (array_ + firstIndex + 1);
+
474 }
+
475 
+
477 template <class T, unsigned int C>
+ +
479 {
+
480  const unsigned int index = static_cast<unsigned int>(&(*position) - array_);
+
481  return unorderedRemoveAt(index);
+
482 }
+
483 
+
485 template <class T, unsigned int C>
+ +
487 {
+
488  const unsigned int firstIndex = static_cast<unsigned int>(&(*first) - array_);
+
489  const unsigned int lastIndex = static_cast<unsigned int>(&(*last) - array_);
+
490  T *nextElement = unorderedRemoveRange(firstIndex, lastIndex);
+
491 
+
492  return Iterator(nextElement);
+
493 }
+
494 
+
495 template <class T, unsigned int C>
+
496 const T &StaticArray<T, C>::at(unsigned int index) const
+
497 {
+
498  FATAL_ASSERT_MSG_X(index < size_, "Index %u is out of bounds (size: %u)", index, size_);
+
499  return operator[](index);
+
500 }
+
501 
+
502 template <class T, unsigned int C>
+
503 T &StaticArray<T, C>::at(unsigned int index)
+
504 {
+
505  // Avoid creating "holes" into the array
+
506  FATAL_ASSERT_MSG_X(index <= size_, "Index %u is out of bounds (size: %u)", index, size_);
+
507  return operator[](index);
+
508 }
+
509 
+
510 template <class T, unsigned int C>
+
511 const T &StaticArray<T, C>::operator[](unsigned int index) const
+
512 {
+
513  ASSERT_MSG_X(index < size_, "Index %u is out of bounds (size: %u)", index, size_);
+
514  return array_[index];
+
515 }
+
516 
+
517 template <class T, unsigned int C>
+
518 T &StaticArray<T, C>::operator[](unsigned int index)
+
519 {
+
520  ASSERT_MSG_X(index < size_, "Index %u is out of bounds (size: %u)", index, size_);
+
521  return array_[index];
+
522 }
+
523 
+
524 template <class T, unsigned int C>
+ +
526 {
+
527  FATAL_ASSERT_MSG_X(size_ < capacity_, "Cannot extend static array size beyond capacity (%u elements)", capacity_);
+
528  size_++;
+
529  return array_ + size_ - 1;
+
530 }
+
531 
+
532 }
+
533 
+
534 #endif
+
An Array iterator.
Definition: ArrayIterator.h:13
+
A generic reverse iterator.
Definition: ReverseIterator.h:11
+
A static array based on templates that stores elements in the stack.
Definition: StaticArray.h:25
+
StaticArray(const StaticArray &other)
Copy constructor.
Definition: StaticArray.h:172
+
ArrayIterator< T, true > ConstIterator
Constant iterator type.
Definition: StaticArray.h:30
+
Iterator end()
Returns an iterator to past the last element.
Definition: StaticArray.h:62
+
T * insertAt(unsigned int index, const T &element)
Inserts a new element at a specified position (shifting elements around)
Definition: StaticArray.h:318
+
T * insertAt(unsigned int index, T &&element)
Move inserts a new element at a specified position (shifting elements around)
Definition: StaticArray.h:341
+
T & operator[](unsigned int index)
Subscript operator.
Definition: StaticArray.h:518
+
void popBack()
Removes the last element in constant time.
Definition: StaticArray.h:291
+
ArrayIterator< T, false > Iterator
Iterator type.
Definition: StaticArray.h:28
+
void emplaceBack(Args &&... args)
Constructs a new element as the last one in constant time.
Definition: StaticArray.h:285
+
T & at(unsigned int index)
Access to the specified element (with bounds checking)
Definition: StaticArray.h:503
+
unsigned int capacity() const
Returns the array capacity.
Definition: StaticArray.h:90
+
ConstReverseIterator rBegin() const
Returns a constant reverse iterator to the last element.
Definition: StaticArray.h:69
+
const T & front() const
Returns a constant reference to the first element in constant time.
Definition: StaticArray.h:256
+
ConstReverseIterator rEnd() const
Returns a constant reverse iterator to prior the first element.
Definition: StaticArray.h:73
+
Iterator unorderedErase(Iterator position)
Removes the element pointed by the iterator (moving the last element in place)
Definition: StaticArray.h:478
+
Iterator emplace(Iterator position, Args &&... args)
Constructs a new element at the position specified by the iterator.
Definition: StaticArray.h:417
+
bool isEmpty() const
Returns true if the array is empty.
Definition: StaticArray.h:85
+
const T & operator[](unsigned int index) const
Read-only subscript operator.
Definition: StaticArray.h:511
+
ReverseIterator rEnd()
Returns a reverse iterator to prior the first element.
Definition: StaticArray.h:64
+
ConstIterator end() const
Returns a constant iterator to past the last lement.
Definition: StaticArray.h:71
+
Iterator removeAt(unsigned int index)
Removes an element at a specified position (shifting elements around)
Definition: StaticArray.h:132
+
void clear()
Clears the array.
Definition: StaticArray.h:249
+
T * data()
Returns a pointer to the allocated memory.
Definition: StaticArray.h:159
+
ConstReverseIterator crBegin() const
Returns a constant reverse iterator to the last element.
Definition: StaticArray.h:78
+
Iterator erase(Iterator position)
Removes the element pointed by the iterator (shifting elements around)
Definition: StaticArray.h:442
+
const T & at(unsigned int index) const
Read-only access to the specified element (with bounds checking)
Definition: StaticArray.h:496
+
T & back()
Returns a reference to the last element in constant time.
Definition: StaticArray.h:277
+
void pushBack(T &&element)
Move inserts a new element as the last one in constant time.
Definition: StaticArray.h:107
+
void pushBack(const T &element)
Inserts a new element as the last one in constant time.
Definition: StaticArray.h:105
+
Iterator unorderedRemoveAt(unsigned int index)
Removes an element at a specified position (moving the last element in place)
Definition: StaticArray.h:141
+
Iterator begin()
Returns an iterator to the first element.
Definition: StaticArray.h:58
+
T * emplaceAt(unsigned int index, Args &&... args)
Constructs a new element at the position specified by the index.
Definition: StaticArray.h:365
+
StaticArray(StaticArrayMode mode)
Constructs an array with the option for it to have the size match its capacity.
Definition: StaticArray.h:40
+
ConstIterator cEnd() const
Returns a constant iterator to past the last lement.
Definition: StaticArray.h:80
+
ConstReverseIterator crEnd() const
Returns a constant reverse iterator to prior the first element.
Definition: StaticArray.h:82
+
Iterator insert(Iterator position, Iterator first, Iterator last)
Inserts new elements from a source at the position specified by the iterator (shifting elements aroun...
Definition: StaticArray.h:405
+
T * insertRange(unsigned int index, const T *firstPtr, const T *lastPtr)
Inserts new elements at the specified position from a source range, last not included (shifting eleme...
Definition: StaticArray.h:299
+
StaticArray & operator=(StaticArray &&other)
Move assignment operator.
Definition: StaticArray.h:208
+
nctl::ReverseIterator< ConstIterator > ConstReverseIterator
Reverse constant iterator type.
Definition: StaticArray.h:34
+
T * removeRange(unsigned int firstIndex, unsigned int lastIndex)
Removes the specified range of elements, last not included (shifting elements around)
Definition: StaticArray.h:426
+
Iterator insert(Iterator position, T &&value)
Move inserts a new element at the position specified by the iterator (shifting elements around)
Definition: StaticArray.h:396
+
ConstIterator cBegin() const
Returns a constant iterator to the first element.
Definition: StaticArray.h:76
+
StaticArray & operator=(const StaticArray &other)
Assignment operator.
Definition: StaticArray.h:187
+
T * unorderedRemoveRange(unsigned int firstIndex, unsigned int lastIndex)
Removes the specified range of elements, last not included (moving tail elements in place)
Definition: StaticArray.h:460
+
ConstIterator begin() const
Returns a constant iterator to the first element.
Definition: StaticArray.h:67
+
ReverseIterator rBegin()
Returns a reverse iterator to the last element.
Definition: StaticArray.h:60
+
void setSize(unsigned int newSize)
Sets a new size for the array (allowing for "holes")
Definition: StaticArray.h:230
+
T & front()
Returns a reference to the first element in constant time.
Definition: StaticArray.h:263
+
Iterator insert(Iterator position, const T &value)
Inserts a new element at the position specified by the iterator (shifting elements around)
Definition: StaticArray.h:387
+
nctl::ReverseIterator< Iterator > ReverseIterator
Reverse iterator type.
Definition: StaticArray.h:32
+
const T & back() const
Returns a constant reference to the last element in constant time.
Definition: StaticArray.h:270
+
Iterator erase(Iterator first, const Iterator last)
Removes the elements in the range, last not included (shifting elements around)
Definition: StaticArray.h:449
+
StaticArray(StaticArray &&other)
Move constructor.
Definition: StaticArray.h:179
+
Iterator unorderedErase(Iterator first, const Iterator last)
Removes the elements in the range, last not included (moving tail elements in place)
Definition: StaticArray.h:486
+
unsigned int size() const
Returns the array size.
Definition: StaticArray.h:88
+
const T * data() const
Returns a constant pointer to the allocated memory.
Definition: StaticArray.h:157
+
StaticArray()
Constructs an empty array with fixed capacity.
Definition: StaticArray.h:37
+
+ + + + diff --git a/master/_static_hash_map_8h_source.html b/master/_static_hash_map_8h_source.html new file mode 100644 index 0000000000..ed2ee2142b --- /dev/null +++ b/master/_static_hash_map_8h_source.html @@ -0,0 +1,864 @@ + + + + + + + +nCine: include/nctl/StaticHashMap.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
StaticHashMap.h
+
+
+
1 #ifndef CLASS_NCTL_STATICHASHMAP
+
2 #define CLASS_NCTL_STATICHASHMAP
+
3 
+
4 #include <new>
+
5 #include <ncine/common_macros.h>
+
6 #include "HashFunctions.h"
+
7 #include "ReverseIterator.h"
+
8 
+
9 namespace nctl {
+
10 
+
11 template <class K, class T, class HashFunc, unsigned int Capacity, bool IsConst> class StaticHashMapIterator;
+
12 template <class K, class T, class HashFunc, unsigned int Capacity, bool IsConst> struct StaticHashMapHelperTraits;
+
13 class String;
+
14 
+
16 template <class K, class T, unsigned int Capacity, class HashFunc = FNV1aHashFunc<K>>
+ +
18 {
+
19  public:
+ + + + +
28 
+
29  inline StaticHashMap()
+
30  : size_(0) { init(); }
+
31  inline ~StaticHashMap() { destructNodes(); }
+
32 
+
34  StaticHashMap(const StaticHashMap &other);
+
36  StaticHashMap(StaticHashMap &&other);
+
38  StaticHashMap &operator=(const StaticHashMap &other);
+
40  StaticHashMap &operator=(StaticHashMap &&other);
+
41 
+
43  Iterator begin();
+ +
47  Iterator end();
+ +
50 
+
52  ConstIterator begin() const;
+ +
56  ConstIterator end() const;
+
58  ConstReverseIterator rEnd() const;
+
59 
+
61  inline ConstIterator cBegin() const { return begin(); }
+
63  inline ConstReverseIterator crBegin() const { return rBegin(); }
+
65  inline ConstIterator cEnd() const { return end(); }
+
67  inline ConstReverseIterator crEnd() const { return rEnd(); }
+
68 
+
70  T &operator[](const K &key);
+
72  bool insert(const K &key, const T &value);
+
74  bool insert(const K &key, T &&value);
+
76  template <typename... Args> bool emplace(const K &key, Args &&... args);
+
77 
+
79  inline unsigned int capacity() const { return Capacity; }
+
81  inline bool isEmpty() const { return size_ == 0; }
+
83  inline unsigned int size() const { return size_; }
+
85  inline float loadFactor() const { return size_ / static_cast<float>(Capacity); }
+
87  inline hash_t hash(const K &key) const { return hashFunc_(key); }
+
88 
+
90  void clear();
+
92  bool contains(const K &key, T &returnedValue) const;
+
94  T *find(const K &key);
+
96  const T *find(const K &key) const;
+
98  bool remove(const K &key);
+
99 
+
100  private:
+
102  class Node
+
103  {
+
104  public:
+
105  K key;
+
106  T value;
+
107 
+
108  Node() {}
+
109  explicit Node(K kk)
+
110  : key(kk) {}
+
111  Node(K kk, const T &vv)
+
112  : key(kk), value(vv) {}
+
113  Node(K kk, T &&vv)
+
114  : key(kk), value(nctl::move(vv)) {}
+
115  template <typename... Args>
+
116  Node(K kk, Args &&... args)
+
117  : key(kk), value(nctl::forward<Args>(args)...) {}
+
118  };
+
119 
+
120  unsigned int size_;
+
121  uint8_t delta1_[Capacity];
+
122  uint8_t delta2_[Capacity];
+
123  hash_t hashes_[Capacity];
+
124  uint8_t nodesBuffer_[Capacity * sizeof(Node)];
+
125  Node *nodes_ = reinterpret_cast<Node *>(nodesBuffer_);
+
126  HashFunc hashFunc_;
+
127 
+
128  void init();
+
129  void destructNodes();
+
130  bool findBucketIndex(const K &key, unsigned int &foundIndex, unsigned int &prevFoundIndex) const;
+
131  inline bool findBucketIndex(const K &key, unsigned int &foundIndex) const;
+
132  unsigned int addDelta1(unsigned int bucketIndex) const;
+
133  unsigned int addDelta2(unsigned int bucketIndex) const;
+
134  unsigned int calcNewDelta(unsigned int bucketIndex, unsigned int newIndex) const;
+
135  unsigned int linearSearch(unsigned int index, hash_t hash, const K &key) const;
+
136  bool bucketFoundOrEmpty(unsigned int index, hash_t hash, const K &key) const;
+
137  bool bucketFound(unsigned int index, hash_t hash, const K &key) const;
+
138  T &addNode(unsigned int index, hash_t hash, const K &key);
+
139  void insertNode(unsigned int index, hash_t hash, const K &key, const T &value);
+
140  void insertNode(unsigned int index, hash_t hash, const K &key, T &&value);
+
141  template <typename... Args> void emplaceNode(unsigned int index, hash_t hash, const K &key, Args &&... args);
+
142 
+
143  friend class StaticHashMapIterator<K, T, HashFunc, Capacity, false>;
+
144  friend class StaticHashMapIterator<K, T, HashFunc, Capacity, true>;
+
145  friend struct StaticHashMapHelperTraits<K, T, HashFunc, Capacity, false>;
+
146  friend struct StaticHashMapHelperTraits<K, T, HashFunc, Capacity, true>;
+
147 };
+
148 
+
149 template <class K, class T, unsigned int Capacity, class HashFunc>
+ +
151 {
+
152  Iterator iterator(this, Iterator::SentinelTagInit::BEGINNING);
+
153  return ++iterator;
+
154 }
+
155 
+
156 template <class K, class T, unsigned int Capacity, class HashFunc>
+ +
158 {
+
159  Iterator iterator(this, Iterator::SentinelTagInit::END);
+
160  return ReverseIterator(--iterator);
+
161 }
+
162 
+
163 template <class K, class T, unsigned int Capacity, class HashFunc>
+ +
165 {
+
166  return Iterator(this, Iterator::SentinelTagInit::END);
+
167 }
+
168 
+
169 template <class K, class T, unsigned int Capacity, class HashFunc>
+ +
171 {
+
172  Iterator iterator(this, Iterator::SentinelTagInit::BEGINNING);
+
173  return ReverseIterator(iterator);
+
174 }
+
175 
+
176 template <class K, class T, unsigned int Capacity, class HashFunc>
+ +
178 {
+
179  ConstIterator iterator(this, ConstIterator::SentinelTagInit::BEGINNING);
+
180  return ++iterator;
+
181 }
+
182 
+
183 template <class K, class T, unsigned int Capacity, class HashFunc>
+ +
185 {
+
186  ConstIterator iterator(this, ConstIterator::SentinelTagInit::END);
+
187  return ConstReverseIterator(--iterator);
+
188 }
+
189 
+
190 template <class K, class T, unsigned int Capacity, class HashFunc>
+ +
192 {
+
193  return ConstIterator(this, ConstIterator::SentinelTagInit::END);
+
194 }
+
195 
+
196 template <class K, class T, unsigned int Capacity, class HashFunc>
+ +
198 {
+
199  ConstIterator iterator(this, ConstIterator::SentinelTagInit::BEGINNING);
+
200  return ConstReverseIterator(iterator);
+
201 }
+
202 
+
203 template <class K, class T, unsigned int Capacity, class HashFunc>
+ +
205  : size_(other.size_)
+
206 {
+
207  for (unsigned int i = 0; i < Capacity; i++)
+
208  {
+
209  if (other.hashes_[i] != NullHash)
+
210  new (nodes_ + i) Node(other.nodes_[i]);
+
211 
+
212  delta1_[i] = other.delta1_[i];
+
213  delta2_[i] = other.delta2_[i];
+
214  hashes_[i] = other.hashes_[i];
+
215  }
+
216 }
+
217 
+
218 template <class K, class T, unsigned int Capacity, class HashFunc>
+ +
220  : size_(other.size_)
+
221 {
+
222  for (unsigned int i = 0; i < Capacity; i++)
+
223  {
+
224  if (other.hashes_[i] != NullHash)
+
225  new (nodes_ + i) Node(nctl::move(other.nodes_[i]));
+
226 
+
227  delta1_[i] = other.delta1_[i];
+
228  delta2_[i] = other.delta2_[i];
+
229  hashes_[i] = other.hashes_[i];
+
230  }
+
231  other.destructNodes();
+
232 }
+
233 
+
234 template <class K, class T, unsigned int Capacity, class HashFunc>
+ +
236 {
+
237  for (unsigned int i = 0; i < Capacity; i++)
+
238  {
+
239  if (other.hashes_[i] != NullHash)
+
240  {
+
241  if (hashes_[i] != NullHash)
+
242  nodes_[i] = other.nodes_[i];
+
243  else
+
244  new (nodes_ + i) Node(other.nodes_[i]);
+
245  }
+
246  else if (hashes_[i] != NullHash)
+
247  destructObject(nodes_ + i);
+
248 
+
249  delta1_[i] = other.delta1_[i];
+
250  delta2_[i] = other.delta2_[i];
+
251  hashes_[i] = other.hashes_[i];
+
252  }
+
253  size_ = other.size_;
+
254 
+
255  return *this;
+
256 }
+
257 
+
258 template <class K, class T, unsigned int Capacity, class HashFunc>
+ +
260 {
+
261  for (unsigned int i = 0; i < Capacity; i++)
+
262  {
+
263  if (other.hashes_[i] != NullHash)
+
264  {
+
265  if (hashes_[i] != NullHash)
+
266  nodes_[i] = nctl::move(other.nodes_[i]);
+
267  else
+
268  new (nodes_ + i) Node(nctl::move(other.nodes_[i]));
+
269  }
+
270  else if (hashes_[i] != NullHash)
+
271  destructObject(nodes_ + i);
+
272 
+
273  delta1_[i] = other.delta1_[i];
+
274  delta2_[i] = other.delta2_[i];
+
275  hashes_[i] = other.hashes_[i];
+
276  }
+
277  size_ = other.size_;
+
278  other.destructNodes();
+
279 
+
280  return *this;
+
281 }
+
282 
+
283 template <class K, class T, unsigned int Capacity, class HashFunc>
+ +
285 {
+
286  const hash_t hash = hashFunc_(key);
+
287  int unsigned bucketIndex = hash % Capacity;
+
288 
+
289  if (bucketFoundOrEmpty(bucketIndex, hash, key) == false)
+
290  {
+
291  if (delta1_[bucketIndex] != 0)
+
292  {
+
293  bucketIndex = addDelta1(bucketIndex);
+
294  if (bucketFound(bucketIndex, hash, key) == false)
+
295  {
+
296  while (delta2_[bucketIndex] != 0)
+
297  {
+
298  bucketIndex = addDelta2(bucketIndex);
+
299  // Found at ideal index + delta1 + (n * delta2)
+
300  if (bucketFound(bucketIndex, hash, key))
+
301  return nodes_[bucketIndex].value;
+
302  }
+
303 
+
304  // Adding at ideal index + delta1 + (n * delta2)
+
305  const unsigned int newIndex = linearSearch(bucketIndex + 1, hash, key);
+
306  delta2_[bucketIndex] = calcNewDelta(bucketIndex, newIndex);
+
307  return addNode(newIndex, hash, key);
+
308  }
+
309  else
+
310  {
+
311  // Found at ideal index + delta1
+
312  return nodes_[bucketIndex].value;
+
313  }
+
314  }
+
315  else
+
316  {
+
317  // Adding at ideal index + delta1
+
318  const unsigned int newIndex = linearSearch(bucketIndex + 1, hash, key);
+
319  delta1_[bucketIndex] = calcNewDelta(bucketIndex, newIndex);
+
320  return addNode(newIndex, hash, key);
+
321  }
+
322  }
+
323  else
+
324  {
+
325  // Using the ideal bucket index for the node
+
326  if (hashes_[bucketIndex] == NullHash)
+
327  return addNode(bucketIndex, hash, key);
+
328  else
+
329  return nodes_[bucketIndex].value;
+
330  }
+
331 }
+
332 
+
334 template <class K, class T, unsigned int Capacity, class HashFunc>
+
335 bool StaticHashMap<K, T, Capacity, HashFunc>::insert(const K &key, const T &value)
+
336 {
+
337  const hash_t hash = hashFunc_(key);
+
338  int unsigned bucketIndex = hash % Capacity;
+
339 
+
340  if (bucketFoundOrEmpty(bucketIndex, hash, key) == false)
+
341  {
+
342  if (delta1_[bucketIndex] != 0)
+
343  {
+
344  bucketIndex = addDelta1(bucketIndex);
+
345  if (bucketFound(bucketIndex, hash, key) == false)
+
346  {
+
347  while (delta2_[bucketIndex] != 0)
+
348  {
+
349  bucketIndex = addDelta2(bucketIndex);
+
350  // Found at ideal index + delta1 + (n * delta2)
+
351  if (bucketFound(bucketIndex, hash, key))
+
352  return false;
+
353  }
+
354 
+
355  // Adding at ideal index + delta1 + (n * delta2)
+
356  const unsigned int newIndex = linearSearch(bucketIndex + 1, hash, key);
+
357  delta2_[bucketIndex] = calcNewDelta(bucketIndex, newIndex);
+
358  insertNode(newIndex, hash, key, value);
+
359  return true;
+
360  }
+
361  else
+
362  {
+
363  // Found at ideal index + delta1
+
364  return false;
+
365  }
+
366  }
+
367  else
+
368  {
+
369  // Adding at ideal index + delta1
+
370  const unsigned int newIndex = linearSearch(bucketIndex + 1, hash, key);
+
371  delta1_[bucketIndex] = calcNewDelta(bucketIndex, newIndex);
+
372  insertNode(newIndex, hash, key, value);
+
373  return true;
+
374  }
+
375  }
+
376  else
+
377  {
+
378  // Using the ideal bucket index for the node
+
379  if (hashes_[bucketIndex] == NullHash)
+
380  {
+
381  insertNode(bucketIndex, hash, key, value);
+
382  return true;
+
383  }
+
384  else
+
385  return false;
+
386  }
+
387 }
+
388 
+
390 template <class K, class T, unsigned int Capacity, class HashFunc>
+ +
392 {
+
393  const hash_t hash = hashFunc_(key);
+
394  int unsigned bucketIndex = hash % Capacity;
+
395 
+
396  if (bucketFoundOrEmpty(bucketIndex, hash, key) == false)
+
397  {
+
398  if (delta1_[bucketIndex] != 0)
+
399  {
+
400  bucketIndex = addDelta1(bucketIndex);
+
401  if (bucketFound(bucketIndex, hash, key) == false)
+
402  {
+
403  while (delta2_[bucketIndex] != 0)
+
404  {
+
405  bucketIndex = addDelta2(bucketIndex);
+
406  // Found at ideal index + delta1 + (n * delta2)
+
407  if (bucketFound(bucketIndex, hash, key))
+
408  return false;
+
409  }
+
410 
+
411  // Adding at ideal index + delta1 + (n * delta2)
+
412  const unsigned int newIndex = linearSearch(bucketIndex + 1, hash, key);
+
413  delta2_[bucketIndex] = calcNewDelta(bucketIndex, newIndex);
+
414  insertNode(newIndex, hash, key, nctl::move(value));
+
415  return true;
+
416  }
+
417  else
+
418  {
+
419  // Found at ideal index + delta1
+
420  return false;
+
421  }
+
422  }
+
423  else
+
424  {
+
425  // Adding at ideal index + delta1
+
426  const unsigned int newIndex = linearSearch(bucketIndex + 1, hash, key);
+
427  delta1_[bucketIndex] = calcNewDelta(bucketIndex, newIndex);
+
428  insertNode(newIndex, hash, key, nctl::move(value));
+
429  return true;
+
430  }
+
431  }
+
432  else
+
433  {
+
434  // Using the ideal bucket index for the node
+
435  if (hashes_[bucketIndex] == NullHash)
+
436  {
+
437  insertNode(bucketIndex, hash, key, nctl::move(value));
+
438  return true;
+
439  }
+
440  else
+
441  return false;
+
442  }
+
443 }
+
444 
+
446 template <class K, class T, unsigned int Capacity, class HashFunc>
+
447 template <typename... Args>
+
448 bool StaticHashMap<K, T, Capacity, HashFunc>::emplace(const K &key, Args &&... args)
+
449 {
+
450  const hash_t hash = hashFunc_(key);
+
451  int unsigned bucketIndex = hash % Capacity;
+
452 
+
453  if (bucketFoundOrEmpty(bucketIndex, hash, key) == false)
+
454  {
+
455  if (delta1_[bucketIndex] != 0)
+
456  {
+
457  bucketIndex = addDelta1(bucketIndex);
+
458  if (bucketFound(bucketIndex, hash, key) == false)
+
459  {
+
460  while (delta2_[bucketIndex] != 0)
+
461  {
+
462  bucketIndex = addDelta2(bucketIndex);
+
463  // Found at ideal index + delta1 + (n * delta2)
+
464  if (bucketFound(bucketIndex, hash, key))
+
465  return false;
+
466  }
+
467 
+
468  // Adding at ideal index + delta1 + (n * delta2)
+
469  const unsigned int newIndex = linearSearch(bucketIndex + 1, hash, key);
+
470  delta2_[bucketIndex] = calcNewDelta(bucketIndex, newIndex);
+
471  emplaceNode(newIndex, hash, key, nctl::forward<Args>(args)...);
+
472  return true;
+
473  }
+
474  else
+
475  {
+
476  // Found at ideal index + delta1
+
477  return false;
+
478  }
+
479  }
+
480  else
+
481  {
+
482  // Adding at ideal index + delta1
+
483  const unsigned int newIndex = linearSearch(bucketIndex + 1, hash, key);
+
484  delta1_[bucketIndex] = calcNewDelta(bucketIndex, newIndex);
+
485  emplaceNode(newIndex, hash, key, nctl::forward<Args>(args)...);
+
486  return true;
+
487  }
+
488  }
+
489  else
+
490  {
+
491  // Using the ideal bucket index for the node
+
492  if (hashes_[bucketIndex] == NullHash)
+
493  {
+
494  emplaceNode(bucketIndex, hash, key, nctl::forward<Args>(args)...);
+
495  return true;
+
496  }
+
497  else
+
498  return false;
+
499  }
+
500 }
+
501 
+
502 template <class K, class T, unsigned int Capacity, class HashFunc>
+ +
504 {
+
505  destructNodes();
+
506  init();
+
507 }
+
508 
+
509 template <class K, class T, unsigned int Capacity, class HashFunc>
+
510 bool StaticHashMap<K, T, Capacity, HashFunc>::contains(const K &key, T &returnedValue) const
+
511 {
+
512  int unsigned bucketIndex = 0;
+
513  const bool found = findBucketIndex(key, bucketIndex);
+
514 
+
515  if (found)
+
516  returnedValue = nodes_[bucketIndex].value;
+
517 
+
518  return found;
+
519 }
+
520 
+
522 template <class K, class T, unsigned int Capacity, class HashFunc>
+ +
524 {
+
525  int unsigned bucketIndex = 0;
+
526  const bool found = findBucketIndex(key, bucketIndex);
+
527 
+
528  T *returnedPtr = nullptr;
+
529  if (found)
+
530  returnedPtr = &nodes_[bucketIndex].value;
+
531 
+
532  return returnedPtr;
+
533 }
+
534 
+
536 template <class K, class T, unsigned int Capacity, class HashFunc>
+ +
538 {
+
539  int unsigned bucketIndex = 0;
+
540  const bool found = findBucketIndex(key, bucketIndex);
+
541 
+
542  const T *returnedPtr = nullptr;
+
543  if (found)
+
544  returnedPtr = &nodes_[bucketIndex].value;
+
545 
+
546  return returnedPtr;
+
547 }
+
548 
+
550 template <class K, class T, unsigned int Capacity, class HashFunc>
+ +
552 {
+
553  int unsigned foundBucketIndex = 0;
+
554  int unsigned prevFoundBucketIndex = 0;
+
555  const bool found = findBucketIndex(key, foundBucketIndex, prevFoundBucketIndex);
+
556  unsigned int bucketIndex = foundBucketIndex;
+
557 
+
558  if (found)
+
559  {
+
560  // The found bucket is the last of the chain, previous one needs a delta fix
+
561  if (foundBucketIndex != hashes_[foundBucketIndex] % Capacity && delta2_[foundBucketIndex] == 0)
+
562  {
+
563  if (addDelta1(prevFoundBucketIndex) == foundBucketIndex)
+
564  delta1_[prevFoundBucketIndex] = 0;
+
565  else if (addDelta2(prevFoundBucketIndex) == foundBucketIndex)
+
566  delta2_[prevFoundBucketIndex] = 0;
+
567  }
+
568 
+
569  while (delta1_[bucketIndex] != 0 || delta2_[bucketIndex] != 0)
+
570  {
+
571  unsigned int lastBucketIndex = bucketIndex;
+
572  if (delta1_[lastBucketIndex] != 0)
+
573  lastBucketIndex = addDelta1(lastBucketIndex);
+
574  if (delta2_[lastBucketIndex] != 0)
+
575  {
+
576  unsigned int secondLastBucketIndex = lastBucketIndex;
+
577  while (delta2_[lastBucketIndex] != 0)
+
578  {
+
579  secondLastBucketIndex = lastBucketIndex;
+
580  lastBucketIndex = addDelta2(lastBucketIndex);
+
581  }
+
582  delta2_[secondLastBucketIndex] = 0;
+
583  }
+
584  else
+
585  delta1_[bucketIndex] = 0;
+
586 
+
587  if (bucketIndex != lastBucketIndex)
+
588  {
+
589  nodes_[bucketIndex].key = nctl::move(nodes_[lastBucketIndex].key);
+
590  nodes_[bucketIndex].value = nctl::move(nodes_[lastBucketIndex].value);
+
591  hashes_[bucketIndex] = hashes_[lastBucketIndex];
+
592  }
+
593 
+
594  bucketIndex = lastBucketIndex;
+
595  }
+
596 
+
597  hashes_[bucketIndex] = NullHash;
+
598  destructObject(nodes_ + bucketIndex);
+
599  size_--;
+
600  }
+
601 
+
602  return found;
+
603 }
+
604 
+
605 template <class K, class T, unsigned int Capacity, class HashFunc>
+ +
607 {
+
608  for (unsigned int i = 0; i < Capacity; i++)
+
609  delta1_[i] = 0;
+
610  for (unsigned int i = 0; i < Capacity; i++)
+
611  delta2_[i] = 0;
+
612  for (unsigned int i = 0; i < Capacity; i++)
+
613  hashes_[i] = NullHash;
+
614 }
+
615 
+
616 template <class K, class T, unsigned int Capacity, class HashFunc>
+
617 void StaticHashMap<K, T, Capacity, HashFunc>::destructNodes()
+
618 {
+
619  for (unsigned int i = 0; i < Capacity; i++)
+
620  {
+
621  if (hashes_[i] != NullHash)
+
622  {
+
623  destructObject(nodes_ + i);
+
624  hashes_[i] = NullHash;
+
625  }
+
626  }
+
627  size_ = 0;
+
628 }
+
629 
+
630 template <class K, class T, unsigned int Capacity, class HashFunc>
+
631 bool StaticHashMap<K, T, Capacity, HashFunc>::findBucketIndex(const K &key, unsigned int &foundIndex, unsigned int &prevFoundIndex) const
+
632 {
+
633  if (size_ == 0)
+
634  return false;
+
635 
+
636  bool found = false;
+
637  const hash_t hash = hashFunc_(key);
+
638  foundIndex = hash % Capacity;
+
639  prevFoundIndex = foundIndex;
+
640 
+
641  if (bucketFoundOrEmpty(foundIndex, hash, key) == false)
+
642  {
+
643  if (delta1_[foundIndex] != 0)
+
644  {
+
645  prevFoundIndex = foundIndex;
+
646  foundIndex = addDelta1(foundIndex);
+
647  if (bucketFound(foundIndex, hash, key) == false)
+
648  {
+
649  while (delta2_[foundIndex] != 0)
+
650  {
+
651  prevFoundIndex = foundIndex;
+
652  foundIndex = addDelta2(foundIndex);
+
653  if (bucketFound(foundIndex, hash, key))
+
654  {
+
655  // Found at ideal index + delta1 + (n * delta2)
+
656  found = true;
+
657  break;
+
658  }
+
659  }
+
660  }
+
661  else
+
662  {
+
663  // Found at ideal index + delta1
+
664  found = true;
+
665  }
+
666  }
+
667  }
+
668  else
+
669  {
+
670  if (hashes_[foundIndex] != NullHash)
+
671  {
+
672  // Found at ideal bucket index
+
673  found = true;
+
674  }
+
675  }
+
676 
+
677  return found;
+
678 }
+
679 
+
680 template <class K, class T, unsigned int Capacity, class HashFunc>
+
681 bool StaticHashMap<K, T, Capacity, HashFunc>::findBucketIndex(const K &key, unsigned int &foundIndex) const
+
682 {
+
683  unsigned int prevFoundIndex = 0;
+
684  return findBucketIndex(key, foundIndex, prevFoundIndex);
+
685 }
+
686 
+
687 template <class K, class T, unsigned int Capacity, class HashFunc>
+
688 unsigned int StaticHashMap<K, T, Capacity, HashFunc>::addDelta1(unsigned int bucketIndex) const
+
689 {
+
690  unsigned int newIndex = bucketIndex + delta1_[bucketIndex];
+
691  if (newIndex > Capacity - 1)
+
692  newIndex -= Capacity;
+
693  return newIndex;
+
694 }
+
695 
+
696 template <class K, class T, unsigned int Capacity, class HashFunc>
+
697 unsigned int StaticHashMap<K, T, Capacity, HashFunc>::addDelta2(unsigned int bucketIndex) const
+
698 {
+
699  unsigned int newIndex = bucketIndex + delta2_[bucketIndex];
+
700  if (newIndex > Capacity - 1)
+
701  newIndex -= Capacity;
+
702  return newIndex;
+
703 }
+
704 
+
705 template <class K, class T, unsigned int Capacity, class HashFunc>
+
706 unsigned int StaticHashMap<K, T, Capacity, HashFunc>::calcNewDelta(unsigned int bucketIndex, unsigned int newIndex) const
+
707 {
+
708  unsigned int delta = 0;
+
709  if (newIndex >= bucketIndex)
+
710  delta = newIndex - bucketIndex;
+
711  else
+
712  delta = Capacity - bucketIndex + newIndex;
+
713 
+
714  FATAL_ASSERT(delta < 256); // deltas are uint8_t
+
715  return delta;
+
716 }
+
717 
+
718 template <class K, class T, unsigned int Capacity, class HashFunc>
+
719 unsigned int StaticHashMap<K, T, Capacity, HashFunc>::linearSearch(unsigned int index, hash_t hash, const K &key) const
+
720 {
+
721  for (unsigned int i = index; i < Capacity; i++)
+
722  {
+
723  if (bucketFoundOrEmpty(i, hash, key))
+
724  return i;
+
725  }
+
726 
+
727  for (unsigned int i = 0; i < index; i++)
+
728  {
+
729  if (bucketFoundOrEmpty(i, hash, key))
+
730  return i;
+
731  }
+
732 
+
733  return index;
+
734 }
+
735 
+
736 template <class K, class T, unsigned int Capacity, class HashFunc>
+
737 bool StaticHashMap<K, T, Capacity, HashFunc>::bucketFoundOrEmpty(unsigned int index, hash_t hash, const K &key) const
+
738 {
+
739  return (hashes_[index] == NullHash || (hashes_[index] == hash && equalTo(nodes_[index].key, key)));
+
740 }
+
741 
+
742 template <class K, class T, unsigned int Capacity, class HashFunc>
+
743 bool StaticHashMap<K, T, Capacity, HashFunc>::bucketFound(unsigned int index, hash_t hash, const K &key) const
+
744 {
+
745  return (hashes_[index] == hash && equalTo(nodes_[index].key, key));
+
746 }
+
747 
+
748 template <class K, class T, unsigned int Capacity, class HashFunc>
+
749 T &StaticHashMap<K, T, Capacity, HashFunc>::addNode(unsigned int index, hash_t hash, const K &key)
+
750 {
+
751  FATAL_ASSERT(size_ < Capacity);
+
752  FATAL_ASSERT(hashes_[index] == NullHash);
+
753 
+
754  size_++;
+
755  hashes_[index] = hash;
+
756  new (nodes_ + index) Node(key);
+
757 
+
758  return nodes_[index].value;
+
759 }
+
760 
+
761 template <class K, class T, unsigned int Capacity, class HashFunc>
+
762 void StaticHashMap<K, T, Capacity, HashFunc>::insertNode(unsigned int index, hash_t hash, const K &key, const T &value)
+
763 {
+
764  FATAL_ASSERT(size_ < Capacity);
+
765  FATAL_ASSERT(hashes_[index] == NullHash);
+
766 
+
767  size_++;
+
768  hashes_[index] = hash;
+
769  new (nodes_ + index) Node(key, value);
+
770 }
+
771 
+
772 template <class K, class T, unsigned int Capacity, class HashFunc>
+
773 void StaticHashMap<K, T, Capacity, HashFunc>::insertNode(unsigned int index, hash_t hash, const K &key, T &&value)
+
774 {
+
775  FATAL_ASSERT(size_ < Capacity);
+
776  FATAL_ASSERT(hashes_[index] == NullHash);
+
777 
+
778  size_++;
+
779  hashes_[index] = hash;
+
780  new (nodes_ + index) Node(key, nctl::move(value));
+
781 }
+
782 
+
783 template <class K, class T, unsigned int Capacity, class HashFunc>
+
784 template <typename... Args>
+
785 void StaticHashMap<K, T, Capacity, HashFunc>::emplaceNode(unsigned int index, hash_t hash, const K &key, Args &&... args)
+
786 {
+
787  FATAL_ASSERT(size_ < Capacity);
+
788  FATAL_ASSERT(hashes_[index] == NullHash);
+
789 
+
790  size_++;
+
791  hashes_[index] = hash;
+
792  new (nodes_ + index) Node(key, nctl::forward<Args>(args)...);
+
793 }
+
794 
+
795 }
+
796 
+
797 #endif
+
A generic reverse iterator.
Definition: ReverseIterator.h:11
+
A template based hashmap implementation with open addressing and leapfrog probing (version with stati...
Definition: StaticHashMap.h:18
+
T * find(const K &key)
Checks whether an element is in the hashmap or not.
Definition: StaticHashMap.h:523
+
StaticHashMap & operator=(const StaticHashMap &other)
Aassignment operator.
Definition: StaticHashMap.h:235
+
ConstReverseIterator crBegin() const
Returns a constant reverse iterator to the last element.
Definition: StaticHashMap.h:63
+
ConstIterator cBegin() const
Returns a constant iterator to the first element.
Definition: StaticHashMap.h:61
+
ConstReverseIterator crEnd() const
Returns a constant reverse iterator to prior the first element.
Definition: StaticHashMap.h:67
+
ReverseIterator rBegin()
Returns a reverse iterator to the last element.
Definition: StaticHashMap.h:157
+
StaticHashMapIterator< K, T, HashFunc, Capacity, true > ConstIterator
Constant iterator type.
Definition: StaticHashMap.h:23
+
float loadFactor() const
Returns the ratio between used and total buckets.
Definition: StaticHashMap.h:85
+
bool isEmpty() const
Returns true if the hashmap is empty.
Definition: StaticHashMap.h:81
+
ReverseIterator rEnd()
Returns a reverse iterator to prior the first element.
Definition: StaticHashMap.h:170
+
Iterator end()
Returns an iterator to past the last element.
Definition: StaticHashMap.h:164
+
nctl::ReverseIterator< ConstIterator > ConstReverseIterator
Reverse constant iterator type.
Definition: StaticHashMap.h:27
+
bool remove(const K &key)
Removes a key from the hashmap, if it exists.
Definition: StaticHashMap.h:551
+
unsigned int capacity() const
Returns the capacity of the hashmap.
Definition: StaticHashMap.h:79
+
hash_t hash(const K &key) const
Returns the hash of a given key.
Definition: StaticHashMap.h:87
+
unsigned int size() const
Returns the number of elements in the hashmap.
Definition: StaticHashMap.h:83
+
bool insert(const K &key, const T &value)
Inserts an element if no other has the same key.
Definition: StaticHashMap.h:335
+
bool contains(const K &key, T &returnedValue) const
Checks whether an element is in the hashmap or not.
Definition: StaticHashMap.h:510
+
StaticHashMapIterator< K, T, HashFunc, Capacity, false > Iterator
Iterator type.
Definition: StaticHashMap.h:21
+
nctl::ReverseIterator< Iterator > ReverseIterator
Reverse iterator type.
Definition: StaticHashMap.h:25
+
void clear()
Clears the hashmap.
Definition: StaticHashMap.h:503
+
ConstIterator cEnd() const
Returns a constant iterator to past the last lement.
Definition: StaticHashMap.h:65
+
bool emplace(const K &key, Args &&... args)
Constructs an element if no other has the same key.
Definition: StaticHashMap.h:448
+
T & operator[](const K &key)
Subscript operator.
Definition: StaticHashMap.h:284
+
Iterator begin()
Returns an iterator to the first element.
Definition: StaticHashMap.h:150
+
A hashmap iterator.
Definition: StaticHashMapIterator.h:33
+
+ + + + diff --git a/master/_static_hash_map_iterator_8h_source.html b/master/_static_hash_map_iterator_8h_source.html new file mode 100644 index 0000000000..be5bfea550 --- /dev/null +++ b/master/_static_hash_map_iterator_8h_source.html @@ -0,0 +1,353 @@ + + + + + + + +nCine: include/nctl/StaticHashMapIterator.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
StaticHashMapIterator.h
+
+
+
1 #ifndef CLASS_NCTL_STATICHASHMAPITERATOR
+
2 #define CLASS_NCTL_STATICHASHMAPITERATOR
+
3 
+
4 #include "StaticHashMap.h"
+
5 #include "iterator.h"
+
6 
+
7 namespace nctl {
+
8 
+
10 template <class K, class T, class HashFunc, unsigned int Capacity, bool IsConst>
+ +
12 {};
+
13 
+
15 template <class K, class T, class HashFunc, unsigned int Capacity>
+
16 struct StaticHashMapHelperTraits<K, T, HashFunc, Capacity, false>
+
17 {
+ +
19  using NodeReference = typename StaticHashMap<K, T, Capacity, HashFunc>::Node &;
+
20 };
+
21 
+
23 template <class K, class T, class HashFunc, unsigned int Capacity>
+
24 struct StaticHashMapHelperTraits<K, T, HashFunc, Capacity, true>
+
25 {
+ +
27  using NodeReference = const typename StaticHashMap<K, T, Capacity, HashFunc>::Node &;
+
28 };
+
29 
+
31 template <class K, class T, class HashFunc, unsigned int Capacity, bool IsConst>
+ +
33 {
+
34  public:
+ +
37 
+
39  enum class SentinelTagInit
+
40  {
+
42  BEGINNING,
+
44  END
+
45  };
+
46 
+ +
48  : hashMap_(hashMap), bucketIndex_(bucketIndex), tag_(SentinelTag::REGULAR) {}
+
49 
+
50  StaticHashMapIterator(typename StaticHashMapHelperTraits<K, T, HashFunc, Capacity, IsConst>::HashMapPtr hashMap, SentinelTagInit tag);
+
51 
+ +
54  : hashMap_(it.hashMap_), bucketIndex_(it.bucketIndex_), tag_(SentinelTag(it.tag_)) {}
+
55 
+
57  Reference operator*() const;
+
58 
+ + +
63 
+ + +
68 
+
70  friend inline bool operator==(const StaticHashMapIterator &lhs, const StaticHashMapIterator &rhs)
+
71  {
+
72  if (lhs.tag_ == SentinelTag::REGULAR && rhs.tag_ == SentinelTag::REGULAR)
+
73  return (lhs.hashMap_ == rhs.hashMap_ && lhs.bucketIndex_ == rhs.bucketIndex_);
+
74  else
+
75  return (lhs.tag_ == rhs.tag_);
+
76  }
+
77 
+
79  friend inline bool operator!=(const StaticHashMapIterator &lhs, const StaticHashMapIterator &rhs)
+
80  {
+
81  if (lhs.tag_ == SentinelTag::REGULAR && rhs.tag_ == SentinelTag::REGULAR)
+
82  return (lhs.hashMap_ != rhs.hashMap_ || lhs.bucketIndex_ != rhs.bucketIndex_);
+
83  else
+
84  return (lhs.tag_ != rhs.tag_);
+
85  }
+
86 
+ +
90  const T &value() const;
+
92  const K &key() const;
+
94  hash_t hash() const;
+
95 
+
96  private:
+
98  enum SentinelTag
+
99  {
+
101  REGULAR,
+
103  BEGINNING,
+
105  END
+
106  };
+
107 
+
108  typename StaticHashMapHelperTraits<K, T, HashFunc, Capacity, IsConst>::HashMapPtr hashMap_;
+
109  unsigned int bucketIndex_;
+
110  SentinelTag tag_;
+
111 
+
113  void next();
+
115  void previous();
+
116 
+
118  friend class StaticHashMapIterator<K, T, HashFunc, Capacity, true>;
+
119 };
+
120 
+
122 template <class K, class T, class HashFunc, unsigned int Capacity>
+
123 struct IteratorTraits<StaticHashMapIterator<K, T, HashFunc, Capacity, false>>
+
124 {
+
126  using ValueType = T;
+
128  using Pointer = T *;
+
130  using Reference = T &;
+ +
133 };
+
134 
+
136 template <class K, class T, class HashFunc, unsigned int Capacity>
+
137 struct IteratorTraits<StaticHashMapIterator<K, T, HashFunc, Capacity, true>>
+
138 {
+
140  using ValueType = T;
+
142  using Pointer = const T *;
+
144  using Reference = const T &;
+ +
147 };
+
148 
+
149 template <class K, class T, class HashFunc, unsigned int Capacity, bool IsConst>
+
150 StaticHashMapIterator<K, T, HashFunc, Capacity, IsConst>::StaticHashMapIterator(typename StaticHashMapHelperTraits<K, T, HashFunc, Capacity, IsConst>::HashMapPtr hashMap, SentinelTagInit tag)
+
151  : hashMap_(hashMap), bucketIndex_(0)
+
152 {
+
153  switch (tag)
+
154  {
+
155  case SentinelTagInit::BEGINNING: tag_ = SentinelTag::BEGINNING; break;
+
156  case SentinelTagInit::END: tag_ = SentinelTag::END; break;
+
157  }
+
158 }
+
159 
+
160 template <class K, class T, class HashFunc, unsigned int Capacity, bool IsConst>
+ +
162 {
+
163  return node().value;
+
164 }
+
165 
+
166 template <class K, class T, class HashFunc, unsigned int Capacity, bool IsConst>
+ +
168 {
+
169  next();
+
170  return *this;
+
171 }
+
172 
+
173 template <class K, class T, class HashFunc, unsigned int Capacity, bool IsConst>
+ +
175 {
+
176  // Create an unmodified copy to return
+ +
178  next();
+
179  return iterator;
+
180 }
+
181 
+
182 template <class K, class T, class HashFunc, unsigned int Capacity, bool IsConst>
+ +
184 {
+
185  previous();
+
186  return *this;
+
187 }
+
188 
+
189 template <class K, class T, class HashFunc, unsigned int Capacity, bool IsConst>
+ +
191 {
+
192  // Create an unmodified copy to return
+ +
194  previous();
+
195  return iterator;
+
196 }
+
197 
+
198 template <class K, class T, class HashFunc, unsigned int Capacity, bool IsConst>
+ +
200 {
+
201  return hashMap_->nodes_[bucketIndex_];
+
202 }
+
203 
+
204 template <class K, class T, class HashFunc, unsigned int Capacity, bool IsConst>
+ +
206 {
+
207  return node().value;
+
208 }
+
209 
+
210 template <class K, class T, class HashFunc, unsigned int Capacity, bool IsConst>
+ +
212 {
+
213  return node().key;
+
214 }
+
215 
+
216 template <class K, class T, class HashFunc, unsigned int Capacity, bool IsConst>
+ +
218 {
+
219  return hashMap_->hashes_[bucketIndex_];
+
220 }
+
221 
+
222 template <class K, class T, class HashFunc, unsigned int Capacity, bool IsConst>
+ +
224 {
+
225  if (tag_ == SentinelTag::REGULAR)
+
226  {
+
227  if (bucketIndex_ >= hashMap_->capacity() - 1)
+
228  {
+
229  tag_ = SentinelTag::END;
+
230  return;
+
231  }
+
232  else
+
233  bucketIndex_++;
+
234  }
+
235  else if (tag_ == SentinelTag::BEGINNING)
+
236  {
+
237  tag_ = SentinelTag::REGULAR;
+
238  bucketIndex_ = 0;
+
239  }
+
240  else if (tag_ == SentinelTag::END)
+
241  return;
+
242 
+
243  // Search the first non empty index starting from the current one
+
244  while (bucketIndex_ < hashMap_->capacity() - 1 && hashMap_->hashes_[bucketIndex_] == NullHash)
+
245  bucketIndex_++;
+
246 
+
247  if (hashMap_->hashes_[bucketIndex_] == NullHash)
+
248  tag_ = SentinelTag::END;
+
249 }
+
250 
+
251 template <class K, class T, class HashFunc, unsigned int Capacity, bool IsConst>
+
252 void StaticHashMapIterator<K, T, HashFunc, Capacity, IsConst>::previous()
+
253 {
+
254  if (tag_ == SentinelTag::REGULAR)
+
255  {
+
256  if (bucketIndex_ == 0)
+
257  {
+
258  tag_ = SentinelTag::BEGINNING;
+
259  return;
+
260  }
+
261  else
+
262  bucketIndex_--;
+
263  }
+
264  else if (tag_ == SentinelTag::END)
+
265  {
+
266  tag_ = SentinelTag::REGULAR;
+
267  bucketIndex_ = hashMap_->capacity() - 1;
+
268  }
+
269  else if (tag_ == SentinelTag::BEGINNING)
+
270  return;
+
271 
+
272  // Search the first non empty index starting from the current one
+
273  while (bucketIndex_ > 0 && hashMap_->hashes_[bucketIndex_] == NullHash)
+
274  bucketIndex_--;
+
275 
+
276  if (hashMap_->hashes_[bucketIndex_] == NullHash)
+
277  tag_ = SentinelTag::BEGINNING;
+
278 }
+
279 
+
280 }
+
281 
+
282 #endif
+
A template based hashmap implementation with open addressing and leapfrog probing (version with stati...
Definition: StaticHashMap.h:18
+
A hashmap iterator.
Definition: StaticHashMapIterator.h:33
+
Reference operator*() const
Deferencing operator.
Definition: StaticHashMapIterator.h:161
+
@ BEGINNING
Iterator at the beginning, next element is the first one.
+
@ END
Iterator at the end, previous element is the last one.
+
const K & key() const
Returns the key associated to the currently pointed node.
Definition: StaticHashMapIterator.h:211
+
hash_t hash() const
Returns the hash associated to the currently pointed node.
Definition: StaticHashMapIterator.h:217
+
const T & value() const
Returns the value associated to the currently pointed node.
Definition: StaticHashMapIterator.h:205
+
StaticHashMapIterator & operator++()
Iterates to the next element (prefix)
Definition: StaticHashMapIterator.h:167
+
typename IteratorTraits< StaticHashMapIterator >::Reference Reference
Reference type which respects iterator constness.
Definition: StaticHashMapIterator.h:36
+
SentinelTagInit
Sentinel tags to initialize the iterator at the beginning and end.
Definition: StaticHashMapIterator.h:40
+
StaticHashMapIterator & operator--()
Iterates to the previous element (prefix)
Definition: StaticHashMapIterator.h:183
+
friend bool operator==(const StaticHashMapIterator &lhs, const StaticHashMapIterator &rhs)
Equality operator.
Definition: StaticHashMapIterator.h:70
+
StaticHashMapIterator(const StaticHashMapIterator< K, T, HashFunc, Capacity, false > &it)
Copy constructor to implicitly convert a non constant iterator to a constant one.
Definition: StaticHashMapIterator.h:53
+
StaticHashMapHelperTraits< K, T, HashFunc, Capacity, IsConst >::NodeReference node() const
Returns the hashmap node currently pointed by the iterator.
Definition: StaticHashMapIterator.h:199
+
friend bool operator!=(const StaticHashMapIterator &lhs, const StaticHashMapIterator &rhs)
Inequality operator.
Definition: StaticHashMapIterator.h:79
+
Dispatching tag for iterators that can move both ways, one element at a time.
Definition: iterator.h:11
+
T * Pointer
Pointer to the type of the values deferenced by the iterator.
Definition: StaticHashMapIterator.h:128
+
T ValueType
Type of the values deferenced by the iterator.
Definition: StaticHashMapIterator.h:126
+
static BidirectionalIteratorTag IteratorCategory()
Type trait for iterator category.
Definition: StaticHashMapIterator.h:132
+
T & Reference
Reference to the type of the values deferenced by the iterator.
Definition: StaticHashMapIterator.h:130
+
static BidirectionalIteratorTag IteratorCategory()
Type trait for iterator category.
Definition: StaticHashMapIterator.h:146
+
const T & Reference
Reference to the type of the values deferenced by the iterator.
Definition: StaticHashMapIterator.h:144
+
const T * Pointer
Pointer to the type of the values deferenced by the iterator.
Definition: StaticHashMapIterator.h:142
+
T ValueType
Type of the values deferenced by the iterator (never const)
Definition: StaticHashMapIterator.h:140
+
Base iterator traits structure.
Definition: iterator.h:19
+
Base helper structure for type traits used in the hashmap iterator.
Definition: StaticHashMapIterator.h:12
+
+ + + + diff --git a/master/_static_hash_set_8h_source.html b/master/_static_hash_set_8h_source.html new file mode 100644 index 0000000000..74da02eac1 --- /dev/null +++ b/master/_static_hash_set_8h_source.html @@ -0,0 +1,702 @@ + + + + + + + +nCine: include/nctl/StaticHashSet.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
StaticHashSet.h
+
+
+
1 #ifndef CLASS_NCTL_STATICHASHSET
+
2 #define CLASS_NCTL_STATICHASHSET
+
3 
+
4 #include <new>
+
5 #include <ncine/common_macros.h>
+
6 #include "HashFunctions.h"
+
7 #include "ReverseIterator.h"
+
8 
+
9 namespace nctl {
+
10 
+
11 template <class K, class HashFunc, unsigned int Capacity> class StaticHashSetIterator;
+
12 template <class K, class HashFunc, unsigned int Capacity> struct StaticHashSetHelperTraits;
+
13 class String;
+
14 
+
16 template <class K, unsigned int Capacity, class HashFunc = FNV1aHashFunc<K>>
+ +
18 {
+
19  public:
+ + + + +
28 
+
29  inline StaticHashSet()
+
30  : size_(0) { init(); }
+
31  inline ~StaticHashSet() { destructKeys(); }
+
32 
+
34  StaticHashSet(const StaticHashSet &other);
+
36  StaticHashSet(StaticHashSet &&other);
+
38  StaticHashSet &operator=(const StaticHashSet &other);
+
40  StaticHashSet &operator=(StaticHashSet &&other);
+
41 
+
43  Iterator begin();
+ +
47  Iterator end();
+ +
50 
+
52  ConstIterator begin() const;
+ +
56  ConstIterator end() const;
+
58  ConstReverseIterator rEnd() const;
+
59 
+
61  inline ConstIterator cBegin() const { return begin(); }
+
63  inline ConstReverseIterator crBegin() const { return rBegin(); }
+
65  inline ConstIterator cEnd() const { return end(); }
+
67  inline ConstReverseIterator crEnd() const { return rEnd(); }
+
68 
+
70  bool insert(const K &key);
+
72  bool insert(K &&key);
+
73 
+
75  inline unsigned int capacity() const { return Capacity; }
+
77  inline bool isEmpty() const { return size_ == 0; }
+
79  inline unsigned int size() const { return size_; }
+
81  inline float loadFactor() const { return size_ / static_cast<float>(Capacity); }
+
83  inline hash_t hash(const K &key) const { return hashFunc_(key); }
+
84 
+
86  void clear();
+
88  bool contains(const K &key) const;
+
90  K *find(const K &key);
+
92  const K *find(const K &key) const;
+
94  bool remove(const K &key);
+
95 
+
96  private:
+
97  unsigned int size_;
+
98  uint8_t delta1_[Capacity];
+
99  uint8_t delta2_[Capacity];
+
100  hash_t hashes_[Capacity];
+
101  uint8_t keysBuffer_[Capacity * sizeof(K)];
+
102  K *keys_ = reinterpret_cast<K *>(keysBuffer_);
+
103  HashFunc hashFunc_;
+
104 
+
105  void init();
+
106  void destructKeys();
+
107  bool findBucketIndex(const K &key, unsigned int &foundIndex, unsigned int &prevFoundIndex) const;
+
108  inline bool findBucketIndex(const K &key, unsigned int &foundIndex) const;
+
109  unsigned int addDelta1(unsigned int bucketIndex) const;
+
110  unsigned int addDelta2(unsigned int bucketIndex) const;
+
111  unsigned int calcNewDelta(unsigned int bucketIndex, unsigned int newIndex) const;
+
112  unsigned int linearSearch(unsigned int index, hash_t hash, const K &key) const;
+
113  bool bucketFoundOrEmpty(unsigned int index, hash_t hash, const K &key) const;
+
114  bool bucketFound(unsigned int index, hash_t hash, const K &key) const;
+
115  void insertKey(unsigned int index, hash_t hash, const K &key);
+
116  void insertKey(unsigned int index, hash_t hash, K &&key);
+
117 
+
118  friend class StaticHashSetIterator<K, HashFunc, Capacity>;
+
119  friend struct StaticHashSetHelperTraits<K, HashFunc, Capacity>;
+
120 };
+
121 
+
122 template <class K, unsigned int Capacity, class HashFunc>
+ +
124 {
+
125  Iterator iterator(this, Iterator::SentinelTagInit::BEGINNING);
+
126  return ++iterator;
+
127 }
+
128 
+
129 template <class K, unsigned int Capacity, class HashFunc>
+ +
131 {
+
132  Iterator iterator(this, Iterator::SentinelTagInit::END);
+
133  return ReverseIterator(--iterator);
+
134 }
+
135 
+
136 template <class K, unsigned int Capacity, class HashFunc>
+ +
138 {
+
139  return Iterator(this, Iterator::SentinelTagInit::END);
+
140 }
+
141 
+
142 template <class K, unsigned int Capacity, class HashFunc>
+ +
144 {
+
145  Iterator iterator(this, Iterator::SentinelTagInit::BEGINNING);
+
146  return ReverseIterator(iterator);
+
147 }
+
148 
+
149 template <class K, unsigned int Capacity, class HashFunc>
+ +
151 {
+
152  ConstIterator iterator(this, ConstIterator::SentinelTagInit::BEGINNING);
+
153  return ++iterator;
+
154 }
+
155 
+
156 template <class K, unsigned int Capacity, class HashFunc>
+ +
158 {
+
159  ConstIterator iterator(this, ConstIterator::SentinelTagInit::END);
+
160  return ConstReverseIterator(--iterator);
+
161 }
+
162 
+
163 template <class K, unsigned int Capacity, class HashFunc>
+ +
165 {
+
166  return ConstIterator(this, ConstIterator::SentinelTagInit::END);
+
167 }
+
168 
+
169 template <class K, unsigned int Capacity, class HashFunc>
+ +
171 {
+
172  ConstIterator iterator(this, ConstIterator::SentinelTagInit::BEGINNING);
+
173  return ConstReverseIterator(iterator);
+
174 }
+
175 
+
176 template <class K, unsigned int Capacity, class HashFunc>
+ +
178  : size_(other.size_)
+
179 {
+
180  for (unsigned int i = 0; i < Capacity; i++)
+
181  {
+
182  if (other.hashes_[i] != NullHash)
+
183  new (keys_ + i) K(other.keys_[i]);
+
184 
+
185  delta1_[i] = other.delta1_[i];
+
186  delta2_[i] = other.delta2_[i];
+
187  hashes_[i] = other.hashes_[i];
+
188  }
+
189 }
+
190 
+
191 template <class K, unsigned int Capacity, class HashFunc>
+ +
193  : size_(other.size_)
+
194 {
+
195  for (unsigned int i = 0; i < Capacity; i++)
+
196  {
+
197  if (other.hashes_[i] != NullHash)
+
198  new (keys_ + i) K(nctl::move(other.keys_[i]));
+
199 
+
200  delta1_[i] = other.delta1_[i];
+
201  delta2_[i] = other.delta2_[i];
+
202  hashes_[i] = other.hashes_[i];
+
203  }
+
204  other.destructKeys();
+
205 }
+
206 
+
207 template <class K, unsigned int Capacity, class HashFunc>
+ +
209 {
+
210  for (unsigned int i = 0; i < Capacity; i++)
+
211  {
+
212  if (other.hashes_[i] != NullHash)
+
213  {
+
214  if (hashes_[i] != NullHash)
+
215  keys_[i] = other.keys_[i];
+
216  else
+
217  new (keys_ + i) K(other.keys_[i]);
+
218  }
+
219  else if (hashes_[i] != NullHash)
+
220  destructObject(keys_ + i);
+
221 
+
222  delta1_[i] = other.delta1_[i];
+
223  delta2_[i] = other.delta2_[i];
+
224  hashes_[i] = other.hashes_[i];
+
225  }
+
226  size_ = other.size_;
+
227 
+
228  return *this;
+
229 }
+
230 
+
231 template <class K, unsigned int Capacity, class HashFunc>
+ +
233 {
+
234  for (unsigned int i = 0; i < Capacity; i++)
+
235  {
+
236  if (other.hashes_[i] != NullHash)
+
237  {
+
238  if (hashes_[i] != NullHash)
+
239  keys_[i] = nctl::move(other.keys_[i]);
+
240  else
+
241  new (keys_ + i) K(nctl::move(other.keys_[i]));
+
242  }
+
243  else if (hashes_[i] != NullHash)
+
244  destructObject(keys_ + i);
+
245 
+
246  delta1_[i] = other.delta1_[i];
+
247  delta2_[i] = other.delta2_[i];
+
248  hashes_[i] = other.hashes_[i];
+
249  }
+
250  size_ = other.size_;
+
251  other.destructKeys();
+
252 
+
253  return *this;
+
254 }
+
255 
+
257 template <class K, unsigned int Capacity, class HashFunc>
+ +
259 {
+
260  const hash_t hash = hashFunc_(key);
+
261  int unsigned bucketIndex = hash % Capacity;
+
262 
+
263  if (bucketFoundOrEmpty(bucketIndex, hash, key) == false)
+
264  {
+
265  if (delta1_[bucketIndex] != 0)
+
266  {
+
267  bucketIndex = addDelta1(bucketIndex);
+
268  if (bucketFound(bucketIndex, hash, key) == false)
+
269  {
+
270  while (delta2_[bucketIndex] != 0)
+
271  {
+
272  bucketIndex = addDelta2(bucketIndex);
+
273  // Found at ideal index + delta1 + (n * delta2)
+
274  if (bucketFound(bucketIndex, hash, key))
+
275  return false;
+
276  }
+
277 
+
278  // Adding at ideal index + delta1 + (n * delta2)
+
279  const unsigned int newIndex = linearSearch(bucketIndex + 1, hash, key);
+
280  delta2_[bucketIndex] = calcNewDelta(bucketIndex, newIndex);
+
281  insertKey(newIndex, hash, key);
+
282  return true;
+
283  }
+
284  else
+
285  {
+
286  // Found at ideal index + delta1
+
287  return false;
+
288  }
+
289  }
+
290  else
+
291  {
+
292  // Adding at ideal index + delta1
+
293  const unsigned int newIndex = linearSearch(bucketIndex + 1, hash, key);
+
294  delta1_[bucketIndex] = calcNewDelta(bucketIndex, newIndex);
+
295  insertKey(newIndex, hash, key);
+
296  return true;
+
297  }
+
298  }
+
299  else
+
300  {
+
301  // Using the ideal bucket index for the node
+
302  if (hashes_[bucketIndex] == NullHash)
+
303  {
+
304  insertKey(bucketIndex, hash, key);
+
305  return true;
+
306  }
+
307  else
+
308  return false;
+
309  }
+
310 }
+
311 
+
313 template <class K, unsigned int Capacity, class HashFunc>
+ +
315 {
+
316  const hash_t hash = hashFunc_(key);
+
317  int unsigned bucketIndex = hash % Capacity;
+
318 
+
319  if (bucketFoundOrEmpty(bucketIndex, hash, key) == false)
+
320  {
+
321  if (delta1_[bucketIndex] != 0)
+
322  {
+
323  bucketIndex = addDelta1(bucketIndex);
+
324  if (bucketFound(bucketIndex, hash, key) == false)
+
325  {
+
326  while (delta2_[bucketIndex] != 0)
+
327  {
+
328  bucketIndex = addDelta2(bucketIndex);
+
329  // Found at ideal index + delta1 + (n * delta2)
+
330  if (bucketFound(bucketIndex, hash, key))
+
331  return false;
+
332  }
+
333 
+
334  // Adding at ideal index + delta1 + (n * delta2)
+
335  const unsigned int newIndex = linearSearch(bucketIndex + 1, hash, key);
+
336  delta2_[bucketIndex] = calcNewDelta(bucketIndex, newIndex);
+
337  insertKey(newIndex, hash, nctl::move(key));
+
338  return true;
+
339  }
+
340  else
+
341  {
+
342  // Found at ideal index + delta1
+
343  return false;
+
344  }
+
345  }
+
346  else
+
347  {
+
348  // Adding at ideal index + delta1
+
349  const unsigned int newIndex = linearSearch(bucketIndex + 1, hash, key);
+
350  delta1_[bucketIndex] = calcNewDelta(bucketIndex, newIndex);
+
351  insertKey(newIndex, hash, nctl::move(key));
+
352  return true;
+
353  }
+
354  }
+
355  else
+
356  {
+
357  // Using the ideal bucket index for the node
+
358  if (hashes_[bucketIndex] == NullHash)
+
359  {
+
360  insertKey(bucketIndex, hash, nctl::move(key));
+
361  return true;
+
362  }
+
363  else
+
364  return false;
+
365  }
+
366 }
+
367 
+
368 template <class K, unsigned int Capacity, class HashFunc>
+ +
370 {
+
371  destructKeys();
+
372  init();
+
373 }
+
374 
+
375 template <class K, unsigned int Capacity, class HashFunc>
+ +
377 {
+
378  int unsigned bucketIndex = 0;
+
379  return findBucketIndex(key, bucketIndex);
+
380 }
+
381 
+
383 template <class K, unsigned int Capacity, class HashFunc>
+ +
385 {
+
386  int unsigned bucketIndex = 0;
+
387  const bool found = findBucketIndex(key, bucketIndex);
+
388 
+
389  K *returnedPtr = nullptr;
+
390  if (found)
+
391  returnedPtr = &keys_[bucketIndex];
+
392 
+
393  return returnedPtr;
+
394 }
+
395 
+
397 template <class K, unsigned int Capacity, class HashFunc>
+
398 const K *StaticHashSet<K, Capacity, HashFunc>::find(const K &key) const
+
399 {
+
400  int unsigned bucketIndex = 0;
+
401  const bool found = findBucketIndex(key, bucketIndex);
+
402 
+
403  const K *returnedPtr = nullptr;
+
404  if (found)
+
405  returnedPtr = &keys_[bucketIndex];
+
406 
+
407  return returnedPtr;
+
408 }
+
409 
+
411 template <class K, unsigned int Capacity, class HashFunc>
+ +
413 {
+
414  int unsigned foundBucketIndex = 0;
+
415  int unsigned prevFoundBucketIndex = 0;
+
416  const bool found = findBucketIndex(key, foundBucketIndex, prevFoundBucketIndex);
+
417  unsigned int bucketIndex = foundBucketIndex;
+
418 
+
419  if (found)
+
420  {
+
421  // The found bucket is the last of the chain, previous one needs a delta fix
+
422  if (foundBucketIndex != hashes_[foundBucketIndex] % Capacity && delta2_[foundBucketIndex] == 0)
+
423  {
+
424  if (addDelta1(prevFoundBucketIndex) == foundBucketIndex)
+
425  delta1_[prevFoundBucketIndex] = 0;
+
426  else if (addDelta2(prevFoundBucketIndex) == foundBucketIndex)
+
427  delta2_[prevFoundBucketIndex] = 0;
+
428  }
+
429 
+
430  while (delta1_[bucketIndex] != 0 || delta2_[bucketIndex] != 0)
+
431  {
+
432  unsigned int lastBucketIndex = bucketIndex;
+
433  if (delta1_[lastBucketIndex] != 0)
+
434  lastBucketIndex = addDelta1(lastBucketIndex);
+
435  if (delta2_[lastBucketIndex] != 0)
+
436  {
+
437  unsigned int secondLastBucketIndex = lastBucketIndex;
+
438  while (delta2_[lastBucketIndex] != 0)
+
439  {
+
440  secondLastBucketIndex = lastBucketIndex;
+
441  lastBucketIndex = addDelta2(lastBucketIndex);
+
442  }
+
443  delta2_[secondLastBucketIndex] = 0;
+
444  }
+
445  else
+
446  delta1_[bucketIndex] = 0;
+
447 
+
448  if (bucketIndex != lastBucketIndex)
+
449  {
+
450  keys_[bucketIndex] = nctl::move(keys_[lastBucketIndex]);
+
451  hashes_[bucketIndex] = hashes_[lastBucketIndex];
+
452  }
+
453 
+
454  bucketIndex = lastBucketIndex;
+
455  }
+
456 
+
457  hashes_[bucketIndex] = NullHash;
+
458  destructObject(keys_ + bucketIndex);
+
459  size_--;
+
460  }
+
461 
+
462  return found;
+
463 }
+
464 
+
465 template <class K, unsigned int Capacity, class HashFunc>
+ +
467 {
+
468  for (unsigned int i = 0; i < Capacity; i++)
+
469  delta1_[i] = 0;
+
470  for (unsigned int i = 0; i < Capacity; i++)
+
471  delta2_[i] = 0;
+
472  for (unsigned int i = 0; i < Capacity; i++)
+
473  hashes_[i] = NullHash;
+
474 }
+
475 
+
476 template <class K, unsigned int Capacity, class HashFunc>
+
477 void StaticHashSet<K, Capacity, HashFunc>::destructKeys()
+
478 {
+
479  for (unsigned int i = 0; i < Capacity; i++)
+
480  {
+
481  if (hashes_[i] != NullHash)
+
482  {
+
483  destructObject(keys_ + i);
+
484  hashes_[i] = NullHash;
+
485  }
+
486  }
+
487  size_ = 0;
+
488 }
+
489 
+
490 template <class K, unsigned int Capacity, class HashFunc>
+
491 bool StaticHashSet<K, Capacity, HashFunc>::findBucketIndex(const K &key, unsigned int &foundIndex, unsigned int &prevFoundIndex) const
+
492 {
+
493  if (size_ == 0)
+
494  return false;
+
495 
+
496  bool found = false;
+
497  const hash_t hash = hashFunc_(key);
+
498  foundIndex = hash % Capacity;
+
499  prevFoundIndex = foundIndex;
+
500 
+
501  if (bucketFoundOrEmpty(foundIndex, hash, key) == false)
+
502  {
+
503  if (delta1_[foundIndex] != 0)
+
504  {
+
505  prevFoundIndex = foundIndex;
+
506  foundIndex = addDelta1(foundIndex);
+
507  if (bucketFound(foundIndex, hash, key) == false)
+
508  {
+
509  while (delta2_[foundIndex] != 0)
+
510  {
+
511  prevFoundIndex = foundIndex;
+
512  foundIndex = addDelta2(foundIndex);
+
513  if (bucketFound(foundIndex, hash, key))
+
514  {
+
515  // Found at ideal index + delta1 + (n * delta2)
+
516  found = true;
+
517  break;
+
518  }
+
519  }
+
520  }
+
521  else
+
522  {
+
523  // Found at ideal index + delta1
+
524  found = true;
+
525  }
+
526  }
+
527  }
+
528  else
+
529  {
+
530  if (hashes_[foundIndex] != NullHash)
+
531  {
+
532  // Found at ideal bucket index
+
533  found = true;
+
534  }
+
535  }
+
536 
+
537  return found;
+
538 }
+
539 
+
540 template <class K, unsigned int Capacity, class HashFunc>
+
541 bool StaticHashSet<K, Capacity, HashFunc>::findBucketIndex(const K &key, unsigned int &foundIndex) const
+
542 {
+
543  unsigned int prevFoundIndex = 0;
+
544  return findBucketIndex(key, foundIndex, prevFoundIndex);
+
545 }
+
546 
+
547 template <class K, unsigned int Capacity, class HashFunc>
+
548 unsigned int StaticHashSet<K, Capacity, HashFunc>::addDelta1(unsigned int bucketIndex) const
+
549 {
+
550  unsigned int newIndex = bucketIndex + delta1_[bucketIndex];
+
551  if (newIndex > Capacity - 1)
+
552  newIndex -= Capacity;
+
553  return newIndex;
+
554 }
+
555 
+
556 template <class K, unsigned int Capacity, class HashFunc>
+
557 unsigned int StaticHashSet<K, Capacity, HashFunc>::addDelta2(unsigned int bucketIndex) const
+
558 {
+
559  unsigned int newIndex = bucketIndex + delta2_[bucketIndex];
+
560  if (newIndex > Capacity - 1)
+
561  newIndex -= Capacity;
+
562  return newIndex;
+
563 }
+
564 
+
565 template <class K, unsigned int Capacity, class HashFunc>
+
566 unsigned int StaticHashSet<K, Capacity, HashFunc>::calcNewDelta(unsigned int bucketIndex, unsigned int newIndex) const
+
567 {
+
568  unsigned int delta = 0;
+
569  if (newIndex >= bucketIndex)
+
570  delta = newIndex - bucketIndex;
+
571  else
+
572  delta = Capacity - bucketIndex + newIndex;
+
573 
+
574  FATAL_ASSERT(delta < 256); // deltas are uint8_t
+
575  return delta;
+
576 }
+
577 
+
578 template <class K, unsigned int Capacity, class HashFunc>
+
579 unsigned int StaticHashSet<K, Capacity, HashFunc>::linearSearch(unsigned int index, hash_t hash, const K &key) const
+
580 {
+
581  for (unsigned int i = index; i < Capacity; i++)
+
582  {
+
583  if (bucketFoundOrEmpty(i, hash, key))
+
584  return i;
+
585  }
+
586 
+
587  for (unsigned int i = 0; i < index; i++)
+
588  {
+
589  if (bucketFoundOrEmpty(i, hash, key))
+
590  return i;
+
591  }
+
592 
+
593  return index;
+
594 }
+
595 
+
596 template <class K, unsigned int Capacity, class HashFunc>
+
597 bool StaticHashSet<K, Capacity, HashFunc>::bucketFoundOrEmpty(unsigned int index, hash_t hash, const K &key) const
+
598 {
+
599  return (hashes_[index] == NullHash || (hashes_[index] == hash && equalTo(keys_[index], key)));
+
600 }
+
601 
+
602 template <class K, unsigned int Capacity, class HashFunc>
+
603 bool StaticHashSet<K, Capacity, HashFunc>::bucketFound(unsigned int index, hash_t hash, const K &key) const
+
604 {
+
605  return (hashes_[index] == hash && equalTo(keys_[index], key));
+
606 }
+
607 
+
608 template <class K, unsigned int Capacity, class HashFunc>
+
609 void StaticHashSet<K, Capacity, HashFunc>::insertKey(unsigned int index, hash_t hash, const K &key)
+
610 {
+
611  FATAL_ASSERT(size_ < Capacity);
+
612  FATAL_ASSERT(hashes_[index] == NullHash);
+
613 
+
614  size_++;
+
615  hashes_[index] = hash;
+
616  new (keys_ + index) K(key);
+
617 }
+
618 
+
619 template <class K, unsigned int Capacity, class HashFunc>
+
620 void StaticHashSet<K, Capacity, HashFunc>::insertKey(unsigned int index, hash_t hash, K &&key)
+
621 {
+
622  FATAL_ASSERT(size_ < Capacity);
+
623  FATAL_ASSERT(hashes_[index] == NullHash);
+
624 
+
625  size_++;
+
626  hashes_[index] = hash;
+
627  new (keys_ + index) K(nctl::move(key));
+
628 }
+
629 
+
630 }
+
631 
+
632 #endif
+
A generic reverse iterator.
Definition: ReverseIterator.h:11
+
A template based hashset implementation with open addressing and leapfrog probing (version with stati...
Definition: StaticHashSet.h:18
+
bool isEmpty() const
Returns true if the hashset is empty.
Definition: StaticHashSet.h:77
+
hash_t hash(const K &key) const
Returns the hash of a given key.
Definition: StaticHashSet.h:83
+
Iterator end()
Returns an iterator to past the last element.
Definition: StaticHashSet.h:137
+
StaticHashSetIterator< K, HashFunc, Capacity > Iterator
Iterator type.
Definition: StaticHashSet.h:21
+
ConstIterator cEnd() const
Returns a constant iterator to past the last lement.
Definition: StaticHashSet.h:65
+
K * find(const K &key)
Checks whether an element is in the hashset or not.
Definition: StaticHashSet.h:384
+
ConstIterator cBegin() const
Returns a constant iterator to the first element.
Definition: StaticHashSet.h:61
+
nctl::ReverseIterator< ConstIterator > ConstReverseIterator
Reverse constant iterator type.
Definition: StaticHashSet.h:27
+
void clear()
Clears the hashset.
Definition: StaticHashSet.h:369
+
unsigned int size() const
Returns the number of elements in the hashset.
Definition: StaticHashSet.h:79
+
nctl::ReverseIterator< Iterator > ReverseIterator
Reverse iterator type.
Definition: StaticHashSet.h:25
+
ConstReverseIterator crEnd() const
Returns a constant reverse iterator to prior the first element.
Definition: StaticHashSet.h:67
+
Iterator begin()
Returns an iterator to the first element.
Definition: StaticHashSet.h:123
+
bool insert(const K &key)
Inserts an element if not already in.
Definition: StaticHashSet.h:258
+
bool remove(const K &key)
Removes a key from the hashset, if it exists.
Definition: StaticHashSet.h:412
+
float loadFactor() const
Returns the ratio between used and total buckets.
Definition: StaticHashSet.h:81
+
ConstReverseIterator crBegin() const
Returns a constant reverse iterator to the last element.
Definition: StaticHashSet.h:63
+
StaticHashSetIterator< K, HashFunc, Capacity > ConstIterator
Constant iterator type.
Definition: StaticHashSet.h:23
+
StaticHashSet & operator=(const StaticHashSet &other)
Aassignment operator.
Definition: StaticHashSet.h:208
+
ReverseIterator rEnd()
Returns a reverse iterator to prior the first element.
Definition: StaticHashSet.h:143
+
ReverseIterator rBegin()
Returns a reverse iterator to the last element.
Definition: StaticHashSet.h:130
+
unsigned int capacity() const
Returns the capacity of the hashset.
Definition: StaticHashSet.h:75
+
bool contains(const K &key) const
Checks whether an element is in the hashset or not.
Definition: StaticHashSet.h:376
+
A hashset iterator.
Definition: StaticHashSetIterator.h:19
+
Base helper structure for type traits used in the hashset iterator.
Definition: StaticHashSetIterator.h:12
+
+ + + + diff --git a/master/_static_hash_set_iterator_8h_source.html b/master/_static_hash_set_iterator_8h_source.html new file mode 100644 index 0000000000..67a30d1b90 --- /dev/null +++ b/master/_static_hash_set_iterator_8h_source.html @@ -0,0 +1,306 @@ + + + + + + + +nCine: include/nctl/StaticHashSetIterator.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
StaticHashSetIterator.h
+
+
+
1 #ifndef CLASS_NCTL_STATICHASHSETITERATOR
+
2 #define CLASS_NCTL_STATICHASHSETITERATOR
+
3 
+
4 #include "StaticHashSet.h"
+
5 #include "iterator.h"
+
6 
+
7 namespace nctl {
+
8 
+
10 template <class K, class HashFunc, unsigned int Capacity>
+ +
12 {
+ +
14 };
+
15 
+
17 template <class K, class HashFunc, unsigned int Capacity>
+ +
19 {
+
20  public:
+ +
23 
+
25  enum class SentinelTagInit
+
26  {
+
28  BEGINNING,
+
30  END
+
31  };
+
32 
+ +
34  : hashSet_(hashSet), bucketIndex_(bucketIndex), tag_(SentinelTag::REGULAR) {}
+
35 
+
36  StaticHashSetIterator(typename StaticHashSetHelperTraits<K, HashFunc, Capacity>::HashSetPtr hashSet, SentinelTagInit tag);
+
37 
+
39  Reference operator*() const;
+
40 
+
42  StaticHashSetIterator &operator++();
+
44  StaticHashSetIterator operator++(int);
+
45 
+
47  StaticHashSetIterator &operator--();
+
49  StaticHashSetIterator operator--(int);
+
50 
+
52  friend inline bool operator==(const StaticHashSetIterator &lhs, const StaticHashSetIterator &rhs)
+
53  {
+
54  if (lhs.tag_ == SentinelTag::REGULAR && rhs.tag_ == SentinelTag::REGULAR)
+
55  return (lhs.hashSet_ == rhs.hashSet_ && lhs.bucketIndex_ == rhs.bucketIndex_);
+
56  else
+
57  return (lhs.tag_ == rhs.tag_);
+
58  }
+
59 
+
61  friend inline bool operator!=(const StaticHashSetIterator &lhs, const StaticHashSetIterator &rhs)
+
62  {
+
63  if (lhs.tag_ == SentinelTag::REGULAR && rhs.tag_ == SentinelTag::REGULAR)
+
64  return (lhs.hashSet_ != rhs.hashSet_ || lhs.bucketIndex_ != rhs.bucketIndex_);
+
65  else
+
66  return (lhs.tag_ != rhs.tag_);
+
67  }
+
68 
+
70  const K &key() const;
+
72  hash_t hash() const;
+
73 
+
74  private:
+
76  enum SentinelTag
+
77  {
+
79  REGULAR,
+
81  BEGINNING,
+
83  END
+
84  };
+
85 
+
86  typename StaticHashSetHelperTraits<K, HashFunc, Capacity>::HashSetPtr hashSet_;
+
87  unsigned int bucketIndex_;
+
88  SentinelTag tag_;
+
89 
+
91  void next();
+
93  void previous();
+
94 };
+
95 
+
97 template <class K, class HashFunc, unsigned int Capacity>
+
98 struct IteratorTraits<StaticHashSetIterator<K, HashFunc, Capacity>>
+
99 {
+
101  using ValueType = K;
+
103  using Pointer = const K *;
+
105  using Reference = const K &;
+ +
108 };
+
109 
+
110 template <class K, class HashFunc, unsigned int Capacity>
+
111 StaticHashSetIterator<K, HashFunc, Capacity>::StaticHashSetIterator(typename StaticHashSetHelperTraits<K, HashFunc, Capacity>::HashSetPtr hashSet, SentinelTagInit tag)
+
112  : hashSet_(hashSet), bucketIndex_(0)
+
113 {
+
114  switch (tag)
+
115  {
+
116  case SentinelTagInit::BEGINNING: tag_ = SentinelTag::BEGINNING; break;
+
117  case SentinelTagInit::END: tag_ = SentinelTag::END; break;
+
118  }
+
119 }
+
120 
+
121 template <class K, class HashFunc, unsigned int Capacity>
+ +
123 {
+
124  return hashSet_->keys_[bucketIndex_];
+
125 }
+
126 
+
127 template <class K, class HashFunc, unsigned int Capacity>
+ +
129 {
+
130  next();
+
131  return *this;
+
132 }
+
133 
+
134 template <class K, class HashFunc, unsigned int Capacity>
+ +
136 {
+
137  // Create an unmodified copy to return
+ +
139  next();
+
140  return iterator;
+
141 }
+
142 
+
143 template <class K, class HashFunc, unsigned int Capacity>
+ +
145 {
+
146  previous();
+
147  return *this;
+
148 }
+
149 
+
150 template <class K, class HashFunc, unsigned int Capacity>
+ +
152 {
+
153  // Create an unmodified copy to return
+ +
155  previous();
+
156  return iterator;
+
157 }
+
158 
+
159 template <class K, class HashFunc, unsigned int Capacity>
+ +
161 {
+
162  return hashSet_->keys_[bucketIndex_];
+
163 }
+
164 
+
165 template <class K, class HashFunc, unsigned int Capacity>
+ +
167 {
+
168  return hashSet_->hashes_[bucketIndex_];
+
169 }
+
170 
+
171 template <class K, class HashFunc, unsigned int Capacity>
+ +
173 {
+
174  if (tag_ == SentinelTag::REGULAR)
+
175  {
+
176  if (bucketIndex_ >= hashSet_->capacity() - 1)
+
177  {
+
178  tag_ = SentinelTag::END;
+
179  return;
+
180  }
+
181  else
+
182  bucketIndex_++;
+
183  }
+
184  else if (tag_ == SentinelTag::BEGINNING)
+
185  {
+
186  tag_ = SentinelTag::REGULAR;
+
187  bucketIndex_ = 0;
+
188  }
+
189  else if (tag_ == SentinelTag::END)
+
190  return;
+
191 
+
192  // Search the first non empty index starting from the current one
+
193  while (bucketIndex_ < hashSet_->capacity() - 1 && hashSet_->hashes_[bucketIndex_] == NullHash)
+
194  bucketIndex_++;
+
195 
+
196  if (hashSet_->hashes_[bucketIndex_] == NullHash)
+
197  tag_ = SentinelTag::END;
+
198 }
+
199 
+
200 template <class K, class HashFunc, unsigned int Capacity>
+
201 void StaticHashSetIterator<K, HashFunc, Capacity>::previous()
+
202 {
+
203  if (tag_ == SentinelTag::REGULAR)
+
204  {
+
205  if (bucketIndex_ == 0)
+
206  {
+
207  tag_ = SentinelTag::BEGINNING;
+
208  return;
+
209  }
+
210  else
+
211  bucketIndex_--;
+
212  }
+
213  else if (tag_ == SentinelTag::END)
+
214  {
+
215  tag_ = SentinelTag::REGULAR;
+
216  bucketIndex_ = hashSet_->capacity() - 1;
+
217  }
+
218  else if (tag_ == SentinelTag::BEGINNING)
+
219  return;
+
220 
+
221  // Search the first non empty index starting from the current one
+
222  while (bucketIndex_ > 0 && hashSet_->hashes_[bucketIndex_] == NullHash)
+
223  bucketIndex_--;
+
224 
+
225  if (hashSet_->hashes_[bucketIndex_] == NullHash)
+
226  tag_ = SentinelTag::BEGINNING;
+
227 }
+
228 
+
229 }
+
230 
+
231 #endif
+
A template based hashset implementation with open addressing and leapfrog probing (version with stati...
Definition: StaticHashSet.h:18
+
A hashset iterator.
Definition: StaticHashSetIterator.h:19
+
StaticHashSetIterator & operator--()
Iterates to the previous element (prefix)
Definition: StaticHashSetIterator.h:144
+
SentinelTagInit
Sentinel tags to initialize the iterator at the beginning and end.
Definition: StaticHashSetIterator.h:26
+
typename IteratorTraits< StaticHashSetIterator >::Reference Reference
Reference type which respects iterator constness.
Definition: StaticHashSetIterator.h:22
+
friend bool operator!=(const StaticHashSetIterator &lhs, const StaticHashSetIterator &rhs)
Inequality operator.
Definition: StaticHashSetIterator.h:61
+
hash_t hash() const
Returns the hash associated to the currently pointed node.
Definition: StaticHashSetIterator.h:166
+
Reference operator*() const
Deferencing operator.
Definition: StaticHashSetIterator.h:122
+
StaticHashSetIterator & operator++()
Iterates to the next element (prefix)
Definition: StaticHashSetIterator.h:128
+
const K & key() const
Returns the key associated to the currently pointed node.
Definition: StaticHashSetIterator.h:160
+
friend bool operator==(const StaticHashSetIterator &lhs, const StaticHashSetIterator &rhs)
Equality operator.
Definition: StaticHashSetIterator.h:52
+
@ BEGINNING
Iterator at the beginning, next element is the first one.
+
@ END
Iterator at the end, previous element is the last one.
+
Dispatching tag for iterators that can move both ways, one element at a time.
Definition: iterator.h:11
+
const K & Reference
Reference to the type of the values deferenced by the iterator.
Definition: StaticHashSetIterator.h:105
+
K ValueType
Type of the values deferenced by the iterator (never const)
Definition: StaticHashSetIterator.h:101
+
static BidirectionalIteratorTag IteratorCategory()
Type trait for iterator category.
Definition: StaticHashSetIterator.h:107
+
const K * Pointer
Pointer to the type of the values deferenced by the iterator.
Definition: StaticHashSetIterator.h:103
+
Base iterator traits structure.
Definition: iterator.h:19
+
Base helper structure for type traits used in the hashset iterator.
Definition: StaticHashSetIterator.h:12
+
+ + + + diff --git a/master/_static_string_8h_source.html b/master/_static_string_8h_source.html new file mode 100644 index 0000000000..8c54735131 --- /dev/null +++ b/master/_static_string_8h_source.html @@ -0,0 +1,834 @@ + + + + + + + +nCine: include/nctl/StaticString.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
StaticString.h
+
+
+
1 #ifndef CLASS_NCTL_STATICSTRING
+
2 #define CLASS_NCTL_STATICSTRING
+
3 
+
4 #include <ncine/common_macros.h>
+
5 #include "CString.h"
+
6 #include "Utf8.h"
+
7 #include "StringIterator.h"
+
8 #include "ReverseIterator.h"
+
9 #include "algorithms.h"
+
10 
+
11 namespace nctl {
+
12 
+
14 template <unsigned int C>
+ +
16 {
+
17  public:
+ + + + +
26 
+
28  static const unsigned int MaxCStringLength = 512 - 1;
+
29 
+ +
33  StaticString(const char *cString);
+
34 
+
36  StaticString(const StaticString &other);
+
38  template <unsigned int U>
+ + +
43  template <unsigned int U>
+ +
46  StaticString &operator=(const char *cString);
+
47 
+
49  inline Iterator begin() { return Iterator(data()); }
+
51  inline ReverseIterator rBegin() { return ReverseIterator(Iterator(data() + length_ - 1)); }
+
53  inline Iterator end() { return Iterator(data() + length_); }
+
55  inline ReverseIterator rEnd() { return ReverseIterator(Iterator(data() - 1)); }
+
56 
+
58  inline ConstIterator begin() const { return ConstIterator(data()); }
+
60  inline ConstReverseIterator rBegin() const { return ConstReverseIterator(ConstIterator(data() + length_ - 1)); }
+
62  inline ConstIterator end() const { return ConstIterator(data() + length_); }
+ +
65 
+
67  inline ConstIterator cBegin() const { return ConstIterator(data()); }
+
69  inline ConstReverseIterator crBegin() const { return ConstReverseIterator(ConstIterator(data() + length_ - 1)); }
+
71  inline ConstIterator cEnd() const { return ConstIterator(data() + length_); }
+ +
74 
+
76  inline bool isEmpty() const { return length_ == 0; }
+
78  inline unsigned int length() const { return length_; }
+
80  inline unsigned int capacity() const { return capacity_; }
+
82  unsigned int setLength(unsigned int newLength);
+
83 
+
85  void clear();
+
86 
+
88  inline char *data() { return array_; }
+
90  inline const char *data() const { return array_; }
+
91 
+
93  unsigned int replace(const StaticString &source, unsigned int srcChar, unsigned int numChar, unsigned int destChar);
+
95  template <unsigned int U>
+
96  unsigned int replace(const StaticString<U> &source, unsigned int srcChar, unsigned int numChar, unsigned int destChar);
+
98  unsigned int replace(const char *source, unsigned int numChar, unsigned int destChar);
+
99 
+
101  unsigned int assign(const StaticString &source, unsigned int srcChar, unsigned int numChar);
+
103  template <unsigned int U>
+
104  unsigned int assign(const StaticString<U> &source, unsigned int srcChar, unsigned int numChar);
+
106  unsigned int assign(const StaticString &source);
+
108  template <unsigned int U>
+
109  unsigned int assign(const StaticString<U> &source);
+
111  unsigned int assign(const char *source, unsigned int numChar);
+
112 
+
114  unsigned int copy(char *dest, unsigned int srcChar, unsigned int numChar) const;
+
116  unsigned int copy(char *dest) const;
+
117 
+
119  unsigned int append(const StaticString &other);
+
121  template <unsigned int U>
+
122  unsigned int append(const StaticString<U> &other);
+
124  unsigned int append(const char *cString);
+
125 
+
127  int compare(const StaticString &other) const;
+
129  template <unsigned int U>
+
130  int compare(const StaticString<U> &other) const;
+
132  int compare(const char *cString) const;
+
133 
+
135  int findFirstChar(char c) const;
+
137  int findLastChar(char c) const;
+
139  int findFirstCharAfterIndex(char c, unsigned int index) const;
+
140 
+
142  int find(const StaticString &other) const;
+
144  template <unsigned int U>
+
145  int find(const StaticString<U> &other) const;
+
147  int find(const char *cString) const;
+
148 
+
150  StaticString &format(const char *fmt, ...);
+
152  StaticString &formatAppend(const char *fmt, ...);
+
153 
+ +
157  template <unsigned int U>
+ +
160  StaticString &operator+=(const char *cString);
+
162  StaticString operator+(const StaticString &other) const;
+
164  template <unsigned int U>
+ +
167  StaticString operator+(const char *cString) const;
+
168 
+
170  template <unsigned int U> friend StaticString<U> operator+(const char *cString, const StaticString<U> &string);
+
171 
+
172  inline bool operator==(const StaticString &other) const { return (length_ != other.length_) ? false : (compare(other) == 0); }
+
173  inline bool operator!=(const StaticString &other) const { return (length_ != other.length_) ? true : (compare(other) != 0); }
+
174  inline bool operator>(const StaticString &other) const { return compare(other) > 0; }
+
175  inline bool operator<(const StaticString &other) const { return compare(other) < 0; }
+
176  inline bool operator>=(const StaticString &other) const { return compare(other) >= 0; }
+
177  inline bool operator<=(const StaticString &other) const { return compare(other) <= 0; }
+
178 
+
179  template <unsigned int U> inline bool operator==(const StaticString<U> &other) const { return (length_ != other.length()) ? false : (compare(other) == 0); }
+
180  template <unsigned int U> inline bool operator!=(const StaticString<U> &other) const { return (length_ != other.length()) ? true : (compare(other) != 0); }
+
181  template <unsigned int U> inline bool operator>(const StaticString<U> &other) const { return compare(other) > 0; }
+
182  template <unsigned int U> inline bool operator<(const StaticString<U> &other) const { return compare(other) < 0; }
+
183  template <unsigned int U> inline bool operator>=(const StaticString<U> &other) const { return compare(other) >= 0; }
+
184  template <unsigned int U> inline bool operator<=(const StaticString<U> &other) const { return compare(other) <= 0; }
+
185 
+
186  inline bool operator==(const char *cString) const { return compare(cString) == 0; }
+
187  inline bool operator!=(const char *cString) const { return compare(cString) != 0; }
+
188  inline bool operator>(const char *cString) const { return compare(cString) > 0; }
+
189  inline bool operator<(const char *cString) const { return compare(cString) < 0; }
+
190  inline bool operator>=(const char *cString) const { return compare(cString) >= 0; }
+
191  inline bool operator<=(const char *cString) const { return compare(cString) <= 0; }
+
192 
+
193  friend inline bool operator==(const char *cString, StaticString string) { return string.compare(cString) == 0; }
+
194  friend inline bool operator!=(const char *cString, StaticString string) { return string.compare(cString) != 0; }
+
195  friend inline bool operator>(const char *cString, StaticString string) { return string.compare(cString) <= 0; }
+
196  friend inline bool operator<(const char *cString, StaticString string) { return string.compare(cString) >= 0; }
+
197  friend inline bool operator>=(const char *cString, StaticString string) { return string.compare(cString) < 0; }
+
198  friend inline bool operator<=(const char *cString, StaticString string) { return string.compare(cString) > 0; }
+
199 
+
201  const char &at(unsigned int index) const;
+
203  char &at(unsigned int index);
+
205  const char &operator[](unsigned int index) const;
+
207  char &operator[](unsigned int index);
+
208 
+
210 
+
211  int utf8ToCodePoint(unsigned int position, unsigned int &codePoint, unsigned int *codeUnits) const;
+
212 
+
214 
+
215  int utf8ToCodePoint(unsigned int position, unsigned int &codePoint) const;
+
216 
+
217  private:
+
218  char array_[C];
+
219  unsigned int length_;
+
220  unsigned int capacity_;
+
221 };
+
222 
+
223 template <unsigned int C>
+ +
225  : length_(0), capacity_(C)
+
226 {
+
227  array_[0] = '\0';
+
228 }
+
229 
+
230 template <unsigned int C>
+
231 StaticString<C>::StaticString(const char *cString)
+
232  : length_(0), capacity_(C)
+
233 {
+
234  ASSERT(cString);
+
235  length_ = static_cast<unsigned int>(nctl::strnlen(cString, capacity_ - 1));
+
236 
+
237  nctl::strncpy(array_, capacity_, cString, length_);
+
238  array_[length_] = '\0';
+
239 }
+
240 
+
241 template <unsigned int C>
+ +
243  : length_(other.length_), capacity_(other.capacity_)
+
244 {
+
245  nctl::strncpy(array_, capacity_, other.array_, length_);
+
246  array_[length_] = '\0';
+
247 }
+
248 
+
249 template <unsigned int C>
+
250 template <unsigned int U>
+ +
252  : length_(min(other.length(), C - 1)), capacity_(C)
+
253 {
+
254  nctl::strncpy(array_, capacity_, other.data(), length_);
+
255  array_[length_] = '\0';
+
256 }
+
257 
+
259 // PUBLIC FUNCTIONS
+
261 
+
263 template <unsigned int C>
+ +
265 {
+
266  if (this != &other)
+
267  assign(other);
+
268 
+
269  return *this;
+
270 }
+
271 
+
273 template <unsigned int C>
+
274 template <unsigned int U>
+ +
276 {
+
277  assign(other);
+
278  return *this;
+
279 }
+
280 
+
281 template <unsigned int C>
+ +
283 {
+
284  ASSERT(cString);
+
285 
+
286  const unsigned int cLength = static_cast<unsigned int>(nctl::strnlen(cString, capacity_));
+
287  length_ = min(cLength, capacity_ - 1);
+
288  nctl::strncpy(array_, capacity_, cString, length_);
+
289 
+
290  array_[length_] = '\0';
+
291  return *this;
+
292 }
+
293 
+
295 template <unsigned int C>
+
296 unsigned int StaticString<C>::setLength(unsigned int newLength)
+
297 {
+
298  length_ = (newLength > capacity_ - 1) ? capacity_ - 1 : newLength;
+
299  return length_;
+
300 }
+
301 
+
303 template <unsigned int C>
+ +
305 {
+
306  length_ = 0;
+
307  array_[0] = '\0';
+
308 }
+
309 
+
311 template <unsigned int C>
+
312 unsigned int StaticString<C>::replace(const StaticString &source, unsigned int srcChar, unsigned int numChar, unsigned int destChar)
+
313 {
+
314  // Clamping parameters to string lengths and capacities
+
315 
+
316  // Cannot copy from beyond the end of the source string
+
317  const unsigned int clampedSrcChar = min(srcChar, source.length_);
+
318  const char *srcStart = source.array_ + clampedSrcChar;
+
319  // It is possible to write beyond the end of the destination string, but without creating holes
+
320  const unsigned int clampedDestChar = min(destChar, length_);
+
321 
+
322  // Cannot copy more characters than the source has left until its length or more than the destination has until its capacity
+
323  const unsigned int charsToCopy = min(min(numChar, source.length_ - clampedSrcChar), capacity_ - clampedDestChar - 1);
+
324 
+
325  if (charsToCopy > 0)
+
326  {
+
327  char *destStart = array_ + clampedDestChar;
+
328 
+
329  nctl::strncpy(destStart, capacity_ - clampedDestChar, srcStart, charsToCopy);
+
330  // Destination string length can only grow, truncation has to be performed by the calling function using the return value
+
331  length_ = max(length_, static_cast<unsigned int>(destStart - array_) + charsToCopy);
+
332  array_[length_] = '\0';
+
333  }
+
334 
+
335  return charsToCopy;
+
336 }
+
337 
+
339 template <unsigned int C>
+
340 template <unsigned int U>
+
341 unsigned int StaticString<C>::replace(const StaticString<U> &source, unsigned int srcChar, unsigned int numChar, unsigned int destChar)
+
342 {
+
343  // Clamping parameters to string lengths and capacities
+
344 
+
345  // Cannot copy from beyond the end of the source string
+
346  const unsigned int clampedSrcChar = min(srcChar, source.length());
+
347  const char *srcStart = source.data() + clampedSrcChar;
+
348  // It is possible to write beyond the end of the destination string, but without creating holes
+
349  const unsigned int clampedDestChar = min(destChar, length_);
+
350 
+
351  // Cannot copy more characters than the source has left until its length or more than the destination has until its capacity
+
352  const unsigned int charsToCopy = min(min(numChar, source.length() - clampedSrcChar), capacity_ - clampedDestChar - 1);
+
353 
+
354  if (charsToCopy > 0)
+
355  {
+
356  char *destStart = array_ + clampedDestChar;
+
357 
+
358  nctl::strncpy(destStart, capacity_ - clampedDestChar, srcStart, charsToCopy);
+
359  // Destination string length can only grow, truncation has to be performed by the calling function using the return value
+
360  length_ = max(length_, static_cast<unsigned int>(destStart - array_) + charsToCopy);
+
361  array_[length_] = '\0';
+
362  }
+
363 
+
364  return charsToCopy;
+
365 }
+
366 
+
367 template <unsigned int C>
+
368 unsigned int StaticString<C>::replace(const char *source, unsigned int numChar, unsigned int destChar)
+
369 {
+
370  ASSERT(source);
+
371 
+
372  // It is possible to write beyond the end of the destination string, but without creating holes
+
373  const unsigned int clampedDestChar = min(destChar, length_);
+
374 
+
375  const unsigned int sourceLength = nctl::strnlen(source, MaxCStringLength);
+
376  // Cannot copy more characters than the source has left until its length or more than the destination has until its capacity
+
377  const unsigned int charsToCopy = min(min(numChar, sourceLength), capacity_ - clampedDestChar - 1);
+
378 
+
379  if (charsToCopy > 0)
+
380  {
+
381  char *destStart = array_ + clampedDestChar;
+
382 
+
383  nctl::strncpy(destStart, capacity_ - clampedDestChar, source, charsToCopy);
+
384  // Destination string length can only grow, truncation has to be performed by the calling function using the return value
+
385  length_ = max(length_, static_cast<unsigned int>(destStart - array_) + charsToCopy);
+
386  array_[length_] = '\0';
+
387  }
+
388 
+
389  return charsToCopy;
+
390 }
+
391 
+
392 template <unsigned int C>
+
393 unsigned int StaticString<C>::assign(const StaticString &source, unsigned int srcChar, unsigned int numChar)
+
394 {
+
395  const unsigned int copiedChars = replace(source, srcChar, numChar, 0);
+
396  length_ = copiedChars;
+
397  array_[length_] = '\0';
+
398  return copiedChars;
+
399 }
+
400 
+
401 template <unsigned int C>
+
402 template <unsigned int U>
+
403 unsigned int StaticString<C>::assign(const StaticString<U> &source, unsigned int srcChar, unsigned int numChar)
+
404 {
+
405  const unsigned int copiedChars = replace(source, srcChar, numChar, 0);
+
406  length_ = copiedChars;
+
407  array_[length_] = '\0';
+
408  return copiedChars;
+
409 }
+
410 
+
411 template <unsigned int C>
+
412 unsigned int StaticString<C>::assign(const StaticString &source)
+
413 {
+
414  return assign(source, 0, source.length_);
+
415 }
+
416 
+
417 template <unsigned int C>
+
418 template <unsigned int U>
+
419 unsigned int StaticString<C>::assign(const StaticString<U> &source)
+
420 {
+
421  return assign(source, 0, source.length());
+
422 }
+
423 
+
424 template <unsigned int C>
+
425 unsigned int StaticString<C>::assign(const char *source, unsigned int numChar)
+
426 {
+
427  const unsigned int copiedChars = replace(source, numChar, 0);
+
428  length_ = copiedChars;
+
429  array_[length_] = '\0';
+
430  return copiedChars;
+
431 }
+
432 
+
433 template <unsigned int C>
+
434 unsigned int StaticString<C>::copy(char *dest, unsigned int srcChar, unsigned int numChar) const
+
435 {
+
436  ASSERT(dest);
+
437 
+
438  // Cannot copy from beyond the end of the source string
+
439  const unsigned int clampedSrcChar = min(srcChar, length_);
+
440  const char *srcStart = array_ + clampedSrcChar;
+
441  // Cannot copy more characters than the source has left until its length
+
442  const unsigned int charsToCopy = min(numChar, length_ - clampedSrcChar);
+
443 
+
444  // Always assuming that the destination is big enough
+
445  if (charsToCopy > 0)
+
446  {
+
447  nctl::strncpy(dest, srcStart, charsToCopy);
+
448  dest[charsToCopy] = '\0';
+
449  }
+
450 
+
451  return charsToCopy;
+
452 }
+
453 
+
454 template <unsigned int C>
+
455 unsigned int StaticString<C>::copy(char *dest) const
+
456 {
+
457  return copy(dest, 0, length_);
+
458 }
+
459 
+
460 template <unsigned int C>
+
461 unsigned int StaticString<C>::append(const StaticString &other)
+
462 {
+
463  return replace(other, 0, other.length_, length_);
+
464 }
+
465 
+
466 template <unsigned int C>
+
467 template <unsigned int U>
+
468 unsigned int StaticString<C>::append(const StaticString<U> &other)
+
469 {
+
470  return replace(other, 0, other.length(), length_);
+
471 }
+
472 
+
473 template <unsigned int C>
+
474 unsigned int StaticString<C>::append(const char *cString)
+
475 {
+
476  return replace(cString, static_cast<unsigned int>(nctl::strnlen(cString, MaxCStringLength)), length_);
+
477 }
+
478 
+
479 template <unsigned int C>
+
480 int StaticString<C>::compare(const StaticString &other) const
+
481 {
+
482  const unsigned int minCapacity = nctl::min(capacity_, other.capacity_);
+
483  return strncmp(data(), other.data(), minCapacity);
+
484 }
+
485 
+
486 template <unsigned int C>
+
487 template <unsigned int U>
+ +
489 {
+
490  const unsigned int minCapacity = nctl::min(capacity_, other.capacity());
+
491  return strncmp(data(), other.data(), minCapacity);
+
492 }
+
493 
+
494 template <unsigned int C>
+
495 int StaticString<C>::compare(const char *cString) const
+
496 {
+
497  ASSERT(cString);
+
498  return strncmp(data(), cString, capacity_);
+
499 }
+
500 
+
501 template <unsigned int C>
+ +
503 {
+
504  const char *foundPtr = strchr(array_, c);
+
505 
+
506  if (foundPtr)
+
507  return static_cast<int>(foundPtr - array_);
+
508  else
+
509  return -1;
+
510 }
+
511 
+
512 template <unsigned int C>
+ +
514 {
+
515  const char *foundPtr = strrchr(array_, c);
+
516 
+
517  if (foundPtr)
+
518  return static_cast<int>(foundPtr - array_);
+
519  else
+
520  return -1;
+
521 }
+
522 
+
523 template <unsigned int C>
+
524 int StaticString<C>::findFirstCharAfterIndex(char c, unsigned int index) const
+
525 {
+
526  if (length_ == 0 || index >= length_ - 1)
+
527  return -1;
+
528 
+
529  const char *foundPtr = strchr(array_ + index + 1, c);
+
530 
+
531  if (foundPtr)
+
532  return static_cast<int>(foundPtr - array_);
+
533  else
+
534  return -1;
+
535 }
+
536 
+
537 template <unsigned int C>
+
538 int StaticString<C>::find(const StaticString &other) const
+
539 {
+
540  const char *foundPtr = strstr(data(), other.data());
+
541 
+
542  if (foundPtr)
+
543  return static_cast<int>(foundPtr - data());
+
544  else
+
545  return -1;
+
546 }
+
547 
+
548 template <unsigned int C>
+
549 template <unsigned int U>
+
550 int StaticString<C>::find(const StaticString<U> &other) const
+
551 {
+
552  const char *foundPtr = strstr(data(), other.data());
+
553 
+
554  if (foundPtr)
+
555  return static_cast<int>(foundPtr - data());
+
556  else
+
557  return -1;
+
558 }
+
559 
+
560 template <unsigned int C>
+
561 int StaticString<C>::find(const char *cString) const
+
562 {
+
563  ASSERT(cString);
+
564  const char *foundPtr = strstr(data(), cString);
+
565 
+
566  if (foundPtr)
+
567  return static_cast<int>(foundPtr - data());
+
568  else
+
569  return -1;
+
570 }
+
571 
+
572 template <unsigned int C>
+ +
574 {
+
575  ASSERT(fmt);
+
576 
+
577  int formattedLength = 0;
+
578  va_list args;
+
579  va_start(args, fmt);
+
580  formattedLength = nctl::vsnprintfTrunc(data(), capacity_, fmt, args);
+
581  va_end(args);
+
582 
+
583 #if defined(_WIN32) && !defined(__MINGW32__)
+
584  if (formattedLength < 0)
+
585  formattedLength = capacity_ - 1;
+
586 #endif
+
587 
+
588  if (formattedLength > 0)
+
589  {
+
590  length_ = nctl::min(capacity_ - 1, static_cast<unsigned int>(formattedLength));
+
591  array_[length_] = '\0';
+
592  }
+
593 
+
594  return *this;
+
595 }
+
596 
+
597 template <unsigned int C>
+ +
599 {
+
600  ASSERT(fmt);
+
601 
+
602  int formattedLength = 0;
+
603  va_list args;
+
604  va_start(args, fmt);
+
605  formattedLength = nctl::vsnprintfTrunc(data() + length_, capacity_ - length_, fmt, args);
+
606  va_end(args);
+
607 
+
608 #if defined(_WIN32) && !defined(__MINGW32__)
+
609  if (formattedLength < 0)
+
610  formattedLength = capacity_ - 1;
+
611 #endif
+
612 
+
613  if (formattedLength > 0)
+
614  {
+
615  length_ += min(capacity_ - length_ - 1, static_cast<unsigned int>(formattedLength));
+
616  array_[length_] = '\0';
+
617  }
+
618 
+
619  return *this;
+
620 }
+
621 
+
622 template <unsigned int C>
+ +
624 {
+
625  const unsigned int minLength = min(other.length_, capacity_ - length_ - 1);
+
626 
+
627  nctl::strncpy(array_ + length_, capacity_ - length_, other.array_, minLength);
+
628  length_ += minLength;
+
629 
+
630  array_[length_] = '\0';
+
631  return *this;
+
632 }
+
633 
+
634 template <unsigned int C>
+
635 template <unsigned int U>
+ +
637 {
+
638  const unsigned int minLength = min(other.length(), capacity_ - length_ - 1);
+
639 
+
640  nctl::strncpy(array_ + length_, capacity_ - length_, other.data(), minLength);
+
641  length_ += minLength;
+
642 
+
643  array_[length_] = '\0';
+
644  return *this;
+
645 }
+
646 
+
647 template <unsigned int C>
+ +
649 {
+
650  ASSERT(cString);
+
651  const unsigned int otherLength = static_cast<unsigned int>(nctl::strnlen(cString, MaxCStringLength));
+
652  const unsigned int minLength = min(otherLength, capacity_ - length_ - 1);
+
653 
+
654  nctl::strncpy(array_ + length_, capacity_ - length_, cString, minLength);
+
655  length_ += minLength;
+
656 
+
657  array_[length_] = '\0';
+
658  return *this;
+
659 }
+
660 
+
661 template <unsigned int C>
+ +
663 {
+
664  StaticString<C> result;
+
665 
+
666  result = *this;
+
667  result += other;
+
668 
+
669  return result;
+
670 }
+
671 
+
672 template <unsigned int C>
+
673 template <unsigned int U>
+ +
675 {
+
676  StaticString<C> result;
+
677 
+
678  result = *this;
+
679  result += other;
+
680 
+
681  return result;
+
682 }
+
683 
+
684 template <unsigned int C>
+
685 StaticString<C> StaticString<C>::operator+(const char *cString) const
+
686 {
+
687  ASSERT(cString);
+
688  StaticString<C> result;
+
689 
+
690  result = *this;
+
691  result += cString;
+
692 
+
693  return result;
+
694 }
+
695 
+
696 template <unsigned int U>
+
697 StaticString<U> operator+(const char *cString, const StaticString<U> &string)
+
698 {
+
699  ASSERT(cString);
+
700  StaticString<U> result;
+
701 
+
702  result = cString;
+
703  result += string;
+
704 
+
705  return result;
+
706 }
+
707 
+
708 template <unsigned int C>
+
709 const char &StaticString<C>::at(unsigned int index) const
+
710 {
+
711  FATAL_ASSERT_MSG_X(index < length_, "Index %u is out of bounds (length: %u)", index, length_);
+
712  return operator[](index);
+
713 }
+
714 
+
715 template <unsigned int C>
+
716 char &StaticString<C>::at(unsigned int index)
+
717 {
+
718  FATAL_ASSERT_MSG_X(index < length_, "Index %u is out of bounds (length: %u)", index, length_);
+
719  return operator[](index);
+
720 }
+
721 
+
722 template <unsigned int C>
+
723 const char &StaticString<C>::operator[](unsigned int index) const
+
724 {
+
725  ASSERT_MSG_X(index < length_, "Index %u is out of bounds (length: %u)", index, length_);
+
726  return array_[index];
+
727 }
+
728 
+
729 template <unsigned int C>
+
730 char &StaticString<C>::operator[](unsigned int index)
+
731 {
+
732  ASSERT_MSG_X(index < length_, "Index %u is out of bounds (size: %u)", index, length_);
+
733  return array_[index];
+
734 }
+
735 
+
736 template <unsigned int C>
+
737 int StaticString<C>::utf8ToCodePoint(unsigned int position, unsigned int &codePoint, unsigned int *codeUnits) const
+
738 {
+
739  if (position + 1 > length_)
+
740  {
+
741  codePoint = Utf8::InvalidUnicode;
+
742  if (codeUnits)
+
743  *codeUnits = Utf8::InvalidUtf8;
+
744  return 0;
+
745  }
+
746 
+
747  const char *subString = Utf8::utf8ToCodePoint(&operator[](position), codePoint, codeUnits);
+
748  return (subString - data() - position);
+
749 }
+
750 
+
751 template <unsigned int C>
+
752 int StaticString<C>::utf8ToCodePoint(unsigned int position, unsigned int &codePoint) const
+
753 {
+
754  return utf8ToCodePoint(position, codePoint, nullptr);
+
755 }
+
756 
+
757 }
+
758 
+
759 #endif
+
A generic reverse iterator.
Definition: ReverseIterator.h:11
+
A basic string class made of chars stored on the stack.
Definition: StaticString.h:16
+
int find(const StaticString< U > &other) const
Finds the first occurrence of the given string.
Definition: StaticString.h:550
+
int compare(const StaticString &other) const
Compares the string with another one in lexicographical order.
Definition: StaticString.h:480
+
StringIterator< false > Iterator
Iterator type.
Definition: StaticString.h:19
+
StaticString & operator=(const StaticString< U > &other)
Assignment operator (it might extend or truncate the original text)
+
Iterator end()
Returns an iterator to the termination character.
Definition: StaticString.h:53
+
Iterator begin()
Returns an iterator to the first character.
Definition: StaticString.h:49
+
char & operator[](unsigned int index)
Subscript operator.
Definition: StaticString.h:730
+
unsigned int replace(const StaticString &source, unsigned int srcChar, unsigned int numChar, unsigned int destChar)
Replaces characters from somewhere in the other string to somewhere in this one (no truncation)
Definition: StaticString.h:312
+
int findLastChar(char c) const
Finds the last occurrence of a character.
Definition: StaticString.h:513
+
unsigned int assign(const StaticString &source)
Copies all characters from the other string to the beginning of this one.
Definition: StaticString.h:412
+
unsigned int copy(char *dest) const
Copies all characters from this string to a C string.
Definition: StaticString.h:455
+
StaticString & operator=(const StaticString &other)
Assignment operator (it might extend or truncate the original text)
Definition: StaticString.h:264
+
StaticString(const StaticString &other)
Copy constructor.
Definition: StaticString.h:242
+
int find(const char *cString) const
Finds the first occurrence of the given constant C string.
Definition: StaticString.h:561
+
unsigned int copy(char *dest, unsigned int srcChar, unsigned int numChar) const
Copies characters from somewhere in this string to a C string.
Definition: StaticString.h:434
+
unsigned int length() const
Returns the string length.
Definition: StaticString.h:78
+
nctl::ReverseIterator< Iterator > ReverseIterator
Reverse iterator type.
Definition: StaticString.h:23
+
ConstReverseIterator rEnd() const
Returns a constant reverse iterator to the byte preceding the first character.
Definition: StaticString.h:64
+
ReverseIterator rBegin()
Returns a reverse iterator to the last character.
Definition: StaticString.h:51
+
unsigned int append(const char *cString)
Appends all the characters from the C string to the end of this one.
Definition: StaticString.h:474
+
StaticString & operator+=(const char *cString)
Appends a constant C string to the string object.
Definition: StaticString.h:648
+
unsigned int append(const StaticString< U > &other)
Appends all the characters from the other string to the end of this one.
Definition: StaticString.h:468
+
unsigned int replace(const StaticString< U > &source, unsigned int srcChar, unsigned int numChar, unsigned int destChar)
Replaces characters from somewhere in the other string to somewhere in this one (no truncation)
Definition: StaticString.h:341
+
int utf8ToCodePoint(unsigned int position, unsigned int &codePoint) const
Retrieves the Unicode code point from the UTF-8 substring starting at the specified position.
Definition: StaticString.h:752
+
static const unsigned int MaxCStringLength
Maximum length when creating an object from C-style strings.
Definition: StaticString.h:28
+
int findFirstChar(char c) const
Finds the first occurrence of a character.
Definition: StaticString.h:502
+
bool isEmpty() const
Returns true if the string is empty.
Definition: StaticString.h:76
+
StringIterator< true > ConstIterator
Constant iterator type.
Definition: StaticString.h:21
+
unsigned int capacity() const
Returns the string capacity.
Definition: StaticString.h:80
+
ConstIterator end() const
Returns a constant iterator to the termination character.
Definition: StaticString.h:62
+
ConstIterator begin() const
Returns a constant iterator to the first character.
Definition: StaticString.h:58
+
StaticString operator+(const StaticString< U > &other) const
Concatenate two strings together to create a third one.
+
StaticString & operator=(const char *cString)
Assigns a constant C string to the string object.
Definition: StaticString.h:282
+
unsigned int assign(const StaticString< U > &source, unsigned int srcChar, unsigned int numChar)
Copies characters from somewhere in the other string to the beginning of this one.
Definition: StaticString.h:403
+
const char & operator[](unsigned int index) const
Read-only subscript operator.
Definition: StaticString.h:723
+
StaticString(const StaticString< U > &other)
Conversion constructor from a string of different capacity.
Definition: StaticString.h:251
+
ConstIterator cEnd() const
Returns a constant iterator to the termination character.
Definition: StaticString.h:71
+
StaticString(const char *cString)
Constructs a string object from a C string.
Definition: StaticString.h:231
+
unsigned int assign(const StaticString< U > &source)
Copies all characters from the other string to the beginning of this one.
Definition: StaticString.h:419
+
StaticString()
Default constructor.
Definition: StaticString.h:224
+
char * data()
Returns a pointer to the internal array.
Definition: StaticString.h:88
+
StaticString operator+(const char *cString) const
Concatenates a string with a constant C string to create a third one.
Definition: StaticString.h:685
+
unsigned int replace(const char *source, unsigned int numChar, unsigned int destChar)
Replaces characters from a C string to somewhere in this one (no truncation)
Definition: StaticString.h:368
+
void clear()
Clears the string.
Definition: StaticString.h:304
+
ConstReverseIterator crEnd() const
Returns a constant reverse iterator to the byte preceding the first character.
Definition: StaticString.h:73
+
friend StaticString< U > operator+(const char *cString, const StaticString< U > &string)
Friend operator to concatenate a constant C string with a string to create a third one.
Definition: StaticString.h:697
+
StaticString & formatAppend(const char *fmt,...)
Append the formatted result to the string.
Definition: StaticString.h:598
+
int compare(const StaticString< U > &other) const
Compares the string with another one in lexicographical order.
Definition: StaticString.h:488
+
nctl::ReverseIterator< ConstIterator > ConstReverseIterator
Reverse constant iterator type.
Definition: StaticString.h:25
+
ConstReverseIterator rBegin() const
Returns a constant reverse iterator to the last character.
Definition: StaticString.h:60
+
unsigned int assign(const StaticString &source, unsigned int srcChar, unsigned int numChar)
Copies characters from somewhere in the other string to the beginning of this one.
Definition: StaticString.h:393
+
StaticString & format(const char *fmt,...)
Replaces the string with the formatted result.
Definition: StaticString.h:573
+
ConstIterator cBegin() const
Returns a constant iterator to the first character.
Definition: StaticString.h:67
+
unsigned int append(const StaticString &other)
Appends all the characters from the other string to the end of this one.
Definition: StaticString.h:461
+
const char * data() const
Returns a constant pointer to the internal array.
Definition: StaticString.h:90
+
char & at(unsigned int index)
Access to the specified element (with bounds checking)
Definition: StaticString.h:716
+
StaticString & operator+=(const StaticString< U > &other)
Appends another string to this one.
+
int compare(const char *cString) const
Compares the string with a constant C string in lexicographical order.
Definition: StaticString.h:495
+
int findFirstCharAfterIndex(char c, unsigned int index) const
Finds the first occurrence of a character after the character at the index.
Definition: StaticString.h:524
+
ReverseIterator rEnd()
Returns a reverse iterator to the byte preceding the first character.
Definition: StaticString.h:55
+
int find(const StaticString &other) const
Finds the first occurrence of the given string.
Definition: StaticString.h:538
+
unsigned int setLength(unsigned int newLength)
Sets the string length.
Definition: StaticString.h:296
+
unsigned int assign(const char *source, unsigned int numChar)
Copies characters from a C string to the beginning of this one.
Definition: StaticString.h:425
+
StaticString & operator+=(const StaticString &other)
Appends another string to this one.
Definition: StaticString.h:623
+
ConstReverseIterator crBegin() const
Returns a constant reverse iterator to the last character.
Definition: StaticString.h:69
+
int utf8ToCodePoint(unsigned int position, unsigned int &codePoint, unsigned int *codeUnits) const
Retrieves the Unicode code point and the UTF-8 code units from the UTF-8 substring starting at the sp...
Definition: StaticString.h:737
+
StaticString operator+(const StaticString &other) const
Concatenate two strings together to create a third one.
Definition: StaticString.h:662
+
const char & at(unsigned int index) const
Read-only access to the specified element (with bounds checking)
Definition: StaticString.h:709
+
A String iterator.
Definition: StringIterator.h:41
+
+ + + + diff --git a/master/_string_8h_source.html b/master/_string_8h_source.html new file mode 100644 index 0000000000..1a2f860e32 --- /dev/null +++ b/master/_string_8h_source.html @@ -0,0 +1,271 @@ + + + + + + + +nCine: include/nctl/String.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
String.h
+
+
+
1 #ifndef CLASS_NCTL_STRING
+
2 #define CLASS_NCTL_STRING
+
3 
+
4 #include <ncine/common_macros.h>
+
5 #include "Utf8.h"
+
6 #include "StringIterator.h"
+
7 #include "ReverseIterator.h"
+
8 #include "utility.h"
+
9 
+
10 namespace nctl {
+
11 
+
13 enum class StringMode
+
14 {
+
16  GROWING_CAPACITY,
+
18  FIXED_CAPACITY
+
19 };
+
20 
+
22 class DLL_PUBLIC String
+
23 {
+
24  public:
+ + + + +
33 
+
35  static const unsigned int MaxCStringLength = 512 - 1;
+
36 
+
38  String();
+
40  explicit String(unsigned int capacity)
+
41  : String(capacity, StringMode::GROWING_CAPACITY) {}
+
43  explicit String(StringMode mode)
+
44  : String(SmallBufferSize, mode) {}
+
46  String(unsigned int capacity, StringMode mode);
+
48  String(const char *cString)
+
49  : String(cString, StringMode::GROWING_CAPACITY) {}
+
51  String(const char *cString, StringMode mode);
+
52  ~String();
+
53 
+
55  String(const String &other);
+
57  String(String &&other);
+
59  String &operator=(const String &other);
+
61  String &operator=(String &&other);
+
63  String &operator=(const char *cString);
+
64 
+
66  inline void swap(String &first, String &second)
+
67  {
+
68  nctl::swap(first.array_, second.array_);
+
69  nctl::swap(first.length_, second.length_);
+
70  nctl::swap(first.capacity_, second.capacity_);
+
71  nctl::swap(first.fixedCapacity_, second.fixedCapacity_);
+
72  }
+
73 
+
75  inline Iterator begin() { return Iterator(data()); }
+
77  inline ReverseIterator rBegin() { return ReverseIterator(Iterator(data() + length_ - 1)); }
+
79  inline Iterator end() { return Iterator(data() + length_); }
+
81  inline ReverseIterator rEnd() { return ReverseIterator(Iterator(data() - 1)); }
+
82 
+
84  inline ConstIterator begin() const { return ConstIterator(data()); }
+
86  inline ConstReverseIterator rBegin() const { return ConstReverseIterator(ConstIterator(data() + length_ - 1)); }
+
88  inline ConstIterator end() const { return ConstIterator(data() + length_); }
+
90  inline ConstReverseIterator rEnd() const { return ConstReverseIterator(ConstIterator(data() - 1)); }
+
91 
+
93  inline ConstIterator cBegin() const { return ConstIterator(data()); }
+
95  inline ConstReverseIterator crBegin() const { return ConstReverseIterator(ConstIterator(data() + length_ - 1)); }
+
97  inline ConstIterator cEnd() const { return ConstIterator(data() + length_); }
+
99  inline ConstReverseIterator crEnd() const { return ConstReverseIterator(ConstIterator(data() - 1)); }
+
100 
+
102  inline bool isEmpty() const { return length_ == 0; }
+
104  inline unsigned int length() const { return length_; }
+
106  inline unsigned int capacity() const { return capacity_; }
+
108  unsigned int setLength(unsigned int newLength);
+
110  void setCapacity(unsigned int newCapacity);
+
112  void shrinkToFit();
+
113 
+
115  void clear();
+
116 
+
118  inline char *data() { return (capacity_ > SmallBufferSize) ? array_.begin_ : array_.local_; }
+
120  inline const char *data() const { return (capacity_ > SmallBufferSize) ? array_.begin_ : array_.local_; }
+
121 
+
123  unsigned int replace(const String &source, unsigned int srcChar, unsigned int numChar, unsigned int destChar);
+
125  unsigned int replace(const char *source, unsigned int numChar, unsigned int destChar);
+
126 
+
128  unsigned int assign(const String &source, unsigned int srcChar, unsigned int numChar);
+
130  unsigned int assign(const String &source);
+
132  unsigned int assign(const char *source, unsigned int numChar);
+
133 
+
135  unsigned int copy(char *dest, unsigned int srcChar, unsigned int numChar) const;
+
137  unsigned int copy(char *dest) const;
+
138 
+
140  unsigned int append(const String &other);
+
142  unsigned int append(const char *cString);
+
143 
+
145  int compare(const String &other) const;
+
147  int compare(const char *cString) const;
+
148 
+
150  int findFirstChar(char c) const;
+
152  int findLastChar(char c) const;
+
154  int findFirstCharAfterIndex(char c, unsigned int index) const;
+
155 
+
157  int find(const String &other) const;
+
159  int find(const char *cString) const;
+
160 
+
162  String &format(const char *fmt, ...);
+
164  String &formatAppend(const char *fmt, ...);
+
165 
+
167  String &operator+=(const String &other);
+
169  String &operator+=(const char *cString);
+
171  String operator+(const String &other) const;
+
173  String operator+(const char *cString) const;
+
174 
+
176  friend DLL_PUBLIC String operator+(const char *cString, const String &string);
+
177 
+
178  inline bool operator==(const String &other) const { return (length_ != other.length_) ? false : (compare(other) == 0); }
+
179  inline bool operator!=(const String &other) const { return (length_ != other.length_) ? true : (compare(other) != 0); }
+
180  inline bool operator>(const String &other) const { return compare(other) > 0; }
+
181  inline bool operator<(const String &other) const { return compare(other) < 0; }
+
182  inline bool operator>=(const String &other) const { return compare(other) >= 0; }
+
183  inline bool operator<=(const String &other) const { return compare(other) <= 0; }
+
184 
+
185  inline bool operator==(const char *cString) const { return compare(cString) == 0; }
+
186  inline bool operator!=(const char *cString) const { return compare(cString) != 0; }
+
187  inline bool operator>(const char *cString) const { return compare(cString) > 0; }
+
188  inline bool operator<(const char *cString) const { return compare(cString) < 0; }
+
189  inline bool operator>=(const char *cString) const { return compare(cString) >= 0; }
+
190  inline bool operator<=(const char *cString) const { return compare(cString) <= 0; }
+
191 
+
192  friend inline bool operator==(const char *cString, String string) { return string.compare(cString) == 0; }
+
193  friend inline bool operator!=(const char *cString, String string) { return string.compare(cString) != 0; }
+
194  friend inline bool operator>(const char *cString, String string) { return string.compare(cString) <= 0; }
+
195  friend inline bool operator<(const char *cString, String string) { return string.compare(cString) >= 0; }
+
196  friend inline bool operator>=(const char *cString, String string) { return string.compare(cString) < 0; }
+
197  friend inline bool operator<=(const char *cString, String string) { return string.compare(cString) > 0; }
+
198 
+
200  const char &at(unsigned int index) const;
+
202  char &at(unsigned int index);
+
204  const char &operator[](unsigned int index) const;
+
206  char &operator[](unsigned int index);
+
207 
+
209 
+
210  int utf8ToCodePoint(unsigned int position, unsigned int &codePoint, unsigned int *codeUnits) const;
+
211 
+
213 
+
214  int utf8ToCodePoint(unsigned int position, unsigned int &codePoint) const;
+
215 
+
216  private:
+
218  static const unsigned int SmallBufferSize = 16;
+
219 
+
221  union Buffer
+
222  {
+
223  char *begin_;
+
224  char local_[SmallBufferSize];
+
225  };
+
226 
+
227  Buffer array_;
+
228  unsigned int length_;
+
229  unsigned int capacity_;
+
230  unsigned char fixedCapacity_;
+
231 
+
233  bool extendCapacity(unsigned int minimum);
+
234 };
+
235 
+
236 DLL_PUBLIC String operator+(const char *cString, const String &string);
+
237 
+
238 }
+
239 
+
240 #endif
+
A generic reverse iterator.
Definition: ReverseIterator.h:11
+
A basic string class made of chars.
Definition: String.h:23
+
ConstReverseIterator crEnd() const
Returns a constant reverse iterator to the byte preceding the first character.
Definition: String.h:99
+
char * data()
Returns a pointer to the internal array.
Definition: String.h:118
+
unsigned int capacity() const
Returns the string capacity.
Definition: String.h:106
+
ReverseIterator rEnd()
Returns a reverse iterator to the byte preceding the first character.
Definition: String.h:81
+
ConstIterator cEnd() const
Returns a constant iterator to the termination character.
Definition: String.h:97
+
ConstReverseIterator crBegin() const
Returns a constant reverse iterator to the last character.
Definition: String.h:95
+
void swap(String &first, String &second)
Swaps two strings without copying their data.
Definition: String.h:66
+
ConstIterator cBegin() const
Returns a constant iterator to the first character.
Definition: String.h:93
+
ConstIterator end() const
Returns a constant iterator to the termination character.
Definition: String.h:88
+
String(const char *cString)
Constructs a string object from a C string.
Definition: String.h:48
+
unsigned int length() const
Returns the string length.
Definition: String.h:104
+
ConstReverseIterator rEnd() const
Returns a constant reverse iterator to the byte preceding the first character.
Definition: String.h:90
+
const char * data() const
Returns a constant pointer to the internal array.
Definition: String.h:120
+
ConstIterator begin() const
Returns a constant iterator to the first character.
Definition: String.h:84
+
ReverseIterator rBegin()
Returns a reverse iterator to the last character.
Definition: String.h:77
+
bool isEmpty() const
Returns true if the string is empty.
Definition: String.h:102
+
Iterator begin()
Returns an iterator to the first character.
Definition: String.h:75
+
String(StringMode mode)
Constructs an empty string with the option for it to be fixed.
Definition: String.h:43
+
Iterator end()
Returns an iterator to the termination character.
Definition: String.h:79
+
String(unsigned int capacity)
Constructs an empty string with explicit size.
Definition: String.h:40
+
ConstReverseIterator rBegin() const
Returns a constant reverse iterator to the last character.
Definition: String.h:86
+
A String iterator.
Definition: StringIterator.h:41
+
+ + + + diff --git a/master/_string_iterator_8h_source.html b/master/_string_iterator_8h_source.html new file mode 100644 index 0000000000..8d9816c010 --- /dev/null +++ b/master/_string_iterator_8h_source.html @@ -0,0 +1,268 @@ + + + + + + + +nCine: include/nctl/StringIterator.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
StringIterator.h
+
+
+
1 #ifndef CLASS_NCTL_STRINGITERATOR
+
2 #define CLASS_NCTL_STRINGITERATOR
+
3 
+
4 #include "iterator.h"
+
5 
+
6 namespace nctl {
+
7 
+
8 template <bool IsConst> class StringIterator;
+
9 
+
11 template <>
+ +
13 {
+
15  using ValueType = char;
+
17  using Pointer = char *;
+
19  using Reference = char &;
+ +
22 };
+
23 
+
25 template <>
+ +
27 {
+
29  using ValueType = char;
+
31  using Pointer = const char *;
+
33  using Reference = const char &;
+ +
36 };
+
37 
+
39 template <bool IsConst>
+ +
41 {
+
42  public:
+ + +
47 
+
48  explicit StringIterator(Pointer c)
+
49  : charPtr_(c) {}
+
50 
+ +
53  : charPtr_(it.charPtr_) {}
+
54 
+
56  Reference operator*() const;
+
57 
+ + +
62 
+ + +
67 
+
69  StringIterator &operator+=(int n);
+
71  StringIterator &operator-=(int n);
+
73  StringIterator operator+(int n) const;
+
75  StringIterator operator-(int n) const;
+
77  friend inline int operator-(const StringIterator &lhs, const StringIterator &rhs) { return (lhs.charPtr_ - rhs.charPtr_); }
+
78 
+
80  Reference operator[](int n) const;
+
81 
+
83  friend inline bool operator==(const StringIterator &lhs, const StringIterator &rhs) { return lhs.charPtr_ == rhs.charPtr_; }
+
85  friend inline bool operator!=(const StringIterator &lhs, const StringIterator &rhs) { return lhs.charPtr_ != rhs.charPtr_; }
+
86 
+
88  friend inline bool operator>(const StringIterator &lhs, const StringIterator &rhs) { return lhs.charPtr_ > rhs.charPtr_; }
+
90  friend inline bool operator<(const StringIterator &lhs, const StringIterator &rhs) { return lhs.charPtr_ < rhs.charPtr_; }
+
92  friend inline bool operator>=(const StringIterator &lhs, const StringIterator &rhs) { return lhs.charPtr_ >= rhs.charPtr_; }
+
94  friend inline bool operator<=(const StringIterator &lhs, const StringIterator &rhs) { return lhs.charPtr_ <= rhs.charPtr_; }
+
95 
+
96  private:
+
97  Pointer charPtr_;
+
98 
+
100  friend class StringIterator<true>;
+
101 };
+
102 
+
103 template <bool IsConst>
+ +
105 {
+
106  ASSERT(charPtr_);
+
107  return *charPtr_;
+
108 }
+
109 
+
110 template <bool IsConst>
+ +
112 {
+
113  ++charPtr_;
+
114 
+
115  return *this;
+
116 }
+
117 
+
118 template <bool IsConst>
+ +
120 {
+
121  // Create an unmodified copy to return
+
122  StringIterator iterator = *this;
+
123 
+
124  ++charPtr_;
+
125 
+
126  return iterator;
+
127 }
+
128 
+
129 template <bool IsConst>
+ +
131 {
+
132  --charPtr_;
+
133 
+
134  return *this;
+
135 }
+
136 
+
137 template <bool IsConst>
+ +
139 {
+
140  // Create an unmodified copy to return
+
141  StringIterator iterator = *this;
+
142 
+
143  --charPtr_;
+
144 
+
145  return iterator;
+
146 }
+
147 
+
148 template <bool IsConst>
+ +
150 {
+
151  charPtr_ += n;
+
152 
+
153  return *this;
+
154 }
+
155 
+
156 template <bool IsConst>
+ +
158 {
+
159  charPtr_ -= n;
+
160 
+
161  return *this;
+
162 }
+
163 
+
164 template <bool IsConst>
+ +
166 {
+
167  StringIterator iterator = *this;
+
168  iterator.charPtr_ += n;
+
169 
+
170  return iterator;
+
171 }
+
172 
+
173 template <bool IsConst>
+ +
175 {
+
176  StringIterator iterator = *this;
+
177  iterator.charPtr_ -= n;
+
178 
+
179  return iterator;
+
180 }
+
181 
+
182 template <bool IsConst>
+ +
184 {
+
185  return *(charPtr_ + n);
+
186 }
+
187 
+
188 }
+
189 
+
190 #endif
+
A String iterator.
Definition: StringIterator.h:41
+
StringIterator operator-(int n) const
Subtraction operator.
Definition: StringIterator.h:174
+
StringIterator(const StringIterator< false > &it)
Copy constructor to implicitly convert a non constant iterator to a constant one.
Definition: StringIterator.h:52
+
Reference operator*() const
Deferencing operator.
Definition: StringIterator.h:104
+
StringIterator & operator-=(int n)
Compound subtraction operator.
Definition: StringIterator.h:157
+
Reference operator[](int n) const
Subscript operator.
Definition: StringIterator.h:183
+
friend bool operator>=(const StringIterator &lhs, const StringIterator &rhs)
Greater than or equal to operator.
Definition: StringIterator.h:92
+
friend bool operator==(const StringIterator &lhs, const StringIterator &rhs)
Equality operator.
Definition: StringIterator.h:83
+
typename IteratorTraits< StringIterator >::Reference Reference
Reference type which respects iterator constness.
Definition: StringIterator.h:46
+
friend bool operator>(const StringIterator &lhs, const StringIterator &rhs)
Greater than operator.
Definition: StringIterator.h:88
+
friend bool operator<(const StringIterator &lhs, const StringIterator &rhs)
Less than operator.
Definition: StringIterator.h:90
+
StringIterator & operator++()
Iterates to the next element (prefix)
Definition: StringIterator.h:111
+
typename IteratorTraits< StringIterator >::Pointer Pointer
Pointer type which respects iterator constness.
Definition: StringIterator.h:44
+
friend bool operator<=(const StringIterator &lhs, const StringIterator &rhs)
Less than or equal to operator.
Definition: StringIterator.h:94
+
StringIterator & operator+=(int n)
Compound addition operator.
Definition: StringIterator.h:149
+
StringIterator operator+(int n) const
Addition operator.
Definition: StringIterator.h:165
+
StringIterator & operator--()
Iterates to the previous element (prefix)
Definition: StringIterator.h:130
+
friend bool operator!=(const StringIterator &lhs, const StringIterator &rhs)
Inequality operator.
Definition: StringIterator.h:85
+
friend int operator-(const StringIterator &lhs, const StringIterator &rhs)
Pointer subtraction operator.
Definition: StringIterator.h:77
+
static RandomAccessIteratorTag IteratorCategory()
Type trait for iterator category.
Definition: StringIterator.h:21
+
char ValueType
Type of the values deferenced by the iterator.
Definition: StringIterator.h:15
+
char & Reference
Reference to the type of the values deferenced by the iterator.
Definition: StringIterator.h:19
+
char * Pointer
Pointer to the type of the values deferenced by the iterator.
Definition: StringIterator.h:17
+
char ValueType
Type of the values deferenced by the iterator (never const)
Definition: StringIterator.h:29
+
static RandomAccessIteratorTag IteratorCategory()
Type trait for iterator category.
Definition: StringIterator.h:35
+
const char & Reference
Reference to the type of the values deferenced by the iterator.
Definition: StringIterator.h:33
+
const char * Pointer
Pointer to the type of the values deferenced by the iterator.
Definition: StringIterator.h:31
+
Base iterator traits structure.
Definition: iterator.h:19
+
Dispatching tag for iterators that can jump arbitrary distances in both ways.
Definition: iterator.h:14
+
+ + + + diff --git a/master/_text_node_8h_source.html b/master/_text_node_8h_source.html new file mode 100644 index 0000000000..7e5b69b89b --- /dev/null +++ b/master/_text_node_8h_source.html @@ -0,0 +1,225 @@ + + + + + + + +nCine: include/ncine/TextNode.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
TextNode.h
+
+
+
1 #ifndef CLASS_NCINE_TEXTNODE
+
2 #define CLASS_NCINE_TEXTNODE
+
3 
+
4 #include "DrawableNode.h"
+
5 #include "Font.h"
+
6 #include "Color.h"
+
7 #include <nctl/Array.h>
+
8 #include <nctl/String.h>
+
9 
+
10 namespace ncine {
+
11 
+
12 class GLUniformBlockCache;
+
13 class FontGlyph;
+
14 
+
16 class DLL_PUBLIC TextNode : public DrawableNode
+
17 {
+
18  public:
+
20 
+
22  static const unsigned int DefaultStringLength = 256;
+
23 
+
25 
+
26  enum class Alignment
+
27  {
+
28  LEFT,
+
29  CENTER,
+
30  RIGHT
+
31  };
+
32 
+
33  TextNode();
+
34  explicit TextNode(unsigned int maxStringLength);
+
35  TextNode(SceneNode *parent, Font *font);
+
36  TextNode(SceneNode *parent, Font *font, unsigned int maxStringLength);
+
37 
+
39  TextNode(TextNode &&) = default;
+
41  TextNode &operator=(TextNode &&) = default;
+
42 
+
44  inline TextNode clone() const { return TextNode(*this); }
+
45 
+
47  float width() const override;
+
49  float height() const override;
+
51  float absWidth() const override;
+
53  float absHeight() const override;
+
54 
+
56  inline const Font *font() const { return font_; }
+
58  void setFont(Font *font);
+
59 
+
61  Font::RenderMode renderMode() const;
+
63  void setRenderMode(Font::RenderMode renderMode);
+
64 
+
66  inline bool withKerning() const { return withKerning_; }
+
68  void enableKerning(bool withKerning);
+
70  inline Alignment alignment() const { return alignment_; }
+
72  void setAlignment(Alignment alignment);
+
73 
+
75  inline float lineHeight() const { return lineHeight_; }
+
77  inline float absLineHeight() const { return lineHeight_ * absScaleFactor_.y; }
+
79  inline void setLineHeight(float lineHeight) { lineHeight_ = lineHeight; }
+
80 
+
82  inline const nctl::String &string() const { return string_; }
+
84  inline nctl::String &string() { return string_; }
+
86  void setString(const nctl::String &string);
+
88  void setString(const char *string);
+
89 
+
91  static Vector2f calculateBoundaries(const Font &font, bool withKerning, const nctl::String &string);
+
92 
+
93  void transform() override;
+
94  bool draw(RenderQueue &renderQueue) override;
+
95 
+
96  inline static ObjectType sType() { return ObjectType::TEXTNODE; }
+
97 
+
98  protected:
+
100  TextNode(const TextNode &other);
+
101 
+
102  private:
+
104  struct Vertex
+
105  {
+
106  float x, y;
+
107  float u, v;
+
108 
+
109  Vertex()
+
110  : x(0.0f), y(0.0f), u(0.0f), v(0.0f) {}
+
111  Vertex(float xx, float yy, float uu, float vv)
+
112  : x(xx), y(yy), u(uu), v(vv) {}
+
113  };
+
114 
+
116  enum class Degenerate
+
117  {
+
118  NONE,
+
119  START,
+
120  START_END,
+
121  END
+
122  };
+
123 
+
125  nctl::String string_;
+
127  bool dirtyDraw_;
+
129  mutable bool dirtyBoundaries_;
+
131  bool withKerning_;
+
133  Font *font_;
+
135  nctl::Array<Vertex> interleavedVertices_;
+
136 
+
138  mutable float xAdvance_;
+
140  mutable float yAdvance_;
+
142  mutable nctl::Array<float> lineLengths_;
+
144  Alignment alignment_;
+
146  float lineHeight_;
+
147 
+
148  GLUniformBlockCache *instanceBlock_;
+
149 
+
151  TextNode &operator=(const TextNode &) = delete;
+
152 
+
154  void init();
+
155 
+
157  void calculateBoundaries() const;
+
159  float calculateAlignment(unsigned int lineIndex) const;
+
161  void processGlyph(const FontGlyph *glyph, Degenerate degen);
+
162 
+
163  void shaderHasChanged() override;
+
164 
+
165  void updateRenderCommand() override;
+
166 };
+
167 
+
168 }
+
169 
+
170 #endif
+
A class for objects that can be drawn through the render queue.
Definition: DrawableNode.h:14
+
A class holding the font and glyphs information needed to render text.
Definition: Font.h:16
+
RenderMode
The available modes for text nodes rendering.
Definition: Font.h:21
+
The base class for the transformation nodes hierarchy.
Definition: SceneNode.h:19
+
A scene node to draw a text label.
Definition: TextNode.h:17
+
TextNode(TextNode &&)=default
Default move constructor.
+
float absLineHeight() const
Gets the text node line height multiplied by the absolute vertical scale factor.
Definition: TextNode.h:77
+
bool withKerning() const
Returns true if kerning is enabled for this node rendering.
Definition: TextNode.h:66
+
float lineHeight() const
Gets the text node line height.
Definition: TextNode.h:75
+
const Font * font() const
Gets the font object used by the text node.
Definition: TextNode.h:56
+
void setLineHeight(float lineHeight)
Sets the text node line height.
Definition: TextNode.h:79
+
TextNode & operator=(TextNode &&)=default
Default move assignment operator.
+
nctl::String & string()
Gets the string to render.
Definition: TextNode.h:84
+
const nctl::String & string() const
Gets the constant string to render.
Definition: TextNode.h:82
+
Alignment alignment() const
Gets the horizontal text alignment of multiple lines.
Definition: TextNode.h:70
+
Alignment
Horizontal alignment modes for text made of multiple lines.
Definition: TextNode.h:27
+
TextNode clone() const
Returns a copy of this object.
Definition: TextNode.h:44
+ + +
A basic string class made of chars.
Definition: String.h:23
+
+ + + + diff --git a/master/_texture_8h_source.html b/master/_texture_8h_source.html new file mode 100644 index 0000000000..1e49108c49 --- /dev/null +++ b/master/_texture_8h_source.html @@ -0,0 +1,243 @@ + + + + + + + +nCine: include/ncine/Texture.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Texture.h
+
+
+
1 #ifndef CLASS_NCINE_TEXTURE
+
2 #define CLASS_NCINE_TEXTURE
+
3 
+
4 #include "Object.h"
+
5 #include "Rect.h"
+
6 #include "Color.h"
+
7 #include "Colorf.h"
+
8 
+
9 namespace ncine {
+
10 
+
11 class ITextureLoader;
+
12 class GLTexture;
+
13 
+
15 class DLL_PUBLIC Texture : public Object
+
16 {
+
17  public:
+
19  enum class Format
+
20  {
+
21  R8,
+
22  RG8,
+
23  RGB8,
+
24  RGBA8,
+
25  UNKNOWN
+
26  };
+
27 
+
29  enum class Filtering
+
30  {
+
31  NEAREST,
+
32  LINEAR,
+
33  NEAREST_MIPMAP_NEAREST,
+
34  LINEAR_MIPMAP_NEAREST,
+
35  NEAREST_MIPMAP_LINEAR,
+
36  LINEAR_MIPMAP_LINEAR
+
37  };
+
38 
+
40  enum class Wrap
+
41  {
+
42  CLAMP_TO_EDGE,
+
43  MIRRORED_REPEAT,
+
44  REPEAT
+
45  };
+
46 
+
48  Texture();
+
49 
+
51  Texture(const char *name, Format format, int mipMapCount, int width, int height);
+
53  Texture(const char *name, Format format, int mipMapCount, Vector2i size);
+
55  Texture(const char *name, Format format, int width, int height);
+
57  Texture(const char *name, Format format, Vector2i size);
+
58 
+
60  Texture(const char *bufferName, const unsigned char *bufferPtr, unsigned long int bufferSize);
+
62  explicit Texture(const char *filename);
+
63 
+
64  ~Texture() override;
+
65 
+ + +
70 
+
72  void init(const char *name, Format format, int mipMapCount, int width, int height);
+
74  void init(const char *name, Format format, int mipMapCount, Vector2i size);
+
76  void init(const char *name, Format format, int width, int height);
+
78  void init(const char *name, Format format, Vector2i size);
+
79 
+
80  bool loadFromMemory(const char *bufferName, const unsigned char *bufferPtr, unsigned long int bufferSize);
+
81  bool loadFromFile(const char *filename);
+
82 
+
84  bool loadFromTexels(const unsigned char *bufferPtr);
+
86  bool loadFromTexels(const unsigned char *bufferPtr, unsigned int x, unsigned int y, unsigned int width, unsigned int height);
+
88  bool loadFromTexels(const unsigned char *bufferPtr, Recti region);
+
90  bool loadFromTexels(const unsigned char *bufferPtr, unsigned int level, unsigned int x, unsigned int y, unsigned int width, unsigned int height);
+
92  bool loadFromTexels(const unsigned char *bufferPtr, unsigned int level, Recti region);
+
93 
+
95  bool saveToMemory(unsigned char *bufferPtr);
+
97  bool saveToMemory(unsigned char *bufferPtr, unsigned int level);
+
98 
+
100  inline int width() const { return width_; }
+
102  inline int height() const { return height_; }
+
104  inline int mipMapLevels() const { return mipMapLevels_; }
+
106  inline Vector2i size() const { return Vector2i(width_, height_); }
+
108  inline Recti rect() const { return Recti(0, 0, width_, height_); }
+
109 
+
111  inline bool isCompressed() const { return isCompressed_; }
+
113  inline Format format() const { return format_; }
+
115  unsigned int numChannels() const;
+
117  inline unsigned long dataSize() const { return dataSize_; }
+
118 
+
120  inline Filtering minFiltering() const { return minFiltering_; }
+
122  inline Filtering magFiltering() const { return magFiltering_; }
+
124  inline Wrap wrap() const { return wrapMode_; }
+
126  void setMinFiltering(Filtering filter);
+
128  void setMagFiltering(Filtering filter);
+
130  void setWrap(Wrap wrapMode);
+
131 
+
133  inline bool isChromaKeyEnabled() const { return isChromaKeyEnabled_; }
+
135  inline Color chromaKeyColor() const { return chromaKeyColor_; }
+
136 
+
138  inline void setChromaKeyEnabled(bool chromaKeyEnabled) { isChromaKeyEnabled_ = chromaKeyEnabled; }
+
140  inline void setChromaKeyColor(const Color &chromaKeyColor) { chromaKeyColor_ = chromaKeyColor; }
+
142  inline void setChromaKeyColor(const Colorf &chromaKeyColor) { chromaKeyColor_ = chromaKeyColor; }
+
143 
+
145  void setGLTextureLabel(const char *label);
+
146 
+
148  void *guiTexId() const;
+
149 
+
150  inline static ObjectType sType() { return ObjectType::TEXTURE; }
+
151 
+
152  private:
+
153  nctl::UniquePtr<GLTexture> glTexture_;
+
154  int width_;
+
155  int height_;
+
156  int mipMapLevels_;
+
157  bool isCompressed_;
+
158  Format format_;
+
159  unsigned long dataSize_;
+
160 
+
161  Filtering minFiltering_;
+
162  Filtering magFiltering_;
+
163  Wrap wrapMode_;
+
164 
+
165  bool isChromaKeyEnabled_;
+
166  Color chromaKeyColor_;
+
167 
+
169  Texture(const Texture &) = delete;
+
171  Texture &operator=(const Texture &) = delete;
+
172 
+
174  void initialize(const ITextureLoader &texLoader);
+
176  void load(const ITextureLoader &texLoader);
+
177 
+
178  friend class Material;
+
179  friend class Viewport;
+
180 };
+
181 
+
182 }
+
183 
+
184 #endif
+
A four channels unsigned char color.
Definition: Color.h:12
+
A four channels normalized float color.
Definition: Colorf.h:13
+
Static RRTI and identification index.
Definition: Object.h:10
+ +
Texture class.
Definition: Texture.h:16
+
Vector2i size() const
Returns texture size.
Definition: Texture.h:106
+
Color chromaKeyColor() const
Returns the color treated as transparent when loading a texture.
Definition: Texture.h:135
+
Format
Texture formats.
Definition: Texture.h:20
+
Format format() const
Returns the texture data format.
Definition: Texture.h:113
+
int width() const
Returns texture width.
Definition: Texture.h:100
+
Recti rect() const
Returns texture rectangle.
Definition: Texture.h:108
+
unsigned long dataSize() const
Returns the amount of video memory needed to load the texture.
Definition: Texture.h:117
+
Wrap wrap() const
Returns texture wrap for both s and t coordinates.
Definition: Texture.h:124
+
Texture(Texture &&)
Default move constructor.
+
Texture & operator=(Texture &&)
Default move assignment operator.
+
void setChromaKeyColor(const Color &chromaKeyColor)
Sets the color to be treated as transparent when loading a texture.
Definition: Texture.h:140
+
void setChromaKeyEnabled(bool chromaKeyEnabled)
Sets the chroma key transparency state to use when loading.
Definition: Texture.h:138
+
Filtering
Texture filtering modes.
Definition: Texture.h:30
+
bool isCompressed() const
Returns true if the texture holds compressed data.
Definition: Texture.h:111
+
Filtering minFiltering() const
Returns the texture filtering for minification.
Definition: Texture.h:120
+
bool isChromaKeyEnabled() const
Returns true if chroma key transparency will be used when loading.
Definition: Texture.h:133
+
Filtering magFiltering() const
Returns the texture filtering for magnification.
Definition: Texture.h:122
+
void setChromaKeyColor(const Colorf &chromaKeyColor)
Sets the color to be treated as transparent when loading a texture, using a Colorf
Definition: Texture.h:142
+
Wrap
Texture wrap modes.
Definition: Texture.h:41
+
int mipMapLevels() const
Returns texture MIP map levels.
Definition: Texture.h:104
+
int height() const
Returns texture height.
Definition: Texture.h:102
+ + +
+ + + + diff --git a/master/_texture_saver_png_8h_source.html b/master/_texture_saver_png_8h_source.html new file mode 100644 index 0000000000..6c0c71180d --- /dev/null +++ b/master/_texture_saver_png_8h_source.html @@ -0,0 +1,114 @@ + + + + + + + +nCine: include/ncine/TextureSaverPng.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
TextureSaverPng.h
+
+
+
1 #ifndef CLASS_NCINE_TEXTURESAVERPNG
+
2 #define CLASS_NCINE_TEXTURESAVERPNG
+
3 
+
4 #include "ITextureSaver.h"
+
5 
+
6 namespace ncine {
+
7 
+
9 class DLL_PUBLIC TextureSaverPng : public ITextureSaver
+
10 {
+
11  public:
+ +
13  {
+ +
15  : title(nullptr) {}
+
16 
+
17  char *title;
+
18  };
+
19 
+
20  bool saveToFile(const Properties &properties, const char *filename) override;
+
21  bool saveToFile(const Properties &properties, nctl::UniquePtr<IFile> fileHandle) override;
+
22 
+
23  bool saveToFile(const Properties &properties, const PngProperties &pngProperties, const char *filename);
+
24  bool saveToFile(const Properties &properties, const PngProperties &pngProperties, nctl::UniquePtr<IFile> fileHandle);
+
25 };
+
26 
+
27 }
+
28 
+
29 #endif
+
Texture saver interface class.
Definition: ITextureSaver.h:13
+
PNG texture saver.
Definition: TextureSaverPng.h:10
+
A unique pointer implementation.
Definition: UniquePtr.h:118
+
Definition: ITextureSaver.h:23
+
Definition: TextureSaverPng.h:13
+
+ + + + diff --git a/master/_texture_saver_web_p_8h_source.html b/master/_texture_saver_web_p_8h_source.html new file mode 100644 index 0000000000..0c9b11a04a --- /dev/null +++ b/master/_texture_saver_web_p_8h_source.html @@ -0,0 +1,115 @@ + + + + + + + +nCine: include/ncine/TextureSaverWebP.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
TextureSaverWebP.h
+
+
+
1 #ifndef CLASS_NCINE_TEXTURESAVERWEBP
+
2 #define CLASS_NCINE_TEXTURESAVERWEBP
+
3 
+
4 #include "ITextureSaver.h"
+
5 
+
6 namespace ncine {
+
7 
+
9 class DLL_PUBLIC TextureSaverWebP : public ITextureSaver
+
10 {
+
11  public:
+ +
13  {
+ +
15  : quality(75.0f), lossless(false) {}
+
16 
+
17  float quality;
+
18  bool lossless;
+
19  };
+
20 
+
21  bool saveToFile(const Properties &properties, const char *filename) override;
+
22  bool saveToFile(const Properties &properties, nctl::UniquePtr<IFile> fileHandle) override;
+
23 
+
24  bool saveToFile(const Properties &properties, const WebPProperties &webpProperties, const char *filename);
+
25  bool saveToFile(const Properties &properties, const WebPProperties &webpProperties, nctl::UniquePtr<IFile> fileHandle);
+
26 };
+
27 
+
28 }
+
29 
+
30 #endif
+
Texture saver interface class.
Definition: ITextureSaver.h:13
+
WebP texture saver.
Definition: TextureSaverWebP.h:10
+
A unique pointer implementation.
Definition: UniquePtr.h:118
+
Definition: ITextureSaver.h:23
+
Definition: TextureSaverWebP.h:13
+
+ + + + diff --git a/master/_time_stamp_8h_source.html b/master/_time_stamp_8h_source.html new file mode 100644 index 0000000000..7ffcbf5e20 --- /dev/null +++ b/master/_time_stamp_8h_source.html @@ -0,0 +1,148 @@ + + + + + + + +nCine: include/ncine/TimeStamp.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
TimeStamp.h
+
+
+
1 #ifndef CLASS_NCINE_TIMESTAMP
+
2 #define CLASS_NCINE_TIMESTAMP
+
3 
+
4 #include <cstdint>
+
5 #include "common_defines.h"
+
6 
+
7 namespace ncine {
+
8 
+
10 class DLL_PUBLIC TimeStamp
+
11 {
+
12  public:
+
13  TimeStamp();
+
14 
+
16  inline static TimeStamp now() { return TimeStamp(); }
+
17 
+
18  bool operator>(const TimeStamp &other) const;
+
19  bool operator<(const TimeStamp &other) const;
+
20  TimeStamp &operator+=(const TimeStamp &other);
+
21  TimeStamp &operator-=(const TimeStamp &other);
+
22  TimeStamp operator+(const TimeStamp &other) const;
+
23  TimeStamp operator-(const TimeStamp &other) const;
+
24 
+
26  TimeStamp timeSince() const;
+
27 
+
29  float secondsSince() const;
+
31  double secondsDoubleSince() const;
+
32 
+
34  float millisecondsSince() const;
+
36  double millisecondsDoubleSince() const;
+
37 
+
39  float microsecondsSince() const;
+
41  double microsecondsDoubleSince() const;
+
42 
+
44  float nanosecondsSince() const;
+
46  double nanosecondsDoubleSince() const;
+
47 
+
49  inline uint64_t ticks() const { return counter_; }
+
50 
+
52  float seconds() const;
+
54  double secondsDouble() const;
+
55 
+
57  float milliseconds() const;
+
59  double millisecondsDouble() const;
+
60 
+
62  float microseconds() const;
+
64  double microsecondsDouble() const;
+
65 
+
67  float nanoseconds() const;
+
69  double nanosecondsDouble() const;
+
70 
+
71  private:
+
72  uint64_t counter_;
+
73 
+
74  explicit TimeStamp(uint64_t counter)
+
75  : counter_(counter) {}
+
76 
+
77 #ifdef WITH_LUA
+
78  friend class LuaTimeStamp;
+
79 #endif
+
80 };
+
81 
+
82 }
+
83 
+
84 #endif
+
A class representing a point in time or a duration.
Definition: TimeStamp.h:11
+
static TimeStamp now()
Returns a new time stamp initialized now.
Definition: TimeStamp.h:16
+
uint64_t ticks() const
Returns the timestamp counter value (the number of ticks elapsed until now)
Definition: TimeStamp.h:49
+
+ + + + diff --git a/master/_timer_8h_source.html b/master/_timer_8h_source.html new file mode 100644 index 0000000000..dd4d30368d --- /dev/null +++ b/master/_timer_8h_source.html @@ -0,0 +1,116 @@ + + + + + + + +nCine: include/ncine/Timer.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Timer.h
+
+
+
1 #ifndef CLASS_NCINE_TIMER
+
2 #define CLASS_NCINE_TIMER
+
3 
+
4 #include <cstdint>
+
5 #include "common_defines.h"
+
6 
+
7 namespace ncine {
+
8 
+
10 class DLL_PUBLIC Timer
+
11 {
+
12  public:
+
13  Timer();
+
14 
+
16  void start();
+
18  void stop();
+
20  inline void reset() { accumulatedTime_ = 0ULL; }
+
22  inline bool isRunning() const { return isRunning_; }
+
23 
+
25  float interval() const;
+
27  float total() const;
+
28 
+
30  static void sleep(unsigned int milliseconds);
+
31 
+
32  private:
+
33  bool isRunning_;
+
35  uint64_t startTime_;
+
37  uint64_t accumulatedTime_;
+
38 };
+
39 
+
40 }
+
41 
+
42 #endif
+
Basic timer and synchronization class.
Definition: Timer.h:11
+
bool isRunning() const
Returns true if the timer is running.
Definition: Timer.h:22
+
void reset()
Resets the accumulated time.
Definition: Timer.h:20
+
+ + + + diff --git a/master/_unique_ptr_8h_source.html b/master/_unique_ptr_8h_source.html new file mode 100644 index 0000000000..32d9b2f262 --- /dev/null +++ b/master/_unique_ptr_8h_source.html @@ -0,0 +1,462 @@ + + + + + + + +nCine: include/nctl/UniquePtr.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
UniquePtr.h
+
+
+
1 #ifndef CLASS_NCTL_UNIQUEPTR
+
2 #define CLASS_NCTL_UNIQUEPTR
+
3 
+
4 #include "utility.h"
+
5 
+
6 #include <ncine/config.h>
+
7 #if NCINE_WITH_ALLOCATORS
+
8  #include "AllocManager.h"
+
9  #include "IAllocator.h"
+
10 #endif
+
11 
+
12 using nullptr_t = decltype(nullptr);
+
13 
+
14 namespace nctl {
+
15 
+
16 namespace detail {
+
17 
+
19 
+
20  template <class T1, class T2, bool value>
+
21  struct PairImpl
+
22  {
+
23  T1 first;
+
24  T2 second;
+
25 
+
26  PairImpl(T1 ff, T2 ss)
+
27  : first(ff), second(ss) {}
+
28  PairImpl(const PairImpl &other)
+
29  : first(other.first), second(other.second) {}
+
30 
+
31  inline void invokeSecond(T1 ff) { second.operator()(ff); }
+
32  inline void swapSecond(PairImpl &other) { nctl::swap(second, other.second); }
+
33  };
+
34 
+
36  template <class T1, class T2>
+
37  struct PairImpl<T1, T2, true>
+
38  {
+
39  T1 first;
+
40 
+
41  explicit PairImpl(T1 ff)
+
42  : first(ff) {}
+
43  PairImpl(T1 ff, T2 ss)
+
44  : first(ff) {}
+
45  PairImpl(const PairImpl &other)
+
46  : first(other.first) {}
+
47 
+
48  inline void invokeSecond(T1 ff)
+
49  {
+
50  T2 second;
+
51  second.operator()(ff);
+
52  }
+
53  inline void swapSecond(PairImpl &other) {}
+
54  };
+
55 
+
56  template <class T1, class T2>
+ +
58 
+
59 }
+
60 
+
61 #if !NCINE_WITH_ALLOCATORS
+
62 template <class T>
+ +
64 {
+
65  public:
+
66  void operator()(T *ptr) const { delete ptr; }
+
67 };
+
68 
+
69 template <class T>
+
70 class DefaultDelete<T[]>
+
71 {
+
72  public:
+
73  void operator()(T *ptr) const { delete[] ptr; }
+
74 };
+
75 #else
+
76 template <class T>
+
77 class DefaultDelete
+
78 {
+
79  public:
+
80  void operator()(T *ptr) const { theDefaultAllocator().deleteObject(ptr); }
+
81 };
+
82 
+
83 template <class T>
+
84 class DefaultDelete<T[]>
+
85 {
+
86  public:
+
87  void operator()(T *ptr) const { theDefaultAllocator().deleteArray(ptr); }
+
88 };
+
89 
+
90 template <class T>
+
91 class AllocDelete
+
92 {
+
93  public:
+
94  AllocDelete(IAllocator *alloc)
+
95  : alloc_(alloc) {}
+
96  void operator()(T *ptr) const { alloc_->deleteObject(ptr); }
+
97 
+
98  private:
+
99  IAllocator *alloc_;
+
100 };
+
101 
+
102 template <class T>
+
103 class AllocDelete<T[]>
+
104 {
+
105  public:
+
106  AllocDelete(IAllocator *alloc)
+
107  : alloc_(alloc) {}
+
108  void operator()(T *ptr) const { alloc_->deleteArray(ptr); }
+
109 
+
110  private:
+
111  IAllocator *alloc_;
+
112 };
+
113 #endif
+
114 
+
116 template <class T, class Deleter = DefaultDelete<T>>
+ +
118 {
+
119  public:
+
120  UniquePtr()
+
121  : pair_(nullptr) {}
+
122  explicit UniquePtr(T *ptr)
+
123  : pair_(ptr) {}
+
124  UniquePtr(T *ptr, Deleter del)
+
125  : pair_(ptr, del) {}
+
126  template <class U>
+
127  explicit UniquePtr(U *ptr)
+
128  : pair_(ptr) {}
+
129  template <class U>
+
130  UniquePtr(U *ptr, Deleter del)
+
131  : pair_(ptr, del) {}
+
132  ~UniquePtr() { pair_.invokeSecond(pair_.first); }
+
133 
+
134  UniquePtr(UniquePtr &&other);
+
135  template <class U, class Deleter2> UniquePtr(UniquePtr<U, Deleter2> &&other);
+
136  UniquePtr &operator=(UniquePtr &&other);
+
137  template <class U, class Deleter2> UniquePtr &operator=(UniquePtr<U, Deleter2> &&other);
+
138 
+
139  T *release();
+
140  void reset(T *newPtr);
+
141  void reset(nullptr_t);
+
142  inline T *get() { return pair_.first; }
+
143  inline const T *get() const { return pair_.first; }
+
144 
+
145  inline T &operator*() { return *pair_.first; }
+
146  inline const T &operator*() const { return *pair_.first; }
+
147 
+
148  inline T *operator->() { return pair_.first; }
+
149  inline const T *operator->() const { return pair_.first; }
+
150 
+
151  inline operator bool() const { return pair_.first != nullptr; }
+
152 
+
153  friend inline bool operator==(const UniquePtr &x, const UniquePtr &y) { return x.get() == y.get(); }
+
154  friend inline bool operator!=(const UniquePtr &x, const UniquePtr &y) { return x.get() != y.get(); }
+
155  friend inline bool operator==(const UniquePtr &x, nullptr_t) { return x.get() == nullptr; }
+
156  friend inline bool operator==(nullptr_t, const UniquePtr &y) { return nullptr == y.get(); }
+
157  friend inline bool operator!=(const UniquePtr &x, nullptr_t) { return x.get() != nullptr; }
+
158  friend inline bool operator!=(nullptr_t, const UniquePtr &y) { return nullptr != y.get(); }
+
159 
+
160  private:
+ +
162 
+
164  UniquePtr(const UniquePtr &) = delete;
+
166  UniquePtr &operator=(const UniquePtr &) = delete;
+
167 };
+
168 
+
169 template <class T, class Deleter>
+ +
171  : pair_(other.pair_)
+
172 {
+
173  other.pair_.first = nullptr;
+
174 }
+
175 
+
176 template <class T, class Deleter>
+
177 template <class U, class Deleter2>
+
178 UniquePtr<T, Deleter>::UniquePtr(UniquePtr<U, Deleter2> &&other)
+
179  : pair_(reinterpret_cast<UniquePtr<T, Deleter> &>(other).pair_)
+
180 {
+
181  reinterpret_cast<UniquePtr<T, Deleter> &>(other).pair_.first = nullptr;
+
182 }
+
183 
+
184 template <class T, class Deleter>
+
185 UniquePtr<T, Deleter> &UniquePtr<T, Deleter>::operator=(UniquePtr &&other)
+
186 {
+
187  reset(other.release());
+
188  pair_.swapSecond(other.pair_);
+
189  return *this;
+
190 }
+
191 
+
192 template <class T, class Deleter>
+
193 template <class U, class Deleter2>
+
194 UniquePtr<T, Deleter> &UniquePtr<T, Deleter>::operator=(UniquePtr<U, Deleter2> &&other)
+
195 {
+
196  reset(other.release());
+
197  pair_.swapSecond(reinterpret_cast<UniquePtr<T, Deleter> &>(other).pair_);
+
198  return *this;
+
199 }
+
200 
+
201 template <class T, class Deleter>
+
202 T *UniquePtr<T, Deleter>::release()
+
203 {
+
204  T *oldPtr = pair_.first;
+
205  pair_.first = nullptr;
+
206  return oldPtr;
+
207 }
+
208 
+
209 template <class T, class Deleter>
+
210 void UniquePtr<T, Deleter>::reset(T *newPtr)
+
211 {
+
212  // check for self reset
+
213  if (pair_.first != newPtr)
+
214  {
+
215  T *oldPtr = pair_.first;
+
216  pair_.first = newPtr;
+
217  pair_.invokeSecond(oldPtr);
+
218  }
+
219 }
+
220 
+
221 template <class T, class Deleter>
+
222 void UniquePtr<T, Deleter>::reset(nullptr_t)
+
223 {
+
224  pair_.invokeSecond(pair_.first);
+
225  pair_.first = nullptr;
+
226 }
+
227 
+
229 template <class T, class Deleter>
+
230 class UniquePtr<T[], Deleter>
+
231 {
+
232  public:
+
233  UniquePtr()
+
234  : pair_(nullptr) {}
+
235  explicit UniquePtr(T *ptr)
+
236  : pair_(ptr) {}
+
237  UniquePtr(T *ptr, Deleter del)
+
238  : pair_(ptr, del) {}
+
239  ~UniquePtr() { pair_.invokeSecond(pair_.first); }
+
240 
+
241  UniquePtr(UniquePtr &&other);
+
242  UniquePtr &operator=(UniquePtr &&other);
+
243 
+
244  T *release();
+
245  void reset(T *newPtr);
+
246  void reset(nullptr_t);
+
247  inline T *get() { return pair_.first; }
+
248  inline const T *get() const { return pair_.first; }
+
249 
+
250  inline const T &operator[](size_t index) const { return pair_.first[index]; }
+
251  inline T &operator[](size_t index) { return pair_.first[index]; }
+
252 
+
253  inline operator bool() const { return pair_.first != nullptr; }
+
254 
+
255  friend inline bool operator==(const UniquePtr &x, const UniquePtr &y) { return x.get() == y.get(); }
+
256  friend inline bool operator!=(const UniquePtr &x, const UniquePtr &y) { return x.get() != y.get(); }
+
257  friend inline bool operator==(const UniquePtr &x, nullptr_t) { return x.get() == nullptr; }
+
258  friend inline bool operator==(nullptr_t, const UniquePtr &y) { return nullptr == y.get(); }
+
259  friend inline bool operator!=(const UniquePtr &x, nullptr_t) { return x.get() != nullptr; }
+
260  friend inline bool operator!=(nullptr_t, const UniquePtr &y) { return nullptr != y.get(); }
+
261 
+
262  private:
+ +
264 
+
266  UniquePtr(const UniquePtr &) = delete;
+
268  UniquePtr &operator=(const UniquePtr &) = delete;
+
269 };
+
270 
+
271 template <class T, class Deleter>
+ +
273  : pair_(other.pair_)
+
274 {
+
275  other.pair_.first = nullptr;
+
276 }
+
277 
+
278 template <class T, class Deleter>
+
279 UniquePtr<T[], Deleter> &UniquePtr<T[], Deleter>::operator=(UniquePtr<T[], Deleter> &&other)
+
280 {
+
281  reset(other.release());
+
282  pair_.swapSecond(other.pair_);
+
283  return *this;
+
284 }
+
285 
+
286 template <class T, class Deleter>
+
287 T *UniquePtr<T[], Deleter>::release()
+
288 {
+
289  T *oldPtr = pair_.first;
+
290  pair_.first = nullptr;
+
291  return oldPtr;
+
292 }
+
293 
+
294 template <class T, class Deleter>
+
295 void UniquePtr<T[], Deleter>::reset(T *newPtr)
+
296 {
+
297  // check for self reset
+
298  if (pair_.first != newPtr)
+
299  {
+
300  T *oldPtr = pair_.first;
+
301  pair_.first = newPtr;
+
302  pair_.invokeSecond(oldPtr);
+
303  }
+
304 }
+
305 
+
306 template <class T, class Deleter>
+
307 void UniquePtr<T[], Deleter>::reset(nullptr_t)
+
308 {
+
309  pair_.invokeSecond(pair_.first);
+
310  pair_.first = nullptr;
+
311 }
+
312 
+
313 template <class T, class Deleter = DefaultDelete<T>>
+ +
315 {
+ +
317 };
+
318 
+
319 template <class T, class Deleter>
+
320 struct MakeUniqueReturn<T[], Deleter>
+
321 {
+ +
323 };
+
324 
+
325 template <class T, class Deleter, unsigned long int size>
+
326 struct MakeUniqueReturn<T[size], Deleter>
+
327 {
+
328  struct invalid
+
329  {};
+
330 };
+
331 
+
332 #if !NCINE_WITH_ALLOCATORS
+
333 // `makeUnique()` for single objects
+
334 template <class T, class Deleter = DefaultDelete<T>, typename... Args>
+
335 typename MakeUniqueReturn<T, Deleter>::singleObject makeUnique(Args &&... args)
+
336 {
+
337  return UniquePtr<T, Deleter>(new T(nctl::forward<Args>(args)...));
+
338 }
+
339 
+
341 template <class T, class Deleter = DefaultDelete<T>>
+
342 typename MakeUniqueReturn<T, Deleter>::array makeUnique(unsigned long int size)
+
343 {
+
344  return UniquePtr<T, Deleter>(new nctl::removeExtentT<T>[size]());
+
345 }
+
346 #else
+
347 // `makeUnique()` for single objects
+
348 template <class T, class Deleter = DefaultDelete<T>, typename... Args>
+
349 typename MakeUniqueReturn<T, Deleter>::singleObject makeUnique(Args &&... args)
+
350 {
+
351  return UniquePtr<T, Deleter>(theDefaultAllocator().newObject<T>(nctl::forward<Args>(args)...));
+
352 }
+
353 
+
355 template <class T, class Deleter = DefaultDelete<T>>
+
356 typename MakeUniqueReturn<T, Deleter>::array makeUnique(unsigned long int size)
+
357 {
+
358  return UniquePtr<T, Deleter>(theDefaultAllocator().newArray<nctl::removeExtentT<T>>(size));
+
359 }
+
360 #endif
+
361 
+
363 template <class T, class Deleter, typename... Args>
+
364 typename MakeUniqueReturn<T, Deleter>::invalid makeUnique(Args &&...) = delete;
+
365 
+
366 #if NCINE_WITH_ALLOCATORS
+
368 template <class T, typename... Args>
+
369 typename MakeUniqueReturn<T, AllocDelete<T>>::singleObject allocateUnique(IAllocator &allocator, Args &&... args)
+
370 {
+
371  AllocDelete<T> deleter(&allocator);
+
372  return UniquePtr<T, AllocDelete<T>>(allocator.newObject<T>(nctl::forward<Args>(args)...), deleter);
+
373 }
+
374 
+
376 template <class T>
+
377 typename MakeUniqueReturn<T, AllocDelete<T>>::array allocateUnique(IAllocator &allocator, unsigned long int size)
+
378 {
+
379  AllocDelete<T> deleter(&allocator);
+
380  return UniquePtr<T, AllocDelete<T>>(allocator.newArray<nctl::removeExtentT<T>>(size), deleter);
+
381 }
+
382 
+
384 template <class T, class Deleter, typename... Args>
+
385 typename MakeUniqueReturn<T, Deleter>::invalid allocateUnique(Args &&...) = delete;
+
386 #endif
+
387 
+
388 }
+
389 
+
390 #endif
+
Definition: UniquePtr.h:64
+
Array specialization of the unique pointer implementation.
Definition: UniquePtr.h:231
+
A unique pointer implementation.
Definition: UniquePtr.h:118
+
Definition: UniquePtr.h:315
+
Simple pair implementation for pointer and deleter.
Definition: UniquePtr.h:22
+
+ + + + diff --git a/master/_utf8_8h_source.html b/master/_utf8_8h_source.html new file mode 100644 index 0000000000..3e94429f6b --- /dev/null +++ b/master/_utf8_8h_source.html @@ -0,0 +1,105 @@ + + + + + + + +nCine: include/nctl/Utf8.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Utf8.h
+
+
+
1 #ifndef CLASS_NCTL_UTF8
+
2 #define CLASS_NCTL_UTF8
+
3 
+
4 #include <ncine/common_defines.h>
+
5 
+
6 namespace nctl {
+
7 
+
8 namespace Utf8 {
+
9 
+
11  static const unsigned int InvalidUnicode = 0xfffd;
+
13  static const unsigned int InvalidUtf8 = 0xefbfbd;
+
14 
+
16 
+
17  DLL_PUBLIC const char *utf8ToCodePoint(const char *substring, unsigned int &codePoint, unsigned int *codeUnits);
+
19 
+
20  DLL_PUBLIC const char *utf8ToCodePoint(const char *substring, unsigned int &codePoint);
+
21 
+
23 
+
24  DLL_PUBLIC int codePointToUtf8(unsigned int codePoint, char *substring, unsigned int *codeUnits);
+
25 }
+
26 
+
27 }
+
28 
+
29 #endif
+
+ + + + diff --git a/master/_vector2_8h_source.html b/master/_vector2_8h_source.html new file mode 100644 index 0000000000..9985377dcd --- /dev/null +++ b/master/_vector2_8h_source.html @@ -0,0 +1,394 @@ + + + + + + + +nCine: include/ncine/Vector2.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Vector2.h
+
+
+
1 #ifndef CLASS_NCINE_VECTOR2
+
2 #define CLASS_NCINE_VECTOR2
+
3 
+
4 #include "common_constants.h"
+
5 
+
6 namespace ncine {
+
7 
+
9 template <class T>
+
10 class Vector2
+
11 {
+
12  public:
+
13  T x, y;
+
14 
+
15  Vector2()
+
16  : x(0), y(0) {}
+
17  explicit Vector2(T s)
+
18  : x(s), y(s) {}
+
19  Vector2(T xx, T yy)
+
20  : x(xx), y(yy) {}
+
21  Vector2(const Vector2 &other)
+
22  : x(other.x), y(other.y) {}
+
23  Vector2 &operator=(const Vector2 &other);
+
24 
+
25  void set(T xx, T yy);
+
26 
+
27  T *data();
+
28  const T *data() const;
+
29 
+
30  T &operator[](unsigned int index);
+
31  const T &operator[](unsigned int index) const;
+
32 
+
33  bool operator==(const Vector2 &v) const;
+
34  Vector2 operator-() const;
+
35 
+
36  Vector2 &operator+=(const Vector2 &v);
+
37  Vector2 &operator-=(const Vector2 &v);
+
38  Vector2 &operator*=(const Vector2 &v);
+
39  Vector2 &operator/=(const Vector2 &v);
+
40 
+
41  Vector2 &operator+=(T s);
+
42  Vector2 &operator-=(T s);
+
43  Vector2 &operator*=(T s);
+
44  Vector2 &operator/=(T s);
+
45 
+
46  Vector2 operator+(const Vector2 &v) const;
+
47  Vector2 operator-(const Vector2 &v) const;
+
48  Vector2 operator*(const Vector2 &v) const;
+
49  Vector2 operator/(const Vector2 &v) const;
+
50 
+
51  Vector2 operator+(T s) const;
+
52  Vector2 operator-(T s) const;
+
53  Vector2 operator*(T s) const;
+
54  Vector2 operator/(T s) const;
+
55 
+
56  template <class S>
+
57  friend Vector2<S> operator*(S s, const Vector2<S> &v);
+
58 
+
59  T length() const;
+
60  T sqrLength() const;
+
61  Vector2 normalized() const;
+
62  Vector2 &normalize();
+
63 
+
64  template <class S>
+
65  friend S dot(const Vector2<S> &v1, const Vector2<S> &v2);
+
66 
+
68  static const Vector2 Zero;
+
70  static const Vector2 XAxis;
+
72  static const Vector2 YAxis;
+
73 };
+
74 
+
75 using Vector2f = Vector2<float>;
+
76 using Vector2i = Vector2<int>;
+
77 
+
78 template <class T>
+
79 inline Vector2<T> &Vector2<T>::operator=(const Vector2<T> &other)
+
80 {
+
81  x = other.x;
+
82  y = other.y;
+
83 
+
84  return *this;
+
85 }
+
86 
+
87 template <class T>
+
88 inline void Vector2<T>::set(T xx, T yy)
+
89 {
+
90  x = xx;
+
91  y = yy;
+
92 }
+
93 
+
94 template <class T>
+
95 inline T *Vector2<T>::data()
+
96 {
+
97  return &x;
+
98 }
+
99 
+
100 template <class T>
+
101 inline const T *Vector2<T>::data() const
+
102 {
+
103  return &x;
+
104 }
+
105 
+
106 template <class T>
+
107 inline T &Vector2<T>::operator[](unsigned int index)
+
108 {
+
109  index = (index < 2) ? index : 1;
+
110  return (&x)[index];
+
111 }
+
112 
+
113 template <class T>
+
114 inline const T &Vector2<T>::operator[](unsigned int index) const
+
115 {
+
116  index = (index < 2) ? index : 1;
+
117  return (&x)[index];
+
118 }
+
119 
+
120 template <class T>
+
121 inline bool Vector2<T>::operator==(const Vector2 &v) const
+
122 {
+
123  return (x == v.x && y == v.y);
+
124 }
+
125 
+
126 template <class T>
+
127 inline Vector2<T> Vector2<T>::operator-() const
+
128 {
+
129  return Vector2(-x, -y);
+
130 }
+
131 
+
132 template <class T>
+
133 inline Vector2<T> &Vector2<T>::operator+=(const Vector2 &v)
+
134 {
+
135  x += v.x;
+
136  y += v.y;
+
137 
+
138  return *this;
+
139 }
+
140 
+
141 template <class T>
+
142 inline Vector2<T> &Vector2<T>::operator-=(const Vector2 &v)
+
143 {
+
144  x -= v.x;
+
145  y -= v.y;
+
146 
+
147  return *this;
+
148 }
+
149 
+
150 template <class T>
+
151 inline Vector2<T> &Vector2<T>::operator*=(const Vector2 &v)
+
152 {
+
153  x *= v.x;
+
154  y *= v.y;
+
155 
+
156  return *this;
+
157 }
+
158 
+
159 template <class T>
+
160 inline Vector2<T> &Vector2<T>::operator/=(const Vector2 &v)
+
161 {
+
162  x /= v.x;
+
163  y /= v.y;
+
164 
+
165  return *this;
+
166 }
+
167 
+
168 template <class T>
+
169 inline Vector2<T> &Vector2<T>::operator+=(T s)
+
170 {
+
171  x += s;
+
172  y += s;
+
173 
+
174  return *this;
+
175 }
+
176 
+
177 template <class T>
+
178 inline Vector2<T> &Vector2<T>::operator-=(T s)
+
179 {
+
180  x -= s;
+
181  y -= s;
+
182 
+
183  return *this;
+
184 }
+
185 
+
186 template <class T>
+
187 inline Vector2<T> &Vector2<T>::operator*=(T s)
+
188 {
+
189  x *= s;
+
190  y *= s;
+
191 
+
192  return *this;
+
193 }
+
194 
+
195 template <class T>
+
196 inline Vector2<T> &Vector2<T>::operator/=(T s)
+
197 {
+
198  x /= s;
+
199  y /= s;
+
200 
+
201  return *this;
+
202 }
+
203 
+
204 template <class T>
+
205 inline Vector2<T> Vector2<T>::operator+(const Vector2 &v) const
+
206 {
+
207  return Vector2(x + v.x,
+
208  y + v.y);
+
209 }
+
210 
+
211 template <class T>
+
212 inline Vector2<T> Vector2<T>::operator-(const Vector2 &v) const
+
213 {
+
214  return Vector2(x - v.x,
+
215  y - v.y);
+
216 }
+
217 
+
218 template <class T>
+
219 inline Vector2<T> Vector2<T>::operator*(const Vector2 &v) const
+
220 {
+
221  return Vector2(x * v.x,
+
222  y * v.y);
+
223 }
+
224 
+
225 template <class T>
+
226 inline Vector2<T> Vector2<T>::operator/(const Vector2 &v) const
+
227 {
+
228  return Vector2(x / v.x,
+
229  y / v.y);
+
230 }
+
231 
+
232 template <class T>
+
233 inline Vector2<T> Vector2<T>::operator+(T s) const
+
234 {
+
235  return Vector2(x + s,
+
236  y + s);
+
237 }
+
238 
+
239 template <class T>
+
240 inline Vector2<T> Vector2<T>::operator-(T s) const
+
241 {
+
242  return Vector2(x - s,
+
243  y - s);
+
244 }
+
245 
+
246 template <class T>
+
247 inline Vector2<T> Vector2<T>::operator*(T s) const
+
248 {
+
249  return Vector2(x * s,
+
250  y * s);
+
251 }
+
252 
+
253 template <class T>
+
254 inline Vector2<T> Vector2<T>::operator/(T s) const
+
255 {
+
256  return Vector2(x / s,
+
257  y / s);
+
258 }
+
259 
+
260 template <class S>
+
261 inline Vector2<S> operator*(S s, const Vector2<S> &v)
+
262 {
+
263  return Vector2<S>(s * v.x,
+
264  s * v.y);
+
265 }
+
266 
+
267 template <class T>
+
268 inline T Vector2<T>::length() const
+
269 {
+
270  return sqrt(x * x + y * y);
+
271 }
+
272 
+
273 template <class T>
+
274 inline T Vector2<T>::sqrLength() const
+
275 {
+
276  return x * x + y * y;
+
277 }
+
278 
+
279 template <class T>
+
280 inline Vector2<T> Vector2<T>::normalized() const
+
281 {
+
282  const T len = length();
+
283  return Vector2(x / len, y / len);
+
284 }
+
285 
+
286 template <class T>
+
287 inline Vector2<T> &Vector2<T>::normalize()
+
288 {
+
289  const T len = length();
+
290 
+
291  x /= len;
+
292  y /= len;
+
293 
+
294  return *this;
+
295 }
+
296 
+
297 template <class S>
+
298 inline S dot(const Vector2<S> &v1, const Vector2<S> &v2)
+
299 {
+
300  return static_cast<S>(v1.x * v2.x +
+
301  v1.y * v2.y);
+
302 }
+
303 
+
304 template <class T>
+
305 const Vector2<T> Vector2<T>::Zero(0, 0);
+
306 template <class T>
+
307 const Vector2<T> Vector2<T>::XAxis(1, 0);
+
308 template <class T>
+
309 const Vector2<T> Vector2<T>::YAxis(0, 1);
+
310 
+
311 }
+
312 
+
313 #endif
+
A two component vector based on templates.
Definition: Vector2.h:11
+
static const Vector2 Zero
A vector with all zero elements.
Definition: Vector2.h:68
+
static const Vector2 XAxis
A unit vector on the X axis.
Definition: Vector2.h:70
+
static const Vector2 YAxis
A unit vector on the Y axis.
Definition: Vector2.h:72
+
+ + + + diff --git a/master/_vector3_8h_source.html b/master/_vector3_8h_source.html new file mode 100644 index 0000000000..86a80e4be1 --- /dev/null +++ b/master/_vector3_8h_source.html @@ -0,0 +1,438 @@ + + + + + + + +nCine: include/ncine/Vector3.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Vector3.h
+
+
+
1 #ifndef CLASS_NCINE_VECTOR3
+
2 #define CLASS_NCINE_VECTOR3
+
3 
+
4 #include "Vector2.h"
+
5 
+
6 namespace ncine {
+
7 
+
9 template <class T>
+
10 class Vector3
+
11 {
+
12  public:
+
13  T x, y, z;
+
14 
+
15  Vector3()
+
16  : x(0), y(0), z(0) {}
+
17  explicit Vector3(T s)
+
18  : x(s), y(s), z(s) {}
+
19  Vector3(T xx, T yy, T zz)
+
20  : x(xx), y(yy), z(zz) {}
+
21  Vector3(const Vector3 &other)
+
22  : x(other.x), y(other.y), z(other.z) {}
+
23  Vector3 &operator=(const Vector3 &other);
+
24 
+
25  void set(T xx, T yy, T zz);
+
26 
+
27  T *data();
+
28  const T *data() const;
+
29 
+
30  T &operator[](unsigned int index);
+
31  const T &operator[](unsigned int index) const;
+
32 
+
33  bool operator==(const Vector3 &v) const;
+
34  Vector3 operator-() const;
+
35 
+
36  Vector3 &operator+=(const Vector3 &v);
+
37  Vector3 &operator-=(const Vector3 &v);
+
38  Vector3 &operator*=(const Vector3 &v);
+
39  Vector3 &operator/=(const Vector3 &v);
+
40 
+
41  Vector3 &operator+=(T s);
+
42  Vector3 &operator-=(T s);
+
43  Vector3 &operator*=(T s);
+
44  Vector3 &operator/=(T s);
+
45 
+
46  Vector3 operator+(const Vector3 &v) const;
+
47  Vector3 operator-(const Vector3 &v) const;
+
48  Vector3 operator*(const Vector3 &v) const;
+
49  Vector3 operator/(const Vector3 &v) const;
+
50 
+
51  Vector3 operator+(T s) const;
+
52  Vector3 operator-(T s) const;
+
53  Vector3 operator*(T s) const;
+
54  Vector3 operator/(T s) const;
+
55 
+
56  template <class S>
+
57  friend Vector3<S> operator*(S s, const Vector3<S> &v);
+
58 
+
59  T length() const;
+
60  T sqrLength() const;
+
61  Vector3 normalized() const;
+
62  Vector3 &normalize();
+
63 
+
64  Vector2<T> toVector2() const;
+
65 
+
66  template <class S>
+
67  friend S dot(const Vector3<S> &v1, const Vector3<S> &v2);
+
68  template <class S>
+
69  friend Vector3<S> cross(const Vector3<S> &v1, const Vector3<S> &v2);
+
70 
+
72  static const Vector3 Zero;
+
74  static const Vector3 XAxis;
+
76  static const Vector3 YAxis;
+
78  static const Vector3 ZAxis;
+
79 };
+
80 
+
81 using Vector3f = Vector3<float>;
+
82 using Vector3i = Vector3<int>;
+
83 
+
84 template <class T>
+
85 inline Vector3<T> &Vector3<T>::operator=(const Vector3<T> &other)
+
86 {
+
87  x = other.x;
+
88  y = other.y;
+
89  z = other.z;
+
90 
+
91  return *this;
+
92 }
+
93 
+
94 template <class T>
+
95 inline void Vector3<T>::set(T xx, T yy, T zz)
+
96 {
+
97  x = xx;
+
98  y = yy;
+
99  z = zz;
+
100 }
+
101 
+
102 template <class T>
+
103 inline T *Vector3<T>::data()
+
104 {
+
105  return &x;
+
106 }
+
107 
+
108 template <class T>
+
109 inline const T *Vector3<T>::data() const
+
110 {
+
111  return &x;
+
112 }
+
113 
+
114 template <class T>
+
115 inline T &Vector3<T>::operator[](unsigned int index)
+
116 {
+
117  index = (index < 3) ? index : 2;
+
118  return (&x)[index];
+
119 }
+
120 
+
121 template <class T>
+
122 inline const T &Vector3<T>::operator[](unsigned int index) const
+
123 {
+
124  index = (index < 3) ? index : 2;
+
125  return (&x)[index];
+
126 }
+
127 
+
128 template <class T>
+
129 inline bool Vector3<T>::operator==(const Vector3 &v) const
+
130 {
+
131  return (x == v.x && y == v.y && z == v.z);
+
132 }
+
133 
+
134 template <class T>
+
135 inline Vector3<T> Vector3<T>::operator-() const
+
136 {
+
137  return Vector3(-x, -y, -z);
+
138 }
+
139 
+
140 template <class T>
+
141 inline Vector3<T> &Vector3<T>::operator+=(const Vector3 &v)
+
142 {
+
143  x += v.x;
+
144  y += v.y;
+
145  z += v.z;
+
146 
+
147  return *this;
+
148 }
+
149 
+
150 template <class T>
+
151 inline Vector3<T> &Vector3<T>::operator-=(const Vector3 &v)
+
152 {
+
153  x -= v.x;
+
154  y -= v.y;
+
155  z -= v.z;
+
156 
+
157  return *this;
+
158 }
+
159 
+
160 template <class T>
+
161 inline Vector3<T> &Vector3<T>::operator*=(const Vector3 &v)
+
162 {
+
163  x *= v.x;
+
164  y *= v.y;
+
165  z *= v.z;
+
166 
+
167  return *this;
+
168 }
+
169 
+
170 template <class T>
+
171 inline Vector3<T> &Vector3<T>::operator/=(const Vector3 &v)
+
172 {
+
173  x /= v.x;
+
174  y /= v.y;
+
175  z /= v.z;
+
176 
+
177  return *this;
+
178 }
+
179 
+
180 template <class T>
+
181 inline Vector3<T> &Vector3<T>::operator+=(T s)
+
182 {
+
183  x += s;
+
184  y += s;
+
185  z += s;
+
186 
+
187  return *this;
+
188 }
+
189 
+
190 template <class T>
+
191 inline Vector3<T> &Vector3<T>::operator-=(T s)
+
192 {
+
193  x -= s;
+
194  y -= s;
+
195  z -= s;
+
196 
+
197  return *this;
+
198 }
+
199 
+
200 template <class T>
+
201 inline Vector3<T> &Vector3<T>::operator*=(T s)
+
202 {
+
203  x *= s;
+
204  y *= s;
+
205  z *= s;
+
206 
+
207  return *this;
+
208 }
+
209 
+
210 template <class T>
+
211 inline Vector3<T> &Vector3<T>::operator/=(T s)
+
212 {
+
213  x /= s;
+
214  y /= s;
+
215  z /= s;
+
216 
+
217  return *this;
+
218 }
+
219 
+
220 template <class T>
+
221 inline Vector3<T> Vector3<T>::operator+(const Vector3 &v) const
+
222 {
+
223  return Vector3(x + v.x,
+
224  y + v.y,
+
225  z + v.z);
+
226 }
+
227 
+
228 template <class T>
+
229 inline Vector3<T> Vector3<T>::operator-(const Vector3 &v) const
+
230 {
+
231  return Vector3(x - v.x,
+
232  y - v.y,
+
233  z - v.z);
+
234 }
+
235 
+
236 template <class T>
+
237 inline Vector3<T> Vector3<T>::operator*(const Vector3 &v) const
+
238 {
+
239  return Vector3(x * v.x,
+
240  y * v.y,
+
241  z * v.z);
+
242 }
+
243 
+
244 template <class T>
+
245 inline Vector3<T> Vector3<T>::operator/(const Vector3 &v) const
+
246 {
+
247  return Vector3(x / v.x,
+
248  y / v.y,
+
249  z / v.z);
+
250 }
+
251 
+
252 template <class T>
+
253 inline Vector3<T> Vector3<T>::operator+(T s) const
+
254 {
+
255  return Vector3(x + s,
+
256  y + s,
+
257  z + s);
+
258 }
+
259 
+
260 template <class T>
+
261 inline Vector3<T> Vector3<T>::operator-(T s) const
+
262 {
+
263  return Vector3(x - s,
+
264  y - s,
+
265  z - s);
+
266 }
+
267 
+
268 template <class T>
+
269 inline Vector3<T> Vector3<T>::operator*(T s) const
+
270 {
+
271  return Vector3(x * s,
+
272  y * s,
+
273  z * s);
+
274 }
+
275 
+
276 template <class T>
+
277 inline Vector3<T> Vector3<T>::operator/(T s) const
+
278 {
+
279  return Vector3(x / s,
+
280  y / s,
+
281  z / s);
+
282 }
+
283 
+
284 template <class S>
+
285 inline Vector3<S> operator*(S s, const Vector3<S> &v)
+
286 {
+
287  return Vector3<S>(s * v.x,
+
288  s * v.y,
+
289  s * v.z);
+
290 }
+
291 
+
292 template <class T>
+
293 inline T Vector3<T>::length() const
+
294 {
+
295  return sqrt(x * x + y * y + z * z);
+
296 }
+
297 
+
298 template <class T>
+
299 inline T Vector3<T>::sqrLength() const
+
300 {
+
301  return x * x + y * y + z * z;
+
302 }
+
303 
+
304 template <class T>
+
305 inline Vector3<T> Vector3<T>::normalized() const
+
306 {
+
307  const T len = length();
+
308  return Vector3(x / len, y / len, z / len);
+
309 }
+
310 
+
311 template <class T>
+
312 inline Vector3<T> &Vector3<T>::normalize()
+
313 {
+
314  const T len = length();
+
315 
+
316  x /= len;
+
317  y /= len;
+
318  z /= len;
+
319 
+
320  return *this;
+
321 }
+
322 
+
323 template <class T>
+
324 inline Vector2<T> Vector3<T>::toVector2() const
+
325 {
+
326  return Vector2<T>(x, y);
+
327 }
+
328 
+
329 template <class S>
+
330 inline S dot(const Vector3<S> &v1, const Vector3<S> &v2)
+
331 {
+
332  return static_cast<S>(v1.x * v2.x +
+
333  v1.y * v2.y +
+
334  v1.z * v2.z);
+
335 }
+
336 
+
337 template <class S>
+
338 inline Vector3<S> cross(const Vector3<S> &v1, const Vector3<S> &v2)
+
339 {
+
340  return Vector3<S>(v1.y * v2.z - v1.z * v2.y,
+
341  v1.z * v2.x - v1.x * v2.z,
+
342  v1.x * v2.y - v1.y * v2.x);
+
343 }
+
344 
+
345 template <class T>
+
346 const Vector3<T> Vector3<T>::Zero(0, 0, 0);
+
347 template <class T>
+
348 const Vector3<T> Vector3<T>::XAxis(1, 0, 0);
+
349 template <class T>
+
350 const Vector3<T> Vector3<T>::YAxis(0, 1, 0);
+
351 template <class T>
+
352 const Vector3<T> Vector3<T>::ZAxis(0, 0, 1);
+
353 
+
354 }
+
355 
+
356 #endif
+
A two component vector based on templates.
Definition: Vector2.h:11
+
A three component vector based on templates.
Definition: Vector3.h:11
+
static const Vector3 Zero
A vector with all zero elements.
Definition: Vector3.h:72
+
static const Vector3 ZAxis
A unit vector on the Z axis.
Definition: Vector3.h:78
+
static const Vector3 YAxis
A unit vector on the Y axis.
Definition: Vector3.h:76
+
static const Vector3 XAxis
A unit vector on the X axis.
Definition: Vector3.h:74
+
+ + + + diff --git a/master/_vector4_8h_source.html b/master/_vector4_8h_source.html new file mode 100644 index 0000000000..6f86105f81 --- /dev/null +++ b/master/_vector4_8h_source.html @@ -0,0 +1,462 @@ + + + + + + + +nCine: include/ncine/Vector4.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Vector4.h
+
+
+
1 #ifndef CLASS_NCINE_VECTOR4
+
2 #define CLASS_NCINE_VECTOR4
+
3 
+
4 #include "Vector2.h"
+
5 #include "Vector3.h"
+
6 
+
7 namespace ncine {
+
8 
+
10 template <class T>
+
11 class Vector4
+
12 {
+
13  public:
+
14  T x, y, z, w;
+
15 
+
16  Vector4()
+
17  : x(0), y(0), z(0), w(0) {}
+
18  explicit Vector4(T s)
+
19  : x(s), y(s), z(s), w(s) {}
+
20  Vector4(T xx, T yy, T zz, T ww)
+
21  : x(xx), y(yy), z(zz), w(ww) {}
+
22  Vector4(const Vector4 &other)
+
23  : x(other.x), y(other.y), z(other.z), w(other.w) {}
+
24  Vector4 &operator=(const Vector4 &other);
+
25 
+
26  void set(T xx, T yy, T zz, T ww);
+
27 
+
28  T *data();
+
29  const T *data() const;
+
30 
+
31  T &operator[](unsigned int index);
+
32  const T &operator[](unsigned int index) const;
+
33 
+
34  bool operator==(const Vector4 &v) const;
+
35  Vector4 operator-() const;
+
36 
+
37  Vector4 &operator+=(const Vector4 &v);
+
38  Vector4 &operator-=(const Vector4 &v);
+
39  Vector4 &operator*=(const Vector4 &v);
+
40  Vector4 &operator/=(const Vector4 &v);
+
41 
+
42  Vector4 &operator+=(T s);
+
43  Vector4 &operator-=(T s);
+
44  Vector4 &operator*=(T s);
+
45  Vector4 &operator/=(T s);
+
46 
+
47  Vector4 operator+(const Vector4 &v) const;
+
48  Vector4 operator-(const Vector4 &v) const;
+
49  Vector4 operator*(const Vector4 &v) const;
+
50  Vector4 operator/(const Vector4 &v) const;
+
51 
+
52  Vector4 operator+(T s) const;
+
53  Vector4 operator-(T s) const;
+
54  Vector4 operator*(T s) const;
+
55  Vector4 operator/(T s) const;
+
56 
+
57  template <class S>
+
58  friend Vector4<S> operator*(S s, const Vector4<S> &v);
+
59 
+
60  T length() const;
+
61  T sqrLength() const;
+
62  Vector4 normalized() const;
+
63  Vector4 &normalize();
+
64 
+
65  Vector2<T> toVector2() const;
+
66  Vector3<T> toVector3() const;
+
67 
+
68  template <class S>
+
69  friend S dot(const Vector4<S> &v1, const Vector4<S> &v2);
+
70 
+
72  static const Vector4 Zero;
+
74  static const Vector4 XAxis;
+
76  static const Vector4 YAxis;
+
78  static const Vector4 ZAxis;
+
80  static const Vector4 WAxis;
+
81 };
+
82 
+
83 using Vector4f = Vector4<float>;
+
84 using Vector4i = Vector4<int>;
+
85 
+
86 template <class T>
+
87 inline Vector4<T> &Vector4<T>::operator=(const Vector4<T> &other)
+
88 {
+
89  x = other.x;
+
90  y = other.y;
+
91  z = other.z;
+
92  w = other.w;
+
93 
+
94  return *this;
+
95 }
+
96 
+
97 template <class T>
+
98 inline void Vector4<T>::set(T xx, T yy, T zz, T ww)
+
99 {
+
100  x = xx;
+
101  y = yy;
+
102  z = zz;
+
103  w = ww;
+
104 }
+
105 
+
106 template <class T>
+
107 inline T *Vector4<T>::data()
+
108 {
+
109  return &x;
+
110 }
+
111 
+
112 template <class T>
+
113 inline const T *Vector4<T>::data() const
+
114 {
+
115  return &x;
+
116 }
+
117 
+
118 template <class T>
+
119 inline T &Vector4<T>::operator[](unsigned int index)
+
120 {
+
121  index = (index < 4) ? index : 3;
+
122  return (&x)[index];
+
123 }
+
124 
+
125 template <class T>
+
126 inline const T &Vector4<T>::operator[](unsigned int index) const
+
127 {
+
128  index = (index < 4) ? index : 3;
+
129  return (&x)[index];
+
130 }
+
131 
+
132 template <class T>
+
133 inline bool Vector4<T>::operator==(const Vector4 &v) const
+
134 {
+
135  return (x == v.x && y == v.y && z == v.z && w == v.w);
+
136 }
+
137 
+
138 template <class T>
+
139 inline Vector4<T> Vector4<T>::operator-() const
+
140 {
+
141  return Vector4(-x, -y, -z, -w);
+
142 }
+
143 
+
144 template <class T>
+
145 inline Vector4<T> &Vector4<T>::operator+=(const Vector4 &v)
+
146 {
+
147  x += v.x;
+
148  y += v.y;
+
149  z += v.z;
+
150  w += v.w;
+
151 
+
152  return *this;
+
153 }
+
154 
+
155 template <class T>
+
156 inline Vector4<T> &Vector4<T>::operator-=(const Vector4 &v)
+
157 {
+
158  x -= v.x;
+
159  y -= v.y;
+
160  z -= v.z;
+
161  w -= v.w;
+
162 
+
163  return *this;
+
164 }
+
165 
+
166 template <class T>
+
167 inline Vector4<T> &Vector4<T>::operator*=(const Vector4 &v)
+
168 {
+
169  x *= v.x;
+
170  y *= v.y;
+
171  z *= v.z;
+
172  w *= v.w;
+
173 
+
174  return *this;
+
175 }
+
176 
+
177 template <class T>
+
178 inline Vector4<T> &Vector4<T>::operator/=(const Vector4 &v)
+
179 {
+
180  x /= v.x;
+
181  y /= v.y;
+
182  z /= v.z;
+
183  w /= v.w;
+
184 
+
185  return *this;
+
186 }
+
187 
+
188 template <class T>
+
189 inline Vector4<T> &Vector4<T>::operator+=(T s)
+
190 {
+
191  x += s;
+
192  y += s;
+
193  z += s;
+
194  w += s;
+
195 
+
196  return *this;
+
197 }
+
198 
+
199 template <class T>
+
200 inline Vector4<T> &Vector4<T>::operator-=(T s)
+
201 {
+
202  x -= s;
+
203  y -= s;
+
204  z -= s;
+
205  w -= s;
+
206 
+
207  return *this;
+
208 }
+
209 
+
210 template <class T>
+
211 inline Vector4<T> &Vector4<T>::operator*=(T s)
+
212 {
+
213  x *= s;
+
214  y *= s;
+
215  z *= s;
+
216  w *= s;
+
217 
+
218  return *this;
+
219 }
+
220 
+
221 template <class T>
+
222 inline Vector4<T> &Vector4<T>::operator/=(T s)
+
223 {
+
224  x /= s;
+
225  y /= s;
+
226  z /= s;
+
227  w /= s;
+
228 
+
229  return *this;
+
230 }
+
231 
+
232 template <class T>
+
233 inline Vector4<T> Vector4<T>::operator+(const Vector4 &v) const
+
234 {
+
235  return Vector4(x + v.x,
+
236  y + v.y,
+
237  z + v.z,
+
238  w + v.w);
+
239 }
+
240 
+
241 template <class T>
+
242 inline Vector4<T> Vector4<T>::operator-(const Vector4 &v) const
+
243 {
+
244  return Vector4(x - v.x,
+
245  y - v.y,
+
246  z - v.z,
+
247  w - v.w);
+
248 }
+
249 
+
250 template <class T>
+
251 inline Vector4<T> Vector4<T>::operator*(const Vector4 &v) const
+
252 {
+
253  return Vector4(x * v.x,
+
254  y * v.y,
+
255  z * v.z,
+
256  w * v.w);
+
257 }
+
258 
+
259 template <class T>
+
260 inline Vector4<T> Vector4<T>::operator/(const Vector4 &v) const
+
261 {
+
262  return Vector4(x / v.x,
+
263  y / v.y,
+
264  z / v.z,
+
265  w / v.w);
+
266 }
+
267 
+
268 template <class T>
+
269 inline Vector4<T> Vector4<T>::operator+(T s) const
+
270 {
+
271  return Vector4(x + s,
+
272  y + s,
+
273  z + s,
+
274  w + s);
+
275 }
+
276 
+
277 template <class T>
+
278 inline Vector4<T> Vector4<T>::operator-(T s) const
+
279 {
+
280  return Vector4(x - s,
+
281  y - s,
+
282  z - s,
+
283  w - s);
+
284 }
+
285 
+
286 template <class T>
+
287 inline Vector4<T> Vector4<T>::operator*(T s) const
+
288 {
+
289  return Vector4(x * s,
+
290  y * s,
+
291  z * s,
+
292  w * s);
+
293 }
+
294 
+
295 template <class T>
+
296 inline Vector4<T> Vector4<T>::operator/(T s) const
+
297 {
+
298  return Vector4(x / s,
+
299  y / s,
+
300  z / s,
+
301  w / s);
+
302 }
+
303 
+
304 template <class S>
+
305 inline Vector4<S> operator*(S s, const Vector4<S> &v)
+
306 {
+
307  return Vector4<S>(s * v.x,
+
308  s * v.y,
+
309  s * v.z,
+
310  s * v.w);
+
311 }
+
312 
+
313 template <class T>
+
314 inline T Vector4<T>::length() const
+
315 {
+
316  return sqrt(x * x + y * y + z * z + w * w);
+
317 }
+
318 
+
319 template <class T>
+
320 inline T Vector4<T>::sqrLength() const
+
321 {
+
322  return x * x + y * y + z * z + w * w;
+
323 }
+
324 
+
325 template <class T>
+
326 inline Vector4<T> Vector4<T>::normalized() const
+
327 {
+
328  const T len = length();
+
329  return Vector4(x / len, y / len, z / len, w / len);
+
330 }
+
331 
+
332 template <class T>
+
333 inline Vector4<T> &Vector4<T>::normalize()
+
334 {
+
335  const T len = length();
+
336 
+
337  x /= len;
+
338  y /= len;
+
339  z /= len;
+
340  w /= len;
+
341 
+
342  return *this;
+
343 }
+
344 
+
345 template <class T>
+
346 inline Vector2<T> Vector4<T>::toVector2() const
+
347 {
+
348  return Vector2<T>(x, y);
+
349 }
+
350 
+
351 template <class T>
+
352 inline Vector3<T> Vector4<T>::toVector3() const
+
353 {
+
354  return Vector3<T>(x, y, z);
+
355 }
+
356 
+
357 template <class S>
+
358 inline S dot(const Vector4<S> &v1, const Vector4<S> &v2)
+
359 {
+
360  return static_cast<S>(v1.x * v2.x +
+
361  v1.y * v2.y +
+
362  v1.z * v2.z +
+
363  v1.w * v2.w);
+
364 }
+
365 
+
366 template <class T>
+
367 const Vector4<T> Vector4<T>::Zero(0, 0, 0, 0);
+
368 template <class T>
+
369 const Vector4<T> Vector4<T>::XAxis(1, 0, 0, 0);
+
370 template <class T>
+
371 const Vector4<T> Vector4<T>::YAxis(0, 1, 0, 0);
+
372 template <class T>
+
373 const Vector4<T> Vector4<T>::ZAxis(0, 0, 1, 0);
+
374 template <class T>
+
375 const Vector4<T> Vector4<T>::WAxis(0, 0, 0, 1);
+
376 
+
377 }
+
378 
+
379 #endif
+
A two component vector based on templates.
Definition: Vector2.h:11
+
A three component vector based on templates.
Definition: Vector3.h:11
+
A four component vector based on templates.
Definition: Vector4.h:12
+
static const Vector4 Zero
A vector with all zero elements.
Definition: Vector4.h:72
+
static const Vector4 YAxis
A unit vector on the Y axis.
Definition: Vector4.h:76
+
static const Vector4 XAxis
A unit vector on the X axis.
Definition: Vector4.h:74
+
static const Vector4 WAxis
A unit vector on the W axis.
Definition: Vector4.h:80
+
static const Vector4 ZAxis
A unit vector on the Z axis.
Definition: Vector4.h:78
+
+ + + + diff --git a/master/_viewport_8h_source.html b/master/_viewport_8h_source.html new file mode 100644 index 0000000000..45ce302c1b --- /dev/null +++ b/master/_viewport_8h_source.html @@ -0,0 +1,304 @@ + + + + + + + +nCine: include/ncine/Viewport.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Viewport.h
+
+
+
1 #ifndef CLASS_NCINE_VIEWPORT
+
2 #define CLASS_NCINE_VIEWPORT
+
3 
+
4 #include "common_defines.h"
+
5 #include <nctl/UniquePtr.h>
+
6 #include <nctl/Array.h>
+
7 #include <nctl/BitSet.h>
+
8 #include "Colorf.h"
+
9 #include "Vector2.h"
+
10 #include "Rect.h"
+
11 
+
12 namespace ncine {
+
13 
+
14 class SceneNode;
+
15 class Camera;
+
16 class RenderQueue;
+
17 class GLFramebufferObject;
+
18 class Texture;
+
19 
+
21 class DLL_PUBLIC Viewport
+
22 {
+
23  public:
+
25  enum class Type
+
26  {
+
28  WITH_TEXTURE,
+
30  NO_TEXTURE,
+
32  SCREEN
+
33  };
+
34 
+
36  enum class ClearMode
+
37  {
+
39  EVERY_DRAW,
+
41  EVERY_FRAME,
+
43  THIS_FRAME_ONLY,
+
45  NEXT_FRAME_ONLY,
+
47  NEVER
+
48  };
+
49 
+
51  enum class DepthStencilFormat
+
52  {
+
53  NONE,
+
54  DEPTH16,
+
55  DEPTH24,
+
56  DEPTH24_STENCIL8
+
57  };
+
58 
+
60  Viewport(const char *name, Texture *texture, DepthStencilFormat depthStencilFormat);
+
62  Viewport(Texture *texture, DepthStencilFormat depthStencilFormat);
+
64  Viewport(const char *name, Texture *texture);
+
66  explicit Viewport(Texture *texture);
+
68  Viewport();
+
69 
+
70  ~Viewport();
+
71 
+
73  inline Type type() const { return type_; }
+
74 
+
76  Texture *texture(unsigned int index);
+
78  inline Texture *texture() { return textures_[0]; }
+
80  bool setTexture(unsigned int index, Texture *texture);
+
82  inline bool setTexture(Texture *texture) { return setTexture(0, texture); }
+
83 
+
85  inline DepthStencilFormat depthStencilFormat() const { return depthStencilFormat_; }
+
87  bool setDepthStencilFormat(DepthStencilFormat depthStencilFormat);
+
88 
+
90  bool removeAllTextures();
+
91 
+
93  inline Vector2i size() const { return Vector2i(width_, height_); }
+
95  inline int width() const { return width_; }
+
97  inline int height() const { return height_; }
+
98 
+
100  inline unsigned int numColorAttachments() const { return numColorAttachments_; }
+
101 
+
103  inline Recti viewportRect() const { return viewportRect_; }
+
105  inline void setViewportRect(Recti viewportRect) { viewportRect_ = viewportRect; }
+
107  inline void setViewportRect(int x, int y, int width, int height) { viewportRect_.set(x, y, width, height); }
+
109  inline void setViewportRect(const Vector2i &size) { viewportRect_.set(0, 0, size.x, size.y); }
+
111  inline void setViewportRect(int width, int height) { viewportRect_.set(0, 0, width, height); }
+
112 
+
114  inline Recti scissorRect() const { return scissorRect_; }
+
116  inline void setScissorRect(Recti scissorRect) { scissorRect_ = scissorRect; }
+
118  inline void setScissorRect(int x, int y, int width, int height) { scissorRect_.set(x, y, width, height); }
+
120  inline void setScissorRect(const Vector2i &size) { scissorRect_.set(0, 0, size.x, size.y); }
+
122  inline void setScissorRect(int width, int height) { scissorRect_.set(0, 0, width, height); }
+
123 
+
125  inline Rectf cullingRect() const { return cullingRect_; }
+
126 
+
128  inline unsigned long int lastFrameCleared() const { return lastFrameCleared_; }
+
129 
+
131  inline ClearMode clearMode() const { return clearMode_; }
+
133  inline void setClearMode(ClearMode clearMode) { clearMode_ = clearMode; }
+
134 
+
136  inline Colorf clearColor() const { return clearColor_; }
+
138  inline void setClearColor(float red, float green, float blue, float alpha) { clearColor_.set(red, green, blue, alpha); }
+
140  inline void setClearColor(const Colorf &color) { clearColor_ = color; }
+
141 
+
143  inline const SceneNode *rootNode() const { return rootNode_; }
+
145  inline SceneNode *rootNode() { return rootNode_; }
+
147  inline void setRootNode(SceneNode *rootNode) { rootNode_ = rootNode; }
+
148 
+
150  static nctl::Array<Viewport *> &chain() { return chain_; }
+
151 
+
153  inline const Camera *camera() const { return camera_; }
+
155  inline Camera *camera() { return camera_; }
+
157 
+
158  inline void setCamera(Camera *camera) { camera_ = camera; }
+
159 
+
161  void setGLFramebufferLabel(const char *label);
+
162 
+
163  protected:
+ +
166  {
+
167  UpdatedBit = 0,
+
168  VisitedBit = 1,
+
169  CommittedBit = 2
+
170  };
+
171 
+ +
174 
+
175  Type type_;
+
176 
+
177  int width_;
+
178  int height_;
+
179  Recti viewportRect_;
+
180  Recti scissorRect_;
+
181  Rectf cullingRect_;
+
182 
+
183  DepthStencilFormat depthStencilFormat_;
+
184 
+
186  unsigned long int lastFrameCleared_;
+
187  ClearMode clearMode_;
+
188  Colorf clearColor_;
+
189 
+ +
192 
+ +
194 
+
195  static const unsigned int MaxNumTextures = 4;
+
196  Texture *textures_[MaxNumTextures];
+
197 
+ +
200 
+
202 
+ +
204 
+ +
207 
+
209  Viewport(const Viewport &) = delete;
+
211  Viewport &operator=(const Viewport &) = delete;
+
212 
+
213  void calculateCullingRect();
+
214 
+
215  void update();
+
216  void visit();
+
217  void sortAndCommitQueue();
+
218  void draw(unsigned int nextIndex);
+
219 
+
220  private:
+
221  unsigned int numColorAttachments_;
+
222 
+
223  void updateCulling(SceneNode *node);
+
224 
+
225  friend class Application;
+
226  friend class ScreenViewport;
+
227 };
+
228 
+
229 }
+
230 
+
231 #endif
+
Main entry point and handler for nCine applications.
Definition: Application.h:24
+
The camera class that handles matrices for shaders.
Definition: Camera.h:16
+
A four channels normalized float color.
Definition: Colorf.h:13
+ +
The base class for the transformation nodes hierarchy.
Definition: SceneNode.h:19
+
Texture class.
Definition: Texture.h:16
+ +
The class handling a viewport and its corresponding render target texture.
Definition: Viewport.h:22
+
void setCamera(Camera *camera)
Sets the camera to be used for rendering.
Definition: Viewport.h:158
+
StateBitPositions
Bit positions inside the state bitset.
Definition: Viewport.h:166
+
Type
The different types of viewports available.
Definition: Viewport.h:26
+
Rectf cullingRect() const
Returns the rectangle for screen culling.
Definition: Viewport.h:125
+
Viewport & operator=(const Viewport &)=delete
Deleted assignment operator.
+
nctl::BitSet< uint8_t > stateBits_
Bitset that stores the various states bits.
Definition: Viewport.h:206
+
bool setTexture(Texture *texture)
Adds or removes a texture at the first viewport's FBO color attachment index.
Definition: Viewport.h:82
+
void setScissorRect(int width, int height)
Resizes the OpenGL scissor test rectangle with two integers.
Definition: Viewport.h:122
+
void setScissorRect(int x, int y, int width, int height)
Sets the OpenGL scissor test rectangle with four integers.
Definition: Viewport.h:118
+
void setViewportRect(const Vector2i &size)
Resizes the OpenGL viewport rectangle through a Vector2i object.
Definition: Viewport.h:109
+
unsigned int numColorAttachments() const
Returns the number of color attachments of the viewport's FBO.
Definition: Viewport.h:100
+
void setRootNode(SceneNode *rootNode)
Sets or removes the root node.
Definition: Viewport.h:147
+
Viewport(const Viewport &)=delete
Deleted copy constructor.
+
Recti scissorRect() const
Returns the OpenGL scissor test rectangle.
Definition: Viewport.h:114
+
static nctl::Array< Viewport * > & chain()
Returns the reverse ordered array of viewports to be drawn before the screen.
Definition: Viewport.h:150
+
const Camera * camera() const
Returns the camera used for rendering as a constant.
Definition: Viewport.h:153
+
Camera * camera()
Returns the camera used for rendering.
Definition: Viewport.h:155
+
ClearMode clearMode() const
Returns the viewport clear mode.
Definition: Viewport.h:131
+
SceneNode * rootNode_
The root scene node for this viewport/RT.
Definition: Viewport.h:199
+
DepthStencilFormat depthStencilFormat() const
Returns the depth and stencil format of the viewport's FBO renderbuffer.
Definition: Viewport.h:85
+
static nctl::Array< Viewport * > chain_
The reverse ordered array of viewports to be drawn before the screen.
Definition: Viewport.h:173
+
int width() const
Returns viewport's FBO width or zero if no texture is present.
Definition: Viewport.h:95
+
unsigned long int lastFrameCleared() const
Returns the last frame this viewport was cleared.
Definition: Viewport.h:128
+
const SceneNode * rootNode() const
Returns the root node as a constant.
Definition: Viewport.h:143
+
void setViewportRect(Recti viewportRect)
Sets the OpenGL viewport rectangle through a Recti object.
Definition: Viewport.h:105
+
Recti viewportRect() const
Returns the OpenGL viewport rectangle.
Definition: Viewport.h:103
+
void setViewportRect(int width, int height)
Resizes the OpenGL viewport rectangle with two integers.
Definition: Viewport.h:111
+
Colorf clearColor() const
Returns the viewport clear color as a Colorf object.
Definition: Viewport.h:136
+
Texture * texture()
Returns the texture at the first viewport's FBO color attachment index.
Definition: Viewport.h:78
+
int height() const
Returns viewport's FBO height or zero if no texture is present.
Definition: Viewport.h:97
+
void setViewportRect(int x, int y, int width, int height)
Sets the OpenGL viewport rectangle with four integers.
Definition: Viewport.h:107
+
void setClearMode(ClearMode clearMode)
Sets the viewport clear mode.
Definition: Viewport.h:133
+
Camera * camera_
The camera used by this viewport.
Definition: Viewport.h:203
+
unsigned long int lastFrameCleared_
The last frame this viewport was cleared.
Definition: Viewport.h:186
+
Vector2i size() const
Returns viewport's FBO size as a Vector2i object, or a zero vector if no texture is present.
Definition: Viewport.h:93
+
SceneNode * rootNode()
Returns the root node.
Definition: Viewport.h:145
+
void setClearColor(float red, float green, float blue, float alpha)
Sets the viewport clear color through four floats.
Definition: Viewport.h:138
+
DepthStencilFormat
The depth and stencil format for a viewport with a texture or for the screen.
Definition: Viewport.h:52
+
void setScissorRect(Recti scissorRect)
Sets the OpenGL scissor test rectangle through a Recti object.
Definition: Viewport.h:116
+
void setScissorRect(const Vector2i &size)
Resizes the OpenGL scissor test rectangle through a Vector2i object.
Definition: Viewport.h:120
+
void setClearColor(const Colorf &color)
Sets the viewport clear color through a Colorf object.
Definition: Viewport.h:140
+
Type type() const
Returns the viewport type.
Definition: Viewport.h:73
+
ClearMode
The clear mode for a viewport with a texture or for the screen.
Definition: Viewport.h:37
+
nctl::UniquePtr< RenderQueue > renderQueue_
The render queue of commands for this viewport/RT.
Definition: Viewport.h:191
+
A dynamic array based on templates that stores elements in the heap.
Definition: Array.h:31
+ + +
+ + + + diff --git a/master/algorithms_8h_source.html b/master/algorithms_8h_source.html new file mode 100644 index 0000000000..9eeb7ab6b2 --- /dev/null +++ b/master/algorithms_8h_source.html @@ -0,0 +1,823 @@ + + + + + + + +nCine: include/nctl/algorithms.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
algorithms.h
+
+
+
1 #ifndef NCTL_ALGORITHMS
+
2 #define NCTL_ALGORITHMS
+
3 
+
4 #include "iterator.h"
+
5 #include "utility.h"
+
6 
+
7 namespace nctl {
+
8 
+
10 // TEMPLATE FUNCTIONS (non modifying)
+
12 
+
14 template <class T>
+
15 inline const T &min(const T &a, const T &b)
+
16 {
+
17  return !(b < a) ? a : b;
+
18 }
+
19 
+
21 template <class T>
+
22 inline const T &max(const T &a, const T &b)
+
23 {
+
24  return (a < b) ? b : a;
+
25 }
+
26 
+
28 template <class T>
+
29 inline const T &clamp(const T &value, const T &minValue, const T &maxValue)
+
30 {
+
31  return min(max(value, minValue), maxValue);
+
32 }
+
33 
+
35 // UNARY PREDICATES
+
37 
+
39 template <class T>
+
40 class IsEqualTo
+
41 {
+
42  public:
+
43  explicit IsEqualTo(T refValue)
+
44  : refValue_(refValue) {}
+
45  inline bool operator()(T value) const { return value == refValue_; }
+
46 
+
47  private:
+
48  T refValue_;
+
49 };
+
50 
+
52 template <class T>
+ +
54 {
+
55  public:
+
56  explicit IsNotEqualTo(T refValue)
+
57  : refValue_(refValue) {}
+
58  inline bool operator()(T value) const { return !(value == refValue_); }
+
59 
+
60  private:
+
61  T refValue_;
+
62 };
+
63 
+
65 template <class T>
+ +
67 {
+
68  public:
+
69  explicit IsGreaterThan(T refValue)
+
70  : refValue_(refValue) {}
+
71  inline bool operator()(T value) const { return value > refValue_; }
+
72 
+
73  private:
+
74  T refValue_;
+
75 };
+
76 
+
78 template <class T>
+ +
80 {
+
81  public:
+
82  explicit IsNotGreaterThan(T refValue)
+
83  : refValue_(refValue) {}
+
84  inline bool operator()(T value) const { return !(value > refValue_); }
+
85 
+
86  private:
+
87  T refValue_;
+
88 };
+
89 
+
91 template <class T>
+ +
93 {
+
94  public:
+
95  explicit IsLessThan(T refValue)
+
96  : refValue_(refValue) {}
+
97  inline bool operator()(T value) const { return value < refValue_; }
+
98 
+
99  private:
+
100  T refValue_;
+
101 };
+
102 
+
104 template <class T>
+ +
106 {
+
107  public:
+
108  explicit IsNotLessThan(T refValue)
+
109  : refValue_(refValue) {}
+
110  inline bool operator()(T value) const { return !(value < refValue_); }
+
111 
+
112  private:
+
113  T refValue_;
+
114 };
+
115 
+
117 // BINARY PREDICATES
+
119 
+
120 template <class T>
+
121 inline bool IsEqual(const T &a, const T &b)
+
122 {
+
123  return a == b;
+
124 }
+
125 
+
126 template <class T>
+
127 inline bool IsNotEqual(const T &a, const T &b)
+
128 {
+
129  return !(a == b);
+
130 }
+
131 
+
132 template <class T>
+
133 inline bool IsGreater(const T &a, const T &b)
+
134 {
+
135  return a > b;
+
136 }
+
137 
+
138 template <class T>
+
139 inline bool IsNotGreater(const T &a, const T &b)
+
140 {
+
141  return !(a > b);
+
142 }
+
143 
+
144 template <class T>
+
145 inline bool IsLess(const T &a, const T &b)
+
146 {
+
147  return a < b;
+
148 }
+
149 
+
150 template <class T>
+
151 inline bool IsNotLess(const T &a, const T &b)
+
152 {
+
153  return !(a < b);
+
154 }
+
155 
+
157 // ARITHMETIC OPERATIONS
+
159 
+
160 template <class T>
+
161 inline T Plus(const T &a, const T &b)
+
162 {
+
163  return a + b;
+
164 }
+
165 
+
166 template <class T>
+
167 inline T Minus(const T &a, const T &b)
+
168 {
+
169  return a - b;
+
170 }
+
171 
+
172 template <class T>
+
173 inline T Multiplies(const T &a, const T &b)
+
174 {
+
175  return a * b;
+
176 }
+
177 
+
178 template <class T>
+
179 inline T Divides(const T &a, const T &b)
+
180 {
+
181  return a / b;
+
182 }
+
183 
+
184 template <class T>
+
185 inline T Modulus(const T &a, const T &b)
+
186 {
+
187  return a % b;
+
188 }
+
189 
+
190 template <class T>
+
191 inline T Negate(const T &a)
+
192 {
+
193  return -a;
+
194 }
+
195 
+
197 // LOGICAL OPERATIONS
+
199 
+
200 template <class T>
+
201 inline T LogicalAnd(const T &a, const T &b)
+
202 {
+
203  return a && b;
+
204 }
+
205 
+
206 template <class T>
+
207 inline T LogicalOr(const T &a, const T &b)
+
208 {
+
209  return a || b;
+
210 }
+
211 
+
212 template <class T>
+
213 inline T LogicalNot(const T &a)
+
214 {
+
215  return !a;
+
216 }
+
217 
+
219 // TEMPLATE FUNCTIONS WITH ITERATORS (non-modifying)
+
221 
+
223 template <class Iterator, class UnaryPredicate>
+
224 inline bool allOf(Iterator first, const Iterator last, UnaryPredicate pred)
+
225 {
+
226  for (; first != last; ++first)
+
227  {
+
228  if (!pred(*first))
+
229  return false;
+
230  }
+
231 
+
232  return true;
+
233 }
+
234 
+
236 template <class Iterator, class UnaryPredicate>
+
237 inline bool noneOf(Iterator first, const Iterator last, UnaryPredicate pred)
+
238 {
+
239  for (; first != last; ++first)
+
240  {
+
241  if (pred(*first))
+
242  return false;
+
243  }
+
244 
+
245  return true;
+
246 }
+
247 
+
249 template <class Iterator, class UnaryPredicate>
+
250 inline bool anyOf(Iterator first, const Iterator last, UnaryPredicate pred)
+
251 {
+
252  for (; first != last; ++first)
+
253  {
+
254  if (pred(*first))
+
255  return true;
+
256  }
+
257 
+
258  return false;
+
259 }
+
260 
+
262 template <class Iterator, class Function>
+
263 inline Function forEach(Iterator first, const Iterator last, Function fn)
+
264 {
+
265  for (; first != last; ++first)
+
266  fn(*first);
+
267 
+
268  return fn;
+
269 }
+
270 
+
272 template <class Iterator, class T>
+
273 inline Iterator find(Iterator first, const Iterator last, const T &value)
+
274 {
+
275  for (; first != last; ++first)
+
276  {
+
277  if (*first == value)
+
278  return first;
+
279  }
+
280 
+
281  return last;
+
282 }
+
283 
+
285 template <class Iterator, class UnaryPredicate>
+
286 inline Iterator findIf(Iterator first, const Iterator last, UnaryPredicate pred)
+
287 {
+
288  for (; first != last; ++first)
+
289  {
+
290  if (pred(*first))
+
291  return first;
+
292  }
+
293 
+
294  return last;
+
295 }
+
296 
+
298 template <class Iterator, class UnaryPredicate>
+
299 inline Iterator findIfNot(Iterator first, const Iterator last, UnaryPredicate pred)
+
300 {
+
301  for (; first != last; ++first)
+
302  {
+
303  if (!pred(*first))
+
304  return first;
+
305  }
+
306 
+
307  return last;
+
308 }
+
309 
+
311 template <class Iterator, class T>
+
312 inline int count(Iterator first, const Iterator last, const T &value)
+
313 {
+
314  int counter = 0;
+
315 
+
316  for (; first != last; ++first)
+
317  {
+
318  if (*first == value)
+
319  counter++;
+
320  }
+
321 
+
322  return counter;
+
323 }
+
324 
+
326 template <class Iterator, class UnaryPredicate>
+
327 inline int countIf(Iterator first, const Iterator last, UnaryPredicate pred)
+
328 {
+
329  int counter = 0;
+
330 
+
331  for (; first != last; ++first)
+
332  {
+
333  if (pred(*first))
+
334  counter++;
+
335  }
+
336 
+
337  return counter;
+
338 }
+
339 
+
341 template <class Iterator1, class Iterator2>
+
342 inline bool equal(Iterator1 first1, const Iterator1 last1, Iterator2 first2)
+
343 {
+
344  while (first1 != last1)
+
345  {
+
346  if (*first1 != *first2)
+
347  return false;
+
348  ++first1;
+
349  ++first2;
+
350  }
+
351 
+
352  return true;
+
353 }
+
354 
+
356 template <class Iterator>
+
357 inline Iterator minElement(Iterator first, const Iterator last)
+
358 {
+
359  if (first == last)
+
360  return last;
+
361 
+
362  Iterator smallest = first;
+
363  ++first;
+
364 
+
365  for (; first != last; ++first)
+
366  {
+
367  if (*first < *smallest)
+
368  smallest = first;
+
369  }
+
370 
+
371  return smallest;
+
372 }
+
373 
+
375 template <class Iterator>
+
376 inline Iterator maxElement(Iterator first, const Iterator last)
+
377 {
+
378  if (first == last)
+
379  return last;
+
380 
+
381  Iterator largest = first;
+
382  ++first;
+
383 
+
384  for (; first != last; ++first)
+
385  {
+
386  if (*first > *largest)
+
387  largest = first;
+
388  }
+
389 
+
390  return largest;
+
391 }
+
392 
+
394 template <class Iterator, class T>
+
395 inline void clampElements(Iterator first, const Iterator last, const T &minValue, const T &maxValue)
+
396 {
+
397  for (; first != last; ++first)
+
398  *first = min(max(*first, minValue), maxValue);
+
399 }
+
400 
+
402 // TEMPLATE FUNCTIONS WITH ITERATORS (modifying)
+
404 
+
405 template <class Iterator1, class Iterator2>
+
406 inline void iterSwap(Iterator1 a, Iterator2 b)
+
407 {
+
408  swap(*a, *b);
+
409 }
+
410 
+
412 template <class IteratorIn, class IteratorOut>
+
413 inline IteratorOut copy(IteratorIn first, const IteratorIn last, IteratorOut result)
+
414 {
+
415  while (first != last)
+
416  {
+
417  *result = *first;
+
418  ++result;
+
419  ++first;
+
420  }
+
421 
+
422  return result;
+
423 }
+
424 
+
426 template <class IteratorIn, class IteratorOut>
+
427 inline IteratorOut copyN(IteratorIn first, unsigned int n, IteratorOut result)
+
428 {
+
429  while (n > 0)
+
430  {
+
431  *result = *first;
+
432  ++result;
+
433  ++first;
+
434  --n;
+
435  }
+
436 
+
437  return result;
+
438 }
+
439 
+
441 template <class IteratorIn, class IteratorOut, class UnaryPredicate>
+
442 inline IteratorOut copyIf(IteratorIn first, const IteratorIn last, IteratorOut result, UnaryPredicate pred)
+
443 {
+
444  while (first != last)
+
445  {
+
446  if (pred(*first))
+
447  {
+
448  *result = *first;
+
449  ++result;
+
450  }
+
451  ++first;
+
452  }
+
453 
+
454  return result;
+
455 }
+
456 
+
458 template <class IteratorIn, class IteratorOut, class UnaryOperation>
+
459 inline IteratorOut transform(IteratorIn first1, const IteratorIn last1, IteratorOut result, UnaryOperation op)
+
460 {
+
461  while (first1 != last1)
+
462  {
+
463  *result = op(*first1);
+
464  ++result;
+
465  ++first1;
+
466  }
+
467 
+
468  return result;
+
469 }
+
470 
+
472 template <class IteratorIn1, class IteratorIn2, class IteratorOut, class BinaryOperation>
+
473 inline IteratorOut transform(IteratorIn1 first1, const IteratorIn1 last1, IteratorIn2 first2,
+
474  IteratorOut result, BinaryOperation binaryOp)
+
475 {
+
476  while (first1 != last1)
+
477  {
+
478  *result = binaryOp(*first1, *first2++);
+
479  ++result;
+
480  ++first1;
+
481  }
+
482 
+
483  return result;
+
484 }
+
485 
+
487 template <class Iterator, class T>
+
488 inline void replace(Iterator first, const Iterator last, const T &oldValue, const T &newValue)
+
489 {
+
490  while (first != last)
+
491  {
+
492  if (*first == oldValue)
+
493  *first = newValue;
+
494  ++first;
+
495  }
+
496 }
+
497 
+
499 template <class Iterator, class UnaryPredicate, class T>
+
500 inline void replaceIf(Iterator first, const Iterator last, UnaryPredicate pred, const T &newValue)
+
501 {
+
502  while (first != last)
+
503  {
+
504  if (pred(*first))
+
505  *first = newValue;
+
506  ++first;
+
507  }
+
508 }
+
509 
+
511 template <class IteratorIn, class IteratorOut, class T>
+
512 inline IteratorOut replaceCopy(IteratorIn first, const IteratorIn last, IteratorOut result, const T &oldValue, const T &newValue)
+
513 {
+
514  while (first != last)
+
515  {
+
516  *result = (*first == oldValue) ? newValue : *first;
+
517  ++first;
+
518  ++result;
+
519  }
+
520 
+
521  return result;
+
522 }
+
523 
+
525 template <class IteratorIn, class IteratorOut, class UnaryPredicate, class T>
+
526 inline IteratorOut replaceCopyIf(IteratorIn first, const IteratorIn last, IteratorOut result, UnaryPredicate pred, const T &newValue)
+
527 {
+
528  while (first != last)
+
529  {
+
530  *result = (pred(*first)) ? newValue : *first;
+
531  ++first;
+
532  ++result;
+
533  }
+
534 
+
535  return result;
+
536 }
+
537 
+
539 template <class Iterator, class T>
+
540 inline void fill(Iterator first, const Iterator last, const T &value)
+
541 {
+
542  for (; first != last; ++first)
+
543  *first = value;
+
544 }
+
545 
+
547 template <class Iterator, class T>
+
548 inline void fillN(Iterator first, unsigned int n, const T &value)
+
549 {
+
550  for (unsigned int i = 0; i < n; i++, ++first)
+
551  *first = value;
+
552 }
+
553 
+
555 template <class Iterator, class Generator>
+
556 inline void generate(Iterator first, const Iterator last, Generator gen)
+
557 {
+
558  while (first != last)
+
559  {
+
560  *first = gen();
+
561  ++first;
+
562  }
+
563 }
+
564 
+
566 template <class Iterator, class Generator>
+
567 inline void generateN(Iterator first, unsigned int n, Generator gen)
+
568 {
+
569  while (n > 0)
+
570  {
+
571  *first = gen();
+
572  ++first;
+
573  --n;
+
574  }
+
575 }
+
576 
+
578 template <class Iterator, class T>
+
579 inline Iterator remove(Iterator first, const Iterator last, const T &val)
+
580 {
+
581  Iterator result = first;
+
582 
+
583  while (first != last)
+
584  {
+
585  if (!(*first == val))
+
586  {
+
587  *result = *first;
+
588  ++result;
+
589  }
+
590  ++first;
+
591  }
+
592 
+
593  return result;
+
594 }
+
595 
+
597 template <class Iterator, class UnaryPredicate>
+
598 inline Iterator removeIf(Iterator first, const Iterator last, UnaryPredicate pred)
+
599 {
+
600  Iterator result = first;
+
601 
+
602  while (first != last)
+
603  {
+
604  if (!pred(*first))
+
605  {
+
606  *result = *first;
+
607  ++result;
+
608  }
+
609  ++first;
+
610  }
+
611 
+
612  return result;
+
613 }
+
614 
+
616 template <class Iterator>
+
617 inline void reverse(Iterator first, Iterator last)
+
618 {
+
619  while ((first != last) && (first != --last))
+
620  {
+
621  iterSwap(first, last);
+
622  ++first;
+
623  }
+
624 }
+
625 
+
627 template <class IteratorIn, class IteratorOut>
+
628 inline IteratorOut reverseCopy(IteratorIn first, IteratorIn last, IteratorOut result)
+
629 {
+
630  while (first != last)
+
631  {
+
632  --last;
+
633  *result = *last;
+
634  ++result;
+
635  }
+
636 
+
637  return result;
+
638 }
+
639 
+
641 template <class Iterator>
+
642 inline bool isSorted(Iterator first, const Iterator last)
+
643 {
+
644  if (first == last)
+
645  return true;
+
646 
+
647  Iterator next = first;
+
648  while (++next != last)
+
649  {
+
650  if (*next < *first)
+
651  return false;
+
652  ++first;
+
653  }
+
654 
+
655  return true;
+
656 }
+
657 
+
659 template <class Iterator, class Compare>
+
660 inline bool isSorted(Iterator first, const Iterator last, Compare comp)
+
661 {
+
662  if (first == last)
+
663  return true;
+
664 
+
665  Iterator next = first;
+
666  while (++next != last)
+
667  {
+
668  if (comp(*next, *first))
+
669  return false;
+
670  ++first;
+
671  }
+
672 
+
673  return true;
+
674 }
+
675 
+
677 template <class Iterator>
+
678 inline const Iterator isSortedUntil(Iterator first, const Iterator last)
+
679 {
+
680  if (first == last)
+
681  return first;
+
682 
+
683  Iterator next = first;
+
684  while (++next != last)
+
685  {
+
686  if (*next < *first)
+
687  return next;
+
688  ++first;
+
689  }
+
690 
+
691  return last;
+
692 }
+
693 
+
695 template <class Iterator, class Compare>
+
696 inline const Iterator isSortedUntil(Iterator first, const Iterator last, Compare comp)
+
697 {
+
698  if (first == last)
+
699  return first;
+
700 
+
701  Iterator next = first;
+
702  while (++next != last)
+
703  {
+
704  if (comp(*next, *first))
+
705  return next;
+
706  ++first;
+
707  }
+
708 
+
709  return last;
+
710 }
+
711 
+
713 template <class Iterator, class Compare>
+
714 inline Iterator partition(Iterator first, Iterator last, Compare comp)
+
715 {
+
716  Iterator pivot = last;
+
717 
+
718  while (first != last)
+
719  {
+
720  while (comp(*first, *pivot))
+
721  {
+
722  ++first;
+
723  if (first == last)
+
724  return first;
+
725  }
+
726 
+
727  do
+
728  {
+
729  --last;
+
730  if (first == last)
+
731  return first;
+
732  } while (!comp(*last, *pivot));
+
733 
+
734  swap(*first, *last);
+
735  ++first;
+
736  }
+
737 
+
738  return first;
+
739 }
+
740 
+
741 namespace {
+
742 
+
744  template <class Iterator, class Compare>
+
745  inline void quicksort(Iterator first, Iterator last, RandomAccessIteratorTag, Compare comp)
+
746  {
+
747  int size = distance(first, last);
+
748  if (size > 1)
+
749  {
+
750  Iterator p = prev(last);
+
751  swap(*next(first, size / 2), *p);
+
752  Iterator q = partition(first, p, comp);
+
753  swap(*q, *p);
+
754  quicksort(first, q, RandomAccessIteratorTag(), comp);
+
755  quicksort(next(q), last, RandomAccessIteratorTag(), comp);
+
756  }
+
757  }
+
758 
+
760  template <class Iterator, class Compare>
+
761  inline void quicksort(Iterator first, Iterator last, BidirectionalIteratorTag, Compare comp)
+
762  {
+
763  if (first != last)
+
764  {
+
765  Iterator p = prev(last);
+
766  swap(*first, *p);
+
767  Iterator q = partition(first, p, comp);
+
768  swap(*q, *p);
+
769  quicksort(first, q, BidirectionalIteratorTag());
+
770  quicksort(next(q), last, BidirectionalIteratorTag());
+
771  }
+
772  }
+
773 
+
774 }
+
775 
+
777 template <class Iterator, class Compare>
+
778 inline void quicksort(Iterator first, Iterator last, Compare comp)
+
779 {
+
780  quicksort(first, last, IteratorTraits<Iterator>::IteratorCategory(), comp);
+
781 }
+
782 
+
784 template <class Iterator>
+
785 inline void quicksort(Iterator first, Iterator last)
+
786 {
+
787  quicksort(first, last, IteratorTraits<Iterator>::IteratorCategory(), IsLess<typename IteratorTraits<Iterator>::ValueType>);
+
788 }
+
789 
+
791 template <class Iterator>
+
792 inline void quicksortDesc(Iterator first, Iterator last)
+
793 {
+
794  quicksort(first, last, IteratorTraits<Iterator>::IteratorCategory(), IsNotLess<typename IteratorTraits<Iterator>::ValueType>);
+
795 }
+
796 
+
797 }
+
798 
+
799 #endif
+
A function object returning true if its argument is equal to a reference value sets upon object const...
Definition: algorithms.h:41
+
A function object returning true if its argument is greater than a reference value sets upon object c...
Definition: algorithms.h:67
+
A function object returning true if its argument is less than a reference value sets upon object cons...
Definition: algorithms.h:93
+
A function object returning true if its argument is not equal to a reference value sets upon object c...
Definition: algorithms.h:54
+
A function object returning true if its argument is not greater than a reference value sets upon obje...
Definition: algorithms.h:80
+
A function object returning true if its argument is not less than a reference value sets upon object ...
Definition: algorithms.h:106
+
+ + + + diff --git a/master/annotated.html b/master/annotated.html new file mode 100644 index 0000000000..14ec1aeda1 --- /dev/null +++ b/master/annotated.html @@ -0,0 +1,384 @@ + + + + + + + +nCine: Class List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+
[detail level 1234]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 Nncine
 Nnctl
 Ntracy
+
+
+ + + + diff --git a/master/bc_s.png b/master/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..615bbcca8ecea76581aa353eb8edb6de35f24610 GIT binary patch literal 680 zcmV;Z0$2TsP)#cE)vc(=2U8-HKi+2uh*Ha1jGHC_zjqEHWbcqM#R_dI|e@in1`v zs0df0?+??op2`o@)?RY8U1?mkC?%-r&cZHpt$*S0yZp|b`@84dbLRX3DDtj(J}+x6 zFbhoR1787v0}0oc1tq~wDG}-Xk3=5;a6tF_&ukK?tux0{{EO`iWBR~vPH?a9w8?#b zwNw>|bbLbp5aCkntS>W}-8MGcM0fDp&*?TU!reEgOcoJB6S>+Nf)Fl`>4PJdM{YHl zTG6KOveV>-HA3mVMNpVSBEQ-a$)$E+zke9Gz~R(5MlAG(+l zbi6)d6_iVYvpriWTwoE3{wFZ)eU4hIo`8%I*&Uz#*qfQC?Yn{| zZ)2gWWl33Jhunam3tc-*Zr5CS#jJw1#B8*M6P)j=%EkzP@+kpxUyzuKCOJV%r1Gd! z_J$pjHatBStpflK=v-%L+@}=SFrwka+<2;Xt5J%DMF5_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C>=yU2;SU?=|*fN&Wm*4q}+d#p2cv_>v&bvdxm{q_MZuqcF;ciRq|HzqvrY3 v7Ya|Y3!5*>dVXnTU-16>8#zoia35q{yHUEhaJxq}&=v+yS3j3^P6 + + + + + + +nCine: Class Index + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class Index
+
+
+
A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W
+
+
+
A
+
addLValueReference (nctl)
addRValueReference (nctl)
IAudioDevice::ALExtensions (ncine)
allocHelpers (nctl::detail)
allocHelpers< true > (nctl::detail)
AllocManager (nctl)
AllocManagerInitializer (nctl)
AndroidApplication (ncine)
AnimatedSprite (ncine)
AppConfiguration (ncine)
Application (ncine)
Array (nctl)
ArrayIterator (nctl)
AssetFile (ncine)
Atomic32 (nctl)
Atomic64 (nctl)
IAudioDevice::Attributes (ncine)
AudioBuffer (ncine)
AudioBufferPlayer (ncine)
AudioEffect (ncine)
AudioEffectProperties (ncine)
AudioEffectSlot (ncine)
AudioFilter (ncine)
AudioStream (ncine)
AudioStreamPlayer (ncine)
AudioEffectProperties::AutoWahProperties (ncine)
+
+
B
+
BaseListNode (nctl)
BaseSprite (ncine)
BidirectionalIteratorTag (nctl)
BitSet (nctl)
FreeListAllocator::Block (nctl)
+
+
C
+
Camera (ncine)
AudioEffectProperties::ChorusProperties (ncine)
Color (ncine)
ColorAffector (ncine)
Colorf (ncine)
ColorHdr (ncine)
ColorAffector::ColorStep (ncine)
AudioEffectProperties::CompressorProperties (ncine)
constructHelpers (nctl::detail)
constructHelpers< true > (nctl::detail)
copyHelpers (nctl::detail)
copyHelpers< true > (nctl::detail)
+
+
D
+
RunInfo::DebugInfo (ncine::LuaUtils)
DefaultDelete (nctl)
DefaultDelete< T[]> (nctl)
destructHelpers (nctl::detail)
destructHelpers< true > (nctl::detail)
FileSystem::Directory (ncine)
DisplayMode (ncine)
IDebugOverlay::DisplaySettings (ncine)
AudioEffectProperties::DistortionProperties (ncine)
DrawableNode (ncine)
DropEvent (ncine)
+
+
E
+
AudioEffectProperties::EaxReverbProperties (ncine)
AudioEffectProperties::EchoProperties (ncine)
EmscriptenLocalFile (ncine)
AudioEffectProperties::EqualizerProperties (ncine)
+
+
F
+
FastHashFunc (nctl)
FastHashFunc< const char * > (nctl)
FastHashFunc< String > (nctl)
FileSystem::FileDate (ncine)
FileSystem (ncine)
FixedHashFunc (nctl)
AudioEffectProperties::FlangerProperties (ncine)
FNV1aHashFunc (nctl)
FNV1aHashFunc< const char * > (nctl)
FNV1aHashFunc< String > (nctl)
Font (ncine)
ForwardIteratorTag (nctl)
FreeListAllocator (nctl)
AudioEffectProperties::FrequencyShifterProperties (ncine)
+
+
G
+
IGfxCapabilities::GLArrayIntValues (ncine)
IGfxDevice::GLContextInfo (ncine)
IGfxCapabilities::GLExtensions (ncine)
IGfxCapabilities::GlInfoStrings (ncine)
IGfxCapabilities::GLIntValues (ncine)
GpuCtxScope (tracy)
Application::GuiSettings (ncine)
+
+
H
+
Hash64 (ncine)
HashMap (nctl)
HashMapHelperTraits (nctl)
HashMapHelperTraits< K, T, HashFunc, false > (nctl)
HashMapHelperTraits< K, T, HashFunc, true > (nctl)
HashMapIterator (nctl)
HashMapList (nctl)
HashMapListHelperTraits (nctl)
HashMapListHelperTraits< K, T, HashFunc, false > (nctl)
HashMapListHelperTraits< K, T, HashFunc, true > (nctl)
HashMapListIterator (nctl)
HashSet (nctl)
HashSetHelperTraits (nctl)
HashSetIterator (nctl)
HashSetList (nctl)
HashSetListHelperTraits (nctl)
HashSetListIterator (nctl)
HatState (ncine)
+
+
I
+
IAllocator (nctl)
IAppEventHandler (ncine)
IAudioDevice (ncine)
IAudioPlayer (ncine)
IDebugOverlay (ncine)
IdentityHashFunc (nctl)
IFile (ncine)
IFrameTimer (ncine)
IGfxCapabilities (ncine)
IGfxDevice (ncine)
IIndexer (ncine)
IInputEventHandler (ncine)
IInputManager (ncine)
ILogger (ncine)
MakeUniqueReturn< T[size], Deleter >::invalid (nctl)
isClass (nctl)
isClass< T, typename detail::voidType< int T::* >::type > (nctl)
isDestructible (nctl)
isDestructible< T, decltype(declVal< T & >().~T())> (nctl)
isEmpty (nctl)
IsEqualTo (nctl)
IsGreaterThan (nctl)
isIntegral (nctl)
isIntegral< bool > (nctl)
isIntegral< char > (nctl)
isIntegral< int > (nctl)
isIntegral< long > (nctl)
isIntegral< long long > (nctl)
isIntegral< short int > (nctl)
isIntegral< unsigned char > (nctl)
isIntegral< unsigned int > (nctl)
isIntegral< unsigned long > (nctl)
isIntegral< unsigned long long > (nctl)
isIntegral< unsigned short int > (nctl)
IsLessThan (nctl)
isLValueReference (nctl)
isLValueReference< T & > (nctl)
IsNotEqualTo (nctl)
IsNotGreaterThan (nctl)
IsNotLessThan (nctl)
isTriviallyConstructible (nctl)
isTriviallyCopyable (nctl)
isTriviallyDestructible (nctl)
IteratorTraits (nctl)
IteratorTraits< ArrayIterator< T, false > > (nctl)
IteratorTraits< ArrayIterator< T, true > > (nctl)
IteratorTraits< HashMapIterator< K, T, HashFunc, false > > (nctl)
IteratorTraits< HashMapIterator< K, T, HashFunc, true > > (nctl)
IteratorTraits< HashMapListIterator< K, T, HashFunc, false > > (nctl)
IteratorTraits< HashMapListIterator< K, T, HashFunc, true > > (nctl)
IteratorTraits< HashSetIterator< K, HashFunc > > (nctl)
IteratorTraits< HashSetListIterator< K, HashFunc > > (nctl)
IteratorTraits< ListIterator< T, false > > (nctl)
IteratorTraits< ListIterator< T, true > > (nctl)
IteratorTraits< ReverseIterator< Iterator > > (nctl)
IteratorTraits< SparseSetIterator< T > > (nctl)
IteratorTraits< StaticHashMapIterator< K, T, HashFunc, Capacity, false > > (nctl)
IteratorTraits< StaticHashMapIterator< K, T, HashFunc, Capacity, true > > (nctl)
IteratorTraits< StaticHashSetIterator< K, HashFunc, Capacity > > (nctl)
IteratorTraits< StringIterator< false > > (nctl)
IteratorTraits< StringIterator< true > > (nctl)
ITextureSaver (ncine)
IThreadCommand (ncine)
IThreadPool (ncine)
+
+
J
+
JenkinsHashFunc (nctl)
JenkinsHashFunc< const char * > (nctl)
JenkinsHashFunc< String > (nctl)
JoyAxisEvent (ncine)
JoyButtonEvent (ncine)
JoyConnectionEvent (ncine)
JoyHatEvent (ncine)
JoyMappedAxisEvent (ncine)
JoyMappedButtonEvent (ncine)
JoyMappedState (ncine)
JoystickState (ncine)
+
+
K
+
KeyboardEvent (ncine)
KeyboardState (ncine)
+
+
L
+
LinearAllocator (nctl)
List (nctl)
ListIterator (nctl)
ListNode (nctl)
LuaColorUtils (ncine)
LuaIAppEventHandler (ncine)
LuaIInputEventHandler (ncine)
LuaRectUtils (ncine)
LuaStateManager (ncine)
LuaUntrackedUserData (ncine)
LuaVector2Utils (ncine)
LuaVector3Utils (ncine)
LuaVector4Utils (ncine)
+
+
M
+
MakeUniqueReturn (nctl)
MakeUniqueReturn< T[], Deleter > (nctl)
MakeUniqueReturn< T[size], Deleter > (nctl)
MallocAllocator (nctl)
Matrix4x4 (ncine)
MeshSprite (ncine)
ModuloHashFunc (nctl)
IGfxDevice::Monitor (ncine)
MouseEvent (ncine)
MouseState (ncine)
+
+
N
+
NuklearContext (ncine)
NullAudioDevice (ncine)
NullGfxCapabilities (ncine)
NullIndexer (ncine)
NullLogger (ncine)
NullThreadPool (ncine)
+
+
O
+
Object (ncine)
IFile::OpenMode (ncine)
+
+
P
+
PairImpl (nctl::detail)
PairImpl< T1, T2, true > (nctl::detail)
Particle (ncine)
ParticleAffector (ncine)
ParticleInitializer (ncine)
ParticleSystem (ncine)
PCApplication (ncine)
AudioEffectProperties::PitchShifterProperties (ncine)
TextureSaverPng::PngProperties (ncine)
TouchEvent::Pointer (ncine)
PoolAllocator (nctl)
PositionAffector (ncine)
PositionAffector::PositionStep (ncine)
Camera::ProjectionValues (ncine)
AudioFilter::Properties (ncine)
ITextureSaver::Properties (ncine)
ProxyAllocator (nctl)
+
+
Q
+
Qt5Widget (ncine)
Quaternion (ncine)
+
+
R
+
Random (ncine)
RandomAccessIteratorTag (nctl)
Rect (ncine)
RectAnimation (ncine)
removeExtent (nctl)
removeExtent< T[]> (nctl)
removeExtent< T[N]> (nctl)
removeReference (nctl)
removeReference< T & > (nctl)
removeReference< T && > (nctl)
RenderDocCapture (ncine)
Application::RenderingSettings (ncine)
AudioEffectProperties::ReverbProperties (ncine)
ReverseIterator (nctl)
ReversionWrapper (nctl)
AudioEffectProperties::RingModulatorProperties (ncine)
RotationAffector (ncine)
RotationAffector::RotationStep (ncine)
RunInfo (ncine::LuaUtils)
+
+
S
+
SaxHashFunc (nctl)
SaxHashFunc< const char * > (nctl)
SaxHashFunc< String > (nctl)
SceneNode (ncine)
ScrollEvent (ncine)
ServiceLocator (ncine)
Shader (ncine)
ShaderState (ncine)
SharedPtr (nctl)
SizeAffector (ncine)
SizeAffector::SizeStep (ncine)
SparseSet (nctl)
SparseSetIterator (nctl)
Sprite (ncine)
StackAllocator (nctl)
LuaStateManager::StateToManager (ncine)
StaticArray (nctl)
StaticHashMap (nctl)
StaticHashMapHelperTraits (nctl)
StaticHashMapHelperTraits< K, T, HashFunc, Capacity, false > (nctl)
StaticHashMapHelperTraits< K, T, HashFunc, Capacity, true > (nctl)
StaticHashMapIterator (nctl)
StaticHashSet (nctl)
StaticHashSetHelperTraits (nctl)
StaticHashSetIterator (nctl)
StaticString (nctl)
Hash64::Statistics (ncine)
String (nctl)
StringIterator (nctl)
+
+
T
+
TextInputEvent (ncine)
TextNode (ncine)
Texture (ncine)
TextureSaverPng (ncine)
TextureSaverWebP (ncine)
Timer (ncine)
TimeStamp (ncine)
Application::Timings (ncine)
TouchEvent (ncine)
typeIdentity (nctl::detail)
+
+
U
+
UniquePtr (nctl)
UniquePtr< T[], Deleter > (nctl)
+
+
V
+
Vector2 (ncine)
Vector3 (ncine)
Vector4 (ncine)
VelocityAffector (ncine)
VelocityAffector::VelocityStep (ncine)
MeshSprite::Vertex (ncine)
MeshSprite::VertexNoTexture (ncine)
IGfxDevice::VideoMode (ncine)
Viewport (ncine)
Camera::ViewValues (ncine)
AudioEffectProperties::VocalMorpherProperties (ncine)
voidType (nctl::detail)
+
+
W
+
TextureSaverWebP::WebPProperties (ncine)
IGfxDevice::WindowMode (ncine)
+
+
+ + + + diff --git a/master/classncine_1_1_android_application-members.html b/master/classncine_1_1_android_application-members.html new file mode 100644 index 0000000000..6c9e211379 --- /dev/null +++ b/master/classncine_1_1_android_application-members.html @@ -0,0 +1,146 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::AndroidApplication Member List
+
+
+ +

This is the complete list of members for ncine::AndroidApplication, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
appCfg_ (defined in ncine::Application)ncine::Applicationprotected
appConfiguration() constncine::Applicationinline
appEventHandler_ (defined in ncine::Application)ncine::Applicationprotected
Application() (defined in ncine::Application)ncine::Applicationprotected
autoSuspension() constncine::Applicationinline
autoSuspension_ (defined in ncine::Application)ncine::Applicationprotected
debugOverlay_ (defined in ncine::Application)ncine::Applicationprotected
debugOverlayNullSettings_ (defined in ncine::Application)ncine::Applicationprotected
debugOverlaySettings()ncine::Applicationinline
enableAccelerometer(bool enabled)ncine::AndroidApplication
externalDataPath() constncine::AndroidApplication
frameTimer()ncine::Application
frameTimer_ (defined in ncine::Application)ncine::Applicationprotected
gfxDevice()ncine::Applicationinline
gfxDevice_ (defined in ncine::Application)ncine::Applicationprotected
guiSettings()ncine::Applicationinline
guiSettings_ (defined in ncine::Application)ncine::Applicationprotected
hasFocus() constncine::Applicationinline
hasFocus_ (defined in ncine::Application)ncine::Applicationprotected
height() constncine::Applicationinline
heightInt() constncine::Applicationinline
initCommon()ncine::Applicationprotected
inputManager()ncine::Applicationinline
inputManager_ (defined in ncine::Application)ncine::Applicationprotected
internalDataPath() constncine::AndroidApplication
interval() constncine::Application
isInitialized() constncine::AndroidApplicationinline
isSuspended() constncine::Applicationinline
isSuspended_ (defined in ncine::Application)ncine::Applicationprotected
numFrames() constncine::Application
obbPath() constncine::AndroidApplication
packageName() constncine::AndroidApplicationinline
processCommand(struct android_app *state, int32_t cmd)ncine::AndroidApplicationstatic
profileStartTime_ (defined in ncine::Application)ncine::Applicationprotected
quit()ncine::Applicationinline
renderingSettings()ncine::Applicationinline
renderingSettings_ (defined in ncine::Application)ncine::Applicationprotected
resizeScreenViewport(int width, int height)ncine::Applicationprotected
resolution() constncine::Applicationinline
resolutionInt() constncine::Applicationinline
resume()ncine::Applicationprotected
rootNode()ncine::Applicationinline
rootNode_ (defined in ncine::Application)ncine::Applicationprotected
screenViewport()ncine::Application
screenViewport_ (defined in ncine::Application)ncine::Applicationprotected
sdkVersion() constncine::AndroidApplication
setAutoSuspension(bool autoSuspension)ncine::Applicationinline
setSuspended(bool suspended)ncine::Applicationinline
shouldQuit() constncine::Applicationinline
shouldQuit_ (defined in ncine::Application)ncine::Applicationprotected
shutdownCommon()ncine::Applicationprotected
start(struct android_app *state, nctl::UniquePtr< IAppEventHandler >(*createAppEventHandler)())ncine::AndroidApplicationstatic
step()ncine::Applicationprotected
suspend()ncine::Applicationprotected
theApplication()ncine::AndroidApplicationfriend
timings() constncine::Applicationinline
timings_ (defined in ncine::Application)ncine::Applicationprotected
toggleSoftInput()ncine::AndroidApplication
updateScalingFactor()ncine::Applicationprotected
width() constncine::Applicationinline
widthInt() constncine::Applicationinline
~Application() (defined in ncine::Application)ncine::Applicationprotected
+ + + + diff --git a/master/classncine_1_1_android_application.html b/master/classncine_1_1_android_application.html new file mode 100644 index 0000000000..b7683027e6 --- /dev/null +++ b/master/classncine_1_1_android_application.html @@ -0,0 +1,380 @@ + + + + + + + +nCine: ncine::AndroidApplication Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::AndroidApplication Class Reference
+
+
+ +

Main entry point and handler for nCine Android applications. + More...

+ +

#include <AndroidApplication.h>

+
+Inheritance diagram for ncine::AndroidApplication:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for ncine::AndroidApplication:
+
+
Collaboration graph
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+unsigned int sdkVersion () const
 Wrapper around AndroidJniHelper::sdkVersion()
 
+void enableAccelerometer (bool enabled)
 Wrapper around AndroidInputManager::enableAccelerometer()
 
+bool isInitialized () const
 Returns true if the application has already called init()
 
+const char * packageName () const
 Returns the package name for the Android application.
 
+const char * internalDataPath () const
 Returns the path to the internal data directory from the native activity.
 
+const char * externalDataPath () const
 Returns the path to the external data directory from the native activity.
 
+const char * obbPath () const
 Returns the path to the OBB directory from the native activity.
 
+void toggleSoftInput ()
 Toggles the software keyboard.
 
- Public Member Functions inherited from ncine::Application
+const AppConfigurationappConfiguration () const
 Returns the configuration used to initialize the application.
 
+RenderingSettingsrenderingSettings ()
 Returns the run-time rendering settings.
 
+GuiSettingsguiSettings ()
 Returns the run-time GUI settings.
 
+IDebugOverlay::DisplaySettingsdebugOverlaySettings ()
 Returns the run-time debug overlay settings, if debug overlay is available.
 
+const float * timings () const
 Returns all timings.
 
+IGfxDevicegfxDevice ()
 Returns the graphics device instance.
 
+SceneNoderootNode ()
 Returns the root node of the transformation graph.
 
+ViewportscreenViewport ()
 Returns the screen viewport.
 
+IInputManagerinputManager ()
 Returns the input manager instance.
 
+unsigned long int numFrames () const
 Returns the total number of frames already rendered.
 
+float interval () const
 Returns the time in seconds that last frame took to complete.
 
+IFrameTimerframeTimer ()
 Returns the frame timer interface.
 
+float width () const
 Returns the drawable screen width as a float number.
 
+float height () const
 Returns the drawable screen height as a float number.
 
+Vector2f resolution () const
 Returns the drawable screen resolution as a Vector2f object.
 
+int widthInt () const
 Returns the drawable screen width as an integer number.
 
+int heightInt () const
 Returns the drawable screen height as an integer number.
 
+Vector2i resolutionInt () const
 Returns the drawable screen resolution as a Vector2i object.
 
bool isSuspended () const
 Returns the value of the suspension flag. More...
 
+void setSuspended (bool suspended)
 Sets the suspension flag value.
 
bool autoSuspension () const
 Returns the value of the auto-suspension flag. More...
 
+void setAutoSuspension (bool autoSuspension)
 Sets the auto-suspension flag value.
 
+void quit ()
 Asks the application to quit as soon as possible (by raising the quit flag)
 
+bool shouldQuit () const
 Returns the value of the quit flag.
 
+bool hasFocus () const
 Returns the focus flag value.
 
+ + + + + + + +

+Static Public Member Functions

+static void start (struct android_app *state, nctl::UniquePtr< IAppEventHandler >(*createAppEventHandler)())
 Entry point method to be called in the android_main() function.
 
+static void processCommand (struct android_app *state, int32_t cmd)
 Processes an Android application command.
 
+ + + + +

+Friends

+DLL_PUBLIC ApplicationtheApplication ()
 Meyers' Singleton.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Member Functions inherited from ncine::Application
+void initCommon ()
 Must be called before giving control to the application.
 
+void step ()
 A single step of the game loop made to render a frame.
 
+void shutdownCommon ()
 Must be called before exiting to shut down the application.
 
+void suspend ()
 Called when the application gets suspended.
 
+void resume ()
 Called when the application resumes execution.
 
bool resizeScreenViewport (int width, int height)
 Resizes the screen viewport, if it exists. More...
 
bool updateScalingFactor ()
 Checks if the window scaling factor has changed this frame. More...
 
- Protected Attributes inherited from ncine::Application
+bool isSuspended_
 
+bool autoSuspension_
 
+bool hasFocus_
 
+bool shouldQuit_
 
+const AppConfiguration appCfg_
 
+RenderingSettings renderingSettings_
 
+GuiSettings guiSettings_
 
+float timings_ [Timings::COUNT]
 
+IDebugOverlay::DisplaySettings debugOverlayNullSettings_
 
+TimeStamp profileStartTime_
 
+nctl::UniquePtr< FrameTimer > frameTimer_
 
+nctl::UniquePtr< IGfxDevicegfxDevice_
 
+nctl::UniquePtr< SceneNoderootNode_
 
+nctl::UniquePtr< ScreenViewport > screenViewport_
 
+nctl::UniquePtr< IDebugOverlaydebugOverlay_
 
+nctl::UniquePtr< IInputManagerinputManager_
 
+nctl::UniquePtr< IAppEventHandlerappEventHandler_
 
+

Detailed Description

+

Main entry point and handler for nCine Android applications.

+

The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classncine_1_1_android_application__coll__graph.map b/master/classncine_1_1_android_application__coll__graph.map new file mode 100644 index 0000000000..6ad55c726d --- /dev/null +++ b/master/classncine_1_1_android_application__coll__graph.map @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/master/classncine_1_1_android_application__coll__graph.md5 b/master/classncine_1_1_android_application__coll__graph.md5 new file mode 100644 index 0000000000..4cc2efdc52 --- /dev/null +++ b/master/classncine_1_1_android_application__coll__graph.md5 @@ -0,0 +1 @@ +f7ebd35396ab1006cd7edf34649aaac3 \ No newline at end of file diff --git a/master/classncine_1_1_android_application__coll__graph.png b/master/classncine_1_1_android_application__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..193861869414098db93419abe5519fc17b299cab GIT binary patch literal 203601 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%0DCJ>s@nO|!dIQr_Cxex#aU=Q)s#y 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
q7VhKNqgZbY5ZIpEnwXtNu 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 literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_android_application__inherit__graph.map b/master/classncine_1_1_android_application__inherit__graph.map new file mode 100644 index 0000000000..3735e001da --- /dev/null +++ b/master/classncine_1_1_android_application__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classncine_1_1_android_application__inherit__graph.md5 b/master/classncine_1_1_android_application__inherit__graph.md5 new file mode 100644 index 0000000000..95bd1df46b --- /dev/null +++ b/master/classncine_1_1_android_application__inherit__graph.md5 @@ -0,0 +1 @@ +be9c714b04e2f99c712430ed74c1a411 \ No newline at end of file diff --git a/master/classncine_1_1_android_application__inherit__graph.png b/master/classncine_1_1_android_application__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..2d1a2511f8d5bf7921ab1d38a33275c5955f36a2 GIT binary patch literal 3944 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 k&OF0(K1PcCZ@wNgp3y4|!qe)Of}=CUKo6l?s%; + + + + + + +nCine: Member List + + + + + + + + + + +
+
+
ncine::AnimatedSprite Member List
+
+
+ +

This is the complete list of members for ncine::AnimatedSprite, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
aabb() constncine::DrawableNodeinline
aabb_ncine::DrawableNodeprotected
AabbBit enum value (defined in ncine::SceneNode)ncine::SceneNodeprotected
absAlpha() constncine::SceneNodeinline
absAnchorPoint() constncine::SceneNodeinline
absColor() constncine::SceneNodeinline
absColor_ncine::SceneNodeprotected
absHeight() constncine::DrawableNodeinlinevirtual
absLayer() constncine::SceneNodeinline
absLayer_ncine::SceneNodeprotected
absPosition() constncine::SceneNodeinline
absPosition_ncine::SceneNodeprotected
absRotation() constncine::SceneNodeinline
absRotation_ncine::SceneNodeprotected
absScale() constncine::SceneNodeinline
absScaleFactor_ncine::SceneNodeprotected
absSize() constncine::DrawableNodeinline
absWidth() constncine::DrawableNodeinlinevirtual
addAnimation(const RectAnimation &anim)ncine::AnimatedSprite
addAnimation(RectAnimation &&anim)ncine::AnimatedSprite
addChildNode(SceneNode *childNode)ncine::SceneNode
alpha() constncine::SceneNodeinline
AnchorBottomLeft (defined in ncine::DrawableNode)ncine::DrawableNodestatic
AnchorBottomRight (defined in ncine::DrawableNode)ncine::DrawableNodestatic
AnchorCenter (defined in ncine::DrawableNode)ncine::DrawableNodestatic
anchorPoint() constncine::DrawableNodeinline
anchorPoint_ncine::SceneNodeprotected
AnchorTopLeft (defined in ncine::DrawableNode)ncine::DrawableNodestatic
AnchorTopRight (defined in ncine::DrawableNode)ncine::DrawableNodestatic
AnimatedSprite()ncine::AnimatedSprite
AnimatedSprite(SceneNode *parent, Texture *texture)ncine::AnimatedSprite
AnimatedSprite(Texture *texture)ncine::AnimatedSpriteexplicit
AnimatedSprite(SceneNode *parent, Texture *texture, float xx, float yy)ncine::AnimatedSprite
AnimatedSprite(SceneNode *parent, Texture *texture, const Vector2f &position)ncine::AnimatedSprite
AnimatedSprite(Texture *texture, float xx, float yy)ncine::AnimatedSprite
AnimatedSprite(Texture *texture, const Vector2f &position)ncine::AnimatedSprite
AnimatedSprite(AnimatedSprite &&)=defaultncine::AnimatedSprite
AnimatedSprite(const AnimatedSprite &other)ncine::AnimatedSpriteprotected
animationIndex() constncine::AnimatedSpriteinline
animations()ncine::AnimatedSpriteinline
animations() constncine::AnimatedSpriteinline
BaseSprite(BaseSprite &&)=defaultncine::BaseSprite
BaseSprite(SceneNode *parent, Texture *texture, float xx, float yy)ncine::BaseSpriteprotected
BaseSprite(SceneNode *parent, Texture *texture, const Vector2f &position)ncine::BaseSpriteprotected
BaseSprite(const BaseSprite &other)ncine::BaseSpriteprotected
BlendingFactor enum namencine::DrawableNode
BlendingPreset enum namencine::DrawableNode
childOrderIndex() constncine::SceneNode
childOrderIndex_ncine::SceneNodeprotected
children()ncine::SceneNodeinline
children() constncine::SceneNodeinline
children_ncine::SceneNodeprotected
clearAnimations()ncine::AnimatedSprite
clone() constncine::AnimatedSpriteinline
color() constncine::SceneNodeinline
color_ncine::SceneNodeprotected
ColorBit enum value (defined in ncine::SceneNode)ncine::SceneNodeprotected
currentAnimation()ncine::AnimatedSprite
currentAnimation() constncine::AnimatedSprite
deleteChildrenOnDestruction() constncine::SceneNodeinline
destBlendingFactor() constncine::DrawableNode
DirtyBitPositions enum namencine::SceneNodeprotected
dirtyBits_ncine::SceneNodeprotected
draw(RenderQueue &renderQueue) overridencine::DrawableNodevirtual
DrawableNode(SceneNode *parent, float xx, float yy)ncine::DrawableNode
DrawableNode(SceneNode *parent, const Vector2f &position)ncine::DrawableNode
DrawableNode(SceneNode *parent)ncine::DrawableNodeexplicit
DrawableNode()ncine::DrawableNode
DrawableNode(DrawableNode &&)ncine::DrawableNode
DrawableNode(const DrawableNode &other)ncine::DrawableNodeprotected
drawEnabled_ (defined in ncine::SceneNode)ncine::SceneNodeprotected
flippedX_ncine::BaseSpriteprotected
flippedY_ncine::BaseSpriteprotected
frame() constncine::AnimatedSprite
fromId(unsigned int id)ncine::Objectstatic
height() constncine::DrawableNodeinlinevirtual
height_ncine::DrawableNodeprotected
id() constncine::Objectinline
instanceBlock_ (defined in ncine::BaseSprite)ncine::BaseSpriteprotected
isBlendingEnabled() constncine::DrawableNode
isDrawEnabled() constncine::SceneNodeinline
isEnabled() constncine::SceneNodeinline
isFlippedX() constncine::BaseSpriteinline
isFlippedY() constncine::BaseSpriteinline
isPaused() constncine::AnimatedSprite
isUpdateEnabled() constncine::SceneNodeinline
lastFrameRendered() constncine::DrawableNodeinline
lastFrameRendered_ncine::DrawableNodeprotected
lastFrameUpdated() constncine::SceneNodeinline
lastFrameUpdated_ncine::SceneNodeprotected
layer() constncine::SceneNodeinline
layer_ncine::SceneNodeprotected
localMatrix() constncine::SceneNodeinline
localMatrix_ncine::SceneNodeprotected
MaxNameLengthncine::Objectstatic
MinRotationncine::SceneNodestatic
move(float x, float y)ncine::SceneNodeinline
move(const Vector2f &position)ncine::SceneNodeinline
moveX(float x)ncine::SceneNodeinline
moveY(float y)ncine::SceneNodeinline
name() constncine::Object
numAnimations()ncine::AnimatedSpriteinline
numFrames() constncine::AnimatedSprite
Object(ObjectType type)ncine::Objectexplicit
Object(ObjectType type, const char *name)ncine::Object
Object(Object &&other)ncine::Object
Object(const Object &other)ncine::Objectprotected
ObjectType enum namencine::Object
operator=(AnimatedSprite &&)=defaultncine::AnimatedSprite
ncine::Sprite::operator=(Sprite &&)=defaultncine::Sprite
ncine::BaseSprite::operator=(BaseSprite &&)=defaultncine::BaseSprite
ncine::DrawableNode::operator=(DrawableNode &&)ncine::DrawableNode
ncine::SceneNode::operator=(SceneNode &&other)ncine::SceneNode
ncine::SceneNode::operator=(const SceneNode &)=deletencine::SceneNodeprotected
ncine::Object::operator=(Object &&other)ncine::Object
parent() constncine::SceneNodeinline
parent()ncine::SceneNodeinline
parent_ncine::SceneNodeprotected
position() constncine::SceneNodeinline
position_ncine::SceneNodeprotected
removeAllChildrenNodes()ncine::SceneNode
removeChildNode(SceneNode *childNode)ncine::SceneNode
removeChildNodeAt(unsigned int index)ncine::SceneNode
renderCommand_ncine::DrawableNodeprotected
resetTexture()ncine::BaseSprite
rotation() constncine::SceneNodeinline
rotation_ncine::SceneNodeprotected
scale() constncine::SceneNodeinline
scaleFactor_ncine::SceneNodeprotected
SceneNode(SceneNode *parent, float x, float y)ncine::SceneNode
SceneNode(SceneNode *parent, const Vector2f &position)ncine::SceneNode
SceneNode(SceneNode *parent)ncine::SceneNodeexplicit
SceneNode()ncine::SceneNode
SceneNode(SceneNode &&other)ncine::SceneNode
SceneNode(const SceneNode &other)ncine::SceneNodeprotected
setAbsAnchorPoint(float x, float y)ncine::SceneNodeinline
setAbsAnchorPoint(const Vector2f &point)ncine::SceneNodeinline
setAlpha(unsigned char alpha)ncine::SceneNodeinline
setAlphaF(float alpha)ncine::SceneNodeinline
setAnchorPoint(float xx, float yy)ncine::DrawableNode
setAnchorPoint(const Vector2f &point)ncine::DrawableNodeinline
setAnimationIndex(unsigned int animIndex)ncine::AnimatedSprite
setBlendingEnabled(bool blendingEnabled)ncine::DrawableNode
setBlendingFactors(BlendingFactor srcBlendingFactor, BlendingFactor destBlendingFactor)ncine::DrawableNode
setBlendingPreset(BlendingPreset blendingPreset)ncine::DrawableNode
setColor(Color color)ncine::SceneNodeinline
setColor(Colorf color)ncine::SceneNodeinline
setColor(unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha)ncine::SceneNodeinline
setColorF(float red, float green, float blue, float alpha)ncine::SceneNodeinline
setDeleteChildrenOnDestruction(bool shouldDeleteChildrenOnDestruction)ncine::SceneNodeinline
setDrawEnabled(bool drawEnabled)ncine::SceneNodeinline
setEnabled(bool isEnabled)ncine::SceneNodeinline
setFlippedX(bool flippedX)ncine::BaseSprite
setFlippedY(bool flippedY)ncine::BaseSprite
setFrame(unsigned int frameNum)ncine::AnimatedSprite
setLayer(uint16_t layer)ncine::SceneNodeinline
setLocalMatrix(const Matrix4x4f &localMatrix)ncine::SceneNodeinline
setName(const char *name)ncine::Object
setParent(SceneNode *parentNode)ncine::SceneNode
setPaused(bool isPaused)ncine::AnimatedSprite
setPosition(float x, float y)ncine::SceneNodeinline
setPosition(const Vector2f &position)ncine::SceneNodeinline
setPositionX(float x)ncine::SceneNodeinline
setPositionY(float y)ncine::SceneNodeinline
setRotation(float rotation)ncine::SceneNodeinline
setScale(float scaleFactor)ncine::SceneNodeinline
setScale(float scaleFactorX, float scaleFactorY)ncine::SceneNodeinline
setScale(const Vector2f &scaleFactor)ncine::SceneNodeinline
setSize(float width, float height)ncine::BaseSprite
setSize(const Vector2f &size)ncine::BaseSpriteinline
setTexRect(const Recti &rect)ncine::BaseSprite
setTexture(Texture *texture)ncine::BaseSprite
setUpdateEnabled(bool updateEnabled)ncine::SceneNodeinline
setVisitOrderState(enum VisitOrderState visitOrderState)ncine::SceneNodeinline
setWorldMatrix(const Matrix4x4f &worldMatrix)ncine::SceneNodeinline
shaderHasChanged() overridencine::BaseSpriteprotectedvirtual
shouldDeleteChildrenOnDestruction_ncine::SceneNodeprotected
size() constncine::DrawableNodeinline
SizeBit enum value (defined in ncine::SceneNode)ncine::SceneNodeprotected
Sprite()ncine::Sprite
Sprite(SceneNode *parent, Texture *texture)ncine::Sprite
Sprite(Texture *texture)ncine::Spriteexplicit
Sprite(SceneNode *parent, Texture *texture, float xx, float yy)ncine::Sprite
Sprite(SceneNode *parent, Texture *texture, const Vector2f &position)ncine::Sprite
Sprite(Texture *texture, float xx, float yy)ncine::Sprite
Sprite(Texture *texture, const Vector2f &position)ncine::Sprite
Sprite(Sprite &&)=defaultncine::Sprite
Sprite(const Sprite &other)ncine::Spriteprotected
srcBlendingFactor() constncine::DrawableNode
sType() (defined in ncine::AnimatedSprite)ncine::AnimatedSpriteinlinestatic
swapChildPointer(SceneNode *first, SceneNode *second)ncine::SceneNodeprotected
swapChildrenNodes(unsigned int firstIndex, unsigned int secondIndex)ncine::SceneNode
swapNodeBack()ncine::SceneNode
swapNodeForward()ncine::SceneNode
texRect() constncine::BaseSpriteinline
texRect_ncine::BaseSpriteprotected
texture() constncine::BaseSpriteinline
texture_ncine::BaseSpriteprotected
TextureBit enum value (defined in ncine::SceneNode)ncine::SceneNodeprotected
transform() (defined in ncine::SceneNode)ncine::SceneNodeprotectedvirtual
TransformationBit enum value (defined in ncine::SceneNode)ncine::SceneNodeprotected
type() constncine::Objectinline
type_ncine::Objectprotected
unlinkChildNode(SceneNode *childNode)ncine::SceneNode
update(float interval) overridencine::AnimatedSpritevirtual
updateAabb()ncine::DrawableNodeprotectedvirtual
updateCulling()ncine::DrawableNodeprotected
updateEnabled_ (defined in ncine::SceneNode)ncine::SceneNodeprotected
updateRenderCommand() overridencine::BaseSpriteprotectedvirtual
visit(RenderQueue &renderQueue, unsigned int &visitOrderIndex)ncine::SceneNodevirtual
visitOrderIndex() constncine::SceneNodeinline
visitOrderIndex_ncine::SceneNodeprotected
visitOrderState() constncine::SceneNodeinline
VisitOrderState enum name (defined in ncine::SceneNode)ncine::SceneNode
visitOrderState_ncine::SceneNodeprotected
width() constncine::DrawableNodeinlinevirtual
width_ncine::DrawableNodeprotected
withVisitOrder_ncine::SceneNodeprotected
worldMatrix() constncine::SceneNodeinline
worldMatrix_ncine::SceneNodeprotected
~DrawableNode() override (defined in ncine::DrawableNode)ncine::DrawableNode
~Object()ncine::Objectvirtual
~SceneNode() overridencine::SceneNode
+ + + + diff --git a/master/classncine_1_1_animated_sprite.html b/master/classncine_1_1_animated_sprite.html new file mode 100644 index 0000000000..58dbde5207 --- /dev/null +++ b/master/classncine_1_1_animated_sprite.html @@ -0,0 +1,1073 @@ + + + + + + + +nCine: ncine::AnimatedSprite Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

A class for an animated sprite. + More...

+ +

#include <AnimatedSprite.h>

+
+Inheritance diagram for ncine::AnimatedSprite:
+
+
Inheritance graph
+ + + + + + + + +
[legend]
+
+Collaboration diagram for ncine::AnimatedSprite:
+
+
Collaboration graph
+ + + + + + + + + + + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

AnimatedSprite ()
 Default constructor for an animated sprite with no parent and no texture, positioned in the origin.
 
AnimatedSprite (SceneNode *parent, Texture *texture)
 Constructor for an animated sprite with a parent and texture, positioned in the relative origin.
 
AnimatedSprite (Texture *texture)
 Constructor for an animated sprite with a texture but no parent, positioned in the origin.
 
AnimatedSprite (SceneNode *parent, Texture *texture, float xx, float yy)
 Constructor for an animated sprite with a parent, a texture and a specified relative position.
 
AnimatedSprite (SceneNode *parent, Texture *texture, const Vector2f &position)
 Constructor for an animated sprite with a parent, a texture and a specified relative position as a vector.
 
AnimatedSprite (Texture *texture, float xx, float yy)
 Constructor for an animated sprite with a texture and a specified position but no parent.
 
AnimatedSprite (Texture *texture, const Vector2f &position)
 Constructor for an animated sprite with a texture and a specified position as a vector but no parent.
 
AnimatedSprite (AnimatedSprite &&)=default
 Default move constructor.
 
+AnimatedSpriteoperator= (AnimatedSprite &&)=default
 Default move assignment operator.
 
+AnimatedSprite clone () const
 Returns a copy of this object.
 
+bool isPaused () const
 Returns true if the current animation is paused.
 
+void setPaused (bool isPaused)
 Sets the pause state for the animation.
 
+void update (float interval) override
 Called once every frame to update the node.
 
+void addAnimation (const RectAnimation &anim)
 Adds a new animation.
 
+void addAnimation (RectAnimation &&anim)
 Adds a new animation with move semantics.
 
+void clearAnimations ()
 Deletes all animations.
 
+unsigned int numAnimations ()
 Returns the number of animations.
 
+nctl::Array< RectAnimation > & animations ()
 Returns the array of all animations.
 
+const nctl::Array< RectAnimation > & animations () const
 Returns the constant array of all animations.
 
+unsigned int animationIndex () const
 Returns the current animation index.
 
+void setAnimationIndex (unsigned int animIndex)
 Sets the current animation index.
 
+RectAnimationcurrentAnimation ()
 Returns the current animation, if any.
 
+const RectAnimationcurrentAnimation () const
 Returns the constant version of the current animation, if any.
 
+unsigned int numFrames () const
 Returns the number of frames in current animation.
 
+unsigned int frame () const
 Returns the frame number in current animation.
 
+void setFrame (unsigned int frameNum)
 Sets current animation to a specified frame number.
 
- Public Member Functions inherited from ncine::Sprite
Sprite ()
 Default constructor for a sprite with no parent and no texture, positioned in the origin.
 
Sprite (SceneNode *parent, Texture *texture)
 Constructor for a sprite with a parent and texture, positioned in the relative origin.
 
Sprite (Texture *texture)
 Constructor for a sprite with a texture but no parent, positioned in the origin.
 
Sprite (SceneNode *parent, Texture *texture, float xx, float yy)
 Constructor for a sprite with a parent, a texture and a specified relative position.
 
Sprite (SceneNode *parent, Texture *texture, const Vector2f &position)
 Constructor for a sprite with a parent, a texture and a specified relative position as a vector.
 
Sprite (Texture *texture, float xx, float yy)
 Constructor for a sprite with a texture and a specified position but no parent.
 
Sprite (Texture *texture, const Vector2f &position)
 Constructor for a sprite with a texture and a specified position as a vector but no parent.
 
Sprite (Sprite &&)=default
 Default move constructor.
 
+Spriteoperator= (Sprite &&)=default
 Default move assignment operator.
 
+Sprite clone () const
 Returns a copy of this object.
 
- Public Member Functions inherited from ncine::BaseSprite
BaseSprite (BaseSprite &&)=default
 Default move constructor.
 
+BaseSpriteoperator= (BaseSprite &&)=default
 Default move assignment operator.
 
+void setSize (float width, float height)
 Sets the sprite size.
 
+void setSize (const Vector2f &size)
 Sets the sprite size with a Vector2f
 
+const Texturetexture () const
 Gets the texture object.
 
void setTexture (Texture *texture)
 Sets the texture object. More...
 
void resetTexture ()
 Triggers a texture update without setting a new texture. More...
 
+Recti texRect () const
 Gets the texture source rectangle for blitting.
 
+void setTexRect (const Recti &rect)
 Sets the texture source rectangle for blitting.
 
+bool isFlippedX () const
 Returns true if the sprite texture is horizontally flipped.
 
+void setFlippedX (bool flippedX)
 Flips the texture rect horizontally.
 
+bool isFlippedY () const
 Returns true if the sprite texture is vertically flipped.
 
+void setFlippedY (bool flippedY)
 Flips the texture rect vertically.
 
- Public Member Functions inherited from ncine::DrawableNode
DrawableNode (SceneNode *parent, float xx, float yy)
 Constructor for a drawable node with a parent and a specified relative position.
 
DrawableNode (SceneNode *parent, const Vector2f &position)
 Constructor for a drawable node with a parent and a specified relative position as a vector.
 
DrawableNode (SceneNode *parent)
 Constructor for a drawable node with a parent and positioned in the relative origin.
 
DrawableNode ()
 Constructor for a drawable node with no parent and positioned in the origin.
 
DrawableNode (DrawableNode &&)
 Default move constructor.
 
+DrawableNodeoperator= (DrawableNode &&)
 Default move assignment operator.
 
+bool draw (RenderQueue &renderQueue) override
 Updates the draw command and adds it to the queue.
 
+virtual float width () const
 Returns the width of the node area.
 
+virtual float height () const
 Returns the height of the node area.
 
+Vector2f size () const
 Returns the size of the node area.
 
+virtual float absWidth () const
 Returns the absolute width of the node area.
 
+virtual float absHeight () const
 Returns the absolute height of the node area.
 
+Vector2f absSize () const
 Returns the absolute size of the node area.
 
+Vector2f anchorPoint () const
 Gets the transformation anchor point.
 
void setAnchorPoint (float xx, float yy)
 Sets the transformation anchor point. More...
 
+void setAnchorPoint (const Vector2f &point)
 Sets the transformation anchor point with a Vector2f
 
+bool isBlendingEnabled () const
 Returns true if the node renders with blending enabled.
 
+void setBlendingEnabled (bool blendingEnabled)
 Sets the blending state for node rendering.
 
+BlendingFactor srcBlendingFactor () const
 Returns the source blending factor.
 
+BlendingFactor destBlendingFactor () const
 Returns the destination blending factor.
 
+void setBlendingPreset (BlendingPreset blendingPreset)
 Sets a blending preset for source and destination blending factors.
 
+void setBlendingFactors (BlendingFactor srcBlendingFactor, BlendingFactor destBlendingFactor)
 Sets a specific source and destination blending factors.
 
+unsigned long int lastFrameRendered () const
 Returns the last frame in which any of the viewports have rendered this node (node was not culled)
 
+Rectf aabb () const
 Returns the axis-aligned bounding box of the node area in the last frame.
 
- Public Member Functions inherited from ncine::SceneNode
 SceneNode (SceneNode *parent, float x, float y)
 Constructor for a node with a parent and a specified relative position. More...
 
 SceneNode (SceneNode *parent, const Vector2f &position)
 Constructor for a node with a parent and a specified relative position as a vector. More...
 
 SceneNode (SceneNode *parent)
 Constructor for a node with a parent and positioned in the relative origin. More...
 
SceneNode ()
 Constructor for a node with no parent and positioned in the origin.
 
~SceneNode () override
 The destructor will delete every child node.
 
SceneNode (SceneNode &&other)
 Move constructor.
 
+SceneNodeoperator= (SceneNode &&other)
 Move assignment operator.
 
+SceneNode clone () const
 Returns a copy of this object.
 
+const SceneNodeparent () const
 Returns the parent as a constant node, if there is any.
 
+SceneNodeparent ()
 Returns the parent node, if there is any.
 
bool setParent (SceneNode *parentNode)
 Sets the parent node. More...
 
+const nctl::Array< SceneNode * > & children ()
 Returns the array of child nodes.
 
+const nctl::Array< const SceneNode * > & children () const
 Returns an array of constant child nodes.
 
bool addChildNode (SceneNode *childNode)
 Adds a node as a child of this one. More...
 
bool removeChildNode (SceneNode *childNode)
 Removes a child of this node, without reparenting nephews. More...
 
bool removeChildNodeAt (unsigned int index)
 Removes the child at the specified index, without reparenting nephews. More...
 
bool removeAllChildrenNodes ()
 Removes all children, without reparenting nephews. More...
 
bool unlinkChildNode (SceneNode *childNode)
 Removes a child of this node reparenting nephews as children. More...
 
unsigned int childOrderIndex () const
 Returns the child order index of this node or zero if it does not have a parent. More...
 
bool swapChildrenNodes (unsigned int firstIndex, unsigned int secondIndex)
 Swaps two children at the specified indices. More...
 
bool swapNodeForward ()
 Brings this node one node forward in the parent's list of children. More...
 
bool swapNodeBack ()
 Brings this node one node back in the parent's list of children. More...
 
+enum VisitOrderState visitOrderState () const
 Returns true if the node visit order is used together with the layer.
 
+void setVisitOrderState (enum VisitOrderState visitOrderState)
 Enables the use of the node visit order together with the layer.
 
+uint16_t visitOrderIndex () const
 Returns the visit drawing order of the node.
 
+virtual void visit (RenderQueue &renderQueue, unsigned int &visitOrderIndex)
 Draws the node and visits its children.
 
+bool isUpdateEnabled () const
 Returns true if the node is updating.
 
+void setUpdateEnabled (bool updateEnabled)
 Enables or disables node updating.
 
+bool isDrawEnabled () const
 Returns true if the node is drawing.
 
+void setDrawEnabled (bool drawEnabled)
 Enables or disables node drawing.
 
+bool isEnabled () const
 Returns true if the node is both updating and drawing.
 
+void setEnabled (bool isEnabled)
 Enables or disables both node updating and drawing.
 
+Vector2f position () const
 Returns node position relative to its parent.
 
+Vector2f absPosition () const
 Returns absolute node position.
 
+void setPosition (float x, float y)
 Sets the node position through two coordinates.
 
+void setPosition (const Vector2f &position)
 Sets the node position through a vector.
 
+void setPositionX (float x)
 Sets the X coordinate of the node position.
 
+void setPositionY (float y)
 Sets the Y coordinate of the node position.
 
+void move (float x, float y)
 Moves the node based on two offsets.
 
+void move (const Vector2f &position)
 Adds a move vector to the node current position.
 
+void moveX (float x)
 Moves the node by an offset on the X axis.
 
+void moveY (float y)
 Moves the node by an offset on the Y axis.
 
+Vector2f absAnchorPoint () const
 Gets the absolute transformation anchor point in pixels.
 
+void setAbsAnchorPoint (float x, float y)
 Sets the absolute transformation anchor point in pixels.
 
+void setAbsAnchorPoint (const Vector2f &point)
 Sets the absolute transformation anchor point in pixels with a Vector2f
 
+const Vector2fscale () const
 Gets the node scale factors.
 
+const Vector2fabsScale () const
 Gets the node absolute scale factors.
 
+void setScale (float scaleFactor)
 Scales the node size both horizontally and vertically.
 
+void setScale (float scaleFactorX, float scaleFactorY)
 Scales the node size both horizontally and vertically.
 
+void setScale (const Vector2f &scaleFactor)
 Scales the node size both horizontally and vertically with a Vector2f
 
+float rotation () const
 Gets the node rotation in degrees.
 
+float absRotation () const
 Gets the node absolute rotation in degrees.
 
+void setRotation (float rotation)
 Sets the node rotation in degrees.
 
+Color color () const
 Gets the node color.
 
+Color absColor () const
 Gets the node absolute color.
 
+void setColor (Color color)
 Sets the node color through a Color object.
 
+void setColor (Colorf color)
 Sets the node color through a Colorf object.
 
+void setColor (unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha)
 Sets the node color through unsigned char components.
 
+void setColorF (float red, float green, float blue, float alpha)
 Sets the node color through float components.
 
+float alpha () const
 Gets the node alpha.
 
+float absAlpha () const
 Gets the node absolute alpha.
 
+void setAlpha (unsigned char alpha)
 Sets the node alpha through an unsigned char component.
 
+void setAlphaF (float alpha)
 Sets the node alpha through a float component.
 
+uint16_t layer () const
 Gets the node rendering layer.
 
uint16_t absLayer () const
 Gets the node absolute rendering layer. More...
 
void setLayer (uint16_t layer)
 Sets the node rendering layer. More...
 
+const Matrix4x4fworldMatrix () const
 Gets the node world matrix.
 
+void setWorldMatrix (const Matrix4x4f &worldMatrix)
 Sets the node world matrix (only useful when called inside onPostUpdate())
 
+const Matrix4x4flocalMatrix () const
 Gets the node local matrix.
 
+void setLocalMatrix (const Matrix4x4f &localMatrix)
 Sets the node local matrix.
 
bool deleteChildrenOnDestruction () const
 Gets the delete children on destruction flag. More...
 
+void setDeleteChildrenOnDestruction (bool shouldDeleteChildrenOnDestruction)
 Sets the delete children on destruction flag.
 
+unsigned long int lastFrameUpdated () const
 Returns the last frame in which any of the viewports have updated this node.
 
- Public Member Functions inherited from ncine::Object
Object (ObjectType type)
 Constructs an object with a specified type and adds it to the index.
 
Object (ObjectType type, const char *name)
 Constructs an object with a specified type and name and adds it to the index.
 
+virtual ~Object ()
 Removes an object from the index and then destroys it.
 
Object (Object &&other)
 Move constructor.
 
+Objectoperator= (Object &&other)
 Move assignment operator.
 
+unsigned int id () const
 Returns the object identification number.
 
+ObjectType type () const
 Returns the object type (RTTI)
 
+const char * name () const
 Returns the object name.
 
+void setName (const char *name)
 Sets the object name.
 
+ + + + + + + + + + + + + + + + + +

+Static Public Member Functions

+static ObjectType sType ()
 
- Static Public Member Functions inherited from ncine::Sprite
+static ObjectType sType ()
 
- Static Public Member Functions inherited from ncine::SceneNode
+static ObjectType sType ()
 
- Static Public Member Functions inherited from ncine::Object
+static ObjectType sType ()
 Static method to return class type.
 
+template<class T >
static T * fromId (unsigned int id)
 Returns a casted pointer to the object with the specified id, if any exists.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

AnimatedSprite (const AnimatedSprite &other)
 Protected copy constructor used to clone objects.
 
- Protected Member Functions inherited from ncine::Sprite
Sprite (const Sprite &other)
 Protected copy constructor used to clone objects.
 
- Protected Member Functions inherited from ncine::BaseSprite
BaseSprite (SceneNode *parent, Texture *texture, float xx, float yy)
 Protected constructor accessible only by derived sprite classes.
 
BaseSprite (SceneNode *parent, Texture *texture, const Vector2f &position)
 Protected constructor accessible only by derived sprite classes.
 
BaseSprite (const BaseSprite &other)
 Protected copy constructor used to clone objects.
 
+void shaderHasChanged () override
 Performs the required tasks upon a change to the shader.
 
+void updateRenderCommand () override
 Updates the render command.
 
- Protected Member Functions inherited from ncine::DrawableNode
+virtual void updateAabb ()
 Calculates updated values for the AABB.
 
+void updateCulling ()
 Called by each viewport update method to update a node culling state.
 
DrawableNode (const DrawableNode &other)
 Protected copy constructor used to clone objects.
 
- Protected Member Functions inherited from ncine::SceneNode
+SceneNodeoperator= (const SceneNode &)=delete
 Deleted assignment operator.
 
SceneNode (const SceneNode &other)
 Protected copy constructor used to clone objects.
 
void swapChildPointer (SceneNode *first, SceneNode *second)
 Swaps the child pointer of a parent when moving an object. More...
 
+virtual void transform ()
 
- Protected Member Functions inherited from ncine::Object
Object (const Object &other)
 Protected copy constructor used to clone objects.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ncine::DrawableNode
enum class  BlendingPreset {
+  DISABLED +, ALPHA +, PREMULTIPLIED_ALPHA +, ADDITIVE +,
+  MULTIPLY +
+ }
 Presets for blending factors. More...
 
enum class  BlendingFactor {
+  ZERO +, ONE +, SRC_COLOR +, ONE_MINUS_SRC_COLOR +,
+  DST_COLOR +, ONE_MINUS_DST_COLOR +, SRC_ALPHA +, ONE_MINUS_SRC_ALPHA +,
+  DST_ALPHA +, ONE_MINUS_DST_ALPHA +, CONSTANT_COLOR +, ONE_MINUS_CONSTANT_COLOR +,
+  CONSTANT_ALPHA +, ONE_MINUS_CONSTANT_ALPHA +, SRC_ALPHA_SATURATE +
+ }
 OpenGL blending factors.
 
- Public Types inherited from ncine::SceneNode
enum class  VisitOrderState { ENABLED +, DISABLED +, SAME_AS_PARENT + }
 
- Public Types inherited from ncine::Object
enum class  ObjectType {
+  BASE = 0 +, TEXTURE +, SHADER +, SCENENODE +,
+  SPRITE +, MESH_SPRITE +, ANIMATED_SPRITE +, PARTICLE +,
+  PARTICLE_SYSTEM +, FONT +, TEXTNODE +, AUDIOBUFFER +,
+  AUDIOBUFFER_PLAYER +, AUDIOSTREAM_PLAYER +
+ }
 Object types.
 
- Static Public Attributes inherited from ncine::DrawableNode
+static const Vector2f AnchorCenter
 
+static const Vector2f AnchorBottomLeft
 
+static const Vector2f AnchorTopLeft
 
+static const Vector2f AnchorBottomRight
 
+static const Vector2f AnchorTopRight
 
- Static Public Attributes inherited from ncine::SceneNode
+static const float MinRotation = 0.5f
 The minimum amount of rotation to trigger a sine and cosine calculation.
 
- Static Public Attributes inherited from ncine::Object
+static const unsigned int MaxNameLength = 128
 Maximum length for an object name.
 
- Protected Types inherited from ncine::SceneNode
enum  DirtyBitPositions {
+  TransformationBit = 0 +, ColorBit = 1 +, SizeBit = 2 +, TextureBit = 3 +,
+  AabbBit = 4 +
+ }
 Bit positions inside the dirty bitset.
 
- Protected Attributes inherited from ncine::BaseSprite
+Texturetexture_
 The sprite texture.
 
+Recti texRect_
 The texture source rectangle.
 
+bool flippedX_
 A flag indicating if the sprite texture is horizontally flipped.
 
+bool flippedY_
 A flag indicating if the sprite texture is vertically flipped.
 
+GLUniformBlockCache * instanceBlock_
 
- Protected Attributes inherited from ncine::DrawableNode
+float width_
 Node width in pixel.
 
+float height_
 Node height in pixel.
 
+nctl::UniquePtr< RenderCommand > renderCommand_
 The render command class associated with this node.
 
+unsigned long int lastFrameRendered_
 The last frame any viewports rendered this node.
 
+Rectf aabb_
 Axis-aligned bounding box of the node area.
 
- Protected Attributes inherited from ncine::SceneNode
+bool updateEnabled_
 
+bool drawEnabled_
 
+SceneNodeparent_
 A pointer to the parent node.
 
+nctl::Array< SceneNode * > children_
 The array of child nodes.
 
unsigned int childOrderIndex_
 The order index of this node among its siblings. More...
 
bool withVisitOrder_
 When enabled the visit order is used to resolve the drawing order of same layer nodes. More...
 
+enum VisitOrderState visitOrderState_
 The visit order state of this node.
 
+uint16_t visitOrderIndex_
 The visit order index of this node.
 
+Vector2f position_
 The node relative position.
 
Vector2f anchorPoint_
 
+Vector2f scaleFactor_
 Horizontal and vertical scale factors for node size.
 
+float rotation_
 Degrees for clock-wise node rotation in degrees.
 
Color color_
 Node color for transparency and translucency. More...
 
uint16_t layer_
 The node rendering layer. More...
 
+Vector2f absPosition_
 Absolute position as calculated by the transform() function.
 
+Vector2f absScaleFactor_
 Absolute horizontal and vertical scale factors as calculated by the transform() function.
 
+float absRotation_
 Absolute node rotation as calculated by the transform() function.
 
+Color absColor_
 Absolute node color as calculated by the transform() function.
 
+uint16_t absLayer_
 Absolute node rendering layer as calculated by the transform() function.
 
+Matrix4x4f worldMatrix_
 World transformation matrix (calculated from local and parent's world)
 
+Matrix4x4f localMatrix_
 Local transformation matrix.
 
+bool shouldDeleteChildrenOnDestruction_
 A flag indicating whether the destructor should also delete all children.
 
+nctl::BitSet< uint8_t > dirtyBits_
 Bitset that stores the various dirty states bits.
 
+unsigned long int lastFrameUpdated_
 The last frame any viewport updated this node.
 
- Protected Attributes inherited from ncine::Object
+ObjectType type_
 Object type.
 
+

Detailed Description

+

A class for an animated sprite.

+

The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classncine_1_1_animated_sprite__coll__graph.map b/master/classncine_1_1_animated_sprite__coll__graph.map new file mode 100644 index 0000000000..27aac905b3 --- /dev/null +++ b/master/classncine_1_1_animated_sprite__coll__graph.map @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/master/classncine_1_1_animated_sprite__coll__graph.md5 b/master/classncine_1_1_animated_sprite__coll__graph.md5 new file mode 100644 index 0000000000..72e6de21e2 --- /dev/null +++ b/master/classncine_1_1_animated_sprite__coll__graph.md5 @@ -0,0 +1 @@ +009d57c5a1749c6f4d0816d12b02179d \ No newline at end of file diff --git a/master/classncine_1_1_animated_sprite__coll__graph.png b/master/classncine_1_1_animated_sprite__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..13ac480b5c16294450a8015752ab43d5777cd260 GIT binary patch literal 79823 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
;;pUNHY_rfzATgB(@&jywFep}@z{{G)uWGXH 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 literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_animated_sprite__inherit__graph.map b/master/classncine_1_1_animated_sprite__inherit__graph.map new file mode 100644 index 0000000000..71ef02c0dd --- /dev/null +++ b/master/classncine_1_1_animated_sprite__inherit__graph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/master/classncine_1_1_animated_sprite__inherit__graph.md5 b/master/classncine_1_1_animated_sprite__inherit__graph.md5 new file mode 100644 index 0000000000..8fd2be6070 --- /dev/null +++ b/master/classncine_1_1_animated_sprite__inherit__graph.md5 @@ -0,0 +1 @@ +8f4c75c009f32930138e584b7d17334f \ No newline at end of file diff --git a/master/classncine_1_1_animated_sprite__inherit__graph.png b/master/classncine_1_1_animated_sprite__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..302b7d9bbd73f9c2751a8b2c03d792f01d1bef13 GIT binary patch literal 12006 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 W`HdIj7hrH5apSs%Qoh22r~d{MCSy7P literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_app_configuration-members.html b/master/classncine_1_1_app_configuration-members.html new file mode 100644 index 0000000000..4de7cea4b8 --- /dev/null +++ b/master/classncine_1_1_app_configuration-members.html @@ -0,0 +1,129 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::AppConfiguration Member List
+
+
+ +

This is the complete list of members for ncine::AppConfiguration, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AppConfiguration()ncine::AppConfiguration
argc() constncine::AppConfigurationinline
argv(int index) constncine::AppConfiguration
compileBatchedShadersTwicencine::AppConfiguration
consoleLogLevelncine::AppConfiguration
dataPath() constncine::AppConfiguration
dataPath()ncine::AppConfiguration
deferShaderQueriesncine::AppConfiguration
fileLogLevelncine::AppConfiguration
fixedBatchSizencine::AppConfiguration
frameLimitncine::AppConfiguration
frameTimerLogIntervalncine::AppConfiguration
fullScreenncine::AppConfiguration
glCoreProfile() constncine::AppConfigurationinline
glForwardCompatible() constncine::AppConfigurationinline
glMajorVersion() constncine::AppConfigurationinline
glMinorVersion() constncine::AppConfigurationinline
iboSizencine::AppConfiguration
logFilencine::AppConfiguration
monoAudioSourcesncine::AppConfiguration
outputAudioFrequencyncine::AppConfiguration
PCApplication (defined in ncine::AppConfiguration)ncine::AppConfigurationfriend
profileTextUpdateTime() constncine::AppConfigurationinline
refreshRatencine::AppConfiguration
renderCommandPoolSizencine::AppConfiguration
resizablencine::AppConfiguration
resolutionncine::AppConfiguration
shaderCacheDirnamencine::AppConfiguration
stereoAudioSourcesncine::AppConfiguration
useBinaryShaderCachencine::AppConfiguration
useBufferMappingncine::AppConfiguration
vaoPoolSizencine::AppConfiguration
vboSizencine::AppConfiguration
windowIconFilenamencine::AppConfiguration
windowPositionncine::AppConfiguration
WindowPositionIgnore (defined in ncine::AppConfiguration)ncine::AppConfigurationstatic
windowScalingncine::AppConfiguration
windowTitlencine::AppConfiguration
withAudioncine::AppConfiguration
withConsoleColorsncine::AppConfiguration
withDebugOverlayncine::AppConfiguration
withGlDebugContextncine::AppConfiguration
withScenegraphncine::AppConfiguration
withThreadsncine::AppConfiguration
withVSyncncine::AppConfiguration
+ + + + diff --git a/master/classncine_1_1_app_configuration.html b/master/classncine_1_1_app_configuration.html new file mode 100644 index 0000000000..a33dcaad47 --- /dev/null +++ b/master/classncine_1_1_app_configuration.html @@ -0,0 +1,658 @@ + + + + + + + +nCine: ncine::AppConfiguration Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::AppConfiguration Class Reference
+
+
+ +

The class storing initialization settings for an nCine application. + More...

+ +

#include <AppConfiguration.h>

+
+Collaboration diagram for ncine::AppConfiguration:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

AppConfiguration ()
 Default constructor setting the defaults.
 
const nctl::StringdataPath () const
 
nctl::StringdataPath ()
 
bool glCoreProfile () const
 
bool glForwardCompatible () const
 
unsigned int glMajorVersion () const
 
unsigned int glMinorVersion () const
 
float profileTextUpdateTime () const
 
int argc () const
 
const char * argv (int index) const
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Attributes

+nctl::String logFile
 The path for the log file.
 
+ILogger::LogLevel consoleLogLevel
 The logging level for messages printed on the console.
 
+ILogger::LogLevel fileLogLevel
 The logging level for messages written in the log file.
 
+float frameTimerLogInterval
 The interval for frame timer accumulation average and log.
 
Vector2i resolution
 The window size or the resolution of the closest video mode if going full screen. More...
 
float refreshRate
 The refresh rate of the screen mode used to go in full screen. More...
 
Vector2i windowPosition
 The window position coordinates in the virtual screen made of all the connected monitors. More...
 
+bool fullScreen
 The flag is true if the application is going to be in full screen mode.
 
+bool resizable
 The flag is true if the window is going to be resizable.
 
+bool windowScaling
 The flag is true if the window size is automatically scaled according to the display factor.
 
+unsigned int frameLimit
 The maximum number of frames to render per second or 0 for no limit.
 
+nctl::String windowTitle
 The window title.
 
+nctl::String windowIconFilename
 The window icon filename.
 
+bool useBufferMapping
 The flag is true if mapping is used to update OpenGL buffers.
 
bool deferShaderQueries
 The flag is true when error checking and introspection of shader programs are deferred to first use. More...
 
unsigned int fixedBatchSize
 Fixed size of render commands to be collected for batching on Emscripten and ANGLE. More...
 
bool useBinaryShaderCache
 The flag is true if the shader cache is enabled to load and save binary shader programs. More...
 
+nctl::String shaderCacheDirname
 The directory name (not the complete path) for the binary shaders cache.
 
bool compileBatchedShadersTwice
 The flag is true if, on devices with UBOs smaller than 64 KB, batched shaders will be compiled twice to identify their maximum batch size. More...
 
+unsigned long vboSize
 The maximum size in bytes for each VBO collecting geometry data.
 
+unsigned long iboSize
 The maximum size in bytes for each IBO collecting index data.
 
+unsigned int vaoPoolSize
 The maximum size for the pool of VAOs.
 
+unsigned int renderCommandPoolSize
 The initial size for the pool of render commands.
 
unsigned int outputAudioFrequency
 The output frequency of the audio system. More...
 
unsigned int monoAudioSources
 The number of mono audio sources. More...
 
unsigned int stereoAudioSources
 The number of stereo audio sources. More...
 
+bool withDebugOverlay
 The flag is true if the debug overlay is enabled.
 
+bool withAudio
 The flag is true if the audio subsystem is enabled.
 
+bool withThreads
 The flag is true if the threading subsystem is enabled.
 
+bool withScenegraph
 The flag is true if the scenegraph based rendering is enabled.
 
+bool withVSync
 The flag is true if the vertical synchronization is enabled.
 
+bool withGlDebugContext
 The flag is true if the OpenGL debug context is enabled.
 
+bool withConsoleColors
 The flag is true if console log messages should use colors.
 
+ + + +

+Static Public Attributes

+static const int WindowPositionIgnore = 2147483647
 
+ + + +

+Friends

+class PCApplication
 
+

Detailed Description

+

The class storing initialization settings for an nCine application.

+

Member Function Documentation

+ +

◆ argc()

+ +
+
+ + + + + +
+ + + + + + + +
int ncine::AppConfiguration::argc () const
+
+inline
+
+
Returns
The number of arguments passed on the command line
+ +
+
+ +

◆ argv()

+ +
+
+ + + + + + + + +
const char * ncine::AppConfiguration::argv (int index) const
+
+
Returns
The selected argument from the ones passed on the command line
+ +
+
+ +

◆ dataPath() [1/2]

+ +
+
+ + + + + + + +
nctl::String & ncine::AppConfiguration::dataPath ()
+
+
Returns
The path for the application to load data from
+

Allows to set the value of the static field FileSystem::dataPath_.

+ +
+
+ +

◆ dataPath() [2/2]

+ +
+
+ + + + + + + +
const nctl::String & ncine::AppConfiguration::dataPath () const
+
+
Returns
The path for the application to load data from
+ +
+
+ +

◆ glCoreProfile()

+ +
+
+ + + + + +
+ + + + + + + +
bool ncine::AppConfiguration::glCoreProfile () const
+
+inline
+
+
Returns
True if the OpenGL profile is going to be core
+ +
+
+ +

◆ glForwardCompatible()

+ +
+
+ + + + + +
+ + + + + + + +
bool ncine::AppConfiguration::glForwardCompatible () const
+
+inline
+
+
Returns
True if the OpenGL context is going to be forward compatible
+ +
+
+ +

◆ glMajorVersion()

+ +
+
+ + + + + +
+ + + + + + + +
unsigned int ncine::AppConfiguration::glMajorVersion () const
+
+inline
+
+
Returns
The major version number of the OpenGL context
+ +
+
+ +

◆ glMinorVersion()

+ +
+
+ + + + + +
+ + + + + + + +
unsigned int ncine::AppConfiguration::glMinorVersion () const
+
+inline
+
+
Returns
The minor version number of the OpenGL context
+ +
+
+ +

◆ profileTextUpdateTime()

+ +
+
+ + + + + +
+ + + + + + + +
float ncine::AppConfiguration::profileTextUpdateTime () const
+
+inline
+
+
Returns
The update time in seconds for the profile text nodes
+ +
+
+

Member Data Documentation

+ +

◆ compileBatchedShadersTwice

+ +
+
+ + + + +
bool ncine::AppConfiguration::compileBatchedShadersTwice
+
+ +

The flag is true if, on devices with UBOs smaller than 64 KB, batched shaders will be compiled twice to identify their maximum batch size.

+
Note
When enabled, compatibility with such devices will increase because shaders with standard batch size will not compile
+ +
+
+ +

◆ deferShaderQueries

+ +
+
+ + + + +
bool ncine::AppConfiguration::deferShaderQueries
+
+ +

The flag is true when error checking and introspection of shader programs are deferred to first use.

+
Note
The value is only taken into account when the scenegraph is being used
+ +
+
+ +

◆ fixedBatchSize

+ +
+
+ + + + +
unsigned int ncine::AppConfiguration::fixedBatchSize
+
+ +

Fixed size of render commands to be collected for batching on Emscripten and ANGLE.

+
Note
Increasing this value too much might negatively affect batching shaders compilation time. A value of zero restores the default behavior of non fixed size for batches.
+
Warning
If this value is changed, the binary shader cache needs to be manually cleared.
+ +
+
+ +

◆ monoAudioSources

+ +
+
+ + + + +
unsigned int ncine::AppConfiguration::monoAudioSources
+
+ +

The number of mono audio sources.

+
Note
Set this value to zero to request the default number of mono audio sources.
+ +
+
+ +

◆ outputAudioFrequency

+ +
+
+ + + + +
unsigned int ncine::AppConfiguration::outputAudioFrequency
+
+ +

The output frequency of the audio system.

+
Note
Set this value to zero for the default output frequency of the device.
+ +
+
+ +

◆ refreshRate

+ +
+
+ + + + +
float ncine::AppConfiguration::refreshRate
+
+ +

The refresh rate of the screen mode used to go in full screen.

+
Note
If it is zero or negative, when requesting a full screen mode the current refresh rate will not be changed.
+ +
+
+ +

◆ resolution

+ +
+
+ + + + +
Vector2i ncine::AppConfiguration::resolution
+
+ +

The window size or the resolution of the closest video mode if going full screen.

+
Note
If either x or y are zero or negative, the application will go in full screen at the current screen resolution.
+ +
+
+ +

◆ stereoAudioSources

+ +
+
+ + + + +
unsigned int ncine::AppConfiguration::stereoAudioSources
+
+ +

The number of stereo audio sources.

+
Note
Set this value to zero to request the default number of stereo audio sources.
+ +
+
+ +

◆ useBinaryShaderCache

+ +
+
+ + + + +
bool ncine::AppConfiguration::useBinaryShaderCache
+
+ +

The flag is true if the shader cache is enabled to load and save binary shader programs.

+
Note
Even if the flag is true the functionality might still not be supported by the OpenGL context
+ +
+
+ +

◆ windowPosition

+ +
+
+ + + + +
Vector2i ncine::AppConfiguration::windowPosition
+
+ +

The window position coordinates in the virtual screen made of all the connected monitors.

+
Note
It can also be used to go full screen on a monitor that is not the primary one of the system.
+
+The WindowPositionIgnore value can be used in either or both dimensions when a specific position is not needed.
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classncine_1_1_app_configuration__coll__graph.map b/master/classncine_1_1_app_configuration__coll__graph.map new file mode 100644 index 0000000000..d39e6fc34e --- /dev/null +++ b/master/classncine_1_1_app_configuration__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/master/classncine_1_1_app_configuration__coll__graph.md5 b/master/classncine_1_1_app_configuration__coll__graph.md5 new file mode 100644 index 0000000000..08fff84381 --- /dev/null +++ b/master/classncine_1_1_app_configuration__coll__graph.md5 @@ -0,0 +1 @@ +d396ec2faf4250943c0664ae859542a5 \ No newline at end of file diff --git a/master/classncine_1_1_app_configuration__coll__graph.png b/master/classncine_1_1_app_configuration__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..4f481249cbf59d244cacd15da8a91eb074a70269 GIT binary patch literal 11256 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 literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_application-members.html b/master/classncine_1_1_application-members.html new file mode 100644 index 0000000000..b857c69503 --- /dev/null +++ b/master/classncine_1_1_application-members.html @@ -0,0 +1,141 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::Application Member List
+
+
+ +

This is the complete list of members for ncine::Application, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AndroidApplication (defined in ncine::Application)ncine::Applicationfriend
appCfg_ (defined in ncine::Application)ncine::Applicationprotected
appConfiguration() constncine::Applicationinline
appEventHandler_ (defined in ncine::Application)ncine::Applicationprotected
Application() (defined in ncine::Application)ncine::Applicationprotected
autoSuspension() constncine::Applicationinline
autoSuspension_ (defined in ncine::Application)ncine::Applicationprotected
debugOverlay_ (defined in ncine::Application)ncine::Applicationprotected
debugOverlayNullSettings_ (defined in ncine::Application)ncine::Applicationprotected
debugOverlaySettings()ncine::Applicationinline
frameTimer()ncine::Application
frameTimer_ (defined in ncine::Application)ncine::Applicationprotected
gfxDevice()ncine::Applicationinline
gfxDevice_ (defined in ncine::Application)ncine::Applicationprotected
GlfwInputManager (defined in ncine::Application)ncine::Applicationfriend
guiSettings()ncine::Applicationinline
guiSettings_ (defined in ncine::Application)ncine::Applicationprotected
hasFocus() constncine::Applicationinline
hasFocus_ (defined in ncine::Application)ncine::Applicationprotected
height() constncine::Applicationinline
heightInt() constncine::Applicationinline
initCommon()ncine::Applicationprotected
inputManager()ncine::Applicationinline
inputManager_ (defined in ncine::Application)ncine::Applicationprotected
interval() constncine::Application
isSuspended() constncine::Applicationinline
isSuspended_ (defined in ncine::Application)ncine::Applicationprotected
numFrames() constncine::Application
PCApplication (defined in ncine::Application)ncine::Applicationfriend
profileStartTime_ (defined in ncine::Application)ncine::Applicationprotected
Qt5Widget (defined in ncine::Application)ncine::Applicationfriend
quit()ncine::Applicationinline
renderingSettings()ncine::Applicationinline
renderingSettings_ (defined in ncine::Application)ncine::Applicationprotected
resizeScreenViewport(int width, int height)ncine::Applicationprotected
resolution() constncine::Applicationinline
resolutionInt() constncine::Applicationinline
resume()ncine::Applicationprotected
rootNode()ncine::Applicationinline
rootNode_ (defined in ncine::Application)ncine::Applicationprotected
screenViewport()ncine::Application
screenViewport_ (defined in ncine::Application)ncine::Applicationprotected
setAutoSuspension(bool autoSuspension)ncine::Applicationinline
setFocus(bool hasFocus)ncine::Applicationprotectedvirtual
setSuspended(bool suspended)ncine::Applicationinline
shouldQuit() constncine::Applicationinline
shouldQuit_ (defined in ncine::Application)ncine::Applicationprotected
shutdownCommon()ncine::Applicationprotected
step()ncine::Applicationprotected
suspend()ncine::Applicationprotected
timings() constncine::Applicationinline
timings_ (defined in ncine::Application)ncine::Applicationprotected
updateScalingFactor()ncine::Applicationprotected
Viewport (defined in ncine::Application)ncine::Applicationfriend
width() constncine::Applicationinline
widthInt() constncine::Applicationinline
~Application() (defined in ncine::Application)ncine::Applicationprotected
+ + + + diff --git a/master/classncine_1_1_application.html b/master/classncine_1_1_application.html new file mode 100644 index 0000000000..4a8a3189a7 --- /dev/null +++ b/master/classncine_1_1_application.html @@ -0,0 +1,489 @@ + + + + + + + +nCine: ncine::Application Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

Main entry point and handler for nCine applications. + More...

+ +

#include <Application.h>

+
+Inheritance diagram for ncine::Application:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for ncine::Application:
+
+
Collaboration graph
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[legend]
+ + + + + + + + + + +

+Classes

struct  GuiSettings
 GUI settings (for ImGui and Nuklear) that can be changed at run-time. More...
 
struct  RenderingSettings
 Rendering settings that can be changed at run-time. More...
 
struct  Timings
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+const AppConfigurationappConfiguration () const
 Returns the configuration used to initialize the application.
 
+RenderingSettingsrenderingSettings ()
 Returns the run-time rendering settings.
 
+GuiSettingsguiSettings ()
 Returns the run-time GUI settings.
 
+IDebugOverlay::DisplaySettingsdebugOverlaySettings ()
 Returns the run-time debug overlay settings, if debug overlay is available.
 
+const float * timings () const
 Returns all timings.
 
+IGfxDevicegfxDevice ()
 Returns the graphics device instance.
 
+SceneNoderootNode ()
 Returns the root node of the transformation graph.
 
+ViewportscreenViewport ()
 Returns the screen viewport.
 
+IInputManagerinputManager ()
 Returns the input manager instance.
 
+unsigned long int numFrames () const
 Returns the total number of frames already rendered.
 
+float interval () const
 Returns the time in seconds that last frame took to complete.
 
+IFrameTimerframeTimer ()
 Returns the frame timer interface.
 
+float width () const
 Returns the drawable screen width as a float number.
 
+float height () const
 Returns the drawable screen height as a float number.
 
+Vector2f resolution () const
 Returns the drawable screen resolution as a Vector2f object.
 
+int widthInt () const
 Returns the drawable screen width as an integer number.
 
+int heightInt () const
 Returns the drawable screen height as an integer number.
 
+Vector2i resolutionInt () const
 Returns the drawable screen resolution as a Vector2i object.
 
bool isSuspended () const
 Returns the value of the suspension flag. More...
 
+void setSuspended (bool suspended)
 Sets the suspension flag value.
 
bool autoSuspension () const
 Returns the value of the auto-suspension flag. More...
 
+void setAutoSuspension (bool autoSuspension)
 Sets the auto-suspension flag value.
 
+void quit ()
 Asks the application to quit as soon as possible (by raising the quit flag)
 
+bool shouldQuit () const
 Returns the value of the quit flag.
 
+bool hasFocus () const
 Returns the focus flag value.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+void initCommon ()
 Must be called before giving control to the application.
 
+void step ()
 A single step of the game loop made to render a frame.
 
+void shutdownCommon ()
 Must be called before exiting to shut down the application.
 
+void suspend ()
 Called when the application gets suspended.
 
+void resume ()
 Called when the application resumes execution.
 
+virtual void setFocus (bool hasFocus)
 Sets the focus flag.
 
bool resizeScreenViewport (int width, int height)
 Resizes the screen viewport, if it exists. More...
 
bool updateScalingFactor ()
 Checks if the window scaling factor has changed this frame. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+bool isSuspended_
 
+bool autoSuspension_
 
+bool hasFocus_
 
+bool shouldQuit_
 
+const AppConfiguration appCfg_
 
+RenderingSettings renderingSettings_
 
+GuiSettings guiSettings_
 
+float timings_ [Timings::COUNT]
 
+IDebugOverlay::DisplaySettings debugOverlayNullSettings_
 
+TimeStamp profileStartTime_
 
+nctl::UniquePtr< FrameTimer > frameTimer_
 
+nctl::UniquePtr< IGfxDevicegfxDevice_
 
+nctl::UniquePtr< SceneNoderootNode_
 
+nctl::UniquePtr< ScreenViewport > screenViewport_
 
+nctl::UniquePtr< IDebugOverlaydebugOverlay_
 
+nctl::UniquePtr< IInputManagerinputManager_
 
+nctl::UniquePtr< IAppEventHandlerappEventHandler_
 
+ + + + + + + + + + + +

+Friends

+class PCApplication
 
+class AndroidApplication
 
+class Viewport
 
+class GlfwInputManager
 
+class Qt5Widget
 
+

Detailed Description

+

Main entry point and handler for nCine applications.

+

Member Function Documentation

+ +

◆ autoSuspension()

+ +
+
+ + + + + +
+ + + + + + + +
bool ncine::Application::autoSuspension () const
+
+inline
+
+ +

Returns the value of the auto-suspension flag.

+

If true the application will be suspended when it loses focus

+ +
+
+ +

◆ isSuspended()

+ +
+
+ + + + + +
+ + + + + + + +
bool ncine::Application::isSuspended () const
+
+inline
+
+ +

Returns the value of the suspension flag.

+

If true the application is suspended, it will neither update nor receive events

+ +
+
+ +

◆ resizeScreenViewport()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool ncine::Application::resizeScreenViewport (int width,
int height 
)
+
+protected
+
+ +

Resizes the screen viewport, if it exists.

+
Note
It will also call the onResizeWindow() callback if the size has really changed
+ +
+
+ +

◆ updateScalingFactor()

+ +
+
+ + + + + +
+ + + + + + + +
bool ncine::Application::updateScalingFactor ()
+
+protected
+
+ +

Checks if the window scaling factor has changed this frame.

+
Note
It will also call the onChangeScalingFactor() callback if the factor has really changed
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classncine_1_1_application__coll__graph.map b/master/classncine_1_1_application__coll__graph.map new file mode 100644 index 0000000000..a806a21511 --- /dev/null +++ b/master/classncine_1_1_application__coll__graph.map @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/master/classncine_1_1_application__coll__graph.md5 b/master/classncine_1_1_application__coll__graph.md5 new file mode 100644 index 0000000000..ac05967b6a --- /dev/null +++ b/master/classncine_1_1_application__coll__graph.md5 @@ -0,0 +1 @@ +e6dc340beaae8b8e5098dd793a0c2494 \ No newline at end of file diff --git a/master/classncine_1_1_application__coll__graph.png b/master/classncine_1_1_application__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..5d638dff146829a105218a9f88e4ead177573972 GIT binary patch literal 198480 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

kga)Bop&thdR4 z5zlX#emxsM2dSM)%S{DUjZIB2j08A2IsY3R(6I)~0cM?OCW)TW)D(mU1_Ald zd^%&uG8Cs4>gvLqxZ^ey>*{K1B1exhU|N~!<7jm1{s0iLFh!ZJV9?O$ zO%ejEm`54H!@|Ofi@yo&1r-W=2*h|a1^2Hd(4hMumdBrp8&KC78m?fiqH#V5nNRpO zB!Rc0T{^=>lk~RyO-tE5&(|<37Nn&eb?D@R%olis{5-FKfLXEiY3CiJ9>Tbh zfQB+2xBY#MePb9NYwR`7;mF=93FgQL4|<_8XzXI7;*#-tT_NB%uWsOb?2i728u!J| zi{FFsyO&@2rSH88eUOW0!;-ZqHJOLeq-j}bqVxlHtGuwXv~%NA(+}IndCrQkuSN{xGtd^b^)lqPEjc@>c(e0lXyq6Shv2G9cdNIfpX+$%a-S~UMf zy$&*Kr6*G6{(s@5Fd?`8^%c7orWUWKB2J3NZi-%Riu%W?Nkhr&XDe-{chNk&aR#=g9Fd7jTD zPgx}}8}B)5!1*r!3vW_%QxZEvK-n4z0j*W#sJ3?uhl-DCh@nhztY(e?cXr=Cb#JN1 zh2Lgo3NkV{YsraMO`TE?heo7`m(TN``g%H(2bW*YkSm!;y`93gIk*`eEz8dry@TrZ zQd>?+!~fW_=uu}{!gEtTGV*M zv|Ph-SKxnzEj26@WJ~w#{w7A~w`%rOLwEDm(L$H*?5hK$WCEU!VfE$Av$qbPSKi1| z$sEI@2c`UoV{g#R7xy_|#{7i8($R??*-7);JmxfdmLq-k^ZK;B{aP$4_*k30v4v{= z{VywG5#-EgyP$hEY1lYrX>LWDs8({}r`btG$jP&o^G~U{bl}l*roc66vLBLNK2j9K zW%1(tG##05d8kFVxWPh_qo-!6w3c8|?(IIk1}q58la8VB@$FO@3%c7L1RUc18n@$p zOzc%xH3=__0^fN@)uH2fN@jPfO8di?0)7L<(JOY%yiBV*tM)84xm#0*Q^(fYEGCg% z)RZO=&a$p1pC1^QTfsRD$lhts_9@{tKgSn-^X<=fzvmwt%Fsya4=i(507yfiV)Juy z`X0q(!&kr%NcpNssh#kBX2uul)#1p;O*=^f>T*$bY$&0Mj_;fN{@vEr78W~M_dnR0 z1OmDMTt+B^QTl!!9>~zr+d^~ktgz&oe775{(e}ens zzTZ?g3g;UBERi>vOr3U*w{PnU~6e9Uq- zHX^lkEjgoazzG$e&w9vTEuVAp)_`3nrl$u7b=;42xalA}&c>z`N$J3^%gbrz@09Y6xS#TftMF<(GgElaBE}_z0>`^R&DIgTH3bc#kCmNwgX$b_vX}$H#yO? z;E@7U0i_(eL^SP)UI74n(q&YMAdki!JUI;w4PYJQC=|o~ERra&scJNETY&x&0x3X? z=N1&OVCopIJYY8j0+8dVe*;HKS$vKIjq?)WkIW26KWSD3Dn`sh*k0}ul#7`k8U6kJ zA)D)L5?3)?B0z&1r5R?%m*qq#XTVUCQCqu-(u@#*w~GoEyDv9Czb#p+JTFg8`7mxl z^iqTXg#LhRaRd}f5r`p7p>>BdwEkaYF8krf1d61$@fzHp23|irL@~8;RHE^6QggU^ z&<;%w`W4PaV{_*naN7N5+4=t<1v+?L3JR~$%)ul|OG_IV6oeT;1J7aC_zEls zI|$mw#=IG}gjeu25HZS(4p2LclyC88 zv-HtpB*Nv-$Vjx-*xSEEIF7r_fWf=-M;muvC^p)&Cjw*%>U82T6lmoM1Q@Td0)Rek zBV1G|#T*#iOBafx|Bhi~4?H66?d`$AWCX%3h5410sL)VS0)Ry53t+e@8>cNz4%op~ z;89#u;Q42(WYl-l(nitdMdRyozh>#F)ivSl65aj7$qyg+z1ixDxEJp8wZF$$lcwdM zmiD?;V(-f<hb92Xe$-)N*XvzJ`gk40;7_kM99t5~^|nRV^;*JlKRsj06t>!wUl8cCpP zgXGimMjy0&UGBcO@u+r2{sVQl1&;h5q#;UJ<|j_j)6rQK8^JHV>||tSMrk6JI{y8; ziLtSVzzI>sjL=YGj97RQJQt_=@jpPIvh?3w6yc?X-7GZcXk}VnUTAH8L4hFOhlxcr zfb9*$;SivKaKkPkx(t*G7zPr&<*a=Euj*2SFF+Ka!UE%h8JOgRv~4jY1lUK=$PA%T zMw16F9T!%uZ{Pqn<2UYJze=-oC(Sa;$32HV_NqRmancoo2G-f>+aeQL>mE{}ur`}T zRL2gIjlJW}!55FF_LLii#5bKQr98Ym$MiGbQTj}XeEsNqBhv9{ISzfthKS-p`H!wr zueuMobVbHJ3$2LR%XGcAEbqfx@h0`#w?uL%CAOa+Jo{Qy^mX1794bI3yJCcLbKL*b z&Glz~I~T|1)3e=kcVtV*2$&-b1tpY~EkI+TB}38*#szkC?3;T zauOi?wFu#kU z(7oth78ZG{OZi=i=I$147iDi&p7H6j3oCR6Wl3a{09k^l-u2HV(Gk;6zC)TX=;*cl zQ_dv+|rM`FKX?FTKdT{}@ZjE3&)*;zm#fcPKheN2&oqm@S^ zfj~%*aC!Xb5g^DuAfR4Or|C#t|LDJB$UpPSTMv*Z{DP%A~KSY zkU;nXgm)*89;J?QUYUDE&nG8-1AF>yY4dmTLj?K$*zWhc{>G0QJ{_oj@|~Qd=uG?P zchIGH?Fsy@TsuR$r>Fi~?|4i(-8Z?y)A7Y*lqtdWy3fdVDcebCS~sMcKl}bA(UEM| zgMbs?bZkmdKfz5?_2XTdY_R@oU*F7cEj?;^Cp!F!Z729?=Wd-jxTyEx+m1H9nHyKO zDLS86ub*8<0>L%GfAWHRTG_-Amhk)5u;`?6<1a``zA&8PfpjfoIiP=XnwzAlwX^nC|7B%${EepZ3H9ZCD#Vam7DSLva0KAy`Mi5O)+40(niRL z&8&SuM^Dev+#E=HKZL6Qs=z@aDkgR~a`{S4dUm!QMk0YyDJd<51GL;}2*U$axM&9B zK4%~rOiJo6HY@TeB(DDg{4C-~PC%gqw4nn-+c7$i=r1R|eBpu{hEm$uO#rzBK3-yr zF?5LP!)c9JknX;|BGdA{=27gb2vRFAFAoiE4&1(5$=H|3jcS!(*^!cxV)f6#$h?)@&jBK%=kD+3NzsGKkk7C*est1Rp5^VRfzhX&7Xd^u7;`lZ7eADu*g^4t!+wLWs` z1+c5IatuWvCA3em25sro_eu z7tRh?mc#6)fk;98!fDstEh-^lC-ZJbB2c2|$!%DtrAs#DuV|j>T;sR7@9Q{95>Z8y*;K))!T%+Y>J`D?b*h zYC{vhEnM`FjyuKP`OLiY#59)D;d+PD0*J+~?3)7S>I(Jag>Hd;3<|-`^icgwv4D^_Y#PMN5h; za1rHaa(wuy{~>iM6M$A)3e5Sk_^jLpoL^kPE6VhcfB^u*lr`#3 z!`Fdxc6}-IE(`)9PIv0ZjZ<0I#jlS#an3s}MzQ*m5av9u(mz{9?TfC+5+4K2AHr6S zi-;(hiw&wS(|tkd4jKXF1~ySoSJwrRMEJEoLmef#zwBqufbUTmt@SknbMuI%F{zXH z4|iLX$J^y5vi13vG@5pQ6uH14N}L_zDr9}7Swz#%$_GOfAdIe;IJ zqYnTD=qXuy?et;4DG;)tjvYg)kl$q{R9@pCL$>r%yf|xeqPaiIjB@Y&ghs_9v?qGz zTDlIt6sQg0xs2-QVepN@w2D({GfKLm(f3xD#@SA9fA8_xyH=Zhy;47jK=^_cQ(P6? z?JlM3MahwSYpV^*#X(!Lgf@dUQiN?gD#*IIXU_QUL4HerCj>Z1Uh- z{>hmtms@GSGVGO}Q+0@}7}W2pdMTCkz1{gYSF69#L%+h$?+R>SAbT2iwz%Y5CWt}w z8Ibv6D}%sS*kK!LClyzADC`XgMO;U^+S-T_c-PXR*yoHG(BG6QB|pD^f0CEyz3}af zjx>ZR*%=vQxLGrMx+I_V8XMbOv^Gb93^z* zhWg4)e zd1PR?$L>kiqT0KcUd*vY;t)-jow{`KXrDOQsh=}5Cz!B6dz*Go1ijig z6M^0vOsJ-0sq`zQe3cj5(CNQXIrU8Yb{Ai=ixegIuVbBSH~EU!b1augX$tH{o+l+9 z^&BvEE7G+E7^xv?|I~r!&!w;@EN`w>KOSa~Y`B@{qzU44%tNegSM}7S$7Afuw){vWfFh_N0ml*5>5XErEB&Md$j*gE0`Xv-Ju zSg8aRemZ{rAja7t9TVwb(b1icPlsW~(_PjiB_cahV!y9)9rYH+{UcK3v{6kkfFWfS zSt+8GPu?6Vc{?@_l6QP|_H5QUFrcPt5C<1Z5LP50E(2b)zEz*E;G$oX-9|OR*ZA&jb*V z_y-SwML#~n1!?vzg+oF0Fz5=IkZXG0*`!ykGDB|7CTme-;`ldfCD}z$UAJPm|EPw@b^roN=Kv{vx{Be3Zach<& zlTL0&FGJCQ3!E{BY*G%NC%(+y?RM;b%5{@t%B6_8WCHK z=G1FN*37yHXgNGKQhM5QYS+UgM=$2y@>vc1z)QnTaXsI}Hk^king$n<|8u&I3RX=Y zshpH{u)RW#PPwmX(?$U+HHM z;|PN!AwU9z-73PNa%SCHfRo$>rPj)Z-14vEX}Qx^2&)xmC`c68eCdmJ<|idm3*ZI1^#wJ1Ea%_txHd9=a=5?3H6}miQ8ipbot#!Upcc8QCpH- z!Sn02q7`GG-E~7;j&h@qneF{X>K*GJc<3w_*sj|$`=H8F8zwY zOplX^;(YEy`NZ}*LE8;){yHcV#N{AR4NGjc3DC`IO^@zZI)(pwMM40BB$iSqE= z(crFn`BL<{%46A}ni`p7V&NLxpycs(?Hw8s@r?R^$6jW63Jk+VzSjrHbakaPClj8i zJ#94Q;o-@efp%mOVnbwh&Mw#zi#OD}kf_s#E%n=_4ngZ@c;<3?@&j3P-_THWOuADx zz%jD8xcKnX6Ft5fh$B2bCGIr91a~(wvNx7{+Ycp(6`!CX867g=oV5DLR(s|KFZJEo zp%!Mz5+5A@GMiHmaUPx(pywCb7owy@>Y%A&_*nvwGZ_6^%?$HSzy3qdZ3g@MF=0FP z2%(^C-^RkV&VAPlZ6|BJUS=+pN%MdspFkKjD{yOxCNjj&*{o5oUg8BwggM0!kD>F%VFIaGcvO`0 zXe6|{VR!E$_WP2(z31GQdgR6gD;(-H*>N5MLX=}f_!=_T5dK?Fu8DeRSj5rs>RAi& z@r}-Vn(!4X1GiIAfixK%&amTIG^nzu0YA31NP%~WYT|s-dg9g-*_;QZakGy-cd6}V zlLcgo(slymnse=+CzB+x%dfh+USz%I(Cpr1(>l?Izi;}xt=*MY`<@KZ@hJ6>CvsCr z%EpWc5h0<-gt9H{%+IihH z7mR1oEO`|BSh8QEDBw{1(Yuk4kJd5mlw;>aWv8K@wh?w1*zOIAfJLt%W!4shFbk4aX?b<$wWIyH7^%{fjrxAejtGXbgfM z_*-ClICCetW9PQxH7WZA1DCJu{+luTZ0qEUJI9yoXRN=R%U%IhB>Rt@f{|z9%C+{7 zD^*1^Uq#kC!~KQZG#hLrR^-b=?7XjyCEb5l@R!z7k3S+cb=lKjC&QHfb5ZHavBHo0 z@8vQK8JyMTJVl|y_|0I(LaIaAun?Io6;)M8aY<_UDvfdqIf$B{=TW9ZJV?1~7nm6n zq!yuis`cX>H-uAwC-p{jao{`G*ZdP<^7@M z?u>jmaF@=_vsNcdecR9V8mL?KgSy@L-E}sIe2?Q=$0@t$gapYOo<%1lv~@RMCUJ0a zU7Q`RA=A|N;T=Cn?G`bfVu5uLjH;W?68H1RuH0b!~PS@m-gp!@KzI9=_84-RPV9o*Ey& z_>P)9=qtYW$}jUCMYjqw$_BI*FJ2tKuW;ZHEep#GO41Q-8JT2-bj-DQ02Ia6)^GmJ z0pMAXcY$KpP*r6w1ML+S9**dIxJJx`;@|ybW@1`HM+H(0v*MIDk z0K5)A{Y&huh><>U1kVjL`G8Zyi`6 zBvalv3+JJ|alw4+bC)q?B{eZ1Z@*db_AqH3{EYxf_^2<;>5 z&_F^Ku9dDWWKsQTjfHIH^uTzZQca|C`3=9a-#@<4<{EKZM*G)&59s6c%X%p$^~vIu zkxjcp>G*H5HwTHBN$K#-;jY$)x!l~hhlek_B-5T+79|8oM)~o1m()?*5m3gUfn5MZ zG`W5nco&4ey&Ohh*%&I5qy0{)4fJbmnH8v{w`22;L(3<`=G>Q8Z5RHju3bKKF zSo%TrpPt*OBUl&PC+Y7=WZ3OxIQj|@7TgJ0Sy?FIA+o>~F!aJMDl6+S<`_YEnvqQ@ zDOq|!y29)ix^wUXQC6QY=Mlj+_E)Y5o?Q`zZ4}Nsyoxv1x+7!sr9^Sm)Pzp1!c_YH zqR4%3Qx|PV^qhd!@eyL)Ka%tJ^YyKHLSDsfb~|s;J@r90x8-Udy~W66ua+WH+aaU5 z>k&f)$&iJSSxc*kV5PV0O>6|ojBDJaM7lTc1%qDG)}_Rhv}MV{@w={?b-kAyHJ94+ z7TML*)w4Ap+QN}^wnL0t#W$&X#W-E&sSM2 zxan<=HVUb&6oo~w#i{38jDb1?z4!RGQ^cOGOG&DYdu3B4} zg$wZ~tiNq_O4S?L_=;(#HuZpZu5L$CPFGG?G{{aAfV!rg9v!&^$+_(I`KeMWl z;7p(^T9x_DawJyh!0L>kDl$Eu$HEvk519_FVyD; zJm4M!n*3`hE~XiRWJ{#ZV_+O{Ky_W6KP-dAk0{>n!$F0rmv)7Zmp2hkRH9QxPme3+ z{k5N;4i%}xW%GS(45U;sDi!Fodo-G{-SH+bpZE)5iU56>5(hNp{8}8G*0;DiP2~jR zhEFtui770MRGm_Jq(I!3qM8?^^&>Do20RTLg5!ap;Qj^sl;NQMN5WWBQ5U)PDr~;) zzklciQ%3^yX2WADJI9G678G588a>?HFeoNj+!=GmuH+UMvKV@#%+1PdKXxH?t0uoa zFRBAYGM9|`M^>MgMb9{bJoGLv%2h{dC`G|E@D-bVU92q!wVvIv9G0yj z2k$_1f*JXRiPdU@15RQBtzH!X~k1E>I(jy@ETuulsM;X(9= zvLGrdDki22wnVg*xLM(@VU_komKs^Q_Fd}drKP@WzjLKia((##(_gh}vvKU_qnF*i%MKV&{YPQFHke?}Lw0xi=wxBkXPn%Tk z?52X4}H;$f${R{cx6_IFz}m9pJW!_G+^+h(%-2(+`kgocz{6x z4w>AOsgIw_ZK`@)zy7SumOc2zBr~idQh>`L(AQ|9{a3&la8c$Zo zxXO_&+(@&}I0=GxZPj*u9_zgRWU1!LpED!h)K1UwquVk$FwYKQtpr9UA;Jf@idwx? za66o?xF(QR3sW~d5#U+QW_N|?qm~Q{4dwWLnwyKu$i#&2*E`!6<(KiD~x zRb~o8OV?7JPK!AmhsP1;*H79EI5{|xdTyf z7dIpC6&AGxK}ZQpF;?l1DQ541WgrjIv9v525V+G|T<0fqKS5YVrY1xs_5eEq&-810 z_s8Zvb8yt0Nq1r1!kD^mhuiK7C!nVqoq>#vS^<~7=W%|f{H6LG(5l zje4$Q@xq4%mnJ|#3}aeB=eC`cq<9LD7&G!M;lBYUHm;&0Al*9ddWVv60eTm-l*Ij5 zd&Af#h*08obd;(@YQT;o=cBc@)TU+2Z!*ky#03v6BC1yK%E(~6B*$^8rTRAavgJ&A z$KWD63>9^CTe#k_GLbiqL?KkBm#NzGL|l#fx4y50r}8(PpnX=23RVdJBizwxtvl70JQs zh&vAx1FxH~Mv%6jW8ToXy%800zfx^4Em|YTtIQ+i&Z!XhfwzA;n1Yr23*LW#_P&^M z25;rCV7}N7`R>Shy#a1y9bl9Wd{ts1BACgCVA^riAR!Cks?+~&i+u`kt3ZS8dhHtb zezIRp?7OLY;{)UHZzc;vt&L1i{^RRU2n2xP2V zU)Wu2=Fph>ptqZK4Nn|2hd$ZK)G+0E8F+@EmWwJ|1WgRLh%#C<5E*Tc23%Pw2peP}n! ztE<&##1c@l-av)X8!k`E!f@&M^#mIV%K>ekf*ks~LOR3lGx<|o`b*JMCTH}MGxN00 z8S~`QG_QvGh|P~s+8ciVaFQc#v?;Rn(6Fp;^KQz|el9H&g~Rl?rp0D%S$%?J2lAJJ zyoWP7!1(0l2~kbDd67-l#l*;TuH3b7&J#|&o@LrlaabmT}){WIUh<}s98NTPE1?DPvKJ=+b7 zer;~sN`{x=)~?FOG#^Q}F(?OW1hzCvya@=Vrs-AHqV!=ZY3r$vzu9t6gM(AIs+rbE zZGX9G*=5H0)*X_J9g2_qyE>Roas(fxi98z28GNzPf0J#e6*&!!rt+kY%E5E#87YC+ zdE%Ne7}f31LdU{k>tfnN-$Wl-S!Exa+Cib@^bYH-A zvdm*II!@q}M|PW5iuB~z7^fw}{{5VBYM}JaR3BFG2}a3E8Kewu$oK1}3rR`lT?#4T(P3ZtH@bfK zRz<}hT>lQv79i{IO?O!T*_Gw?p!nRivX7hZQ} zC!V8L(C;UeQH;JH$Et95%OspyMAX^h5{scBV?Ra757x`Ft_SZZy)Bt=5`W%%;m^Yo z&IIM1~N^>Fa4njQ3|DgeD2U(p9EzC7Oxvl2h65<&@`s6rw3rv z6^k1}c2xeKluN&dTklTdYY@#E4vU5@VetZm_GS)Sd)$D+*L+Khtuj&F z*YT5;!vEgBJY${0xrI!N8NTC&L3?SJT565sT&q7h$6avC@S{ktuIkb9a}H#{m(jJ` z7JMjJ+dM?I?Vgg@FFv_Dhvs%rE8G?9=CV)aH>PTMH+8|Eff1QVlN$OgK-4g(Gi%zS z8L;Qe_+S)%d$3UGBel4^%hi7i`&v3j zP^xQ*gi~*RS4QganxsnKke6joMd0AH>kzl`H8#89)n4cP58wLcg0(io#hqV}Eu3jx zdSlIbX`H4r*+@5gEl{hiuk`hLnN+j~XgD{2|7M@-)7#wKL@Jkd72n~*r)OLrF9^?LG=~$bfBXMv0Xz}>hK5>y z;4O+GpyG1?G#vN4C7SCj zW3E?8&bCbrDBMr4NExG69=UpH2ixsJpJj{2J)H+zUTB;Y9kJOP;atG+*Ea5EVoKcK zhaUp)7OSYjL;5`4a8zm@*tK4NS8k52W%%}3+y*SqsRu?t+{y(<9JD%&k{a=%i zBwLaZvXWUOC4`Jb_9!GHBQr7@B7{(6lPEjcgbE>v%o z@#vh-=k4`=UDx%zo+HdqKUQ~6bK~Nm01{Lws|3lb9t8y<$qeG)7oKZa$;l^sp$6Fn z$-X{%)Xk%!u68u*WD;BGPFC5ZcQlCw;P${?;)A9^b4k=2%ifK?6`CR5gli<}ZOW>M zUI?B>4@5uq%V{Hr{LYeZQf1+9QkFK{q4)Q>Cb%^AdGiM{Us2M`n|fvcWWgpoQAxst z%um@fva&U{nrCz{_1l*B?)zFN-uRWL=`^=*_x|m1=+5gxeH~`Khd0eE zeuzbm9#6TMXLNG!@ma&4%_|cgmG@x=i<1VABd|Sj1O=p|42^~h3>8(sYmwm68{3`Rxg`{%SC{;kvu*m`0CUdfasJT>GXZ1aC8J9=2m-E$+%i&TI z8uG~8)hWEuh0e&ikF1&Ya0uzx7-#H6%Jpw)USFj`jy9^KA1bS4QV&ipu_BYrXv*qAQm0VeAB@5h#07N?v`TD=|pCSv)o;X=b;T{^vs$fo+6QNr!lx8)>Qo_i79 zQ8kB19krs(nQ&2EHlK4_vLc;sFWq^(%(309Y|>0!+UN14j%^Hr!Te^j)4g%^NuhNLoHc#d-!jyFoD+|_RTw$IQ~L{`I9EmH zvHjyOZo`7`L~vlu5MWNYbDZMjl&_dTDFiW!M?fGR93OZHsT)c0@%;h@1;ZC;Vfy>~ zvG&vxqX4xvI~$}pgyyn_)PiyuE{-8D6iXD4TpsxPT1~`6^wFdpS_N+!e+U>#&CR#F zlD#ga{Ti$~$ig!6E&<35*Rtt}F|u?Hn(_4r32vhAeGhAfFf*E(4g>c~q_}+lq3tKZUshVm<^xh6m)%)s)1-^fa7V<& z*<8QwN7)T)D9EZ{+5r~OU$iDYkLcl`kCQ}SXQw!1Yz@-^n)__*>_YV3H$*-V74SEe$VlP z3)XWFvf5xRZ~$x;Nbb+H?IV1J#K61>QxTKEygnk+^!>V>p4*rY$v(O(X2z3N9<&`~ zkpI8|LoIlZ)SKs}T(ZQwsln*#i194E3NA%=LH(V6y!{gN83f(N} zMYjYYz`&O;(_rJ_`oTVL>f=F*+JOOYbeZV>V9EeS%N|nFmVPg?X^rVf9V++ANPIybTg}S*diDviKh8O3x0g;HACxPqVMrEP|7haV8J z$dC+@oJ}h3*mhUCIm~EdwRFL4BatT9%*uMB{!P~}Ab@a(DuAS{p}`ucB1qV+6%B}o z$DJq)LanP;GeI_1f}_ z2C5Ku?HMFFM{@o|@P+-s>^_w8ANcwnIkjr<9U2~{Xi++?dHelZ#?ORva%XQFE|Tk?-W`2AWA)k%-Daas z0VbX5hf1kL`44;b+lwmdkI!5cw2C2Xr;pbg`_@;+5Y9ETHkx3UmGxA^H_M1QCQ6r) zsqFDBef!Ek-C>Vj53KQQ7)yc@!n8)YGcR}N5d{C;4Ma#x@)Z$e7X z3cYu6eU$8U`jYP7GeN@YgC^xtQ2o!oBzeC#ojJ?12`_SeqjqMR7Rj&e^XB`km>Eqy z*})j(N%S%p!) z+f2dT;|?}AKN`ol-S0dhTJiTfJX6b&9v*Qjjn~V-ctOpuDA&CFbm7ImkJCGb3ukoJ zw2j#|r{>A$<9*LP*O?h$td#LU|Kb-DtD>_Nl$u%hL)dWd54#MRapUPF@cR-!PpChxSof4vKWg9!16a`321_Q~kq~trl%dQ`|&TA#%s6 z6m!daId$25M5I)nD%$(qo#HM_phdx)>javOW%-P*?5m(I_pj2uKh|ebI**+iCbuyy%QDyEy(sz2^i!m4Cx} z)*DV^Gqd>)wZ2c}cRjQUiqE=i4o9xk8}h!F!bQa&VtbC6sc&koH$Nj#sF=7^eOz#~ z$nDz=m%z{Oy=R}>56RjUWGs6ezkfB+g@%ZkSuR1uBISM`@xlu`$G;8#dZ%n^7}~Mi zb(O9v73STH;b~J#3_4Cu3vg}&;{#!6Q1nUz#D~ZI(owdyKe4{gma|;m<{fXU3+oQ* zITZN#?-6=?f9Slkzxv6aQslo*3;v0|Zau8{@;K|e7ILBENSfxm8uTOCR7#IWUFTgx99mDhezsug4A!*aF#UM>pHuf&Eb=eQLv zUVDyV0Z_$iPs`_pWzw7XHP1`6n?s(9u@bNfXg#V53a|6?Wl7LE2dlnB3~DFVdj0*I zXpTy!&Dq^OZ+vz2UCa|cQcT`LN;rp!>}kBTG*a0>Jl=;KpO2_Ti|iSB5+6XOEyvCN zNwL^Vz5-T@oQzQChR<>t^>h))E!tzoBar!-`nyo|`qn#R=Xgr?tK@6hG|TtBqZ140 zdo=Fl z+{Re$c7B^LtI1e`azNQ5G3N#0apCs#B<0v}ou{68JeG#jeT^>|I{S|9F7-H62upyP zB5X6Q#IeysUuPM9sNmVQ3%_bSm>#t~a7ZKk5);|ONX$mk_NFvVT!`<8Je^_3O~>?X zys>yNyEJ9!wNUd7`Zwd}XGH5|4u#$JX6WRxNTn{@W;b#v^Yagl1x0c{@!XmT1J=F> zrItxO@f6DC9a(jsX*k0tl-=DSkRP(=YtN=3k;T6^-0r)oT<~VvdSNa7m#NYXB>F(~I>Q+I*N+{z* zXdxbqF@$aJ$c^1CY&P^WCF-_U>aY4)DlTvNqQj2orRCRR>6$Om+$DTbB8e1Vp_{r^ z=iL7OHQu`VPD&u6JV;Y~KK5GcAI}~9&kN63d~I#+HeB)Ml}nJ-=AP4!zq;o^?- z6xRi}353ktq11z8CPo<85)eYYKzIWc3aV_MW(;#MbH;W8yZ%?2JaBLOY5}vy>Sq<4 z_u8oEn1cj`dZ9*GHpAw)2Y`xWr3FAuEF#-iFl*_Gk zot*?c7*tf7>0p$5{Dug*OV$gdB4qzvI{)eBX~Aw|^T7h<&bA$Z=Cv|))Qyb#A;t!4 z7wjj_Lvk81vfsfi574pw*I2-R(>$o5A>&G(sQj$v4(uwz56_$?;^AK9_(H;YeP>>U z?30@XLK{kQ?lKZp>fWDEYYz)(QDk28XEJ-L>ydHV>QLd|`kYU4HV7kHi(Ph5N=%a5 zzH_8|Ij1Hb`5bFqd0{C;!{nOpXSdio_frS7*p|GVQsouSNOX_D>fPETCXY#oTPa+YaH>vKjI=5wYD!po&Ds&Z#9uU{ejEvWZ zjlR4fEzw`qR?;Blghd0B3{ ztuF}4+dAe>lkM|#PRt;FyJN==e~vL~(g!sr5Eg53YDA76cq?w;o6V=-?eO9S|2{_e zqda+{sjt6QwNDxonc6eKyH$hBYisbyc?~*t?J&RY8xC&nx{i)NAQW47Wa9Ot46M17 z_M~YvWAno6fA;3GZ0dU1X^n*v7eqW5q_>KXCr=GU!fu@^k0*%W{{bELP zoCDo`BtI$huRo1iM2%Dc|5^!9h?uM{y^aPbH&&(60-3G8Msx>=`r%RZY)uzhJS>4Txs zQSmG9?!YV{BYVW51Q#Q{Z>~-zR+E6%_CL^tU3y2hArl>)_T|eoR8()ENMTRjIwXoM z6y~GLY@uLu8QpY?Y{jh^@4;1V=Jrl?#os^vLu+K>x^41^2K<|bPWvTUQP`cL?1&JdBoP`+7RzYdBd zvAXp32l5VU-{wY|u3g&y`K7Jlg9q)=KUbb_?OSJ{Uyr<@u0y8bxy@o*?EcR{b?%lK zS}K2MWF*$wNHj?0N?*ZRVV7!I~R4rrKJIPvw+WA<#ise zB`uovXT6iAftzIC{jc~fNd$Sj*)mosO4}D@#3xb6sO=pYGQF>%6yH{~k<`OPKkEmR z3si4`p+(S4Knu#TydV_S3$hwWgYY*1SCbzkH4rF3kbN~IftAxr1l+d>R#P}9l@Q2w zOncY1Sih0`G&}TpfTxVun(stU37jHMNJ{eZlkeLn?ea^9>`+R6zP$B!wMS16665aBq-*b|}zqLNE8Ui%#gcdzcw56#wby?tN_B zyTD+t52ZH&vb2G|va_71bUzbQ#-xCg7*$dxkN(B*V?Q2U)VTHd;|u%KW3t z0_C5-(`;7V9+{+X?fAKrA^(p~rJppd34N-I>eXwUERn1SxHdW@-Oq1x{l<+li0K^; zQe0fu325i_CM}g_S|+A4?495uyt?Y{^Ee@aMTYy|%9dA!ZeV?okp&VwUCwSv(w-xe z`r`K)5VZ~EvPP_VkJsz2Ut-UG>l-$TAOHI7D%eZWm_KA}W0=c|5i3MzV()n$cyT zb`zFBwq;)#mpww$(muXRutGC`hWEWf-5c??W7a!s?o=PjuAqlA+!*Pj^$9C*eWbx_ zG+cTvylkoht4Wg&9pcWZi_3MfJtzImP)xZ3~$`UiNRi~Eu zY*e;LP0-d!&4Vs^cGgSj%=g|6Fr5g7k10Txj;gA2mNfqXZ~@68VTIP{AEpNuAU(Lr z;oaNO5z#Qh=EF_>36x13bZP9X!RFT2O$#~Ws-orj2vg^|_lsJWjgRH$wJ!7O;a5wP zICaf1=SjUi8i>zUgueZZWan=^gQ^2sqa+#gJE5UUzwy2X|)!V%=yJA9KWg&vHlXxNJ*hF~67b&Lo zQzJULujQW;sE_!06`C)wH1_>TYjV6{eE6SEEh8_7y-`XI4AE`R{?SXmM)PkR`JH9Gj z)0scrnssTgKqEWKpOl1&<(&9S-bV7XhEv`7`z9t zGQccGRwW4YH=m1^mg9J-2-L!?Ecigcdg-Aj7Orr#h35#Cb^hdGGien@78b9Ldo(v6 zzUKzj7qJsldefyfOYL4_zBf&3+5Q{LH3Y^wL@5H<;Fty_N3yo<{c`HKNhkRGeUqJ!?(YiU?Fti03s)lHi0@1 z9EDN_0~T1=NHN8BsI8)VWJD7cUf124YF{fpKxE*RT=G^B4z<4o_Al zJ|ZF!H7)@ou1=aSvwefFk_-&=Inwzlg$^#Z|GdnlF6bLxQFVBC)!Br>#3uU}6AXp# z_E9#=4UWx}?@|knTo!P)Xs8l<60o=NsBJi(sLhp0m4usBhMR?KaUr3U;X6>_$4>m8 zG3-_;o>FmfF;v3Ozs#YVq;|ze2X#mvEKvi4*h}AGgR%wh^nVdzl7K}+NCEQ_BwVoj z{Hu7IG(ac~WrtCL=#(F)*|lp&jvRpr(t-0`|K8W^SLZeVhg)lv)`Vry1r8w<>lKgO zA=xWuQ+BeOu0Hy+<_WWY0xx~MlLbIR%is3{CFkbKO`m)C zeK=2Q@FfX|d}Hu#8mju93X(YC{mr)s_3-~E1EPTVEp;AE!4sIuA$@T#L8yQ^6zg+% z@?TtlaXXvd@WB{4o)7hHE+TVTW9l~DFc&gWH_UxiAwxw>p8Y^s@<+?5AxfVcv8ow8lX1UR~E?--1CFuPIChTQB zPKpNpf9U#$eH+zzOCt*bd)AM`8QOenA1THXZ z2exHHTmOe43(4XT|9-X~v$qIx)t5iLNRBX?I{cdppf@(DAFbry3|P{hmpJm z+Eea<5Z1+infZN(7MTK%w=V2X+;ydHiz&kASXt3tC0O5_DLd1<4;=klw{L?umW{rn zgdZOj3^{pO*&F?DOGMqji7|ev!O}QB;rH{#VD9vAEwkTfw7qU-^NFYFO^JQbJGxcy zZ1B~9)VE%5e%@vKrL;Ys=367B9nEfn*nW*R;(rKPzEe_?5nA zlM>*n#M0UX-;UIH^qN1X=|NmSc#to=9&GaAnHghE&FX(GsW|s*uwySsNX@|JAKE(B zI8|)XBCV*TXaiAkAi-#CY>(V&l`mT0Cr@%zmDc6oJ1yBq$Jp8L>nLQ}bX{W7cby{VH*`#ZO-I1!~f=Bmm^Czt8 zs-2Z}PQS0cJEK5!X6*;G9S0A3U@rqLAf$ds;=2wL5|SjyDA3$utBKwC10SCo;AG&N z$o7w7m%XyQ%q{h$7k4i1$cK{WYC30JoN6pzW1ItNsvd=h`L9;B7^HMq|6u_P&K;KK zAXaT>MQ-QJ*qDy4F4A1|w6*DIXcn52@9EW2SiVBIWU>q8jxy>RcVuRKb+}-ZbML!kq%qzrb%h%lWafjH$P) zu1xTxs8rJSNYUF*oX%I13XY%bANu0^c9kkLdkti`iGM{5*3{GpU;jc*M#gSc0fg&+ z%2{IS)?gIk32nr|T77$}``yXB(L&cqgXA0P>WV#9=3qF6N*sd-~-kLqlHS?-L%J%L+k4aHiszcj}|mq%@R)klRp`lA`3 znFNKkcT(Bm$BG+Q8-#x?Ra7)|i}*1T>AgK+EHBEbcA`D+oa_eC&dvVAzByz&@8LWD z>MvhI##8CEy7r(@^tez!)beFjPygca+py>Wxfu~Z59`ffok<@< zjwfQ#q!1Ez{v72Y1j=sHstM3LxZxe8tmK^zzMu{8V=fpXUF9HqMx_o`NY` zoa#(ZQ4YLF%F8$KN23>YMGccRJV#D$?rab9b;#8fN59$Z#h^E_%cC}aJul{I*&tXY zxh$2Ri!a@Ey*sK=VSEBK#G=ZkbB1hfdx*wvLGDjXPLJ297&Hc`FQCw3o0-QaM@EFQ ziVAG8YDXLj#NU7nvqCA2SKQvIrT|W#1kExO6&A=N9vXUM*~&SUwf|%e=z~9g{rY@G z5UiiDsHl~p8huASpdJ1P=?YLK494-)!g__IcHYo ztR#_!=YUMoMRfDK$?1QuuQ;|B%$(vmWFh{8wf*0zzI_0NFC&R^bIUwVEcuFEG876g?5SlX8~G)C9 z(hP`5tJu4jZTGOsiyXF~5XyV|y@~R@IaOD;O@1?Sw7~%8F&Wd#ReOOjhxTN+$$qsY z0OA#FVB?1z6V+hFzDxYjER1*FNW{?{X+3bHAi;+E$Y#{!r} zM@N|$80w2G^DoTBb_S3+Iyg`V_5qe(9B&jwP^;&mNy`L$H}MNWGWES06WsO6 z38(v-n$#}*nu(KEZf6Dpo*#Q5`32jlN%xWA`*H=lWPGlYuo|SV6Y*^2bWa?->X}C9 z__W!EA}>r_kP}JmuNJmS--|8P+Od4$H_sXM#u#+R8J>+_rL5h-e9-?MYuk~zCMOE} zdN(Mv{u>~QuFxh6=9r0IAXfwimHuXzcXrc*tIYiOR6BDr4p`{%Qa-fI7vFcCM`%Sv zBOpmm+goeLHIFmr-`lsblm?5AdmOV?V`t~J8kTgj*P50GL>DXltHlxeV~McETd9TCMOU|e&_24j?Ed|8P*c7oMc_t+$5RY-r(&=1}R)m6H$Kae&t5hnQ+d(5JOBQl~yTL*&Q2*TkAyq=;Exzx9L6;++hk;t!j%BTfV>*W)yj=`O}$#*og2;Z75$jd7~pE%%^TWt{o=e9sVy9$E$993T~8&T%|g`RXXzXwDxAd z#^G0Cb!G}jt_^uBaC~O};QmLdskyixv@P%AuWsMzD5ixozg2xdPD7M6xjGuPe zKF;7g?j3$Zj7j_J6SL1sH*P4ClJSaW(U2ZlUA0SHnPdoK_F$Ol9SqLE&_DD0J(~~W zbV9D`OpaW?aT)Ed>>k+q6A|TyrT*}=4L~;n(9LUO5wS2G03fJI5rx9*?%wz;1wKWD z|n9&rMVRxwL95V(UzBWzqixw_atp z3-MIs=eNOlbV{OIv1IpI(w7le?V9*_T22h9aZ@wVzb&y|&>#7x6*oZ+))=Uk$U)76 z#;S&CtmCwWiOCQS4Z*=Z^Y*o7(QAFLoan0)8AF}>2nf~>YDbY)3lTT=20De3i;}VAlx1ivAYw?wBNYt;Y#B;6CBd_W7+M`=v7h*fD z)FwQ`w8ST?G*6vZk+hPa~Q{MLIEdYruK+Lm;_ zI_JkpWAWr-;%2sgfJ{7?i)xz3$~O#czp%95uXM^EOIw>LZ)%E&KJoRS2O~q_oJ9Fu z+4s-Bhz!|OS4#*psMfc!WFYv&2I@)SQFoI z49lbs!eU}FzJ+5DMk+^ijY(siWM_Z>X~b-Keqk(^YS(TJ22~DDUVO9-h(B!@;c?!R z@A!dnyieur{IKy0BkssFGd5xz^D`RsJ(EkZ7W;oo-ClKGs+TTX$#QZ!^yLMC@6SQ{ zL9p#2TZ=P`v*J`EzYIR(|J|RrR~TgB1^F}CskSL5DH#KEE8z)|zSQ*ctah)efz0qr zx0?(wIE^?!A{i6Y1Gk*aLKS{yt@Yeyivg$SJo=P$v*}~%hRsHisQFHP%x%B*Vh=Al9+`8x$H)g!I99>+z67p<^f-h#h zI@fyr@i~E#l1E}|*1X^dY4#gG?uBB+ z;i_wXcZ|LaC_7*_6UaJX%t2QKPiRZyY^#4{>~p!X|0QBqn6ycsu(5HpTP}!w(tZ0U zWK@XA1LG5IkoBj-FH)+MDw(_K4wj!XcCq|eDWdTSo*P}_Vjr??PDvXorG%Fei=S?q zb7mYcxEgQgW_AB)pnQt!RF`1-o*L9XNO&37c^tq0**PS zij|Wv*3b|*?9TzNM@cYasJ>r-bDR=1vb1d{st)9ZR(6$%iSK5&zLm`sr+%5<_Pt3( zMuGmSU-<{>v+8Mw184%a(-i2)9Xvdg{;FnG?|l1eM`x-2WabW<{lw4P^={5cT$J4} z_eAPLKjrqQrKR)hDb(BVZ5Mw$zp)VV<7coV`-9s}p7D;#Dk~nRgNK320n`AE)7_%} z{@EzIm>#U!;abj-17zZa=|}Q|wK37rPEJl3XSj3)qS_9?J_EiK1=su5MXuTET)cRP zl82A)2_K!mEctGBc(ZNLQ_28MVIikkcoF?Jb@D6eEGg|t=7`(rX<|mE@x;dN>6m=4B)7B>rM|3x3WoMi61 z$*Dg(Y$wg{+Q(k7T;7>6sWmGO`Wj5DfdW2c`q`A|lhT*MDH@B-F z;|fmp(dZsaYF6Vplhdq8=2>r7WoO^P=|`RB{VnA;1-l{q!$?y0_H_hDpWa&&Y= zoFG)hFK5;U1P>0P&h!zadHIja-zgs{lxC+D|5FqRFZ z#y3hzp3D-<@gI9w>Z|k6ctcG1W{%8~H}n`CJGZ|_95|ezn3+8Fk-`M_g& zzOyByTTfs-_h<^BX-W+C9hk+IJvIS&VASCVpX#nuw(->E6`rH@v+n0Ciwn0ZcNB}s zLi1xNFrQwwaYw&bvTk24(Ws;Ba7Z_W?iB?#ZwoCOH8;<6a@Mv`hFX<&8QYXIwW(bX zD~k;JysGKAIcPaH?-*np`%xRL*7(*y&gpP@NO}2SPf?AK^w8{15xs%fiJoYTk2<$-#;3F9ZUX(qY1@P^9_t{D{G zzkfd?!&+0b4NNjPt))O3x42ljHeH7Mskh8EX3?VtqUJN9@=Ow zo^!UhFS?UrcR+Gnp#H*Emw-PgH&|Z$iEI#oc@$%i3mO&#{UK{lv2==EKts~&{lKPT z0i>fXfbVUVqvGQF+~aUQZ_XT+ZVO5?mg|{Z)IK8d*!wt3+IVh9CVQ*%gHySSk=@;5 zGs2#W57twylHzx8Y!W>-o%pEfSMToHIdXP7C-2}vnCX~tY%Y5w={(|99csdnLpUcN zAIvkd5b+B+J)B=;NEjFyQ?XlL4;08N@q3XFhX>|V0OLK%p;eV4y&@ZY94N$T^ z`5SbNfX3PP%u2giVC9Do0@4=V4^O9CSRV)-yK-irW3y%ozulR>GHqjHLbR+{3^OHV z^QJ=-to{`g>aa~BoC~<#)PD#mR<;?vSE<3(jy&OZyqO?JLogU07gtVLT2H=ncBX5| zP0o8O>2x;3{LJEd!Y;$LjrGF0{N0ay#=pr7?IT+G)5Vs2mvt4-`I^y#USqBkC+N#> zYx7Y))Z??WqGI!T^7QBfwF&AMzrBI(A-ojg{Jrsoh7O~Q{YIT~driE?(83Q8GJ z4-+@`^7HY*#{^3|f`I{qus=QTQp&*Z2Q3dw)ZAvi)556=mI?r% zUNlxq%KX%I-RZ=;ea>!~C$HP1KStQ5V;5fbic$Q3;0_5jF|@HcFa`+;admWD14MBo z0ZqHh@0kL#bWa)8y+rHs=$z5CDPvhiC8T&%Dg{z9|WtMVtoA z+yKtlPM>=)S9{I*Q5nTm?Qi8UO*^=P43&w%rDLM^~vX>v@09mmI%c>{w9%ezfsCPIW?6N z-w5Vt`RIomP z+d5X@V7z<`W=0NB;P5iQTx3kAOoA;LuJ8gh>h%GYDl2Piw72>IjbQ)|j?m2$v4t+* zK466$$){_AWNI6m4G{C87We!Sxm=%EQu~q#M`D3EhrMCjU0IJ=)TJQN?az0N8;QE9 z$SJZ+M}8YU>OM4&Hx-s-`MJ69#KYxPgK-4u7h9{7$DR*w-||hm+Mv9u(ow!~PW4Za z)$`kmKb2F6f2^Z#l?%V)a7uc=%FzLWO(!7!0W5` z%`RR>>?RDh&@w>1k1M*)tg9e5RV~3tM+Xl{(&r))f92&r!jlCKol{d&2*rX~3uq^; zf34q+OrD2;k5Tl~hY!zdypZjaAnkn!ol$r=EZiPLI+0&cMau+cwl{A48)CQ7u%g@} z&KxHnMH0K%6`y0|M9qg>Wcs>}+J#Y2M^^r%V!p7{BB&vDFjL-%x>{qbnk9IcjFyiC z{^~F}gxxTl&0xz7lp2&aygV~MesCBHV?6;gxRDW7AE3C$$=O2{U>Oj`*&F5@8y5$M zx5<%_nk#}3v}PMus(#j8yiD(4Y~Jl1(4U;OYrAd3ct)ZqdDZTHVrt4aqLzneeMnd} z{Y2YI77wz{p68&Ud5T650bUB-9XswEGM&htU6Gi7RGI!|cg0odY0tdPdd<(CC3}ht zzFjyF3Gb<1yxl47tI?Ga2o^g}!ob9Ip&tTMg_rW5dXsQFU^@uo@Yh&Vz@P+XnEB2Y zNIdtsh&5nLBa{#xFx-NP7xaCl&eot0fN2Fd9`JSWA*le$4>#9g($W%beF;q|p_O-E zc!kPfR-J%1Szq!A!|o_$EL4$fg-6}d(h@E0y@~a_^m6&O<{sqim}L3*`nnA4XZp0$ z)%$b#8$pe#M`B06ymva0ycWFcho21BX1AM@818a_m6#Ki`VT=U4xTU;y(CH4TMnKO zpd=w&+XTt5gtJoVW%Ts88IZ&S9|4?$l#^$hMFoEpws9Q(Xrwq&)#pJZW3g->L%dH& z_PKW-&HSzHJ{L{1pUJ*=`ZZ>AgVbFH#z&C31-9HJTA(EFTDJD~OijqX|LLh*)Kcf@ zER%beFwFt+kIPks7xQ-!C6aLL`U(&CBX$st-yL3thP1ou2jtcD4Gl~p7LOw%wIwrP zoPOBH$=UgciZ+sUkE9U`MH#@51Q)=6bWnPc((qe35?+r--AGrMSJffQ_7$F7U~SZ! zJ={dNWiT$G|ux3+-#RUmlxaAV@Qu)ImEBe@t z>wb;pZu92onxH@73nmW^dgJBchJgMun@b36LVEF0;RN>@8l=ab$U6PJ{f$jQr7G4CSktNWng z*up^E=f&gZYK5K}Ua?cBq@1g8l4VKD2P{BUg;FsG6&X7{3;?Q8Y5YnQF&?b zYvxqL9p$OL`&4f}`E7l5I_^vRs>goaORH~^V%R3ysU>DRH4I)3$Z-;jB%pt_c z!&+HdSlAKjWhA2X^??K<#mbtr7!5jjSB2+o&?3^)Cm_@T5%DyXf4;s;;#H^*)q={H zx;i_HUcDLv7ao07SO^|EDh*Z{u#$q!6XpW6C`VX8yP1UD4sLaXc0FYvENB0B`*y?I z?-Gn;8sO$OJw4rjWB~c={O%i~SEM()(udi{QSw@$F|6 z2ALuV;GTSPRBbBFZD*cTZmEik7=(qY^B6j8tXexJUpuDuMC8fr z9`Z~LWI7;gFIAaSQ<(v!i2TB6C$FCE4uT_V|FwelM3#F)_S( zk_DG*^rzpySG*h*v{f0Iy)Sd=(ilP7348zq61>JA8yi)$wOzqZgCAOpZu!5PS`CT* z{tq8a;FEyH4OXAH|7{GrX&2tsR=!SP;p3DbJt=zQ+0*Ro?vaM0Ek|UMo`sODsdQZa zs!^@_M(AY=@ZX8?ab{^RgVJv3hOy2qzt>I&RZ6( zbtl)sf+M<9cF#{xOU?RGGQzPFR9qNeml)V09|>!_lwH;}CdU(+?7nsoh=1VvoH{gv z1CMv|F~w`U{)~t6$%7~QOHUDxQRr#qkNO29{Nk2vmMftViuy4s{{6#)(Uv1&oR!q1 z>y=yksQd}Oop=ot`{!2HQG+p(@% z(fig-W6m8^3+hj6`xl|h-5S{1grf=}OCF08rD(EUyLV#(;pF0iRc0n;VZ z(OaCGn!4LgY$#{((IN7x7sp=Y#7rWH8B^!C8-KvqM7})wY6Lujyr`qmS`x-^=4w0L ztUpE4xw+}ipVD_29}u4EMcI+G-i!frqu52&ZyX?RO8u#;&Fi zzK!@NAkVm6zyQHfhdvUXnrMx2Tq;oF5KsZO9J)HY-r~EIrEc@7c*0KeFwi!~qr{)7 z37~Z%VPWZ6PLivpMm2~k5s4z&qdK71@(F`LH+4qp_EHSy~0OvBjqaM|R!>B^nAw?+4f z(UQ2$9pWN9)iZQFYBt4%9FsD2`d;N@4W1pt6g?B)7KcoxXErl4kNwyiZ{6Irmv_Ly zd1@e`__dj0&O%1CS>NLbO(DgJzd^nmtuw47`{ zkWgbxbwibd6`AMCNF=@&{8vL*q;2Dut@~4g0St8!jFkRH#IWjeGq4+6ym;8n+T8rl z``5Sv;9!3^EqrQdXbyIq1y8xD{bf;=@!oR=)}Te}uJqml5GV1ckLW?Fxx!-am8hE~ z6YGzP+I1bIY^tx_-JhfS%soAJ> z5Y^hlynV4PNMCHb6^p<}USY-*hNhOtgSkZF^e?*iZu_HTzcrAG-!^>yq@|^w@7Ts{ zB4JQv7velC{H47{cYF4)vudQg+;yN?jqcrh$_M)_&QNNnV&gUVX|XUdt)Z-;_|?UZ zTHD&HvV~%U65Xlz^vTY}KYs|@ezddlA%|=*a+;Yfz;AARY-|CmiqaAeJMK`}I)JEY zWyM2Hdc@IZzf9PmAN;MuiW<*f3sacd$Oc*ys>OO^3U>l-YSH7zb&Kthc!WSrf*b

4MC-R)l&wH`0;@br6s zxFDDKMtUAoc*qkf=0J}Mb&0j8!2Y(BDV#~-xx|N2^?V(z$a4+{$mS^x~Q?l4IQ zRFzdEDlE(-?d1Vxj=Q@=WP^&bGBWMH&)yIWj4*Y)ep9U@>+Ai9GQPm5J2HMIvekcgu7^%YA0hVlkbO<~o?sRPSG^pXh2 zjSLOVg;n3r9s6!Sdd!vGXwBnsDZwjuZY9a&p!~=mG4cZ=v*&-^_&CvP5Vc`;J*k&A zn1S-SnmXqZ76DcXO2VVM6EFDd_5oAvXUzecQA+XB`WCtUk-PX*hv+HP*~K_YWLPDL zh)Tn<%Rl*WOO^_J{<2B8ckk18@0utMy%l%-X&`n1dJzAM0dr`X@II#GW*_FjD@(=BT+J{aRIr5j@Id%Bx)hg}iiIeH4dUXyD1@={n zACX{Vc%rFr|0n&a&8Jh8uWALyd&#kA#ZU7E_4fLXiteyZw$n!Op9jM5*{i8HH~hHTii3zH0r2ZccSU zeQ)NF0u}*dk{?>AGD7#C+j6|r;HqX@?|mX-C`r?l!2b|)LbE;=bmpI)9K|MxO@gvH z8A^3bwjcVLca*g29Pv1yZ4}Y+y@)Q1hWS!>EA^Jj$7ObxiH{EM<=yktPU$m1?ch3y z32}O$5}9z!EG)<={DXXs1I%Q?VWeL(}a?+mFDm^E{Z`qo2@@z-WNx9gGz+oUhx3EgY3&*32 zup<00!)4iR^4G6Za5u&@#ChZhkd8XIgaBj4V(As)*pHi3qo6f5Htv@>NOAtB0|J)N zg-UrW{|0RnZbM*89uhVuSLY(T)Ar_CMUt1g0@LO2Nj%Agqi((8R(Yhmx!q3pf1wSu z&wbq(NR><9$wJ~U-CWN1R)qg;qU&Cw@57+1WokDGV_vl?rXP`hr6Of$w4ATn5GLmF zAPSJW84r0M5sTV>EXe?7{`~3dDQ&EM5hTa6H6yh6*_;3y6 z>O7*fvOX!pEg|6!Vka6ebV+ao7Bq>q{~%AlcK6rR-t&@@q>o?UZBuaKBjq}IvPA96 z{06aak6K&Y+;#8yP{y$Ve*YMD-m5v!8-#{37?oC}nEqPQ5fPQY3y=GSrI{erT%V=r z_@n!M+7h0UlYW7-+FYN$` z@#JpVTA9~LT4HK%9HM`RSW=L^BTgGT>Skv;(wF1;`gmoo(!;IWr?>mEIV^rkK} zJT=*tZL2JL@P+LO*~Tlc85gdOO)c+b+jc%PeP7Vizi;Yk#jP{umHzIGKLZ@xVqLO_ z#S54-j@e66WSJ)=fx%KkNhH0|*X+gyf*V zwZE{y;0;Z9{gbzet>Yv~ALZ$<$Z?PciP)#UpTA$TA8_a~AMCLGO_ZEetE(A(`Q z4O~$OI!d>?kHp-BUjF&|ya!eCl@8N_T9({6H`njqHpIkCohJfU_KDF{t166Wk&uwn zdz4IC{VILW(og708^v*3dgq!_9(d!`r?mfo_kW=wme-lbPl;kO zK$ecW`dx8hSP~UREY&gGQO%1<94-%f>RG?j- z2b&|+EnXxA2JKMow$^V=$@8kYx3p`MTO{o3^@(#onO0fyqulJi`T$bePN@rWo_&Jo}HT&S$sr9zqb{*si?Wqk;YJadRe#JWqagv`lfk5i$*J2W|zwf zo?&d9n}X!<2pd4Ps)X4(cF>1HwDt7d5v~x$3qA&91g8OSL+;lw0w8Ah&Yiz+y~P*# zU2-Q_c+0@_msdm`Z{3%e^kT}esP9|n^w+>|I>$O-N# z;TKNg4(GU^ym(O0<hTS;MK_J2>%kI;u9*9|i&M2-!A?zDT8quoiv?X*3KC+|3a_Jih|gT3JpLP=V=&_2y*Z6!WbAB0ERHjhT@tK4kayJiCyve z^R?JLBh$4g?_eE&YWT!*vWqs|_05y>Q_q;Sx;vbnvrnj7`F=V}$Lt+ak(HdBnvzoL zaIM$>z`Q?2dNTfloNDpP*k-p1QvIZ_&R=MAFFsOP@$lt~7XOzjpUB_L^W7gBU2NJ% zE8YJ^>+5A97Y*^7ru1d$tp!OD2W3crFk!WZ;(1b*_#UMU{hoP{oj+)nR z_1$2pKHGcKFMp-Z@zb%h+Az`hTy*0ps(4mA*D>*&a*cwV@ym9(R!#P|C8u6)QA;%( z6Y&pzK-5!YT<&r5+S;F^!?iQL<+tU}yu0$8ef2fLrVA6M?D=iodDv5-=`N^L^<*{f zd$zh?vbN^c9COicMbE+3(lEM%WwWJK+EHGb&*r{>w}Sz-ynNfjWcal`lHY<`pV zfXZt9_Jv=RQaYrOlvKK;LqfVc1SttI=u|>V8l(m3M!G>#Qa~C6B&AV88or7D@7!_k zx##ZT*bW^#eBZU!v*!Gz2+6w+Gtb{o_9JnRsC>2YWGi01xAs*PNVe0FeK3 z6^t=}eHb_>ptG73x4vF6D`1zj{w>^oD(O8QX9KGSdG}sw}lvEsX@CrQcApMW)ocmGcPpmMeAiAsQ6SaiA6g>FzsBQZU(4_Uu7A2P_rP zSq$wI$Y^K^uRMWJYI|u&je8EEyuk1Xft9h}tM>;Hhhl8;d8IK0TUY1re;a?g!RRXQ zJxZqV3zjMd9X19Lrl6!025&#PK{XVb*sFByM2T_RO#5_SzYZ!yNWi1h-11*TpNdd0 zgeQs{BIC4V>@*Rc^_Ln4=Qz{-jod>nxp7gU?yZ^AtQg!8K2dGIx@Sj!0$Fh#8YtpE z+S)3iq465FO#ob@BOv4-ocskD8TimE0ti1eIn0JAGC=*jHH7N{e-c|a<6N!v;#&pg z#$;nkGVed$46vU712(y^2Upw&vx&hDa~FE1>&1_?0{)hZ-EA3ZIbk?0ZK1X1$>YLs7rC8k4%?z* zEvjVRCr#DA1#b%&T;fgONCEL;Z*Re&?EfxR!IK151VAo%6_xmY^y`+2{#p2fsr})R z`(R=%5^=x!U|fCeuiN$cvPKKkb_|ecO^Zy!J*$~KhD0P}UOAIS?!jO7#<@tlsMR>U z{qpD&_fG_0XV67!c%7h)OiU2Bb3D7C^B;l^1`bS^C^ySU;M4^vjQiG$pBkg9zn_IJ2Z_^bgi+50o-ma-@Sa zM2;Q;OE$WD;c)=$@B;1<@NadR{efG>U((b?c9N21?o~jT|3Kqio|*JdimJ&t6~Jb| zu7JY9WtN~S>rj*Qa^%^lJH}I;?o&J|u8wk!Pj`uFVoWhJ+M_hQ&aGah%tk7W3Dn!y{2yxpUs zA2rumTwRQBZU_~6mrX_I+|tmu*jy6J1V9feL|so0m?eYS7g7YBY=HS6(6KJmg6`Y} z(9icg;Q)&l1YCrf>Pkxom@`7IHmpqGoPzru)O^v07S$S1GX}B-0FH^?nL?fVHU)O~ zEnBf|*kT3lo$qtceaPj*rBv3jDI$784_gJ{?ZiQchlbtl?an>XoSWmRK6~`Zk=I{~ zcC&tK4XWp5OkKI)$@)%4%u^E+bni3T@~q~(K(04Hc|cJEh>W3sk(v2g1X0ZU-$fFj zR{E>xZxs5dwd>qWD{k1;>lu+6r4Cc2sQ19XbD2#ub@o8G{J8Ytx*5%nYL~afQJqKQ zD^4Tdv>Z>p2TD}l9xnWd0Wv={6eCr6u)8}bB;*uoCQA+LxByiGkPNXczRHcW6?me4!VZMh*5*{*u(_nAcFxR7rJvGdgfYSX=5|p;8F@KDfoV&02;7$ zZv0?ylNiFnMoj!`ZLJnA1^l~lv9V7`R>5=vd@Xo@|Kgx6%WD+>{)SW6Ik-8ilQ8X* ztpIAdB{%bzt1BB{#3+)_Q*>A}o<-wHLQR+O$M?bg^!U|QgP24LE~f{6ad9c*tcW3< zsQiSo!qd;YN;zFZiS<(BrR3|A!(K6?>vF7v$4+4E_xFM z?~O>8Xzg>2UXnF`CoK0)lk51pTQXqrSH~&k_L4%-@DYKJBE!hw;5Ckjg@pz8+yl|D z&`@$=*U!+j@y-+;15nV@XzJ=h!fsCCnRgyYU85VJ3`OFaf`3Z#&XffFp@oG&_Qu_n z+sjCG4&j1}34x67*!cd6J(;nZe!FiI(2IFnQcf?CmM|nhl2l{cnkTzG&1YzQ5<6+nhsSUHU8wC$`P*L_heL`zw91p|Ae;vx}yyRVUkg zsBML3U)hv|6(=QI?4(F)Nct;iJ}^=9C0fGSqH1$LHwPV^_zZBWQ`Ob&I1w(QJrou` z2MlQ5b06#7#pbV~V(nmn8)5TSAH|`GO}%K|NUW=S82ku`;xEah{Lc-A0vVz%Pu`s= zTFG=usBZ|hB)C@5CcUHolk1Ng{csJ3ro+5IR(23H>#jRLGH)PpVyPfS@`v5=E!V-) zA+qRt@9ngk+Xy$AnFM<`LSI++XK}YwrrQNl!BcP3J0iuu2=}j15%?=adXlN+XB8E9J0AU~yS^9w7YENt=Le2W4V;Pn-td2jm_C;p_(0 zMV))q`uFq=3~->(3EsW%D1vpjP`fz#KL7s=`b{@Da6(iKWPi~gpUPOt3@QA1NPCYL zUlIrtYJb;8zL;-+|GsilE2p?cd19w-`Qb0SpUF97B=Tc4x1)}26@-fM0qF(?3qk-uUnJzVXYP+1 zCohc-rJP_JI6FDvOza0X2sl|5)*6@jaxf=C{Kn9_BWQA(hZFG*zSnEgA}QxY4h71b zKR(!X@Z6f*Iy;(wp!W*@l@CHLk6aC{e<%&tg8#wX%WmQJq#rqL9qt)^8=XwO{zh+O zo0n65yA2fk`=Y{U0GaM$D9oZe#eG62E1Mulc-%s)q18j@&2eECdT;m>bI6YwUNf2< z&?@#F8Ge{ffBq=jmX$ZQ?aplA;Yvxf(F%ZW(6j+(2f$w9!p5m_H_ghl3>|>{&bT_9pi;p6rje@ZT6C6Ze(eLSIe^ib%VA zH0_-7%_{W$|9=C`N_TvH+Lg67`8`Zjga2+p$*;U=tJ}3lv;aCk?#VB4+HSZX!qwwd z*K;dvLR6?&ahBA`JE%Ep^9t$o9T2eKx3%m~03i<~pMW|Pj}k8uL%x6>gMA<{8Do!X zG~Cb@E|k(0+T*T?ynJRle}NR7_;E7MHi+#H;I^bl;dutk+v}=I%?6Q22=}<^a&OZ3 zf&;VyXM0M5p@449ei~Kwd-aY_@V&fP)d(WjS;w#7Nul6MLl<3NZ+;X9}t_M7EJk;U$iXnusAH#K)|!sNp>76=Mwq0 z5q=V4&UWGX`OYqZXyOix%fW-lS$wg#4$$(ZPHih>Y}LkSs_0!@o!S8Y!#U~dekK^R zri(zl0y7M^Mvfv4{P8hsg?1kJD=n5!U`Yob!jF~Gx@M1}u)qQWO2Rdo6thd_s|h%P z0kV&bdz@KQ5fm;rcbM}>UgWW?>@QG#rA|XkUB}SS=f*}uoth)18z`x5j_Ozf&#snh z+5iUw{w_k-Lgv#^(uw!R1`im7M@Cx@?d`GHjNhZ*dbs@S2r|gIW#4~Z|F(u$J7nt3 z%8yTx*AO86qZQ#}AvUf3WUKe{pNVRc>{~b~Gk%%B0zpIH^{<-$u&N3%cN=w6@VI9U4KNq1V0Y zx?Eh}-$z{SgtAlQD9^UI>=y5YV!dfbqNBNK#TzkZ2@orm$ukCP+*$p^ z*AA2i5w;QOYO!8TtG$c&y_@o^!q)`CdYJK+XA8Fz+po8{pCfUN%dw3=IZ`!cF9yw~ zEpnNC{vPQ*wOq-}?tgQO=ysNHT%o-Zt9+5H0N4JT4R0z`y35Oj%}tN(X-#C(!|TYs7IBQKl{E=W&zRzoP}XSGFCJq%_OYy^G(oN6Wp zO(3fwxneEaQNk0<)yJ(AdTv4nAsj-rtpIkZTx|! zzSTfejy>f5RAZy31+c4^IL)K!9hVB{QOXVesFX&*ykbkw6L~za(+Io z^@)Ihz;!oGZ6wkfGOFKPetz>nU4y}VbJLHpI9{iXw^g=-{5+0=Z_yEvZJkWs-d&;H z(eJpBhReE9025*7Gk{sj-K)F^4g0I3dexOYu|zOrEJXkm3CT0pev2TTm=VYRrIot$ zN?8L87Vg^9n`6TKx{3{p%T0Htc@Ma1NoMt8Sgi@U(GEKLIZQJror}Ux53P=&iyQIyB5S5$X zHh#>AEz23(+7xK&@OvJVkYJu(UeGi+D*<6S1v${o&RD2jH-1Mw5-tlDxj4)(hvUY? zAUe*aM*BV_xmo43^TI48KiT?j!vnxgJVKi6JoI0aUw@iunlO3PBHACh9kYy-K0OP# z6nSxu*8qc%?$b&j%tR}hdg^lkG>LFDEfpQ*an zjPFc=>+SpSpy9=WZ&($b;>l3IL<^|yeaGb2Ho3Ii>q90XEPi1-e zbfX*h@WRcyx0&QuJ<8!Mt(|+Xa8xp$e2+eHci(`_?X=qV(iZ1BAD_5}hQlJg!1lKA z&r@S*6m*E&Ac(B<_$iMm&R|;0ukw7!>i)46$zKy1jpR*a>YO9KdveXCKrzk3aZyJa!7+ z5s)3K@)v%2LcY@=#!7Y72KXtR`)J=}sXB@w=|zK_e8RQ>rM<17j4$4ClkVzRLF`gC zop$2JVc_51J@gIgOL)>c99k~GV|?vHN%KDKfzEYBhW~=)lS>nmllz`uF`*kdaqQnj_kmLQW`SXga4aR7X! zc9Fp5LfOl|TT%1gn*&d9oy$SQ%CIry1q5z86j#VQ5_(ZQzV$S0+$?OofPJy$tYUFC zK)wvu#mMY@;lWu6USU6nE6*)>IZ3^WhX9UiDK|isR_5k%4!&@b5Y2vT|!a74K>PbRl{$EV{Z%a@PTm5r%sA~TeeS2NIZ9OU;{)C=~L(^xG*#keo z(YtHL>MZ1ur!TpC0aqNE{5&z<$k;ZR=GEzBCg++O%nmnR<|>Q4bh&!SwI`a!zEzOw z(hE%3lpP;U;7%dn%hy>`j)b=#%?53hf3db{T>9x2GFKA*sP$(LJm}vZ3JF1#*mz%G zXzLRYHW{^e81%Dey|G+?Tr#GL&95mIRLt#)M0#z zOeNX9!Uj(WsF1Q^04@=mF_w%> z)II4DU%t!F+cW!jRJ>XH>y5X|y864NWmHZ-ekzb%8N2mw7#*z&1~4ZY-|bsU)Z4dd zAhy~6m3B2r;eNCfQVa`Z)>#f&EJ=-$YXk8ymgI9DLK=PIY~bl z9&3~j&*%|-N61UDo+yc*=@ z`}Mz;ow*lCNN z$HU89GRS~I9DRK~f8Vt&;`!DL5vm^$k+okVCXUZ=epE8gjUD=&{hci-++55=q<>Db z35Z{{FgGeD!dS_6wKh>d2{$mw8_K?egrK6Kr8Qd{`UH0?nCQSo0XDAxL%yDqv)bsk zug_SZ|G(r~R4)%!)10d*+zc!Rl1nwn(^4rj#6Sb6cG2-p!!9&X zCd9|rfW#V%o6hClTq?PKCYGC6La*4;m++4Wjj#tjz0+&Cn$!k@HU#3<8~SXfEo2k* z#L}%b591p7^wr1Q*FHI|#ufDUsiM}8Jn5JhD=}`GJ}*v6(uV^03 zuz#YtAx0ci95LrMtdrn>rsSK!EqhDn8`q55|yazAQ#{cF2BDmhn42oeMo-ikXj<0638Cf8`HDbF!> zu1rqf=PFoUjxW8ueAvREqlP;6O8&U9{&^u)$R}@;O-sX)W&SU_Oo%UxWuHIe20sEZ z-vfBV(rXZf#zjTZco~5B&d6xMtW2=hO=zWi-LalWfywAoartVr3be|;pnzgZcw2*X z(mqvlzwu*p^Q8*}+<|Hf-qoBW?*VQk3atV@9?E~Qp+(tb6|KsLjrziD<#CIS?2niw zhNik|de)N{k57_OlZXOx9tc(C_G_oiftWk1cz5R!ZSyxI5Sq?X3#P49h0Kpyu zT0@wY!0!a%IY15GyH4pfgIxe%YoU<(kKt>OuR}iR)UzbSQ{=(f((R}^i4TyGjc4#V} zirFjZ$esTh3M$`kd%Zi}{d5jV_Q!1rh*keqoHW7MclWAIxkZ=xwe$nl`X$HJHT$Ac zl_QLc8Mm%5BoOO`={uNid|O+95j=K}r$mn0l7w|+Mo!(YS{!_Uw81E@D?-l)DMGUj zE=ljdGwte1LP05KN2$N8rMK%R`I?a625RcsCvPEd$U!DzZfCXHbbESVC9T(qeQQ-@ z2@%N(%C`~6)mX7JpRz;?4!N+k7xh%{WX_*-d8;4o=|1D9d|RMgO_q7Ms_1sKLWG34 zP0PU01^$PxUjsYMKxqOAB((k@c=v{;Y{-_@c4{1l@Xn*Hsr{u0F^DjM&L(xHSU5yj znVm9T>l>_eLp8FxnwqJd-PZ0dl*c|=->dFTs>#-1gmgC0PlEA{L5bJdzaPFiK@T>{ zVO0iK@6X3syM-{*K4*%_EdRXq)v1g?J)*WnU}1klvb!OfwcO+`>jST;FU5r2h9;#g zy>CcQi9RO5jCb#j9QqsMOs4$1?W!%MPQln&N3Aa?N?yzW0^SH_7gBCZTuSt{itp@N zb63nQKIwCjFQf`=2IDr9IG57H!>7Ncj<|0HsSAWN-dizlOn}1UzUXKG_xy%4&m!(_ zbC?IAB%VLkxl8g6-Z#DWI`d%vd%T`V1fCZ(syO~%i;Le^?2%?@*Eb-adgA8S8$bQj z&EyGO?u3av8BwbHw#WYiqt)T7^fb#OwmXQSY9QR$)+8AuEP|I1@@dizdt<L~K?;kgdUgtujK+ZN8Bpj*JCn^pnJ`Ks?@DrQQ7u~I&)U_0u-Fae}llnpX z2lrPSr0Z2ofta}O>hh?tqa&p+USn~|1TwZ^6c`&BnQL!{u-ozOJeR<=)W%bf$P zAddcLQ+kTOKqEuJ7Q>ZP|ave=OPn-*K%gVy!mA>aa$8SvPE$mKBd%wNkJ` ztuF~xuO%Wqh|U8X9?Zq5Z*hUPCVpoMX_1kQ5I+SKxYzx+Ryc5uelJQ34OM`U^cob5 zQ_&AK+CQl-^yc(I`O|c2ukEF#qDaBPJJvJESQ~pM*uSp6-1~IBP&Psvl4J@xL!0_~ zH*`wgzkYf0?D%&Wt2QM4+_N-~4e2yGX`BVM0%T#sfdsA-=(z$OCwc|8Dj)(t$qkeS za2pQR*5X$mH)h7)QD8H|d=2f{zzBianw?#x9ImNIanBDaXh&;q_6AFdc`A(Y9`5cT zk22EJ(*f;*)In1chD2>>vwgL{s?=ix3`6@h-SGGe@TGToZDL_409I)xgy29c_$)*@ z%qz9FM(%DXt``rc*Jb9zM49@1DYm)n7SgP(=I;Y_dhNf&L%}wqYJKO~j~4#rukV%J zYU|Rg-vr{eNnf4MwsO#0_ z$pC+*tFWn=*%-|; zpr1y@3@a=;&CQ#BqI_<3LPOmJ4p(`uPUS@mxxrcf!6^2gPwBU`6xU&wKcS#0RqiMy z__GmEOY$s%8SUflyt`8YnOWLV}`$zqc_Iv}YG_gW1vUZx3b_xkAyV5{|4`wwmuz-D_q+|z7E!RnS2?;^} z3Pxah1M6Z0F06ic;n{>=ripl1LiXPEB=fW@-BQEL&(}B0D<3#dps@ugzJYlL3LjJr z41}PS1k7;q-$N0O{oH52F*1x%PW72 zKW8Mp$So}$ZfS|C;)Q#l$BeVMIPvs!mpsxbt1AtHUBU7X=2tvPh`E5&Pdh#XdVIhn zVD+ygiJ$OPZ|TQ+Nx{#1%^>q!S7HWtnn5B0c!dQXKCJSw`JUfw$JdZ5a(>iu1XH6eR$B}ga8LSJgOhqu7U(Ub(uIY+Tph} zs3ziT^gbZgJ+r|{dOF1a-3K6OOaco)P_H4Jwd7OtFtLZDja$?Uaj~%2zAn7`GCE%q zAImiFLPmxDp5lma*H)>#MPwYQxrI{*m!G0VE{&vu3`|;d~&cLCLR?P`&r_3eVHU07!tmdk>>P{k1O80x0lQ>y_a&Vp-ziKVJ-L~ zeZ4=i{aT{SelMH);X^UFQtKlr;Mf=)rRAHMaW$Fn6VYfJ{HD~Rq) zRD>0LW9uD+b6op2mR1WvUhB>Ai6IUQ|KIL5pR6VWn+^(<#}(eGX0Y-`Wxf%8FG+WZ z^L>;5G5@}e)?U>2hRs)?&!iK~V|#M5;yR4Xk(u`<%UIQE+e(GPjqy7z)?cK96y4^( zX7XZ6eK1a%<@`;7aMSp@YNQwYjL)!r-wFdipgV_?W9&kM$y%}(xHCA4&_BWV0g?vj zgQ{z209+^+(lJiQB zTK)9z-760Z6IHtq5e-jDDsO0T0<-`s0@+P2ceZDgdU`eoKN{6q4hZPzXe%k*eCM^i zB@Dp;pf7-6iYY7*LO-TgmzGAE>j$l3y*bW*Gu1{t|Gp@3BURbK&Mvl*4Z6!OqYjum zbHCnl=fy{XNg>g*dY(90@1Kh9b_bN^^hDnqh=;s-r1on>LgmMUzYgDRT8uKJQTE5J z7C<=;9<3UT2qwnvY2RcE#;-dySWWyd`b+PV`%u>Nq0l_ac=CWXX+d|B%t!n=FZ&FZ zV5n)v7T_hX>00%~eg_ls{5k3*Hi7hCSg}{(dyW3Y1N}UZj9Tw;#FnZ|1$||X1LIFU zr>BY?b;Fh&psxNuJo$Dr0aCgK6A%8#Y~*d zpNAzyG`}_FO+OQ!jJAP3K9mgWCi8Ju6VudP`_ zm^E077-H%mqIGCU)net_m}*R2AV5*zSr%bqQ`XXQ0^=Dh4{5?~D)D;d?X!crz7|__8|;rs@F0QN2x7If2KR9#!FLHZSHHkOG{067 zVb|aArkF9g^x2wqF(mkPh4}p|8kd^JGy?apjGpgp0bFKmT(uMdlJHXR;zFlNE!)7V za6#KDCmh2!`o)?0of4F9LT=neK6Me7 z)4eR>@#(=**?A-km!~lxM>THtOdPQ6i@)x!Wn^TBpqyYe2~{y)Y)xP%08H86+iNqH z&sGN~G&gqzyhwXzT;1KlBuR8eO1>GNmKKqb2Vwt^6Z82xRqFc2(Y@bg43=$PD5rrD z%v1CV4m!}y**|~2)6nEQIx!QUZn3GTk2^ zLsZuh2pGA0!zGLR6W|5^p0qdo#)i?#Ai2tEi}LJOyH&YZN(^KP)s{B{vlAzOK~@e% zMu)R~xaak;2a+K}`R~BB*B3MjvFt|&2VkxJ8iKt&S>`974TarIx^o2vie6q#fYw1W zN?AN;RFoj}`R{A6@;)}XC7~fi__BACrcZguXiehk~T#KDYenB zUw@6}YwUfTdH!u;;s^|G_H{74G`b)5wzgiUlkBD1)La7#Ftjy+R4YCG3E+l^H`CMl z2lFPSgvfSa3A}Eq&APby47ody-w9$x==}g-8-_cGY8q+{91mCa-cgTwpE#XxWo7is z<1V`Q<%t!Ty}&$cGnxk)dOI5UlUCWpf%X35$GPZx3a-L;Lo(o0Bn!!h-ZD)^@Jqx%=idw2^ z@yRwg$$__j3P1^rG?bJ^Iy#II8qLWMM%baErD^|`cqHvj{y%}UX8IMDVV;j&T?G)- zQ03g5#U0!N{{d(xz(q&ia;YsVdpTS01pSeqErqWdb~LXVg~1{hi8`-F4@XT=5NVxr;{NbMx&ZCa>3@1lgGO6`#mh8pb_h z(sF)e#BirCWY=Y(&?xtmuxIc2_#azok(md`5-gtzgImHY6%!#i)<9oB zFg=JBrHgp{ebTqNxru~;%tm|mKNHSda)ljKt56})Whu3jw+{wVgt(Iv zZ#4z0(j?2DT!ANcstah)>S2as1Uc>b+}oTYhjlpOFcnV>4Y}?uKL*7sn6%+~{d*4K zEbsmH?YXtJ0N4k?h&jY}>j&!krs02S0mAnhjg)ku#-($1mU5;b32sot8_7>w(^Z9^KSQD|2>6r%DcNbeP+D5lrS}Iia zTrR7b6gm}lnhvG!MNCpXpT3jtk#JJ8;Zd!E?u%LkYDx|gOxma*>g$dV7>qtxwgInI zb)MK`&SE@ggZ>fxO$eYQQNSS$>4RVyhB!T4B;3w>-9mZ;joU$DCkCJ<-~0P_e0W#_ z*Bq>8d+0OUDLv-VJ?1B`z|2)WqfYS|P7_&K5(IUeJlH*;6~v19fUFVrRc33P zLqcH9Ai6eNy{fVj^x)v~M?o;LvNm{MoI<=2Di)c4*f9)p?bD^YWw77ixe7OD)^Xk$ zOq|*|NDd`>&3Ut62+ z;4ctMbRXr}lXoJ~$(?ayE-x>GkF^WpBf!iF#}M4b5U8S8@0btocE%%=Qxa%%0tLQd zi}wY@lK~l#keGN2!NklAZCcwoE-SZwzymicrwh4VDoH%I&Z-1q64cZL@3&2r5y~to z8X9!IgAZ{C039Bl1F(+@-(`njON+%)d)kk!Pv97YGvAJePY#{D>b7WX?v6w4O2#I} zyiViKjEnUfpIQ8fsV=LRMaik(*hy+S3$S1^TvE#&;_|!{?X#{Z#j2)|*zVe(r^C8( zB06=}Z*F#mmQ+caqD>qpS&gPFzGM@}Qks3m!;$UxLWQ>%!UVKr`G(Oa?L(56^Jj81GKCFy+I&u z1*anU)(Y6YAmIdFK%nJFRI~(J$>Pd(+rkS7pShlMLH-QiSI`3xH{1ro3p!l-`UudG zq2mrxgdpkV_UWf#YoI>AC5cd4$iHG2-yobKy;vY)4;$$Q?n8r zLe=*5cpQkI0H46H4fq{o241J988BF-s4dbV<&!sRE6B9MHI5jTVisiB)zuy^^ zw40!oa>cEI-)a@MdjJx^vU~v^F6Z1s)ggOulR%6De2VKX85oUTzut%W2Dk-yx%cWg zBnQ=0R>sQF!^1Htxn=4M{mt49x9X!+bV3R+=cvkd5eSXJ+JxGeILdEg<=?c)>!Qi} z0&?yO%C(64UqFU8ZdO5e&TPv%r)zatN!5qa(o|KZp8orrt$EakbSl3sI<>@RTWgy# zI5=s~vP`<_Ug}L`%+FsH(8F`JGd5k|$kvFLd-q_wN_aJyMJS|%#(JsC(?R1hCHZxJ zb?zz8A^oPlEzy@;FB~S3s1Pe0Y7$8Ntge?HXx*_pb z&?zs60sMB?2X@`hu#Qi`YzimUo;~c@b+xtNqJh|@B2cjN@oB?Vk*GBB{L={rc9?v{ z1PV*xf~tsJK+*>VOI*F>0NK`pStlq9T!lY2HF?3j3mFj&_Vr{Oh$jGlL2}(p5FVW< z31XBSzUUfo=faz?O!t1AeA)Z!V-qaDplyQJ1%$=J%=vt-amuFi`q}EcQcmD#?e4Y) zt`F=3U=^?@XIgWHZY9ddCMW(>b;&8>ilR0RW_ZL`b6Ii zZ0ZM_Z>rBpeMjF#47!M2d8$mQ9bh6DkD$^+Wv6u5YjGiVJ zSA9MgLaV9XOJcimlw3SRP3KjM{_~rsHzXopgI~0J@j;VzGas7Gc z!G-67!4d{x#G8>^l^V>_6=F9OjhEr%{K}$Q-SA#VAi$Zk=K|wf%jrfT(EA%}Yp&2- z43FjH9@t)>nTU>#4$u@B;-AKhRn87*bNl`!P>GfFvs zXEg0ND%3=qTDbK>liW9>K=VsO1kmFTj2lUkzh${K`Kvzk!r-CZqHNe z&e`|ul_p9ZDsfzT2wSqJG|8J;RSbP)gI>9eE%8E}L2DGh^lhzdBDTTvIh{`u^3*XI zTBWY5?M%JcSyEig?oUlWD*7rv+XvQ)=v_v$@4mcy>`ThA9S|*`4&3y14Dbw|Yyz#AUMFx!9w_m+@ah)*#>ZV`%-BxB> zY=}?w!1l6-u_P(Uzrkhx zTk6?cE;bg^E66}S+SPF;v;na_sSI0I&}+8c(lYfUu52?+hG$||N5@~k`x+2xu$SlO zhJUKyD+%OcSG_W&Ocz=YdfLmjn!Wze&yobkNO=SxNlH!I`f>f8aea}=g*7GZ>33uz zlQgi@vBLY+NFQ4waswJ6%c`pEt2h`KWQ_AGA`SP$WH{pB;0Ov0H2}>DY?`pu`5Z3G67tKlKH=H#g;D2$AaZKnkY(^Ng;8b3DA-R`*gSBtc< zD&@P!aFvZFj4_C{E$! zHzLI!-$a0@+zSqcYl#HRKH!o8e2NIPI%#QFz=%Mt6fto;wB{rhEh*kYz~Zv_LIA#Y zXhJmSAOT^4ZVlu~Pnyqxa0_^E`1|A_zzxVZ&ZiNF%zaVy-1uk@1IcrC9$f8@cqUd} zsOhUm-S6&Sni{!*Ej#oTPm(3jJdg7)TJmQ)Wlcf6z%$09z@NC&93eVIQ~no!)s93g zjqmc9rDkJ?>AIF0cfUOn9>ofOQ#-($=;Ra`Ky`T8wdk=KiYR)AEP)F@Mk79PY2H`W zEo(55coQHNXO2l#x5jyshr9|#W&l^!@<-WQ&SA<1X;@WbBaEvQh~MC!THm~mM{Q_m zsA+f(9}94zmoGWTFJX{{bTv5odB_H4W`vlTpTYeM%N_6uO%PoJYcycmg4{JC$cF-0 z_}?7D0;GZ@v=~Y=f3cz55B`lbr!aC^+EQ*cKsFAawIFCUlY8lVdWu37yEk+E)RATYmXfAV3vg>BEN4@w%iudmt zQ$q{AKz7^muDqjlN4kA+8rM72Af%*YI{e_0k`hQk5uhl6@^^%I?uY>&%$Ms-f4)B9 zKu5k7k^cSO+KOZ#mpKf{l`(+GV_{ufT)=(?@j`=3f7I30ubVXHW~tCO5~5gpy5mNN z8wg)#^zme_vd;Y)%=*$nHTqcK#v4ngsw9%oeUY&8anFf-f-7{Fc$jH8s4^peIhBt%2?xSn1jh&K_yQ6db`5l|KLk>BAX=u82Q28{=Z1;IxT z%;(z1#&lr=LV~K@gL50+9+sl(V}o=0p>Uwi+Zn0Z;^#0_o=B+*RH7p)yspZ{w_ovpBn2ndjNcK!<@s>P)x zUfvlhZ!>6I#>M>%#u(_Ekf)CZYd@3$4O#Obz5t>FdF?RYoE`spiV%lE^16LgIdwYs z?50GjU#}{1Ae5dQ-1<0dIq+5F8->?~7vOX0C1tn1SCAFYjFGnfenc@4D7pX1l^sbP zPd|B})U`)iEB7~g7K{AdGAeH)F1pq`*vtXcd4-U!SG4h0Myxcnh9MO>44z-pLXC#<!c$Nn&>N1S zE@CurTII_~YboW}cqO%e!d^U!iX}Y|w=SGWqD=FN>*KbW@Kv@UgW9F6C9l5DggooX zS$Ra-TYsbPhKb)cgVU+eH+DgrG?o~=OH-A#Re|H{F78Cc4m--{l>=t06w`5>8wl#( zrR2z1ieriAU&TJWN~Db-8KJ=#*o)bSZed#qf2P|&oKx`Wa%IKgPHBV=Ugb+3hmZiO zfE|UgnhAAh)ks=6#)ZXHO_wt$kNvR5BzvT`H|8)(q?@SfTEE|GTYGxyRvoJL$CsZD zZ+r(3T3_nC7F$b&$^*@_r5PUEZN$9-H1^#ZT)cf%@rv4VkvJTOUS1` zm2nK_pxyXsLRHGrJm`$g-8)dA=>GR_j2@dgmnQ@EhHQVJ8U-Win!e4SLTNYtjk%P< zo(AIyU53$$;qRl{6U00~4Bf*I24R4_o>8#kj~+e=cj==^_$<#NUoh+#C7fk{je5`1 z;iOSW$bt;K3v)&wA9`Iz<#F{Z}TF)Idyzgz$(IeWVC6;Mf(o=Mu$9Rmldhf zOyuta#;&i9W_*tV&9l@z(`Gf){{5MdB@!mS7Ou53TN(>a_VvaK!#V4U`?yXmA1eXg zUx+gC-cq8fGi@!@UCFhX+Oou484HSiHz&KbLiokYr`)^6>^3z`kCzItx>&~$OCf>}?G>hO@n*B!@KO7TZG?811zj0D|(62~3BRNV%X0u(=) ze13xDOAVPF2*lk8&~X1BqXI%4oXPq5>mW7!Tm@Q99;g)0*PM2Cg6?gQC>D{%^gP1# zAF#ZM0QQ#8ewvVkMDCL+90@bCw-L}NbrXOAb1q2C9xgR*+VG=$Lq{#D@GJ&fh=-8R zBy~UBB(w4dl>`C*D?hDuI^}1tj`|Yd%|Vc-Tv!fea;k})vN@%c=& zBwhUgCqwif^t;2+aTH zB;IHwd>UgiqD67xWrv1I_SxD$q;C-pnBoPw`Np1ZmL&mVV+^W;uju2_iz`P2fQ0~n z8{z{YB4{!i*gp_sLv%kR|39B9zeh{E2vJ_}TY#IT0Z9R2fuQ3B+75(_Z@(_hl$3md zIB{Tp7B@FTzb@q}C67C^!ThC?(fE78Tq?&Ng$6A68zYU*ezsuG}HIyvKH;z6xdUmoelSnf5{T>Mx?G)-J zX+!kk)^tk{V=}%-hN94X%M@;Eq#yRy_tkg4tL2O-MHORAw-2@}g);{z+A-a&8L9Jh zo{(;&c_;CDpYK3-K#2jr+7zCIYWxCvkX6yMsi)rnIup2IwxCi*T4;4Ay)b*r=8Yo5 zb?zrPO5w{wyaDUOV-piGA)y%vqZJTvh4ff3!Q~ee)C2RCn5d^CWCGqP*q90Jz^EAr zX}$THkdqFan;p7o8jbqz=dTq{UxjYpKL55#XO*6FvSv+=8$$KDiOBJU```N-eFLxa zXlf8A7Q?3V`MzQ!QG!imy-8cG7?ZqB-oS!v%Ihe0(|8_?jgD0*X8HH>1DLfPX&>$y z$AsV8@AYhb4@_a4=^dhaGeOIpmR*TcI&T{i8j6H~0)rLM z7T`m~6ynP@Iti!(I8ougaLRlQOnIk4qOjW@+!ogpj#(Kbm1&n6Z?CUUHBqV=Q6(PU zL{JNK2&$GIiz=S~J94s+iwq?;j4fAeKh83qw)jZ{5WOa(X_!wF58N;S!6)G<3v7oj77+eb z+c3oR!21^j6fm4Y4{P0vg|_O#n~2J)s^p}k&uO4Y)o%`kS0F!q_31JQ?! zjI61x9WD3!RYBhm+Ax&+x;@0#*D}3%yg$m&B*98Ji0ANq#h)kT!*msClgU z3>dH#dG>IV-@rIOq<6YxC`FZKqmg6AMV@Nl|1P`X=swPhq_AhlxWCt*^1Y?OgpkTN zR?g4AhP?DjWjNA@;IsS7u3KbbA0WgyN)Ca501}}4;9&-r+^unb3NqX_#MjLoB)BI5R}_+3U&#-`$VbAI2afZfTAx; zZtubhgy!(b2*#~j!xIzpH4Y|bW*OniXNg0ie!b!wb9?i@nhU=zvhw5qXQYmM@-rPq zy3-ri6X4q;Jr8`}j0++Dai=^?ugbbgru4aT)?3H+EF@MMHBGO;!Q{ z+{Sia*Av~CA2Rca2i1NLOjhU}A(QpCSP{-Xtmyf7qDtJ1QGD<1X>W!etF4B67MH5RWnapZ~+A#hYbc@mmEsNA* zKF9Hoj+1yF%OX$3C6xGDj_)=w<-gUrmw}V(f4Q2sm4J#$X#O$Z`(@q_w}Rnrb}(Hf zVBDU&QnOmiz}l3N`nMSR@Qf+UrIfPO&T{ORvz}L@91=PyoUhCm_#D{x95?+PN2<@m zq%Qc)#N8s}>150{ki6HUY+&*AhD7m8@&J!6F|O#ffeV5vEBb_jwai+M4R589!G=rX}YxS&v z$nMq9tJ2Rf%F}(TV-m_!HqGIiGd9L`?$6KM+sDm%gi<#a{Q5PMpuWO$oRLw|7aDJ+ zB2zT!{dAr*WwDj6&rM6-HhTSiL6ppPN_Fz!EX5_0PyeAxfC}lquPBQLD_{U-LKL4d zTXJ0Cr~QVsm@bd7VjbRtf4QT09#l>_qwl_lPad+;TPNj!#$D&&`; zcF7l-4)Lincz)oZqvc*`H`smc`hNInN-QNdGV{O%dkD<9b~cf!){m4}6n&5Aqd&cq z%0u!Zkya>;z%HtOEA!fqUZ}atLf>U4PeI!Hb<-n1%(T|G|0e3QklhLgwt<+C;RV(; zq~u~Hk#2#;B%LExrBzLqIUBO{7-WzTd6>0>{Av)CjY_JM z+T(JY8`j!CsHm+DsZ}T9vy|YSyRhM75V)jng;qr~kj}F4uGkM=APGHS*VRq zC0T|OrX%7m_DgL2qY5y4VcK#|!mRLCy;@n69GPJBIhy6g!0_Vdcb`FZtJ&D`HinUm z!;!X?n^au^R`f#>k(#=kt`hU-0Zc;8e4C2AtU6D~i*SC`X-gw3QAiLRZRloSxZZp) zTVnJeh%CDx^}BFrgsc@U7gYl*H^|@KR@>P{)HcL{Lx=G_*~lEoo^~ zh%YlU4e_TsB{Wh+{*n-eRP$r@!PeG$gC>Pf&-nP|MsRdKh^&$b+Quja$=|~FbtlJ; zSevq*LfLE>;2f?PzJYEweE7#qRm^l*o<-SgV&(Q0w6 zpmcXADlJ{oAt5ad3J8LfGzik&AzjklN_U5J!`*o9|K4@aI(L>!of(Juc;6@X-oILL zFcB{*lvs*3WtAz)3s+)pM!7!tgU4pR-A)zx##Qj;lU1iT7H2r7rlG~`Xiu|E^PR1# zY1O8PSUfwFeYrJ^tP2lZZ|QwiDN$kG$AYg|)d$j%go7)`3*HU@sSrYk6ppr+OPszu zZ#c^@k8KhPdXYOeh%$ z8pubP1WwXb-L>=SpuI#OLR9t(W?B zk;ABp-(bi<&VZ3cJCZ9Ie#5Y2$DmC?(rfy^oYL|9m_^J5Gf81BER0FlMd!;MQwfK`9DU z4xx04Y{3PcnJ|I4sAhyy0#cVY{d0^+$F zm|T_p{cqjg4MZYcB?wS}*$c(NIKGbnExXpO!H2+-pQ$gJujVnL||#b#+$ll}BKQEZ3Z6J$Ta7_$TQW9z(XK zAjndnuw1kR>GLs!Cg`w4gQg4ApAdWkC^1ZZC*cV~ur%-^yxDuYyBQxp2A^q*@+*)# zK<*XT1%Nv=_(4IQ2vaFH)X*@l0|#V%eSMj2CkkQgg;>$B-^uH1doj{7&W|$i7E?C`!#se&z)24L_w{ef154i?G`yfl?SQ&$;jcj`Lu9k0X@sv%a}wunZM)Au#?~Rr;B+gGFPc9^xCI`!AF|Z-GTP?O^xMBxP2!#^<6o0yzbke7#_7tMg}fr^3xMZT(Dz zR4v#=w6vfg{vK|sgV5jKADuW5JQ&J>(+O{f!FYagksaO?K*tB|Q%9Ba&J?5HL)O-V z(-N#$?H||~5=7r`#tF86X_Mt|FO%}0zlZgdVeOEb2sF?+ z7|bs&!o#frv=|{ID*DmW6Dh1cWpEXyVVWSM2Ra$WHqFpHbvKI_VRhnaT9PwHQ0-%A zqVFAleBF8Gf{mP+3NRbW#~&MXlo{Ir_n$$qSJRHHtUHxSXgGCodkZle1=sUj)CqNM zeZHs#0<*LYp&b`Kp$ECjsUw`(EUkS$WTCr^9 zb#w^OSDBfEdY5k^B)*b9c88FUyv1Jlh5(g?rvm7cQK1T4m9P;3r3G>o3gR1xdS9PE zyMOnFr-#8l0)dH%`CEiIaHO3BdMW6oW>$xyykGhh%?sE12q}f~?fb}#6Th@c_urKiMC-<^ot-7unw&+$>=g!r zpY^MY^yDZ&4go6xi1z=NR6`x=-h=#P)9W!keWOLr>+gIg&=K_}2x5UE6QVuPkO9}= z;NSq5%51z292UhMf+22`79l>q&K=%q6cg5afl{&0ERFxV#hx$i#;b3!akz2G8SqMD z<$G2YuDI?VrDmN4SdHVo*zu#i>Vu=>m-27{BSn%H)I2{Ez%)(Y!pQ=#nw zrxcNXp&Dol|)vJ=?;yY+)Dzz>jAZqPngG#CC8(^(=&blEydP?MI z^}I9)<0vBJ5180&wcRdJ(f^WE1k+GB5LXSC@dd_mu`eI^(fbu#DQ>Ril+lLH;mP!L zbkIZ50WSjdWRMT#xC6(X2pvBCZ^A%{&W;Y#Xo*il0arXPr-%2)-ZcQ5h52=FJD+B5 zCHMPqA1X?A%M+8c&hY#)5q=9@o`u? zlmvey?Vd$@#Fb*d7uIcjD=TY%dL7clrwLY75PV3*YM=f^;F;pgMSMvi{^R;23j_v;5~VX

Pb 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%0D|i3R<~lWz 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 + + + + diff --git a/master/classncine_1_1_application__inherit__graph.md5 b/master/classncine_1_1_application__inherit__graph.md5 new file mode 100644 index 0000000000..67f912c261 --- /dev/null +++ b/master/classncine_1_1_application__inherit__graph.md5 @@ -0,0 +1 @@ +22305a5971682c5f0593201e0a87770a \ No newline at end of file diff --git a/master/classncine_1_1_application__inherit__graph.png b/master/classncine_1_1_application__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..932d17eb3b3bd0de9bc797eef6a7490b687eda38 GIT binary patch literal 5878 zcmYkA1z6Kv`^P6GNC>EO3J3xZjP4L5q!a-`>5$&&93>z~4^ZhwQcAjoiFB8wG>-0O z{EyH7df)3kyRL25_S@OH@AJLy-}!vQUT7#0-=Vn!fk23#DL;J)f!y*2?;Y{6z;gx< z_XF^PXQrz36ms+Tk=dLd4}nk=KYRK_+cR~0&P(s!$CP|NDv(xX7wG99VZFjFd03VC4<`kB=`9&)3)ZJQ8`YfJC7A(RK_JRlXgr84 zxv~fZ5(h0Hk#+y{=@Y$-U+M-&08>p(jfDGFruZH7Ep!M!F)^{s)gCI2O|^goXYX`x zQNBnXDU5`3xbH1IDUyd=wJEVUL*20%a`)9PpC=32T%K&ddi4rFtEHvoET-NY8);nl9 zf18JW_`t!-+X+=uRqgHQc#8@lrV8=h@1WGt(W&@%#NK8yrP2lNI z7TVmIYm|di(bLb3jooKt^glm%i;W%B)z!tfF4@!5^QO|0IH*mp-ubP&yYQ}lQc_Zi zFs!GmtGu@McQeAn$|`@sx#f&O)z#HiQ&ZE_bdl27CpIJFrkA&sDVTza0pH`nMv z`QQN?D=Sg)`a)Zfl#~?6*RyBOxG6UG7EyuEaha%dX$ck<7fsE~vNJQw%{syd1_q*| zqk(2X-nZtPXNHDeC@6IF_xDdsyh1CoQ~UK%7*nE-?;r zk6nY6;{N^nq;lBU*x)-s8g*UWQ+na2_+Fl#d!-Z8)3)~Zl5g0=#Kd4Q7zqiFJ(Rz3_;L(UB3bD5F-tC{h|PF<~`*ecCjQ$%%MlMtgP(q=?R{79L`qY2hDFZ``^J-5#`*U$IF`&h$8fQz(yy|Kp2ZErs^78Voo}PzBJjN}O zVq#M$R8Dz0R9rk6(a-+|%V9Vu*-{=w1z4 zW%%ah=B})-*Sc-Ka&tTW@ByEBkbvnnp8Sz^z0di#galnpO|tQKO^y92A_y<9eUeRl zo&@gOcNxZph8DK<-n9~V|Lvi&4YwdjoR%c4T^=#9^OBx-kwNpskN{RB90Fl|=lb97 zXi|`9*3r?S9SY?nxh*7e_c4bF4UOyYMC9_H?)WGF{L@fWbcR8hSLp50;tvP9%2$9L zPu(C5K|yg96j*TIqr<}$?cF^P2%6}-VLrSnDgx{puBMd|mzTx2@oeXtY!sBYc0|*p z5W?fk$`9&_sjhTgT&(;sjP>;o-oAbAMAzw*s)*tjkpG99=%-B#22+@n39i6kB`bAa!6}FAf=Saf2uUzd z$yu)}_v;Ov)-*#`1mbRJ5KAx>k$5O7Yq%VjFfuK5t)VUvy>aK_%LAk+n2Ri>zuqOk zG;_i9)kO2f1qoh|wBS(!quwZ5(A+$#z1`5+`5{9!_1eX8QMKK@P$4-Q;+)~~EavEn zijd06q#)GR>F0< zkNIYqbQxn|XE}nvR61WrBn)1f@##U2$%oxKeo{OiKmN|2meaHK-b8r5RR;1orj71m z@$q(~ass}UoF0Hq+Kq=CzwA}5k*e!Gd_0z9P?g)%Jts8v;YWV zWJ&X7+|9*iR8F&M{%By3j9!!HBb)tzeQdNMMPYFUCI4Ph+rL*U_NNwJx81I^scMaE9kKp}x$d>6N&R8teZ)xa4i7uS$Al^j)? zhJ>5#bvcG4$+B-~x^XfJKcFoWftY!!RMy=;w|{Xwq{K+y?7ZqxgoT}rWgOg#{QP+! zGn3F`R~nS^`C9+YcE|nulE3QsaG52ACtOf?(t|%)?u7=G8ToEZlq45w3Ed%-(RmrC zgilOFL@)mFQ`|vuXsC`_A5Go5p7WE2*axkc3((55i;7;p9AQVbtYEe(xndY=4H{N> zNoq%ggj-yl!c?E1iU?h+BJ1lvNqG2`m6paOic0!1Jq8W8HH?B3+kQfY}1jGBI% z&or>T`~lwWskAg-8X7f~cG|FxjWt>|P#iCY&Jm{@UI;7MK-q>^=cp)NY^;|zSCwp! zel9P^loXJx?>>BK<>T`%2!-g3DN7U8OxpPHT|dB;rQg|w%VX=zNMB!wZ~vZ3%RB?S z2wZZiW*aLiBu#qT9456f+W)TZokL#k==bk0ELH~n{H*BdERCCK9;t(-TIINS1Vq2v zoWH*4bn&Y~QaDB4?WrsWI1k7@&!~aTT^P!vB6wSmTs}c!Gwxfu*?JIqpG^Q>b6&04K$+DGg`I6U5MrIQRT$6_AV|SO+Hhni=oC8_a!sM zA42i|%qhoAmfdDy@z+r0`dx+2xJ^K+!hEXIq^Gh$qzCEwP!(*kuw7WPB&+v&Zdhz zQ+-1C%pxL(AUd_YxCm7P=YulsQ0z0XREy0WKY9i~F@ZxPlZ9_m2m{5GTorf6T^m<- zVF~XsEp=je9~lc0&id>6lK9rG!scdd_UEO>-z+G`7eB;~j1(;_L^wMi1>-Ps6&Hdz zF{%?c)G8cwo$>MhZXPmOWio}CCX_45rWCyCul4HeCb+l9i=Wd=d{&Y~-+DpfEfTlh z5ivhBRJF7uQ|sV?Pw0~C*n`g(y6maab6ilMW@oot*7Bz83$Do83!;&z;Ky7Dn)|Nl z8u@IjXH7TK29F}6>Q=Tu42-*=RQbiDc^)m8shBN@`du8|czHkSOR;+KV(;+^4Rcb; zrg7s5I*zT<$2T4%oPloTCYV|l3v5Bi$w~Uc0wL(gr@O{G>!;715)&1dEG%Z{8&5mY zqe6qJ`$GIL^Tp|2K7M`$n{j`lpuqPS9e+AMnj=m}aB^g$FDq+nXozsF5>)GC zc4C_QAhcu1%EM!+6jKUrqPgM^!%o-wUubJjOjSCvWCR-7BLI0t-agoz@R%z>tYYf&ycJKhXeylyU(wX@E@w`#CDq#yBnJl zX6BP$4a71w94*@C8js(-EA;hs&`8y*buA(iTC1z9cRhP%b z`M}{+D>Oa*iCJ#Pwu$-cfdK(yAQ@nV1<}eyvb!Ptb8}@Ly8~yZt-I~GAE_RulYPx< zlXUq>nNG&diG&wuY7Q^#W=xMBUi=6+!a zMqYja1<2{CSZ@8KfqA?)p*brnAv~O+txt~}=l>_`I=tK+#KL+xWv?L@I2edKWXska zLD_6-n&5Z7s%c#yZ~aFJihJGo&Q%_72lr!hvyD%a$Wb>N**-Ia_{X`c!fPfaG>$L_@>L_wR=~Iwg-Erz~h1%e8ss=I3kCM;|3ZO&Nli zxnvGe3T-G<(8jW-9hIULKg?Q?>T;b|N-FJ?#d6Ou=&C#*7~F^=Vqz$DV8X(}rlzLZ zMZ_<9dwcEl2r^uk(dcI?P+64^&^fgve%$1YF{&i^0-WuC&=Y{|Yc-LQk`k(r>e|`} z9i1k7d;7Tfcm;iSBnkPP@K32Z<)f*^>^+XB)pqDJruomVjMYD?qnw_Ltgf!6h&V9B zB;TbM4>r}awcYU4mX6$0Vm>ICKgW6V`nB)ncCCLaLzpmw()P+quqjoDsoEo##rF4X zY;3c&fM2W4I_|i+xq;0P5UBk1>lX&&x6?Qz%zA7Vj#|vk%{@Cm2bXHn_uhQ4(w1GR zarhm*?5U*{4+y8R5dlC#4&dbAzyKUzjtG3#+QH$us_N#(20)>Q!tZL{k+wF5cQ#!D zmhid3T%VkrfWKesO9K4()Js=aS6TT(Z0zuluzR)kQzN6JLCba3)yE>geONqEJ3Bi_ zBq=!S16<)jfV#g#~}ZmktOx@Q-GYiEs~Ry z0lD5`{$W<};rJ9#s6{vVg9o1gl}hlqIv_>ZEz$0)t6?O&=z4sj6fT zK*AKM82%mRrHWpMF0QVuBgE0m0NVcrr}wBuDr#z69Gpms8loCv!KKnAkFB}fyu6=3 zepJ=eT!3+QMyhjpc6Noi+yzVrC>~&zhMrztk2yJ|y$)D`7Het4NW~E+TdkPmG61~Qc9Y)T-tKO0 zfR}e=ZqA>}%Lm2840ah37O2Q-hlPa!zy?@lWMss{!^2IX>L_OHGw2AgJbF1OC`jh| zXw>7kuLpXBEqLhkx4(mpjn~es7+oijc<4CG0`xpx%1PeqkQP0hqXeV`Y>k`}2n;*R zV|$KH!aY*YZ+{6_uArh~f2z_7KMPm{rd)R~Px+luAt89dFSNAoX%1Lcf?EI=CnpZh z(AZdRS=r56KP_G7%*+g!@ABdTXKSfDo*h4HeK6zR>ihTaKjeG3{25}-zCw@Y<7Z7z zzgYtMWs@tYuTMJVz|m$CEdpQ!zXDbUFaxl9&M~)Xw}}qLotAYTT;3#XJoTC=B#aP$q50&;%8wn7$8IO zG-=p$Rqb4PO$`MzXckIDt;6Ue-7=%`@o|CzRyMXTSy@kvj2KW*Kxk`gmh->8qGlD$ z&6k4-?$xcL0tKN^CJMmgR74@Mv1I$s7f0x)%)32UMdWm!Dk}JPoz2a277k(+B~aAV z)Q9VX0O{JG_P{m5vL#)EDy2)cRci)LuZ5C=fN(-g8yXq_A~rd%h6B}rl>Q~^u-%Ix zVf=@*oWlJ4W|dP<-F>)1LP7*-N}8L~Lk71Ak^0-(_arjnQ`F?f?xGKv(qkuGgeSK>kej8QW zj(`6Sk>hyuD5R^bsn^TP3qK2p%Ehj{va=P+Su4wTjLWDIJvt|3=fn24Ms&xjr;Lq^v;g7_mMT&r6QeToPYy?Ak!u=AS>-_VzyO1M~<4f>}gOU0sNe@9#p!#)wEr=Ifkt z0t4Hvx!Bp*#3UpRKX>)^^6J;9?VU!T(P&_8f&93*xZH!LC#0vBW@npOT3XuJ6z1o5 zo>CCB=tNPEfBr}RWP2vRxEQg&)RCG>m%aN>W@=fi)vvCuKV7jbz)C18DgsuiUbDB5 z$LikR-t4Ra=d7!^BR-Dmi;|1 zkq_xku$%h&`+*V4>r;=z>|dbQqwECAgoYCj5>Si#uT3jmd44Mvw3>PSPuNq;S}^SY z@f=3}YcnhgXg68*(;O^A$Zh*F7MngD95`G1z1-qOD+05IJi`K?L-1|Sea&iWeSQ7d yG3+0~p`o4SzxCS$+HV1qqT+wu+y8jOS2A7joF68L{-4u;_X literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_asset_file-members.html b/master/classncine_1_1_asset_file-members.html new file mode 100644 index 0000000000..b1872ac232 --- /dev/null +++ b/master/classncine_1_1_asset_file-members.html @@ -0,0 +1,137 @@ + + + + + + + +nCine: Member List + + + + + + + + + + +
+
+
ncine::AssetFile Member List
+
+
+ +

This is the complete list of members for ncine::AssetFile, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AssetFile(const char *filename)ncine::AssetFileexplicit
assetPath(const char *path)ncine::AssetFilestatic
bufferPtr() constncine::IFileinlinevirtual
bufferPtr()ncine::IFileinlinevirtual
close() overridencine::AssetFilevirtual
closeDir(AAssetDir *assetDir) (defined in ncine::AssetFile)ncine::AssetFilestatic
createFileHandle(const char *filename)ncine::IFilestatic
createFromMemory(const char *bufferName, unsigned char *bufferPtr, unsigned long int bufferSize)ncine::IFilestatic
createFromMemory(const char *bufferName, const unsigned char *bufferPtr, unsigned long int bufferSize)ncine::IFilestatic
createFromMemory(unsigned char *bufferPtr, unsigned long int bufferSize)ncine::IFilestatic
createFromMemory(const unsigned char *bufferPtr, unsigned long int bufferSize)ncine::IFilestatic
createFromMemory(const char *bufferName, unsigned long int bufferSize)ncine::IFilestatic
createFromMemory(unsigned long int bufferSize)ncine::IFilestatic
createFromMemory(const char *bufferName, nctl::UniquePtr< unsigned char[]> buffer, unsigned long int bufferSize)ncine::IFilestatic
createFromMemory(nctl::UniquePtr< unsigned char[]> buffer, unsigned long int bufferSize)ncine::IFilestatic
fd() constncine::IFileinline
fileDescriptor_ncine::IFileprotected
filename() constncine::IFileinline
filename_ncine::IFileprotected
filePointer_ncine::IFileprotected
fileSize_ncine::IFileprotected
FileType enum namencine::IFile
IFile(const char *filename)ncine::IFileexplicit
initAssetManager(struct android_app *state)ncine::AssetFileinlinestatic
int16FromBE(uint16_t number)ncine::IFileinlinestatic
int16FromLE(uint16_t number)ncine::IFileinlinestatic
int32FromBE(uint32_t number)ncine::IFileinlinestatic
int32FromLE(uint32_t number)ncine::IFileinlinestatic
int64FromBE(uint64_t number)ncine::IFileinlinestatic
int64FromLE(uint64_t number)ncine::IFileinlinestatic
isOpened() const overridencine::AssetFilevirtual
length(const char *path)ncine::AssetFilestatic
MaxFilenameLengthncine::IFileprotectedstatic
nextFileName(AAssetDir *assetDir) (defined in ncine::AssetFile)ncine::AssetFilestatic
open(unsigned char mode) overridencine::AssetFilevirtual
openDir(const char *dirName) (defined in ncine::AssetFile)ncine::AssetFilestatic
Prefix (defined in ncine::AssetFile)ncine::AssetFilestatic
ptr() constncine::IFileinline
read(void *buffer, unsigned long int bytes) const overridencine::AssetFilevirtual
rewindDir(AAssetDir *assetDir) (defined in ncine::AssetFile)ncine::AssetFilestatic
seek(long int offset, int whence) const overridencine::AssetFilevirtual
setCloseOnDestruction(bool shouldCloseOnDestruction)ncine::IFileinline
shouldCloseOnDestruction_ncine::IFileprotected
size() constncine::IFileinline
tell() const overridencine::AssetFilevirtual
tryOpen(const char *path)ncine::AssetFilestatic
tryOpenDirectory(const char *path)ncine::AssetFilestatic
tryOpenFile(const char *path)ncine::AssetFilestatic
type() constncine::IFileinline
type_ncine::IFileprotected
write(const void *buffer, unsigned long int bytes) overridencine::AssetFileinlinevirtual
~AssetFile() override (defined in ncine::AssetFile)ncine::AssetFile
~IFile() (defined in ncine::IFile)ncine::IFileinlinevirtual
+ + + + diff --git a/master/classncine_1_1_asset_file.html b/master/classncine_1_1_asset_file.html new file mode 100644 index 0000000000..12e123498f --- /dev/null +++ b/master/classncine_1_1_asset_file.html @@ -0,0 +1,477 @@ + + + + + + + +nCine: ncine::AssetFile Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

The class dealing with Android asset files. + More...

+ +

#include <AssetFile.h>

+
+Inheritance diagram for ncine::AssetFile:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for ncine::AssetFile:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 AssetFile (const char *filename)
 Constructs an asset file object. More...
 
+void open (unsigned char mode) override
 Tries to open the asset file.
 
void close () override
 Closes the asset file. More...
 
+long int seek (long int offset, int whence) const override
 Seeks in an opened file.
 
+long int tell () const override
 Tells the seek position of an opened file.
 
unsigned long int read (void *buffer, unsigned long int bytes) const override
 Reads a certain amount of bytes from the file to a buffer. More...
 
unsigned long int write (const void *buffer, unsigned long int bytes) override
 Writes a certain amount of bytes from a buffer to the file. More...
 
+bool isOpened () const override
 Returns true if the file has been sucessfully opened.
 
- Public Member Functions inherited from ncine::IFile
 IFile (const char *filename)
 Constructs a base file object. More...
 
+FileType type () const
 Returns the file type (RTTI)
 
void setCloseOnDestruction (bool shouldCloseOnDestruction)
 Sets the close on destruction flag. More...
 
+const char * filename () const
 Returns file name with path.
 
+int fd () const
 Returns file descriptor.
 
+FILE * ptr () const
 Returns file stream pointer.
 
+unsigned long int size () const
 Returns file size in bytes.
 
+virtual const void * bufferPtr () const
 Returns the constant buffer pointer of a memory file or nullptr for other file types.
 
+virtual void * bufferPtr ()
 Returns the buffer pointer of a memory file or nullptr for other file types.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

+static void initAssetManager (struct android_app *state)
 Sets the global pointer to the AAssetManager.
 
+static const char * assetPath (const char *path)
 Returns the path of an Android asset without the prefix.
 
+static bool tryOpen (const char *path)
 Checks if an asset path exists as a file or as a directory and can be opened.
 
+static bool tryOpenFile (const char *path)
 Checks if an asset path exists and can be opened as a file.
 
+static bool tryOpenDirectory (const char *path)
 Checks if an asset path exists and can be opened as a directory.
 
+static off_t length (const char *path)
 Returns the total size of the asset data.
 
+static AAssetDir * openDir (const char *dirName)
 
+static void closeDir (AAssetDir *assetDir)
 
+static void rewindDir (AAssetDir *assetDir)
 
+static const char * nextFileName (AAssetDir *assetDir)
 
- Static Public Member Functions inherited from ncine::IFile
+static uint16_t int16FromLE (uint16_t number)
 Reads a little endian 16 bit unsigned integer.
 
+static uint32_t int32FromLE (uint32_t number)
 Reads a little endian 32 bit unsigned integer.
 
+static uint64_t int64FromLE (uint64_t number)
 Reads a little endian 64 bit unsigned integer.
 
+static uint16_t int16FromBE (uint16_t number)
 Reads a big endian 16 bit unsigned integer.
 
+static uint32_t int32FromBE (uint32_t number)
 Reads a big endian 32 bit unsigned integer.
 
+static uint64_t int64FromBE (uint64_t number)
 Reads a big endian 64 bit unsigned integer.
 
+static nctl::UniquePtr< IFilecreateFromMemory (const char *bufferName, unsigned char *bufferPtr, unsigned long int bufferSize)
 Returns a memory file with the specified name.
 
+static nctl::UniquePtr< IFilecreateFromMemory (const char *bufferName, const unsigned char *bufferPtr, unsigned long int bufferSize)
 Returns a read-only memory file with the specified name.
 
+static nctl::UniquePtr< IFilecreateFromMemory (unsigned char *bufferPtr, unsigned long int bufferSize)
 Returns a memory file.
 
+static nctl::UniquePtr< IFilecreateFromMemory (const unsigned char *bufferPtr, unsigned long int bufferSize)
 Returns a read-only memory file.
 
+static nctl::UniquePtr< IFilecreateFromMemory (const char *bufferName, unsigned long int bufferSize)
 Returns a memory file with the specified name, that allocates a buffer of the specified size.
 
+static nctl::UniquePtr< IFilecreateFromMemory (unsigned long int bufferSize)
 Returns a memory file that allocates a buffer of the specified size.
 
+static nctl::UniquePtr< IFilecreateFromMemory (const char *bufferName, nctl::UniquePtr< unsigned char[]> buffer, unsigned long int bufferSize)
 Returns a memory file with the specified name, that takes ownership of the specified buffer.
 
+static nctl::UniquePtr< IFilecreateFromMemory (nctl::UniquePtr< unsigned char[]> buffer, unsigned long int bufferSize)
 Returns a memory file that takes ownership of the specified buffer.
 
+static nctl::UniquePtr< IFilecreateFileHandle (const char *filename)
 Returns the proper file handle according to prepended tags.
 
+ + + +

+Static Public Attributes

+static const char * Prefix = "asset::"
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ncine::IFile
enum class  FileType { BASE = 0 +, MEMORY +, STANDARD +, ASSET + }
 File types.
 
- Protected Attributes inherited from ncine::IFile
+FileType type_
 File type.
 
+nctl::String filename_
 File name with path.
 
+int fileDescriptor_
 File descriptor for open() and close()
 
+FILE * filePointer_
 File pointer for fopen() and fclose()
 
bool shouldCloseOnDestruction_
 A flag indicating whether the destructor should also close the file. More...
 
+unsigned long int fileSize_
 File size in bytes.
 
- Static Protected Attributes inherited from ncine::IFile
+static const unsigned int MaxFilenameLength = 256
 Maximum number of characters for a file name (path included)
 
+

Detailed Description

+

The class dealing with Android asset files.

+

Constructor & Destructor Documentation

+ +

◆ AssetFile()

+ +
+
+ + + + + +
+ + + + + + + + +
ncine::AssetFile::AssetFile (const char * filename)
+
+explicit
+
+ +

Constructs an asset file object.

+
Parameters
+ + +
filenameFile name including path relative to the assets directory
+
+
+ +
+
+

Member Function Documentation

+ +

◆ close()

+ +
+
+ + + + + +
+ + + + + + + +
void ncine::AssetFile::close ()
+
+overridevirtual
+
+ +

Closes the asset file.

+

This method will close a file both normally opened or fopened

+ +

Implements ncine::IFile.

+ +
+
+ +

◆ read()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
unsigned long int ncine::AssetFile::read (void * buffer,
unsigned long int bytes 
) const
+
+overridevirtual
+
+ +

Reads a certain amount of bytes from the file to a buffer.

+
Returns
Number of bytes read
+ +

Implements ncine::IFile.

+ +
+
+ +

◆ write()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
unsigned long int ncine::AssetFile::write (const void * buffer,
unsigned long int bytes 
)
+
+inlineoverridevirtual
+
+ +

Writes a certain amount of bytes from a buffer to the file.

+
Returns
Number of bytes written
+ +

Implements ncine::IFile.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • include/ncine/AssetFile.h
  • +
  • src/android/AssetFile.cpp
  • +
+
+ + + + diff --git a/master/classncine_1_1_asset_file__coll__graph.map b/master/classncine_1_1_asset_file__coll__graph.map new file mode 100644 index 0000000000..ccaf5e096f --- /dev/null +++ b/master/classncine_1_1_asset_file__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/master/classncine_1_1_asset_file__coll__graph.md5 b/master/classncine_1_1_asset_file__coll__graph.md5 new file mode 100644 index 0000000000..277a6ff441 --- /dev/null +++ b/master/classncine_1_1_asset_file__coll__graph.md5 @@ -0,0 +1 @@ +37d8bf00fe67c7eb04b6433f80002824 \ No newline at end of file diff --git a/master/classncine_1_1_asset_file__coll__graph.png b/master/classncine_1_1_asset_file__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..49f51a18c7b4658a994dc3059224c635da7247c8 GIT binary patch literal 4796 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 JK&#n?{|{%87rg)g literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_asset_file__inherit__graph.map b/master/classncine_1_1_asset_file__inherit__graph.map new file mode 100644 index 0000000000..773faedb48 --- /dev/null +++ b/master/classncine_1_1_asset_file__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classncine_1_1_asset_file__inherit__graph.md5 b/master/classncine_1_1_asset_file__inherit__graph.md5 new file mode 100644 index 0000000000..1d79b49552 --- /dev/null +++ b/master/classncine_1_1_asset_file__inherit__graph.md5 @@ -0,0 +1 @@ +64d323f4d46894309fdb0672e3a07687 \ No newline at end of file diff --git a/master/classncine_1_1_asset_file__inherit__graph.png b/master/classncine_1_1_asset_file__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..7e84d0aa884feb4f537679080ddef89ee3a1b8ab GIT binary patch literal 2652 zcmchZc{JPU9>&u#mS`EOqb;TmDO#bZG}bcKR4cR{G=rg{f)XW&rHI=igW6hZkaD$1 zTT2j2Y*Ad)Zm6x+*oDLzLM->!x#!$7f84+CdC%{C&UxQ+zUMjb@B4n9H}5i+>PKeh>>hH9i0psO&ibpy6~%-s_IW0dKMNIsi~>o*TWkU_8~-Z zRIwclxviq0pwM*9;(Uxy`&+a4&z+sKDTqsQ`ue1h?M1)kemU!>?(Rx*9&;4s;Xw=)4TGci9|0YE7Hb?;k>-dJ&!9z zQGx<0yj_-bdDZF&=e^mWIef~X{Nmzg@rxH%_Cp5pEI>OuJN=`hzqg|06csUF!f(J} zAa(ymOG`xw#aH0?R%76R5)u+1B}Z*K?QuUs>*;OImCGF)?$Ds=aII_U@%~G_3EYO0 z%=hoFbYnD&i;E}l<5*o=?Om^X8r>--Zo@^t=H=yWO!)Wt9qf4O>gs;(=*Xqff=$C! zo#`ab>c}q+4tIirw1$R;@(K!O19VS?E9Jc_Rv0}aD;n8nzqaWR_C?W^<#+OD6jE8F+a%b8% zUq8t?eFIFq`_flP;qT&zuxb?C8ej0w>RF_e92pP7l%a$<29eBPm+JE24?+B zMt1&2I#>cDCSI1hH#Kf~LM$}it4bfOKNY)YT zA6ddo(_KN?gy<-~$hbJofPh2rr{kmc6;>dBjl65JZ$F_z2)rU2$7UN|RWp>Bk9*-V zL2OxBn=7P56i_H99xi2nTvaIo<80g1*)8|%L(h__Bh;yprGmV9_uASQo6%VhrS=%5 z<6i1nNWLo0Zmo8}vQ4t`^+dm)5_@|u(T{dv;o*Ew_|>y=OE)}{KYrT~CC(X|OhIOG zo;Eh5{DuaoknP2Gnkd4^NJQ~f?Ic56oQ6K*F%k2wlGAv|ozrnF$)#MYos{C|A39ai ziE6`Yi^^!jJ>)}gA_w1>_{`6?LQfU_wJv-*X%;tmm~Df6&LC=`8h`Ag{+#e2#DYmLsM+QMNWa5}uwXi_Oslfx2_=l6iJf znNcQJEVQFu{=Xy>|GeSp-s2s^1dOAqWY;u zLIn@y- zM|;o9rzh)zwl~{lscv18m!7VbMXvd`#E1ZG|B^&n8+)CSVid^vMAp>b_{6t1QKRYM z>W>7-Pq-a_i^ug9_yqZ8|Oz!g8#HAcUHkTW0m95_~Ms?57 z4O9k*##?WcjbyWZ3=WndqOu0vLxm44Zryq~*Op*O(oWgg33#pQ&{po&6~-(ilZg`( zj>=Hz3X_R$ddBZPRiB~9rtwAIe7Za1tIa*!?jt%1YUAdGekrhI08SQH$TfzUBvY)ayLm$!nynW`e zD&}{pbr7DOSJmn_zQfnO0a#V_WSSlFVt1D{{-LlCqNkUoM&~~J2I)iYrZ|T)?C|8z zfq~|d-|9-oyt^}R#1|D6x!f%0%``pN-=BXK6%|#AZWWG;kH3lS>FEgr!oz#AHtp?O z`GJ7}?qb%H`l^sZR^^Bj1P*`Q-EG;~*%=Vh)$gj}V_xlBWM3HvM2WG9Nyu!h5)HQ? zjKyLrs;Y3@4VUYhnm_=cx8^$lhLt|*cA=9i%ZiHMm4@x(l$Dizb$PNsJ}yHEfx&VrDlfniit2>p zFu-4Z)&Bjg+b%A0v9Yn)`Q_yUtHDVa0(}76D=se1*w=x<&Vk5-7C=D^HRGZtW_jTJ z4sppm{n~Hn-L)|%9$s4paJ#kqE=hFM$gQ-5uQ3cma4 zv@`ce7XiTe&TAEyrQSEN8#n$O8Zz_q)3CL*g)mohiI?Pozr47JAz3N8_mboQyHiug zB{ql0`U2S&lYKfd- zw>ZJNdOAXHd#O*h9NYineYs=nl4Rk(RXLC?w>a>LF|p_do{Jz0Gb_^) + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::AudioBuffer Member List
+
+
+ +

This is the complete list of members for ncine::AudioBuffer, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AudioBuffer()ncine::AudioBuffer
AudioBuffer(const char *bufferName, const unsigned char *bufferPtr, unsigned long int bufferSize)ncine::AudioBuffer
AudioBuffer(const char *filename)ncine::AudioBufferexplicit
AudioBuffer(AudioBuffer &&other)ncine::AudioBuffer
bufferId() constncine::AudioBufferinline
bufferSize() constncine::AudioBufferinline
bytesPerSample() constncine::AudioBufferinline
duration() constncine::AudioBufferinline
Format enum name (defined in ncine::AudioBuffer)ncine::AudioBuffer
frequency() constncine::AudioBufferinline
fromId(unsigned int id)ncine::Objectstatic
id() constncine::Objectinline
init(const char *name, Format format, int frequency)ncine::AudioBuffer
loadFromFile(const char *filename) (defined in ncine::AudioBuffer)ncine::AudioBuffer
loadFromMemory(const char *bufferName, const unsigned char *bufferPtr, unsigned long int bufferSize) (defined in ncine::AudioBuffer)ncine::AudioBuffer
loadFromSamples(const unsigned char *bufferPtr, unsigned long int bufferSize)ncine::AudioBuffer
MaxNameLengthncine::Objectstatic
name() constncine::Object
numChannels() constncine::AudioBufferinline
numSamples() constncine::AudioBufferinline
Object(ObjectType type)ncine::Objectexplicit
Object(ObjectType type, const char *name)ncine::Object
Object(Object &&other)ncine::Object
Object(const Object &other)ncine::Objectprotected
ObjectType enum namencine::Object
operator=(AudioBuffer &&other)ncine::AudioBuffer
ncine::Object::operator=(Object &&other)ncine::Object
setName(const char *name)ncine::Object
sType() (defined in ncine::AudioBuffer)ncine::AudioBufferinlinestatic
type() constncine::Objectinline
type_ncine::Objectprotected
~AudioBuffer() override (defined in ncine::AudioBuffer)ncine::AudioBuffer
~Object()ncine::Objectvirtual
+ + + + diff --git a/master/classncine_1_1_audio_buffer.html b/master/classncine_1_1_audio_buffer.html new file mode 100644 index 0000000000..c4002940f6 --- /dev/null +++ b/master/classncine_1_1_audio_buffer.html @@ -0,0 +1,285 @@ + + + + + + + +nCine: ncine::AudioBuffer Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::AudioBuffer Class Reference
+
+
+ +

A class representing an OpenAL buffer. + More...

+ +

#include <AudioBuffer.h>

+
+Inheritance diagram for ncine::AudioBuffer:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for ncine::AudioBuffer:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + +

+Public Types

enum class  Format { MONO8 +, STEREO8 +, MONO16 +, STEREO16 + }
 
- Public Types inherited from ncine::Object
enum class  ObjectType {
+  BASE = 0 +, TEXTURE +, SHADER +, SCENENODE +,
+  SPRITE +, MESH_SPRITE +, ANIMATED_SPRITE +, PARTICLE +,
+  PARTICLE_SYSTEM +, FONT +, TEXTNODE +, AUDIOBUFFER +,
+  AUDIOBUFFER_PLAYER +, AUDIOSTREAM_PLAYER +
+ }
 Object types.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

AudioBuffer ()
 Creates an OpenAL buffer name.
 
AudioBuffer (const char *bufferName, const unsigned char *bufferPtr, unsigned long int bufferSize)
 A constructor creating a buffer from memory.
 
AudioBuffer (const char *filename)
 A constructor creating a buffer from a file.
 
AudioBuffer (AudioBuffer &&other)
 Move constructor.
 
+AudioBufferoperator= (AudioBuffer &&other)
 Move assignment operator.
 
+void init (const char *name, Format format, int frequency)
 Initializes an empty buffer with the specified format and frequency.
 
+bool loadFromMemory (const char *bufferName, const unsigned char *bufferPtr, unsigned long int bufferSize)
 
+bool loadFromFile (const char *filename)
 
+bool loadFromSamples (const unsigned char *bufferPtr, unsigned long int bufferSize)
 Loads samples in raw PCM format from a memory buffer.
 
+unsigned int bufferId () const
 Returns the OpenAL buffer id.
 
+int bytesPerSample () const
 Returns the number of bytes per sample.
 
+int numChannels () const
 Returns the number of audio channels.
 
+int frequency () const
 Returns the samples frequency.
 
+unsigned long int numSamples () const
 Returns number of samples.
 
+float duration () const
 Returns the duration in seconds.
 
+unsigned long bufferSize () const
 Returns the size of the buffer in bytes.
 
- Public Member Functions inherited from ncine::Object
Object (ObjectType type)
 Constructs an object with a specified type and adds it to the index.
 
Object (ObjectType type, const char *name)
 Constructs an object with a specified type and name and adds it to the index.
 
+virtual ~Object ()
 Removes an object from the index and then destroys it.
 
Object (Object &&other)
 Move constructor.
 
+Objectoperator= (Object &&other)
 Move assignment operator.
 
+unsigned int id () const
 Returns the object identification number.
 
+ObjectType type () const
 Returns the object type (RTTI)
 
+const char * name () const
 Returns the object name.
 
+void setName (const char *name)
 Sets the object name.
 
+ + + + + + + + + + + +

+Static Public Member Functions

+static ObjectType sType ()
 
- Static Public Member Functions inherited from ncine::Object
+static ObjectType sType ()
 Static method to return class type.
 
+template<class T >
static T * fromId (unsigned int id)
 Returns a casted pointer to the object with the specified id, if any exists.
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Attributes inherited from ncine::Object
+static const unsigned int MaxNameLength = 128
 Maximum length for an object name.
 
- Protected Member Functions inherited from ncine::Object
Object (const Object &other)
 Protected copy constructor used to clone objects.
 
- Protected Attributes inherited from ncine::Object
+ObjectType type_
 Object type.
 
+

Detailed Description

+

A class representing an OpenAL buffer.

+

It inherits from Object because a buffer can be shared by more than one AudioBufferPlayer object.

+

The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classncine_1_1_audio_buffer__coll__graph.map b/master/classncine_1_1_audio_buffer__coll__graph.map new file mode 100644 index 0000000000..8182caabd8 --- /dev/null +++ b/master/classncine_1_1_audio_buffer__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classncine_1_1_audio_buffer__coll__graph.md5 b/master/classncine_1_1_audio_buffer__coll__graph.md5 new file mode 100644 index 0000000000..547f0365d8 --- /dev/null +++ b/master/classncine_1_1_audio_buffer__coll__graph.md5 @@ -0,0 +1 @@ +518e059b68b6ae39aede479829d008af \ No newline at end of file diff --git a/master/classncine_1_1_audio_buffer__coll__graph.png b/master/classncine_1_1_audio_buffer__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..9ee27fd5038aba46f6b217521c55832341ea402d GIT binary patch literal 3232 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 + + + diff --git a/master/classncine_1_1_audio_buffer__inherit__graph.md5 b/master/classncine_1_1_audio_buffer__inherit__graph.md5 new file mode 100644 index 0000000000..547f0365d8 --- /dev/null +++ b/master/classncine_1_1_audio_buffer__inherit__graph.md5 @@ -0,0 +1 @@ +518e059b68b6ae39aede479829d008af \ No newline at end of file diff --git a/master/classncine_1_1_audio_buffer__inherit__graph.png b/master/classncine_1_1_audio_buffer__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..9ee27fd5038aba46f6b217521c55832341ea402d GIT binary patch literal 3232 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 + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::AudioBufferPlayer Member List
+
+
+ +

This is the complete list of members for ncine::AudioBufferPlayer, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
airAbsorptionFactor_ncine::IAudioPlayerprotected
applySourceProperties()ncine::IAudioPlayerprotected
audioBuffer() constncine::AudioBufferPlayerinline
AudioBufferPlayer()ncine::AudioBufferPlayer
AudioBufferPlayer(AudioBuffer *audioBuffer)ncine::AudioBufferPlayerexplicit
AudioBufferPlayer(AudioBufferPlayer &&)=defaultncine::AudioBufferPlayer
auxFilterId_ncine::IAudioPlayerprotected
bufferId() const overridencine::AudioBufferPlayervirtual
bufferSize() const overridencine::AudioBufferPlayervirtual
bytesPerSample() const overridencine::AudioBufferPlayervirtual
coneInnerAngle() constncine::IAudioPlayerinline
coneInnerAngle_ncine::IAudioPlayerprotected
coneOuterAngle() constncine::IAudioPlayerinline
coneOuterAngle_ncine::IAudioPlayerprotected
coneOuterGain() constncine::IAudioPlayerinline
coneOuterGain_ncine::IAudioPlayerprotected
coneOuterGainHF_ncine::IAudioPlayerprotected
DefaultAirAbsorptionFactor (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
DefaultConeAngle (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
DefaultConeOuterGain (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
DefaultConeOuterGainHF (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
DefaultGain (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
DefaultPitch (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
DefaultRoomRolloffFactor (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
directFilterId_ncine::IAudioPlayerprotected
direction() constncine::IAudioPlayerinline
direction_ncine::IAudioPlayerprotected
duration() const overridencine::AudioBufferPlayervirtual
effectSlotId_ncine::IAudioPlayerprotected
frequency() const overridencine::AudioBufferPlayervirtual
fromId(unsigned int id)ncine::Objectstatic
gain() constncine::IAudioPlayerinline
gain_ncine::IAudioPlayerprotected
hasSource() constncine::IAudioPlayer
IAudioPlayer(ObjectType type, const char *name) (defined in ncine::IAudioPlayer)ncine::IAudioPlayer
IAudioPlayer(ObjectType type) (defined in ncine::IAudioPlayer)ncine::IAudioPlayer
IAudioPlayer(IAudioPlayer &&)=defaultncine::IAudioPlayer
id() constncine::Objectinline
isLooping() constncine::IAudioPlayerinline
isLooping_ncine::IAudioPlayerprotected
isPaused() constncine::IAudioPlayerinline
isPlaying() constncine::IAudioPlayerinline
isSourceLocked() constncine::IAudioPlayerinline
isStopped() constncine::IAudioPlayerinline
MaxAirAbsorptionFactor (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
MaxConeAngle (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
MaxConeOuterGain (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
MaxConeOuterGainHF (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
MaxGain (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
MaxNameLengthncine::Objectstatic
MaxPitch (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
MaxRoomRolloffFactor (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
MinAirAbsorptionFactor (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
MinConeAngle (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
MinConeOuterGain (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
MinConeOuterGainHF (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
MinGain (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
MinPitch (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
MinRoomRolloffFactor (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
name() constncine::Object
numChannels() const overridencine::AudioBufferPlayervirtual
numSamples() const overridencine::AudioBufferPlayervirtual
Object(ObjectType type)ncine::Objectexplicit
Object(ObjectType type, const char *name)ncine::Object
Object(Object &&other)ncine::Object
Object(const Object &other)ncine::Objectprotected
ObjectType enum namencine::Object
operator=(AudioBufferPlayer &&)=defaultncine::AudioBufferPlayer
ncine::IAudioPlayer::operator=(IAudioPlayer &&)=defaultncine::IAudioPlayer
ncine::Object::operator=(Object &&other)ncine::Object
pause() overridencine::AudioBufferPlayervirtual
pitch() constncine::IAudioPlayerinline
pitch_ncine::IAudioPlayerprotected
play() overridencine::AudioBufferPlayervirtual
PlayerState enum namencine::IAudioPlayer
position() constncine::IAudioPlayerinline
position_ncine::IAudioPlayerprotected
roomRooloffFactor_ncine::IAudioPlayerprotected
sampleOffset() constncine::IAudioPlayer
setAudioBuffer(AudioBuffer *audioBuffer)ncine::AudioBufferPlayer
setConeInnerAngle(float coneAngle)ncine::IAudioPlayer
setConeOuterAngle(float coneAngle)ncine::IAudioPlayer
setConeOuterGain(float gain)ncine::IAudioPlayer
setDirection(const Vector3f &direction)ncine::IAudioPlayer
setDirection(float x, float y, float z)ncine::IAudioPlayer
setGain(float gain)ncine::IAudioPlayer
setLooping(bool isLooping)ncine::IAudioPlayerinline
setName(const char *name)ncine::Object
setPitch(float pitch)ncine::IAudioPlayer
setPosition(const Vector3f &position)ncine::IAudioPlayer
setPosition(float x, float y, float z)ncine::IAudioPlayer
setSampleOffset(int offset)ncine::IAudioPlayer
setSourceLocked(bool sourceLocked)ncine::IAudioPlayer
setVelocity(const Vector3f &velocity)ncine::IAudioPlayer
setVelocity(float x, float y, float z)ncine::IAudioPlayer
sourceId() constncine::IAudioPlayerinline
sourceId_ncine::IAudioPlayerprotected
sourceLocked_ncine::IAudioPlayerprotected
state() constncine::IAudioPlayerinline
state_ncine::IAudioPlayerprotected
stop() overridencine::AudioBufferPlayervirtual
sType() (defined in ncine::AudioBufferPlayer)ncine::AudioBufferPlayerinlinestatic
type() constncine::Objectinline
type_ncine::Objectprotected
updateState() overridencine::AudioBufferPlayerprotectedvirtual
velocity() constncine::IAudioPlayerinline
velocity_ncine::IAudioPlayerprotected
~AudioBufferPlayer() override (defined in ncine::AudioBufferPlayer)ncine::AudioBufferPlayer
~IAudioPlayer() override (defined in ncine::IAudioPlayer)ncine::IAudioPlayer
~Object()ncine::Objectvirtual
+ + + + diff --git a/master/classncine_1_1_audio_buffer_player.html b/master/classncine_1_1_audio_buffer_player.html new file mode 100644 index 0000000000..899e287e9b --- /dev/null +++ b/master/classncine_1_1_audio_buffer_player.html @@ -0,0 +1,570 @@ + + + + + + + +nCine: ncine::AudioBufferPlayer Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

Audio buffer player class. + More...

+ +

#include <AudioBufferPlayer.h>

+
+Inheritance diagram for ncine::AudioBufferPlayer:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for ncine::AudioBufferPlayer:
+
+
Collaboration graph
+ + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

AudioBufferPlayer ()
 Default constructor.
 
AudioBufferPlayer (AudioBuffer *audioBuffer)
 A constructor creating a player from a shared buffer.
 
AudioBufferPlayer (AudioBufferPlayer &&)=default
 Default move constructor.
 
+AudioBufferPlayeroperator= (AudioBufferPlayer &&)=default
 Default move assignment operator.
 
+unsigned int bufferId () const override
 Returns the OpenAL id of the currently playing buffer.
 
+int bytesPerSample () const override
 Returns the number of bytes per sample.
 
+int numChannels () const override
 Returns the number of audio channels of the currently playing buffer.
 
+int frequency () const override
 Returns the samples frequency of the currently playing buffer.
 
+unsigned long int numSamples () const override
 Returns the number of samples.
 
+float duration () const override
 Returns the duration in seconds.
 
+unsigned long int bufferSize () const override
 Returns the size of the currently playing buffer in bytes.
 
+const AudioBufferaudioBuffer () const
 Gets the audio buffer used for playing.
 
+void setAudioBuffer (AudioBuffer *audioBuffer)
 Sets the audio buffer used for playing.
 
+void play () override
 Starts playing.
 
+void pause () override
 Pauses playing.
 
+void stop () override
 Stops playing and rewinds.
 
- Public Member Functions inherited from ncine::IAudioPlayer
IAudioPlayer (ObjectType type, const char *name)
 
IAudioPlayer (ObjectType type)
 
IAudioPlayer (IAudioPlayer &&)=default
 Default move constructor.
 
+IAudioPlayeroperator= (IAudioPlayer &&)=default
 Default move assignment operator.
 
+bool hasSource () const
 Returns true if a valid OpenAL source is currently assigned to the player.
 
+unsigned int sourceId () const
 Returns the OpenAL id of the player source.
 
+int sampleOffset () const
 Returns the playback position expressed in samples.
 
+void setSampleOffset (int offset)
 Sets the playback position expressed in samples.
 
+bool isSourceLocked () const
 Returns true if the OpenAL source is locked.
 
void setSourceLocked (bool sourceLocked)
 Locks an OpenAL source so it is not released to the pool when the player stops. More...
 
+PlayerState state () const
 Returns the state of the player.
 
+bool isPlaying () const
 Returns true if the player is playing.
 
+bool isPaused () const
 Returns true if the player is paused.
 
+bool isStopped () const
 Returns true if the player is stopped.
 
+bool isLooping () const
 Returns the looping property of the player.
 
+void setLooping (bool isLooping)
 Sets the looping property of the player.
 
+float gain () const
 Returns the player gain value.
 
+void setGain (float gain)
 Sets the player gain value.
 
+float pitch () const
 Returns the player pitch value.
 
+void setPitch (float pitch)
 Sets the player pitch value.
 
+Vector3f position () const
 Returns the player position vector.
 
+void setPosition (const Vector3f &position)
 Sets the player position vector.
 
+void setPosition (float x, float y, float z)
 Sets the player position vector through components.
 
+Vector3f velocity () const
 Returns the player velocity vector.
 
+void setVelocity (const Vector3f &velocity)
 Sets the player velocity vector.
 
+void setVelocity (float x, float y, float z)
 Sets the player velocity vector through components.
 
+Vector3f direction () const
 Returns the player direction vector.
 
void setDirection (const Vector3f &direction)
 Sets the player direction vector. More...
 
void setDirection (float x, float y, float z)
 Sets the player direction vector through components. More...
 
+float coneInnerAngle () const
 Returns the player inside angle of the sound cone in degrees.
 
+void setConeInnerAngle (float coneAngle)
 Sets the player inside angle of the sound cone in degrees.
 
+float coneOuterAngle () const
 Returns the player outside angle of the sound cone in degrees.
 
+void setConeOuterAngle (float coneAngle)
 Sets the player outside angle of the sound cone in degrees.
 
+float coneOuterGain () const
 Returns the player multiplication factor to determine the gain outside the cone.
 
+void setConeOuterGain (float gain)
 Sets the player multiplication factor to determine the gain outside the cone.
 
- Public Member Functions inherited from ncine::Object
Object (ObjectType type)
 Constructs an object with a specified type and adds it to the index.
 
Object (ObjectType type, const char *name)
 Constructs an object with a specified type and name and adds it to the index.
 
+virtual ~Object ()
 Removes an object from the index and then destroys it.
 
Object (Object &&other)
 Move constructor.
 
+Objectoperator= (Object &&other)
 Move assignment operator.
 
+unsigned int id () const
 Returns the object identification number.
 
+ObjectType type () const
 Returns the object type (RTTI)
 
+const char * name () const
 Returns the object name.
 
+void setName (const char *name)
 Sets the object name.
 
+ + + + + + + + + + + +

+Static Public Member Functions

+static ObjectType sType ()
 
- Static Public Member Functions inherited from ncine::Object
+static ObjectType sType ()
 Static method to return class type.
 
+template<class T >
static T * fromId (unsigned int id)
 Returns a casted pointer to the object with the specified id, if any exists.
 
+ + + + + + + + + + + + +

+Protected Member Functions

+void updateState () override
 Updates the player state.
 
- Protected Member Functions inherited from ncine::IAudioPlayer
+void applySourceProperties ()
 Applies source properties after registering a player.
 
- Protected Member Functions inherited from ncine::Object
Object (const Object &other)
 Protected copy constructor used to clone objects.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ncine::IAudioPlayer
enum class  PlayerState { INITIAL = 0 +, PLAYING +, PAUSED +, STOPPED + }
 Player state.
 
- Public Types inherited from ncine::Object
enum class  ObjectType {
+  BASE = 0 +, TEXTURE +, SHADER +, SCENENODE +,
+  SPRITE +, MESH_SPRITE +, ANIMATED_SPRITE +, PARTICLE +,
+  PARTICLE_SYSTEM +, FONT +, TEXTNODE +, AUDIOBUFFER +,
+  AUDIOBUFFER_PLAYER +, AUDIOSTREAM_PLAYER +
+ }
 Object types.
 
- Static Public Attributes inherited from ncine::IAudioPlayer
+static const float MinGain = 0.0f
 
+static const float DefaultGain = 1.0f
 
+static const float MaxGain = 1.0f
 
+static const float MinPitch = 0.5f
 
+static const float DefaultPitch = 1.0f
 
+static const float MaxPitch = 2.0f
 
+static const float MinConeAngle = 0.0f
 
+static const float DefaultConeAngle = 360.0f
 
+static const float MaxConeAngle = 360.0f
 
+static const float MinConeOuterGain = 0.0f
 
+static const float DefaultConeOuterGain = 0.0f
 
+static const float MaxConeOuterGain = 1.0f
 
+static const float MinAirAbsorptionFactor = 0.0f
 
+static const float DefaultAirAbsorptionFactor = 0.0f
 
+static const float MaxAirAbsorptionFactor = 10.0f
 
+static const float MinRoomRolloffFactor = 0.0f
 
+static const float DefaultRoomRolloffFactor = 0.0f
 
+static const float MaxRoomRolloffFactor = 10.0f
 
+static const float MinConeOuterGainHF = 0.0f
 
+static const float DefaultConeOuterGainHF = 0.0f
 
+static const float MaxConeOuterGainHF = 1.0f
 
- Static Public Attributes inherited from ncine::Object
+static const unsigned int MaxNameLength = 128
 Maximum length for an object name.
 
- Protected Attributes inherited from ncine::IAudioPlayer
+unsigned int sourceId_
 The OpenAL source id.
 
+bool sourceLocked_
 The flag indicating if an OpenAL source is locked and never released to the pool.
 
+PlayerState state_
 Current player state.
 
+bool isLooping_
 Looping status flag.
 
+float gain_
 Player gain value.
 
+float pitch_
 Player pitch value.
 
+Vector3f position_
 Player position in space.
 
+Vector3f velocity_
 Player velocity in space.
 
Vector3f direction_
 Player direction in space. More...
 
float coneInnerAngle_
 Inside angle of the sound cone in degrees. More...
 
float coneOuterAngle_
 Outside angle of the sound cone in degrees. More...
 
+float coneOuterGain_
 Multiplication factor to determine the gain outside the cone.
 
+float airAbsorptionFactor_
 Player air absorption factor value.
 
+float roomRooloffFactor_
 Player room rolloff factor value.
 
+float coneOuterGainHF_
 Player cone outer gain HF value.
 
+unsigned int effectSlotId_
 The OpenAL effect slot id to use when playing.
 
+unsigned int auxFilterId_
 The OpenAL auxiliary filter id to use when playing.
 
+unsigned int directFilterId_
 The OpenAL direct filter id to use when playing.
 
- Protected Attributes inherited from ncine::Object
+ObjectType type_
 Object type.
 
+

Detailed Description

+

Audio buffer player class.

+

The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classncine_1_1_audio_buffer_player__coll__graph.map b/master/classncine_1_1_audio_buffer_player__coll__graph.map new file mode 100644 index 0000000000..a2cffa9c0b --- /dev/null +++ b/master/classncine_1_1_audio_buffer_player__coll__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/master/classncine_1_1_audio_buffer_player__coll__graph.md5 b/master/classncine_1_1_audio_buffer_player__coll__graph.md5 new file mode 100644 index 0000000000..16caacd646 --- /dev/null +++ b/master/classncine_1_1_audio_buffer_player__coll__graph.md5 @@ -0,0 +1 @@ +b86e38c3903482b48618f54cac413ac2 \ No newline at end of file diff --git a/master/classncine_1_1_audio_buffer_player__coll__graph.png b/master/classncine_1_1_audio_buffer_player__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..0f9ad26a37a7ded2b6b6993ed09fece954c8d0f8 GIT binary patch literal 12877 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

g}&&K??DJ72?E_goh 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 literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_audio_buffer_player__inherit__graph.map b/master/classncine_1_1_audio_buffer_player__inherit__graph.map new file mode 100644 index 0000000000..7b9079074d --- /dev/null +++ b/master/classncine_1_1_audio_buffer_player__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/master/classncine_1_1_audio_buffer_player__inherit__graph.md5 b/master/classncine_1_1_audio_buffer_player__inherit__graph.md5 new file mode 100644 index 0000000000..09bcfd383c --- /dev/null +++ b/master/classncine_1_1_audio_buffer_player__inherit__graph.md5 @@ -0,0 +1 @@ +7ba56019c32a3d292cd9ba526142626b \ No newline at end of file diff --git a/master/classncine_1_1_audio_buffer_player__inherit__graph.png b/master/classncine_1_1_audio_buffer_player__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..9bf8c7b12009308ace241029fe97ab74d73ab140 GIT binary patch literal 6384 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 Fe*pfdF!ule literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_audio_effect-members.html b/master/classncine_1_1_audio_effect-members.html new file mode 100644 index 0000000000..c484b6fb49 --- /dev/null +++ b/master/classncine_1_1_audio_effect-members.html @@ -0,0 +1,93 @@ + + + + + + + +nCine: Member List + + + + + + + + + +

+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::AudioEffect Member List
+
+
+ +

This is the complete list of members for ncine::AudioEffect, including all inherited members.

+ + + + + + + + + + +
applyProperties(const AudioEffectProperties &properties)ncine::AudioEffect
AudioEffect()ncine::AudioEffect
AudioEffect(Type type)ncine::AudioEffectexplicit
AudioEffect(AudioEffect &&other)ncine::AudioEffect
effectId() constncine::AudioEffectinline
operator=(AudioEffect &&other)ncine::AudioEffect
Type enum name (defined in ncine::AudioEffect)ncine::AudioEffect
type() constncine::AudioEffectinline
~AudioEffect() (defined in ncine::AudioEffect)ncine::AudioEffect
+ + + + diff --git a/master/classncine_1_1_audio_effect.html b/master/classncine_1_1_audio_effect.html new file mode 100644 index 0000000000..936d52e4fc --- /dev/null +++ b/master/classncine_1_1_audio_effect.html @@ -0,0 +1,152 @@ + + + + + + + +nCine: ncine::AudioEffect Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::AudioEffect Class Reference
+
+
+ +

A class representing an OpenAL effect. + More...

+ +

#include <AudioEffect.h>

+ + + + +

+Public Types

enum class  Type {
+  NULL_EFFECT +, REVERB +, EAXREVERB +, CHORUS +,
+  DISTORTION +, ECHO +, FLANGER +, FREQUENCY_SHIFTER +,
+  VOCAL_MORPHER +, PITCH_SHIFTER +, RING_MODULATOR +, AUTOWAH +,
+  COMPRESSOR +, EQUALIZER +
+ }
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

AudioEffect ()
 Creates an OpenAL effect name.
 
AudioEffect (Type type)
 Creates an OpenAL effect name with the specified type.
 
AudioEffect (AudioEffect &&other)
 Move constructor.
 
+AudioEffectoperator= (AudioEffect &&other)
 Move assignment operator.
 
+Type type () const
 Returns the effect type.
 
+unsigned int effectId () const
 Returns the OpenAL effect id.
 
+void applyProperties (const AudioEffectProperties &properties)
 Sets an effect type with all of its properties.
 
+

Detailed Description

+

A class representing an OpenAL effect.

+

The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classncine_1_1_audio_effect_properties-members.html b/master/classncine_1_1_audio_effect_properties-members.html new file mode 100644 index 0000000000..e28ea905ca --- /dev/null +++ b/master/classncine_1_1_audio_effect_properties-members.html @@ -0,0 +1,285 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::AudioEffectProperties Member List
+
+
+ +

This is the complete list of members for ncine::AudioEffectProperties, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ALLEY enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
ARENA enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
AudioEffectProperties()ncine::AudioEffectProperties
AudioEffectProperties(AudioEffect::Type type)ncine::AudioEffectPropertiesexplicit
AudioEffectProperties(AudioEffectProperties &&other)=defaultncine::AudioEffectProperties
AudioEffectProperties(const AudioEffectProperties &)=defaultncine::AudioEffectProperties
AUDITORIUM enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
autoWahProperties() constncine::AudioEffectProperties
autoWahProperties()ncine::AudioEffectProperties
BATHROOM enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
CARPETED_HALLWAY enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
CASTLE_ALCOVE enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
CASTLE_COURTYARD enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
CASTLE_CUPBOARD enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
CASTLE_HALL enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
CASTLE_LARGE_ROOM enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
CASTLE_LONG_PASSAGE enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
CASTLE_MEDIUM_ROOM enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
CASTLE_SHORT_PASSAGE enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
CASTLE_SMALL_ROOM enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
CAVE enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
CHAPEL enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
chorusProperties() constncine::AudioEffectProperties
chorusProperties()ncine::AudioEffectProperties
CITY enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
CITY_ABANDONED enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
CITY_LIBRARY enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
CITY_MUSEUM enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
CITY_STREETS enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
CITY_SUBWAY enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
CITY_UNDERPASS enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
compressorProperties() constncine::AudioEffectProperties
compressorProperties()ncine::AudioEffectProperties
CONCERT_HALL enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
COUNT enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
distortionProperties() constncine::AudioEffectProperties
distortionProperties()ncine::AudioEffectProperties
DIZZY enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
DOME_SAINT_PAULS enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
DOME_TOMB enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
DRIVING_COMMENTATOR enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
DRIVING_EMPTY_GRANDSTAND enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
DRIVING_FULL_GRANDSTAND enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
DRIVING_INCAR_LUXURY enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
DRIVING_INCAR_RACER enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
DRIVING_INCAR_SPORTS enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
DRIVING_PIT_GARAGE enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
DRIVING_TUNNEL enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
DRUGGED enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
DUSTY_ROOM enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
eaxReverbProperties() constncine::AudioEffectProperties
eaxReverbProperties()ncine::AudioEffectProperties
echoProperties() constncine::AudioEffectProperties
echoProperties()ncine::AudioEffectProperties
EfxReverbPresets enum name (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
equalizerProperties() constncine::AudioEffectProperties
equalizerProperties()ncine::AudioEffectProperties
FACTORY_ALCOVE enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
FACTORY_COURTYARD enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
FACTORY_CUPBOARD enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
FACTORY_HALL enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
FACTORY_LARGE_ROOM enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
FACTORY_LONG_PASSAGE enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
FACTORY_MEDIUM_ROOM enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
FACTORY_SHORT_PASSAGE enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
FACTORY_SMALL_ROOM enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
flangerProperties() constncine::AudioEffectProperties
flangerProperties()ncine::AudioEffectProperties
FOREST enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
frequencyShifterProperties() constncine::AudioEffectProperties
frequencyShifterProperties()ncine::AudioEffectProperties
GENERIC enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
HALLWAY enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
HANGAR enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
ICEPALACE_ALCOVE enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
ICEPALACE_COURTYARD enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
ICEPALACE_CUPBOARD enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
ICEPALACE_HALL enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
ICEPALACE_LARGE_ROOM enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
ICEPALACE_LONG_PASSAGE enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
ICEPALACE_MEDIUM_ROOM enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
ICEPALACE_SHORT_PASSAGE enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
ICEPALACE_SMALL_ROOM enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
LIVING_ROOM enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
maxAutoWahProperties()ncine::AudioEffectPropertiesstatic
maxChorusProperties()ncine::AudioEffectPropertiesstatic
maxCompressorProperties()ncine::AudioEffectPropertiesstatic
maxDistortionProperties()ncine::AudioEffectPropertiesstatic
maxEaxReverbProperties()ncine::AudioEffectPropertiesstatic
maxEchoProperties()ncine::AudioEffectPropertiesstatic
maxEqualizerProperties()ncine::AudioEffectPropertiesstatic
maxFlangerProperties()ncine::AudioEffectPropertiesstatic
maxFrequencyShifterProperties()ncine::AudioEffectPropertiesstatic
maxPitchShifterProperties()ncine::AudioEffectPropertiesstatic
maxReverbProperties()ncine::AudioEffectPropertiesstatic
maxRingModulatorProperties()ncine::AudioEffectPropertiesstatic
maxVocalMorpherProperties()ncine::AudioEffectPropertiesstatic
minAutoWahProperties()ncine::AudioEffectPropertiesstatic
minChorusProperties()ncine::AudioEffectPropertiesstatic
minCompressorProperties()ncine::AudioEffectPropertiesstatic
minDistortionProperties()ncine::AudioEffectPropertiesstatic
minEaxReverbProperties()ncine::AudioEffectPropertiesstatic
minEchoProperties()ncine::AudioEffectPropertiesstatic
minEqualizerProperties()ncine::AudioEffectPropertiesstatic
minFlangerProperties()ncine::AudioEffectPropertiesstatic
minFrequencyShifterProperties()ncine::AudioEffectPropertiesstatic
minPitchShifterProperties()ncine::AudioEffectPropertiesstatic
minReverbProperties()ncine::AudioEffectPropertiesstatic
minRingModulatorProperties()ncine::AudioEffectPropertiesstatic
minVocalMorpherProperties()ncine::AudioEffectPropertiesstatic
MOOD_HEAVEN enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
MOOD_HELL enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
MOOD_MEMORY enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
MOUNTAINS enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
operator=(AudioEffectProperties &&other)=defaultncine::AudioEffectProperties
operator=(const AudioEffectProperties &)=defaultncine::AudioEffectProperties
OUTDOORS_BACKYARD enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
OUTDOORS_CREEK enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
OUTDOORS_DEEP_CANYON enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
OUTDOORS_ROLLING_PLAINS enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
OUTDOORS_VALLEY enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
PADDED_CELL enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
PARKING_LOT enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
PIPE_LARGE enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
PIPE_LONGTHIN enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
PIPE_RESONANT enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
PIPE_SMALL enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
pitchShifterProperties() constncine::AudioEffectProperties
pitchShifterProperties()ncine::AudioEffectProperties
PLAIN enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
PREFAB_CARAVAN enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
PREFAB_OUTHOUSE enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
PREFAB_PRACTISE_ROOM enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
PREFAB_SCHOOL_ROOM enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
PREFAB_WORKSHOP enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
PSYCHOTIC enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
QUARRY enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
resetAutoWahProperties()ncine::AudioEffectProperties
resetChorusProperties()ncine::AudioEffectProperties
resetCompressorProperties()ncine::AudioEffectProperties
resetDistortionProperties()ncine::AudioEffectProperties
resetEaxReverbProperties()ncine::AudioEffectProperties
resetEchoProperties()ncine::AudioEffectProperties
resetEqualizerProperties()ncine::AudioEffectProperties
resetFlangerProperties()ncine::AudioEffectProperties
resetFrequencyShifterProperties()ncine::AudioEffectProperties
resetPitchShifterProperties()ncine::AudioEffectProperties
resetReverbProperties()ncine::AudioEffectProperties
resetRingModulatorProperties()ncine::AudioEffectProperties
resetVocalMorpherProperties()ncine::AudioEffectProperties
reverbProperties() constncine::AudioEffectProperties
reverbProperties()ncine::AudioEffectProperties
ringModulatorProperties() constncine::AudioEffectProperties
ringModulatorProperties()ncine::AudioEffectProperties
ROOM enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
setAutoWahProperties(const AutoWahProperties &newAutoWahProperties)ncine::AudioEffectProperties
setChorusProperties(const ChorusProperties &newChorusProperties)ncine::AudioEffectProperties
setCompressorProperties(const CompressorProperties &newCompressorProperties)ncine::AudioEffectProperties
setDistortionProperties(const DistortionProperties &newDistortionProperties)ncine::AudioEffectProperties
setEaxReverbProperties(const EaxReverbProperties &newEaxReverbProperties)ncine::AudioEffectProperties
setEchoProperties(const EchoProperties &newEchoProperties)ncine::AudioEffectProperties
setEqualizerProperties(const EqualizerProperties &newEqualizerProperties)ncine::AudioEffectProperties
setFlangerProperties(const FlangerProperties &newFlangerProperties)ncine::AudioEffectProperties
setFrequencyShifterProperties(const FrequencyShifterProperties &newFrequencyShifterProperties)ncine::AudioEffectProperties
setPitchShifterProperties(const PitchShifterProperties &newPitchShifterProperties)ncine::AudioEffectProperties
setReverbProperties(const ReverbProperties &newReverbProperties)ncine::AudioEffectProperties
setRingModulatorProperties(const RingModulatorProperties &newRingModulatorProperties)ncine::AudioEffectProperties
setType(AudioEffect::Type type)ncine::AudioEffectProperties
setVocalMorpherProperties(const VocalMorpherProperties &newVocalMorpherProperties)ncine::AudioEffectProperties
SEWER_PIPE enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
SMALL_WATER_ROOM enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
SPACE_STATION_ALCOVE enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
SPACE_STATION_CUPBOARD enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
SPACE_STATION_HALL enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
SPACE_STATION_LARGE_ROOM enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
SPACE_STATION_LONG_PASSAGE enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
SPACE_STATION_MEDIUM_ROOM enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
SPACE_STATION_SHORT_PASSAGE enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
SPACE_STATION_SMALL_ROOM enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
SPORT_EMPTY_STADIUM enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
SPORT_FULL_STADIUM enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
SPORT_GYMNASIUM enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
SPORT_LARGE_SWIMMING_POOL enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
SPORT_SMALL_SWIMMING_POOL enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
SPORT_SQUASH_COURT enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
SPORT_STADIUM_TANNOY enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
STONE_CORRIDOR enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
STONE_ROOM enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
type() constncine::AudioEffectPropertiesinline
UNDERWATER enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
vocalMorpherProperties() constncine::AudioEffectProperties
vocalMorpherProperties()ncine::AudioEffectProperties
WOODEN_GALLEON_ALCOVE enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
WOODEN_GALLEON_COURTYARD enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
WOODEN_GALLEON_CUPBOARD enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
WOODEN_GALLEON_HALL enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
WOODEN_GALLEON_LARGE_ROOM enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
WOODEN_GALLEON_LONG_PASSAGE enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
WOODEN_GALLEON_MEDIUM_ROOM enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
WOODEN_GALLEON_SHORT_PASSAGE enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
WOODEN_GALLEON_SMALL_ROOM enum value (defined in ncine::AudioEffectProperties)ncine::AudioEffectProperties
+ + + + diff --git a/master/classncine_1_1_audio_effect_properties.html b/master/classncine_1_1_audio_effect_properties.html new file mode 100644 index 0000000000..9b78b82d84 --- /dev/null +++ b/master/classncine_1_1_audio_effect_properties.html @@ -0,0 +1,627 @@ + + + + + + + +nCine: ncine::AudioEffectProperties Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::AudioEffectProperties Class Reference
+
+
+ +

A class representing a set of OpenAL effect properties. + More...

+ +

#include <AudioEffectProperties.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Classes

struct  AutoWahProperties
 
struct  ChorusProperties
 
struct  CompressorProperties
 
struct  DistortionProperties
 
struct  EaxReverbProperties
 
struct  EchoProperties
 
struct  EqualizerProperties
 
struct  FlangerProperties
 
struct  FrequencyShifterProperties
 
struct  PitchShifterProperties
 
struct  ReverbProperties
 
struct  RingModulatorProperties
 
struct  VocalMorpherProperties
 
+ + + +

+Public Types

enum  EfxReverbPresets {
+  GENERIC +, PADDED_CELL +, ROOM +, BATHROOM +,
+  LIVING_ROOM +, STONE_ROOM +, AUDITORIUM +, CONCERT_HALL +,
+  CAVE +, ARENA +, HANGAR +, CARPETED_HALLWAY +,
+  HALLWAY +, STONE_CORRIDOR +, ALLEY +, FOREST +,
+  CITY +, MOUNTAINS +, QUARRY +, PLAIN +,
+  PARKING_LOT +, SEWER_PIPE +, UNDERWATER +, DRUGGED +,
+  DIZZY +, PSYCHOTIC +, CASTLE_SMALL_ROOM +, CASTLE_SHORT_PASSAGE +,
+  CASTLE_MEDIUM_ROOM +, CASTLE_LARGE_ROOM +, CASTLE_LONG_PASSAGE +, CASTLE_HALL +,
+  CASTLE_CUPBOARD +, CASTLE_COURTYARD +, CASTLE_ALCOVE +, FACTORY_SMALL_ROOM +,
+  FACTORY_SHORT_PASSAGE +, FACTORY_MEDIUM_ROOM +, FACTORY_LARGE_ROOM +, FACTORY_LONG_PASSAGE +,
+  FACTORY_HALL +, FACTORY_CUPBOARD +, FACTORY_COURTYARD +, FACTORY_ALCOVE +,
+  ICEPALACE_SMALL_ROOM +, ICEPALACE_SHORT_PASSAGE +, ICEPALACE_MEDIUM_ROOM +, ICEPALACE_LARGE_ROOM +,
+  ICEPALACE_LONG_PASSAGE +, ICEPALACE_HALL +, ICEPALACE_CUPBOARD +, ICEPALACE_COURTYARD +,
+  ICEPALACE_ALCOVE +, SPACE_STATION_SMALL_ROOM +, SPACE_STATION_SHORT_PASSAGE +, SPACE_STATION_MEDIUM_ROOM +,
+  SPACE_STATION_LARGE_ROOM +, SPACE_STATION_LONG_PASSAGE +, SPACE_STATION_HALL +, SPACE_STATION_CUPBOARD +,
+  SPACE_STATION_ALCOVE +, WOODEN_GALLEON_SMALL_ROOM +, WOODEN_GALLEON_SHORT_PASSAGE +, WOODEN_GALLEON_MEDIUM_ROOM +,
+  WOODEN_GALLEON_LARGE_ROOM +, WOODEN_GALLEON_LONG_PASSAGE +, WOODEN_GALLEON_HALL +, WOODEN_GALLEON_CUPBOARD +,
+  WOODEN_GALLEON_COURTYARD +, WOODEN_GALLEON_ALCOVE +, SPORT_EMPTY_STADIUM +, SPORT_SQUASH_COURT +,
+  SPORT_SMALL_SWIMMING_POOL +, SPORT_LARGE_SWIMMING_POOL +, SPORT_GYMNASIUM +, SPORT_FULL_STADIUM +,
+  SPORT_STADIUM_TANNOY +, PREFAB_WORKSHOP +, PREFAB_SCHOOL_ROOM +, PREFAB_PRACTISE_ROOM +,
+  PREFAB_OUTHOUSE +, PREFAB_CARAVAN +, DOME_TOMB +, PIPE_SMALL +,
+  DOME_SAINT_PAULS +, PIPE_LONGTHIN +, PIPE_LARGE +, PIPE_RESONANT +,
+  OUTDOORS_BACKYARD +, OUTDOORS_ROLLING_PLAINS +, OUTDOORS_DEEP_CANYON +, OUTDOORS_CREEK +,
+  OUTDOORS_VALLEY +, MOOD_HEAVEN +, MOOD_HELL +, MOOD_MEMORY +,
+  DRIVING_COMMENTATOR +, DRIVING_PIT_GARAGE +, DRIVING_INCAR_RACER +, DRIVING_INCAR_SPORTS +,
+  DRIVING_INCAR_LUXURY +, DRIVING_FULL_GRANDSTAND +, DRIVING_EMPTY_GRANDSTAND +, DRIVING_TUNNEL +,
+  CITY_STREETS +, CITY_SUBWAY +, CITY_MUSEUM +, CITY_LIBRARY +,
+  CITY_UNDERPASS +, CITY_ABANDONED +, DUSTY_ROOM +, CHAPEL +,
+  SMALL_WATER_ROOM +, COUNT +
+ }
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

AudioEffectProperties ()
 Creates an empty of properties without any effect type.
 
AudioEffectProperties (AudioEffect::Type type)
 Creates a set of properties for an effect type.
 
AudioEffectProperties (AudioEffectProperties &&other)=default
 Default move constructor.
 
+AudioEffectPropertiesoperator= (AudioEffectProperties &&other)=default
 Default move assignment operator.
 
AudioEffectProperties (const AudioEffectProperties &)=default
 Default copy constructor.
 
+AudioEffectPropertiesoperator= (const AudioEffectProperties &)=default
 DEfault assignment operator.
 
+AudioEffect::Type type () const
 Returns the effect properties type.
 
+void setType (AudioEffect::Type type)
 Sets the effect properties type.
 
+const ReverbPropertiesreverbProperties () const
 Returns the current constant values for the reverb effect properties.
 
+ReverbPropertiesreverbProperties ()
 Returns the current values for the reverb effect properties.
 
+void setReverbProperties (const ReverbProperties &newReverbProperties)
 Sets all values for the reverb effect properties.
 
+void resetReverbProperties ()
 Resets all property values for the reverb effect to thir default.
 
+const EaxReverbPropertieseaxReverbProperties () const
 Returns the current constant values for the EAX reverb effect properties.
 
+EaxReverbPropertieseaxReverbProperties ()
 Returns the current values for the EAX reverb effect properties.
 
+void setEaxReverbProperties (const EaxReverbProperties &newEaxReverbProperties)
 Sets all values for the EAX reverb effect properties.
 
+void resetEaxReverbProperties ()
 Resets all property values for the EAX reverb effect to thir default.
 
+const ChorusPropertieschorusProperties () const
 Returns the current constant values for the chorus effect properties.
 
+ChorusPropertieschorusProperties ()
 Returns the current values for the chorus effect properties.
 
+void setChorusProperties (const ChorusProperties &newChorusProperties)
 Sets all values for the chorus effect properties.
 
+void resetChorusProperties ()
 Resets all property values for the chorus effect to thir default.
 
+const DistortionPropertiesdistortionProperties () const
 Returns the current constant values for the distortion effect properties.
 
+DistortionPropertiesdistortionProperties ()
 Returns the current values for the distortion effect properties.
 
+void setDistortionProperties (const DistortionProperties &newDistortionProperties)
 Sets all values for the distortion effect properties.
 
+void resetDistortionProperties ()
 Resets all property values for the distortion effect to thir default.
 
+const EchoPropertiesechoProperties () const
 Returns the current constant values for the echo effect properties.
 
+EchoPropertiesechoProperties ()
 Returns the current values for the echo effect properties.
 
+void setEchoProperties (const EchoProperties &newEchoProperties)
 Sets all values for the echo effect properties.
 
+void resetEchoProperties ()
 Resets all property values for the echo effect to thir default.
 
+const FlangerPropertiesflangerProperties () const
 Returns the current constant values for the flanger effect properties.
 
+FlangerPropertiesflangerProperties ()
 Returns the current values for the flanger effect properties.
 
+void setFlangerProperties (const FlangerProperties &newFlangerProperties)
 Sets all values for the flanger effect properties.
 
+void resetFlangerProperties ()
 Resets all property values for the flanger effect to thir default.
 
+const FrequencyShifterPropertiesfrequencyShifterProperties () const
 Returns the current constant values for the frequency shifter effect properties.
 
+FrequencyShifterPropertiesfrequencyShifterProperties ()
 Returns the current values for the frequency shifter effect properties.
 
+void setFrequencyShifterProperties (const FrequencyShifterProperties &newFrequencyShifterProperties)
 Sets all values for the frequency shifter effect properties.
 
+void resetFrequencyShifterProperties ()
 Resets all property values for the frequency shifter effect to thir default.
 
+const VocalMorpherPropertiesvocalMorpherProperties () const
 Returns the current constant values for the vocal morpher effect properties.
 
+VocalMorpherPropertiesvocalMorpherProperties ()
 Returns the current values for the vocal morpher effect properties.
 
+void setVocalMorpherProperties (const VocalMorpherProperties &newVocalMorpherProperties)
 Sets all values for the vocal morpher effect properties.
 
+void resetVocalMorpherProperties ()
 Resets all property values for the vocal morpher effect to thir default.
 
+const PitchShifterPropertiespitchShifterProperties () const
 Returns the current constant values for the pitch shifter effect properties.
 
+PitchShifterPropertiespitchShifterProperties ()
 Returns the current values for the pitch shifter effect properties.
 
+void setPitchShifterProperties (const PitchShifterProperties &newPitchShifterProperties)
 Sets all values for the pitch shifter effect properties.
 
+void resetPitchShifterProperties ()
 Resets all property values for the pitch shifter effect to thir default.
 
+const RingModulatorPropertiesringModulatorProperties () const
 Returns the current constant values for the ring modulator effect properties.
 
+RingModulatorPropertiesringModulatorProperties ()
 Returns the current values for the ring modulator effect properties.
 
+void setRingModulatorProperties (const RingModulatorProperties &newRingModulatorProperties)
 Sets all values for the ring modulator effect properties.
 
+void resetRingModulatorProperties ()
 Resets all property values for the ring modulator effect to thir default.
 
+const AutoWahPropertiesautoWahProperties () const
 Returns the current constant values for the auto wah effect properties.
 
+AutoWahPropertiesautoWahProperties ()
 Returns the current values for the auto wah effect properties.
 
+void setAutoWahProperties (const AutoWahProperties &newAutoWahProperties)
 Sets all values for the auto wah effect properties.
 
+void resetAutoWahProperties ()
 Resets all property values for the auto wah effect to thir default.
 
+const CompressorPropertiescompressorProperties () const
 Returns the current constant values for the compressor effect properties.
 
+CompressorPropertiescompressorProperties ()
 Returns the current values for the compressor effect properties.
 
+void setCompressorProperties (const CompressorProperties &newCompressorProperties)
 Sets all values for the compressor effect properties.
 
+void resetCompressorProperties ()
 Resets all property values for the compressor effect to thir default.
 
+const EqualizerPropertiesequalizerProperties () const
 Returns the current constant values for the equalizer effect properties.
 
+EqualizerPropertiesequalizerProperties ()
 Returns the current values for the equalizer effect properties.
 
+void setEqualizerProperties (const EqualizerProperties &newEqualizerProperties)
 Sets all values for the equalizer effect properties.
 
+void resetEqualizerProperties ()
 Resets all property values for the equalizer effect to thir default.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

+static ReverbProperties minReverbProperties ()
 Returns the minimum values for the reverb effect properties.
 
+static ReverbProperties maxReverbProperties ()
 Returns the maximum values for the reverb effect properties.
 
+static EaxReverbProperties minEaxReverbProperties ()
 Returns the minimum values for the EAX reverb effect properties.
 
+static EaxReverbProperties maxEaxReverbProperties ()
 Returns the maximum values for the EAX reverb effect properties.
 
+static ChorusProperties minChorusProperties ()
 Returns the minimum values for the chorus effect properties.
 
+static ChorusProperties maxChorusProperties ()
 Returns the maximum values for the chorus effect properties.
 
+static DistortionProperties minDistortionProperties ()
 Returns the minimum values for the distortion effect properties.
 
+static DistortionProperties maxDistortionProperties ()
 Returns the maximum values for the distortion effect properties.
 
+static EchoProperties minEchoProperties ()
 Returns the minimum values for the echo effect properties.
 
+static EchoProperties maxEchoProperties ()
 Returns the maximum values for the echo effect properties.
 
+static FlangerProperties minFlangerProperties ()
 Returns the minimum values for the flanger effect properties.
 
+static FlangerProperties maxFlangerProperties ()
 Returns the maximum values for the flanger effect properties.
 
+static FrequencyShifterProperties minFrequencyShifterProperties ()
 Returns the minimum values for the frequency shifter effect properties.
 
+static FrequencyShifterProperties maxFrequencyShifterProperties ()
 Returns the maximum values for the frequency shifter effect properties.
 
+static VocalMorpherProperties minVocalMorpherProperties ()
 Returns the minimum values for the vocal morpher effect properties.
 
+static VocalMorpherProperties maxVocalMorpherProperties ()
 Returns the maximum values for the vocal morpher effect properties.
 
+static PitchShifterProperties minPitchShifterProperties ()
 Returns the minimum values for the pitch shifter effect properties.
 
+static PitchShifterProperties maxPitchShifterProperties ()
 Returns the maximum values for the pitch shifter effect properties.
 
+static RingModulatorProperties minRingModulatorProperties ()
 Returns the minimum values for the ring modulator effect properties.
 
+static RingModulatorProperties maxRingModulatorProperties ()
 Returns the maximum values for the ring modulator effect properties.
 
+static AutoWahProperties minAutoWahProperties ()
 Returns the minimum values for the auto wah effect properties.
 
+static AutoWahProperties maxAutoWahProperties ()
 Returns the maximum values for the auto wah effect properties.
 
+static CompressorProperties minCompressorProperties ()
 Returns the minimum values for the compressor effect properties.
 
+static CompressorProperties maxCompressorProperties ()
 Returns the maximum values for the compressor effect properties.
 
+static EqualizerProperties minEqualizerProperties ()
 Returns the minimum values for the equalizer effect properties.
 
+static EqualizerProperties maxEqualizerProperties ()
 Returns the maximum values for the equalizer effect properties.
 
+

Detailed Description

+

A class representing a set of OpenAL effect properties.

+

The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classncine_1_1_audio_effect_slot-members.html b/master/classncine_1_1_audio_effect_slot-members.html new file mode 100644 index 0000000000..3adfb29cbd --- /dev/null +++ b/master/classncine_1_1_audio_effect_slot-members.html @@ -0,0 +1,95 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::AudioEffectSlot Member List
+
+
+ +

This is the complete list of members for ncine::AudioEffectSlot, including all inherited members.

+ + + + + + + + + + + + +
applyEffect(const AudioEffect &effect)ncine::AudioEffectSlot
AudioEffectSlot()ncine::AudioEffectSlot
AudioEffectSlot(const AudioEffect &effect) (defined in ncine::AudioEffectSlot)ncine::AudioEffectSlotexplicit
AudioEffectSlot(AudioEffectSlot &&other)ncine::AudioEffectSlot
auxSendAuto() constncine::AudioEffectSlotinline
effectSlotId() constncine::AudioEffectSlotinline
gain() constncine::AudioEffectSlotinline
operator=(AudioEffectSlot &&other)ncine::AudioEffectSlot
setAuxSendAuto(bool auxSendAuto)ncine::AudioEffectSlot
setGain(float gain)ncine::AudioEffectSlot
~AudioEffectSlot() (defined in ncine::AudioEffectSlot)ncine::AudioEffectSlot
+ + + + diff --git a/master/classncine_1_1_audio_effect_slot.html b/master/classncine_1_1_audio_effect_slot.html new file mode 100644 index 0000000000..8a995c9a3f --- /dev/null +++ b/master/classncine_1_1_audio_effect_slot.html @@ -0,0 +1,206 @@ + + + + + + + +nCine: ncine::AudioEffectSlot Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::AudioEffectSlot Class Reference
+
+
+ +

A class representing an OpenAL auxilary effect slot. + More...

+ +

#include <AudioEffectSlot.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

AudioEffectSlot ()
 Creates an OpenAL auxilary effect slot name.
 
AudioEffectSlot (const AudioEffect &effect)
 
AudioEffectSlot (AudioEffectSlot &&other)
 Move constructor.
 
+AudioEffectSlotoperator= (AudioEffectSlot &&other)
 Move assignment operator.
 
+unsigned int effectSlotId () const
 Returns the OpenAL auxilary effect slot id.
 
+float gain () const
 Returns the gain output level of the auxilary effect slot.
 
+void setGain (float gain)
 Sets the gain output level of the auxilary effect slot.
 
bool auxSendAuto () const
 Returns the state of the auxilary slot send auto flag. More...
 
void setAuxSendAuto (bool auxSendAuto)
 Sets the state of the auxilary slot send auto flag. More...
 
void applyEffect (const AudioEffect &effect)
 Applies the effect parameters from an effect object. More...
 
+

Detailed Description

+

A class representing an OpenAL auxilary effect slot.

+

Member Function Documentation

+ +

◆ applyEffect()

+ +
+
+ + + + + + + + +
void ncine::AudioEffectSlot::applyEffect (const AudioEffecteffect)
+
+ +

Applies the effect parameters from an effect object.

+
Note
You can modify or delete the effect object afterward without affecting the auxiliary effect slot.
+ +
+
+ +

◆ auxSendAuto()

+ +
+
+ + + + + +
+ + + + + + + +
bool ncine::AudioEffectSlot::auxSendAuto () const
+
+inline
+
+ +

Returns the state of the auxilary slot send auto flag.

+
Note
The property is used to enable or disable automatic send adjustments based on the physical positions of the sources and the listener.
+ +
+
+ +

◆ setAuxSendAuto()

+ +
+
+ + + + + + + + +
void ncine::AudioEffectSlot::setAuxSendAuto (bool auxSendAuto)
+
+ +

Sets the state of the auxilary slot send auto flag.

+
Note
The property is used to enable or disable automatic send adjustments based on the physical positions of the sources and the listener.
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classncine_1_1_audio_filter-members.html b/master/classncine_1_1_audio_filter-members.html new file mode 100644 index 0000000000..18727923cc --- /dev/null +++ b/master/classncine_1_1_audio_filter-members.html @@ -0,0 +1,93 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::AudioFilter Member List
+
+
+ +

This is the complete list of members for ncine::AudioFilter, including all inherited members.

+ + + + + + + + + + +
applyProperties(const Properties &properties)ncine::AudioFilter
AudioFilter()ncine::AudioFilter
AudioFilter(Type type)ncine::AudioFilterexplicit
AudioFilter(AudioFilter &&other)ncine::AudioFilter
filterId() constncine::AudioFilterinline
operator=(AudioFilter &&other)ncine::AudioFilter
Type enum name (defined in ncine::AudioFilter)ncine::AudioFilter
type() constncine::AudioFilterinline
~AudioFilter() (defined in ncine::AudioFilter)ncine::AudioFilter
+ + + + diff --git a/master/classncine_1_1_audio_filter.html b/master/classncine_1_1_audio_filter.html new file mode 100644 index 0000000000..65462cc107 --- /dev/null +++ b/master/classncine_1_1_audio_filter.html @@ -0,0 +1,143 @@ + + + + + + + +nCine: ncine::AudioFilter Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::AudioFilter Class Reference
+
+
+ +

A class representing an OpenAL filter. + More...

+ +

#include <AudioFilter.h>

+ + + + +

+Classes

struct  Properties
 
+ + + +

+Public Types

enum class  Type { NULL_FILTER +, LOWPASS +, HIGHPASS +, BANDPASS + }
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

AudioFilter ()
 Creates an OpenAL filter name.
 
AudioFilter (Type type)
 Creates an OpenAL filter name with the specified type.
 
AudioFilter (AudioFilter &&other)
 Move constructor.
 
+AudioFilteroperator= (AudioFilter &&other)
 Move assignment operator.
 
+Type type () const
 Returns the filter type.
 
+unsigned int filterId () const
 Returns the OpenAL filter id.
 
+void applyProperties (const Properties &properties)
 Sets the filter type and all of its properties.
 
+

Detailed Description

+

A class representing an OpenAL filter.

+

The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classncine_1_1_audio_stream-members.html b/master/classncine_1_1_audio_stream-members.html new file mode 100644 index 0000000000..2799ceb535 --- /dev/null +++ b/master/classncine_1_1_audio_stream-members.html @@ -0,0 +1,98 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::AudioStream Member List
+
+
+ +

This is the complete list of members for ncine::AudioStream, including all inherited members.

+ + + + + + + + + + + + + + + +
AudioStreamPlayer (defined in ncine::AudioStream)ncine::AudioStreamfriend
bufferId() constncine::AudioStreaminline
bufferSize() constncine::AudioStreaminline
bytesPerSample() constncine::AudioStreaminline
duration() constncine::AudioStreaminline
enqueue(unsigned int source, bool looping)ncine::AudioStream
frequency() constncine::AudioStreaminline
numChannels() constncine::AudioStreaminline
numSamples() constncine::AudioStreaminline
numSamplesInStreamBuffer() constncine::AudioStream
stop(unsigned int source)ncine::AudioStream
streamBufferSize() constncine::AudioStreaminline
totalProcessedBuffers() constncine::AudioStreaminline
~AudioStream() (defined in ncine::AudioStream)ncine::AudioStream
+ + + + diff --git a/master/classncine_1_1_audio_stream.html b/master/classncine_1_1_audio_stream.html new file mode 100644 index 0000000000..8d267c2fa5 --- /dev/null +++ b/master/classncine_1_1_audio_stream.html @@ -0,0 +1,185 @@ + + + + + + + +nCine: ncine::AudioStream Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::AudioStream Class Reference
+
+
+ +

Audio stream class. + More...

+ +

#include <AudioStream.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+unsigned int bufferId () const
 Returns the OpenAL id of the currently playing buffer, or 0 if not.
 
+int bytesPerSample () const
 Returns the number of bytes per sample.
 
+int numChannels () const
 Returns the number of audio channels.
 
+int frequency () const
 Returns the samples frequency.
 
+unsigned long int numSamples () const
 Returns number of samples.
 
+float duration () const
 Returns the duration in seconds.
 
+unsigned long bufferSize () const
 Returns the size of the loaded buffer in bytes.
 
+unsigned long int numSamplesInStreamBuffer () const
 Returns the number of samples in the streaming buffer.
 
+int streamBufferSize () const
 Returns the size of the streaming buffer in bytes.
 
+unsigned int totalProcessedBuffers () const
 Returns the number of processed buffers since first enqueue.
 
bool enqueue (unsigned int source, bool looping)
 Enqueues new buffers and unqueues processed ones. More...
 
+void stop (unsigned int source)
 Unqueues any left buffer and rewinds the loader.
 
+ + + +

+Friends

+class AudioStreamPlayer
 
+

Detailed Description

+

Audio stream class.

+

Member Function Documentation

+ +

◆ enqueue()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool ncine::AudioStream::enqueue (unsigned int source,
bool looping 
)
+
+ +

Enqueues new buffers and unqueues processed ones.

+
Returns
A flag indicating whether the stream has been entirely decoded and played or not.
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classncine_1_1_audio_stream_player-members.html b/master/classncine_1_1_audio_stream_player-members.html new file mode 100644 index 0000000000..00339beac9 --- /dev/null +++ b/master/classncine_1_1_audio_stream_player-members.html @@ -0,0 +1,198 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::AudioStreamPlayer Member List
+
+
+ +

This is the complete list of members for ncine::AudioStreamPlayer, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
airAbsorptionFactor_ncine::IAudioPlayerprotected
applySourceProperties()ncine::IAudioPlayerprotected
AudioStreamPlayer()ncine::AudioStreamPlayer
AudioStreamPlayer(const char *bufferName, const unsigned char *bufferPtr, unsigned long int bufferSize)ncine::AudioStreamPlayer
AudioStreamPlayer(const char *filename)ncine::AudioStreamPlayerexplicit
AudioStreamPlayer(AudioStreamPlayer &&)=defaultncine::AudioStreamPlayer
auxFilterId_ncine::IAudioPlayerprotected
bufferId() const overridencine::AudioStreamPlayerinlinevirtual
bufferSize() const overridencine::AudioStreamPlayerinlinevirtual
bytesPerSample() const overridencine::AudioStreamPlayerinlinevirtual
coneInnerAngle() constncine::IAudioPlayerinline
coneInnerAngle_ncine::IAudioPlayerprotected
coneOuterAngle() constncine::IAudioPlayerinline
coneOuterAngle_ncine::IAudioPlayerprotected
coneOuterGain() constncine::IAudioPlayerinline
coneOuterGain_ncine::IAudioPlayerprotected
coneOuterGainHF_ncine::IAudioPlayerprotected
DefaultAirAbsorptionFactor (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
DefaultConeAngle (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
DefaultConeOuterGain (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
DefaultConeOuterGainHF (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
DefaultGain (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
DefaultPitch (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
DefaultRoomRolloffFactor (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
directFilterId_ncine::IAudioPlayerprotected
direction() constncine::IAudioPlayerinline
direction_ncine::IAudioPlayerprotected
duration() const overridencine::AudioStreamPlayerinlinevirtual
effectSlotId_ncine::IAudioPlayerprotected
frequency() const overridencine::AudioStreamPlayerinlinevirtual
fromId(unsigned int id)ncine::Objectstatic
gain() constncine::IAudioPlayerinline
gain_ncine::IAudioPlayerprotected
hasSource() constncine::IAudioPlayer
IAudioPlayer(ObjectType type, const char *name) (defined in ncine::IAudioPlayer)ncine::IAudioPlayer
IAudioPlayer(ObjectType type) (defined in ncine::IAudioPlayer)ncine::IAudioPlayer
IAudioPlayer(IAudioPlayer &&)=defaultncine::IAudioPlayer
id() constncine::Objectinline
isLooping() constncine::IAudioPlayerinline
isLooping_ncine::IAudioPlayerprotected
isPaused() constncine::IAudioPlayerinline
isPlaying() constncine::IAudioPlayerinline
isSourceLocked() constncine::IAudioPlayerinline
isStopped() constncine::IAudioPlayerinline
loadFromFile(const char *filename) (defined in ncine::AudioStreamPlayer)ncine::AudioStreamPlayer
loadFromMemory(const char *bufferName, const unsigned char *bufferPtr, unsigned long int bufferSize) (defined in ncine::AudioStreamPlayer)ncine::AudioStreamPlayer
MaxAirAbsorptionFactor (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
MaxConeAngle (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
MaxConeOuterGain (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
MaxConeOuterGainHF (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
MaxGain (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
MaxNameLengthncine::Objectstatic
MaxPitch (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
MaxRoomRolloffFactor (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
MinAirAbsorptionFactor (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
MinConeAngle (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
MinConeOuterGain (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
MinConeOuterGainHF (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
MinGain (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
MinPitch (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
MinRoomRolloffFactor (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
name() constncine::Object
numChannels() const overridencine::AudioStreamPlayerinlinevirtual
numSamples() const overridencine::AudioStreamPlayerinlinevirtual
numSamplesInStreamBuffer() constncine::AudioStreamPlayerinline
Object(ObjectType type)ncine::Objectexplicit
Object(ObjectType type, const char *name)ncine::Object
Object(Object &&other)ncine::Object
Object(const Object &other)ncine::Objectprotected
ObjectType enum namencine::Object
operator=(AudioStreamPlayer &&)=defaultncine::AudioStreamPlayer
ncine::IAudioPlayer::operator=(IAudioPlayer &&)=defaultncine::IAudioPlayer
ncine::Object::operator=(Object &&other)ncine::Object
pause() overridencine::AudioStreamPlayervirtual
pitch() constncine::IAudioPlayerinline
pitch_ncine::IAudioPlayerprotected
play() overridencine::AudioStreamPlayervirtual
PlayerState enum namencine::IAudioPlayer
position() constncine::IAudioPlayerinline
position_ncine::IAudioPlayerprotected
roomRooloffFactor_ncine::IAudioPlayerprotected
sampleOffset() constncine::IAudioPlayer
sampleOffsetInStream() constncine::AudioStreamPlayer
setConeInnerAngle(float coneAngle)ncine::IAudioPlayer
setConeOuterAngle(float coneAngle)ncine::IAudioPlayer
setConeOuterGain(float gain)ncine::IAudioPlayer
setDirection(const Vector3f &direction)ncine::IAudioPlayer
setDirection(float x, float y, float z)ncine::IAudioPlayer
setGain(float gain)ncine::IAudioPlayer
setLooping(bool isLooping)ncine::IAudioPlayerinline
setName(const char *name)ncine::Object
setPitch(float pitch)ncine::IAudioPlayer
setPosition(const Vector3f &position)ncine::IAudioPlayer
setPosition(float x, float y, float z)ncine::IAudioPlayer
setSampleOffset(int offset)ncine::IAudioPlayer
setSourceLocked(bool sourceLocked)ncine::IAudioPlayer
setVelocity(const Vector3f &velocity)ncine::IAudioPlayer
setVelocity(float x, float y, float z)ncine::IAudioPlayer
sourceId() constncine::IAudioPlayerinline
sourceId_ncine::IAudioPlayerprotected
sourceLocked_ncine::IAudioPlayerprotected
state() constncine::IAudioPlayerinline
state_ncine::IAudioPlayerprotected
stop() overridencine::AudioStreamPlayervirtual
streamBufferSize() constncine::AudioStreamPlayerinline
sType() (defined in ncine::AudioStreamPlayer)ncine::AudioStreamPlayerinlinestatic
type() constncine::Objectinline
type_ncine::Objectprotected
updateState() overridencine::AudioStreamPlayervirtual
velocity() constncine::IAudioPlayerinline
velocity_ncine::IAudioPlayerprotected
~AudioStreamPlayer() override (defined in ncine::AudioStreamPlayer)ncine::AudioStreamPlayer
~IAudioPlayer() override (defined in ncine::IAudioPlayer)ncine::IAudioPlayer
~Object()ncine::Objectvirtual
+ + + + diff --git a/master/classncine_1_1_audio_stream_player.html b/master/classncine_1_1_audio_stream_player.html new file mode 100644 index 0000000000..823b72bdf7 --- /dev/null +++ b/master/classncine_1_1_audio_stream_player.html @@ -0,0 +1,580 @@ + + + + + + + +nCine: ncine::AudioStreamPlayer Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::AudioStreamPlayer Class Reference
+
+
+ +

Audio stream player class. + More...

+ +

#include <AudioStreamPlayer.h>

+
+Inheritance diagram for ncine::AudioStreamPlayer:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for ncine::AudioStreamPlayer:
+
+
Collaboration graph
+ + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

AudioStreamPlayer ()
 Default constructor.
 
AudioStreamPlayer (const char *bufferName, const unsigned char *bufferPtr, unsigned long int bufferSize)
 A constructor creating a player from a named memory buffer.
 
AudioStreamPlayer (const char *filename)
 A constructor creating a player from a file.
 
AudioStreamPlayer (AudioStreamPlayer &&)=default
 Default move constructor.
 
+AudioStreamPlayeroperator= (AudioStreamPlayer &&)=default
 Default move assignment operator.
 
+bool loadFromMemory (const char *bufferName, const unsigned char *bufferPtr, unsigned long int bufferSize)
 
+bool loadFromFile (const char *filename)
 
+unsigned int bufferId () const override
 Returns the OpenAL id of the currently playing buffer.
 
+int bytesPerSample () const override
 Returns the number of bytes per sample.
 
+int numChannels () const override
 Returns the number of audio channels of the currently playing buffer.
 
+int frequency () const override
 Returns the samples frequency of the currently playing buffer.
 
+unsigned long int numSamples () const override
 Returns the number of samples.
 
+float duration () const override
 Returns the duration in seconds.
 
+unsigned long bufferSize () const override
 Returns the size of the currently playing buffer in bytes.
 
+unsigned long int numSamplesInStreamBuffer () const
 Returns the number of samples in the streaming buffer.
 
+int streamBufferSize () const
 Returns the size of the streaming buffer in bytes.
 
+unsigned long int sampleOffsetInStream () const
 Returns the sample offset relative to the whole stream.
 
+void play () override
 Starts playing.
 
+void pause () override
 Pauses playing.
 
+void stop () override
 Stops playing and rewinds.
 
+void updateState () override
 Updates the player state and the stream buffer queue.
 
- Public Member Functions inherited from ncine::IAudioPlayer
IAudioPlayer (ObjectType type, const char *name)
 
IAudioPlayer (ObjectType type)
 
IAudioPlayer (IAudioPlayer &&)=default
 Default move constructor.
 
+IAudioPlayeroperator= (IAudioPlayer &&)=default
 Default move assignment operator.
 
+bool hasSource () const
 Returns true if a valid OpenAL source is currently assigned to the player.
 
+unsigned int sourceId () const
 Returns the OpenAL id of the player source.
 
+int sampleOffset () const
 Returns the playback position expressed in samples.
 
+void setSampleOffset (int offset)
 Sets the playback position expressed in samples.
 
+bool isSourceLocked () const
 Returns true if the OpenAL source is locked.
 
void setSourceLocked (bool sourceLocked)
 Locks an OpenAL source so it is not released to the pool when the player stops. More...
 
+PlayerState state () const
 Returns the state of the player.
 
+bool isPlaying () const
 Returns true if the player is playing.
 
+bool isPaused () const
 Returns true if the player is paused.
 
+bool isStopped () const
 Returns true if the player is stopped.
 
+bool isLooping () const
 Returns the looping property of the player.
 
+void setLooping (bool isLooping)
 Sets the looping property of the player.
 
+float gain () const
 Returns the player gain value.
 
+void setGain (float gain)
 Sets the player gain value.
 
+float pitch () const
 Returns the player pitch value.
 
+void setPitch (float pitch)
 Sets the player pitch value.
 
+Vector3f position () const
 Returns the player position vector.
 
+void setPosition (const Vector3f &position)
 Sets the player position vector.
 
+void setPosition (float x, float y, float z)
 Sets the player position vector through components.
 
+Vector3f velocity () const
 Returns the player velocity vector.
 
+void setVelocity (const Vector3f &velocity)
 Sets the player velocity vector.
 
+void setVelocity (float x, float y, float z)
 Sets the player velocity vector through components.
 
+Vector3f direction () const
 Returns the player direction vector.
 
void setDirection (const Vector3f &direction)
 Sets the player direction vector. More...
 
void setDirection (float x, float y, float z)
 Sets the player direction vector through components. More...
 
+float coneInnerAngle () const
 Returns the player inside angle of the sound cone in degrees.
 
+void setConeInnerAngle (float coneAngle)
 Sets the player inside angle of the sound cone in degrees.
 
+float coneOuterAngle () const
 Returns the player outside angle of the sound cone in degrees.
 
+void setConeOuterAngle (float coneAngle)
 Sets the player outside angle of the sound cone in degrees.
 
+float coneOuterGain () const
 Returns the player multiplication factor to determine the gain outside the cone.
 
+void setConeOuterGain (float gain)
 Sets the player multiplication factor to determine the gain outside the cone.
 
- Public Member Functions inherited from ncine::Object
Object (ObjectType type)
 Constructs an object with a specified type and adds it to the index.
 
Object (ObjectType type, const char *name)
 Constructs an object with a specified type and name and adds it to the index.
 
+virtual ~Object ()
 Removes an object from the index and then destroys it.
 
Object (Object &&other)
 Move constructor.
 
+Objectoperator= (Object &&other)
 Move assignment operator.
 
+unsigned int id () const
 Returns the object identification number.
 
+ObjectType type () const
 Returns the object type (RTTI)
 
+const char * name () const
 Returns the object name.
 
+void setName (const char *name)
 Sets the object name.
 
+ + + + + + + + + + + +

+Static Public Member Functions

+static ObjectType sType ()
 
- Static Public Member Functions inherited from ncine::Object
+static ObjectType sType ()
 Static method to return class type.
 
+template<class T >
static T * fromId (unsigned int id)
 Returns a casted pointer to the object with the specified id, if any exists.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ncine::IAudioPlayer
enum class  PlayerState { INITIAL = 0 +, PLAYING +, PAUSED +, STOPPED + }
 Player state.
 
- Public Types inherited from ncine::Object
enum class  ObjectType {
+  BASE = 0 +, TEXTURE +, SHADER +, SCENENODE +,
+  SPRITE +, MESH_SPRITE +, ANIMATED_SPRITE +, PARTICLE +,
+  PARTICLE_SYSTEM +, FONT +, TEXTNODE +, AUDIOBUFFER +,
+  AUDIOBUFFER_PLAYER +, AUDIOSTREAM_PLAYER +
+ }
 Object types.
 
- Static Public Attributes inherited from ncine::IAudioPlayer
+static const float MinGain = 0.0f
 
+static const float DefaultGain = 1.0f
 
+static const float MaxGain = 1.0f
 
+static const float MinPitch = 0.5f
 
+static const float DefaultPitch = 1.0f
 
+static const float MaxPitch = 2.0f
 
+static const float MinConeAngle = 0.0f
 
+static const float DefaultConeAngle = 360.0f
 
+static const float MaxConeAngle = 360.0f
 
+static const float MinConeOuterGain = 0.0f
 
+static const float DefaultConeOuterGain = 0.0f
 
+static const float MaxConeOuterGain = 1.0f
 
+static const float MinAirAbsorptionFactor = 0.0f
 
+static const float DefaultAirAbsorptionFactor = 0.0f
 
+static const float MaxAirAbsorptionFactor = 10.0f
 
+static const float MinRoomRolloffFactor = 0.0f
 
+static const float DefaultRoomRolloffFactor = 0.0f
 
+static const float MaxRoomRolloffFactor = 10.0f
 
+static const float MinConeOuterGainHF = 0.0f
 
+static const float DefaultConeOuterGainHF = 0.0f
 
+static const float MaxConeOuterGainHF = 1.0f
 
- Static Public Attributes inherited from ncine::Object
+static const unsigned int MaxNameLength = 128
 Maximum length for an object name.
 
- Protected Member Functions inherited from ncine::IAudioPlayer
+void applySourceProperties ()
 Applies source properties after registering a player.
 
- Protected Member Functions inherited from ncine::Object
Object (const Object &other)
 Protected copy constructor used to clone objects.
 
- Protected Attributes inherited from ncine::IAudioPlayer
+unsigned int sourceId_
 The OpenAL source id.
 
+bool sourceLocked_
 The flag indicating if an OpenAL source is locked and never released to the pool.
 
+PlayerState state_
 Current player state.
 
+bool isLooping_
 Looping status flag.
 
+float gain_
 Player gain value.
 
+float pitch_
 Player pitch value.
 
+Vector3f position_
 Player position in space.
 
+Vector3f velocity_
 Player velocity in space.
 
Vector3f direction_
 Player direction in space. More...
 
float coneInnerAngle_
 Inside angle of the sound cone in degrees. More...
 
float coneOuterAngle_
 Outside angle of the sound cone in degrees. More...
 
+float coneOuterGain_
 Multiplication factor to determine the gain outside the cone.
 
+float airAbsorptionFactor_
 Player air absorption factor value.
 
+float roomRooloffFactor_
 Player room rolloff factor value.
 
+float coneOuterGainHF_
 Player cone outer gain HF value.
 
+unsigned int effectSlotId_
 The OpenAL effect slot id to use when playing.
 
+unsigned int auxFilterId_
 The OpenAL auxiliary filter id to use when playing.
 
+unsigned int directFilterId_
 The OpenAL direct filter id to use when playing.
 
- Protected Attributes inherited from ncine::Object
+ObjectType type_
 Object type.
 
+

Detailed Description

+

Audio stream player class.

+

The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classncine_1_1_audio_stream_player__coll__graph.map b/master/classncine_1_1_audio_stream_player__coll__graph.map new file mode 100644 index 0000000000..d851a4a49b --- /dev/null +++ b/master/classncine_1_1_audio_stream_player__coll__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/master/classncine_1_1_audio_stream_player__coll__graph.md5 b/master/classncine_1_1_audio_stream_player__coll__graph.md5 new file mode 100644 index 0000000000..3c27657349 --- /dev/null +++ b/master/classncine_1_1_audio_stream_player__coll__graph.md5 @@ -0,0 +1 @@ +7593c7e8b6a33678270c1b797a002795 \ No newline at end of file diff --git a/master/classncine_1_1_audio_stream_player__coll__graph.png b/master/classncine_1_1_audio_stream_player__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..5d6e4f1f197aac0ec78f0a37ae55764b03bb57be GIT binary patch literal 13077 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 U + + + + diff --git a/master/classncine_1_1_audio_stream_player__inherit__graph.md5 b/master/classncine_1_1_audio_stream_player__inherit__graph.md5 new file mode 100644 index 0000000000..1f79bcee37 --- /dev/null +++ b/master/classncine_1_1_audio_stream_player__inherit__graph.md5 @@ -0,0 +1 @@ +5eeaafd0ac42ce2d5caeca7caceb495a \ No newline at end of file diff --git a/master/classncine_1_1_audio_stream_player__inherit__graph.png b/master/classncine_1_1_audio_stream_player__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..0af6545e27a9cd7f78ac127250c59cb1bc82b613 GIT binary patch literal 6619 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 literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_base_sprite-members.html b/master/classncine_1_1_base_sprite-members.html new file mode 100644 index 0000000000..9530d4f255 --- /dev/null +++ b/master/classncine_1_1_base_sprite-members.html @@ -0,0 +1,273 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::BaseSprite Member List
+
+
+ +

This is the complete list of members for ncine::BaseSprite, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
aabb() constncine::DrawableNodeinline
aabb_ncine::DrawableNodeprotected
AabbBit enum value (defined in ncine::SceneNode)ncine::SceneNodeprotected
absAlpha() constncine::SceneNodeinline
absAnchorPoint() constncine::SceneNodeinline
absColor() constncine::SceneNodeinline
absColor_ncine::SceneNodeprotected
absHeight() constncine::DrawableNodeinlinevirtual
absLayer() constncine::SceneNodeinline
absLayer_ncine::SceneNodeprotected
absPosition() constncine::SceneNodeinline
absPosition_ncine::SceneNodeprotected
absRotation() constncine::SceneNodeinline
absRotation_ncine::SceneNodeprotected
absScale() constncine::SceneNodeinline
absScaleFactor_ncine::SceneNodeprotected
absSize() constncine::DrawableNodeinline
absWidth() constncine::DrawableNodeinlinevirtual
addChildNode(SceneNode *childNode)ncine::SceneNode
alpha() constncine::SceneNodeinline
AnchorBottomLeft (defined in ncine::DrawableNode)ncine::DrawableNodestatic
AnchorBottomRight (defined in ncine::DrawableNode)ncine::DrawableNodestatic
AnchorCenter (defined in ncine::DrawableNode)ncine::DrawableNodestatic
anchorPoint() constncine::DrawableNodeinline
anchorPoint_ncine::SceneNodeprotected
AnchorTopLeft (defined in ncine::DrawableNode)ncine::DrawableNodestatic
AnchorTopRight (defined in ncine::DrawableNode)ncine::DrawableNodestatic
BaseSprite(BaseSprite &&)=defaultncine::BaseSprite
BaseSprite(SceneNode *parent, Texture *texture, float xx, float yy)ncine::BaseSpriteprotected
BaseSprite(SceneNode *parent, Texture *texture, const Vector2f &position)ncine::BaseSpriteprotected
BaseSprite(const BaseSprite &other)ncine::BaseSpriteprotected
BlendingFactor enum namencine::DrawableNode
BlendingPreset enum namencine::DrawableNode
childOrderIndex() constncine::SceneNode
childOrderIndex_ncine::SceneNodeprotected
children()ncine::SceneNodeinline
children() constncine::SceneNodeinline
children_ncine::SceneNodeprotected
clone() constncine::SceneNodeinline
color() constncine::SceneNodeinline
color_ncine::SceneNodeprotected
ColorBit enum value (defined in ncine::SceneNode)ncine::SceneNodeprotected
deleteChildrenOnDestruction() constncine::SceneNodeinline
destBlendingFactor() constncine::DrawableNode
DirtyBitPositions enum namencine::SceneNodeprotected
dirtyBits_ncine::SceneNodeprotected
draw(RenderQueue &renderQueue) overridencine::DrawableNodevirtual
DrawableNode(SceneNode *parent, float xx, float yy)ncine::DrawableNode
DrawableNode(SceneNode *parent, const Vector2f &position)ncine::DrawableNode
DrawableNode(SceneNode *parent)ncine::DrawableNodeexplicit
DrawableNode()ncine::DrawableNode
DrawableNode(DrawableNode &&)ncine::DrawableNode
DrawableNode(const DrawableNode &other)ncine::DrawableNodeprotected
drawEnabled_ (defined in ncine::SceneNode)ncine::SceneNodeprotected
flippedX_ncine::BaseSpriteprotected
flippedY_ncine::BaseSpriteprotected
fromId(unsigned int id)ncine::Objectstatic
height() constncine::DrawableNodeinlinevirtual
height_ncine::DrawableNodeprotected
id() constncine::Objectinline
instanceBlock_ (defined in ncine::BaseSprite)ncine::BaseSpriteprotected
isBlendingEnabled() constncine::DrawableNode
isDrawEnabled() constncine::SceneNodeinline
isEnabled() constncine::SceneNodeinline
isFlippedX() constncine::BaseSpriteinline
isFlippedY() constncine::BaseSpriteinline
isUpdateEnabled() constncine::SceneNodeinline
lastFrameRendered() constncine::DrawableNodeinline
lastFrameRendered_ncine::DrawableNodeprotected
lastFrameUpdated() constncine::SceneNodeinline
lastFrameUpdated_ncine::SceneNodeprotected
layer() constncine::SceneNodeinline
layer_ncine::SceneNodeprotected
localMatrix() constncine::SceneNodeinline
localMatrix_ncine::SceneNodeprotected
MaxNameLengthncine::Objectstatic
MinRotationncine::SceneNodestatic
move(float x, float y)ncine::SceneNodeinline
move(const Vector2f &position)ncine::SceneNodeinline
moveX(float x)ncine::SceneNodeinline
moveY(float y)ncine::SceneNodeinline
name() constncine::Object
Object(ObjectType type)ncine::Objectexplicit
Object(ObjectType type, const char *name)ncine::Object
Object(Object &&other)ncine::Object
Object(const Object &other)ncine::Objectprotected
ObjectType enum namencine::Object
operator=(BaseSprite &&)=defaultncine::BaseSprite
ncine::DrawableNode::operator=(DrawableNode &&)ncine::DrawableNode
ncine::SceneNode::operator=(SceneNode &&other)ncine::SceneNode
ncine::SceneNode::operator=(const SceneNode &)=deletencine::SceneNodeprotected
ncine::Object::operator=(Object &&other)ncine::Object
parent() constncine::SceneNodeinline
parent()ncine::SceneNodeinline
parent_ncine::SceneNodeprotected
position() constncine::SceneNodeinline
position_ncine::SceneNodeprotected
removeAllChildrenNodes()ncine::SceneNode
removeChildNode(SceneNode *childNode)ncine::SceneNode
removeChildNodeAt(unsigned int index)ncine::SceneNode
renderCommand_ncine::DrawableNodeprotected
resetTexture()ncine::BaseSprite
rotation() constncine::SceneNodeinline
rotation_ncine::SceneNodeprotected
scale() constncine::SceneNodeinline
scaleFactor_ncine::SceneNodeprotected
SceneNode(SceneNode *parent, float x, float y)ncine::SceneNode
SceneNode(SceneNode *parent, const Vector2f &position)ncine::SceneNode
SceneNode(SceneNode *parent)ncine::SceneNodeexplicit
SceneNode()ncine::SceneNode
SceneNode(SceneNode &&other)ncine::SceneNode
SceneNode(const SceneNode &other)ncine::SceneNodeprotected
setAbsAnchorPoint(float x, float y)ncine::SceneNodeinline
setAbsAnchorPoint(const Vector2f &point)ncine::SceneNodeinline
setAlpha(unsigned char alpha)ncine::SceneNodeinline
setAlphaF(float alpha)ncine::SceneNodeinline
setAnchorPoint(float xx, float yy)ncine::DrawableNode
setAnchorPoint(const Vector2f &point)ncine::DrawableNodeinline
setBlendingEnabled(bool blendingEnabled)ncine::DrawableNode
setBlendingFactors(BlendingFactor srcBlendingFactor, BlendingFactor destBlendingFactor)ncine::DrawableNode
setBlendingPreset(BlendingPreset blendingPreset)ncine::DrawableNode
setColor(Color color)ncine::SceneNodeinline
setColor(Colorf color)ncine::SceneNodeinline
setColor(unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha)ncine::SceneNodeinline
setColorF(float red, float green, float blue, float alpha)ncine::SceneNodeinline
setDeleteChildrenOnDestruction(bool shouldDeleteChildrenOnDestruction)ncine::SceneNodeinline
setDrawEnabled(bool drawEnabled)ncine::SceneNodeinline
setEnabled(bool isEnabled)ncine::SceneNodeinline
setFlippedX(bool flippedX)ncine::BaseSprite
setFlippedY(bool flippedY)ncine::BaseSprite
setLayer(uint16_t layer)ncine::SceneNodeinline
setLocalMatrix(const Matrix4x4f &localMatrix)ncine::SceneNodeinline
setName(const char *name)ncine::Object
setParent(SceneNode *parentNode)ncine::SceneNode
setPosition(float x, float y)ncine::SceneNodeinline
setPosition(const Vector2f &position)ncine::SceneNodeinline
setPositionX(float x)ncine::SceneNodeinline
setPositionY(float y)ncine::SceneNodeinline
setRotation(float rotation)ncine::SceneNodeinline
setScale(float scaleFactor)ncine::SceneNodeinline
setScale(float scaleFactorX, float scaleFactorY)ncine::SceneNodeinline
setScale(const Vector2f &scaleFactor)ncine::SceneNodeinline
setSize(float width, float height)ncine::BaseSprite
setSize(const Vector2f &size)ncine::BaseSpriteinline
setTexRect(const Recti &rect)ncine::BaseSprite
setTexture(Texture *texture)ncine::BaseSprite
setUpdateEnabled(bool updateEnabled)ncine::SceneNodeinline
setVisitOrderState(enum VisitOrderState visitOrderState)ncine::SceneNodeinline
setWorldMatrix(const Matrix4x4f &worldMatrix)ncine::SceneNodeinline
shaderHasChanged() overridencine::BaseSpriteprotectedvirtual
shouldDeleteChildrenOnDestruction_ncine::SceneNodeprotected
size() constncine::DrawableNodeinline
SizeBit enum value (defined in ncine::SceneNode)ncine::SceneNodeprotected
srcBlendingFactor() constncine::DrawableNode
sType() (defined in ncine::SceneNode)ncine::SceneNodeinlinestatic
swapChildPointer(SceneNode *first, SceneNode *second)ncine::SceneNodeprotected
swapChildrenNodes(unsigned int firstIndex, unsigned int secondIndex)ncine::SceneNode
swapNodeBack()ncine::SceneNode
swapNodeForward()ncine::SceneNode
texRect() constncine::BaseSpriteinline
texRect_ncine::BaseSpriteprotected
texture() constncine::BaseSpriteinline
texture_ncine::BaseSpriteprotected
TextureBit enum value (defined in ncine::SceneNode)ncine::SceneNodeprotected
textureHasChanged(Texture *newTexture)=0ncine::BaseSpriteprotectedpure virtual
transform() (defined in ncine::SceneNode)ncine::SceneNodeprotectedvirtual
TransformationBit enum value (defined in ncine::SceneNode)ncine::SceneNodeprotected
type() constncine::Objectinline
type_ncine::Objectprotected
unlinkChildNode(SceneNode *childNode)ncine::SceneNode
update(float interval)ncine::SceneNodevirtual
updateAabb()ncine::DrawableNodeprotectedvirtual
updateCulling()ncine::DrawableNodeprotected
updateEnabled_ (defined in ncine::SceneNode)ncine::SceneNodeprotected
updateRenderCommand() overridencine::BaseSpriteprotectedvirtual
visit(RenderQueue &renderQueue, unsigned int &visitOrderIndex)ncine::SceneNodevirtual
visitOrderIndex() constncine::SceneNodeinline
visitOrderIndex_ncine::SceneNodeprotected
visitOrderState() constncine::SceneNodeinline
VisitOrderState enum name (defined in ncine::SceneNode)ncine::SceneNode
visitOrderState_ncine::SceneNodeprotected
width() constncine::DrawableNodeinlinevirtual
width_ncine::DrawableNodeprotected
withVisitOrder_ncine::SceneNodeprotected
worldMatrix() constncine::SceneNodeinline
worldMatrix_ncine::SceneNodeprotected
~DrawableNode() override (defined in ncine::DrawableNode)ncine::DrawableNode
~Object()ncine::Objectvirtual
~SceneNode() overridencine::SceneNode
+ + + + diff --git a/master/classncine_1_1_base_sprite.html b/master/classncine_1_1_base_sprite.html new file mode 100644 index 0000000000..73d595b5e2 --- /dev/null +++ b/master/classncine_1_1_base_sprite.html @@ -0,0 +1,960 @@ + + + + + + + +nCine: ncine::BaseSprite Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::BaseSprite Class Referenceabstract
+
+
+ +

The base class for sprites. + More...

+ +

#include <BaseSprite.h>

+
+Inheritance diagram for ncine::BaseSprite:
+
+
Inheritance graph
+ + + + + + + + + + +
[legend]
+
+Collaboration diagram for ncine::BaseSprite:
+
+
Collaboration graph
+ + + + + + + + + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

BaseSprite (BaseSprite &&)=default
 Default move constructor.
 
+BaseSpriteoperator= (BaseSprite &&)=default
 Default move assignment operator.
 
+void setSize (float width, float height)
 Sets the sprite size.
 
+void setSize (const Vector2f &size)
 Sets the sprite size with a Vector2f
 
+const Texturetexture () const
 Gets the texture object.
 
void setTexture (Texture *texture)
 Sets the texture object. More...
 
void resetTexture ()
 Triggers a texture update without setting a new texture. More...
 
+Recti texRect () const
 Gets the texture source rectangle for blitting.
 
+void setTexRect (const Recti &rect)
 Sets the texture source rectangle for blitting.
 
+bool isFlippedX () const
 Returns true if the sprite texture is horizontally flipped.
 
+void setFlippedX (bool flippedX)
 Flips the texture rect horizontally.
 
+bool isFlippedY () const
 Returns true if the sprite texture is vertically flipped.
 
+void setFlippedY (bool flippedY)
 Flips the texture rect vertically.
 
- Public Member Functions inherited from ncine::DrawableNode
DrawableNode (SceneNode *parent, float xx, float yy)
 Constructor for a drawable node with a parent and a specified relative position.
 
DrawableNode (SceneNode *parent, const Vector2f &position)
 Constructor for a drawable node with a parent and a specified relative position as a vector.
 
DrawableNode (SceneNode *parent)
 Constructor for a drawable node with a parent and positioned in the relative origin.
 
DrawableNode ()
 Constructor for a drawable node with no parent and positioned in the origin.
 
DrawableNode (DrawableNode &&)
 Default move constructor.
 
+DrawableNodeoperator= (DrawableNode &&)
 Default move assignment operator.
 
+bool draw (RenderQueue &renderQueue) override
 Updates the draw command and adds it to the queue.
 
+virtual float width () const
 Returns the width of the node area.
 
+virtual float height () const
 Returns the height of the node area.
 
+Vector2f size () const
 Returns the size of the node area.
 
+virtual float absWidth () const
 Returns the absolute width of the node area.
 
+virtual float absHeight () const
 Returns the absolute height of the node area.
 
+Vector2f absSize () const
 Returns the absolute size of the node area.
 
+Vector2f anchorPoint () const
 Gets the transformation anchor point.
 
void setAnchorPoint (float xx, float yy)
 Sets the transformation anchor point. More...
 
+void setAnchorPoint (const Vector2f &point)
 Sets the transformation anchor point with a Vector2f
 
+bool isBlendingEnabled () const
 Returns true if the node renders with blending enabled.
 
+void setBlendingEnabled (bool blendingEnabled)
 Sets the blending state for node rendering.
 
+BlendingFactor srcBlendingFactor () const
 Returns the source blending factor.
 
+BlendingFactor destBlendingFactor () const
 Returns the destination blending factor.
 
+void setBlendingPreset (BlendingPreset blendingPreset)
 Sets a blending preset for source and destination blending factors.
 
+void setBlendingFactors (BlendingFactor srcBlendingFactor, BlendingFactor destBlendingFactor)
 Sets a specific source and destination blending factors.
 
+unsigned long int lastFrameRendered () const
 Returns the last frame in which any of the viewports have rendered this node (node was not culled)
 
+Rectf aabb () const
 Returns the axis-aligned bounding box of the node area in the last frame.
 
- Public Member Functions inherited from ncine::SceneNode
 SceneNode (SceneNode *parent, float x, float y)
 Constructor for a node with a parent and a specified relative position. More...
 
 SceneNode (SceneNode *parent, const Vector2f &position)
 Constructor for a node with a parent and a specified relative position as a vector. More...
 
 SceneNode (SceneNode *parent)
 Constructor for a node with a parent and positioned in the relative origin. More...
 
SceneNode ()
 Constructor for a node with no parent and positioned in the origin.
 
~SceneNode () override
 The destructor will delete every child node.
 
SceneNode (SceneNode &&other)
 Move constructor.
 
+SceneNodeoperator= (SceneNode &&other)
 Move assignment operator.
 
+SceneNode clone () const
 Returns a copy of this object.
 
+const SceneNodeparent () const
 Returns the parent as a constant node, if there is any.
 
+SceneNodeparent ()
 Returns the parent node, if there is any.
 
bool setParent (SceneNode *parentNode)
 Sets the parent node. More...
 
+const nctl::Array< SceneNode * > & children ()
 Returns the array of child nodes.
 
+const nctl::Array< const SceneNode * > & children () const
 Returns an array of constant child nodes.
 
bool addChildNode (SceneNode *childNode)
 Adds a node as a child of this one. More...
 
bool removeChildNode (SceneNode *childNode)
 Removes a child of this node, without reparenting nephews. More...
 
bool removeChildNodeAt (unsigned int index)
 Removes the child at the specified index, without reparenting nephews. More...
 
bool removeAllChildrenNodes ()
 Removes all children, without reparenting nephews. More...
 
bool unlinkChildNode (SceneNode *childNode)
 Removes a child of this node reparenting nephews as children. More...
 
unsigned int childOrderIndex () const
 Returns the child order index of this node or zero if it does not have a parent. More...
 
bool swapChildrenNodes (unsigned int firstIndex, unsigned int secondIndex)
 Swaps two children at the specified indices. More...
 
bool swapNodeForward ()
 Brings this node one node forward in the parent's list of children. More...
 
bool swapNodeBack ()
 Brings this node one node back in the parent's list of children. More...
 
+enum VisitOrderState visitOrderState () const
 Returns true if the node visit order is used together with the layer.
 
+void setVisitOrderState (enum VisitOrderState visitOrderState)
 Enables the use of the node visit order together with the layer.
 
+uint16_t visitOrderIndex () const
 Returns the visit drawing order of the node.
 
+virtual void update (float interval)
 Called once every frame to update the node.
 
+virtual void visit (RenderQueue &renderQueue, unsigned int &visitOrderIndex)
 Draws the node and visits its children.
 
+bool isUpdateEnabled () const
 Returns true if the node is updating.
 
+void setUpdateEnabled (bool updateEnabled)
 Enables or disables node updating.
 
+bool isDrawEnabled () const
 Returns true if the node is drawing.
 
+void setDrawEnabled (bool drawEnabled)
 Enables or disables node drawing.
 
+bool isEnabled () const
 Returns true if the node is both updating and drawing.
 
+void setEnabled (bool isEnabled)
 Enables or disables both node updating and drawing.
 
+Vector2f position () const
 Returns node position relative to its parent.
 
+Vector2f absPosition () const
 Returns absolute node position.
 
+void setPosition (float x, float y)
 Sets the node position through two coordinates.
 
+void setPosition (const Vector2f &position)
 Sets the node position through a vector.
 
+void setPositionX (float x)
 Sets the X coordinate of the node position.
 
+void setPositionY (float y)
 Sets the Y coordinate of the node position.
 
+void move (float x, float y)
 Moves the node based on two offsets.
 
+void move (const Vector2f &position)
 Adds a move vector to the node current position.
 
+void moveX (float x)
 Moves the node by an offset on the X axis.
 
+void moveY (float y)
 Moves the node by an offset on the Y axis.
 
+Vector2f absAnchorPoint () const
 Gets the absolute transformation anchor point in pixels.
 
+void setAbsAnchorPoint (float x, float y)
 Sets the absolute transformation anchor point in pixels.
 
+void setAbsAnchorPoint (const Vector2f &point)
 Sets the absolute transformation anchor point in pixels with a Vector2f
 
+const Vector2fscale () const
 Gets the node scale factors.
 
+const Vector2fabsScale () const
 Gets the node absolute scale factors.
 
+void setScale (float scaleFactor)
 Scales the node size both horizontally and vertically.
 
+void setScale (float scaleFactorX, float scaleFactorY)
 Scales the node size both horizontally and vertically.
 
+void setScale (const Vector2f &scaleFactor)
 Scales the node size both horizontally and vertically with a Vector2f
 
+float rotation () const
 Gets the node rotation in degrees.
 
+float absRotation () const
 Gets the node absolute rotation in degrees.
 
+void setRotation (float rotation)
 Sets the node rotation in degrees.
 
+Color color () const
 Gets the node color.
 
+Color absColor () const
 Gets the node absolute color.
 
+void setColor (Color color)
 Sets the node color through a Color object.
 
+void setColor (Colorf color)
 Sets the node color through a Colorf object.
 
+void setColor (unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha)
 Sets the node color through unsigned char components.
 
+void setColorF (float red, float green, float blue, float alpha)
 Sets the node color through float components.
 
+float alpha () const
 Gets the node alpha.
 
+float absAlpha () const
 Gets the node absolute alpha.
 
+void setAlpha (unsigned char alpha)
 Sets the node alpha through an unsigned char component.
 
+void setAlphaF (float alpha)
 Sets the node alpha through a float component.
 
+uint16_t layer () const
 Gets the node rendering layer.
 
uint16_t absLayer () const
 Gets the node absolute rendering layer. More...
 
void setLayer (uint16_t layer)
 Sets the node rendering layer. More...
 
+const Matrix4x4fworldMatrix () const
 Gets the node world matrix.
 
+void setWorldMatrix (const Matrix4x4f &worldMatrix)
 Sets the node world matrix (only useful when called inside onPostUpdate())
 
+const Matrix4x4flocalMatrix () const
 Gets the node local matrix.
 
+void setLocalMatrix (const Matrix4x4f &localMatrix)
 Sets the node local matrix.
 
bool deleteChildrenOnDestruction () const
 Gets the delete children on destruction flag. More...
 
+void setDeleteChildrenOnDestruction (bool shouldDeleteChildrenOnDestruction)
 Sets the delete children on destruction flag.
 
+unsigned long int lastFrameUpdated () const
 Returns the last frame in which any of the viewports have updated this node.
 
- Public Member Functions inherited from ncine::Object
Object (ObjectType type)
 Constructs an object with a specified type and adds it to the index.
 
Object (ObjectType type, const char *name)
 Constructs an object with a specified type and name and adds it to the index.
 
+virtual ~Object ()
 Removes an object from the index and then destroys it.
 
Object (Object &&other)
 Move constructor.
 
+Objectoperator= (Object &&other)
 Move assignment operator.
 
+unsigned int id () const
 Returns the object identification number.
 
+ObjectType type () const
 Returns the object type (RTTI)
 
+const char * name () const
 Returns the object name.
 
+void setName (const char *name)
 Sets the object name.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

BaseSprite (SceneNode *parent, Texture *texture, float xx, float yy)
 Protected constructor accessible only by derived sprite classes.
 
BaseSprite (SceneNode *parent, Texture *texture, const Vector2f &position)
 Protected constructor accessible only by derived sprite classes.
 
BaseSprite (const BaseSprite &other)
 Protected copy constructor used to clone objects.
 
+void shaderHasChanged () override
 Performs the required tasks upon a change to the shader.
 
+virtual void textureHasChanged (Texture *newTexture)=0
 Performs the required tasks upon a change to the texture.
 
+void updateRenderCommand () override
 Updates the render command.
 
- Protected Member Functions inherited from ncine::DrawableNode
+virtual void updateAabb ()
 Calculates updated values for the AABB.
 
+void updateCulling ()
 Called by each viewport update method to update a node culling state.
 
DrawableNode (const DrawableNode &other)
 Protected copy constructor used to clone objects.
 
- Protected Member Functions inherited from ncine::SceneNode
+SceneNodeoperator= (const SceneNode &)=delete
 Deleted assignment operator.
 
SceneNode (const SceneNode &other)
 Protected copy constructor used to clone objects.
 
void swapChildPointer (SceneNode *first, SceneNode *second)
 Swaps the child pointer of a parent when moving an object. More...
 
+virtual void transform ()
 
- Protected Member Functions inherited from ncine::Object
Object (const Object &other)
 Protected copy constructor used to clone objects.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+Texturetexture_
 The sprite texture.
 
+Recti texRect_
 The texture source rectangle.
 
+bool flippedX_
 A flag indicating if the sprite texture is horizontally flipped.
 
+bool flippedY_
 A flag indicating if the sprite texture is vertically flipped.
 
+GLUniformBlockCache * instanceBlock_
 
- Protected Attributes inherited from ncine::DrawableNode
+float width_
 Node width in pixel.
 
+float height_
 Node height in pixel.
 
+nctl::UniquePtr< RenderCommand > renderCommand_
 The render command class associated with this node.
 
+unsigned long int lastFrameRendered_
 The last frame any viewports rendered this node.
 
+Rectf aabb_
 Axis-aligned bounding box of the node area.
 
- Protected Attributes inherited from ncine::SceneNode
+bool updateEnabled_
 
+bool drawEnabled_
 
+SceneNodeparent_
 A pointer to the parent node.
 
+nctl::Array< SceneNode * > children_
 The array of child nodes.
 
unsigned int childOrderIndex_
 The order index of this node among its siblings. More...
 
bool withVisitOrder_
 When enabled the visit order is used to resolve the drawing order of same layer nodes. More...
 
+enum VisitOrderState visitOrderState_
 The visit order state of this node.
 
+uint16_t visitOrderIndex_
 The visit order index of this node.
 
+Vector2f position_
 The node relative position.
 
Vector2f anchorPoint_
 
+Vector2f scaleFactor_
 Horizontal and vertical scale factors for node size.
 
+float rotation_
 Degrees for clock-wise node rotation in degrees.
 
Color color_
 Node color for transparency and translucency. More...
 
uint16_t layer_
 The node rendering layer. More...
 
+Vector2f absPosition_
 Absolute position as calculated by the transform() function.
 
+Vector2f absScaleFactor_
 Absolute horizontal and vertical scale factors as calculated by the transform() function.
 
+float absRotation_
 Absolute node rotation as calculated by the transform() function.
 
+Color absColor_
 Absolute node color as calculated by the transform() function.
 
+uint16_t absLayer_
 Absolute node rendering layer as calculated by the transform() function.
 
+Matrix4x4f worldMatrix_
 World transformation matrix (calculated from local and parent's world)
 
+Matrix4x4f localMatrix_
 Local transformation matrix.
 
+bool shouldDeleteChildrenOnDestruction_
 A flag indicating whether the destructor should also delete all children.
 
+nctl::BitSet< uint8_t > dirtyBits_
 Bitset that stores the various dirty states bits.
 
+unsigned long int lastFrameUpdated_
 The last frame any viewport updated this node.
 
- Protected Attributes inherited from ncine::Object
+ObjectType type_
 Object type.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ncine::DrawableNode
enum class  BlendingPreset {
+  DISABLED +, ALPHA +, PREMULTIPLIED_ALPHA +, ADDITIVE +,
+  MULTIPLY +
+ }
 Presets for blending factors. More...
 
enum class  BlendingFactor {
+  ZERO +, ONE +, SRC_COLOR +, ONE_MINUS_SRC_COLOR +,
+  DST_COLOR +, ONE_MINUS_DST_COLOR +, SRC_ALPHA +, ONE_MINUS_SRC_ALPHA +,
+  DST_ALPHA +, ONE_MINUS_DST_ALPHA +, CONSTANT_COLOR +, ONE_MINUS_CONSTANT_COLOR +,
+  CONSTANT_ALPHA +, ONE_MINUS_CONSTANT_ALPHA +, SRC_ALPHA_SATURATE +
+ }
 OpenGL blending factors.
 
- Public Types inherited from ncine::SceneNode
enum class  VisitOrderState { ENABLED +, DISABLED +, SAME_AS_PARENT + }
 
- Public Types inherited from ncine::Object
enum class  ObjectType {
+  BASE = 0 +, TEXTURE +, SHADER +, SCENENODE +,
+  SPRITE +, MESH_SPRITE +, ANIMATED_SPRITE +, PARTICLE +,
+  PARTICLE_SYSTEM +, FONT +, TEXTNODE +, AUDIOBUFFER +,
+  AUDIOBUFFER_PLAYER +, AUDIOSTREAM_PLAYER +
+ }
 Object types.
 
- Static Public Member Functions inherited from ncine::SceneNode
+static ObjectType sType ()
 
- Static Public Member Functions inherited from ncine::Object
+static ObjectType sType ()
 Static method to return class type.
 
+template<class T >
static T * fromId (unsigned int id)
 Returns a casted pointer to the object with the specified id, if any exists.
 
- Static Public Attributes inherited from ncine::DrawableNode
+static const Vector2f AnchorCenter
 
+static const Vector2f AnchorBottomLeft
 
+static const Vector2f AnchorTopLeft
 
+static const Vector2f AnchorBottomRight
 
+static const Vector2f AnchorTopRight
 
- Static Public Attributes inherited from ncine::SceneNode
+static const float MinRotation = 0.5f
 The minimum amount of rotation to trigger a sine and cosine calculation.
 
- Static Public Attributes inherited from ncine::Object
+static const unsigned int MaxNameLength = 128
 Maximum length for an object name.
 
- Protected Types inherited from ncine::SceneNode
enum  DirtyBitPositions {
+  TransformationBit = 0 +, ColorBit = 1 +, SizeBit = 2 +, TextureBit = 3 +,
+  AabbBit = 4 +
+ }
 Bit positions inside the dirty bitset.
 
+

Detailed Description

+

The base class for sprites.

+
Note
Users cannot create instances of this class
+

Member Function Documentation

+ +

◆ resetTexture()

+ +
+
+ + + + + + + +
void ncine::BaseSprite::resetTexture ()
+
+ +

Triggers a texture update without setting a new texture.

+
Note
Use this method when the content of the currently assigned texture changes
+ +
+
+ +

◆ setTexture()

+ +
+
+ + + + + + + + +
void ncine::BaseSprite::setTexture (Texturetexture)
+
+ +

Sets the texture object.

+
Note
If you set a texture that is already assigned, this method would be equivalent to resetTexture()
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classncine_1_1_base_sprite__coll__graph.map b/master/classncine_1_1_base_sprite__coll__graph.map new file mode 100644 index 0000000000..b21b413204 --- /dev/null +++ b/master/classncine_1_1_base_sprite__coll__graph.map @@ -0,0 +1,16 @@ + + + + + + + + + + + + + + + + diff --git a/master/classncine_1_1_base_sprite__coll__graph.md5 b/master/classncine_1_1_base_sprite__coll__graph.md5 new file mode 100644 index 0000000000..ce7bc106b1 --- /dev/null +++ b/master/classncine_1_1_base_sprite__coll__graph.md5 @@ -0,0 +1 @@ +7c1f78508e854fba93c3fefdc6cc19c6 \ No newline at end of file diff --git a/master/classncine_1_1_base_sprite__coll__graph.png b/master/classncine_1_1_base_sprite__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..842a3ee9bf5e4aeecb91074f89c406b11c1c2cc3 GIT binary patch literal 75973 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%0D0HE+rZ>cosK1i-@B zEAAd0pN!6MR}^$dB6cveQHZ?>V1nBoY~ZeSet?pKUI;2WsNvInvCH&*Vb~`CjrcI+ z38KC3)+jT*`d~J)KXZ9e3$a#_k*iTQ;F2qzGk3t{Ee4GK?s|vW_3h0KDkni-C@Mft zbtCcz^aqga3bI4H0_xg_-(J9y1Sl5{u1D6^qhn*$GXybMm)rI*Fbx96;BNrk1c$;j zyS6(>Um>V3mR2f5iHSmt1T{5vFqunA(wldAuGLpfEftsajhG0i>RGmxry+m_T0uwt zRLIDL?b$g!Ey=-ATB+XTFjSl^8@@SK*$&w@P>R9d175mOn%G?5G)WsllnUx$P(Om; zk4Ogo0_;h~pPyLlQIE65o0^$H3Y|5@OF<~}L1(hop8D_5qx!l!kZpj>2Kd&SGnp_# z2rOMNI2gn)$gF!%WyxVdW5WlEKv?BuVIZ}ubrV5$LuC>9kN@PaXe zVb`l6c5D6*kdsfFQ63>Yz8k#D$0!?Ed(#%1mqvD0BKH^%+gXyoqzrZ9WDnGH5*O-r zJBGcJlYXGIAqxX{O8L1?b!^!|d&D$M->Udb$M@L@7#EEbT5R!2}+!(KheNFA-JwBvc-XUdhKG2L4tJ)A~ z#n=2Nfoe5g{q)Zrj6mZG%TUNRV@rZ}ss!maFnqdMLP+QkB4f_xWOS$qg+YlmH)-W3klYq+3U)Pw{L?)XXZi&ktPY@Nxnk>pgppVoAi(!+v{|ZuI zXXiBF;@C_laVf7CV}GeP6XNPFAaYbAh4(hp@-t6iq93#{G|*wv&@_RD3TD6V_uhN; zm>ROxAR-uU)fgCN3}=7=Fhd)#Qqm=SJ=fadBItwUYGBPzf;J)Qf(GJAAS(qjaS5nJ za|6ROMLpQyKaiC`{R*3M!^8l1ZL}AloddNA1c!mQ>R@eTZ5~EcY(c#V4gDwB2+#=% zxtN2X9VR0~`j*hS4kX$<232?%K4n`hb=vkNOdB-OF*yC&t0wcDDdd*IsBHdo-O{=D zQHDR-9^52VqBgu!-ZZ>pBvv|6A5HAg+KP0zRfZ~WUSf%^qL=lP`PWB!Z2I}>8QR+B z2KzVn6v&oOcL+B-M0&l|e~BDQ9*Qq}>z8Ws^%L~y-v0mYV%A z_XC@>r=j87>};4#XQ8Ydwf=M&dStNlL39bU|8-x!^uFammA?!SjD!IkjlNeAj*tfI zt+AD&`F)Qi4L@q=ATR`zF$Dx}UHZat09|f_LDY3t2Zh{%f?9Ag zz#-#WXHutMO!5JSP)SHMLaY&V5kGxCKD+QmMJz1pZH*?(t(_jMkF|d=>6qO?Bg2qm zutW1ChqSgx5Pd^u5gZ&0pEl@n34Tw=%xnhzFK~`;*aCQVUxuLwg>R@J? z1I>*dRG2d|GQv3wiXzAjfjO>qH09>aO?G|nVI&i{Jz%P>me0UHI47qmsJU;Dk+GDW z4H=ljlqT@!@!Y+OU+XySoBL_sO^gWf(S5ZaT0t1Q_D=XIicr?A1l)L2P0elC0HD=| z04Hd=;S9np*Ecf@IQTO(Ito+l6=A|BplP7ig{u8*0HT-R6xU&S4c4+J!tcO#s>fCo zHGsd$15XR;NyzttEJ+ZoLZC_dt5{4=$Os z{H5Xb{h0e7bkq_qq*gD(=SqK=zPK9Qy}D{|Z4G(Ad4uP&71^n)&GrM#XD^>m&LEyc zOU;M{;pl({1;W5zkjiKI-0st?1*97gd(WTo^dL`$AY3vrPbWol>DkS0aAkndwx*^A z0=?@1JkZlis`~C*swKz30}&UJl1+t$STk!YUlVBXihAZGr_DS$w|jlpaB#N-l|#tF zP*hPQm`^}Kc{>6Hd>rG$C5n9~bBvf5O`n>YXqta$@ca}t>+JS{84>X2AqSNVY6gq(LLy(R_1w;b77Bz;0BE&iMb5>1m))z*&Y)0nPA;+cgA3!cjUtJ@svV{y`X$VPNnKk~d-h!QDwk zunZRoEaPZLv4kz;ni@VU(7{wy;Wrnl{tpX0Tejf=Z#k?R*luJ3w*?9 zct4QY0wPNN4<;fIxDQ3^&%ZKsL;$XUsU>pDi8xXYa>uT+PCgYBEQ9ly0HHa=^@0xE zTM!%#Nz-SLo1$N4ba1p|RkQ%*KZF8mv%H3r43^cEM$_vUYIoTBpgi(5(fQ}h>%~Mt zz-U-m85uary~NF6SiQ+0%zs~ici8BEO7g6iOu~mBk@f!l3xymWvOrq71ce`M&E^0P zJivx`0cDbxqE}>7lO!UmtV~UdJa6h=)pxjfFZVJp0qWfIYJj?6W2TuF5f5WLJU5IW zt_AJhi{RizOQu;n?E<0rr|&;8M++T)?t0F9wxIbA#KuWcoZnLUe{?hH4Vd3Lx}FZv zK5&Iyr8B||ZH60>#riiu!ldRt0b4SjUKZl|AP5TdeiDHon8{Im_VcFh;`A?T-WlJQ zuauY$Av_gg@Zd`G_w!SS&>#|$zp;X3h2E`cj$g7DBj)kH8KYp|Yb8S<3b`+tQ1&kr zZVT1jOH^Bz(!POJFsm=S`oAc94{)se{(txkp|Z0gGa;iPqbPf&%d(GrMV0b~l{X>jRWwKhn`>me(fUJvEor%(GYGPD}UC#$LkaXo#dU54-}lx0W) zKS8IY#!f;|R8q1lG%zx1+vH|?{+_~y)zHEM3w;LvLzKZD!XH$aa0f2!zxY|0Np9#p zaLr3!e8CU+`4j$1W7={XJ^lTA(sMM{><+V{<|hzj(}R|0z7V@*NR(iT`%KW$jz9ju z7s2xT^iSgsxCT_iI^Gg;M z91S)aF}0rt2l1h4Zk&fP;JJ^beRTyh+@{YvI}h^{f2dY=LPnHdR{Z$Tg92%kn-;|* ze)HcQ?E3mAaZ7T&QO(fHIruz^!m($b^Mh3s5Sfb?AD5L~!Ish2zbm8*;6~$Wyx##h zS(X54fQXD(^1x3C9U{I}l3dUxTnKZt)hF-NNd0(!O>fy=!uf78OFRx?v;hc{$?9@| z#Q4qIx0B-mlq7p79qeZBxPN=G9dmLcBcpY_)nhsKeH7cb!w-8HE~|Kg2XKRUy7f;kLHU{b58i31S_XC2u(DyCUZ-yoxgD(dC8uiEcZeeACM|lc z^X}0f5{?nvZ}54?J$%(8^u!_wCEOwi9l_ zq!%`~tl@xgQI7w_5z&`ph0+s99a;`lmR~(H9SiYjftG{)18%Uk-Qj{WA~w?>z50 zvxU0-bxX^4+Wnpv`0?{eGKs_iIP z_l27|BRE)ak#heeJ^%C_Inw-a>~nHW$&kf!8^uLiV?$~LLAmo;oJAtCymx?j3&QpQ z^Na%rPR;(+YmaZm*ajX(XsB=al@hC5lvQZ#eqW>{90O~BXmo)g4_rBg9x`;HpTm&^ z{hz)NQ=@)`+cpBx2o${-?66QO^_HLr!#Qbu{kCu z!o_8l%SG*m2Nt+dF}pDU2};b~3yak= zw{KACcXxGFBjW+lpqIUL`WthtSq;ygo&Wlr)cypKppsp-P9K1;BmU>J8H5Zuu4@S11O=qN*R)#w`;{czPI5ODEt{dq|XmN<$W zT{AP`v6uq%!>5oFq0Gy}5b2~kkom+{-j!LM)b_)~0w4_ZgJ)NDfqR@i8(&s7FOcpp z=G+GfebO0n!mHP>YinzNY;B;oxP9xEeq#nyxZjXK-uv<6^769L2aX)M%;vHqF4S3O zZS(W4l4m~spp2F`cmS7BOe&5Y`_$Tc;ONmS>npQtlGEc0iRV!}f%;E-?UBY^y)U+j z^eQD#r3nfW6Q9}GLXKfNkI~!f*RL^`85oe3mF3K{VCWrxigpQzsF%?Bo!3lOyITSs zSvIZTydv%B;9}q1N~uVoEHR?6ye2QLp?y$x<(n;1tFWUD3=Ls2ea5kyQlbor4PLMV zL396X-zYXLk|=U+koL-Tf6Z6ML;^G04Do~r{(WrNWw79beP~Ej*seok?$szdM3{wn zd9#iVr!cax+(ev~p6_a3c{xyoA7?Zj5oVRTt;EL192V*S@&yR!X8!~a`0VT-=$9aU z!uWEKR(3`HWjKzB%CfRSND#o@$Ep!??9TB@R$ckqgu__GssWi9-dIHh0*D=$-UT2S z9?MqNbJ`f{I?Mi#9}`ux!Ii)K_U-{x&BU46%!{IOEAs0{u1@x#*v5Gm1PT#a41lGu zf`6%^i4IdzQW9QP5)wr3W<4n*gLkPi%cun~@%Mffzs#D?OL@lPj}~z13S^P=Cs2}1 zgz4M4e`pZlkK3WJ_TY@g;_QooilCOGk#B_`9clc}6re zI3<}rU(EA=zMYJ4m`Z6|^O*~qzi9SGT$8UM&22PR4RI@|~%07}I;R z@**v+jG7v@7#V?Rs{Y134nM*iIK+||_f9kIoo*hj9Il>Eetx*KQkCw_8tE_jQE1jY z#qSH$u`86{dXbiH9NhQw&k4mngy2fwBWw9_tmAa*=}k>h)3T%oi|8nGs^qgL0#_#v zyEt!~D8zKo$!t4;-1`A5WlqpbpO^8JM;@jFK;|J(^;Rn4KR23N``xIWA{qVM8ZPQk z;GXnb64VUY6(TSF5(^Q3(xc@|vWTreF}GJ%d-R3H(tWnrO|o**Ej1&}!<0FG&*kwP zll3o((2ehj%lj!!AcO`J2$~9%WW4Wj)WZK47dzzFrr2Tt^Kdqy&~`98gnzH?;UOM= z4y`wyD8fj*=YK|5N?coT$>3O_{YrLy!Tp)RiNXG6Gsaf-5iAH+8{|L7(d({RQdvP|A7x z7#J|!Y)1GTFi3RTccKjTsSSLAW)614#0C)@s-fQA1jS4k=n}JaV{Wv5bHl&}@qw36 zlDK_Sbo_h~m?jR#Xbzcss@XoizOq4^d$qgl9UNd>9G2y9qW}|3GCYE7*yY&XxtYN- z(w3AtQbZ$1&<5Viu2Ct_o!A!By~otV#PQs@%bV*yb-hU1fExeMo%Ma()M1Jy)$aSR zaieQ(Ijyg`gbHPR+yPxBS|#lLS??1n65OPF94Leo=68_)R*mH(RVtC%@u02j%HOM5 z`4>J@JswUa%gptjLghPO*hifar@CiZQ^xE!ae5;^&Tt7_c4)?3Us!Z zFVYGYBv0e-#w)~sU=JC8dOGYNle5@jL#S@;&L+c*mxV<@>Ny$7bJVox`@kTT1a1aT zO#n#D%=VWqS?cI?4h-zPa$3G7CVai}waiTk?ia5 z4f*>@BqS48ADdPXi#I|rKp9+uhWh%(CMMemOEX`bFJ8pdEP8AX$qz&x3BellRwD7h z&MsG;8)=D`H8rDwepFWz6QyU*3{Q@#*A^BPZ6_GxS}wp012Vzv@850AUqB!S(raNs z0oqW4H6TZC$q}GgFixL9d4-`7YFJ2q@zq})ed=gQO_1kfkX!kB9n~FCvkX59@64Zg zw5!Zc_73=t80%qNhUOvw7ytkj$3i?2Sbwq-U{r{ZqMzTtXQ|%J%=`xIZ+?CrNGBNq z%Kh#R9iDnt2a3(>G@6HZhLK>+&5$cSzj;6Em62gJo*0 z0MEqY?n4Cs8@ov+xB!`d3&IUay8Y$joE);M;dkv@9n{%Rp3o8;oSh5v@-p=DyWQbk zp*f;n3j#DL0ngymz}vAG_GSG@T6_L{TjMLP{rwjuFHwA_#+1v~7m`tpT#Z9^=ifQ# zi5@@hgA2@cxM6hGn-GkS@^p%`>`)pX7&{^&X974Fvd-s^ITZe$)L@@;4uG?n|ErHx-owU*mcHm6{Q(pmiS^=r zC2l!1o;kk9b?PQVnJ%1e?7e40%3M7xi9=H120trQpQ~ReyMHTC%6IZ{Ry^+u;Lkql zQ?6;TpkzZn!M1SYfE*SPDbX3&EZQxUSeVD9=@ z)-k?dc8N7vL^jUJV&*t|FmG`1Hbw;x-EbD3%g($DE#tx-e}C`2A-^(gVct%qqU!+@ z5m2--Mg%|Y2Oz2uA(X3t!y!k+C=H?Y`3$I|`0uFi+_h^q@t8*Mxa`PG&#xHGL90F1 z<_z+L=lbfU46%D33-~pe`DpK39-N`24YRl%zWedhr#iJ>``!?EtP2Ci!eXf-BsUj2 z+9s$$aQUhr!X3MLBQ^C4+64f4v#~-LVBy=GQCIKmH3;OxV)DWMfYDi0WTc~u%a=Nz zD>p{CDcw;@LgtOe6+;zRo&({ss`I`KU<-!~xLwB8?xVn1UfImTUkAxcf7+W4<`flC ztLOro5KDTHmIjTP!lFeUn`=zSA=x}uXCdZt!yUg!shFlBRvhx3<0H#9=l3Ph{Gj^s zFohwalPr|LAOClO!tygWd~UYk6)iZnxe4*(upwxB!V4 zv#6;D1oy(ig$RW~l7>x*ZSQ!)^S58}hxH~0*I(ING9J~Aq6y1;$de;5A;4*4aogh> z+}kF|{MMF4)87Z-LIpZBFgTd&m5qf8I4G@=9WgqTIZ#z|{hpcOWMHtlbctvJ2TxtjE;=JTjVI~EdWo*I?zfI+n#tPyUX9-AD}sm z=iwVt>;DvETJ$W$nQN++6~G6W)(rP6_j=bRRFYqAp6@dnbLI@Rn47QreDr*2@w-;d zLA}S~lw~wwhaKV~BX0)2(Y+9(y{D5h^y_~&3a_h%6FNGzz7nAQT={uR2=WUOaGEwXGs88ogpugSo*rEH zE;uWJ3KD`5zkz~a6Yv|VW8m?xTolQ#XZBu}$D<`9nUFsG=WJ6tZ$qd}!TIl5uHOq> zCktHh4u_cR?q%O`BU5pMC zirn?rmY6TMln8~(G`rNO-nd5m)4R7@XH;l>(&u#$x#%oJ@Bge@V^~?O#Lz`Dy@hWo zrRjq>9lXZ$Pq_a5?Pd4VQvb@Kf+Uu(Z(0*ly5r=GZYtO1%c;U`f;P<4FF%fxSG*r6 z?ovn^BF`Og3n(}0hiXh|SqfSY-d{c)(A(DckXPYsr2H$jZ3M=n9Ong2o)a!`&B|%$ zw~l%{bL7wKm|kXC{X*Jrl9V}zG6TPhCsus4pC^m9dE)ak%B4uHbL`=pbkop<<6i^0 z$+9$^%6zn!?tUDbJ*m{be(z{&`N8>=pv&cPRsyTzg9jsy{PQ{J72@x!tKLmh^Q}qz zV%~S@`(xMfJm={g*XcYpN$>R0s(O{VKZS8~7evoX4l20PsHcaUi9TMtX_eUar0v_4 zp+AFWui)5xB=oKHXn{*F_m}OTX+!19NgE9p*1DqB&8Yjh*xuERpPT+1@+z3E^$AOb zL{yC-KfI|Iv5%y)syzk(}1TufS-;$bi>MGo!tsFIvL$MaYv%0Ha<)(KZNN%qs#{356uY zr#D($J#j-_mFls_glEk?u1@nu$!r6YNi|bmXJe)xiRN1|CQ(1s`t&PfL7j)JyS7RG zw2$8xEC0bRk7iAGk{wA)@xosWSz6}z>d4Fd3HY*vmhfbYKzEkAVxvHwW6;g>6RZj;~`bl2zXi;J|73^C` zb3JnG-2?mleaoALDS{2d3)ZJ+GfwfJuNrt>P8VyrlRUX?V9Nb(ke}br*{~u868a?H zmfnkp4N7YAQzn(3#sshiarnO=+9+D z$}8SVU1a5Ce9gTtoTB-aO5-4x9CyHt5C;nK?b|n|thR(iMJuYRCMHQ zCNO(51f|hwyAuW$(#>#_i8b3dJy#Zi&6~xO#|n{znNVm^!mlDG z#e(YFVq1Ed6{QVoe{CoDNI2&4O#+W)Y=|i{5Nw*QiPm8hqv#d_j&+!$F2K`33X&sATtEB2f zdg@-1D2uR-Q z9xxp}8sOve7qvTPO@N*V1l+h1l9Irg(ALgu9#Qb!#Vebf`sVNaMQUA&J+p_{aix;Q zF%Pv+(;QvC-x@2Nb0m`k&!Hx`lDzA~$UX%EeV!{-#yqk}L(BxxXj zkkEvY7v?kCd<+<#U4BXX`t$nlwWR+XCq;ik*Fp$>kO_J=$*-mmrJ+NMja)_YVfR0t zxROqJMYP4LPfAy;*74p*3-8s&bGT5S>)f&ub}C}1ytiwRO-1&b#`i0ek7RsFS=HP z>63+p1#Alc0yqo}B_qgNTYrUkG(!2i8dpG0_J?haK_=(-2{fSLegX6J;wv zjhW%b;g%MD85uut2GJ?k)co0Kmw!IGd$&tr2F(dueB3=cf2LIGoOr4?EbUyl$wc`KT7F}4!Z?;VqgZSB3;UrGw>8Q9UO@;eMewr z56^J~$06JNKlEO(|3c-68jG2M0f{$1Mn@~qo#SZWrc-aEU^*ulwOH`Vd|8U=W8>(R zLS+V?odkKx;1`{lN3MpMN9r}sHl^M^S$y90QND4kPpSJScVP!In!P$l?!}v@T&~l2 zl}MF#UiIPCY5yCs!j6Itg>9$+cd+f+ezp2UBwb3->y#Hde?-SP2t&mPbDeKD@N*VP?VFzrB0co@Z+z zbZ`8)FDYFKD)tL#P(`a)-$jFC>5crudX)#MI>_2k6N$|b{CfHBqZd;`Gp<4h{XUB@ zXRPEl?AYP;Raxcj@R;XNu1j#dSJCbHaH$`4GU6l@B&c^T3@4VQS7HSyZ6gHBE3yq$ zw)Tghw-I5`X}@~c*WI^Wg1xl!MUSRc>kJoJ_gb(giaC14w2@znt8(vqDE~4nJ5r@n z?kd=hsv&lphS_yNf$EvXYPLwaHJO|!niqw?jP;oPFT|LMj`T)&R|HWweCvy7xma1T z+9_Ysa6aQsv|OrFrqcO1$20Cv<`jMfMGSVni#JFsdw0fsp`vJ4j-R6|{gzMV&)(xS zmuAk7Z#5b}mk*G&dX*@iSSiK46WhI_dVRHV<-4c&S7E;@M-5&Q>045h$Lo1wwSbXQ zj&R_eHkZ8p+;)|WfpxFFtoLmbtK;uC)~&Zc(PDi@n)Vmx;jO-%-%@rxcp!Y0ur^5Y z>iOZ&Cl}>(I{AQOOEd159CVd=8>Pp-jbO`m2OqYKkKK5}G*CXZ+AJK=!_$%O7%@4^Q==?oztCX92~XH9Rd7Gx?i6% z87d_nalB`nYsjlyJI+2uWpzGRJcA}DNN2Wgv6a*Fs2M>g;VM~sTt>Z?JtrgEZq>o? z1*NYf6d`pfk!x$V$s+qG>X|)dgj#HAt4{Q{^T*L|U6m{_1tvU=3G&G-d@drkCt>WMg)ktwf}Xm;wzKK8?{9x@g`53{w$oskeoc_uh4eYpHaSB~Ey z&UB$8Uxr)ZKU!nHTRl;UNo>72^Oe*2P(lxD2pXDOdybDQ?4#?p+T-T=6`F7%hDe+# zx2>`S*;rYRfrkfD%`YMH5Rc=kw|%jA54cLXuMD3TY_wF?PoYj~w?|CIwP`d_$C^6@*b7(tXE*iXK$7C;iA&fa}?K*4t(NZzn?tt!#|n?;><_1((BC8q2h z%J8*pBHX#9{_4JvGo6C`OW=b7i8kAE|9x$Bk!DK*m zAAQ!}Dz*Z#XFsZB9Ly3AzI>xV%M<+2Cgd@PdXEC%3$F_|Pibk*X!UZ($`Zn_wY;e8 z?7GAGGF4ro#bwbZlt9P3jp;y;J)?NkHgfCli`zOd^(MO2x`=X5-iK;!+dhuL+4EQO zGxC)?(HIKSl|Kb*>yEr49m(95iPW7{|Au)!Z*i7xxjk+d7|xtI19k;A3&Mjw6LA~R z=n+p2KgIunjn~s5)&$BHaF5|6hPDucAOZoI_pnC`H~Iv}+iTo_cnHBzeuA$Jh-rqC zZDhm2nXd7K!PSX)DedK_JNT487x$^lA5?Rw3zEyhf8H^!5Z9$(`*ygxxF~ zX`6&$_UbiS^-w%=DP>Mgnd~(COgZfD<7kTtbV#SpH?$cJu zX*@d;tf^hU9r06dv}^hWk_>3hMvsk;pb$Xq1g9qdm2Woy!81~lq3*)Si%28`egYLA zC0T;%9Eyc}eJA+!D)X9vOY7~uf;lXN51{%1-UdwzR~Sa8_!X|f`1N%(yBaU`t0y&y zAI$sG;*HlnR!EcVxNMiS)TU2|3f_JBa2AaM?={!`+_5xDM?PHMDdxFTjGRE3+$>>I zHz{(-K-Jm8lAZrKr7~H9bsd|oRiwb@_ba1`RzQz*EiEr0bJ4|uJ76~%tMMJ`$8RL} zO>~R#7`-T*7^=&li(ua4wia>>(`=TVVII-}z}6w%0RbR7IvRP@;G?2)6crJ9*U@3v zTbY*!I9cugLgy+eneEI(!F(1oPY}?gTn0RT51k~)!x@s8OHMET>J)tV zORy$(ZS#-`c&fL#)d486O!o7@t~ZpM@)|dAT{t>oLL<0(yTS(AExC<__=2{Msre^C z8>e5s1$_kU@22RcVgpjKSe_3NEggT{xO0ZZ!ZgO(+y?c@%YJt}v=lv(RZ4@(Ls)3Mt zx0 z;6bgMZ#^Qw+Oha@FrqOkedl#FSRwL_0qebc|EWoJjEruy9=3bSXt0P<7767r9t<== zQZow)0n|$nAKgGGz+eTu1`Lo84*mvAIYg)@h(}Z&cJC>pJ*>RCM#VkBFwzncxlM7p zDnukBY{x`4STxYojesu)zBIPQoqKDmtHex#!-r!L0a;!BrQVO_kgKC((gcL z>Bwf6mlJFChks+<09Nkl>@JuNU;>S1E)Yx{C8d|3YAmM2A_jZ*gxt;MRpf_irJaau ze4lVOTWOu)ujJID$=j8ava3_ceO9lxhb)M$uAO~K4(wMmRayd?USO^MvRio2kS92} zx*8b_gHOQCZ4G}`NKe4!$E*bC!WsVE1fpXCMrfFQePa(s@rt4Q^^_1()Wm4ynn_jy zmxKJD_J}#eoTv3#<-BAHq*HGF&-IIu&=$$0v!jkp6fx=6UF_L+^&Uoztl;c``T1w= z;KIpxPlZe!tZR@2I``WQ#|#H;1)zDQA}2Mn2baXfxstSM0 ze{lhXjnbsAYAj_V!2+}zkdu&58+rrELmU#cv_YU@;RJ%;4XhK;JND=kSv5GV!Bv8U zJEfh5mNs$c7WlKE+4lGJh+pW~>zHXQqNS}(M27K}XBl$wk{E#DLWgqwoUyNO&F9?J zKnO1W-{*6fiR#X)sQmBYpkUO)oSetz)$Yi7SV=KIE+MWaBG0~SfXc=94wrRRv16*a zn{*kuli0!W;awpfQk^tpgkbRWp{oUT6?AemwQ8UVc^v{P0G{NyPeHWCw(b70x2C2B z!#HRG=a-hq31=Q0E6L5>J`iFW@|xZ*?QzXQYfAZ{(@vWsPG+f=p=tDyHhr|(ik`yH z%FI<%!eIJ=Il=M0T59_<1btzI4OR?Fmb{6q;^Ir7wquf6Dx-L^_5Xbwt&&vyeRykg z8R9`a;)gCO`g$fNc=~N1G7y?T$qIy{xyhgmvf?4@V%%wmVcuSvN9fq0Xn_$6P?p(+ z1#vMk0LMU83WN%!KivKZeM~R9et0$q!q@d2nF2xvA*ch)|4=)fMn65uNKSCE2nwhl zV`FOBU6AxbzX&-iw1AkI{|hNNZ6GG&o7R}!)99kKpY`SSZUYiO(UVWV)?MkEqN)$l zQ{oP|7UE2S0Bw_+Dr;-&r_7outQFtf%M~ysAPy z=-R*ZGS)ZS_SgGK1->zy`Mo@4(f2X0pa8NmSZHf&zrTNE+KwByZ5dTOD(Qcs4Myh2M?K)zJlFnfX$JeVWsY)8e|HVje*gL zdEFYlQrt35{Q*pvIy+g_csSyvz~g)sie_~9NK*#Y49u>}sWKBk9-Wh5z8S_1=)=v! z0}ci<4XKNqKN9SqHo@}3z3*}Pa(|@@ds^2cBYIfu*_XB2ie2NTBG1O;41VjY`PJ3O zH*fq0j!~486Z%j1xp0);DRIKREZru`f{uD z!-s4gL46?u-+cS6>g=(B=-=q*HJIQ2NNHCs z|IHzp*SVW5U26goWZeR+&pf$vwshyCyii?vePoIn?3^9s_&Kz&>6XjXo8|X=oOBQM zKd+$XiI)i|Fwo$_%>`tx%*ZQu^n#8WBqY#i^febheE1W$I#B~fNeKf%V%CzbZWjoH zdpUZKkIwz||7^i)%wtM#junegh z73>2OAv1FFUwEvBy(FhQ2ln6mx$8FnuC+B$-+~t66Kf+ru?tNY6kf|PAwvH@#X>5X zCI-K<)Bk=~2rxC+P@g@R{DCUiR8z`AMAE3 z>o}btE^TjZg>Vg-#XX?@_vm9XYF%RdOo^C33Rd|a>C(j`N$Jv2S*Q}Y0v5VZI?l%E zpSq9VfX+mP_fGd|&DDUV={*S=36oE;w#+F^0&J6H1Eg;@zin&#G3(t3FA=m%+ex;C zpDP_B9qs9SAmhAiX6sR2c9Ct@$j9!?=Chs^`U5)c(}pT)EPJV0mS{wMfA3Aq@|W=N z(7O>%{Nbbr;=pjzhCGsQX7|^zWp>9Dls#h+XpH3A8cRB2@@T^{jdMvXa6NtY$5!2P zn7aVkWto8?l6Vhi3Jd9pmj;F&g9j-&hThYON2Nq<|6Tl1L3*UPPZ!6qa#oP-Z>F7L zwsTvaUQB+8Mdp^42p7t|I+P#h8+3HN^Df+Ih&DNAAgU_6ZkG%N&c^yQe$^HK}Vm-M$ za!}&8QN64l2AtWgK7qKqZxc{^TzK`S`_v0d!tIFUAMz)u6lHxl{=_ux;Su( zI%I)KeZWv&CStH_wQ<1dicdxVdd=RzD@jeCQ=}Kwq?(h-&y;>NKPr|GK}XLav@M=M zuMKNQDP2y-Y~K3CnHt5D`{GLC)2gLtu-DvdwKC)HHw#sm_zx6!vWbD-EBCxp>;z<0d)#uMgDl7pt*5f&hkwfXBWth zvbO5`8oqAY@1=Q-%SPAK!(#zYcVs6M#r`Rq3;*Bj@xHsf;0%H;4qW{*94>TqCo8)B zdqBeJh35&}>4-LT-#?V~yrz|6t9|ua`wlt>%*Jug`haVLG(V8>O9e!kbmtpI;Ec{Uq!do-#RtNeqWbez*j!xnj>j750Yr*um3Fa?WZlyTY{}O(f*T?|XFe7% zzxV3yGEiiuW_f@cOp|$O*=(UF2AB0lc=g3A8IMIbUbgFIl2cwmwr$s^i{0~Gta%upuK0xHZYa2 z(dX|P@U1$-DDlGB$Rlx&A9>^i)}2CD<+AGqBkQl91PvOr__TkhR1Mg1lQys7_=(GY zRb%g;mX)0^F~*HeRO(;4Bnw{z4UL_I;Qzq34NDD*h2oxLy}k#lU}NKWW67ah;JHonVH!j)V-k3LRR6tQb(z);t+S^ zqxqF0k0Phpo*Z27MW+}KYBE2#eQ=t?VnILCJ~}L(jbws>`~gSa1?8UH-J}iW=~n{W zR!Gx@0ScO!SygPPyapYX|(E zIku;rT!Wl@WwP)It~%IADDd7v&zGD1A>&ZIVBlAC5A9{_i^Ksk$5gJj@3mQ^Pw(P(a}I@NoKb zYY>P(c6QRqd4KTXYV`X4_3Kkqn%Fzt{}9SsH-G0T_Ilg(HwJCt^iqpv>+M~|Jml03 z{{Xv*aUq@?{JT2*M5Z}R7w%@M%0B3!Q%?+bn5oBUbOPs(^RBI|`;%137r#q4_k7A{ z$zA?sW^Pk|ImO=e&XChcp48H583_qEPW}11_vAw}S{(}u7y#jxv@5HV=S~jhR=2Uq zS`Fno8S~`HZ&dCqBE}gmD!$w6#|Fn!8<`{af_6eeK;ntB89k+P+rrp}Jk>8F+EUWp z;S~Ev#xr~xeWN2P!&R*>SkvShG<*daS5z*;(ToLStS-iWK3$S|$KhP%^P@XZO6gkvXb z7tWPcUY&S39XGqT6&p^L@PwwI}5 zzXYTRO;3b(DX)iA2!Ar|O1t`S6;oj_SBHl3yf#05!XRQ$WAVaxWsS7{wcZ=#1BRGt zjsG9mMQPt{yg!)61D>1ks6p5lZqV7e|HYCGQajzz)^_&syZ=GqJs~W0(Eq=f!?Eox z*b_K^Px`O8<@0Oo2eC=u=+SwYhAGj(2*7GaFQ5@96}yb5NVMww!h%1X8{kz3FLijK z0Ssi6;yJ+h77`YEGM|lA2}|B77E@ha#EaTuBtJ0$u9_~H0tDvz0qjv47=BSI-`ljO z_&I!WWh$|z>C5fDeN;~`(Z&sL*AacgBS+B z19y*otd^>iHMg^~rk>yCxo^?OpPqK{!Iwd++w$BSY0v{e$$9S#{}c1-IW)zkTv#N) zifU_Wq|sl(DwFmjBPZu3T3e_Mm|0lX{{96AAV2>EAbxPOF>wYXRx*Wylk*_cCTR39 z0w{wm2jGKl#S&u>6<(YXtA|ooydV`YQ%KhMYZ~RF+h)EJ36$YlI7rI1?hiyFm+tc~(?K?vk;qKjT zg@ar!!sq0i??vdkOo;^xYB|?c{yB8!`jfry7kf6?6u1LO3G&dg7@Y#&^l3!}3P9Fy zd{)4Wvw!{9vw4)lr=fb>VjtEPhHadv=yn1a(rvA}rqxfM(h(4(b1U(OnG=wI?+x6@ zr&EYhK-nGd(&eo97|yXiRK3>o@Wq{aU|u1l6o2Mm;YFtK%=}>BacCUT=pL9<;*US8 zrYL-5dOz=Y+ zh#wV2+sU#5R(k`jH;c%5jJk(}s#)ixe|Q@x1*TL=bThIC)#M)f)!WZTd>U9v+suBs ztWS_-_1$)btn_XDX+vd$*cu{f;zCZtwU@`T9p$PQ=XRH27%On_;O%yMSQd~euu`dl zq9yd;6eTp7DtZgo+9!2-RP7UK@5{`*`E!w=+p%ql2!E z3F;&7H9+?5bP%67U{&4oEowO2HGs$>#?nrjc}_ zH6J6Q4igAM%jJ+2veL6dfhT z=74y~|F=4vZE27P6}ip%^RRaM0Sy1*8NOy*%^9aaYP%(864Aelt=@k|C;cx1=&W_Y!TB6_%rMmP1vhFXCsX?Mbsl2w} z(%6X!ZFB6$n1%z6_En^W!`lm$I>|Ur_+HDZjgI_K`s7_}`$lz#4W-N6k;Lu!LtFvQ zt_~DRjSD9Mv=-TUU8T%PLB{Z~1F^hRUbQkgVR+|4!O8q{L#sExz zxxXXv5KUuxOs%3aa@SwLR!FyJAb&&NWlNtYIqt!O&q-Sj(BK4H8*>eo+}S6Pztn13 zS>Qh#f19e5L-V&uG&wI*W7R!5=gX|FwlgX!zWudfxXy6z0}89h5sbPPb|PTOqxeO$ z35&{80DFId9hBHmgX-a?=;5v+v)4!{gJM2i`u@=pHBcD$Dxej10fh{UaaT2z|S>Tou6OZ-c812p{SwXP!c~huKD{% z*G?jr^tR>FyP?Y`E~KD(&0RRdp(sxl{hjk;p4`4mMw?kZzR#XVI5_W0x4b}hjV9dO zNCjRTX=#=U3eRy1K(-*zA7iUj0<8Og>QB0-jX5TZ&00@b8n_h-r#~Rp5f{|YoPoir zhO_fjdeCMy%)|T1SS_xl9if+%BpwV(zx^)$KE@?dxv-;(uv6eGJp-Ni^X>J!h?=1* zkyo5m0!f5xT{-?D46YV?0HK|jLm&kd`!i?E34J)k4_cWzhL4S(e{&NO7B<)cLoa_2 z$#Kg;Wsl8_@>O(g0?b6!Xf_o-2K4O!(18d|jgPB8`T(_z8NMIL>RmH6bb+Z6M*Hpx zUlhD3tl=^pGQ@*#;JgEQlv-LK-CZa##&X0_|J(Gh_%3%j%3g9jPPXo`AFsaNGCnVQ z@lIX6WlYvqnI0X1teps;6YvMV=$z2meObmdp;a`fTW=|+I_yjFg)^n>=g0R9ye^IP z5*(=!;sMG9=+V?lD_NY;@A751p#V_T+IC`HY3zJ*BZc;IsoAGrAWOYr7Ta)05-2## zs6_e4hXSnF{bw{acQY{5Xg6$0vnnx=givv>MsiTn9k##eB4ebN+{gFj=?fjI8H&oP zi1g`$W0ynE+E~c+9JZSn9N62Cf3x8S*}gS`(iK-HD{*#dMt2J);D7%TNmo8Ff9mci z==tAFD@~c~D@MBhjrl8qXVq`5Hzg@ihkl+5_Yc8<*N_o|Fw{177r4|j;n-pAn|aBio!>F#it+I4&L#O?8pffqkZmkuVHuMYnNM;GIqV^4f+ z6kgk8L=V|YZB;J6JI(ph$jpo?b5Ug<-J4MJ_y5+3YN&-BlaWE)#}-2k->@7Zz5{uCZk8bpTz_*(vz(P8I(ys8I4^I53Aq(WI zF$fRjj*X2RmPzr^+mzgXggcML(JbF9IP>c_qy3uABmp0aKc_Ic@89}j>FMQi&aaH@ zB|)eK!;QDSjv^QRt`UDcdl^c9l3X{xISKO^>CM(vtUK;nGdcQ1HRpmd8~8;6FR}`2!WYQ9 zY443$7N-PueED=r+c6BHfzt0zFMh8ryjUqlWy~ZP1$Bw`{lh%)X2O{Ew?IyOU?%*J zAR=7FCd9tQrHw($LCd=Fsi`&21I#z5*(;&Z#@J{1173nWcWMroEP0&ctJc>Px}qKg zk^wW{3M+?}*|$=O$F^AwUQM7E967aFTR;7=cl$Nf$cxt6`l0tuIBA)zE}4HVTuX^U zr}X)P*u&SgqR+-iqniR-tc<2Ct-jvc=+;W0rzAX`JL=#{FU7R1{Fn_7*Wmx?P5%GS zRj(X-fEzL?B?SkG2*UA_6W{;4u<;q}XHc*sjcs9Lc^IX2()^P!(-U*hBe>QfJkgmLy zMaNx#`PO&60L!e3O+K3bN4ZDcFS@wE^<@V^P}|jK#lX?8jFm}v53EbHp106&?J-?r zAMai}?Vllg`qZgNqIVHE8@ptF?>9*QXt-F~>s(x&{13Caiv9TH^9^~h(T~8=0LGE9 zeS>XLHbxX^Aib**4vHX0 z6M>lt8Za;`|A(cK+0d{_RLg%upfM(wdyd#B!;%h^X-q7_%`UmWgMOWx?$xVTkkMX3 zY6AWS*!_`_C>X@JuZ1`zpJw7_h&;Jyhpbxltw)IiAuu#X36;wDqUXx`3kgr>4yv?g zXTuGbzbP*s_+CGm6N_)KOKyJ-*W)*}hBvq=!-ckJRp<`S`dwJN9G*H&LtK6*wNXIB z_7TYO?b})~B#w#EhV5wDjTYDn^YYq!skurB2CxYSv$;7;6l`2w)6>%rv51;DjxH^E z!ps8{TJ#o#CNyc#{^9CE_8uBuu&3a=MM5BE2x0~gRtjFyXb+l|s)~vt^faZVB!mn> zCzws3u=eru6aLkOYoL!tf7rZ0p0?@9?g^a;X~vZ}h#nV$z%IRU_4eD!tUqKyT6Pu! zqaIvgpXFo@@W3Lcy#2`E4-cxOCbyC6?*Tt6R6WnT>+~-oTQ?-{e>Mwtz*H8_HdEzt zyiI#cq+KvvA|oNVeYn$Z|0A(mBp*;KQB$*1C8?XN0JINEMLq`5O;CC2FMi7WskhxX z_|-&zbAI&6J`Vi(4tFeFC_FjCDZ*^}xUN|Wsk}<`?%7UTwDZTuC^{;-tCXQZHSgZA zh2^n|2JHm<4~U0fh9E9vn5v2f?C?gvi&<2@BX4_JL8SkGRq$5KjErByR&vEp7yP$) zZvWRE`cspev)`{mHSZ*iQl3pRQK*wNc7c*Zvy6;b?A#5!M6u+0ct@VNcWUz)&gG() zH=G~W{Y;`xzUU;A+~M{}=iOEHnmMnIE$812Kav}kwnEbR=sZ7hvy)shY!-5AzFZNZ zVy5qQjnVNJQ^J5L%fL{93rB^%tBXpyfBMRQaslKSSsdy&O><`s4fI7B2u5kxDZNNL z$43_D9~hJ)m8d8$uSimt79+c=uGMioeOZ9_XKI=EULLDa+HQokdO~xnK?&{Kt;fg= z6bA2o-@fcJ{*%%t6WZHH;1yMp=nfiAAPr`KCFkFjm2%N@VyM76Zow1` zmc!D{7(wNOs*j~AB_Z*5ZH?=gTgJ`PeEj^EK0SR788+nAetuvLye*Oh;tL7j^icia zhY#4($BrK_GA>b+c0)RL>^;b9se=AfNv1*}Ar{ zcKwd2$9HkJ2fv`s^dSQJAXB})O_JgIXJ<;h;RVM%`O*G`%lqouuL=b;@e}0bvb%PK zeUm4!vW4q#-j9pxHp+H$*}&i${`3!VpTktEuy6_!Qkj`h^3JM)GO|R)va6!vLlJC4 zQy;j6)5KHPU;k+7zSj^+hGJ2n2F*(R~us z%vyyM!93@z$3kG0j1lhr<5&1^HWOPntdiVOu=~NV0u=_cIH;R1IXUqLrLzo}yo3`u zh9vL^1o{RgJf`7}e=!}iRhxawd6seUebDAnKE4t7DiYf$d{1Eb;81YV(aBTh=j9n! zUW74w651;OX3iKxwhWtafFuG@hD;Ul|i2k2;mPymHq4`Qr5J!h(JHe9xSHZN8dSi6@H%s@STB9@K; z>jNbYrZO2Y&1;gM=o3Q`4kH#E^_Vhoa&p2g(8E$wiL(||7;u5azdFU2dXVwW zyLS-PQtsRtx8?+&jhNS`L9bc)!-I$?DynJSRE$#tpd2RJ7~B(?nD8UHZfvNx7$FsX z;n#(u_XGYUezeW;yvqFW2x+hok>dpRRujCXPWWU^8{Kzi|Wgj)IvPk+B4U zFFd-yy99Ofyt(;j*w=t-H59OHfk!tb?L3h$jfeS7~10Fwzaq8Vm-iP3p}&? z%GE(x*sSt}8k@BC8;Be_^qV;QrR4%E4kF^?XuRPQrEh9FuptdcyHv~_#?Ho z^5WcEdv;TrOs>VjwO#Mz0J z%;;#%<*81GV{CgFJDL>YB8OKG7;7V5+?NYU=ksUk;N%?JD z{qbgRt-~`MY>;h~8b3w?JD7DA#3-5eA{~<)XP!7P#RH!~=xi%ET!x4nmkszr*;T zW2Jah0te*+d51EG9=#Wzw19n(qV72)yO($WEMMky))xdd_s|35ENQ{Mxi;MA> zU=_I=d3Zdcp)xT^ESx$X#gU&~*hR8=wB?18QKr$h{CoG9ak8L5Y}0_OkYn#&?-OZ{ zbJTVL83Ht(HWVhmw-|zZeECL1e1Fr-H&Md|DA-d)|Vfw5wz;Y4;DeCyJvJpCBA#1O^=kPr^f zD4L;iE44fQ`gLe5?0m3SVmQu2Eb|F7H<^1?)Y)ayE-$b1sPksc1hfV$1&rR+lstd& zOaceZ0yTfU4;-uTyD(ZK+7&k(FXY$P1GX7oV5fiC$;i&$_RS4OU60|7 z41Y%B)n`B4m+>7t`dYmnV{|FvRZ`;-sKIixSH^7gpvxQkGCK(vDkQcg3`SnG3mkj_ z86BcOI*JRA)hT8^vDD_=Dwt5HzF+&Cy7p5F8@Gtsx+MOlX z#MBgxq%RIy+(C#I!6ksp!A0uSAsBLlLk&CCg5u(##-PT}Cgg|REb4s|=)~;bv6@6C zCK>_i#E%P_zU5jC#4Ub_xEoNEz(C3W?`R?>sfe&G(~&Vt8on16){Ntjspe$AvI=_7Ari}I%h?clU?3PEN9Maze`5r@c(d9aCGohUpQA{F&48zF)^I!X*0JU7KU{ zJ-G>l4YD601fl1#Mb+YtB5_U6HTf7&%U%TOljwpBt3Z?(xx=1U>j|)D036zl224g~ z4b)h7zck1*F)~cYU)~I5;FGj;`a-;?mJYoQMSZEd@@>456NigpyMn zDnjX!5+8-!da2*|;~Rk>fY4qho)Ii-IJv-QZ$xER6Yk9RZ*KojUEdu~<^T78T2e_7 zg$PaAvLYgTWThw>*(;QckIg4hWUsQa_sGt!6d~DUluEM6ip<~h^!fho-+kZT@9#YN zqny)mo$FlJ`~7-7U(bO(6K<>vsQ1c5CABB;32=KfgLh?R1^Xd%iN`}0hjg})xt=<3 zbfr7@S7!n1QG(CG?_LDSqXFwQq1Rk%FZJCeb4P80?+W9&9J^Zg!~XUl62orK$jHd9 zfWR&!^cz){2)HT`m}0>Pd;k0F>=3rk(s}gHs2gxaU_^;#084dxwtqFJ=RpbhAQ;EA z{7MIT@ZwXdew(>1r^Kc~rQVmv_7!crMN0c|6gRw7i%1AvSYBEx>(Fa%d)n6|k9V^U z63r$?Z1SsrMHhburC{v3p2l@OJuWt4UKG*iD9G41w!J|d@21PZYe*g^A z0GY|nnK-u$xR%d|30qi*Dn|Zz|MY}a2J8YSCY-_W=u?E5S+(+Z=yE)O*nTdFu>5|r zUO@f%dDQubsW*OE;&frdXbLpA70l4Tk2No|YU#6P?0Ss7@pbt2HcwnM?m9trIF1o*3HYb^ z+1bdmK#W3#+5av;%5bPwlCU}j#Tu6Ps6qoj0UE@0DFy%$xEbO#$7wuZdg<#ctF28h ztyXxgkU(fNRA`adMp8Q(mBm>bb1jBT)qyE)^=|h9B22;=-ZGWJ=^UV3V?1O}081O| zufxw$npEiSH}BA-9TDo<+P4i2@ew4{uELr#HTBf9)~FhIR5^gUIX)a6O(#Jb)eQN~ zNpE!4Ws|bjBZGt55_0bDHO1P_B3OnW6>q}%X~6#Y(F0QzUqNLsRssWoftp%cEgW;Y zsRhh-s$72;<^D9Q4i4&)0|jMeNBrM*%vBsI zEGVFO1YknCBOT_kDJ_wPd|K(XMHSXh@O!eKMn##zTBsBxd2?v$;Bp4sxzZYTsDPSa z$7N)t_t!qV)n<3+%*MmoI?vd08V=teaN98-*g3`Nq6QAS``|7j3@9-S6-uBBBKS0tzH}0YhfL1zFmLn_>bD zI{s7MSb=3UzKx7TgoH51`JRnJ_X_|O)^{c*r-K^&0|RSZf7_Zy^xZB+xdN2O-2AL> z-3?3-k*a};WZ#a-imxyf1FfU8t?ehIW-!A+pp`?*eljuv>%kS|?UtY<=5VyNjpj4& zfOZEXF^GTQ$G-Yn4*aoWV(#peOY>hkHEO>1^sH;tJjwJ|xrC4XRgg)X(Tvq*W27kQ zC}Z`CDdao6m-9>eVm9?p%A>C>ZB8gB5_44|v#0ifeMQ?h# z#iR%tHq-Y{+NDQer3G;S)HDYU9Dujd45Qjd={mGWfL!KDT`_R;w!k)aCxJfTk+SVPg5Z2Rjtb8k3}*TKv0)Y<_KD=>5TXj;Reu+H z6Rx3d+*QQ}Z}*Ppar@n|5ffYxyJkaAYdw>eoS;Y`kde~h!aEhBI=^D%^eslEkn@@f zY1!hIJ6WjsSV&%!7u0YdE}}`n0bp6ZY<&RvkCm{7B04W2S`>_zi_eCFzV29j3cMV> z5UN@Xm(B1h+n}7WLqWsM&rWJw-s&QkXCin;7w#a?1n=Fw$GtL#S(@&BCM*jC5e{Cqp-Dc6-)v zBU}cZs^e!TSQVLK{ETtF+M8<-57&BR{M8|2>1ql@4k1d5fsq9jokwNzyiBxYCYl0w zkz{d3dT}6y1_e=-<81tYFNn5a2{L{-`3iQ*HE^0x69H(DeN1x~aW`PDx!3L?NRY|{ z)_IC(je0O0+^8=fIqhaPUG*l1krVC>tIsbUyd`(2tGI`n)VF-{RxJjz*b#S3?tq=b zjLm+{*M$)byYMr@A{$n>xNp>ZvE`qws#AAh+WUsh!lcja7WY9seM|1us<#XziaM%dH(Dr+RpPuTS z|Jcf%z)P}l{f3Ty(KMBtF?^faqAV7ok19S8SQ#N9veNFj<>P4+LK1El_8Vj0XhY#Oa>|B{`(8WhTSD6|;{Vg<9uE^Mr2XZW7ul}* z+eK|7UA&8(hrxd#e61BdH2S1Z1?w2e0rHyO`insF^o%Lnl^Rx)TI(-M1#u|<399Cj zBMY43j_23w#QT^RvpdA-`1W^^^<8KD=z$1>?q9|6X=%hrPOxYpzF^~F^}HlLD6z5X zq~>s?C0jr8PfdoexLdzgl}78NLDm-soewJfP2^Ii#>fo=bqo|p7FJ~=;5dgBRhd-C zeu64a`HVLtCjij~;D1g-gYY5n$rLOrDl0)Txcuy*j*1EwGjn26k^vfU%p$;Z17ety z`Kpzd%wB0ES3bLFZ|G!It;q?*H;$1%-u+tj6&uyXtpe7yD**|m-R5~Ao!TdiWm8&p$GwuZ4A7U%rrh2E|~;EH%pC~=`{oW;u8+B*BS&bNbV4t)k_{ZC+cbpO?p zi*6N|20?-cc1^jhF~nL}iLTh}5^uD&YB|#5KO}Oo*Guh0b}Z z&2lq|S;T`+&sDznx>QN_OJq&H|B zha^B9?C${>aOdt_W^Vv?3W_KbK#t+V3xL(j?+d|stuL&vX+Sa{lE+B+>E;6M4Enff zFT2W83d$-(jR?_y07Do71l%;RTqB4k{hWJ= zy+vAYyYrcI=dScISLOWBQv1rF`)a!4+uD8s5P%Lmk6@s9xexOTc%I?`tHe?cw4v+h z>(LPc(Hb8f2H$IDYN`rx8vFMP6@7we2jAnDi3x?|b`1M=zZx?3w9aBP+dNVF-qM$& z=F1MkU-Ekg&k#NEAtA26$j7QEO!F6%AjZ2p34oA&%X6*n=AvbYw&i@Z3zWABfYKuFP7;BhXfdx^LFX%zu*p+ zB=+xK+%L_ZcYPMQ`1-FDfs4Br`@_8bB4r9n_k@ZQRGp}t91`bWB~n_cFFEm?c>l>R zoB{UDOaMWy2FkIVRk8WDsUh}F$xyO1_K=rS!?%0lvwJM0gyi`Ti9Ju!r@7Wgr=XQ} z?)Tr(J(wynr=+S~Rttae^qga_eyhOL_1bkc_4Zbg{cb)ain-HUB}!d$>3i;Xm+UVe z9GcMC(bAB6%!ePtOE)u&IR0ze(?q^gH}Zw_m5}zU^Un(w^(EhioxZ!zcr3$wflkr- z7%A6qU%7%0iQAi_w#ugo(q?&w9_^&m*=N!ab-s3PX6CC|VON(ut@pt+^0@j0o+o^f zx$9wVbP5k*U6x)uhXkLo9`QFG`Jnjzw3|_G!pgRA%NO|}4K9aICl?d(gqOE?pD(;* zHfT$)Z2h2_=6a3YI%G_Xn?rO_rpo;GQdWFmd2DOT&rm6e#-dra22O#uNeXYxNBo;N z%~+KzGn%Nne(YVjmOItwv-NSft>8z7pps0ramNPj2jzQ@V}H;9^_B{MuFIZtgunL@ z-_pp|>DEf!n;Y7<=CWpRadh+jJVU;N(j_vs;4Xpim(vdR1M~>cfvgJwJudxsz-B_n z1!H_ERn_3_->&3@hf|G^Fj1)O)p=|>leN|_aCF}RQBlS3?tT$&nQ0~RBK<>BeO_eB z_PbhYr&zPznT0+)D_NR0PQx%M?_7VP__2>=W3Gzk?1mm&1)Wl}oKkZ}_R!ZB`=q}w z*pD|f(_CJ~QRSW)7pk#-XoGb%d#;K*`C6uqP718Z>L( zP%j(!cHxLBf4KL<2b7nup?eW*+IlcKGgE^-5U3HbeN@w6=;>(b>gh28wSqLu%;0Wq;HY^qjV3=|ZgNZ27? z365qCDwvFz^U=jAJKnkT5yOK;rZ-3@0h;;F`5i1B)YXw&efwx5(CM<zwe9i4#M7n+-?EoAb-x_cxeKw3m?iz7h1~_6$$s-+VsbTInK$TaIvxRL%XE z94Rqy3n~*(uF+z`8I5mvFB#co*bply06Sd%`BM&RDmgh|w-5dOlUcH4)lY$7|G(xD z|6}H6zPyMopGvxw$?U>u(guYE2eaXD3;8603!66MTk}DAFC%0#1 zWrb6Fvfi5DsdD%@PF^S8rkMOtuC2LNPeDpEy|0z~NvU1xB;jAa03}fY%turimgv6* z1kH2ShP~}lzjs4FZ3^3+52b=Wc8to-T8JJ%GfxS^%!`y6E(*f25g@PS6|x@)k3N6b z04m4c4Rjq4&Y_`GrGh1bvAKEU=z?)nB>7^aTYnF@FvRpRH{#p|ZG~SF!YW`Mf+$BO z4#bn3Vm^8P{0of7ZDuQ`t(vR=$&fNb5!zu}aQ(eO0UE(UdooD7kbKzY~y+MfZ8Wx4XuEAOX`ZBV9D9O`^1|@QNJeZ*iHG7$#CURU8klTz4LRMu&F)*Le{M^VB=pG>mI3qno}N;xkx~_mt< z8BN^8|Xv3uY^5MZ%Y0K`Dl(Bp(fBJs1grG*0t&>ucvPU?01 zRFKHmSWsAKaWfb7-ZWKDo*HH7mPg51J!-*grNQLG^i>Z z1fOK-4;l~k@}u9fEwg7lC6C;1{51H`4C5`>RiE(YrXfR%iZ?`W7p|OMHd)m>K;L!l>f(9PigF=e9vYoyb=4J;yrT;}H^RtXXf3=0QpD$ub2*CwWL*|si%Uhuin z(FWxwj8S~+LOuk!J*}KkCR%WVs%2_yjPU_lT_|GqJa`Q&rNig7uSYwbVvo`6x-3tc z_+2wOyYplIQTFohQyV42*_Ip()%*7|@L$`~o544sr>A$=pC2@A^xf~82Bs@d4A4K6 zNiO;HFyn&Dc9?l1s>2w{)4~m3qd3RG9wLGMzfaQC7pEnkRaPf^hN=P+_}sz7>Cu%k zb!Rn{`DU0N$LjCSCov|42@qCWC^Du$u?1uh^}-wKYgN9pQ?}(|IY=ZR3mJ#KZ43N!C~9 zUG?P5!=NBWEU3Vuo<8jZwuDGAgz8mfwB}ndXjXhowv$(i^lUQ=f6@H;RH*Zef04qq zBFM{?lv-kAW04ZUAm(0GWKr1Sl_9WC6<<@u$3t?+y2qHAh%kUkG+kj;maC?r(F245 z*w8g3Xu)n~yi}6glWODj@L;xwRkoFu-T3mhr%t_=5e#a29Srr0s~=0zW|~{vC$_Kz z&rR{<4CQ)H-F^r>Qe3iGGCWRE?j@4(G2M-vIVUW>i(M;cz@l&@F0Q+ES48Vd_YGGH zJqa`KS1IyZXD4P4Nh!&guf-ipO_6g!q-k$sV`f#Ac17$wKwhAMSvfg;JUrN-F_?)6 z96_79wzh^&RqkfV&Gs^+t%1e^mVTnDnX$1wlw;$9+Y6Vxt~4V<)_wg2kY(l+t5GYL z=GIonyLZbSXLXm4Sk;IqNLb%~Z@(yDyC^VK=1;Dn+53YpyzFQ5%{LMX>`6Z5lOOyU z5~mVYKdM;Tn%R9@P)gUc*|zvl>hg$gW_MXH_q`r92ju#+#ZLt8&SLjVBKpOrrh-Z# zVcal(g(W)0>juy3-oHA0dln33t2X@CLK)*sXALWNkr%}$j~i zA<+)|5fGfxbmb$Jv&92!8M*wHJ+7FvVb6t|m`&xGgTH52#mAkM$$h~+@30ra#SDC5 zV=OtSK8TT#l5!rZ-(#OuZA1dOM%Oi33&$;tXeyF_n(Dsgb=Psfrx+&1o@eS>v)OTiV9u9pjxpgw>YrU0S;5zVz(x33hj0m6S}eTkf~ueGZNWoF7s$ zZ|Umln(`0KPgd4*S7GjwL z?*cylO*;B=YF9yjMPCm9vbP%A>Jvc5Po6}O3<6aY1&=#FT66I-i686vAp%}j9@~3r z$B0)-swWg4egC1GnaE@2eVifv1*%Gt8^>5EWP;Is6tlOu(+q;gCvK}Gz-t5&9Yh$RBLP1I zr_}Bf5q|l%(PnnW{oO2k>|I>8Nr%u@PCd$+oye+qQek(OSDNCuWBf^-IE@(Ik7+&@ zF&XHN-y9BXyTB(*vFFsWY>ueS?;>+M9R|kL)zzt|Fxn^T$*{~+_DOQp?U%}vH#|G5LJG-WRT39p!u~g+ zUNas#>r>hz>n|wkPw<>r98o>VpT)@%y{4{GjW+KJH&UUN_aPIS1XhUO}u@&1a50uYqm z19LCM2M@`e45u2(e^yaO`u1 zf=7n-F_z`?D+n`zb0EB35Qn0rqGAK(5s@|^{2%y${~LH~`mpKX=m@QS1NL($jKJ`Q z^o)~ZHs|7>Y7*u;hpXO z>@Hs>yWj5qw}zbDLm!`dxGVS^V5|WhfwNT1D=IxV7wh{bl5wP`_FPp}6`vG$Fp|#C zG;bRc7HVp2$lx;ADM3nG`Npm%irkJQKxS)z{ibe+YKLDgzdmWm!;HVTvMVb%N5vF* z&lvP}S zh>o_jOsQikAKTc9#$$#H0_V%LLbF8!b`=;75U2 znUZM6zqdq$IhS&5WG31}eXb-Hp4d+Ctl_!!ApmT7A_BPdY zm}$4k>RSiGqiqn^tT5}@@mO)rC`D3QY~A3u2)hU(djzw2j5giozDZ*=ik_Zbx9UYv z6QS+QVh-PDVWEkM)xn9&HBy(`X&0mEy-x64bK0);!qVH#jOoS+03(GNm`J8Ng|dX|3{C6z%R(l zn}I_b2K0Tm9UQF>5p?6zYNBnre%`#fP+r@ksCBBlb@wj~9_iYjp=C$@Vzi_Gk(Z%< z`BuWw+Ipa+sH`M12BTbTmmi(wPaBb7V>Ni~6udWBYzA*NA7)G}Yz2W)10cm9n+8v6sh6+R)%{xDptdS4Q7vO)`ELTCaQg{)TK{f#*3j$}5{0bH5LC6Oj$VY6NlF z0Hje3x*%LPVZT{iQUYC0puc|%{9FGM@zFaNrhi15@yZG!b#Nv)LD-X&O!nWbRELk@ z__M9`^xNvH5=6fWkR7wLvmsiDh`8qJT9u_DM0f)`(nVNHj#HM->Rfq)ioniDeBefcg}HlP+;dx+K-ur6{@WaeOG3V}#gBh#UhfOu z`C6QJ`Q{lq2C*0T5DXWkwv(MyqRx$ycy=_X&0RD!H!om%b6Y~S&$q+Y3ZkQ&Hcu+^ zEQ6gI_R2vs?Fm{T&2_u?U1w|x@2>c6yD!8o;I!S-{UsY^WGa7T8h>~i2oxn5=Iyzs z$HoT?KA;%0+v~*ik}&+;FlFi>LHt3un8iBJNkyeF>mNzH^Bji2O?gcjNDke1N108H zc^kp|;J5K{*dO4LH6>1PuD5&qq3R=riJ|@2#Jde(_m$iwWCSp_Frrx%*aHrr;6OYR zEBKU;QOo_xfbUfUBU++#O$Z=>DBN3IS^_-*Gj(-v#gl)4v27c)rmkLB=DXpi*Qd3@ z%f+9y*uPeuuGe~S&q(Z?tY-TDd%e<>SVKhr29LxZ;CmDKHfI|IaT0wj;RTZe^Z7M! z$cZ#0F>N>C!zeRAelLfX79*P~>rcYv-EgqN6^w2UPY;x8BP(<@AAZ7lS|tjr*H2n( z@%{$!otSP5xr1Lt81vcTt8c-6RB8EeUi8dxy|2^nG7J9wUAj)DG_TZVae8E_;&(S~ z$k1MWwLIjJKPKijCh8|5tQ*h0wI^RSV@j2T8#65wK#+HVB@jR_G>=J5$2^AH5GJ4< zhr1{$HAqS*B%t;+G%%>JMtwMEI?boB z$Abffq7NKnhaQ!Nmyzr@h|U22m!z#CA%~cH5IP|B2RZ`QoOtU~Q`d2%)buY#9ecAZ|qlIXt^TWjQNF zK<|!wd*_OW$hXh=nhxw)L<0nXm(Ke9f`VmONaYw68(Lmy=h^+_z&E5b0(V_}SjYC@ zx~~U`x`fmbL?yp95Jd~_Pr$#sySi{!LZ&4r$IZM&}t;r4&(oBCE)yWgL3^p>fvnFyS{0LyNgr03rl#f??JkC!(M9iWbR z+!4PveaA}O-gq}34R#lKMl*AB3JItl<>mL>e+7HYDf2pjP7)8Xp$u3+n*mmSoV|g$ z`S1FpHW;zk0SW|x7M!52o*rc-rHFwb=q&f`7`}5JU@6MYj`WT_88BXZ{rc~N29}ls zd7HIRT7l?`BsTS)Y24A0p^*(MPYcuG&OOUFMH0#nu3Z2PR3v8VT9$i_?7cCUn?6=!7jG zxf%raYF|3mcxCR#}C_6fVaYc;&!(^cxIfkNa^lblrgZEI^Q7qjQ{bVoT?&B`}` zZn#x2eTbk2R&GOdhVa?15-%czTM@4QUESUAE;~j?$EwKX@*Oh=aL)j00Q1l(Fpze3 z7LI9|krtaKoqUV+u88Yel$iB#J_-4U3RWRkVtU_~H(P!oe%vK(eM579sml}+=#!OJ z+bRs*8iafT?~$#EUPck6tp8TXGmECA&B%RFF33ZRY0p&_h#axv2L}hge}DN{&=Euz z0=%{sfa`@j%z$n<05;DEOw?9-O#=0eCxN)J&`+y&+R8H^aLC_hF**oCj!-_H+R1PFEV zqwXOZ{D0I|Tu*oU-OPCX%&Bo;pR$YC=F&aozTwk;$HTo3O0f7jKaH>SKMu`czxK9K z>x~7*EPwZr#@uT$Y=7C7CJCq{SfyPwsF_>T`31uFUImAU80bm~8BC9NZ_n6!drzm0 za-47pf;?e~h~><~V+%L3U6DR|Fzi?u+@rU^&ER^r^>V*J8!n;$OB-X5yiAUa{_ zi`nh~l%Q^AHinDW25kyj5@6>0j|#k~r~vAKcZH-p@CaxX>+1`xdzj%x9vq3dNIpTq z=KVI#qcZe-J7JLlj^h%@ z`5DF7xQYt@h&vo+e^2bgYGOq})q_OkLuC%DDjn-DLi+11UX$=7$|)v42@Te$xh|>K zVi0TH&~(jX-b3svCc$O%Z*!GGHELc&a4~ydS2AkZ(D>l`#W|3BR3RYEE1LKxBswy& zBCuRoJ*vInH14S{o^#@aQ^60<3hxLL)0Z0_98qE=Z$A{B&cG27X&17SQo`MJ&8b1c z|87N1`w8L5Y)f8rFPCL_yGm#;Gx$`H>*&P1>M|aC(m3S)$T*p2Mn|aA5)cOoksr08 za6BnKF8}>{%|vcka#u-#_z@q@n6s<2X;JLa^)JknZP=|)3x12tn-`yzlf^=2&p;A) z32)6uqNL-mtQocC=2w$j-}UfUWjZbhPcqbio9gokUuSfcaqCzH3klrcW@e;e!aM8g z?rvpeeeZKie-2~z(PphN3%*Bk$`WQ{8L6gkr?!}g$8?H#Oo^FEORogq_Q~^?sxP^1 zPN!IU1r-st497CYznXn5=uZ+T6Ix53z|2&z*RP-B$Qug>{N{_^MEb4N_C~O@f|SE2 zpYV>lUl_DVibtENs^b$FeW>R~HJ!<|U$Taum-+`M`CmKp#9az|m>D(51=2X7A4IQ& z>y#7`_LC-bt`(AA9p!viG&5voor6%a_7VwOclFtBD9-piC2R~Qs zkEB-yEEkUBX@X}Sq_hdkZ#b^vQ;7vebl;1%N*hz@v$%iqAo2ODjP*OVIVY#e$1WKz zB_A4Tu|M9>yZ@72G@p&>TB3UuuwbAD~8%5a8+j$;{;8=+52=N>38J-iT z3rKr-UVQ1)>C+@Tcd}gAyX%{#-#O)|3-8axR@6B>iQ#;uf~0GFjw{tqj}YCcRigPa zTP3$$E5*3N*f-%${fQEdLAzAm;4NHWV7&Ckh};35a^FRpRG5y>>6U$D0#ms)$j?e{ zLSpO0jsxUCmX{ZKxK|!UpGwUP_=nU(=l4L^WCFY#+XZpF0-Qqv;{$zewyHXpXjQey z&n(u7k7JAJO^^1sv6tZzBp*dd^%NgSZ!!Fp-r zL&)+UdH^&D+`*79gIf~57CKB{NBgWV=qJAnu^%81n38Rsz9?Rqvzk~^oq+rzK3dsnli9qqo zdpD}uz>EPk0T?TaA!Jx=qCmnn!A&MRkt|)>4bj zkCc4_f^WyK)$mFCiST3n{INh?BLiWr253mr)@OPC94N`L2d;tt0We*Zb`K{INXg}; zE?wp1$VW)>fdim{aP#qLS3BE7^MzsqhXe;=E4qLmQV=q5DM?8~@OVL&94fzO zs;e76sO$^|!1{{O@2BOoju$z;PzxNASm~~&J@8$#^ze`kcK&a_8g?DgTz49rRFgFK zAB;X!mn*YEcU1T|_?dW&osxD75B#4z5+-Ri?_gvI0uhJSAC|7z&H*oad+)?wUc5N( zmxOBF*_k>-4wvCP{6PXwxJ)|>@bVsoUK4Rc(GchZ$}BYjE5*Tq=(mfi27XU4=sOc4 zCrqNDt4q9^z_f&)WHx{>;M<^(JahZ?^!|NG#u`P2d}QprMnA?Gg;LA|MG`nYH*ef% zoX(vTyayx{?UyzuQTdAs5{%4eFw@3mmb%A+>u2^&^<;(C6(f-q$ASbcDS6UU%yuM7 zs-6AG?f}wae>&SaE7z-77Cwv3JlNx(D|(}I(>OhGXqZRk&s8)=F5R+k|A7O~xb?R) z8$sC!Od4tr3jeo62|4WT?5@v#0ywOH=D%rBF<1dDTXpp>6pA+0OB%g8m(z?K>|)ePmdBwY;t14 zVL4#zN`qsjVPF}iO1SqxKshJ@q?~B{MVGtmI|Sn)8{%UYq!^T}Xw-qAqi3j;jqCbO z8h`q#iB1+X)hP;fE4?J1hY1t;bK;L4T4b47u~Q3#m-0mxgI)ZxO)cBdrYG$B;bFV| z3?*c7d{2dmkO>}C%4$vtf0Qgx|1wK~T&`IH((5nzt&Sxxa2-Hhm@XS4-?Il)q}hr` zF!~l8a+M^_%+D7?|6g0X1t=qB-*msR9vUNtg_qSX%N6D2P^W-Fv}@;1c2El76~Yx3 zO5rqnr9l`qpg~a|B>QOok@P~eW?Nm%<)?9P3}>b;kb-# z9gpfxkF_@+2L}A#e#6!3(7Zmj__+4@4?Zbb>%>mH03|IS+QY#{}>OXWjCUTTK{IBjP5AzHtM%>^d2~d@?rew)IODT6* z$8M@>(VpW;#o^1MifNG)A7&6vNg${)ZZbDBnQjYG(<*!VdhFK^AT_{_ZKJ{cpf+dKv-x%|Gfj6I?fFZ2ENzBP+Q5$LZg7P zKQIalage`1kX9m&K5m_4m2U~NP#YU4%f4a(1)&dt3SgNvRrdv24Lk}6peEgk0SVZ6 zo8QA!DxU51^A5$7v-x(}L$;@U!U3xDyf152z0+i33j6B$-^Gd|_3p-Qc_!k=^~@UY zgLjqR@L>_)!;EVl|2MH=>64dt;aj6&bUX(*29SPsHpGGMVt9sxIxWclSxO zqh<_H4y!agQ=4VF_J;Toi54hoItOO$Zi^?QkZKZT-$qhU>M;}UebsbMQT?dDM?RO5 zCDq(1JN{@XiHF|Dy#c%r)lBA1{Y9*X2np&tmgt>SkJH6HdE6mDn>t-M_&8Lx`^MiL zz5#C!Y&PwYZlMfOO-l3X{O7*EN;Ut|D;-n0;lu~v_rtp8udUsZ$(?wm<`Xr_tkv=a zz7jR|lrFwivBSh)Ko~px-D^isb+wy{>B6rAba5uZ@$mlyx*O~~isK;Y$x9Eo*aO_G!8Tl3zxpzc_?vJ*E zAkLVO`Qx9R3?Gu|I^(~;A + + + + + + + + + diff --git a/master/classncine_1_1_base_sprite__inherit__graph.md5 b/master/classncine_1_1_base_sprite__inherit__graph.md5 new file mode 100644 index 0000000000..5634eafee4 --- /dev/null +++ b/master/classncine_1_1_base_sprite__inherit__graph.md5 @@ -0,0 +1 @@ +0780c27acaefcc40be8105a19be177f2 \ No newline at end of file diff --git a/master/classncine_1_1_base_sprite__inherit__graph.png b/master/classncine_1_1_base_sprite__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..dce36ef940d3e429955dcdff71f9333a0c67dc1b GIT binary patch literal 17020 zcmd74by!vFx;H#QC8VWW8UdvQq!EyiQlvqU5Tv9Vq(f3b5Jf;mLb^k`OF%%n8>FTC zz319{UuU1a_qnd`eBU4Mx7M|mIvI10ImURN`~KDK>qpA6IM*qzBM=B2c{yoS1Omkx z{!7F_gIDl68<^o2G$RFBX~ZS+-%m9eu?WOXguL{9HP??DlOB3R`;BPZX3qB?7!Il_ zN-WIPsNLu#_+$TTuLbJ^QD_jpyP}eskcM;kaOb)!*KSOP;*|mXClb|PsdiN@%is)x>lahvo}&Y7onB^UZnY_RDHBPP(;~dWA~?lWyfOHaJ|Q7*Z|XC- zpwiQ4iN*61MEez#ybd7>NK=yjdQ-z5{e_kC$9ukU?3$g_{#hO4Is6(>x9gTZ-i0%u2f_oKaRtip8lGl zIU&I<4249K+1Xj&gaoomWBgmV3geA#Zfr20lg;E0Hd7P{>&QA9jWsXX0Z3sy?xAMDbSwl_9^Qgd=xcNt-p?1nZq zHFeKrld44Lc4K2Bm&>MJ_337neH(+SNPHQptE=m?zAq2R_^rt9Qs8`dS_`^@j!TwK zN zmtt>YoU|>9RzR^z+(o^TrVN)^=|jLkhKlj;U*Fy^V(RPbJGtKuS!nIo2w7QqAuTO^ zlZ6Gnp`iie`gO^cZ$JJ0{N8;07~b40{WT+_X<&db7>_n@Pzw%_Q&MV)W{|br|E=!0 zHAVgE)vKRt`|76EwzH@_JUsYBM0@om9kDD@X{xg`4gNu=L%F)aObYQ5*@N^qZz57< zqh#RRX~vpyYldsj#>=d?_x74wBPi(tBve&ZW>v>4=*}MMc;HPC`jPU)-Jh@t#+G zNyL631aXsxmzOqh`ll?W?_NVH3Swp@V85tuLcE)kX zTgzKpoM-3fmS-Yg(1_YZtpf|n%LUHHTU*f(k92fG!^5#N2Q4b9s)pTi_VyeRKB=h; zjPibr@{h6ySvfeQWn^UH=F2RHaS?Cg;`ZzBCMgGh{79ARR#jO^F524NjiZx$;Jd65 zm(9QCBlk^f?E3QD94Z{7@b1o_TaI#)(ET)3I&pDYNsQE#LgO}#<1-pj_fN1M;$Eqm ztPSPPH;zmJX;ilnX(t&iPra&yx zM~@!)w71KxPga#{7)MYF;L_32$;r##mzT#>P8Puw7Z;zXbU?39oep`+h}k$NF;edmx_J5ke=I1fD-% zkNTj{%FoYNdOiyJ|M~NWBA<}np{c(N!OhLRGMG*3>FGJMv=oF~d~j4L1-p~_!Dd_;EoPyjqAIW$WXsX7p$H@8mVr(zV7`@r-EkMhQXL}g8k{Pe&x4wL6XJ?0j zfq~FGO@$SNx4YCWWouhtMb4(&-8rxlLq0n=(s5>DW;WlSrhr%dSYBF0MACF=q|kU} ztdzYqiZ;sk3VJ7XaQpgpC!dK18ZK3cZu!d&YX5dCJC(!`x%*mU($d!(`>yLG04`lh@+%QtbI+_L`sLBfvLX}4p2d=QlkzZftN z4!j?z{W`7iIQ%eS_&ctyu5N-LBz&7PTFq?QI|a@AGK$~^4?^Kx(Lx9XejS0lQ@Mj# z(QMt~qPhWxZ-_-ynv#>MMtajbg9{7&jpZk4!~7l-6;TiK7>d%%9}Oy`5-j@UQz+t!GxT)stjT zCFH2zswN#Dk)~97FsNx}cbK;`_>56rQnK;Z`x^w>P|XK*;P;tot<&j!t9wT$YgiR- z#nS12e~i@$KM#Y+@$pj zv3PBEoa#P1vn`OLdr03JvHM2&dNk9#_62mRzqO_R)<^#JQUCW2_J8qE=^K(5l~Szo zdU{l-sHh8(hRz@O*8GZ!s8$@y7b1-`pq3HP(sH_B7g6nK*t0y!8X3{5WO(ylx6~qT zf}kC>u*A}QuKBgS>`mS_Q7a1!k@SD-p%gVx!sKEC&dxk5Q}NYbr&%vmS6AZ`6Ei^{ z<{{*;=6(0}ZNTb4MxxcLTeog)@9z57)QIYozl?aCDl=QPRm(eiM*DoBJsP?Wlx%_T zbp~~>j%NJvOddWk(c!S>;c?%4F)}trFDOW^nXlh+cDzeKKtSih;Sb$yW`EcqSUDpW zo(_lB81oFY^9Nxhh9d=rQ07;Law&1C?mbJ;*U}0pDB!C2{{4&7+E9X^19NCt7>bCi z>({Kp(9lqP5|SXOt)JDiHMaNnku3y!fPtR=ClsECHp@#(bFlke_Xjm+7Z$Dx3k!#n zaic)Ea`HXTBir28>u`XD1zRMQpkKCT{uhtKP2~O5&(G&cg`4`_an-LSjFjQlEzEM8 z=~pw{QJp$TZo_;Y#irc_j;pF1Iwcqn9z2M<)7Jc&@G;c>lvgL18OlkLrl!n(ety^k zS5Q%Z=4kVNO-nQEO%@#~F^}!rT`R(UP4V#)#p{R&V!o%=UMG75>>4>-6Sc3-zawsz z=;T(|FNPv+sy=zb?)CEW;{1V$iAiZ|=Z_ym2x$$Cc*F0?8H5xOG9LvU(si^;b#gIq zaEOzHT}Xz8h8oAmbr~5MG3c5ZiZ#rpoVqvX=NTHCngaFnNxd(2Q(C?}2n)cMbai(R zUF>>?MHf)vxEh1F**`FVGyhT4Lj!?7ocEN_+}s@1r@gzIPf^@)ez;*yhb5w?zw0gUpn z1}#b{0s{lv+uJjTMj|64k5*En-hB8F3d{Q{8k$jK0OmdWg?9M9E>ru_Ph%K!vto5g~(b z-rmzA150YDJ24pc_-CnLTw52HHXoELTxLB~3yX`he-^v6Dr^mt?D5~z)nJN?E2djIjCn@aB8~nT0V=&DxvH&pY%Od}?+CSM&I@Is-5X5!*z$YWZ`O|IQu$wdN0o zQ3`}EMoRo*)#{*@_{JvYuWfG z>4IIXs(*)0d>U;yf4rT#CCAmxtpWDMCYg!hQG{GpaYaR}>tY-ymz5S?bMuck!nn|f z1n9qQIW>TY~K|v%bM;*D+(9>D4a#&}T!WaCx8ZOSwcGY&ak?(8zQs>*y z_9FN&4b>+O(ed%RtHho;xr3LNXiNly0`O4}0T5{EX0s=005&PJ7EicG@OZwyKV1iq zM??|Nq*R94^U3=6yziM6rT^B+l~Zc{a&jo6Ji|*%DXN^A5?SFL4gKj9<2AzMJ^{>1 zIW#A!1FO+*-eA`xXOz)psfh5g4<@7MeiTk{lY{{ika+ZE9+|0#F?)NgFf)^tkU2|FSs52l-m6!& z6OS_qpr+O9bq0sL4Nkl5|Me@QVv5+L$u6a!J>y^Gr=YM9xv$d|-}?bodC%cb#TM@Y zokHgD5I{Gr=eDonw~*gKX_IomZtr9G`uY8Z)TxCWeSlp#Z%*8DDM1@dSE8)GI9UUV zV=qgWMar?E^Jjaz9y$b<)d&|5TF12^9H^08ikv{Sw6w_do<8mS?qvDnqaY#FV+4(e zi0YsgbUzF%EGg)DKeN=?k4{eJI^)=bRsm3~OjPbl*<3!3Wmfu`t1G}^P)h}5HbL0s zP5^!o73c(HJSG_H>+1#9Uzg{ z1pyuG^3(IKcvenMbRXGB^;v)}WOrZS1KmG4*a(|%ixS`C%e1ILNXW@yT*tyHw3}}Y zj@%u$sRIC^?*k=otlTDw)WDNqINv}(vA3ruC_kSQ-tB&{{yHEafMWS(7AMDsP)KB? zjI{JsdwY9)Dyr~LpKeNFUb}XU4)7Ad6gd@@;EW6wTv{=`>_R_(f8fTU46>0kzX!8d zrfP)G&dxp!udTfm=ih>^@$o@`Lr@X8)ItGwo_?SC`B^GxTq+3LH*T<|m`TJU=Q^;`rWhuL zPlFZ&`1n43sj>{5ocaA{gW8sT{0ui@NXOuMOvuN|NQ5|IQ($rKKgHp}Di? zUULMCfrI3>4(!Ipfq^HmzVrb1q$#`uxgt6FCE4=&Xfdi!h4aP-IRynmg!Idod4?y@ z2I0r=-f42?N8wAt9=(1cq{`Q9r&5KxzOjLGSyotxf_NJr4>HFUz%84bn@%+BfEN)n z&^ldtALnYM78C$yCwJ;Ju#3roPEE1t;OxxruITA00&5UUS63HSD_~>5DNTE`O~Lc< z1OaMtRoB#T1Mc?R?G|8VV{3$3!sU6iZ4q@1@$%(MyouUNZiGdNKBIhNC^371QOk9c z=g&n8aC35UW&nj$QZFlA#aA*}E`uh5`icKRPKfZiy zZhmXeT~w#c>NTisHvy(2uf+XFz3-LBz#w3|Q66N0kQNDOmvZB|rWwb~6!!*5Vsjvp zAt@2;qS@tT&Fp>qI;bm#ppMC08rwQJG=Y*vKtU0@zHVh=YHBo9?MB9DK_uk3f^czh z!6xHEI4u3Rudh!7cOo2QpP^gmkDnHlP|7JPV!QAEz6PtbqOx*!Z*_o7$niyPYbX?y z!_7%V9`f6%d;p(6k z)8D&Sp)45k+i!WGwPx4+%3);XjSjjycW_ZqQ1Cpj#;k~mq=2X#^G~Ak|3Jyp-R(~9 zsyujTavfA>E>h5yy;p`Szgbw1D>p_^UIr;^vI0T~YqgO^h06|@4R=vuv>IWe{GcER57)AyUeuPist#rS2>yaBoipfjTr~u|5{Z;lcy_UpwA}w*Nt* zxk#FG;%nE+*^^AIa~mV6Gn77tWZFFgQD}YQJvMuGr$9;(5B0(NF{aDr+r)pUGn181 zBE3#~zEqzzNHGvUROs6779dqj2>t7w5gXIqxM^w60oOfb+QG+sd<8x(Vq+=^d#2Ce z6UasP99Kw*h$p#~Sii{lfg(duWji}|C53`q(4J|^bAZ$z-G%S_^yDPXZJoP(&qe;i zZjZb7S7slrp7-=v|EzM6CCs3+&~tSS_*c08PXOm%U4j3*hlc!x*B*T#WKn*$*coTv z#zjfWS?25CbbDlUGEO*Dd;8#^6_CVY4*8aRy5N>5RF-%M=lpZ11-aq*u|8>P0A*01+4BXt0H_1X< zo#f(uQfMBBlv)mdaD0VD!ch;xJqm&??z;7OSzuHYUb=G9b@>F6L`&V9fhdx=vDX#Ou1eG zeh#J9dfTmTr%CdhkQF@#i*fRkO_L?^l(6 z@L(32J?ou2GWq&7+nwzBpS(^F5I&r>M@W5Vr0BUqTKT11uEu-^ONumD0&k#CS9s4h z2Fg8r2%7$j=~_{lD4K{{PtwT_nqAgMe2SdH><=$2sv!l;L`o2_RfZ9mU#O*mfXEpGZF!IxUtxxTFp{qm?y{E;2A zulLzJEm$!R02r3NoD2n}ceahzJ7-Yq@@!c=Ixa2{`XmF?NN8|cB`*jp9EOlx8H~00 zVFPczv4Qht@ypjhrjdZa^>EUq(EIWg5)B|Wsi%$>VpTw8j|6gk1Ei%!c!%}gMDU^| zxKbZKe%wA@PML>wSK(3qC%@JEc=25Vzct0&{5-eg%A;y{xD{@@>4qn@UZ>mr3Y><( z$-x9m=yRBMU%TzNF-B}ty@LjL)#{$3YRXzfCS5^^(vRtBTCfCUp_%Ng7x&JAv~YBO zIK6|!%BNd(ZIm|Ez98W>3=NUg*4Dxf$=lHaGw*1#YHRysEk6|`h!<1Uf~MUc0&{XW znv(xuaaKPo(e%2sM##y@)x$M%gT4kU1tcj-@Zmgf27@RA3eEO}Lobl(dBo;MlCHM) zXYl-9^nb-fB5+t!C=zkUfPu2qvwxOZ>vBB(PGsB~-T+e9_N2=+dAAF!hVAWb3GfxT z-Ts(BYr_Qu&8v90yW2#lB7zc^<(}x~G(;Ia;p*DltW#?7{Ky5a5Cs7!q5+yIZrsCb z=;*=jcco|B>;E5yu6f` zWy4i*T=|I-Msm9m%tdf|kXS$jwjF3Ovd+%VamQn2)?ons5Qn&w)c0%=Hg)Ix8hLt{ zczAeCA{Uu(%i6oTcqhur%kziqH8Pd&&{r0gbT`jOiR0GjM?srz=<6%&F_w=BfCYa) zweOc;BBMOg=1F#2BG1t+$HgMO(+sL;fl0>=4*hB}*j$0&oZh%`13Oq2F$0^sbwEWN zhwdtpJivWLvJ1YR;c7RBa9VL1aAv?e{rI_r{b89TKvpztvS)8kA8$@y$=}+S`GpU6 zOcB6I6Fe^@?8wur^aJFHq$)sxGY7S<@WtQ2`=(xgV6^VT&99YV_cQA7u8$Wqo3#7mZ*6GN1C-yt~)fh?2=(gt5vj4~e z04P2?-|_|unL#%V)sldi`1#RZyZGg?N~)BM`g;*Ko_J0JkRzQx!3njhoULne1il0{ zhu!?8`Zv?T_GsI%GWG65u=ivoBoH#;WOOcX(W`fRgkKEjCG{E5NbfTy2g`>1!|w-+ zAr$x^lgm|lZQFl$(V%Z{N3;tGfq6SYK%w}m7B^Qn`?JRIR>g4s+B35Zzfz|r1I7Ee zu=|6ablw2L$(j1Lezn#n#(thWA^OPJ1-VcC{#w(!` zbSkniRBWaK4oKjf0DZ^IxDBV#V(0nMY_LZL-DEKfc5?C^9G?7l`eOmj%_&Il$j>ji zHAh=&cIMG}{wG2{)g6uv8D$J#e{}DLP-27G^-&Hj?Qfrl*LE_*D~*D9PzHDY;lSeEJpvLxHqYZ}yy&1kAuj^!oGX?vMz;G&E%3 z@^n>+)k8^^L(v+GcHFH?=pkE;*GC6X#NoiL`=g}j^NSd0EKlYPX z26A%LSUE{o#s+CVf9|dC?IqOEID5;+XTf2ukTHzqd9wQ0bFYtXqFNicArIh(B;oP- z?b&P06VJC3AsYdRkLM>!tk%-G4@-`Nc8q9UpdV>&qK!9ydpqD0nXBOkcPqmK>E z1#bBIPDOFNlt*3aJ@kF}{6ydk*m8jHl`6IG<<`&BWKIum7kV7(mDu!#ZQLj~(8cuc02#U_FCp`4Kjr}hfA1Z9k zwU7$j3%PF;IISCZdk>rbED~x@{2JNr;)`!rg@-N^?utsuuh;_AgUjV*c%R#o z5Q;1DWr2kYjd|NYctv+c&AeOcF1^qkmYT_WZpi&2D=4`wXUw{O9l1Nwl?DL92>y6q z{2sn5n!>o`-E?^0yE?}vQiC7O!v+TR>!W?F>>fv&v#&X>DU74uZEeh(SzL@vNFWEx zM^iDSmcV5zzKi;G=KaDF;yi9r=fI2e$%5xyii}K88x1Z`$Tuep?P9?vXD7ott-IJ` z(QIz%ZvFN|lgoMxZKC!mvkT)Fw1$2SR+0mMRy&+fA5It)__UNI#Zg*sqDxM`qv7qXlrNbf@J9c%+?yQh zzdhzKW!EPJNy*8NF|hTbpaUSkseVBTv0va*ho|35WIa7u^Ym*XUlR^f+_6&pYQkZC z?U~`Q{&LU3NUayYy#p2j{x)Vw}Zl`@>QR{VH`nP*^T7s~_afC#JVLQt?&MpBX$zIuJ{mO*>>?YF`= z9!J0r@v*9A?+KN)9&CIDs%qF65EY%MdlPO7g`s&OIf-+VgYApJr&UW3a%q_MzHM)> zHSv`S{Nu((ergX7;pVp9pt!i}z2cYLNXG)MPDg9Z)GyH5ePe8tPE3rb`-ArEsM#<` zo70Pt(rQfcW#rEcyE3eGb>TS#B_-h`dtVrvm@L4JS&7yf<1seu%2%S)T^}I`b>3K? z+3KBR-fiuVC%_u_MDCyQvTn)K1B!6kI<#B21np(%vxpRQnK`U>Q~O4qtqr~FE1Wk@ z;4-{@N8iLQ7K%ofPoQ<}-4CWf97sMUjX#6yvzwJHn}`kx2Lu})Xng@c42kd}pZqS0 zdCeRKNqS#G9p6ukn!?fQ$t;ROG`enV@9&3 z;KSxH&X*FZH}K-#n9ECI?6e6(*aaUS|E4BQSl^dGmd&Y}(4ry{Km@Gb-rmh^Z2}`l zF^qg8BTlJ)GQ5Zf4?2FXQEsJmZD!+HxbA4+CElQZi1#8UqP4V-xCW}C~mHP57wn*JGP3m=N@mItR?tFozdNcR3<4dX7J<<-nMf*3`52m!0&vB#K>f0` zv@GKIk70)F0U*4+ug*^l0mwTkj@?Ue*IigsDW&r;@A?eb5lNlGH&5aJAWqoCE|H14 z-?g%~j)p892Xx@cp6#)o=a#O?;iaJFe|9-8lkf0C$N-%8S1Z;CGG0^cKfAj-O?cvD ztrGzKAZU18U!=}g$7eZI51$G+xc<|9f5`Y*?VUliO5;06Wo0G!?>F?l_SGR**3i>~ z%ODdjVPy2B@4G7y!+*&YegIe+NhcLl566K{$*YqB&PpT1K)9WLtI5S&1sA~Lc5KY8 z=YQQEbsLW{&`IIik-P?M3IZY`lcP{e2t&lg#zrS3gg~4QasYGNvrP~XgG}SMZ{MIQ zV?ad<-JGmy0(rr`rgltQosAethC#7FMIh5@_x;ftMn{i*+r%u8=@ZwD(qVi;LVu74 zsKKLY1LU4v$^pv5N`D#_38#KIxK|UkURC`$|G~G|sxyeV1onxHQh+!{2p7cTz6tml zI`wOS=#m(|U%!5J*9~4$#2lxG=f`K40(qLp9g|VNGE`^_K_+k70GR{}A(=fG%C4D* zfuQH(EA3xC*qSzgY@mi^4kQLpB!Fy?r>{8*eeQeF4AMzf++bUqEU<*Ii3zS4YL{DZWhEI6MifvD=p<7JE63N01L)GDM(qEk|$fcPjTaG}UXQgMs4b$55a5P`4((z4j-ybyAId!iS- z^zhbSw>$#Po1y<7`HI1FqWJ%muP8R_g${)ZYJmFc=t3569b_rzvh!;j@x;%344Z-s zw`UqyZ{7N4M*>PV+`)>93Nq^QoFk^}zlSQxUurs$h{SasG39MJWil>R-~O|o@!Mj% zA9yv=qf1vx3C-0!Bql~+r{}g(2)v|%sL-337(dXcK8m>AfM{fe!!oYV?-~Ma z!=In-<4ewz4(n$Rp5fAngn+YwOt!GHv->M&NWt$)BXLZhKQ~+-DTEMRK0GHJa3h|b zpX@_aMFQMZ9AwX@j-(L{gCmwu4H1rq8(t;6OpMsj@e z#QOaLgZKYBfw}xky>|2YZx7E&jz)1CvaZ@C)L*0wm$y0?i<+E&KqOu!k2#6unKIZ#bBM0iHSb@?es$V z$KT3=^X220wGGe204*`VZsu?a59VnTpuhcEu@}Rbmg$ynj#u_?s6L^U%GN0FE3?M@WwCo}M?Cp5Kyl5te{-ae0fKak z?UL8$7Z4S!;OM5Y?5_1N2)xfcEk&q`v5 zkv7ankv0sKiz2{CAM3xe$=6AX+1{)|Zn`(}MIVLVU87AQ4hrKuJA9kv6Q#m=^_pnJ zegE$t7_mAc)0FmP&3a6Xc9#f8YR`#4we9SR=pA8|zX6#F(8p{c&!H60&asZQKH+xa zD?)t9Yv*7Y+!1@q!1a?dSBGzXO1vX9O-W775gqay#!W#sb~{Fqefs<7pr4tgDEUYA z#xi#&ymP_Q*H?fj_3@6C{P#mrpNC9#TjR(uiCvY`8h;Ru2d%cYz$aDtsI!D50D~%` zgP4Frc?}ycb!tu!8hI0!^-~AuY@J}yaf$4!b>~@0nQ|tl45Z6+_vDce-B; z)yL_a$zBJyw6xXFEaVDGtwTqPgF8O#M7bYshV0CX;?N3~z{LOqEVFtK0k{ZmV~yE$ z?N{9ss&J1Vv)`%pCp8Ffyf|MjFduNdiso)SnANepZ41Dgf{nPq_A}@D`iBnc!S>6G z{H;sx4zz+|%g~XLcYSGH^COiGciayg>m7Q%0;Ga_x~O9*5DJMDxf2tT;k1{WdKI=f z!Y(~61%{#sgi@l8;qKDAne{WsX^ekZOmwFfDruak?EPf^#L{!8g~M_EhzwCbRCY`3 z@{H-|c)#V>H%icz+ny^w+>by$&egdVD#iDIZb82b1%_s8@4oF?s^M`(XT!KB1bYl>Q+rTI>fZGut*~tVwheb%Z=`0lIWqpJj{rsfz88Ek_KV2yc zk&4~?B9-EjQUb`$3H*s~?zY%fsT$y)I+G9y2C1Skd5Q%Z#)43kLvS-J0>P)JyBQLV4#MhClG5C zuJlQXmAQX&v*ygq&xf0GrsgMm4dBnm!(PEcCd}reGU{8?Ur!WfUWY_I$s$k-B+c5~ z+$gXd79nwl*_P9rVz2m>lNE#OF5B9BIb(!xsQacVkuZo|Frr=&4}@|7Jd61*#jcP+ zNadeB$A)B4Lr9hr)z)T5#~&n4M6VENjhPU9`BK}$o^SQQb{mnSf9@yG`P~vzPjAd< zYl^GHCcmM=j+Xw`Y787rcf{wc3IiEYm*>;eA+H5}nG}+xk;fIf^@Q&GNW6Xxj`{HtD zP*WDz>IFN5+UXvAw@W4CtgS#XH?Ir{ON3AF%KDi ziv5Lq?ovqpF|nqGd7PkqPk~`izL*r zZ$VhFDzP+Uarr7U`z_;Rp_vL8X{~_3i25w`*kf|5 z_egfFTi(+cLZC9!LdsD1ybH6Ef$yOwL(C5i5HqnzU&>modxPP1Rq_4YZTLd@py`2t zNK{c-+T?d_r@iA={n@eD8^&a-PBnPS@t`$4Tl&!({ninaQs9EPS7hMHrrh2ow3h7r z$N-1|R`1A&@bKmvAOAsITr;7ERJm|vWgrG_B;;&RoYxclAqoZ0h>hD^)%)JPl18Kk zRcd)HB=ke)ZcPFLMk`F2`1nYDeb)@1r?rA$6cDDM3-y5bj$XUWqn{a227{1Q$kFPy z3!_47c46%CJ+G7NXJ;3I2OE4N#Vo+Y@kQMoC5-0S3!nfGyYTgV?0732^8lWL_DJ~_ z2eaZ4nfFC8<=nhfUwT9?&~P-+3STD)FM|_GwR5&hJ3rH4un=ids5Qn|1vO=-Ux9L` z5lbJwW2k9&4(!;{XO`nciTp~zDFy~ejhNqB2r5NbvjDw3za&PEUL`HNCe6&~0tfWK z>sxi=1W7`r_g!64?>s$;7*5GCoP8+qC2JUKdc}2 z0B#nv&;^4>`vI_)W7#=4kagMiAcrJ6`pFJxX;8@c-Wa#3a(kV~IIi~7B=VofZK?mF z=JbBGZh{j`&~!hD}y2 z?_iNdDE_A^_*IL;+QJqSGXo!X6NCq(6d|E~mmgFZ^1C)uS5v(Babj5x+qyVq=jWs9 z;)P@AcLo@KeL@xy;jQ(?U*G(X`Z)b`avS^8E^Hl&+u%h>Wo5eZFp8oP0s2y%+qIV$ z9+k#-Ey&3qXcaF}ot^1%z4$qA-^R@j4oN_{OVdY-14xIo|G0aZA9Hy$zco_Cg!3fb zF(_D;vT{Bl4RTgf-kKr-fuWGLM;tNiM#ZUHj`AkJx2f~?w?2iyW)UZCdDO}AH|dWp zv@`_q$H7-`jR2CR@T7qshD1f#Y#%>r3JD97l8}%{8#t0-{MV!dj|WT|K+yg8_!yFu z?mq9{k$(B|MUh`T-dU7;A4`+=Z9?T|+o!*hnev1k^qJvR`G*f1!E;v8s| z6B7E~+ROJ~>F+wnzL4p|hp^bskW&vp=Zt@4K1N!vzwa)cuYIAj*JXQRa|-_C-vai) zkz7w!Gwk+O`gEc+M=fs;Z#g)DPN|qb46O&}XwBd<6hbYtl z2xn*rCCcdmP|iV*g?;=0}YEvuD{jZG2~qe4!<12l4V8el$7Gf$6OF$&ZO$RW|X zQzC$&N43#-V1vi?z};P_CrMZ{b@3a=F1XxC-2=u`zL@nUAN6`)_!F~h)OU1X-qtN^ zhG8@aSK{>U?C%G{4B$64ID3o7R*l(_)!A41Slg35bHyYf;uyw;uC8pIu4IrX4GavB z!QT2#lHG@De=FjNhy^;ENXj0CxuLBK|+H(H*9Q4gD1`Ulo&#zz_@~t z%n+7e)C3KC(fLm4JH~JQ!zUNd-GBX=&i`Ca7=PgPB{dbou)Z+Ta}^z(ft9s=`wRO2 zB1;;6y^swV1OYEf;I4W9RTu_1f~1D!+s{10E}PBp5Tj#buYll&Oo5Sd>Lc|H+uy%# zLHMyPQyMa7SaesR>l7Hb;d+7&fHWl$|270#8ZQcyq7WaI($S$fSRXas%gBbX?0=tr z$#WEhmH2OyrOAdT0L6nKnt{v^B-}NR>2t75)LngBvLXH>wXE&Bx93J6eq8O)VRpwK zfg|VsXVYnM+AYH)mS8oB8MTBG2aQ7-mlP48kxdM%ga9FJVPTQhyD?o?7ZM(xGo%Hh zkuZ+Z*~z0gyy_^K+84rW)}zL53G*QP83NNJkX5|-@ZrO(xLL#Z@ImGk zUSO2c$;Uw4l4pXHjEwc-;;>Hq?l1)ISYdVxyIfRMv;{mcobqg)0|+dlNGvQZQKZuf zIm#jM!R?g9po3wYf1j=)yWQ3ph!tTEW>;m+O6yse#!au;7{|Cu@3)(=sxyAgHLRacnYSC>C}sq*PONjBOyD1NR7-qJRWB zNP~78V|);8)nIRGDzQAA&JIOJ1tAM53%eMk()r!_`T4$b8w1#6kh(@j#Ipy*9M7`i zpJopt<3Tc&TL#Pj)1*$wEH?yJWqR!#9C$ky*VoT}hL?6&W49^ga!&+OGDe2}KQld%^;#?}g=MDGb9sUgz}@ zwv_zgHSoj(4PG6$tW=`o(d6vm%S(0qr^u?Ln_J~9H(T5ev&LYNu%O`Qii(jHr8JNs z#qT1u-4`!d;bh^Fx|(Ny&g>wu%F<*l@4oj{dgU@pj?Jxq)$i##ka2p(> z@kKW{JvCT69W*&sDoiRU$?g~(C5QYAQbt3jsvt-YvLayJnoTLfk z$R8aa&q5(X(43q8&@}M6hJbG#Oa zLJI4ti2GG2NJXjOY!RHdWEa9;U+}j96^@HezF$XR z7O6nW&w^`W;BT|W|Jw5*>sNTB5~b!8iAgUA;;z8T5rkWp%WOV#l$F2~;3|5LtE|Z# zAz0GSjC)hWr?+$EibP0G`JCzLv6}P$>wJGnZARC8mTeg6RfE1>ULlc`qZG(4EQP;L P0wMoESvpVhncx2b=LtcG literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_camera-members.html b/master/classncine_1_1_camera-members.html new file mode 100644 index 0000000000..7335031255 --- /dev/null +++ b/master/classncine_1_1_camera-members.html @@ -0,0 +1,96 @@ + + + + + + + +nCine: Member List + + + + + + + + + + +
+
+
ncine::Camera Member List
+
+
+ +

This is the complete list of members for ncine::Camera, including all inherited members.

+ + + + + + + + + + + + + +
Camera()ncine::Camera
projection() constncine::Camerainline
projectionValues() constncine::Camerainline
setOrthoProjection(float left, float right, float top, float bottom)ncine::Camera
setOrthoProjection(const ProjectionValues &values)ncine::Camera
setView(const Vector2f &pos, float rotation, float scale)ncine::Camera
setView(float x, float y, float rotation, float scale)ncine::Camera
setView(const ViewValues &values)ncine::Camera
updateFrameProjectionMatrix() constncine::Camerainline
updateFrameViewMatrix() constncine::Camerainline
view() constncine::Camerainline
viewValues() constncine::Camerainline
+ + + + diff --git a/master/classncine_1_1_camera.html b/master/classncine_1_1_camera.html new file mode 100644 index 0000000000..cf01998c2e --- /dev/null +++ b/master/classncine_1_1_camera.html @@ -0,0 +1,155 @@ + + + + + + + +nCine: ncine::Camera Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::Camera Class Reference
+
+
+ +

The camera class that handles matrices for shaders. + More...

+ +

#include <Camera.h>

+ + + + + + +

+Classes

struct  ProjectionValues
 
struct  ViewValues
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Camera ()
 Creates a camera with default matrices.
 
+const ProjectionValuesprojectionValues () const
 Returns the projection values that are used to create the projection matrix.
 
+const ViewValuesviewValues () const
 Returns the view values that are used to create the model matrix.
 
+const Matrix4x4fprojection () const
 Returns the current projection matrix.
 
+const Matrix4x4fview () const
 Returns the current model matrix.
 
+void setOrthoProjection (float left, float right, float top, float bottom)
 Updates the projection matrix using the projection values.
 
+void setOrthoProjection (const ProjectionValues &values)
 Updates the projection matrix using the projection values from the structure.
 
+void setView (const Vector2f &pos, float rotation, float scale)
 Updates the model matrix using the view values (with position as a Vector2f)
 
+void setView (float x, float y, float rotation, float scale)
 Updates the model matrix using the view values.
 
+void setView (const ViewValues &values)
 Updates the model matrix using the view values from the structure.
 
+unsigned long int updateFrameProjectionMatrix () const
 Returns the last frame when the projection matrix was changed.
 
+unsigned long int updateFrameViewMatrix () const
 Returns the last frame when the model matrix was changed.
 
+

Detailed Description

+

The camera class that handles matrices for shaders.

+

The documentation for this class was generated from the following files:
    +
  • include/ncine/Camera.h
  • +
  • src/graphics/Camera.cpp
  • +
+
+ + + + diff --git a/master/classncine_1_1_color-members.html b/master/classncine_1_1_color-members.html new file mode 100644 index 0000000000..05a42df38d --- /dev/null +++ b/master/classncine_1_1_color-members.html @@ -0,0 +1,124 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::Color Member List
+
+
+ +

This is the complete list of members for ncine::Color, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
a() constncine::Colorinline
abgr() constncine::Color
argb() constncine::Color
b() constncine::Colorinline
bgra() constncine::Color
Black (defined in ncine::Color)ncine::Colorstatic
Blue (defined in ncine::Color)ncine::Colorstatic
Color()ncine::Color
Color(unsigned int red, unsigned int green, unsigned int blue)ncine::Color
Color(unsigned int red, unsigned int green, unsigned int blue, unsigned int alpha)ncine::Color
Color(unsigned int hex)ncine::Colorexplicit
Color(const unsigned int channels[NumChannels])ncine::Colorexplicit
Color(const Colorf &color)ncine::Colorexplicit
Cyan (defined in ncine::Color)ncine::Colorstatic
data() constncine::Colorinline
data()ncine::Colorinline
g() constncine::Colorinline
Green (defined in ncine::Color)ncine::Colorstatic
Magenta (defined in ncine::Color)ncine::Colorstatic
NumChannels (defined in ncine::Color)ncine::Colorstatic
operator*(const Color &color) const (defined in ncine::Color)ncine::Color
operator*(float scalar) constncine::Color
operator*=(const Color &color) (defined in ncine::Color)ncine::Color
operator*=(float scalar)ncine::Color
operator+(const Color &color) const (defined in ncine::Color)ncine::Color
operator+=(const Color &v) (defined in ncine::Color)ncine::Color
operator-(const Color &color) const (defined in ncine::Color)ncine::Color
operator-=(const Color &v) (defined in ncine::Color)ncine::Color
operator=(const Colorf &color)ncine::Color
operator==(const Color &color) constncine::Color
r() constncine::Colorinline
Red (defined in ncine::Color)ncine::Colorstatic
rgba() constncine::Color
set(unsigned int red, unsigned int green, unsigned int blue, unsigned int alpha)ncine::Color
set(unsigned int red, unsigned int green, unsigned int blue)ncine::Color
set(unsigned int hex)ncine::Color
setAlpha(unsigned int alpha)ncine::Color
setVec(const unsigned int channels[NumChannels])ncine::Color
White (defined in ncine::Color)ncine::Colorstatic
Yellow (defined in ncine::Color)ncine::Colorstatic
+ + + + diff --git a/master/classncine_1_1_color.html b/master/classncine_1_1_color.html new file mode 100644 index 0000000000..b4a026b3b0 --- /dev/null +++ b/master/classncine_1_1_color.html @@ -0,0 +1,256 @@ + + + + + + + +nCine: ncine::Color Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::Color Class Reference
+
+
+ +

A four channels unsigned char color. + More...

+ +

#include <Color.h>

+
+Collaboration diagram for ncine::Color:
+
+
Collaboration graph
+ + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Color ()
 Default constructor (white color)
 
Color (unsigned int red, unsigned int green, unsigned int blue)
 Three channels constructor.
 
Color (unsigned int red, unsigned int green, unsigned int blue, unsigned int alpha)
 Four channels constructor.
 
Color (unsigned int hex)
 Three channels constructor from a hexadecimal code.
 
Color (const unsigned int channels[NumChannels])
 Four channels constructor from an array.
 
Color (const Colorf &color)
 Constructor taking a normalized float color.
 
+unsigned char r () const
 Gets the red channel of the color.
 
+unsigned char g () const
 Gets the green channel of the color.
 
+unsigned char b () const
 Gets the blue channel of the color.
 
+unsigned char a () const
 Gets the alpha channel of the color.
 
+unsigned int rgba () const
 Returns the color as a single RGBA unsigned integer.
 
+unsigned int argb () const
 Returns the color as a single RGBA unsigned integer.
 
+unsigned int abgr () const
 Returns the color as a single ABGR unsigned integer.
 
+unsigned int bgra () const
 Returns the color as a single BGRA unsigned integer.
 
+const unsigned char * data () const
 Gets the color array.
 
+unsigned char * data ()
 Gets the color array.
 
+void set (unsigned int red, unsigned int green, unsigned int blue, unsigned int alpha)
 Sets four color channels.
 
+void set (unsigned int red, unsigned int green, unsigned int blue)
 Sets three color channels.
 
+void set (unsigned int hex)
 Sets three color channels from a hexadecimal code.
 
+void setVec (const unsigned int channels[NumChannels])
 Sets four color channels from an array.
 
+void setAlpha (unsigned int alpha)
 Sets the alpha channel.
 
+Coloroperator= (const Colorf &color)
 Assignment operator from a normalized float color.
 
+bool operator== (const Color &color) const
 Equality operator.
 
+Coloroperator+= (const Color &v)
 
+Coloroperator-= (const Color &v)
 
+Coloroperator*= (const Color &color)
 
+Coloroperator*= (float scalar)
 Multiplication by a constant scalar.
 
+Color operator+ (const Color &color) const
 
+Color operator- (const Color &color) const
 
+Color operator* (const Color &color) const
 
+Color operator* (float scalar) const
 Multiplication by a constant scalar.
 
+ + + + + + + + + + + + + + + + + + + +

+Static Public Attributes

+static const int NumChannels = 4
 
+static const Color Black
 
+static const Color White
 
+static const Color Red
 
+static const Color Green
 
+static const Color Blue
 
+static const Color Yellow
 
+static const Color Magenta
 
+static const Color Cyan
 
+

Detailed Description

+

A four channels unsigned char color.

+

The documentation for this class was generated from the following files:
    +
  • include/ncine/Color.h
  • +
  • src/graphics/Color.cpp
  • +
+
+ + + + diff --git a/master/classncine_1_1_color__coll__graph.map b/master/classncine_1_1_color__coll__graph.map new file mode 100644 index 0000000000..5e375895f7 --- /dev/null +++ b/master/classncine_1_1_color__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/master/classncine_1_1_color__coll__graph.md5 b/master/classncine_1_1_color__coll__graph.md5 new file mode 100644 index 0000000000..ab8963f4dc --- /dev/null +++ b/master/classncine_1_1_color__coll__graph.md5 @@ -0,0 +1 @@ +7ba2e5c492de6874e14bec4118caba98 \ No newline at end of file diff --git a/master/classncine_1_1_color__coll__graph.png b/master/classncine_1_1_color__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..42e557864742e71427fc0bf666cde208425eea73 GIT binary patch literal 6059 zcmZu#byQSc-yKnD1q37=gol(8kS-;qQ(#DG0f+8Z6iMk67&;_IVhAM!1qESfkVaZM zX2=2F!}GoWylZ`n#hnYY?z!juV*mEuk=mNdw}|P9ArQzdm8S~2;Ij?3 z6_qv%CMd+URQcD?t(gdwxqk61`DZhqgBU{0W?RoUEV$$dU$Me+ZfID?Jx-*LCJpYk z>Yh*IN&W8){Tn2bUqC>>?r(X><;BaX`aYhZXY64XHAaHRMG_>0gpYNos1(~LCo}oX zK7X?5zT+ujW=&S9X|t<_y+cPAN&fomXor%CsXtTLDIzu&zG*oc36^FZ8yh2~6TIQ# z;=*UzsBQfvH}^i3;*)~G`IVKf{pDX}xRdp4NuP+AnD2dku_ExvhfZTWQBhGJF?yz^ z>aMO2U%h%Y3PqC8;SyC;)zrkj)~V(~E~Vw)-L9-Qv$A55BZNx%epO})`hK?4*8l#V zrDc|MKx)w0VM1nRPw2JlV(v>3=1db46H*7gLY|wy6Iud}hVm6jhVl7X%ib%+ zL3tr92$dxENCGlwDLgPR@O!bw2gl8SBqWSum}JcfnHBu~KSRE!a2tMvZ!9mf-Q_do zoSvRm(AQ6H%IR|UTTWXqvO-%J7$~W#64TMqsb@=|x(9a`N&g$BS|0aF2r(jjKP- z<}T5(459;nJu8e+QA0zz5K}X=Q5qeM{QUe~48~@pRA;(1XiCajRE za&LeCV|^buDtNHYaWo2?$$fo<%b?P@2~kXQKnbo{&$Ftn3(u?odacLWTYd5 zlao`u%bez1YtY`ofqeOBrj$1wPPautS-F6d*ucQx`1p8!e*Q5C5(;i+W(I3=XUogW z`#m*vFy3~Nl4kC&g6yk@PhIT`vo_fH<%`EkFC7kt!%V(-L=V#Yrmao(Tlg)#5)Et- zA@jirTQn=U{9^mRLSu^tH;&pX>TnTJknzsMcK*>R7ikm>zs)9b&fT#Vgo!6c1HL^{ zMhTLo-ykF;q(k)Yfnuy=sb*(aO z>KH6gZt~uumku~&Wo0dVQmi{>x1&?TIXE~7j#xgG#ICW>Nn=rAXpxbT5s2ISVPk7M zSZ%EgF{maHAsF3L)_1VlkF3s)jlFfWJ)_saZEx@Wcj#uUQkX$`k=YmTTN38+hQZzHF)Hxz zeR?UA`j^bIvIq>ubJln97B)RPnuNc37f-KPotcX(a$&)$_3|P>PEL-Ki%Z}v-F8=v zy-dwf=&R&Tv%Ir29~zCmar5Rg75Mw;=mPuxoESPGd;$W36?FEmWG=lIV-*<_Klt=A z+0@v;<$r?yZ=3sz2c14@Z*Q-2nS+{`n4Draet?Aw8p1CdlRzdWRuLiSPnO@-#wr;& zG_&rDil!YO`-18@-mLAX5Af|0GTajF7F_d`__MzL-~zWQJO0}aBsp@tgC2YEc0HQv~4xsR*=0m(-Zx zx9M}x@S9VGiuvu^#KN~{Tevs3wmKW;g3Gthrsgi#@$m3I*75T4QiD@dgRoLhHMkfa z1^D?9(a_NB&G^hk=I66i2cEe9nV-)+!V^fS808w((A2!GofBw4DJd!0(b4g{(d{1y z8ynlpna?S7LU#HNPPVq4Nm?@9(@h=|Uwn|W)jxkeZEk6)MxoePSnw(heqlGp`wmS3 z1bPkS$rC_oYHA$eG!zu=@0fz0nwvub1Q?l^9N-T6%YQg=o0@>oJ~^N1>can8;Zh26 z=QUJr$Pb$N*6jT%pPgCITc5l(3`Cr#e_my4sF3J+qw7`yi(Y1t1gP>`3?k%r?!3;< zzBgQ~@oi!vV`M~sVQ~@kxz%)|+vAhbknQQFrKP2-HBfPx#N!g;;?hH_EJ&Pg_RSkN zTsMCU1Yexk2L=T>%(Y5`t_7%|>f%TV)>JBJ@9&SRGW+uJESAgkjPqxOW?6f3a`FHu z{jo}uA8&{#=>x>bl3>}o-^k@YInPMEeEHJ%WI2r?Kx{P8Be?9z@5#xb&t6UvrZ|UAeQ(V)GF#3e4^$dks z<2CzSSN$$m!gU_P%*?Eyps+h;;xbsIMg#J2e7b>zRa@Nz{p7I8JeHAlpoUMx91#)m ze0`*>`Diu(vpGS@z`*d?d#h)pOb?6K2Bsd5ab3ipZ|{a{Y}LHCryV{WSL7|8pB>qE zC$b%%omsoMXvIOLkN1D^YXqAM9*5Wy52-bN(o;kCciL?n3>B$?#;1Tno%PT9K8PNG zy(AzI{UCItcM-zHVsKMaMjag;8+&_7C{)wPh_>T^iPf?$p29NWRty{aIy z#|ekmAl74E!mh=8AJwd9>){Mwpsjl^Kh6@eza2(EhEGa^fDaeP>U27A4}Hj!vVXC+ z&}rHh+%h)eD8H1_24!Jk`Q6}Ru_)CT+We~%S10_TWti{aV%LK)%O~X*Vx{aA*+50n zNtM%Rk$_f?6dm&oiy-W?ltVr~zV)5(sD65rta|354-Dr$OcWGPonYg&b#kBV$+e~U@ci%ialq06>~D1uYHP`g6|y8v8|LvL$qEB+LBRQ`o?>G3AY zX&ma{HrYde-qRL*eyR*TZo}=9MBn9Q5fe)f4TXTI)CHzCeIc!5(2QDbN4X7YSWR&a zd`bNFrPhPAqZPLu13&ba?N_B<=&2EOU^|kNcw-#NAtI7`a0PG;2pW!TyU1KxvI!@pd)?9^4N|}k zpjfX&bJV{oZ=p7>MhtHIOg9rWaNqIX;zk`>Ht5t7pA6djmV~A;@I(+kRnI0UnE2{C z0iHJCG%sKB0PxKH^eG;cnoz*u%S=%hbK6PlQe?o5=%Ib9npAdtN{wr)A~Kig{P?&-0@u8(fcwlDxh zPUV4Fjns^T>iCI9uT0n@Dp50_fw*{hSlQXbLoUzeu7J#{lQ?OTNz64ApmBV9`V0Me z!vU_M#<-W?qM0zPHYQr1Z=&R_D|3ywg>#1Mil{-`*e+bOHt(Zo+D!rmd~^wjU8LsM zJ~*)Mw81fpmpK_*%d*~^M*fGJM2`WttgfzJT3*f@{wwCTaAT?-u9sHy`t|Ge(KPbc zF0CiwWU@HzAP>xXIr0t_m4c(=gYE5Y^(?Uj0AwG7p3PP@E?S%&ZaD>RGKf0w&Rt%l z-IMe#jT7+MHZ9i7Ry8*_PZ724swX2N%F{x~DB;+g##+;OzojGP*)raq z3x*J{d1~*uzZl!UTs_k;G5Rwfnwgm?4fgQxz^0-f3_GHXV6Z=HYo*)ezJn`EOZr5? z)>GpcU##VDJ(0Oy&R36`>t*luo5+!h0eOTPls9Lt>ujiM4c}b}_y=b)K2IsDtgP%Q zk=@PoR3B5sNsI{GCptVl^pctD?7RuSYCT=&_CMM-gEIhj(bLm2;D~bkYEa=~Sm85X z612Q5>oI7=?Hl79_G3+C$&7Dh0nM05Hk}XSjz;t|6tx=$FfuaIK6*h8iiK5LIvb4U zJCu|gsG5cO`LFTJ@)1!{EJ8v_iHUcDPnNH0r6Y`BnQ0evfsn%xD>kcVDk^_Btqu1U zfb#+35~sZN4=-Rc=QeVPCv?Wn^SVtK`Q~LGljc-%>4I zye$`Ka(v&8FV#!q;J8u=sZyiku+GUL{WIP=U-h3&$Y*La<2zh3GZc{&Z+MYZzmyw5gnTr zPeS4E*u`WVlvkM#Jp-!lsTTb*fBYCC>OB2*a?;qW>g_(;%;JwY5L!7)%RF&JrV9RT z#-9K((gkg!xMqH?--`QkO_cqU>;f_3&3VU}Q#=7$gCr>9Ld5i+-uOXzlfSBJrB?VdR>P*J_f=LGB@ zNG7A!z@}MU4+Dd{{nAH_prSC_Gamp5>~;^WDKkN*%n%G@`!0}~riILy{m+Ou*4io17}yuC#veYRP}#hZFk<_6L~2BEz! zxK-jtiViIvdM1#_ASD;2$1^xe#I0tUEiWeQdehrE5P=<_b+5Q31qB7F9$D4l?(Q!5 zBaX>_YZB$THgFASzS-b2I5sPaY8BKl2-ByA2K(inl&hWYEhwVQg18@z8(>c?ftX1N z3%hRJ6=Mmomx`KNz#p^bI5lcuDbCGJ0!VBN*&XhXiy>{U-Y)&1;B?Yp6)gpY8v%!# ze?|>0Di3RkaQL_43Xx~LXc10(0zT1gn37LO=x@ggJPww_hntdG5(Lb ztw1cPm~R}c^pzj_YEY+gdu~mpJPE@u8_htPw|s2abb3!^$HBn?Bu@!`L!Q8>!WB*L z(l?q#InkV)ocQ|slGD=uWV$?7hGdGsiPLjBnxD7h-DVUE1?>T70=DXuXZ(c88Vg$u zVceQ)Lv$x`cx;SSc0pBbiG=yQPESsxdtN;iF6E2dacgiI=c}l!^gEoeZ}P`JaB1G_ zS~SXUUQe+|z|PY?1o!1c2{TeS{rx;N=#Q*7g#hmN$uUe*GH~|QJrz+ zq}HL_OTZnyf$x_)1EP8yhA? zGHV5_;Jus@5}8$I*z&KHuv&aY9gMT0|IVy5U`J>`onqFH08Lj%$e7KD7+y2B2CI_N zi@UROadG*>(%+FW6@wYeDB<~Z#s_!o<|%OxI7ILm%drgL805+Xoz5>U72^BDV01s; z-?RQZROH_tvNpgBv=CM`(*mH<3q2rTVitCGkocz=LiVnno~(eZ z78bHP&+)aj&*aI!qZP1vGwbK(=BA*in2?>V;p-~~NcyOO)@+jp$8~(t=Rm&_GLKAs zpjUk>@)m4?^B?8+OS^x*J@$(~J3AXLRH3{ghzb8Fb8>RdZ%)+4FpBH$G@sthy15uV zIhOYC6G}1nB_%%~LM}4Cy(24c(8C@aEDq$!1F)h3!Uc>UEV|sOeWE9Z*U`kHMyAas z88qT>OMuVe*3=KsNfTf%+A{YtrTheeadYK;Da}DYN|4dyRz7_@=7_rG9wG!xj2IEC z?}W1fJJO(5i}4rrw4^(Md{KG&v{Y~oS^kb>AhVzp4hI@ni2=kLw2;3~{P>GUqzoc4 zo12>t4$eROH$r&R%}44*1dCub`d1fIfK*pj&cCh#{(Eoa+bfUe12TU%3N%=mltpyO0M zFNk_CLKXpxp1s95*_xLVf`AskC+{fqv<8YCP-8b&*ZD|}ocR<(a~&7s2K#;}K*_v% zvl<&BFi=vaThF#7jZu!ayXId|3GMuJOFKJPC`rkoX){!)a-{)faev6zOBmu9MBl%D zjTe0Sm*Z+A2nq@kl91>z35knmIE`0bbKRYP0%F$H9!4;_1-QI594_Z?ET8fdT%rG!c-jT^1KW^!XV-!#HnF|_U zDwhGxrT*OU^B%Ap0KqA+XbUE#eF(9)w_jLT7+C~*fAMb#qS)_X#n;~-@1f%eC$KfF wQ|HsT`Vxy0!DSghFpTHF_Tc|>Q*n9SBcB*b=ciH)+;@nIqNYNX-1FD}0VWbC + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::ColorAffector Member List
+
+
+ +

This is the complete list of members for ncine::ColorAffector, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + +
addColorStep(float age, const Colorf &color) (defined in ncine::ColorAffector)ncine::ColorAffector
addColorStep(const ColorStep &step) (defined in ncine::ColorAffector)ncine::ColorAffectorinline
affect(Particle *particle, float normalizedAge) overridencine::ColorAffectorvirtual
ncine::ParticleAffector::affect(Particle *particle)ncine::ParticleAffector
clearSteps() overridencine::ColorAffectorinlinevirtual
clone() constncine::ColorAffectorinline
ColorAffector() (defined in ncine::ColorAffector)ncine::ColorAffectorinline
ColorAffector(ColorAffector &&)=defaultncine::ColorAffector
ColorAffector(const ColorAffector &other)=defaultncine::ColorAffectorprotected
enabled_ncine::ParticleAffectorprotected
isEnabled() constncine::ParticleAffectorinline
numSteps() const overridencine::ColorAffectorinlinevirtual
operator=(ColorAffector &&)=defaultncine::ColorAffector
ParticleAffector(Type type) (defined in ncine::ParticleAffector)ncine::ParticleAffectorinline
ParticleAffector(const ParticleAffector &other)=defaultncine::ParticleAffectorprotected
removeStep(unsigned int index) overridencine::ColorAffectorvirtual
setEnabled(bool enabled)ncine::ParticleAffectorinline
steps() (defined in ncine::ColorAffector)ncine::ColorAffectorinline
steps() const (defined in ncine::ColorAffector)ncine::ColorAffectorinline
type() constncine::ParticleAffectorinline
Type enum name (defined in ncine::ParticleAffector)ncine::ParticleAffector
type_ncine::ParticleAffectorprotected
~ParticleAffector() (defined in ncine::ParticleAffector)ncine::ParticleAffectorinlinevirtual
+ + + + diff --git a/master/classncine_1_1_color_affector.html b/master/classncine_1_1_color_affector.html new file mode 100644 index 0000000000..d749d31e3a --- /dev/null +++ b/master/classncine_1_1_color_affector.html @@ -0,0 +1,219 @@ + + + + + + + +nCine: ncine::ColorAffector Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::ColorAffector Class Reference
+
+
+ +

Particle color affector. + More...

+ +

#include <ParticleAffectors.h>

+
+Inheritance diagram for ncine::ColorAffector:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for ncine::ColorAffector:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + +

+Classes

struct  ColorStep
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

ColorAffector (ColorAffector &&)=default
 Default move constructor.
 
+ColorAffectoroperator= (ColorAffector &&)=default
 Default move assignment operator.
 
+ColorAffector clone () const
 Returns a copy of this object.
 
+void affect (Particle *particle, float normalizedAge) override
 Affects the color of the specified particle.
 
+void addColorStep (float age, const Colorf &color)
 
+void addColorStep (const ColorStep &step)
 
+unsigned int numSteps () const override
 Returns the number of steps.
 
+void removeStep (unsigned int index) override
 Removes the step at the specified position index.
 
+void clearSteps () override
 Removes all steps.
 
+nctl::Array< ColorStep > & steps ()
 
+const nctl::Array< ColorStep > & steps () const
 
- Public Member Functions inherited from ncine::ParticleAffector
ParticleAffector (Type type)
 
+void affect (Particle *particle)
 Affects a property of the specified particle.
 
+Type type () const
 Returns the affector type.
 
+bool isEnabled () const
 Returns true if the affector is enabled.
 
+void setEnabled (bool enabled)
 Enables or disables the affector.
 
+ + + + + + + + +

+Protected Member Functions

ColorAffector (const ColorAffector &other)=default
 Protected default copy constructor used to clone objects.
 
- Protected Member Functions inherited from ncine::ParticleAffector
ParticleAffector (const ParticleAffector &other)=default
 Protected default copy constructor used to clone objects.
 
+ + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ncine::ParticleAffector
enum class  Type {
+  COLOR +, SIZE +, ROTATION +, POSITION +,
+  VELOCITY +
+ }
 
- Protected Attributes inherited from ncine::ParticleAffector
+Type type_
 Affector type.
 
+bool enabled_
 A flag indicating whether the affector is enabled or not.
 
+

Detailed Description

+

Particle color affector.

+

The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classncine_1_1_color_affector__coll__graph.map b/master/classncine_1_1_color_affector__coll__graph.map new file mode 100644 index 0000000000..b0413f0a36 --- /dev/null +++ b/master/classncine_1_1_color_affector__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classncine_1_1_color_affector__coll__graph.md5 b/master/classncine_1_1_color_affector__coll__graph.md5 new file mode 100644 index 0000000000..5076cff512 --- /dev/null +++ b/master/classncine_1_1_color_affector__coll__graph.md5 @@ -0,0 +1 @@ +ee2ecd6172452fd7b33374349c429a42 \ No newline at end of file diff --git a/master/classncine_1_1_color_affector__coll__graph.png b/master/classncine_1_1_color_affector__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..063d13acc11e0dc9c1edc8aeb6f745bf3b797c10 GIT binary patch literal 3974 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 literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_color_affector__inherit__graph.map b/master/classncine_1_1_color_affector__inherit__graph.map new file mode 100644 index 0000000000..b0413f0a36 --- /dev/null +++ b/master/classncine_1_1_color_affector__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classncine_1_1_color_affector__inherit__graph.md5 b/master/classncine_1_1_color_affector__inherit__graph.md5 new file mode 100644 index 0000000000..5076cff512 --- /dev/null +++ b/master/classncine_1_1_color_affector__inherit__graph.md5 @@ -0,0 +1 @@ +ee2ecd6172452fd7b33374349c429a42 \ No newline at end of file diff --git a/master/classncine_1_1_color_affector__inherit__graph.png b/master/classncine_1_1_color_affector__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..063d13acc11e0dc9c1edc8aeb6f745bf3b797c10 GIT binary patch literal 3974 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 literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_color_hdr-members.html b/master/classncine_1_1_color_hdr-members.html new file mode 100644 index 0000000000..2e7bb42ada --- /dev/null +++ b/master/classncine_1_1_color_hdr-members.html @@ -0,0 +1,112 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::ColorHdr Member List
+
+
+ +

This is the complete list of members for ncine::ColorHdr, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
b() constncine::ColorHdrinline
Black (defined in ncine::ColorHdr)ncine::ColorHdrstatic
Blue (defined in ncine::ColorHdr)ncine::ColorHdrstatic
clamp()ncine::ColorHdr
clamped() constncine::ColorHdr
ColorHdr()ncine::ColorHdr
ColorHdr(float red, float green, float blue)ncine::ColorHdr
ColorHdr(const float channels[NumChannels])ncine::ColorHdrexplicit
ColorHdr(const Colorf &color)ncine::ColorHdrexplicit
data() constncine::ColorHdrinline
data()ncine::ColorHdrinline
g() constncine::ColorHdrinline
Green (defined in ncine::ColorHdr)ncine::ColorHdrstatic
NumChannels (defined in ncine::ColorHdr)ncine::ColorHdrstatic
operator*(const ColorHdr &color) const (defined in ncine::ColorHdr)ncine::ColorHdr
operator*(float scalar) constncine::ColorHdr
operator*=(const ColorHdr &color) (defined in ncine::ColorHdr)ncine::ColorHdr
operator*=(float scalar)ncine::ColorHdr
operator+(const ColorHdr &color) const (defined in ncine::ColorHdr)ncine::ColorHdr
operator+=(const ColorHdr &v) (defined in ncine::ColorHdr)ncine::ColorHdr
operator-(const ColorHdr &color) const (defined in ncine::ColorHdr)ncine::ColorHdr
operator-=(const ColorHdr &v) (defined in ncine::ColorHdr)ncine::ColorHdr
operator=(const Colorf &color)ncine::ColorHdr
r() constncine::ColorHdrinline
Red (defined in ncine::ColorHdr)ncine::ColorHdrstatic
set(float red, float green, float blue)ncine::ColorHdr
setVec(const float channels[NumChannels])ncine::ColorHdr
White (defined in ncine::ColorHdr)ncine::ColorHdrstatic
+ + + + diff --git a/master/classncine_1_1_color_hdr.html b/master/classncine_1_1_color_hdr.html new file mode 100644 index 0000000000..8e72975f99 --- /dev/null +++ b/master/classncine_1_1_color_hdr.html @@ -0,0 +1,211 @@ + + + + + + + +nCine: ncine::ColorHdr Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::ColorHdr Class Reference
+
+
+ +

A three channels unclamped float color. + More...

+ +

#include <ColorHdr.h>

+
+Collaboration diagram for ncine::ColorHdr:
+
+
Collaboration graph
+ + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

ColorHdr ()
 Default constructor (white color)
 
ColorHdr (float red, float green, float blue)
 Three channels constructor.
 
ColorHdr (const float channels[NumChannels])
 Three channels constructor from an array.
 
ColorHdr (const Colorf &color)
 Constructor taking a float color.
 
+float r () const
 Gets the red channel of the color.
 
+float g () const
 Gets the green channel of the color.
 
+float b () const
 Gets the blue channel of the color.
 
+const float * data () const
 Gets the color array.
 
+float * data ()
 Gets the color array.
 
+void set (float red, float green, float blue)
 Sets three color channels.
 
+void setVec (const float channels[NumChannels])
 Sets four color channels from an array.
 
+void clamp ()
 Clamps negative channel values to zero.
 
+ColorHdr clamped () const
 Returns a clamped version of this color.
 
+ColorHdroperator= (const Colorf &color)
 Assignment operator from a float color.
 
+ColorHdroperator+= (const ColorHdr &v)
 
+ColorHdroperator-= (const ColorHdr &v)
 
+ColorHdroperator*= (const ColorHdr &color)
 
+ColorHdroperator*= (float scalar)
 Multiplication by a constant scalar.
 
+ColorHdr operator+ (const ColorHdr &color) const
 
+ColorHdr operator- (const ColorHdr &color) const
 
+ColorHdr operator* (const ColorHdr &color) const
 
+ColorHdr operator* (float scalar) const
 Multiplication by a constant scalar.
 
+ + + + + + + + + + + + + +

+Static Public Attributes

+static const int NumChannels = 3
 
+static const ColorHdr Black
 
+static const ColorHdr White
 
+static const ColorHdr Red
 
+static const ColorHdr Green
 
+static const ColorHdr Blue
 
+

Detailed Description

+

A three channels unclamped float color.

+

The documentation for this class was generated from the following files:
    +
  • include/ncine/ColorHdr.h
  • +
  • src/graphics/ColorHdr.cpp
  • +
+
+ + + + diff --git a/master/classncine_1_1_color_hdr__coll__graph.map b/master/classncine_1_1_color_hdr__coll__graph.map new file mode 100644 index 0000000000..c5edc70921 --- /dev/null +++ b/master/classncine_1_1_color_hdr__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/master/classncine_1_1_color_hdr__coll__graph.md5 b/master/classncine_1_1_color_hdr__coll__graph.md5 new file mode 100644 index 0000000000..eacf50780d --- /dev/null +++ b/master/classncine_1_1_color_hdr__coll__graph.md5 @@ -0,0 +1 @@ +c969e43bdb337b0f856aadbfc462f68a \ No newline at end of file diff --git a/master/classncine_1_1_color_hdr__coll__graph.png b/master/classncine_1_1_color_hdr__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..4117e52410112bcb0c1040667a5a993f69f63b66 GIT binary patch literal 4605 zcmY*d2QXY~*hXAI5UxbT3K2rI2v#S0L=U1b!6G7h?-C_sEn!88E=0Ln5ZxlWT_r?c z(QEX&tN&l_{CEEOXJ_}!nK|b>=Y7BDeagOnrlmqn$wWy+L`1FnR7n>cyTJE3IT`pB z#k2E*1DTb&iW1S~pHCJ#Kc0w)u0mBw{<%-uX1f1#eb31**;8gEIq48e*XCER%((;U zM68u4sWtkhZ#WA`n6O(xg?so6BqX$$%K17TZu96s6gm2^y+Z|5mAcltzx&iV5g{SW z;<0aFfAt4lT9ikyGmA5aw;`JcOo}_EPbUU~j%3Fqc>KCk#T%@9fPH}N@ zvb3)dF)?wPly|=!Oi76p#gVOBxN~^8bU5}R|8Qk2At9l?vvYoZJt`-MU7&G?WMpK- zac_8d_|fZ8zSg!joY^!J8_iqgR}Kywyu49*`C4>0ZdgONeq<|lS7<0IUOB~YuQ&&v zLK?ic4H5;+8PSu8x(x=<4Vp zk-tvQz`%KhO!nHXhaVwKOdpde=sCMhYn((<*txk?GsK)T_^=genVAAt_P(emO-A35 z@+xL#WfeF*Il)j+P~;`nslX&i8M1A92Zx81oSYtlgeR;Bg-};5k`S2KlM$4c$ z=pYbvd3j|A-CvLMXZ@u7% zsHpcyA_&Ee&%Un+yn#!?%lg*RPVuk>me-b z^XHHf(;BzcA8hwKF&KndgO{NF@Pj<9bTt5j{3;4pay|uJ-M_)U85DhbWJ%KB-=CY8 zR}EQTSWvXGx)&E0X9s1v*olzcIrym!Y0u5gedKpw*V@{;v%k+SC6!vJm(SE*@SLaG z>6hBmr{sEh8ahr`BwJ5~Pp0BsyQ{m8BjhZozz(;N{|7j9ivKIKZJz&58FFe&$HK)) z8NP`9dqk7ym8`R{uml{A7-Bp?Ur`)7=H@hV`uaD^%gcTI{TF6uS4SM1oE!-dx-yXY@?dq)48v6lus@`~?xzAn``sk+_V%{PDl;f5 zEH35{5GcbQPr@X?0^Pm6&?52g&8!(285(KggF`lqMq`F$=8n+*(b2@oNfVp;s)kV< z4w9gztg1>8N=9A3o-!H9E-W1HyTAO))9QQk)dA^!Du4V|mB(!WcmR=zQBS)q`6_r9 zO-M*cK|#T+cJN7jMK2Z`m7n2Q%^@1CNoK zX})>3Qtq{BqMnq6l;BWp?df?xJ8L28G-U_9=o6da;NhVJwVa)uMaIO4`uJ73uV{^y zn06s=3qN@H&~~^$r@gDo+nDi3j7{J`hD>j&n0DmCV~fqnDsc&kLjmqW7s3(nOrnX zWlH{v>A>%t<7c*a9WVB<0s&x*07J!`ocK-s`b9xay|k8}DY{RSLPOt2MZs5pWZQ14c)QI|cQ;>N_?rjpDueCv*+%0Dr!$xR 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 literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_colorf-members.html b/master/classncine_1_1_colorf-members.html new file mode 100644 index 0000000000..d693cf0cb1 --- /dev/null +++ b/master/classncine_1_1_colorf-members.html @@ -0,0 +1,118 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::Colorf Member List
+
+
+ +

This is the complete list of members for ncine::Colorf, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
a() constncine::Colorfinline
b() constncine::Colorfinline
Black (defined in ncine::Colorf)ncine::Colorfstatic
Blue (defined in ncine::Colorf)ncine::Colorfstatic
Colorf()ncine::Colorf
Colorf(float red, float green, float blue)ncine::Colorf
Colorf(float red, float green, float blue, float alpha)ncine::Colorf
Colorf(const float channels[NumChannels])ncine::Colorfexplicit
Colorf(const Color &color)ncine::Colorfexplicit
Colorf(const ColorHdr &color)ncine::Colorfexplicit
Cyan (defined in ncine::Colorf)ncine::Colorfstatic
data() constncine::Colorfinline
data()ncine::Colorfinline
g() constncine::Colorfinline
Green (defined in ncine::Colorf)ncine::Colorfstatic
Magenta (defined in ncine::Colorf)ncine::Colorfstatic
NumChannels (defined in ncine::Colorf)ncine::Colorfstatic
operator*(const Colorf &color) const (defined in ncine::Colorf)ncine::Colorf
operator*(float scalar) constncine::Colorf
operator*=(const Colorf &color) (defined in ncine::Colorf)ncine::Colorf
operator*=(float scalar)ncine::Colorf
operator+(const Colorf &color) const (defined in ncine::Colorf)ncine::Colorf
operator+=(const Colorf &v) (defined in ncine::Colorf)ncine::Colorf
operator-(const Colorf &color) const (defined in ncine::Colorf)ncine::Colorf
operator-=(const Colorf &v) (defined in ncine::Colorf)ncine::Colorf
operator=(const Color &color)ncine::Colorf
r() constncine::Colorfinline
Red (defined in ncine::Colorf)ncine::Colorfstatic
set(float red, float green, float blue, float alpha)ncine::Colorf
set(float red, float green, float blue)ncine::Colorf
setAlpha(float alpha)ncine::Colorf
setVec(const float channels[NumChannels])ncine::Colorf
White (defined in ncine::Colorf)ncine::Colorfstatic
Yellow (defined in ncine::Colorf)ncine::Colorfstatic
+ + + + diff --git a/master/classncine_1_1_colorf.html b/master/classncine_1_1_colorf.html new file mode 100644 index 0000000000..300f259a6c --- /dev/null +++ b/master/classncine_1_1_colorf.html @@ -0,0 +1,232 @@ + + + + + + + +nCine: ncine::Colorf Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::Colorf Class Reference
+
+
+ +

A four channels normalized float color. + More...

+ +

#include <Colorf.h>

+
+Collaboration diagram for ncine::Colorf:
+
+
Collaboration graph
+ + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Colorf ()
 Default constructor (white color)
 
Colorf (float red, float green, float blue)
 Three channels constructor.
 
Colorf (float red, float green, float blue, float alpha)
 Four channels constructor.
 
Colorf (const float channels[NumChannels])
 Four channels constructor from an array.
 
Colorf (const Color &color)
 Constructor taking an unsigned char color.
 
Colorf (const ColorHdr &color)
 Constructor taking an unclamped float color.
 
+float r () const
 Gets the red channel of the color.
 
+float g () const
 Gets the green channel of the color.
 
+float b () const
 Gets the blue channel of the color.
 
+float a () const
 Gets the alpha channel of the color.
 
+const float * data () const
 Gets the color array.
 
+float * data ()
 Gets the color array.
 
+void set (float red, float green, float blue, float alpha)
 Sets four color channels.
 
+void set (float red, float green, float blue)
 Sets three color channels.
 
+void setVec (const float channels[NumChannels])
 Sets four color channels from an array.
 
+void setAlpha (float alpha)
 Sets the alpha channel.
 
+Colorfoperator= (const Color &color)
 Assignment operator from an unsigned char color.
 
+Colorfoperator+= (const Colorf &v)
 
+Colorfoperator-= (const Colorf &v)
 
+Colorfoperator*= (const Colorf &color)
 
+Colorfoperator*= (float scalar)
 Multiplication by a constant scalar.
 
+Colorf operator+ (const Colorf &color) const
 
+Colorf operator- (const Colorf &color) const
 
+Colorf operator* (const Colorf &color) const
 
+Colorf operator* (float scalar) const
 Multiplication by a constant scalar.
 
+ + + + + + + + + + + + + + + + + + + +

+Static Public Attributes

+static const int NumChannels = 4
 
+static const Colorf Black
 
+static const Colorf White
 
+static const Colorf Red
 
+static const Colorf Green
 
+static const Colorf Blue
 
+static const Colorf Yellow
 
+static const Colorf Magenta
 
+static const Colorf Cyan
 
+

Detailed Description

+

A four channels normalized float color.

+

The documentation for this class was generated from the following files:
    +
  • include/ncine/Colorf.h
  • +
  • src/graphics/Colorf.cpp
  • +
+
+ + + + diff --git a/master/classncine_1_1_colorf__coll__graph.map b/master/classncine_1_1_colorf__coll__graph.map new file mode 100644 index 0000000000..3b3a5d990c --- /dev/null +++ b/master/classncine_1_1_colorf__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/master/classncine_1_1_colorf__coll__graph.md5 b/master/classncine_1_1_colorf__coll__graph.md5 new file mode 100644 index 0000000000..03b7038d71 --- /dev/null +++ b/master/classncine_1_1_colorf__coll__graph.md5 @@ -0,0 +1 @@ +365c122ad83a8b941ff728c4c4bdbb4f \ No newline at end of file diff --git a/master/classncine_1_1_colorf__coll__graph.png b/master/classncine_1_1_colorf__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..275118fc9f35dff2a9e25dd781a773a93620ea68 GIT binary patch literal 5562 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 ry_A({Nbs5e;>-UPK>gnY<(zs@O|)?xnzK5n?3 literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_display_mode-members.html b/master/classncine_1_1_display_mode-members.html new file mode 100644 index 0000000000..665a1cbace --- /dev/null +++ b/master/classncine_1_1_display_mode-members.html @@ -0,0 +1,98 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::DisplayMode Member List
+
+
+ +

This is the complete list of members for ncine::DisplayMode, including all inherited members.

+ + + + + + + + + + + + + + + +
alphaBits() constncine::DisplayModeinline
blueBits() constncine::DisplayModeinline
depthBits() constncine::DisplayModeinline
DisplayMode(unsigned char redBits, unsigned char greenBits, unsigned char blueBits) (defined in ncine::DisplayMode)ncine::DisplayModeinline
DisplayMode(unsigned char redBits, unsigned char greenBits, unsigned char blueBits, unsigned char alphaBits) (defined in ncine::DisplayMode)ncine::DisplayModeinline
DisplayMode(unsigned char depthBits, unsigned char stencilBits, DoubleBuffering dbMode, VSync vsMode) (defined in ncine::DisplayMode)ncine::DisplayModeinline
DisplayMode(unsigned char redBits, unsigned char greenBits, unsigned char blueBits, unsigned char alphaBits, unsigned char depthBits, unsigned char stencilBits, DoubleBuffering dbMode, VSync vsMode) (defined in ncine::DisplayMode)ncine::DisplayModeinline
DoubleBuffering enum name (defined in ncine::DisplayMode)ncine::DisplayMode
greenBits() constncine::DisplayModeinline
hasVSync() constncine::DisplayModeinline
isDoubleBuffered() constncine::DisplayModeinline
redBits() constncine::DisplayModeinline
stencilBits() constncine::DisplayModeinline
VSync enum name (defined in ncine::DisplayMode)ncine::DisplayMode
+ + + + diff --git a/master/classncine_1_1_display_mode.html b/master/classncine_1_1_display_mode.html new file mode 100644 index 0000000000..001eafd1e6 --- /dev/null +++ b/master/classncine_1_1_display_mode.html @@ -0,0 +1,154 @@ + + + + + + + +nCine: ncine::DisplayMode Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::DisplayMode Class Reference
+
+
+ +

Display properties. + More...

+ +

#include <DisplayMode.h>

+ + + + + + +

+Public Types

enum class  DoubleBuffering { DISABLED +, ENABLED + }
 
enum class  VSync { DISABLED +, ENABLED + }
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

DisplayMode (unsigned char redBits, unsigned char greenBits, unsigned char blueBits)
 
DisplayMode (unsigned char redBits, unsigned char greenBits, unsigned char blueBits, unsigned char alphaBits)
 
DisplayMode (unsigned char depthBits, unsigned char stencilBits, DoubleBuffering dbMode, VSync vsMode)
 
DisplayMode (unsigned char redBits, unsigned char greenBits, unsigned char blueBits, unsigned char alphaBits, unsigned char depthBits, unsigned char stencilBits, DoubleBuffering dbMode, VSync vsMode)
 
+unsigned char redBits () const
 Returns the number of bits for the red channel.
 
+unsigned char greenBits () const
 Returns the number of bits for the green channel.
 
+unsigned char blueBits () const
 Returns the number of bits for the blue channel.
 
+unsigned char alphaBits () const
 Returns the number of bits for the alpha channel.
 
+unsigned char depthBits () const
 Returns the number of bits for the depth buffer.
 
+unsigned char stencilBits () const
 Returns the number of bits for the stencil buffer.
 
+bool isDoubleBuffered () const
 Returns true if the display is double buffered.
 
+bool hasVSync () const
 Returns true if the dislpay has V-sync enabled.
 
+

Detailed Description

+

Display properties.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classncine_1_1_drawable_node-members.html b/master/classncine_1_1_drawable_node-members.html new file mode 100644 index 0000000000..60e3a6ac35 --- /dev/null +++ b/master/classncine_1_1_drawable_node-members.html @@ -0,0 +1,253 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::DrawableNode Member List
+
+
+ +

This is the complete list of members for ncine::DrawableNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
aabb() constncine::DrawableNodeinline
aabb_ncine::DrawableNodeprotected
AabbBit enum value (defined in ncine::SceneNode)ncine::SceneNodeprotected
absAlpha() constncine::SceneNodeinline
absAnchorPoint() constncine::SceneNodeinline
absColor() constncine::SceneNodeinline
absColor_ncine::SceneNodeprotected
absHeight() constncine::DrawableNodeinlinevirtual
absLayer() constncine::SceneNodeinline
absLayer_ncine::SceneNodeprotected
absPosition() constncine::SceneNodeinline
absPosition_ncine::SceneNodeprotected
absRotation() constncine::SceneNodeinline
absRotation_ncine::SceneNodeprotected
absScale() constncine::SceneNodeinline
absScaleFactor_ncine::SceneNodeprotected
absSize() constncine::DrawableNodeinline
absWidth() constncine::DrawableNodeinlinevirtual
addChildNode(SceneNode *childNode)ncine::SceneNode
alpha() constncine::SceneNodeinline
AnchorBottomLeft (defined in ncine::DrawableNode)ncine::DrawableNodestatic
AnchorBottomRight (defined in ncine::DrawableNode)ncine::DrawableNodestatic
AnchorCenter (defined in ncine::DrawableNode)ncine::DrawableNodestatic
anchorPoint() constncine::DrawableNodeinline
anchorPoint_ncine::SceneNodeprotected
AnchorTopLeft (defined in ncine::DrawableNode)ncine::DrawableNodestatic
AnchorTopRight (defined in ncine::DrawableNode)ncine::DrawableNodestatic
BlendingFactor enum namencine::DrawableNode
BlendingPreset enum namencine::DrawableNode
childOrderIndex() constncine::SceneNode
childOrderIndex_ncine::SceneNodeprotected
children()ncine::SceneNodeinline
children() constncine::SceneNodeinline
children_ncine::SceneNodeprotected
clone() constncine::SceneNodeinline
color() constncine::SceneNodeinline
color_ncine::SceneNodeprotected
ColorBit enum value (defined in ncine::SceneNode)ncine::SceneNodeprotected
deleteChildrenOnDestruction() constncine::SceneNodeinline
destBlendingFactor() constncine::DrawableNode
DirtyBitPositions enum namencine::SceneNodeprotected
dirtyBits_ncine::SceneNodeprotected
draw(RenderQueue &renderQueue) overridencine::DrawableNodevirtual
DrawableNode(SceneNode *parent, float xx, float yy)ncine::DrawableNode
DrawableNode(SceneNode *parent, const Vector2f &position)ncine::DrawableNode
DrawableNode(SceneNode *parent)ncine::DrawableNodeexplicit
DrawableNode()ncine::DrawableNode
DrawableNode(DrawableNode &&)ncine::DrawableNode
DrawableNode(const DrawableNode &other)ncine::DrawableNodeprotected
drawEnabled_ (defined in ncine::SceneNode)ncine::SceneNodeprotected
fromId(unsigned int id)ncine::Objectstatic
height() constncine::DrawableNodeinlinevirtual
height_ncine::DrawableNodeprotected
id() constncine::Objectinline
isBlendingEnabled() constncine::DrawableNode
isDrawEnabled() constncine::SceneNodeinline
isEnabled() constncine::SceneNodeinline
isUpdateEnabled() constncine::SceneNodeinline
lastFrameRendered() constncine::DrawableNodeinline
lastFrameRendered_ncine::DrawableNodeprotected
lastFrameUpdated() constncine::SceneNodeinline
lastFrameUpdated_ncine::SceneNodeprotected
layer() constncine::SceneNodeinline
layer_ncine::SceneNodeprotected
localMatrix() constncine::SceneNodeinline
localMatrix_ncine::SceneNodeprotected
MaxNameLengthncine::Objectstatic
MinRotationncine::SceneNodestatic
move(float x, float y)ncine::SceneNodeinline
move(const Vector2f &position)ncine::SceneNodeinline
moveX(float x)ncine::SceneNodeinline
moveY(float y)ncine::SceneNodeinline
name() constncine::Object
Object(ObjectType type)ncine::Objectexplicit
Object(ObjectType type, const char *name)ncine::Object
Object(Object &&other)ncine::Object
Object(const Object &other)ncine::Objectprotected
ObjectType enum namencine::Object
operator=(DrawableNode &&)ncine::DrawableNode
ncine::SceneNode::operator=(SceneNode &&other)ncine::SceneNode
ncine::SceneNode::operator=(const SceneNode &)=deletencine::SceneNodeprotected
ncine::Object::operator=(Object &&other)ncine::Object
parent() constncine::SceneNodeinline
parent()ncine::SceneNodeinline
parent_ncine::SceneNodeprotected
position() constncine::SceneNodeinline
position_ncine::SceneNodeprotected
removeAllChildrenNodes()ncine::SceneNode
removeChildNode(SceneNode *childNode)ncine::SceneNode
removeChildNodeAt(unsigned int index)ncine::SceneNode
renderCommand_ncine::DrawableNodeprotected
rotation() constncine::SceneNodeinline
rotation_ncine::SceneNodeprotected
scale() constncine::SceneNodeinline
scaleFactor_ncine::SceneNodeprotected
SceneNode(SceneNode *parent, float x, float y)ncine::SceneNode
SceneNode(SceneNode *parent, const Vector2f &position)ncine::SceneNode
SceneNode(SceneNode *parent)ncine::SceneNodeexplicit
SceneNode()ncine::SceneNode
SceneNode(SceneNode &&other)ncine::SceneNode
SceneNode(const SceneNode &other)ncine::SceneNodeprotected
setAbsAnchorPoint(float x, float y)ncine::SceneNodeinline
setAbsAnchorPoint(const Vector2f &point)ncine::SceneNodeinline
setAlpha(unsigned char alpha)ncine::SceneNodeinline
setAlphaF(float alpha)ncine::SceneNodeinline
setAnchorPoint(float xx, float yy)ncine::DrawableNode
setAnchorPoint(const Vector2f &point)ncine::DrawableNodeinline
setBlendingEnabled(bool blendingEnabled)ncine::DrawableNode
setBlendingFactors(BlendingFactor srcBlendingFactor, BlendingFactor destBlendingFactor)ncine::DrawableNode
setBlendingPreset(BlendingPreset blendingPreset)ncine::DrawableNode
setColor(Color color)ncine::SceneNodeinline
setColor(Colorf color)ncine::SceneNodeinline
setColor(unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha)ncine::SceneNodeinline
setColorF(float red, float green, float blue, float alpha)ncine::SceneNodeinline
setDeleteChildrenOnDestruction(bool shouldDeleteChildrenOnDestruction)ncine::SceneNodeinline
setDrawEnabled(bool drawEnabled)ncine::SceneNodeinline
setEnabled(bool isEnabled)ncine::SceneNodeinline
setLayer(uint16_t layer)ncine::SceneNodeinline
setLocalMatrix(const Matrix4x4f &localMatrix)ncine::SceneNodeinline
setName(const char *name)ncine::Object
setParent(SceneNode *parentNode)ncine::SceneNode
setPosition(float x, float y)ncine::SceneNodeinline
setPosition(const Vector2f &position)ncine::SceneNodeinline
setPositionX(float x)ncine::SceneNodeinline
setPositionY(float y)ncine::SceneNodeinline
setRotation(float rotation)ncine::SceneNodeinline
setScale(float scaleFactor)ncine::SceneNodeinline
setScale(float scaleFactorX, float scaleFactorY)ncine::SceneNodeinline
setScale(const Vector2f &scaleFactor)ncine::SceneNodeinline
setUpdateEnabled(bool updateEnabled)ncine::SceneNodeinline
setVisitOrderState(enum VisitOrderState visitOrderState)ncine::SceneNodeinline
setWorldMatrix(const Matrix4x4f &worldMatrix)ncine::SceneNodeinline
shaderHasChanged()=0ncine::DrawableNodeprotectedpure virtual
ShaderState (defined in ncine::DrawableNode)ncine::DrawableNodefriend
shouldDeleteChildrenOnDestruction_ncine::SceneNodeprotected
size() constncine::DrawableNodeinline
SizeBit enum value (defined in ncine::SceneNode)ncine::SceneNodeprotected
srcBlendingFactor() constncine::DrawableNode
sType() (defined in ncine::SceneNode)ncine::SceneNodeinlinestatic
swapChildPointer(SceneNode *first, SceneNode *second)ncine::SceneNodeprotected
swapChildrenNodes(unsigned int firstIndex, unsigned int secondIndex)ncine::SceneNode
swapNodeBack()ncine::SceneNode
swapNodeForward()ncine::SceneNode
TextureBit enum value (defined in ncine::SceneNode)ncine::SceneNodeprotected
transform() (defined in ncine::SceneNode)ncine::SceneNodeprotectedvirtual
TransformationBit enum value (defined in ncine::SceneNode)ncine::SceneNodeprotected
type() constncine::Objectinline
type_ncine::Objectprotected
unlinkChildNode(SceneNode *childNode)ncine::SceneNode
update(float interval)ncine::SceneNodevirtual
updateAabb()ncine::DrawableNodeprotectedvirtual
updateCulling()ncine::DrawableNodeprotected
updateEnabled_ (defined in ncine::SceneNode)ncine::SceneNodeprotected
updateRenderCommand()=0ncine::DrawableNodeprotectedpure virtual
Viewport (defined in ncine::DrawableNode)ncine::DrawableNodefriend
visit(RenderQueue &renderQueue, unsigned int &visitOrderIndex)ncine::SceneNodevirtual
visitOrderIndex() constncine::SceneNodeinline
visitOrderIndex_ncine::SceneNodeprotected
visitOrderState() constncine::SceneNodeinline
VisitOrderState enum name (defined in ncine::SceneNode)ncine::SceneNode
visitOrderState_ncine::SceneNodeprotected
width() constncine::DrawableNodeinlinevirtual
width_ncine::DrawableNodeprotected
withVisitOrder_ncine::SceneNodeprotected
worldMatrix() constncine::SceneNodeinline
worldMatrix_ncine::SceneNodeprotected
~DrawableNode() override (defined in ncine::DrawableNode)ncine::DrawableNode
~Object()ncine::Objectvirtual
~SceneNode() overridencine::SceneNode
+ + + + diff --git a/master/classncine_1_1_drawable_node.html b/master/classncine_1_1_drawable_node.html new file mode 100644 index 0000000000..5ac46232c5 --- /dev/null +++ b/master/classncine_1_1_drawable_node.html @@ -0,0 +1,912 @@ + + + + + + + +nCine: ncine::DrawableNode Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

A class for objects that can be drawn through the render queue. + More...

+ +

#include <DrawableNode.h>

+
+Inheritance diagram for ncine::DrawableNode:
+
+
Inheritance graph
+ + + + + + + + + + + +
[legend]
+
+Collaboration diagram for ncine::DrawableNode:
+
+
Collaboration graph
+ + + + + + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + +

+Public Types

enum class  BlendingPreset {
+  DISABLED +, ALPHA +, PREMULTIPLIED_ALPHA +, ADDITIVE +,
+  MULTIPLY +
+ }
 Presets for blending factors. More...
 
enum class  BlendingFactor {
+  ZERO +, ONE +, SRC_COLOR +, ONE_MINUS_SRC_COLOR +,
+  DST_COLOR +, ONE_MINUS_DST_COLOR +, SRC_ALPHA +, ONE_MINUS_SRC_ALPHA +,
+  DST_ALPHA +, ONE_MINUS_DST_ALPHA +, CONSTANT_COLOR +, ONE_MINUS_CONSTANT_COLOR +,
+  CONSTANT_ALPHA +, ONE_MINUS_CONSTANT_ALPHA +, SRC_ALPHA_SATURATE +
+ }
 OpenGL blending factors.
 
- Public Types inherited from ncine::SceneNode
enum class  VisitOrderState { ENABLED +, DISABLED +, SAME_AS_PARENT + }
 
- Public Types inherited from ncine::Object
enum class  ObjectType {
+  BASE = 0 +, TEXTURE +, SHADER +, SCENENODE +,
+  SPRITE +, MESH_SPRITE +, ANIMATED_SPRITE +, PARTICLE +,
+  PARTICLE_SYSTEM +, FONT +, TEXTNODE +, AUDIOBUFFER +,
+  AUDIOBUFFER_PLAYER +, AUDIOSTREAM_PLAYER +
+ }
 Object types.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

DrawableNode (SceneNode *parent, float xx, float yy)
 Constructor for a drawable node with a parent and a specified relative position.
 
DrawableNode (SceneNode *parent, const Vector2f &position)
 Constructor for a drawable node with a parent and a specified relative position as a vector.
 
DrawableNode (SceneNode *parent)
 Constructor for a drawable node with a parent and positioned in the relative origin.
 
DrawableNode ()
 Constructor for a drawable node with no parent and positioned in the origin.
 
DrawableNode (DrawableNode &&)
 Default move constructor.
 
+DrawableNodeoperator= (DrawableNode &&)
 Default move assignment operator.
 
+bool draw (RenderQueue &renderQueue) override
 Updates the draw command and adds it to the queue.
 
+virtual float width () const
 Returns the width of the node area.
 
+virtual float height () const
 Returns the height of the node area.
 
+Vector2f size () const
 Returns the size of the node area.
 
+virtual float absWidth () const
 Returns the absolute width of the node area.
 
+virtual float absHeight () const
 Returns the absolute height of the node area.
 
+Vector2f absSize () const
 Returns the absolute size of the node area.
 
+Vector2f anchorPoint () const
 Gets the transformation anchor point.
 
void setAnchorPoint (float xx, float yy)
 Sets the transformation anchor point. More...
 
+void setAnchorPoint (const Vector2f &point)
 Sets the transformation anchor point with a Vector2f
 
+bool isBlendingEnabled () const
 Returns true if the node renders with blending enabled.
 
+void setBlendingEnabled (bool blendingEnabled)
 Sets the blending state for node rendering.
 
+BlendingFactor srcBlendingFactor () const
 Returns the source blending factor.
 
+BlendingFactor destBlendingFactor () const
 Returns the destination blending factor.
 
+void setBlendingPreset (BlendingPreset blendingPreset)
 Sets a blending preset for source and destination blending factors.
 
+void setBlendingFactors (BlendingFactor srcBlendingFactor, BlendingFactor destBlendingFactor)
 Sets a specific source and destination blending factors.
 
+unsigned long int lastFrameRendered () const
 Returns the last frame in which any of the viewports have rendered this node (node was not culled)
 
+Rectf aabb () const
 Returns the axis-aligned bounding box of the node area in the last frame.
 
- Public Member Functions inherited from ncine::SceneNode
 SceneNode (SceneNode *parent, float x, float y)
 Constructor for a node with a parent and a specified relative position. More...
 
 SceneNode (SceneNode *parent, const Vector2f &position)
 Constructor for a node with a parent and a specified relative position as a vector. More...
 
 SceneNode (SceneNode *parent)
 Constructor for a node with a parent and positioned in the relative origin. More...
 
SceneNode ()
 Constructor for a node with no parent and positioned in the origin.
 
~SceneNode () override
 The destructor will delete every child node.
 
SceneNode (SceneNode &&other)
 Move constructor.
 
+SceneNodeoperator= (SceneNode &&other)
 Move assignment operator.
 
+SceneNode clone () const
 Returns a copy of this object.
 
+const SceneNodeparent () const
 Returns the parent as a constant node, if there is any.
 
+SceneNodeparent ()
 Returns the parent node, if there is any.
 
bool setParent (SceneNode *parentNode)
 Sets the parent node. More...
 
+const nctl::Array< SceneNode * > & children ()
 Returns the array of child nodes.
 
+const nctl::Array< const SceneNode * > & children () const
 Returns an array of constant child nodes.
 
bool addChildNode (SceneNode *childNode)
 Adds a node as a child of this one. More...
 
bool removeChildNode (SceneNode *childNode)
 Removes a child of this node, without reparenting nephews. More...
 
bool removeChildNodeAt (unsigned int index)
 Removes the child at the specified index, without reparenting nephews. More...
 
bool removeAllChildrenNodes ()
 Removes all children, without reparenting nephews. More...
 
bool unlinkChildNode (SceneNode *childNode)
 Removes a child of this node reparenting nephews as children. More...
 
unsigned int childOrderIndex () const
 Returns the child order index of this node or zero if it does not have a parent. More...
 
bool swapChildrenNodes (unsigned int firstIndex, unsigned int secondIndex)
 Swaps two children at the specified indices. More...
 
bool swapNodeForward ()
 Brings this node one node forward in the parent's list of children. More...
 
bool swapNodeBack ()
 Brings this node one node back in the parent's list of children. More...
 
+enum VisitOrderState visitOrderState () const
 Returns true if the node visit order is used together with the layer.
 
+void setVisitOrderState (enum VisitOrderState visitOrderState)
 Enables the use of the node visit order together with the layer.
 
+uint16_t visitOrderIndex () const
 Returns the visit drawing order of the node.
 
+virtual void update (float interval)
 Called once every frame to update the node.
 
+virtual void visit (RenderQueue &renderQueue, unsigned int &visitOrderIndex)
 Draws the node and visits its children.
 
+bool isUpdateEnabled () const
 Returns true if the node is updating.
 
+void setUpdateEnabled (bool updateEnabled)
 Enables or disables node updating.
 
+bool isDrawEnabled () const
 Returns true if the node is drawing.
 
+void setDrawEnabled (bool drawEnabled)
 Enables or disables node drawing.
 
+bool isEnabled () const
 Returns true if the node is both updating and drawing.
 
+void setEnabled (bool isEnabled)
 Enables or disables both node updating and drawing.
 
+Vector2f position () const
 Returns node position relative to its parent.
 
+Vector2f absPosition () const
 Returns absolute node position.
 
+void setPosition (float x, float y)
 Sets the node position through two coordinates.
 
+void setPosition (const Vector2f &position)
 Sets the node position through a vector.
 
+void setPositionX (float x)
 Sets the X coordinate of the node position.
 
+void setPositionY (float y)
 Sets the Y coordinate of the node position.
 
+void move (float x, float y)
 Moves the node based on two offsets.
 
+void move (const Vector2f &position)
 Adds a move vector to the node current position.
 
+void moveX (float x)
 Moves the node by an offset on the X axis.
 
+void moveY (float y)
 Moves the node by an offset on the Y axis.
 
+Vector2f absAnchorPoint () const
 Gets the absolute transformation anchor point in pixels.
 
+void setAbsAnchorPoint (float x, float y)
 Sets the absolute transformation anchor point in pixels.
 
+void setAbsAnchorPoint (const Vector2f &point)
 Sets the absolute transformation anchor point in pixels with a Vector2f
 
+const Vector2fscale () const
 Gets the node scale factors.
 
+const Vector2fabsScale () const
 Gets the node absolute scale factors.
 
+void setScale (float scaleFactor)
 Scales the node size both horizontally and vertically.
 
+void setScale (float scaleFactorX, float scaleFactorY)
 Scales the node size both horizontally and vertically.
 
+void setScale (const Vector2f &scaleFactor)
 Scales the node size both horizontally and vertically with a Vector2f
 
+float rotation () const
 Gets the node rotation in degrees.
 
+float absRotation () const
 Gets the node absolute rotation in degrees.
 
+void setRotation (float rotation)
 Sets the node rotation in degrees.
 
+Color color () const
 Gets the node color.
 
+Color absColor () const
 Gets the node absolute color.
 
+void setColor (Color color)
 Sets the node color through a Color object.
 
+void setColor (Colorf color)
 Sets the node color through a Colorf object.
 
+void setColor (unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha)
 Sets the node color through unsigned char components.
 
+void setColorF (float red, float green, float blue, float alpha)
 Sets the node color through float components.
 
+float alpha () const
 Gets the node alpha.
 
+float absAlpha () const
 Gets the node absolute alpha.
 
+void setAlpha (unsigned char alpha)
 Sets the node alpha through an unsigned char component.
 
+void setAlphaF (float alpha)
 Sets the node alpha through a float component.
 
+uint16_t layer () const
 Gets the node rendering layer.
 
uint16_t absLayer () const
 Gets the node absolute rendering layer. More...
 
void setLayer (uint16_t layer)
 Sets the node rendering layer. More...
 
+const Matrix4x4fworldMatrix () const
 Gets the node world matrix.
 
+void setWorldMatrix (const Matrix4x4f &worldMatrix)
 Sets the node world matrix (only useful when called inside onPostUpdate())
 
+const Matrix4x4flocalMatrix () const
 Gets the node local matrix.
 
+void setLocalMatrix (const Matrix4x4f &localMatrix)
 Sets the node local matrix.
 
bool deleteChildrenOnDestruction () const
 Gets the delete children on destruction flag. More...
 
+void setDeleteChildrenOnDestruction (bool shouldDeleteChildrenOnDestruction)
 Sets the delete children on destruction flag.
 
+unsigned long int lastFrameUpdated () const
 Returns the last frame in which any of the viewports have updated this node.
 
- Public Member Functions inherited from ncine::Object
Object (ObjectType type)
 Constructs an object with a specified type and adds it to the index.
 
Object (ObjectType type, const char *name)
 Constructs an object with a specified type and name and adds it to the index.
 
+virtual ~Object ()
 Removes an object from the index and then destroys it.
 
Object (Object &&other)
 Move constructor.
 
+Objectoperator= (Object &&other)
 Move assignment operator.
 
+unsigned int id () const
 Returns the object identification number.
 
+ObjectType type () const
 Returns the object type (RTTI)
 
+const char * name () const
 Returns the object name.
 
+void setName (const char *name)
 Sets the object name.
 
+ + + + + + + + + + + + + + + + + + + +

+Static Public Attributes

+static const Vector2f AnchorCenter
 
+static const Vector2f AnchorBottomLeft
 
+static const Vector2f AnchorTopLeft
 
+static const Vector2f AnchorBottomRight
 
+static const Vector2f AnchorTopRight
 
- Static Public Attributes inherited from ncine::SceneNode
+static const float MinRotation = 0.5f
 The minimum amount of rotation to trigger a sine and cosine calculation.
 
- Static Public Attributes inherited from ncine::Object
+static const unsigned int MaxNameLength = 128
 Maximum length for an object name.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+virtual void updateAabb ()
 Calculates updated values for the AABB.
 
+void updateCulling ()
 Called by each viewport update method to update a node culling state.
 
DrawableNode (const DrawableNode &other)
 Protected copy constructor used to clone objects.
 
+virtual void shaderHasChanged ()=0
 Performs the required tasks upon a change to the shader.
 
+virtual void updateRenderCommand ()=0
 Updates the render command.
 
- Protected Member Functions inherited from ncine::SceneNode
+SceneNodeoperator= (const SceneNode &)=delete
 Deleted assignment operator.
 
SceneNode (const SceneNode &other)
 Protected copy constructor used to clone objects.
 
void swapChildPointer (SceneNode *first, SceneNode *second)
 Swaps the child pointer of a parent when moving an object. More...
 
+virtual void transform ()
 
- Protected Member Functions inherited from ncine::Object
Object (const Object &other)
 Protected copy constructor used to clone objects.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+float width_
 Node width in pixel.
 
+float height_
 Node height in pixel.
 
+nctl::UniquePtr< RenderCommand > renderCommand_
 The render command class associated with this node.
 
+unsigned long int lastFrameRendered_
 The last frame any viewports rendered this node.
 
+Rectf aabb_
 Axis-aligned bounding box of the node area.
 
- Protected Attributes inherited from ncine::SceneNode
+bool updateEnabled_
 
+bool drawEnabled_
 
+SceneNodeparent_
 A pointer to the parent node.
 
+nctl::Array< SceneNode * > children_
 The array of child nodes.
 
unsigned int childOrderIndex_
 The order index of this node among its siblings. More...
 
bool withVisitOrder_
 When enabled the visit order is used to resolve the drawing order of same layer nodes. More...
 
+enum VisitOrderState visitOrderState_
 The visit order state of this node.
 
+uint16_t visitOrderIndex_
 The visit order index of this node.
 
+Vector2f position_
 The node relative position.
 
Vector2f anchorPoint_
 
+Vector2f scaleFactor_
 Horizontal and vertical scale factors for node size.
 
+float rotation_
 Degrees for clock-wise node rotation in degrees.
 
Color color_
 Node color for transparency and translucency. More...
 
uint16_t layer_
 The node rendering layer. More...
 
+Vector2f absPosition_
 Absolute position as calculated by the transform() function.
 
+Vector2f absScaleFactor_
 Absolute horizontal and vertical scale factors as calculated by the transform() function.
 
+float absRotation_
 Absolute node rotation as calculated by the transform() function.
 
+Color absColor_
 Absolute node color as calculated by the transform() function.
 
+uint16_t absLayer_
 Absolute node rendering layer as calculated by the transform() function.
 
+Matrix4x4f worldMatrix_
 World transformation matrix (calculated from local and parent's world)
 
+Matrix4x4f localMatrix_
 Local transformation matrix.
 
+bool shouldDeleteChildrenOnDestruction_
 A flag indicating whether the destructor should also delete all children.
 
+nctl::BitSet< uint8_t > dirtyBits_
 Bitset that stores the various dirty states bits.
 
+unsigned long int lastFrameUpdated_
 The last frame any viewport updated this node.
 
- Protected Attributes inherited from ncine::Object
+ObjectType type_
 Object type.
 
+ + + + + +

+Friends

+class ShaderState
 
+class Viewport
 
+ + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from ncine::SceneNode
+static ObjectType sType ()
 
- Static Public Member Functions inherited from ncine::Object
+static ObjectType sType ()
 Static method to return class type.
 
+template<class T >
static T * fromId (unsigned int id)
 Returns a casted pointer to the object with the specified id, if any exists.
 
- Protected Types inherited from ncine::SceneNode
enum  DirtyBitPositions {
+  TransformationBit = 0 +, ColorBit = 1 +, SizeBit = 2 +, TextureBit = 3 +,
+  AabbBit = 4 +
+ }
 Bit positions inside the dirty bitset.
 
+

Detailed Description

+

A class for objects that can be drawn through the render queue.

+

Member Enumeration Documentation

+ +

◆ BlendingPreset

+ +
+
+ + + + + +
+ + + + +
enum ncine::DrawableNode::BlendingPreset
+
+strong
+
+ +

Presets for blending factors.

+ + + + + + +
Enumerator
DISABLED 

uses GL_ONE and GL_ZERO

+
ALPHA 

uses GL_SRC_ALPHA and GL_ONE_MINUS_SRC_ALPHA

+
PREMULTIPLIED_ALPHA 

uses GL_ONE and GL_ONE_MINUS_SRC_ALPHA

+
ADDITIVE 

uses GL_SRC_ALPHA and GL_ONE

+
MULTIPLY 

uses GL_DST_COLOR and GL_ZERO

+
+ +
+
+

Member Function Documentation

+ +

◆ setAnchorPoint()

+ +
+
+ + + + + + + + + + + + + + + + + + +
void ncine::DrawableNode::setAnchorPoint (float xx,
float yy 
)
+
+ +

Sets the transformation anchor point.

+
Note
This method sets the anchor point relative to the node width and height. To set the anchor point in pixels use setAbsAnchorPoint() instead.
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classncine_1_1_drawable_node__coll__graph.map b/master/classncine_1_1_drawable_node__coll__graph.map new file mode 100644 index 0000000000..e0fcf1be30 --- /dev/null +++ b/master/classncine_1_1_drawable_node__coll__graph.map @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/master/classncine_1_1_drawable_node__coll__graph.md5 b/master/classncine_1_1_drawable_node__coll__graph.md5 new file mode 100644 index 0000000000..e2ec7cfe98 --- /dev/null +++ b/master/classncine_1_1_drawable_node__coll__graph.md5 @@ -0,0 +1 @@ +c7ce1e329b749a6578d6e28e13ac9fab \ No newline at end of file diff --git a/master/classncine_1_1_drawable_node__coll__graph.png b/master/classncine_1_1_drawable_node__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..91c66bb688e474594372781a9826f7ee3ac31e8a GIT binary patch literal 75350 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ඇ-|9`)zsU&hv9?%c<-yUwA>Or4V;JkS%rQ;iIf{ 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 + + + + + + + + + + diff --git a/master/classncine_1_1_drawable_node__inherit__graph.md5 b/master/classncine_1_1_drawable_node__inherit__graph.md5 new file mode 100644 index 0000000000..54b290f4a2 --- /dev/null +++ b/master/classncine_1_1_drawable_node__inherit__graph.md5 @@ -0,0 +1 @@ +9bff9b69a7084aa0f4b3864b3860a08a \ No newline at end of file diff --git a/master/classncine_1_1_drawable_node__inherit__graph.png b/master/classncine_1_1_drawable_node__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..100d823fc6ef8ef519ac031e2c82cbe0fb9bff5b GIT binary patch literal 19698 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 Z1CMA7C-*8P;2~xRRYeVjw{j*y{{!MuF5UnD literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_drop_event-members.html b/master/classncine_1_1_drop_event-members.html new file mode 100644 index 0000000000..fbbcb309f8 --- /dev/null +++ b/master/classncine_1_1_drop_event-members.html @@ -0,0 +1,89 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::DropEvent Member List
+
+
+ +

This is the complete list of members for ncine::DropEvent, including all inherited members.

+ + + + + + +
DropEvent() (defined in ncine::DropEvent)ncine::DropEventinline
MaxNumPaths (defined in ncine::DropEvent)ncine::DropEventstatic
MaxPathLength (defined in ncine::DropEvent)ncine::DropEventstatic
numPaths (defined in ncine::DropEvent)ncine::DropEvent
paths (defined in ncine::DropEvent)ncine::DropEvent
+ + + + diff --git a/master/classncine_1_1_drop_event.html b/master/classncine_1_1_drop_event.html new file mode 100644 index 0000000000..5114c7445d --- /dev/null +++ b/master/classncine_1_1_drop_event.html @@ -0,0 +1,114 @@ + + + + + + + +nCine: ncine::DropEvent Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::DropEvent Class Reference
+
+
+ +

Information about a drag'n'drop event. + More...

+ +

#include <InputEvents.h>

+ + + + + + +

+Public Attributes

+unsigned int numPaths
 
+char paths [MaxNumPaths][MaxPathLength]
 
+ + + + + +

+Static Public Attributes

+static const int MaxNumPaths = 16
 
+static const int MaxPathLength = 256
 
+

Detailed Description

+

Information about a drag'n'drop event.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classncine_1_1_emscripten_local_file-members.html b/master/classncine_1_1_emscripten_local_file-members.html new file mode 100644 index 0000000000..ea8049e214 --- /dev/null +++ b/master/classncine_1_1_emscripten_local_file-members.html @@ -0,0 +1,97 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::EmscriptenLocalFile Member List
+
+
+ +

This is the complete list of members for ncine::EmscriptenLocalFile, including all inherited members.

+ + + + + + + + + + + + + + +
data() constncine::EmscriptenLocalFileinline
EmscriptenLocalFile() (defined in ncine::EmscriptenLocalFile)ncine::EmscriptenLocalFileinline
filename() constncine::EmscriptenLocalFileinline
isLoading() constncine::EmscriptenLocalFileinline
load()ncine::EmscriptenLocalFile
load(const char *fileFilter)ncine::EmscriptenLocalFile
LoadedCallbackType typedef (defined in ncine::EmscriptenLocalFile)ncine::EmscriptenLocalFile
read(void *buffer, unsigned long int bytes) constncine::EmscriptenLocalFile
save(const char *filename)ncine::EmscriptenLocalFile
setLoadedCallback(LoadedCallbackType *loadedCallback)ncine::EmscriptenLocalFileinline
setLoadedCallback(LoadedCallbackType *loadedCallback, void *userData)ncine::EmscriptenLocalFile
size() constncine::EmscriptenLocalFileinline
write(void *buffer, unsigned long int bytes)ncine::EmscriptenLocalFile
+ + + + diff --git a/master/classncine_1_1_emscripten_local_file.html b/master/classncine_1_1_emscripten_local_file.html new file mode 100644 index 0000000000..05305f7036 --- /dev/null +++ b/master/classncine_1_1_emscripten_local_file.html @@ -0,0 +1,211 @@ + + + + + + + +nCine: ncine::EmscriptenLocalFile Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::EmscriptenLocalFile Class Reference
+
+
+ +

The class dealing with opening and saving a local file on Emscripten. + More...

+ +

#include <EmscriptenLocalFile.h>

+ + + + +

+Public Types

+using LoadedCallbackType = void(const EmscriptenLocalFile &localFile, void *userData)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+void load ()
 Opens a dialog in the browser to choose a file to load.
 
+void load (const char *fileFilter)
 Opens a filtered dialog in the browser to choose a file to load.
 
+void save (const char *filename)
 Saves a file from the browser to the local machine.
 
unsigned long int read (void *buffer, unsigned long int bytes) const
 Reads a certain amount of bytes from the file to a buffer. More...
 
unsigned long int write (void *buffer, unsigned long int bytes)
 Writes a certain amount of bytes from a buffer to the file. More...
 
+void setLoadedCallback (LoadedCallbackType *loadedCallback)
 Sets the callback to be invoked when loading is complete.
 
+void setLoadedCallback (LoadedCallbackType *loadedCallback, void *userData)
 Sets the callback to be invoked when loading is complete, together with user data.
 
+const char * data () const
 Returns a read-only pointer to the internal file buffer.
 
+long int size () const
 Returns the file size in bytes.
 
+const char * filename () const
 Returns the file name.
 
+bool isLoading () const
 Returns true if loading is in progress.
 
+

Detailed Description

+

The class dealing with opening and saving a local file on Emscripten.

+

Member Function Documentation

+ +

◆ read()

+ +
+
+ + + + + + + + + + + + + + + + + + +
unsigned long int ncine::EmscriptenLocalFile::read (void * buffer,
unsigned long int bytes 
) const
+
+ +

Reads a certain amount of bytes from the file to a buffer.

+
Returns
Number of bytes read
+ +
+
+ +

◆ write()

+ +
+
+ + + + + + + + + + + + + + + + + + +
unsigned long int ncine::EmscriptenLocalFile::write (void * buffer,
unsigned long int bytes 
)
+
+ +

Writes a certain amount of bytes from a buffer to the file.

+
Returns
Number of bytes written
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classncine_1_1_file_system-members.html b/master/classncine_1_1_file_system-members.html new file mode 100644 index 0000000000..5c1599f86f --- /dev/null +++ b/master/classncine_1_1_file_system-members.html @@ -0,0 +1,128 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::FileSystem Member List
+
+
+ +

This is the complete list of members for ncine::FileSystem, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
absoluteJoinPath(const nctl::String &first, const nctl::String &second)ncine::FileSystemstatic
absolutePath(const char *path)ncine::FileSystemstatic
addPermissions(const char *path, int mode)ncine::FileSystemstatic
AppConfiguration classncine::FileSystemfriend
baseName(const char *path)ncine::FileSystemstatic
cachePath()ncine::FileSystemstatic
changePermissions(const char *path, int mode)ncine::FileSystemstatic
copy(const char *oldPath, const char *newPath)ncine::FileSystemstatic
createDir(const char *path)ncine::FileSystemstatic
currentDir()ncine::FileSystemstatic
dataPath()ncine::FileSysteminlinestatic
deleteEmptyDir(const char *path)ncine::FileSystemstatic
deleteFile(const char *path)ncine::FileSystemstatic
dirName(const char *path)ncine::FileSystemstatic
EXECUTE enum value (defined in ncine::FileSystem)ncine::FileSystem
exists(const char *path)ncine::FileSystemstatic
extension(const char *path)ncine::FileSystemstatic
fileSize(const char *path)ncine::FileSystemstatic
fixExtension(nctl::String &path, const char *extension)ncine::FileSystemstatic
hasExtension(const char *path, const char *extension)ncine::FileSystemstatic
homePath()ncine::FileSystemstatic
isDirectory(const char *path)ncine::FileSystemstatic
isExecutable(const char *path)ncine::FileSystemstatic
isFile(const char *path)ncine::FileSystemstatic
isHidden(const char *path)ncine::FileSystemstatic
isReadable(const char *path)ncine::FileSystemstatic
isReadableFile(const char *path)ncine::FileSystemstatic
isWritable(const char *path)ncine::FileSystemstatic
isWritableFile(const char *path)ncine::FileSystemstatic
joinPath(const nctl::String &first, const nctl::String &second)ncine::FileSystemstatic
lastAccessTime(const char *path)ncine::FileSystemstatic
lastModificationTime(const char *path)ncine::FileSystemstatic
logicalDrives()ncine::FileSystemstatic
logicalDriveStrings()ncine::FileSystemstatic
MaxPathLengthncine::FileSystemstatic
Permission enum namencine::FileSystem
permissions(const char *path)ncine::FileSystemstatic
READ enum value (defined in ncine::FileSystem)ncine::FileSystem
removePermissions(const char *path, int mode)ncine::FileSystemstatic
rename(const char *oldPath, const char *newPath)ncine::FileSystemstatic
savePath()ncine::FileSystemstatic
setCurrentDir(const char *path)ncine::FileSystemstatic
setHidden(const char *path, bool hidden)ncine::FileSystemstatic
WRITE enum value (defined in ncine::FileSystem)ncine::FileSystem
+ + + + diff --git a/master/classncine_1_1_file_system.html b/master/classncine_1_1_file_system.html new file mode 100644 index 0000000000..dbbd7f49ae --- /dev/null +++ b/master/classncine_1_1_file_system.html @@ -0,0 +1,709 @@ + + + + + + + +nCine: ncine::FileSystem Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

File system related methods. + More...

+ +

#include <FileSystem.h>

+ + + + + + + +

+Classes

class  Directory
 The class that handles directory traversal. More...
 
struct  FileDate
 
+ + + + +

+Public Types

enum  Permission { READ = 1 +, WRITE = 2 +, EXECUTE = 4 + }
 The available permissions to check or set.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

+static nctl::String joinPath (const nctl::String &first, const nctl::String &second)
 Joins together two path components.
 
+static nctl::String absoluteJoinPath (const nctl::String &first, const nctl::String &second)
 Returns the absolute path after joining together two path components.
 
+static nctl::String dirName (const char *path)
 Returns the path up to, but not including, the final separator.
 
+static nctl::String baseName (const char *path)
 Returns the path component after the final separator.
 
static nctl::String absolutePath (const char *path)
 Returns an absolute path from a relative one. More...
 
+static const char * extension (const char *path)
 Returns the extension position in the string or nullptr if it is not found.
 
+static bool hasExtension (const char *path, const char *extension)
 Returns true if the path has the specified extension (case-insensitive comparison)
 
+static bool fixExtension (nctl::String &path, const char *extension)
 Returns true if the path has been changed to fix the extension.
 
static unsigned long logicalDrives ()
 Returns a bitmask representing the currently available disk drives on Windows. More...
 
static const char * logicalDriveStrings ()
 Returns a buffer with strings that specify valid drives in the system on Windows. More...
 
+static nctl::String currentDir ()
 Returns the path of the current working directory.
 
static bool setCurrentDir (const char *path)
 Sets the current working directory, the starting point for interpreting relative paths. More...
 
+static bool isDirectory (const char *path)
 Returns true if the specified path is a directory.
 
+static bool isFile (const char *path)
 Returns true if the specified path is a file.
 
+static bool exists (const char *path)
 Returns true if the file or directory exists.
 
+static bool isReadable (const char *path)
 Returns true if the file or directory is readable.
 
+static bool isWritable (const char *path)
 Returns true if the file or directory is writeable.
 
+static bool isExecutable (const char *path)
 Returns true if the file or directory is executable.
 
+static bool isReadableFile (const char *path)
 Returns true if the path is a file and is readable.
 
+static bool isWritableFile (const char *path)
 Returns true if the path is a file and is writeable.
 
+static bool isHidden (const char *path)
 Returns true if the file or directory is hidden.
 
static bool setHidden (const char *path, bool hidden)
 Makes a file or a directory hidden or not. More...
 
static bool createDir (const char *path)
 Creates a new directory. More...
 
static bool deleteEmptyDir (const char *path)
 Deletes an empty directory. More...
 
static bool deleteFile (const char *path)
 Deletes a file. More...
 
static bool rename (const char *oldPath, const char *newPath)
 Renames or moves a file or a directory. More...
 
static bool copy (const char *oldPath, const char *newPath)
 Copies a file. More...
 
+static long int fileSize (const char *path)
 Returns the file size in bytes.
 
+static FileDate lastModificationTime (const char *path)
 Returns the last time the file or directory was modified.
 
+static FileDate lastAccessTime (const char *path)
 Returns the last time the file or directory was accessed.
 
+static int permissions (const char *path)
 Returns the file or directory permissions in a mask.
 
static bool changePermissions (const char *path, int mode)
 Sets the file or directory permissions to those of the mask. More...
 
static bool addPermissions (const char *path, int mode)
 Adds the permissions in the mask to a file or a directory. More...
 
static bool removePermissions (const char *path, int mode)
 Removes the permissions in the mask from a file or a directory. More...
 
+static const nctl::StringdataPath ()
 Returns the base directory for data loading.
 
+static const nctl::StringhomePath ()
 Returns the current user home directory.
 
+static const nctl::StringsavePath ()
 Returns the writable directory for saving data.
 
+static const nctl::StringcachePath ()
 Returns the writable directory for saving cache data.
 
+ + + + +

+Static Public Attributes

+static const unsigned int MaxPathLength = PATH_MAX
 Maximum allowed length for a path string.
 
+ + + + +

+Friends

+class AppConfiguration
 The AppConfiguration class needs to access dataPath_
 
+

Detailed Description

+

File system related methods.

+

Member Function Documentation

+ +

◆ absolutePath()

+ +
+
+ + + + + +
+ + + + + + + + +
nctl::String ncine::FileSystem::absolutePath (const char * path)
+
+static
+
+ +

Returns an absolute path from a relative one.

+

It also resolves dot references to current and parent directories, and double separators

+ +
+
+ +

◆ addPermissions()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool ncine::FileSystem::addPermissions (const char * path,
int mode 
)
+
+static
+
+ +

Adds the permissions in the mask to a file or a directory.

+
Returns
True if the new permission mode was added
+ +
+
+ +

◆ changePermissions()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool ncine::FileSystem::changePermissions (const char * path,
int mode 
)
+
+static
+
+ +

Sets the file or directory permissions to those of the mask.

+
Returns
True if the permission mode was changed
+ +
+
+ +

◆ copy()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool ncine::FileSystem::copy (const char * oldPath,
const char * newPath 
)
+
+static
+
+ +

Copies a file.

+
Returns
True if the file has been copied
+ +
+
+ +

◆ createDir()

+ +
+
+ + + + + +
+ + + + + + + + +
bool ncine::FileSystem::createDir (const char * path)
+
+static
+
+ +

Creates a new directory.

+
Returns
True if the new directory has been created
+ +
+
+ +

◆ deleteEmptyDir()

+ +
+
+ + + + + +
+ + + + + + + + +
bool ncine::FileSystem::deleteEmptyDir (const char * path)
+
+static
+
+ +

Deletes an empty directory.

+
Returns
True if the empty directory has been deleted
+ +
+
+ +

◆ deleteFile()

+ +
+
+ + + + + +
+ + + + + + + + +
bool ncine::FileSystem::deleteFile (const char * path)
+
+static
+
+ +

Deletes a file.

+
Returns
True if the file has been deleted
+ +
+
+ +

◆ logicalDrives()

+ +
+
+ + + + + +
+ + + + + + + +
unsigned long ncine::FileSystem::logicalDrives ()
+
+static
+
+ +

Returns a bitmask representing the currently available disk drives on Windows.

+

/note The function only works on Windows, it returns 0 on other platforms

+ +
+
+ +

◆ logicalDriveStrings()

+ +
+
+ + + + + +
+ + + + + + + +
const char * ncine::FileSystem::logicalDriveStrings ()
+
+static
+
+ +

Returns a buffer with strings that specify valid drives in the system on Windows.

+

/note The function only works on Windows, it returns nullptr on other platforms

+ +
+
+ +

◆ removePermissions()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool ncine::FileSystem::removePermissions (const char * path,
int mode 
)
+
+static
+
+ +

Removes the permissions in the mask from a file or a directory.

+
Returns
True if the permission mode was removed
+ +
+
+ +

◆ rename()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool ncine::FileSystem::rename (const char * oldPath,
const char * newPath 
)
+
+static
+
+ +

Renames or moves a file or a directory.

+
Returns
True if the file or directory has been renamed or moved
+ +
+
+ +

◆ setCurrentDir()

+ +
+
+ + + + + +
+ + + + + + + + +
bool ncine::FileSystem::setCurrentDir (const char * path)
+
+static
+
+ +

Sets the current working directory, the starting point for interpreting relative paths.

+
Returns
True if the directory has been successfully changed
+ +
+
+ +

◆ setHidden()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool ncine::FileSystem::setHidden (const char * path,
bool hidden 
)
+
+static
+
+ +

Makes a file or a directory hidden or not.

+
Returns
True if the new hidden state has been successfully set
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classncine_1_1_file_system_1_1_directory-members.html b/master/classncine_1_1_file_system_1_1_directory-members.html new file mode 100644 index 0000000000..197d84cf89 --- /dev/null +++ b/master/classncine_1_1_file_system_1_1_directory-members.html @@ -0,0 +1,89 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::FileSystem::Directory Member List
+
+
+ +

This is the complete list of members for ncine::FileSystem::Directory, including all inherited members.

+ + + + + + +
close()ncine::FileSystem::Directory
Directory(const char *path) (defined in ncine::FileSystem::Directory)ncine::FileSystem::Directory
open(const char *path)ncine::FileSystem::Directory
readNext()ncine::FileSystem::Directory
~Directory() (defined in ncine::FileSystem::Directory)ncine::FileSystem::Directory
+ + + + diff --git a/master/classncine_1_1_file_system_1_1_directory.html b/master/classncine_1_1_file_system_1_1_directory.html new file mode 100644 index 0000000000..317d2e8e2f --- /dev/null +++ b/master/classncine_1_1_file_system_1_1_directory.html @@ -0,0 +1,114 @@ + + + + + + + +nCine: ncine::FileSystem::Directory Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::FileSystem::Directory Class Reference
+
+
+ +

The class that handles directory traversal. + More...

+ +

#include <FileSystem.h>

+ + + + + + + + + + + + + +

+Public Member Functions

Directory (const char *path)
 
+bool open (const char *path)
 Opens a directory for traversal.
 
+void close ()
 Closes an opened directory.
 
+const char * readNext ()
 Returns the name of the next file inside the directory or nullptr
 
+

Detailed Description

+

The class that handles directory traversal.

+

The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classncine_1_1_font-members.html b/master/classncine_1_1_font-members.html new file mode 100644 index 0000000000..2dd8f008f8 --- /dev/null +++ b/master/classncine_1_1_font-members.html @@ -0,0 +1,129 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::Font Member List
+
+
+ +

This is the complete list of members for ncine::Font, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
base() constncine::Fontinline
Font()ncine::Font
Font(const char *fntBufferName, const unsigned char *fntBufferPtr, unsigned long int fntBufferSize, const char *texFilename)ncine::Font
Font(const char *fntBufferName, const unsigned char *fntBufferPtr, unsigned long int fntBufferSize, const char *texBufferName, const unsigned char *texBufferPtr, unsigned long int texBufferSize)ncine::Font
Font(const char *fntBufferName, const unsigned char *fntBufferPtr, unsigned long int fntBufferSize, Texture *texture)ncine::Font
Font(const char *fntFilename)ncine::Fontexplicit
Font(const char *fntFilename, const char *texFilename)ncine::Font
Font(const char *fntFilename, Texture *texture)ncine::Font
Font(Font &&)ncine::Font
fromId(unsigned int id)ncine::Objectstatic
glyph(unsigned int glyphId) constncine::Font
GLYPH_IN_ALPHA enum valuencine::Font
GLYPH_IN_RED enum valuencine::Font
GLYPH_SPRITE enum valuencine::Font
id() constncine::Objectinline
lineHeight() constncine::Fontinline
loadFromFile(const char *fntFilename) (defined in ncine::Font)ncine::Font
loadFromFile(const char *fntFilename, const char *texFilename) (defined in ncine::Font)ncine::Font
loadFromFile(const char *fntFilename, Texture *texture) (defined in ncine::Font)ncine::Font
loadFromMemory(const char *fntBufferName, const unsigned char *fntBufferPtr, unsigned long int fntBufferSize, const char *texFilename) (defined in ncine::Font)ncine::Font
loadFromMemory(const char *fntBufferName, const unsigned char *fntBufferPtr, unsigned long int fntBufferSize, const char *texBufferName, const unsigned char *texBufferPtr, unsigned long int texBufferSize) (defined in ncine::Font)ncine::Font
loadFromMemory(const char *fntBufferName, const unsigned char *fntBufferPtr, unsigned long int fntBufferSize, Texture *texture) (defined in ncine::Font)ncine::Font
MaxNameLengthncine::Objectstatic
name() constncine::Object
numGlyphs() constncine::Fontinline
numKernings() constncine::Fontinline
Object(ObjectType type)ncine::Objectexplicit
Object(ObjectType type, const char *name)ncine::Object
Object(Object &&other)ncine::Object
Object(const Object &other)ncine::Objectprotected
ObjectType enum namencine::Object
operator=(Font &&)ncine::Font
ncine::Object::operator=(Object &&other)ncine::Object
renderMode() constncine::Fontinline
RenderMode enum namencine::Font
setName(const char *name)ncine::Object
setTexture(Texture *texture)ncine::Font
sType() (defined in ncine::Font)ncine::Fontinlinestatic
texture() constncine::Fontinline
texture()ncine::Fontinline
textureSize() constncine::Fontinline
type() constncine::Objectinline
type_ncine::Objectprotected
~Font() override (defined in ncine::Font)ncine::Font
~Object()ncine::Objectvirtual
+ + + + diff --git a/master/classncine_1_1_font.html b/master/classncine_1_1_font.html new file mode 100644 index 0000000000..58222b4e6e --- /dev/null +++ b/master/classncine_1_1_font.html @@ -0,0 +1,569 @@ + + + + + + + +nCine: ncine::Font Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

A class holding the font and glyphs information needed to render text. + More...

+ +

#include <Font.h>

+
+Inheritance diagram for ncine::Font:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for ncine::Font:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + +

+Public Types

enum  RenderMode { GLYPH_IN_ALPHA +, GLYPH_IN_RED +, GLYPH_SPRITE + }
 The available modes for text nodes rendering. More...
 
- Public Types inherited from ncine::Object
enum class  ObjectType {
+  BASE = 0 +, TEXTURE +, SHADER +, SCENENODE +,
+  SPRITE +, MESH_SPRITE +, ANIMATED_SPRITE +, PARTICLE +,
+  PARTICLE_SYSTEM +, FONT +, TEXTNODE +, AUDIOBUFFER +,
+  AUDIOBUFFER_PLAYER +, AUDIOSTREAM_PLAYER +
+ }
 Object types.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Font ()
 Constructs an empty font object with no glyphs nor kerning pairs.
 
 Font (const char *fntBufferName, const unsigned char *fntBufferPtr, unsigned long int fntBufferSize, const char *texFilename)
 Constructs the object from an AngelCode's FNT memory buffer and a texture. More...
 
 Font (const char *fntBufferName, const unsigned char *fntBufferPtr, unsigned long int fntBufferSize, const char *texBufferName, const unsigned char *texBufferPtr, unsigned long int texBufferSize)
 Constructs the object from an AngelCode's FNT memory buffer and a texture memory buffer. More...
 
 Font (const char *fntBufferName, const unsigned char *fntBufferPtr, unsigned long int fntBufferSize, Texture *texture)
 Constructs the object from an AngelCode's FNT memory buffer and a shared texture object. More...
 
 Font (const char *fntFilename)
 Constructs the object from an AngelCode's FNT file. More...
 
 Font (const char *fntFilename, const char *texFilename)
 Constructs the object from an AngelCode's FNT file and a texture file. More...
 
 Font (const char *fntFilename, Texture *texture)
 Constructs the object from an AngelCode's FNT file and a shared texture object. More...
 
Font (Font &&)
 Default move constructor.
 
+Fontoperator= (Font &&)
 Default move assignment operator.
 
+bool loadFromMemory (const char *fntBufferName, const unsigned char *fntBufferPtr, unsigned long int fntBufferSize, const char *texFilename)
 
+bool loadFromMemory (const char *fntBufferName, const unsigned char *fntBufferPtr, unsigned long int fntBufferSize, const char *texBufferName, const unsigned char *texBufferPtr, unsigned long int texBufferSize)
 
+bool loadFromMemory (const char *fntBufferName, const unsigned char *fntBufferPtr, unsigned long int fntBufferSize, Texture *texture)
 
+bool loadFromFile (const char *fntFilename)
 
+bool loadFromFile (const char *fntFilename, const char *texFilename)
 
+bool loadFromFile (const char *fntFilename, Texture *texture)
 
+const Texturetexture () const
 Returns the constant texture object in use by the font.
 
+Texturetexture ()
 Returns the texture object in use by the font.
 
+bool setTexture (Texture *texture)
 Sets a new shared texture object without modifying any glyphs or kerning data.
 
+unsigned int lineHeight () const
 Returns the font line height.
 
+unsigned int base () const
 Returns the font base.
 
+Vector2i textureSize () const
 Returns the texture atlas size.
 
+unsigned int numGlyphs () const
 Returns the number of glyphs.
 
+unsigned int numKernings () const
 Returns the number of kerning pairs.
 
+const FontGlyph * glyph (unsigned int glyphId) const
 Returns a constant pointer to a glyph.
 
+RenderMode renderMode () const
 Returns the mode detected by the font to render text nodes.
 
- Public Member Functions inherited from ncine::Object
Object (ObjectType type)
 Constructs an object with a specified type and adds it to the index.
 
Object (ObjectType type, const char *name)
 Constructs an object with a specified type and name and adds it to the index.
 
+virtual ~Object ()
 Removes an object from the index and then destroys it.
 
Object (Object &&other)
 Move constructor.
 
+Objectoperator= (Object &&other)
 Move assignment operator.
 
+unsigned int id () const
 Returns the object identification number.
 
+ObjectType type () const
 Returns the object type (RTTI)
 
+const char * name () const
 Returns the object name.
 
+void setName (const char *name)
 Sets the object name.
 
+ + + + + + + + + + + +

+Static Public Member Functions

+static ObjectType sType ()
 
- Static Public Member Functions inherited from ncine::Object
+static ObjectType sType ()
 Static method to return class type.
 
+template<class T >
static T * fromId (unsigned int id)
 Returns a casted pointer to the object with the specified id, if any exists.
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Attributes inherited from ncine::Object
+static const unsigned int MaxNameLength = 128
 Maximum length for an object name.
 
- Protected Member Functions inherited from ncine::Object
Object (const Object &other)
 Protected copy constructor used to clone objects.
 
- Protected Attributes inherited from ncine::Object
+ObjectType type_
 Object type.
 
+

Detailed Description

+

A class holding the font and glyphs information needed to render text.

+

Member Enumeration Documentation

+ +

◆ RenderMode

+ +
+
+ + + + +
enum ncine::Font::RenderMode
+
+ +

The available modes for text nodes rendering.

+
Note
Depending on the glyph channel a different shader will be used.
+ + + + +
Enumerator
GLYPH_IN_ALPHA 

Glyph data is in the alpha channel.

+
GLYPH_IN_RED 

Glyph data is in the red channel.

+
GLYPH_SPRITE 

Glyph data is in all four channels (glyphs are colored)

+
+ +
+
+

Constructor & Destructor Documentation

+ +

◆ Font() [1/6]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ncine::Font::Font (const char * fntBufferName,
const unsigned char * fntBufferPtr,
unsigned long int fntBufferSize,
const char * texFilename 
)
+
+ +

Constructs the object from an AngelCode's FNT memory buffer and a texture.

+
Note
The specified texture will override the one in the FNT file
+ +
+
+ +

◆ Font() [2/6]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ncine::Font::Font (const char * fntBufferName,
const unsigned char * fntBufferPtr,
unsigned long int fntBufferSize,
const char * texBufferName,
const unsigned char * texBufferPtr,
unsigned long int texBufferSize 
)
+
+ +

Constructs the object from an AngelCode's FNT memory buffer and a texture memory buffer.

+
Note
The specified texture will override the one in the FNT file
+ +
+
+ +

◆ Font() [3/6]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ncine::Font::Font (const char * fntBufferName,
const unsigned char * fntBufferPtr,
unsigned long int fntBufferSize,
Texturetexture 
)
+
+ +

Constructs the object from an AngelCode's FNT memory buffer and a shared texture object.

+
Note
The specified texture will override the one in the FNT file
+ +
+
+ +

◆ Font() [4/6]

+ +
+
+ + + + + +
+ + + + + + + + +
ncine::Font::Font (const char * fntFilename)
+
+explicit
+
+ +

Constructs the object from an AngelCode's FNT file.

+
Note
The texture specified by the FNT file will be automatically loaded
+ +
+
+ +

◆ Font() [5/6]

+ +
+
+ + + + + + + + + + + + + + + + + + +
ncine::Font::Font (const char * fntFilename,
const char * texFilename 
)
+
+ +

Constructs the object from an AngelCode's FNT file and a texture file.

+
Note
The specified texture will override the one in the FNT file
+ +
+
+ +

◆ Font() [6/6]

+ +
+
+ + + + + + + + + + + + + + + + + + +
ncine::Font::Font (const char * fntFilename,
Texturetexture 
)
+
+ +

Constructs the object from an AngelCode's FNT file and a shared texture object.

+
Note
The specified texture will override the one in the FNT file
+ +
+
+
The documentation for this class was generated from the following files:
    +
  • include/ncine/Font.h
  • +
  • src/Font.cpp
  • +
+
+ + + + diff --git a/master/classncine_1_1_font__coll__graph.map b/master/classncine_1_1_font__coll__graph.map new file mode 100644 index 0000000000..c82aa1ecff --- /dev/null +++ b/master/classncine_1_1_font__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classncine_1_1_font__coll__graph.md5 b/master/classncine_1_1_font__coll__graph.md5 new file mode 100644 index 0000000000..fe7ce07817 --- /dev/null +++ b/master/classncine_1_1_font__coll__graph.md5 @@ -0,0 +1 @@ +6bd7e371cbdfa65f777da40b6e4078d3 \ No newline at end of file diff --git a/master/classncine_1_1_font__coll__graph.png b/master/classncine_1_1_font__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..e79305c34de5894de03f8b350dd0e95dd201d055 GIT binary patch literal 2567 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 rBqY3OVuda478?jWi2IL@3-%8|kM$%h!*R1 + + + diff --git a/master/classncine_1_1_font__inherit__graph.md5 b/master/classncine_1_1_font__inherit__graph.md5 new file mode 100644 index 0000000000..fe7ce07817 --- /dev/null +++ b/master/classncine_1_1_font__inherit__graph.md5 @@ -0,0 +1 @@ +6bd7e371cbdfa65f777da40b6e4078d3 \ No newline at end of file diff --git a/master/classncine_1_1_font__inherit__graph.png b/master/classncine_1_1_font__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..e79305c34de5894de03f8b350dd0e95dd201d055 GIT binary patch literal 2567 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 rBqY3OVuda478?jWi2IL@3-%8|kM$%h!*R1 + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::Hash64 Member List
+
+
+ +

This is the complete list of members for ncine::Hash64, including all inherited members.

+ + + + + + + + +
clearStatistics()ncine::Hash64
hashFileStat(const char *filename) constncine::Hash64
hashString(const char *string, int length) constncine::Hash64
hashStrings(unsigned int count, const char **strings, const int *lengths) constncine::Hash64
scanHashString(const char *string, unsigned int length) constncine::Hash64
scanHashString(const char *string) constncine::Hash64
statistics() constncine::Hash64inline
+ + + + diff --git a/master/classncine_1_1_hash64.html b/master/classncine_1_1_hash64.html new file mode 100644 index 0000000000..6f0f56cc11 --- /dev/null +++ b/master/classncine_1_1_hash64.html @@ -0,0 +1,185 @@ + + + + + + + +nCine: ncine::Hash64 Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::Hash64 Class Reference
+
+
+ +

Utility methods to calculate a uint64_t hash from strings or files. + More...

+ +

#include <Hash64.h>

+ + + + + +

+Classes

struct  Statistics
 The statistics about hashing requests. More...
 
+ + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+uint64_t hashStrings (unsigned int count, const char **strings, const int *lengths) const
 Returns a hash number by hashing all characters of the given strings.
 
+uint64_t hashString (const char *string, int length) const
 Returns a hash number by hashing all characters of the given string.
 
+uint64_t hashFileStat (const char *filename) const
 Returns a hash number by hashing the date, size, and name of the given file.
 
uint64_t scanHashString (const char *string, unsigned int length) const
 Returns a hash number by scanning a hash string of the given length. More...
 
uint64_t scanHashString (const char *string) const
 Returns a hash number by scanning a hash string. More...
 
+const Statisticsstatistics () const
 Returns the statistics about the hashing requests.
 
+void clearStatistics ()
 Resets the statistics to zero requests.
 
+

Detailed Description

+

Utility methods to calculate a uint64_t hash from strings or files.

+

Member Function Documentation

+ +

◆ scanHashString() [1/2]

+ +
+
+ + + + + + + + +
uint64_t ncine::Hash64::scanHashString (const char * string) const
+
+ +

Returns a hash number by scanning a hash string.

+
Note
Can be used to scan MD5 sums from CMake file(MD5) command (128 bits, 32 chars) or BinaryShaderCache fasthash64() hashes (64 bits, 16 chars)
+ +
+
+ +

◆ scanHashString() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
uint64_t ncine::Hash64::scanHashString (const char * string,
unsigned int length 
) const
+
+ +

Returns a hash number by scanning a hash string of the given length.

+
Note
Can be used to scan MD5 sums from CMake file(MD5) command (128 bits, 32 chars) or BinaryShaderCache fasthash64() hashes (64 bits, 16 chars)
+ +
+
+
The documentation for this class was generated from the following files:
    +
  • include/ncine/Hash64.h
  • +
  • src/base/Hash64.cpp
  • +
+
+ + + + diff --git a/master/classncine_1_1_i_app_event_handler-members.html b/master/classncine_1_1_i_app_event_handler-members.html new file mode 100644 index 0000000000..bd2d63fbe7 --- /dev/null +++ b/master/classncine_1_1_i_app_event_handler-members.html @@ -0,0 +1,96 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::IAppEventHandler Member List
+
+
+ +

This is the complete list of members for ncine::IAppEventHandler, including all inherited members.

+ + + + + + + + + + + + + +
onChangeScalingFactor(float factor)ncine::IAppEventHandlerinlinevirtual
onDrawViewport(Viewport &viewport)ncine::IAppEventHandlerinlinevirtual
onFrameEnd()ncine::IAppEventHandlerinlinevirtual
onFrameStart()ncine::IAppEventHandlerinlinevirtual
onInit()ncine::IAppEventHandlerinlinevirtual
onPostUpdate()ncine::IAppEventHandlerinlinevirtual
onPreInit(AppConfiguration &config)ncine::IAppEventHandlerinlinevirtual
onResizeWindow(int width, int height)ncine::IAppEventHandlerinlinevirtual
onResume()ncine::IAppEventHandlerinlinevirtual
onShutdown()ncine::IAppEventHandlerinlinevirtual
onSuspend()ncine::IAppEventHandlerinlinevirtual
~IAppEventHandler()=0ncine::IAppEventHandlerinlinepure virtual
+ + + + diff --git a/master/classncine_1_1_i_app_event_handler.html b/master/classncine_1_1_i_app_event_handler.html new file mode 100644 index 0000000000..24bfc77a2a --- /dev/null +++ b/master/classncine_1_1_i_app_event_handler.html @@ -0,0 +1,213 @@ + + + + + + + +nCine: ncine::IAppEventHandler Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::IAppEventHandler Class Referenceabstract
+
+
+ +

The interface class for handling nCine application events. + More...

+ +

#include <IAppEventHandler.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+virtual ~IAppEventHandler ()=0
 Pure virtual destructor in order to make the class abstract.
 
virtual void onPreInit (AppConfiguration &config)
 Called once before initialization to setup the application. More...
 
+virtual void onInit ()
 Called once on application initialization.
 
+virtual void onFrameStart ()
 Called at the start of each frame.
 
+virtual void onPostUpdate ()
 Called every time the scenegraph has been traversed and all nodes have been transformed.
 
+virtual void onDrawViewport (Viewport &viewport)
 Called every time a viewport is going to be drawn.
 
+virtual void onFrameEnd ()
 Called at the end of each frame, just before swapping buffers.
 
virtual void onResizeWindow (int width, int height)
 Called every time the window is resized (by the system or the user) More...
 
+virtual void onChangeScalingFactor (float factor)
 Called every time the window scaling factor changes.
 
+virtual void onShutdown ()
 Called once on application shutdown.
 
+virtual void onSuspend ()
 Called every time the application needs to be suspended.
 
+virtual void onResume ()
 Called every time the application resumes from suspension.
 
+

Detailed Description

+

The interface class for handling nCine application events.

+

Member Function Documentation

+ +

◆ onPreInit()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void ncine::IAppEventHandler::onPreInit (AppConfigurationconfig)
+
+inlinevirtual
+
+ +

Called once before initialization to setup the application.

+
Warning
At this stage it is only safe to modify the config object. No other engine API calls should be made.
+ +
+
+ +

◆ onResizeWindow()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void ncine::IAppEventHandler::onResizeWindow (int width,
int height 
)
+
+inlinevirtual
+
+ +

Called every time the window is resized (by the system or the user)

+
Note
It is called when the drawable resolution changes, but the screen coordinates one might stay the same. This might happen if the display scale changes or if the user drags a window on a different screen with a different DPI or scaling settings.
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classncine_1_1_i_audio_device-members.html b/master/classncine_1_1_i_audio_device-members.html new file mode 100644 index 0000000000..42dd6f1886 --- /dev/null +++ b/master/classncine_1_1_i_audio_device-members.html @@ -0,0 +1,113 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::IAudioDevice Member List
+
+
+ +

This is the complete list of members for ncine::IAudioDevice, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
attributes() const =0ncine::IAudioDevicepure virtual
gain() const =0ncine::IAudioDevicepure virtual
hasExtension(ALExtensions::Enum extensionName) const =0ncine::IAudioDevicepure virtual
InvalidSource (defined in ncine::IAudioDevice)ncine::IAudioDevicestatic
maxNumSources() const =0ncine::IAudioDevicepure virtual
name() const =0ncine::IAudioDevicepure virtual
numAvailableSources() const =0ncine::IAudioDevicepure virtual
numPlayers() const =0ncine::IAudioDevicepure virtual
pauseDevice()=0ncine::IAudioDevicepure virtual
pausePlayers()=0ncine::IAudioDevicepure virtual
pausePlayers(PlayerType playerType)=0ncine::IAudioDevicepure virtual
player(unsigned int index) const =0ncine::IAudioDevicepure virtual
player(unsigned int index)=0ncine::IAudioDevicepure virtual
PlayerType enum name (defined in ncine::IAudioDevice)ncine::IAudioDevice
position() const =0ncine::IAudioDevicepure virtual
registerPlayer(IAudioPlayer *player)=0ncine::IAudioDevicepure virtual
resumeDevice()=0ncine::IAudioDevicepure virtual
resumePlayers()=0ncine::IAudioDevicepure virtual
setGain(float gain)=0ncine::IAudioDevicepure virtual
setPosition(const Vector3f &position)=0ncine::IAudioDevicepure virtual
setPosition(float x, float y, float z)=0ncine::IAudioDevicepure virtual
setVelocity(const Vector3f &velocity)=0ncine::IAudioDevicepure virtual
setVelocity(float x, float y, float z)=0ncine::IAudioDevicepure virtual
stopPlayers()=0ncine::IAudioDevicepure virtual
stopPlayers(PlayerType playerType)=0ncine::IAudioDevicepure virtual
unregisterPlayer(IAudioPlayer *player)=0ncine::IAudioDevicepure virtual
updatePlayers()=0ncine::IAudioDevicepure virtual
velocity() const =0ncine::IAudioDevicepure virtual
~IAudioDevice()=0 (defined in ncine::IAudioDevice)ncine::IAudioDeviceinlinepure virtual
+ + + + diff --git a/master/classncine_1_1_i_audio_device.html b/master/classncine_1_1_i_audio_device.html new file mode 100644 index 0000000000..4a03154d55 --- /dev/null +++ b/master/classncine_1_1_i_audio_device.html @@ -0,0 +1,321 @@ + + + + + + + +nCine: ncine::IAudioDevice Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::IAudioDevice Class Referenceabstract
+
+
+ +

Audio device interface class. + More...

+ +

#include <IAudioDevice.h>

+
+Inheritance diagram for ncine::IAudioDevice:
+
+
Inheritance graph
+ + + + +
[legend]
+ + + + + + + + +

+Classes

struct  ALExtensions
 OpenAL queryable extensions. More...
 
struct  Attributes
 Audio device attributes class. More...
 
+ + + +

+Public Types

enum class  PlayerType { BUFFER +, STREAM + }
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+virtual const Attributesattributes () const =0
 Returns the audio device attributes.
 
+virtual const char * name () const =0
 Returns the name of the audio device.
 
+virtual bool hasExtension (ALExtensions::Enum extensionName) const =0
 Returns true if the specified OpenAL extension is available.
 
+virtual float gain () const =0
 Returns the listener gain value.
 
+virtual void setGain (float gain)=0
 Sets the listener gain value.
 
+virtual Vector3f position () const =0
 Returns the listener position vector.
 
+virtual void setPosition (const Vector3f &position)=0
 Sets the listener position vector.
 
+virtual void setPosition (float x, float y, float z)=0
 Sets the listener position vector through components.
 
+virtual Vector3f velocity () const =0
 Returns the listener velocity vector.
 
+virtual void setVelocity (const Vector3f &velocity)=0
 Sets the listener velocity vector.
 
+virtual void setVelocity (float x, float y, float z)=0
 Sets the listener velocity vector through components.
 
+virtual unsigned int maxNumSources () const =0
 Returns the maximum number of audio sources.
 
+virtual unsigned int numAvailableSources () const =0
 Returns the number of available audio sources.
 
+virtual unsigned int numPlayers () const =0
 Returns the number of active players.
 
+virtual const IAudioPlayerplayer (unsigned int index) const =0
 Returns the specified active player object (const version)
 
+virtual IAudioPlayerplayer (unsigned int index)=0
 Returns the specified active player object.
 
virtual void pausePlayers ()=0
 Pauses every player currently playing. More...
 
+virtual void stopPlayers ()=0
 Stops every player currently playing.
 
+virtual void pausePlayers (PlayerType playerType)=0
 Pauses every player of the specified type.
 
+virtual void stopPlayers (PlayerType playerType)=0
 Stops every player of the specified type.
 
+virtual void resumePlayers ()=0
 Resumes all and only the players that were paused by a pausePlayers() call.
 
virtual void pauseDevice ()=0
 Pauses all audio device activities using an OpenAL-soft extension (if available) More...
 
virtual void resumeDevice ()=0
 
+virtual void registerPlayer (IAudioPlayer *player)=0
 Registers a new stream player for buffer update.
 
+virtual void unregisterPlayer (IAudioPlayer *player)=0
 Remove a stream player from the array of active players.
 
+virtual void updatePlayers ()=0
 Updates players state (and buffer queue in the case of stream players)
 
+ + + +

+Static Public Attributes

+static const unsigned int InvalidSource = ~0U
 
+

Detailed Description

+

Audio device interface class.

+

Member Function Documentation

+ +

◆ pauseDevice()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void ncine::IAudioDevice::pauseDevice ()
+
+pure virtual
+
+ +

Pauses all audio device activities using an OpenAL-soft extension (if available)

+
Note
If the extension is not available, all players are paused.
+ +

Implemented in ncine::NullAudioDevice.

+ +
+
+ +

◆ pausePlayers()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void ncine::IAudioDevice::pausePlayers ()
+
+pure virtual
+
+ +

Pauses every player currently playing.

+
Note
Paused players can be resumed with resumePlayers().
+ +

Implemented in ncine::NullAudioDevice.

+ +
+
+ +

◆ resumeDevice()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void ncine::IAudioDevice::resumeDevice ()
+
+pure virtual
+
+

Resumes all audio device activities using an OpenAL-soft extension (if available) /*!

Note
If the extension is not available, all paused players resume playing. *‍/
+ +

Implemented in ncine::NullAudioDevice.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classncine_1_1_i_audio_device__inherit__graph.map b/master/classncine_1_1_i_audio_device__inherit__graph.map new file mode 100644 index 0000000000..9a01f9f9af --- /dev/null +++ b/master/classncine_1_1_i_audio_device__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classncine_1_1_i_audio_device__inherit__graph.md5 b/master/classncine_1_1_i_audio_device__inherit__graph.md5 new file mode 100644 index 0000000000..4de108516c --- /dev/null +++ b/master/classncine_1_1_i_audio_device__inherit__graph.md5 @@ -0,0 +1 @@ +c448480ae6cf04ad172ced7b2b6834bf \ No newline at end of file diff --git a/master/classncine_1_1_i_audio_device__inherit__graph.png b/master/classncine_1_1_i_audio_device__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..b2c1eed0a30af9c2165f6f4da3791f61ceadb66a GIT binary patch literal 3748 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 Z7) + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::IAudioPlayer Member List
+
+
+ +

This is the complete list of members for ncine::IAudioPlayer, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
airAbsorptionFactor_ncine::IAudioPlayerprotected
ALAudioDevice (defined in ncine::IAudioPlayer)ncine::IAudioPlayerfriend
applySourceProperties()ncine::IAudioPlayerprotected
auxFilterId_ncine::IAudioPlayerprotected
bufferId() const =0ncine::IAudioPlayerpure virtual
bufferSize() const =0ncine::IAudioPlayerpure virtual
bytesPerSample() const =0ncine::IAudioPlayerpure virtual
coneInnerAngle() constncine::IAudioPlayerinline
coneInnerAngle_ncine::IAudioPlayerprotected
coneOuterAngle() constncine::IAudioPlayerinline
coneOuterAngle_ncine::IAudioPlayerprotected
coneOuterGain() constncine::IAudioPlayerinline
coneOuterGain_ncine::IAudioPlayerprotected
coneOuterGainHF_ncine::IAudioPlayerprotected
DefaultAirAbsorptionFactor (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
DefaultConeAngle (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
DefaultConeOuterGain (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
DefaultConeOuterGainHF (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
DefaultGain (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
DefaultPitch (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
DefaultRoomRolloffFactor (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
directFilterId_ncine::IAudioPlayerprotected
direction() constncine::IAudioPlayerinline
direction_ncine::IAudioPlayerprotected
duration() const =0ncine::IAudioPlayerpure virtual
effectSlotId_ncine::IAudioPlayerprotected
frequency() const =0ncine::IAudioPlayerpure virtual
fromId(unsigned int id)ncine::Objectstatic
gain() constncine::IAudioPlayerinline
gain_ncine::IAudioPlayerprotected
hasSource() constncine::IAudioPlayer
IAudioPlayer(ObjectType type, const char *name) (defined in ncine::IAudioPlayer)ncine::IAudioPlayer
IAudioPlayer(ObjectType type) (defined in ncine::IAudioPlayer)ncine::IAudioPlayer
IAudioPlayer(IAudioPlayer &&)=defaultncine::IAudioPlayer
id() constncine::Objectinline
isLooping() constncine::IAudioPlayerinline
isLooping_ncine::IAudioPlayerprotected
isPaused() constncine::IAudioPlayerinline
isPlaying() constncine::IAudioPlayerinline
isSourceLocked() constncine::IAudioPlayerinline
isStopped() constncine::IAudioPlayerinline
MaxAirAbsorptionFactor (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
MaxConeAngle (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
MaxConeOuterGain (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
MaxConeOuterGainHF (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
MaxGain (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
MaxNameLengthncine::Objectstatic
MaxPitch (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
MaxRoomRolloffFactor (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
MinAirAbsorptionFactor (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
MinConeAngle (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
MinConeOuterGain (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
MinConeOuterGainHF (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
MinGain (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
MinPitch (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
MinRoomRolloffFactor (defined in ncine::IAudioPlayer)ncine::IAudioPlayerstatic
name() constncine::Object
numChannels() const =0ncine::IAudioPlayerpure virtual
numSamples() const =0ncine::IAudioPlayerpure virtual
Object(ObjectType type)ncine::Objectexplicit
Object(ObjectType type, const char *name)ncine::Object
Object(Object &&other)ncine::Object
Object(const Object &other)ncine::Objectprotected
ObjectType enum namencine::Object
operator=(IAudioPlayer &&)=defaultncine::IAudioPlayer
ncine::Object::operator=(Object &&other)ncine::Object
pause()=0ncine::IAudioPlayerpure virtual
pitch() constncine::IAudioPlayerinline
pitch_ncine::IAudioPlayerprotected
play()=0ncine::IAudioPlayerpure virtual
PlayerState enum namencine::IAudioPlayer
position() constncine::IAudioPlayerinline
position_ncine::IAudioPlayerprotected
roomRooloffFactor_ncine::IAudioPlayerprotected
sampleOffset() constncine::IAudioPlayer
setConeInnerAngle(float coneAngle)ncine::IAudioPlayer
setConeOuterAngle(float coneAngle)ncine::IAudioPlayer
setConeOuterGain(float gain)ncine::IAudioPlayer
setDirection(const Vector3f &direction)ncine::IAudioPlayer
setDirection(float x, float y, float z)ncine::IAudioPlayer
setGain(float gain)ncine::IAudioPlayer
setLooping(bool isLooping)ncine::IAudioPlayerinline
setName(const char *name)ncine::Object
setPitch(float pitch)ncine::IAudioPlayer
setPosition(const Vector3f &position)ncine::IAudioPlayer
setPosition(float x, float y, float z)ncine::IAudioPlayer
setSampleOffset(int offset)ncine::IAudioPlayer
setSourceLocked(bool sourceLocked)ncine::IAudioPlayer
setVelocity(const Vector3f &velocity)ncine::IAudioPlayer
setVelocity(float x, float y, float z)ncine::IAudioPlayer
sourceId() constncine::IAudioPlayerinline
sourceId_ncine::IAudioPlayerprotected
sourceLocked_ncine::IAudioPlayerprotected
state() constncine::IAudioPlayerinline
state_ncine::IAudioPlayerprotected
stop()=0ncine::IAudioPlayerpure virtual
sType()ncine::Objectinlinestatic
type() constncine::Objectinline
type_ncine::Objectprotected
updateState()=0ncine::IAudioPlayerprotectedpure virtual
velocity() constncine::IAudioPlayerinline
velocity_ncine::IAudioPlayerprotected
~IAudioPlayer() override (defined in ncine::IAudioPlayer)ncine::IAudioPlayer
~Object()ncine::Objectvirtual
+ + + + diff --git a/master/classncine_1_1_i_audio_player.html b/master/classncine_1_1_i_audio_player.html new file mode 100644 index 0000000000..6c83960ccf --- /dev/null +++ b/master/classncine_1_1_i_audio_player.html @@ -0,0 +1,738 @@ + + + + + + + +nCine: ncine::IAudioPlayer Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

Audio player interface class. + More...

+ +

#include <IAudioPlayer.h>

+
+Inheritance diagram for ncine::IAudioPlayer:
+
+
Inheritance graph
+ + + + + + +
[legend]
+
+Collaboration diagram for ncine::IAudioPlayer:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + + + + + + +

+Public Types

enum class  PlayerState { INITIAL = 0 +, PLAYING +, PAUSED +, STOPPED + }
 Player state.
 
- Public Types inherited from ncine::Object
enum class  ObjectType {
+  BASE = 0 +, TEXTURE +, SHADER +, SCENENODE +,
+  SPRITE +, MESH_SPRITE +, ANIMATED_SPRITE +, PARTICLE +,
+  PARTICLE_SYSTEM +, FONT +, TEXTNODE +, AUDIOBUFFER +,
+  AUDIOBUFFER_PLAYER +, AUDIOSTREAM_PLAYER +
+ }
 Object types.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

IAudioPlayer (ObjectType type, const char *name)
 
IAudioPlayer (ObjectType type)
 
IAudioPlayer (IAudioPlayer &&)=default
 Default move constructor.
 
+IAudioPlayeroperator= (IAudioPlayer &&)=default
 Default move assignment operator.
 
+bool hasSource () const
 Returns true if a valid OpenAL source is currently assigned to the player.
 
+unsigned int sourceId () const
 Returns the OpenAL id of the player source.
 
+virtual unsigned int bufferId () const =0
 Returns the OpenAL id of the currently playing buffer.
 
+virtual int bytesPerSample () const =0
 Returns the number of bytes per sample.
 
+virtual int numChannels () const =0
 Returns the number of audio channels of the currently playing buffer.
 
+virtual int frequency () const =0
 Returns the samples frequency of the currently playing buffer.
 
+virtual unsigned long int numSamples () const =0
 Returns the number of samples.
 
+virtual float duration () const =0
 Returns the duration in seconds.
 
+virtual unsigned long bufferSize () const =0
 Returns the size of the currently playing buffer in bytes.
 
+int sampleOffset () const
 Returns the playback position expressed in samples.
 
+void setSampleOffset (int offset)
 Sets the playback position expressed in samples.
 
+bool isSourceLocked () const
 Returns true if the OpenAL source is locked.
 
void setSourceLocked (bool sourceLocked)
 Locks an OpenAL source so it is not released to the pool when the player stops. More...
 
+virtual void play ()=0
 Starts playing.
 
+virtual void pause ()=0
 Pauses playing.
 
+virtual void stop ()=0
 Stops playing and rewinds.
 
+PlayerState state () const
 Returns the state of the player.
 
+bool isPlaying () const
 Returns true if the player is playing.
 
+bool isPaused () const
 Returns true if the player is paused.
 
+bool isStopped () const
 Returns true if the player is stopped.
 
+bool isLooping () const
 Returns the looping property of the player.
 
+void setLooping (bool isLooping)
 Sets the looping property of the player.
 
+float gain () const
 Returns the player gain value.
 
+void setGain (float gain)
 Sets the player gain value.
 
+float pitch () const
 Returns the player pitch value.
 
+void setPitch (float pitch)
 Sets the player pitch value.
 
+Vector3f position () const
 Returns the player position vector.
 
+void setPosition (const Vector3f &position)
 Sets the player position vector.
 
+void setPosition (float x, float y, float z)
 Sets the player position vector through components.
 
+Vector3f velocity () const
 Returns the player velocity vector.
 
+void setVelocity (const Vector3f &velocity)
 Sets the player velocity vector.
 
+void setVelocity (float x, float y, float z)
 Sets the player velocity vector through components.
 
+Vector3f direction () const
 Returns the player direction vector.
 
void setDirection (const Vector3f &direction)
 Sets the player direction vector. More...
 
void setDirection (float x, float y, float z)
 Sets the player direction vector through components. More...
 
+float coneInnerAngle () const
 Returns the player inside angle of the sound cone in degrees.
 
+void setConeInnerAngle (float coneAngle)
 Sets the player inside angle of the sound cone in degrees.
 
+float coneOuterAngle () const
 Returns the player outside angle of the sound cone in degrees.
 
+void setConeOuterAngle (float coneAngle)
 Sets the player outside angle of the sound cone in degrees.
 
+float coneOuterGain () const
 Returns the player multiplication factor to determine the gain outside the cone.
 
+void setConeOuterGain (float gain)
 Sets the player multiplication factor to determine the gain outside the cone.
 
- Public Member Functions inherited from ncine::Object
Object (ObjectType type)
 Constructs an object with a specified type and adds it to the index.
 
Object (ObjectType type, const char *name)
 Constructs an object with a specified type and name and adds it to the index.
 
+virtual ~Object ()
 Removes an object from the index and then destroys it.
 
Object (Object &&other)
 Move constructor.
 
+Objectoperator= (Object &&other)
 Move assignment operator.
 
+unsigned int id () const
 Returns the object identification number.
 
+ObjectType type () const
 Returns the object type (RTTI)
 
+const char * name () const
 Returns the object name.
 
+void setName (const char *name)
 Sets the object name.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Attributes

+static const float MinGain = 0.0f
 
+static const float DefaultGain = 1.0f
 
+static const float MaxGain = 1.0f
 
+static const float MinPitch = 0.5f
 
+static const float DefaultPitch = 1.0f
 
+static const float MaxPitch = 2.0f
 
+static const float MinConeAngle = 0.0f
 
+static const float DefaultConeAngle = 360.0f
 
+static const float MaxConeAngle = 360.0f
 
+static const float MinConeOuterGain = 0.0f
 
+static const float DefaultConeOuterGain = 0.0f
 
+static const float MaxConeOuterGain = 1.0f
 
+static const float MinAirAbsorptionFactor = 0.0f
 
+static const float DefaultAirAbsorptionFactor = 0.0f
 
+static const float MaxAirAbsorptionFactor = 10.0f
 
+static const float MinRoomRolloffFactor = 0.0f
 
+static const float DefaultRoomRolloffFactor = 0.0f
 
+static const float MaxRoomRolloffFactor = 10.0f
 
+static const float MinConeOuterGainHF = 0.0f
 
+static const float DefaultConeOuterGainHF = 0.0f
 
+static const float MaxConeOuterGainHF = 1.0f
 
- Static Public Attributes inherited from ncine::Object
+static const unsigned int MaxNameLength = 128
 Maximum length for an object name.
 
+ + + + + + + + + + + +

+Protected Member Functions

virtual void updateState ()=0
 Updates the state of the player if the source has finished playing. More...
 
+void applySourceProperties ()
 Applies source properties after registering a player.
 
- Protected Member Functions inherited from ncine::Object
Object (const Object &other)
 Protected copy constructor used to clone objects.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+unsigned int sourceId_
 The OpenAL source id.
 
+bool sourceLocked_
 The flag indicating if an OpenAL source is locked and never released to the pool.
 
+PlayerState state_
 Current player state.
 
+bool isLooping_
 Looping status flag.
 
+float gain_
 Player gain value.
 
+float pitch_
 Player pitch value.
 
+Vector3f position_
 Player position in space.
 
+Vector3f velocity_
 Player velocity in space.
 
Vector3f direction_
 Player direction in space. More...
 
float coneInnerAngle_
 Inside angle of the sound cone in degrees. More...
 
float coneOuterAngle_
 Outside angle of the sound cone in degrees. More...
 
+float coneOuterGain_
 Multiplication factor to determine the gain outside the cone.
 
+float airAbsorptionFactor_
 Player air absorption factor value.
 
+float roomRooloffFactor_
 Player room rolloff factor value.
 
+float coneOuterGainHF_
 Player cone outer gain HF value.
 
+unsigned int effectSlotId_
 The OpenAL effect slot id to use when playing.
 
+unsigned int auxFilterId_
 The OpenAL auxiliary filter id to use when playing.
 
+unsigned int directFilterId_
 The OpenAL direct filter id to use when playing.
 
- Protected Attributes inherited from ncine::Object
+ObjectType type_
 Object type.
 
+ + + +

+Friends

+class ALAudioDevice
 
+ + + + + + + + + +

+Additional Inherited Members

- Static Public Member Functions inherited from ncine::Object
+static ObjectType sType ()
 Static method to return class type.
 
+template<class T >
static T * fromId (unsigned int id)
 Returns a casted pointer to the object with the specified id, if any exists.
 
+

Detailed Description

+

Audio player interface class.

+

Member Function Documentation

+ +

◆ setDirection() [1/2]

+ +
+
+ + + + + + + + +
void ncine::IAudioPlayer::setDirection (const Vector3fdirection)
+
+ +

Sets the player direction vector.

+
Note
Setting all components to zero will make the player omnidirectional
+ +
+
+ +

◆ setDirection() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ncine::IAudioPlayer::setDirection (float x,
float y,
float z 
)
+
+ +

Sets the player direction vector through components.

+
Note
Setting all components to zero will make the player omnidirectional
+ +
+
+ +

◆ setSourceLocked()

+ +
+
+ + + + + + + + +
void ncine::IAudioPlayer::setSourceLocked (bool sourceLocked)
+
+ +

Locks an OpenAL source so it is not released to the pool when the player stops.

+
Note
Locking an OpenAL source can be useful to retain source, effect, and filter properties
+ +
+
+ +

◆ updateState()

+ +
+
+ + + + + +
+ + + + + + + +
virtual void ncine::IAudioPlayer::updateState ()
+
+protectedpure virtual
+
+ +

Updates the state of the player if the source has finished playing.

+

It is called every frame by the IAudioDevice class and it is also responsible for buffer queueing/unqueueing in stream players.

+ +

Implemented in ncine::AudioStreamPlayer, and ncine::AudioBufferPlayer.

+ +
+
+

Member Data Documentation

+ +

◆ coneInnerAngle_

+ +
+
+ + + + + +
+ + + + +
float ncine::IAudioPlayer::coneInnerAngle_
+
+protected
+
+ +

Inside angle of the sound cone in degrees.

+
Note
The default value of 360 means that the inner angle covers the entire world.
+ +
+
+ +

◆ coneOuterAngle_

+ +
+
+ + + + + +
+ + + + +
float ncine::IAudioPlayer::coneOuterAngle_
+
+protected
+
+ +

Outside angle of the sound cone in degrees.

+
Note
The default value of 360 means that the outer angle covers the entire world.
+ +
+
+ +

◆ direction_

+ +
+
+ + + + + +
+ + + + +
Vector3f ncine::IAudioPlayer::direction_
+
+protected
+
+ +

Player direction in space.

+
Note
If all components are zero the player is omnidirectional
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classncine_1_1_i_audio_player__coll__graph.map b/master/classncine_1_1_i_audio_player__coll__graph.map new file mode 100644 index 0000000000..57d4a46d60 --- /dev/null +++ b/master/classncine_1_1_i_audio_player__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/master/classncine_1_1_i_audio_player__coll__graph.md5 b/master/classncine_1_1_i_audio_player__coll__graph.md5 new file mode 100644 index 0000000000..18f91b4808 --- /dev/null +++ b/master/classncine_1_1_i_audio_player__coll__graph.md5 @@ -0,0 +1 @@ +7c6a9709d9c7f3bf75491241f23a0d3c \ No newline at end of file diff --git a/master/classncine_1_1_i_audio_player__coll__graph.png b/master/classncine_1_1_i_audio_player__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..407a79dd751277eea66cf92f47cea9786c3caa35 GIT binary patch literal 10096 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 literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_i_audio_player__inherit__graph.map b/master/classncine_1_1_i_audio_player__inherit__graph.map new file mode 100644 index 0000000000..89a7ab45f3 --- /dev/null +++ b/master/classncine_1_1_i_audio_player__inherit__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/master/classncine_1_1_i_audio_player__inherit__graph.md5 b/master/classncine_1_1_i_audio_player__inherit__graph.md5 new file mode 100644 index 0000000000..27c35a1bc1 --- /dev/null +++ b/master/classncine_1_1_i_audio_player__inherit__graph.md5 @@ -0,0 +1 @@ +edb5b49912952f74bed15ba21d6aaac5 \ No newline at end of file diff --git a/master/classncine_1_1_i_audio_player__inherit__graph.png b/master/classncine_1_1_i_audio_player__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..a9cc70fa61005680789162b79d7c9331dff797bc GIT binary patch literal 9315 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 K7p)XF2>2g1Xw~lk literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_i_debug_overlay-members.html b/master/classncine_1_1_i_debug_overlay-members.html new file mode 100644 index 0000000000..74b72c273e --- /dev/null +++ b/master/classncine_1_1_i_debug_overlay-members.html @@ -0,0 +1,94 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::IDebugOverlay Member List
+
+
+ +

This is the complete list of members for ncine::IDebugOverlay, including all inherited members.

+ + + + + + + + + + + +
IDebugOverlay(float profileTextUpdateTime) (defined in ncine::IDebugOverlay)ncine::IDebugOverlayinlineexplicit
IDebugOverlay(const IDebugOverlay &)=deletencine::IDebugOverlayprotected
lastUpdateTime_ (defined in ncine::IDebugOverlay)ncine::IDebugOverlayprotected
operator=(const IDebugOverlay &)=deletencine::IDebugOverlayprotected
settings() (defined in ncine::IDebugOverlay)ncine::IDebugOverlayinline
settings_ (defined in ncine::IDebugOverlay)ncine::IDebugOverlayprotected
update()=0 (defined in ncine::IDebugOverlay)ncine::IDebugOverlaypure virtual
updateFrameTimings()=0 (defined in ncine::IDebugOverlay)ncine::IDebugOverlaypure virtual
updateTime_ (defined in ncine::IDebugOverlay)ncine::IDebugOverlayprotected
~IDebugOverlay() (defined in ncine::IDebugOverlay)ncine::IDebugOverlayinlinevirtual
+ + + + diff --git a/master/classncine_1_1_i_debug_overlay.html b/master/classncine_1_1_i_debug_overlay.html new file mode 100644 index 0000000000..30a0580422 --- /dev/null +++ b/master/classncine_1_1_i_debug_overlay.html @@ -0,0 +1,151 @@ + + + + + + + +nCine: ncine::IDebugOverlay Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::IDebugOverlay Class Referenceabstract
+
+
+ +

Interface for debug overlays. + More...

+ +

#include <IDebugOverlay.h>

+
+Collaboration diagram for ncine::IDebugOverlay:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + +

+Classes

struct  DisplaySettings
 
+ + + + + + + + + +

+Public Member Functions

IDebugOverlay (float profileTextUpdateTime)
 
+DisplaySettingssettings ()
 
+virtual void update ()=0
 
+virtual void updateFrameTimings ()=0
 
+ + + + + + + +

+Protected Member Functions

IDebugOverlay (const IDebugOverlay &)=delete
 Deleted copy constructor.
 
+IDebugOverlayoperator= (const IDebugOverlay &)=delete
 Deleted assignment operator.
 
+ + + + + + + +

+Protected Attributes

+DisplaySettings settings_
 
+TimeStamp lastUpdateTime_
 
+float updateTime_
 
+

Detailed Description

+

Interface for debug overlays.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classncine_1_1_i_debug_overlay__coll__graph.map b/master/classncine_1_1_i_debug_overlay__coll__graph.map new file mode 100644 index 0000000000..cfadbcc3f6 --- /dev/null +++ b/master/classncine_1_1_i_debug_overlay__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/master/classncine_1_1_i_debug_overlay__coll__graph.md5 b/master/classncine_1_1_i_debug_overlay__coll__graph.md5 new file mode 100644 index 0000000000..1693dae3e8 --- /dev/null +++ b/master/classncine_1_1_i_debug_overlay__coll__graph.md5 @@ -0,0 +1 @@ +803a7abef8039bdbc1db541bc4e4fba6 \ No newline at end of file diff --git a/master/classncine_1_1_i_debug_overlay__coll__graph.png b/master/classncine_1_1_i_debug_overlay__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..ee048ff701bb6e622dbf9b70d6f49459dd610c3c GIT binary patch literal 9097 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 literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_i_file-members.html b/master/classncine_1_1_i_file-members.html new file mode 100644 index 0000000000..93e7ade884 --- /dev/null +++ b/master/classncine_1_1_i_file-members.html @@ -0,0 +1,125 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::IFile Member List
+
+
+ +

This is the complete list of members for ncine::IFile, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bufferPtr() constncine::IFileinlinevirtual
bufferPtr()ncine::IFileinlinevirtual
close()=0ncine::IFilepure virtual
createFileHandle(const char *filename)ncine::IFilestatic
createFromMemory(const char *bufferName, unsigned char *bufferPtr, unsigned long int bufferSize)ncine::IFilestatic
createFromMemory(const char *bufferName, const unsigned char *bufferPtr, unsigned long int bufferSize)ncine::IFilestatic
createFromMemory(unsigned char *bufferPtr, unsigned long int bufferSize)ncine::IFilestatic
createFromMemory(const unsigned char *bufferPtr, unsigned long int bufferSize)ncine::IFilestatic
createFromMemory(const char *bufferName, unsigned long int bufferSize)ncine::IFilestatic
createFromMemory(unsigned long int bufferSize)ncine::IFilestatic
createFromMemory(const char *bufferName, nctl::UniquePtr< unsigned char[]> buffer, unsigned long int bufferSize)ncine::IFilestatic
createFromMemory(nctl::UniquePtr< unsigned char[]> buffer, unsigned long int bufferSize)ncine::IFilestatic
fd() constncine::IFileinline
fileDescriptor_ncine::IFileprotected
filename() constncine::IFileinline
filename_ncine::IFileprotected
filePointer_ncine::IFileprotected
fileSize_ncine::IFileprotected
FileType enum namencine::IFile
IFile(const char *filename)ncine::IFileexplicit
int16FromBE(uint16_t number)ncine::IFileinlinestatic
int16FromLE(uint16_t number)ncine::IFileinlinestatic
int32FromBE(uint32_t number)ncine::IFileinlinestatic
int32FromLE(uint32_t number)ncine::IFileinlinestatic
int64FromBE(uint64_t number)ncine::IFileinlinestatic
int64FromLE(uint64_t number)ncine::IFileinlinestatic
isOpened() constncine::IFilevirtual
MaxFilenameLengthncine::IFileprotectedstatic
open(unsigned char mode)=0ncine::IFilepure virtual
ptr() constncine::IFileinline
read(void *buffer, unsigned long int bytes) const =0ncine::IFilepure virtual
seek(long int offset, int whence) const =0ncine::IFilepure virtual
setCloseOnDestruction(bool shouldCloseOnDestruction)ncine::IFileinline
shouldCloseOnDestruction_ncine::IFileprotected
size() constncine::IFileinline
tell() const =0ncine::IFilepure virtual
TextureSaverPng classncine::IFilefriend
type() constncine::IFileinline
type_ncine::IFileprotected
write(const void *buffer, unsigned long int bytes)=0ncine::IFilepure virtual
~IFile() (defined in ncine::IFile)ncine::IFileinlinevirtual
+ + + + diff --git a/master/classncine_1_1_i_file.html b/master/classncine_1_1_i_file.html new file mode 100644 index 0000000000..665db8bebe --- /dev/null +++ b/master/classncine_1_1_i_file.html @@ -0,0 +1,475 @@ + + + + + + + +nCine: ncine::IFile Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

The interface class dealing with file operations. + More...

+ +

#include <IFile.h>

+
+Inheritance diagram for ncine::IFile:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for ncine::IFile:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + +

+Classes

struct  OpenMode
 Open mode bitmask. More...
 
+ + + + +

+Public Types

enum class  FileType { BASE = 0 +, MEMORY +, STANDARD +, ASSET + }
 File types.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 IFile (const char *filename)
 Constructs a base file object. More...
 
+FileType type () const
 Returns the file type (RTTI)
 
+virtual void open (unsigned char mode)=0
 Tries to open the file.
 
+virtual void close ()=0
 Closes the file.
 
+virtual long int seek (long int offset, int whence) const =0
 Seeks in an opened file.
 
+virtual long int tell () const =0
 Tells the seek position of an opened file.
 
virtual unsigned long int read (void *buffer, unsigned long int bytes) const =0
 Reads a certain amount of bytes from the file to a buffer. More...
 
virtual unsigned long int write (const void *buffer, unsigned long int bytes)=0
 Writes a certain amount of bytes from a buffer to the file. More...
 
void setCloseOnDestruction (bool shouldCloseOnDestruction)
 Sets the close on destruction flag. More...
 
+virtual bool isOpened () const
 Returns true if the file has been sucessfully opened.
 
+const char * filename () const
 Returns file name with path.
 
+int fd () const
 Returns file descriptor.
 
+FILE * ptr () const
 Returns file stream pointer.
 
+unsigned long int size () const
 Returns file size in bytes.
 
+virtual const void * bufferPtr () const
 Returns the constant buffer pointer of a memory file or nullptr for other file types.
 
+virtual void * bufferPtr ()
 Returns the buffer pointer of a memory file or nullptr for other file types.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

+static uint16_t int16FromLE (uint16_t number)
 Reads a little endian 16 bit unsigned integer.
 
+static uint32_t int32FromLE (uint32_t number)
 Reads a little endian 32 bit unsigned integer.
 
+static uint64_t int64FromLE (uint64_t number)
 Reads a little endian 64 bit unsigned integer.
 
+static uint16_t int16FromBE (uint16_t number)
 Reads a big endian 16 bit unsigned integer.
 
+static uint32_t int32FromBE (uint32_t number)
 Reads a big endian 32 bit unsigned integer.
 
+static uint64_t int64FromBE (uint64_t number)
 Reads a big endian 64 bit unsigned integer.
 
+static nctl::UniquePtr< IFilecreateFromMemory (const char *bufferName, unsigned char *bufferPtr, unsigned long int bufferSize)
 Returns a memory file with the specified name.
 
+static nctl::UniquePtr< IFilecreateFromMemory (const char *bufferName, const unsigned char *bufferPtr, unsigned long int bufferSize)
 Returns a read-only memory file with the specified name.
 
+static nctl::UniquePtr< IFilecreateFromMemory (unsigned char *bufferPtr, unsigned long int bufferSize)
 Returns a memory file.
 
+static nctl::UniquePtr< IFilecreateFromMemory (const unsigned char *bufferPtr, unsigned long int bufferSize)
 Returns a read-only memory file.
 
+static nctl::UniquePtr< IFilecreateFromMemory (const char *bufferName, unsigned long int bufferSize)
 Returns a memory file with the specified name, that allocates a buffer of the specified size.
 
+static nctl::UniquePtr< IFilecreateFromMemory (unsigned long int bufferSize)
 Returns a memory file that allocates a buffer of the specified size.
 
+static nctl::UniquePtr< IFilecreateFromMemory (const char *bufferName, nctl::UniquePtr< unsigned char[]> buffer, unsigned long int bufferSize)
 Returns a memory file with the specified name, that takes ownership of the specified buffer.
 
+static nctl::UniquePtr< IFilecreateFromMemory (nctl::UniquePtr< unsigned char[]> buffer, unsigned long int bufferSize)
 Returns a memory file that takes ownership of the specified buffer.
 
+static nctl::UniquePtr< IFilecreateFileHandle (const char *filename)
 Returns the proper file handle according to prepended tags.
 
+ + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+FileType type_
 File type.
 
+nctl::String filename_
 File name with path.
 
+int fileDescriptor_
 File descriptor for open() and close()
 
+FILE * filePointer_
 File pointer for fopen() and fclose()
 
bool shouldCloseOnDestruction_
 A flag indicating whether the destructor should also close the file. More...
 
+unsigned long int fileSize_
 File size in bytes.
 
+ + + + +

+Static Protected Attributes

+static const unsigned int MaxFilenameLength = 256
 Maximum number of characters for a file name (path included)
 
+ + + + +

+Friends

+class TextureSaverPng
 The TextureSaverPng class needs to access the filePointer_
 
+

Detailed Description

+

The interface class dealing with file operations.

+

Constructor & Destructor Documentation

+ +

◆ IFile()

+ +
+
+ + + + + +
+ + + + + + + + +
ncine::IFile::IFile (const char * filename)
+
+explicit
+
+ +

Constructs a base file object.

+
Parameters
+ + +
filenameFile name including its path
+
+
+ +
+
+

Member Function Documentation

+ +

◆ read()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual unsigned long int ncine::IFile::read (void * buffer,
unsigned long int bytes 
) const
+
+pure virtual
+
+ +

Reads a certain amount of bytes from the file to a buffer.

+
Returns
Number of bytes read
+ +

Implemented in ncine::AssetFile.

+ +
+
+ +

◆ setCloseOnDestruction()

+ +
+
+ + + + + +
+ + + + + + + + +
void ncine::IFile::setCloseOnDestruction (bool shouldCloseOnDestruction)
+
+inline
+
+ +

Sets the close on destruction flag.

+

If the flag is true the file is closed upon object destruction.

+ +
+
+ +

◆ write()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual unsigned long int ncine::IFile::write (const void * buffer,
unsigned long int bytes 
)
+
+pure virtual
+
+ +

Writes a certain amount of bytes from a buffer to the file.

+
Returns
Number of bytes written
+ +

Implemented in ncine::AssetFile.

+ +
+
+

Member Data Documentation

+ +

◆ shouldCloseOnDestruction_

+ +
+
+ + + + + +
+ + + + +
bool ncine::IFile::shouldCloseOnDestruction_
+
+protected
+
+ +

A flag indicating whether the destructor should also close the file.

+

Useful for ov_open()/ov_fopen() and ov_clear() functions of the Vorbisfile library.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • include/ncine/IFile.h
  • +
  • src/IFile.cpp
  • +
+
+ + + + diff --git a/master/classncine_1_1_i_file__coll__graph.map b/master/classncine_1_1_i_file__coll__graph.map new file mode 100644 index 0000000000..33d9d93ffd --- /dev/null +++ b/master/classncine_1_1_i_file__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classncine_1_1_i_file__coll__graph.md5 b/master/classncine_1_1_i_file__coll__graph.md5 new file mode 100644 index 0000000000..6e38481e2b --- /dev/null +++ b/master/classncine_1_1_i_file__coll__graph.md5 @@ -0,0 +1 @@ +8277cf57cda5621914c7f1f82748ab50 \ No newline at end of file diff --git a/master/classncine_1_1_i_file__coll__graph.png b/master/classncine_1_1_i_file__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..8e1a6c0d809e39f9818cf85661c625c46de0ba66 GIT binary patch literal 3220 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 Tj4lJm43P0v3;imjOYDCD#?d#0 literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_i_file__inherit__graph.map b/master/classncine_1_1_i_file__inherit__graph.map new file mode 100644 index 0000000000..f744bb4fcf --- /dev/null +++ b/master/classncine_1_1_i_file__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classncine_1_1_i_file__inherit__graph.md5 b/master/classncine_1_1_i_file__inherit__graph.md5 new file mode 100644 index 0000000000..59b06cf243 --- /dev/null +++ b/master/classncine_1_1_i_file__inherit__graph.md5 @@ -0,0 +1 @@ +102d1493af2392fb31f17d6844f2e056 \ No newline at end of file diff --git a/master/classncine_1_1_i_file__inherit__graph.png b/master/classncine_1_1_i_file__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..bb619d20bf578f3812fc5d13bf17c71015ec4ecd GIT binary patch literal 2618 zcmcgui96KW8=tyi#$?Mj7;BQaMl@p^`o^{>^J>^-Y|=O?zn7tiy-RxcMo3xim7 ztA3Uq9@3@8(SG^UN#x&addMPPHOOt-=xD!iB3FXs9&8Iwq!dC{}#B zT7)c7>(x9gTF@zOpK?@L`GDhngpIeie5qMN&WUqRlnf1J4jecD0_8iTayY>=oe7F% zW(kZp`I>q6?xjG))s%E}#C&~y!BA*Jbpe)Yi@`{(&bERr}}I}kf}cZs<8 z_=WlTn<&EMJg|9rb(Qg<`P%jUy?D-Cr($VoX=qrOWmJ?w!Os`I&Nj8SwuWx5dUHNB zix7##LWAon5uB;SZ{H%2DAWOv9&skH@ji@3bZ~VQ!%(r8J%P9azO7@&vZhqm8xMjI z2t-<$JRA-J$=>3hot@1cSPG4dl&+E*Q7la~LZcVBT$5TBIec*a(~w-vhKg!`N^-!? z276?Mx4gXEl`V717U!sTcVUOO5*iU9Royc>2fgiIiiyH`d)NE-AE}~HDjz@Qqtof? z2!yST&FkkuT3#;?U%h%YkU&Vbt?X_Hc$-^XoY~P~3fdKTR9|187Q$Z#eSOF0H??gO z0TA4X1THEnI&E*Ch^79xvBE-wTC9LD+?+^6xVgD~S?CdnijG#+(~|;{B~4oyoya<& zTW%I#=b|nuE}s12g|70zk(^&C9O@TAvT3~Y)_-g6Kcxr2y3o@HU+xIj&>pe6LSnfflV>EHjEG`Edi4H6Daia@Ts_+4QbH)4$p3RWjtdh z59wks(%B5tuS?Kyf7a>Zv*)y!Q{_8IwyGTc_-P0m*t8o9MWYQfGoM+nI><8O3>+L+ z9*zFB--E(Z6^=JTr}sm-|;a4S4+YeduXhr!j;ldmY-tj>LMs!j$X z+prMz{hQeqxB31E+o`jy`u!;hDNHe3PLmOAK%A*oASvx=F<=^+B|wqb$weH~!t23p zY&xwda&hhJT8x`=`g_k^?Z!@NbTq3pn(cGCdv6ChmF*=j=sk26xn-M`A%5#D)8jnq z0}ag<{VP_pa^kJoexf{j?^aIExL>o1doQo zb*njTQI_M=n+jWDBAfe%G}YDTh4MP{GBX7q7=|+zVfygV(NPQ`{WMe?{x4#y?ECmS zD=$C)a>I9V6Zp#;U6mPA;YVW(6pW*8rlcGynOhsJv{Sy@pIcHwX!w2@4DL#WN@o+H z5J;kv+9|B1r6nj`U;ko;g0RjqFUCJ00KYOx?d$6kZIf3$eq7GmoK{t3%_#tZC35(n zQc5V4q=khA@D$T--xeXxwqAy$npI8gShaXy!YqNj{N42Q~aX*2_O4-c!S?iEj;LiYCd)HOBbFjT-^USBV^w6qkpyMqF# zP)tVV>en!wv5bt&R6~FWhs*tkv;oKE7_zdm&m-4-7MGUF+uG!gJ3lbLaifE&6HfQ; zh?4igFvC_cMBa*d@E z85#M+?I{eOO^@Mao+(E5`_s!AKeLDC=E{~97hxgNaJccZac>jhz0>ee^NQslAKq$@ zE}6tN1UOR23~gj|5cDnxRa{cy8xTM?4F8l(!vM(!U1DU*q$TU4(ddnhjYlml%!+9y zlNlHil1itW`0L6%aekPYlOx>Iq6%CGATjv4j(9K_Y#tY9tYCH{I3ie;E@b@4vn_(k z>{b2^SBU5RG{$TQu%e7FEDhX0TDQbzLt1b-KnOBt)bNMJ#Kf*NzhB|?y?J99A5R~B z*?etIFD57>J>A^i9-?3xm;UIHQmtqGL5=*NJ{`xHy922ut9iqz$7&UX0cB1hlaHF3 zDx57deN8!AmRnSm@$utF-w7-|2Bmk6m7SKxU+u2pj=`wt>K>6jvoBdiHd5N%(YVBF zkGB2Aqt-KVdK&v~a`NLh?gxXYFG@b`QHg*iER&3?CxVuFJIcL4Mu&!kP$<+$P*YFw zz}myCychkB%=UI;K%dW+bc3k_G4H8kEl6B1(=8iuQFu9+;$yIJm$S<1)a{>N{;i!4KCcNk2V R0el8Q_BPJeb(WWs{sx)|;0XW# literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_i_frame_timer-members.html b/master/classncine_1_1_i_frame_timer-members.html new file mode 100644 index 0000000000..f615f09706 --- /dev/null +++ b/master/classncine_1_1_i_frame_timer-members.html @@ -0,0 +1,98 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::IFrameTimer Member List
+
+
+ +

This is the complete list of members for ncine::IFrameTimer, including all inherited members.

+ + + + + + + + + + + + + + + +
averageEnabled() const =0ncine::IFrameTimerpure virtual
averageFps() const =0ncine::IFrameTimerpure virtual
averageFrameTime() const =0ncine::IFrameTimerpure virtual
averageInterval() const =0ncine::IFrameTimerpure virtual
currentFrameDuration() const =0ncine::IFrameTimerpure virtual
lastFrameDuration() const =0ncine::IFrameTimerpure virtual
loggingEnabled() const =0ncine::IFrameTimerpure virtual
loggingInterval() const =0ncine::IFrameTimerpure virtual
logLevel() const =0ncine::IFrameTimerpure virtual
setAverageInterval(float averageInterval)=0ncine::IFrameTimerpure virtual
setLoggingInterval(float loggingInterval)=0ncine::IFrameTimerpure virtual
setLogLevel(ILogger::LogLevel logLevel)=0ncine::IFrameTimerpure virtual
totalNumberFrames() const =0ncine::IFrameTimerpure virtual
~IFrameTimer()ncine::IFrameTimervirtual
+ + + + diff --git a/master/classncine_1_1_i_frame_timer.html b/master/classncine_1_1_i_frame_timer.html new file mode 100644 index 0000000000..ffe1bd268a --- /dev/null +++ b/master/classncine_1_1_i_frame_timer.html @@ -0,0 +1,208 @@ + + + + + + + +nCine: ncine::IFrameTimer Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::IFrameTimer Class Referenceabstract
+
+
+ +

Frame interval and average FPS calculator interface class. + More...

+ +

#include <IFrameTimer.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

virtual ~IFrameTimer ()
 
+virtual unsigned long int totalNumberFrames () const =0
 Returns the total number of frames rendered since the application started.
 
+virtual float lastFrameDuration () const =0
 Returns the time in seconds that last frame took to complete.
 
+virtual float currentFrameDuration () const =0
 Returns the elapsed time in seconds since current frame started.
 
+virtual float averageFps () const =0
 Returns the average FPS during the update interval.
 
+virtual float averageFrameTime () const =0
 Returns the average frame time in seconds during the update interval.
 
+virtual bool averageEnabled () const =0
 Returns true if the average FPS calculation is enabled.
 
+virtual bool loggingEnabled () const =0
 Returns true if logging of averages is enabled.
 
+virtual float averageInterval () const =0
 Returns the number of seconds between two average FPS calculations.
 
+virtual void setAverageInterval (float averageInterval)=0
 Sets the number of seconds between two average FPS calculations.
 
virtual float loggingInterval () const =0
 Returns the number of seconds between two logging events. More...
 
+virtual void setLoggingInterval (float loggingInterval)=0
 Sets the number of seconds between two logging events.
 
+virtual ILogger::LogLevel logLevel () const =0
 Returns the level for the logging events.
 
+virtual void setLogLevel (ILogger::LogLevel logLevel)=0
 Sets the level for the logging events.
 
+

Detailed Description

+

Frame interval and average FPS calculator interface class.

+

Constructor & Destructor Documentation

+ +

◆ ~IFrameTimer()

+ +
+
+ + + + + +
+ + + + + + + +
ncine::IFrameTimer::~IFrameTimer ()
+
+virtual
+
+
Note
Defined here to avoid emitting its vtable in every translation unit
+ +
+
+

Member Function Documentation

+ +

◆ loggingInterval()

+ +
+
+ + + + + +
+ + + + + + + +
virtual float ncine::IFrameTimer::loggingInterval () const
+
+pure virtual
+
+ +

Returns the number of seconds between two logging events.

+
Note
A different and independent average is calculated over this time interval
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classncine_1_1_i_gfx_capabilities-members.html b/master/classncine_1_1_i_gfx_capabilities-members.html new file mode 100644 index 0000000000..ba1619ffb1 --- /dev/null +++ b/master/classncine_1_1_i_gfx_capabilities-members.html @@ -0,0 +1,91 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::IGfxCapabilities Member List
+
+
+ +

This is the complete list of members for ncine::IGfxCapabilities, including all inherited members.

+ + + + + + + + +
arrayValue(GLArrayIntValues::Enum arrayValueName, unsigned int index) const =0ncine::IGfxCapabilitiespure virtual
glInfoStrings() const =0ncine::IGfxCapabilitiespure virtual
GLVersion enum namencine::IGfxCapabilities
glVersion(GLVersion version) const =0ncine::IGfxCapabilitiespure virtual
hasExtension(GLExtensions::Enum extensionName) const =0ncine::IGfxCapabilitiespure virtual
value(GLIntValues::Enum valueName) const =0ncine::IGfxCapabilitiespure virtual
~IGfxCapabilities()=0 (defined in ncine::IGfxCapabilities)ncine::IGfxCapabilitiesinlinepure virtual
+ + + + diff --git a/master/classncine_1_1_i_gfx_capabilities.html b/master/classncine_1_1_i_gfx_capabilities.html new file mode 100644 index 0000000000..6add0356f1 --- /dev/null +++ b/master/classncine_1_1_i_gfx_capabilities.html @@ -0,0 +1,153 @@ + + + + + + + +nCine: ncine::IGfxCapabilities Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::IGfxCapabilities Class Referenceabstract
+
+
+ +

The interface class to query runtime OpenGL device capabilities. + More...

+ +

#include <IGfxCapabilities.h>

+
+Inheritance diagram for ncine::IGfxCapabilities:
+
+
Inheritance graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + +

+Classes

struct  GLArrayIntValues
 OpenGL queryable runtime integer array values. More...
 
struct  GLExtensions
 OpenGL queryable extensions. More...
 
struct  GlInfoStrings
 OpenGL information strings. More...
 
struct  GLIntValues
 OpenGL queryable runtime integer values. More...
 
+ + + + +

+Public Types

enum class  GLVersion { MAJOR +, MINOR +, RELEASE + }
 OpenGL version components.
 
+ + + + + + + + + + + + + + + + +

+Public Member Functions

+virtual int glVersion (GLVersion version) const =0
 Returns the OpenGL version numbers.
 
+virtual const GlInfoStringsglInfoStrings () const =0
 Returns the OpenGL information strings structure.
 
+virtual int value (GLIntValues::Enum valueName) const =0
 Returns the value of a runtime OpenGL integer value.
 
+virtual int arrayValue (GLArrayIntValues::Enum arrayValueName, unsigned int index) const =0
 Returns the value of a runtime OpenGL integer value from an array.
 
+virtual bool hasExtension (GLExtensions::Enum extensionName) const =0
 Returns true if the specified OpenGL extension is available.
 
+

Detailed Description

+

The interface class to query runtime OpenGL device capabilities.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classncine_1_1_i_gfx_capabilities__inherit__graph.map b/master/classncine_1_1_i_gfx_capabilities__inherit__graph.map new file mode 100644 index 0000000000..aa80b66c8a --- /dev/null +++ b/master/classncine_1_1_i_gfx_capabilities__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classncine_1_1_i_gfx_capabilities__inherit__graph.md5 b/master/classncine_1_1_i_gfx_capabilities__inherit__graph.md5 new file mode 100644 index 0000000000..6a07a29dea --- /dev/null +++ b/master/classncine_1_1_i_gfx_capabilities__inherit__graph.md5 @@ -0,0 +1 @@ +76c476db2b6eface2313a2ffd874914f \ No newline at end of file diff --git a/master/classncine_1_1_i_gfx_capabilities__inherit__graph.png b/master/classncine_1_1_i_gfx_capabilities__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..12d09363b344fac28671eca6d9a3f7b0a9a0e06b GIT binary patch literal 4348 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 BbH4xp literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_i_gfx_device-members.html b/master/classncine_1_1_i_gfx_device-members.html new file mode 100644 index 0000000000..297f9bd99d --- /dev/null +++ b/master/classncine_1_1_i_gfx_device-members.html @@ -0,0 +1,146 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::IGfxDevice Member List
+
+
+ +

This is the complete list of members for ncine::IGfxDevice, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Application (defined in ncine::IGfxDevice)ncine::IGfxDevicefriend
aspect() constncine::IGfxDeviceinline
backendScalesWindowSize_ncine::IGfxDeviceprotected
containingMonitorIndex(int x, int y, int width, int height) constncine::IGfxDeviceprotected
containingMonitorIndex(const Recti &rect) constncine::IGfxDeviceinlineprotected
containingMonitorIndex(const WindowMode &windowMode) constncine::IGfxDeviceinlineprotected
containingMonitorIndex(int x, int y) constncine::IGfxDeviceprotected
containingMonitorIndex(const Vector2i &point) constncine::IGfxDeviceinlineprotected
currentVideoMode(unsigned int monitorIndex) const =0ncine::IGfxDevicepure virtual
currentVideoMode() constncine::IGfxDeviceinline
currentVideoMode_ncine::IGfxDevicemutableprotected
DefaultDpincine::IGfxDeviceprotectedstatic
displayMode() constncine::IGfxDeviceinline
displayMode_ncine::IGfxDeviceprotected
drawableAspect() constncine::IGfxDeviceinline
drawableHeight() constncine::IGfxDeviceinline
drawableHeight_ncine::IGfxDeviceprotected
drawableResolution() constncine::IGfxDeviceinline
drawableScreenRect() constncine::IGfxDeviceinline
drawableWidth() constncine::IGfxDeviceinline
drawableWidth_ncine::IGfxDeviceprotected
flashWindow() constncine::IGfxDeviceinlinevirtual
glContextInfo() constncine::IGfxDeviceinline
glContextInfo_ncine::IGfxDeviceprotected
height() constncine::IGfxDeviceinline
height_ncine::IGfxDeviceprotected
IGfxDevice(const WindowMode &windowMode, const GLContextInfo &glContextInfo, const DisplayMode &displayMode) (defined in ncine::IGfxDevice)ncine::IGfxDevice
initGLViewport()ncine::IGfxDeviceprotected
initWindowScaling(const WindowMode &windowMode)ncine::IGfxDeviceprotected
isFullScreen() constncine::IGfxDeviceinline
isFullScreen_ncine::IGfxDeviceprotected
isResizable() constncine::IGfxDeviceinline
isResizable_ncine::IGfxDeviceprotected
MaxMonitors (defined in ncine::IGfxDevice)ncine::IGfxDevicestatic
MaxVideoModes (defined in ncine::IGfxDevice)ncine::IGfxDevicestatic
monitor(unsigned int index) constncine::IGfxDevice
monitor() constncine::IGfxDeviceinline
monitors_ (defined in ncine::IGfxDevice)ncine::IGfxDeviceprotected
numMonitors() constncine::IGfxDevice
numMonitors_ (defined in ncine::IGfxDevice)ncine::IGfxDeviceprotected
previousScalingFactor_ncine::IGfxDeviceprotected
primaryMonitorIndex() constncine::IGfxDeviceinlinevirtual
resolution() constncine::IGfxDeviceinline
screenRect() constncine::IGfxDeviceinline
setFullScreen(bool fullScreen)=0ncine::IGfxDevicepure virtual
setSwapInterval(int interval)=0ncine::IGfxDevicepure virtual
setVideoMode(unsigned int modeIndex)ncine::IGfxDeviceinlinevirtual
setWindowIcon(const char *windowIconFilename)=0ncine::IGfxDevicepure virtual
setWindowPosition(int x, int y)=0ncine::IGfxDevicepure virtual
setWindowPosition(Vector2i position)ncine::IGfxDeviceinline
setWindowSize(int width, int height)=0ncine::IGfxDevicepure virtual
setWindowSize(Vector2i size)ncine::IGfxDeviceinline
setWindowTitle(const char *windowTitle)=0ncine::IGfxDevicepure virtual
updateMonitors()ncine::IGfxDeviceinlineprotectedvirtual
width() constncine::IGfxDeviceinline
width_ncine::IGfxDeviceprotected
windowMonitorIndex() constncine::IGfxDeviceinlinevirtual
windowPosition() constncine::IGfxDeviceinlinevirtual
windowPositionX() constncine::IGfxDeviceinlinevirtual
windowPositionY() constncine::IGfxDeviceinlinevirtual
windowScalingFactor() constncine::IGfxDevice
~IGfxDevice() (defined in ncine::IGfxDevice)ncine::IGfxDeviceinlinevirtual
+ + + + diff --git a/master/classncine_1_1_i_gfx_device.html b/master/classncine_1_1_i_gfx_device.html new file mode 100644 index 0000000000..38c7bc4fcb --- /dev/null +++ b/master/classncine_1_1_i_gfx_device.html @@ -0,0 +1,722 @@ + + + + + + + +nCine: ncine::IGfxDevice Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

It represents the interface to the graphics device where everything is rendered. + More...

+ +

#include <IGfxDevice.h>

+
+Collaboration diagram for ncine::IGfxDevice:
+
+
Collaboration graph
+ + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + +

+Classes

struct  GLContextInfo
 Contains the attributes to create an OpenGL context. More...
 
struct  Monitor
 A structure representing a connected monitor. More...
 
struct  VideoMode
 A structure representing a video mode supported by a monitor. More...
 
struct  WindowMode
 A structure used to initialize window properties. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

IGfxDevice (const WindowMode &windowMode, const GLContextInfo &glContextInfo, const DisplayMode &displayMode)
 
virtual void setSwapInterval (int interval)=0
 Sets the number of vertical blanks to occur before a buffer swap. More...
 
+bool isFullScreen () const
 Returns true if the device renders in full screen.
 
+virtual void setFullScreen (bool fullScreen)=0
 Sets the full screen flag of the window.
 
+bool isResizable () const
 Returns true if the window is resizable.
 
+virtual int windowPositionX () const
 Returns the window horizontal position.
 
+virtual int windowPositionY () const
 Returns the window vertical position.
 
+virtual const Vector2i windowPosition () const
 Returns the window position as a Vector2i object.
 
+virtual void setWindowPosition (int x, int y)=0
 Sets the position of the application window with two integers.
 
+void setWindowPosition (Vector2i position)
 Sets the position of the application window with a Vector2i object.
 
+int width () const
 Returns the window or video mode width in screen coordinates.
 
+int height () const
 Returns the window or video mode height in screen coordinates.
 
+Vector2i resolution () const
 Returns the window or video mode resolution in screen coordinates as a Vector2i object.
 
+Rectf screenRect () const
 Returns the window or video mode resolution in screen coordinates as a Rectf object.
 
+float aspect () const
 Returns the window or video mode resolution aspect ratio.
 
virtual void setWindowSize (int width, int height)=0
 Sets the window size with two integers. More...
 
void setWindowSize (Vector2i size)
 Sets the window size with a Vector2i object. More...
 
int drawableWidth () const
 Returns the window width in pixels. More...
 
int drawableHeight () const
 Returns the window height in pixels. More...
 
+Vector2i drawableResolution () const
 Returns the window resolution in pixels as a Vector2i object.
 
+Rectf drawableScreenRect () const
 Returns the window resolution in pixels as a Rectf object.
 
+float drawableAspect () const
 Returns the window drawable resolution aspect ratio.
 
+virtual void setWindowTitle (const char *windowTitle)=0
 Sets the application window title.
 
+virtual void setWindowIcon (const char *windowIconFilename)=0
 Sets the application window icon.
 
+virtual void flashWindow () const
 Highlights the application window to notify the user.
 
+const GLContextInfoglContextInfo () const
 Returns the OpenGL context creation attributes.
 
+const DisplayModedisplayMode () const
 Returns display mode.
 
+unsigned int numMonitors () const
 Returns the number of connected monitors.
 
virtual unsigned int primaryMonitorIndex () const
 Returns the array index of the primary monitor. More...
 
+virtual unsigned int windowMonitorIndex () const
 Returns the array index of the monitor associated with the window.
 
+const Monitormonitor (unsigned int index) const
 Returns the specified monitor.
 
+const Monitormonitor () const
 Returns the monitor that hosts the window.
 
+virtual const VideoModecurrentVideoMode (unsigned int monitorIndex) const =0
 Returns the current video mode for the specified monitor.
 
+const VideoModecurrentVideoMode () const
 Returns the current video mode for the monitor that hosts the window.
 
virtual bool setVideoMode (unsigned int modeIndex)
 Sets the video mode that will be used in full screen by the monitor that hosts the window. More...
 
+float windowScalingFactor () const
 Returns the scaling factor for application window.
 
+ + + + + +

+Static Public Attributes

+static const unsigned int MaxMonitors = 4
 
+static const unsigned int MaxVideoModes = 128
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

+void initWindowScaling (const WindowMode &windowMode)
 Scales the window size by the display factor before creating it for the first time.
 
+void initGLViewport ()
 Inits the OpenGL viewport based on the drawable resolution.
 
int containingMonitorIndex (int x, int y, int width, int height) const
 Returns the monitor index that contains the center of the specified rectangle, or -1 if its center is outside the virtual screen. More...
 
int containingMonitorIndex (const Recti &rect) const
 Returns the monitor index that contains the center of the specified rectangle as a Recti object, or -1 if its center is outside the virtual screen. More...
 
int containingMonitorIndex (const WindowMode &windowMode) const
 Returns the monitor index that contains the center of the specified rectangle as a WindowMode object, or -1 if its center is outside the virtual screen. More...
 
+int containingMonitorIndex (int x, int y) const
 Returns the monitor index that contains the specified point, or -1 if the point is outside the virtual screen.
 
+int containingMonitorIndex (const Vector2i &point) const
 Returns the monitor index that contains the specified point as a Vector2i object, or -1 if the point is outside the virtual screen.
 
+virtual void updateMonitors ()
 Updates the array of connected monitors.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+int width_
 Window width in screen coordinates.
 
+int height_
 Window height in screen coordinates.
 
+int drawableWidth_
 Window width in pixels (for HiDPI screens)
 
+int drawableHeight_
 Window height in pixels (for HiDPI screens)
 
+bool isFullScreen_
 Whether rendering occurs in full screen.
 
+bool isResizable_
 Whether the window is resizable.
 
+GLContextInfo glContextInfo_
 OpenGL context creation attributes.
 
+DisplayMode displayMode_
 Display properties.
 
+Monitor monitors_ [MaxMonitors]
 
+unsigned int numMonitors_
 
+VideoMode currentVideoMode_
 Used as a cache to avoid searching the current video mode in a monitor's array.
 
bool backendScalesWindowSize_
 A flag indicating if the backend is responsible for scaling the window size. More...
 
+float previousScalingFactor_
 The window scaling factor from last frame.
 
+ + + + +

+Static Protected Attributes

+static const float DefaultDpi = 96.0f
 The default value used for a monitor DPI when the real vaue cannot be queried.
 
+ + + +

+Friends

+class Application
 
+

Detailed Description

+

It represents the interface to the graphics device where everything is rendered.

+

Member Function Documentation

+ +

◆ containingMonitorIndex() [1/3]

+ +
+
+ + + + + +
+ + + + + + + + +
int ncine::IGfxDevice::containingMonitorIndex (const Rectirect) const
+
+inlineprotected
+
+ +

Returns the monitor index that contains the center of the specified rectangle as a Recti object, or -1 if its center is outside the virtual screen.

+
Note
The special WindowPositionIgnore value can be used for the x and y variables
+ +
+
+ +

◆ containingMonitorIndex() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + +
int ncine::IGfxDevice::containingMonitorIndex (const WindowModewindowMode) const
+
+inlineprotected
+
+ +

Returns the monitor index that contains the center of the specified rectangle as a WindowMode object, or -1 if its center is outside the virtual screen.

+
Note
The special WindowPositionIgnore value can be used for the x and y variables
+ +
+
+ +

◆ containingMonitorIndex() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
int ncine::IGfxDevice::containingMonitorIndex (int x,
int y,
int width,
int height 
) const
+
+protected
+
+ +

Returns the monitor index that contains the center of the specified rectangle, or -1 if its center is outside the virtual screen.

+
Note
The special WindowPositionIgnore value can be used for the x and y variables
+ +
+
+ +

◆ drawableHeight()

+ +
+
+ + + + + +
+ + + + + + + +
int ncine::IGfxDevice::drawableHeight () const
+
+inline
+
+ +

Returns the window height in pixels.

+

It may differs from height() on HiDPI screens

+ +
+
+ +

◆ drawableWidth()

+ +
+
+ + + + + +
+ + + + + + + +
int ncine::IGfxDevice::drawableWidth () const
+
+inline
+
+ +

Returns the window width in pixels.

+

It may differs from width() on HiDPI screens

+ +
+
+ +

◆ primaryMonitorIndex()

+ +
+
+ + + + + +
+ + + + + + + +
virtual unsigned int ncine::IGfxDevice::primaryMonitorIndex () const
+
+inlinevirtual
+
+ +

Returns the array index of the primary monitor.

+
Note
This is usually the monitor where elements like the task bar or global menu bar are located.
+ +
+
+ +

◆ setSwapInterval()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual void ncine::IGfxDevice::setSwapInterval (int interval)
+
+pure virtual
+
+ +

Sets the number of vertical blanks to occur before a buffer swap.

+

An interval of -1 will enable adaptive v-sync if available

+ +
+
+ +

◆ setVideoMode()

+ +
+
+ + + + + +
+ + + + + + + + +
virtual bool ncine::IGfxDevice::setVideoMode (unsigned int modeIndex)
+
+inlinevirtual
+
+ +

Sets the video mode that will be used in full screen by the monitor that hosts the window.

+
Note
Call this method before enabling full screen.
+ +
+
+ +

◆ setWindowSize() [1/2]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
virtual void ncine::IGfxDevice::setWindowSize (int width,
int height 
)
+
+pure virtual
+
+ +

Sets the window size with two integers.

+
Note
If the application is in full screen this method will have no effect.
+ +
+
+ +

◆ setWindowSize() [2/2]

+ +
+
+ + + + + +
+ + + + + + + + +
void ncine::IGfxDevice::setWindowSize (Vector2i size)
+
+inline
+
+ +

Sets the window size with a Vector2i object.

+
Note
If the application is in full screen this method will have no effect.
+ +
+
+

Member Data Documentation

+ +

◆ backendScalesWindowSize_

+ +
+
+ + + + + +
+ + + + +
bool ncine::IGfxDevice::backendScalesWindowSize_
+
+protected
+
+ +

A flag indicating if the backend is responsible for scaling the window size.

+
Note
Uses SDL_HINT_WINDOWS_DPI_SCALING on SDL >= 2.24.0 and GLFW_SCALE_TO_MONITOR on GLFW
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classncine_1_1_i_gfx_device__coll__graph.map b/master/classncine_1_1_i_gfx_device__coll__graph.map new file mode 100644 index 0000000000..bfa43b361e --- /dev/null +++ b/master/classncine_1_1_i_gfx_device__coll__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/master/classncine_1_1_i_gfx_device__coll__graph.md5 b/master/classncine_1_1_i_gfx_device__coll__graph.md5 new file mode 100644 index 0000000000..456cf53c3e --- /dev/null +++ b/master/classncine_1_1_i_gfx_device__coll__graph.md5 @@ -0,0 +1 @@ +3580f2e2f9ac11e7192013ffce1be402 \ No newline at end of file diff --git a/master/classncine_1_1_i_gfx_device__coll__graph.png b/master/classncine_1_1_i_gfx_device__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..27ff9ec89668e2ad2512b2964ffb61ac5cd9ef44 GIT binary patch literal 28458 zcmZ^L1z449x9uV%Bt*JH5Rg=)8>Ey*q@<)vN?IBL0VxqF>Fx#z2@#NPq!9t>E&+i% z+5dmeJ?GqW*Yu}`1Oj;%eqO^shQIs# zKWM`L(2V3|r4U!w|D}D&jX@x25s#%L)ZIR9&bn$nUAaW;o|r^SBmBzvZg%6fvucI; zKSK&XHX_Qu$#Tcdp+>V@3-Kg$!*-O*I=WkUks-4UY%1()89S%VGv37P-a9`96m*bZ^H;jQCoYm zJ&dG*k1#J+uhFf%s7T@8&z``uIKRIJV$Bkvk7D7W4mn}KoA5^I4Qc-Wzp(YqZ;=ow zE}u(JJv}{5O-;p4^r%(HOdpq8d!P?Kn_+4Kb-XW4m z(x980o6XE;hp%rivC-PPy4E7aE?a8&czB9+>xTRL`&(LQSy(~`Rsx!9oAX$|FYalS z=vu<3mzE9~l|Om%q-<-t*3Q+*$>v-ONqT5?b#-@lm&W@~>*QpDWIDf~U{G-I)!%~w z1cErs`Dcq?rflRLjEWa+LEYU?2nb>-%?FH3N!WFkR#uo|x<1^JyA%EC(PZJHWFfw`N1pik^JlmY*qh+M zz`&p&BcDHy9z9AG^GSLCUQJznX>Bdxc6Fp19&ezlsK8a_V$u3KYw z#jBP6;=DY!lkMdC-QWGm=fC@sdV3XYuAb&9ot~XdO-9C2c++c zii%v2cTY|_b>42z)S)1l+1cA`QUzY+j1j3YaNnHwI+^|18UUYVH(Nh;?0d7Wt`6aQ zezH?bpl@%#8%o5gLKxe#%*)GbK9KU#xtpc*F-d=|7s3~=g@Yvc`pQHLJFP9^6&R0w zCDRdzHZ?yZxmu6Ry+svBF%XdQg_@>w)GSg6m)fUZEV>5X}8`4w=I1A`qjwTnA4z%lA3z1)q4NI z%K3wDeHD!#>OXo|@=+7`e`qC(r^Q%zNhGWBI^NXg{Nv;ZJW^5!#M!@p|CSqfa*@7M7CmL)<2zYs3x0W`ATK}t z<@HG*7KsISVri+JfAs)?H!_-T0Ig zTXS>Zn9^{dNIa1VCwE>Sy|=lylIk;8 zbE_#eb-u#1M?6wdFp&1GW6Fo*BN{a@z8l+&fmYJFNQyO8rgE*+p;}vFUk# zy?9X&Ew}N)(J-8&yD`Jr*xBvo8bh{J^z|cXsJO+?T*xE zx#d`LLm&#>k2fcw+T2Ek#Egr9ai5o0gIdXLbK-%WogG_}s;y%|L4i@Z7B-skMA?ft z4n4Ka((PFR%KlFRui_PQLPEO!o*tB|M#bkp%^e>d754s1%9;`tg-1k`?ddQYyJZ96 zd?ax{olHxGPISjgZ@uDgWlY6LGv~bli?92n>f`klIE>sn1@tk(_k`T{m&S{qQ;?HO zN=oX8yfi1zsu__=7W0`K899K>lTkf{aN(!qxO3;%pS{J2OQZ5XhifCz(a|qa;zeHb zCMfg|3|wv1&J(h0h+i-$w6?Z}hleL5Bq*nfva_;c;ov+YY+bO2*9YTLAtT@pIyyT$ zr>1mHzx?NwqAH>zj^6(g!m$pbw41Vfjm|C;b&HSZvM%$TTqg=b&PmuGg&$cm>*vwd zcizQkY_4~UVs;C@Vc@pj#=AolOizn?lUi94!zBK}Nx|^&Fso+C((>|)i*L^u@rv1= z*KEcpi&~ynK{yBq)MaFRotdFTl)YL}LO}`m^obG<6QZR%mbHA&aA;^~Vrhz)n7BBi z(PAh=F^N~i32 zC@wePU|XNPk{ltK`g$&jO`7Czrdg;|bTmcRWB&avvpnME$X%qW|k~9gg_qXWLXRPtv3RuA z#k;6ZX}}?2iZ2jd;89^FmmUCnZ~ZJd-K`)VEq`pUTx{iKZiv-ulUJ_}AgZW^TzY$Y zHYUoA)6>({S*piG0l;vRD>`sXFRjldw;JMMpteg*Yt3nBXynL2nJ_anG&C_`NF6vi zIRU_-O32B|`czwknb3s=Eq+j3WqybrZ3nmT$>umts4umvNy>>W?zIFE9o9DXAq?tLoI= zbo<3KJu=OU=d4Z5E9FY>y86O#(R>$yxI+~AL*lKva7a*FjJ-?hT0?L`)oiNf-4ZV* zhG7Q=@|3JFCbc~VL0skat1;ThLaq_VN`;#9S@kQ=iNd6vlQV=Wz> z-%Cq2v-L-ir?wO*4b99x#>U=_eS-PsgpU|X7d?F@XVV{}-uMS4B_%Jz`1$$YQ3<(B zR+ysSqPDTM)vvYHJKwRjvlFwO`J62u2hpg&5?i8Ge&_yu6;+Xdy}dov$&4wbNu~C| zS5KM5@eUtUEectytB(S_FLxk|2PANKco^YydzH)8^`tHM7HbN%sORV8g`BCkW|EXm zEeuP1KP<&?$b`qD5`VVDA@Is|#-jr?=@eb^U)OYj*}I%x&DiZ00?V!B*ckNMdz!$T+(kAEqe8D!pLk zbf25fO8W%4m-6aRmPnWiHYP` zSXjhiV=l`$&VoWXYJe21tXKjip-yzv{IvfJ_eVlRRDGbTsGzX4=Z1@m%SJ5kzE1AE zlM){Y`X8C>r>`g47)3LEJKvk=LDCh`;E(eM9(C^>BiC8tXoFu4JX4_doYwHaNkQePoM@P4)h2=7b2p{CJPEV40;8?gi zJb4_(CRV*Y)$ADgT2yS|sF4q4L&!wUT|P4_zcKrFaoWD+E3b5wW!q9t#{q?2!G)v0 z6W`6duc+HU7S2FiMy2X#UY6zmPWIJg{}^f_;*Jk65hdD%Ti{-hF9#r}zgKvJ$wIC* zv#+4G!nKKsHP_XVQ3QozVqsZZTGqWc;at%VC;mjgHhMv9 zf80fs)Ub2|Qk;vg7zkRTZs|TQhf4KP1_GWg(vJnXci3JJ9xfT)Ww|Q687$r!eS}Gk zr4Zb&KJ;97lp*Hvl8F~`$wM5U>)X)zv7e@2k`8$-Bg0>uR@n0op7hYc%D~3P#=)uQ z=3QwVobev0ImXlF3Ew{Ja@5ee{MSx^&E~;(K;$;BU0iq(X%!Xt(yBf_S4SH^Dkp8A zC_$}-LohlzI`4h1sQM_g#Kzosbtr87rbTTK+PWos`1_z=AJ-N1_mYELo5vf4_4H1Q zw3kyNk7JFWiROAeBnZ&IsQh~P&h z9QM|ljZEna7JBiy*G$K&fXOQA=0-L<&hSUH{5(~bqL{Zy&p69si8@Q%W)#Sz(n#_0 zJESU*{H)+deCNK$_C>ExDyplc7v6K?jWSs(N}~M4Q?Y1COTe>aEI_xI z8V>qJEDla2g1$3G~yMo&4HQ-yE# zm4TK}2Isdl?STmOXCijQqjG=7@bgzM*59FWML65MEypSv@}tdD9?W56%A*Mw5jinU zk?%#g%@eX(y~q5FPyL*&D0)>Vk2>da!`~IZ>7DJ9jHKwfD?6ECp6hkPz{Qmcrp=RW zd4uLrnyo*jd-wOV5ce@7{n&W%jtk?2x}1PBtqG@r&^KsF+hi1ux17UqQ6TqI@JCHg zcD}@|O#hr+r#7R-Qs6e)YaCXt)NP>eoSl^a-ET=vz2RfLFKynf;T%zJ6+UsKRQ8ho zrRCgl)0Cp7+H7tf!JWT{pJL`X`xSc6?jCOSRR>0%Xf820erw#`VQ~0&BcJjgjl2=U zx3=~Ka8=pXvuDrPh{IY9u_<^rq5TfMa2K8ftOo7i;n9&co5thEm^I053%v;sgS$); zlvGXDNAr1jcp_=UIzpKk7^I}7?*(UF2mage@aoFS%pnV4NCr~Hc538v zk~f(s-o4|dxH3q}mqi=695Yqzcw5)ppeVMMWxG0_Fi`R9qS8licYB;qI`a4#T(;yBju2KN3f&l?B?zb`$lIPTJLv+Em4KV5%hO2hi0 zdXXT=LM8fN1Rp*eX=_74*h7P4U|`U$D|%B0_TSt4657;};bCDBk%tc-65!*@L{Ls{ zX)1@&`C2Kc*S=>KZ~e3L((M^++2^_^x~EwQn(VgualbI++=9>%Wxvt<({TNg{n4XZ z>*<^JMDLVt45Bi%c5!%&&x&DKLt4zq$vHpXdZaqq-*4OVksX+d8&8t`v2Na^q@tR% z;pL4UD1KhcsPyUkvg30d9iSLkSXg@d`j8Ngbu%q3KQAxNxyk!lThjsN%D>b9;;{@k zS6kcC%#0Wh@4nS&9#ji#GOnz$vcZ7?yUqwIwR~;{2Gos5Pqno2{*8T{1ZVsD*y-s} zlwv0Ive+F(pJzDYOFC4tiP9#$$Pc&}slM}o&H1p%$s&j0vl=QYj!9XUC8BG^beJUe zo%YMegA!9a72*JCi#$x^PN9cdTwH87+5?scI+&@FzkgfTQf^;!VgK+FL?k4INfp`- zEgB;ttj%%P^{}MPDLMrcC(FTeo~p_f1c9i;&)lcjPCjk+sqr|IpEn9BGS= zDp=`LzNL}F(I+M*vhu6<#}`TlR0*$}Hjd<4c$D@yW>a2fyDKHbzox@6a8>mm>|Kar zNb)i1h4-4)55;eD=dgxbjfQAjPxHC&n{Xv~9<7fpEiFNpb~A9;3Y|T9+kL9aawJDF zre}GjKN;8(T?qE+Y=JaeiL75biau;s?|EZG7?8(AY}c`Ls5hCPjjrA=ayqp6F2(Yf z16|^xPxdZ1z|!>+{xEGz)B=SomuChT4= z6SCeJdV%*&Z*;EPUP@{{Vn&^@#It)*Gi;fQ5FyTYcT$;q_pDn|58C!BC6eYGEp6?- zPXd*%ANhGq!O@H@j>$_|>{U-SoHIms?G)i8z6A|EWRi2Q*ZR1_vS(O^}xz99% zYxkE451;Jr-U~M1heSkXAx;lhhge((>(^3%1S>5qr6DD?Ff=R!W-}{`K`?nPRvzUD zA!41Z{6kw=V2RYR-E<+9x;0LZajTq$w`anzY(07<{BB0ZbDX0<_6e0&aD~z&LN^{= zJl0Fu-TwVPk&;eal@Ni7^kS{;F*i}=?;g{W>P7H;cdy>Ft@p8r^6{)m@KVkg9QAGjkD=y4DT-|p5111suFEsopYkBYl0Ic{yJ z@AbTz8*L)^wfjA-m9S_UXCxeL=Q8T!dwCU6SzXP+VU-Cr1Lh)58%s9JJuQp%+qMO3 zgR~fGSd83*25+2)gJ1VxntU4Y*toTG;o28#q(q#05IWHH`$r=IG>4PEyUTVZs5gr$ z{i>*0&>izBmDToo{#qDFFE5&*$X57?m`2gJx1X1up30ihaXrvE zkQr1N{dG7np6Lfn{|)Awc=0RZ7m}xKIibOQ&Zl3`BSBIqy^}HkhaI zpZcNBQQ*Z|)I%`-8*AM$5EcyKi;F_z*dCizXkGAlT1)` z+MpcCzbYc0sj!cTm$;UH;J(@(*Uf^I1MFmG2Ekru+Eo-oNt7dJP9=5o&Pr)TE@4b_ z?hoBgnOw6LjJ8gRk89b#BP6_@8s{_LV@5}$S!8gLKjCpnSHoH06ho~>BOsTfNJ~rq ze1n3ZzyH?{lBzUE?p@!^WzwJ=`hc{QcJnanxts9EY97;S?&hh@14PSk(rvdv)sb`w zm3d@%`?(ydnY}y4uvrG8r=r8>F?IxT&-wY<9TQz2>k2A>JQ zNkP%s5^60x&?Vp_A4xVdRF<)~*W%~)ow+awdBbTA*|UT@Go3It?3qMVjjvZ{8j|9j zC_c@%H|<8{10C-W*=aot5_2W@;%98Y}N;!$+o@9?yF2s#D+DODO;1xzsEAuFyvCT4vel>^MX@U#u zhzj;8O$qP7bcPa%X~S#TQ$B!DR_fiSJc633b)8iUK|zdl?M4;{XU52j_Xf#bg`9X9 z%=gQ3`MqpcdE@f0vjihI-r;R>`S}y!T^&ma+BOez3&d@nu7Zc|&ju37J_@#(ky#5; zV)$d?pdOJXXk9*+D%rbFJ`&sEl({z9!a`|*xc7RH!RkYz`}$XBlk_>HBr&?YT)F2< zjBRV5Y%UuNtWAtQ6v^Iq$$l`KZ$|IbCoII*qb(!TaZBv);3Ee~k(G_oX6lD#?{YE+ z--UK63WVs^p^jCKKcFeL-n$hvDYj}N@<$eZ{a#rRn!m><-5_4#unA80v4qA%KIDSi z4&4i_$%2w z!=d+L8%;M7!ed-efsg#yZqV>1uGruehvWq!B%*e2ta5Mc>1ly(Xj4;5^{x@=M9gb} z`+4)em^j>c?yq0VN?kuJ1f!ZAl6ok6$-i~|Hoi*PEG0ZJMZMX-^4wZ67)?T?uuk&u zua&J34-k6>7qf9Tr9nzOQGgpgHxu9nQV>^5XCPcZ?4V za@Ic679-^%2b=`}Yfc>2Zg@Wkhr(rT_-?z)ty__H%@^aHox!b!?LD+E- zXiVWZm7}-ydG7hUa`U-$*qnaJ?eWLlRJfx|Q0s<0Zrr#5DvFTPDqc*NlfC@}Xjc1$ z@*mmuj*d+4lLEb0T~;Qiq%^Mn2}RM$svt5lvbcC_w!szp_or%VjbFah+D!U?nVOi$ z%N$AXk^`wUB*Ow&7Falj^oQ}8Lp-}h@ZT^kkXfY}WlG6UTPEqeaya0!*s;CmYHWQ!}SsEERf;?5UnIRnpnv+RI zvvUgQWJ*d(4K7>2lRj_q6yT-L>)wUWxNr0gL;6}s6s9)N)ty=Y@Jv63Bb9Ts2LSH& zfkF;7m9UuCpKr6r9=uDNZc6(zwZp_?F~SlkND#=y=9ZRSD+dCUxW`pxWh$p*@Hy>^ zz`@GP_vqu4`~cPV<$TkZ`g%b&Ha2cuEoVK3m5Ym8TCXB ze(K{FNj(~WrKWe~K2BD0TPQ6ZFYBTM1On@EHr(K+Dk}Fq4lNLfxE^U$r$4(3 z0cbe&aGg(|j)2JJwB$NJ(KK3gSatobebo zoVj8bjV25hETH+25YW+;ZE+>MYc(`6HLWJ_ZEhADmvma`r$UHZTHdR<0JvVfEfD%f zW}#uHi9*<|tfXWcn!+h+6*@jX5`_KL<%P>vEL>dua-$oe8PFF(>VWfFtfalnv-b70 z<`&}mQkH+IxaRkeG&ZQw+eBFi;^mpQnh>ww!Y3eb7fuNXKnZKNdd7-JMpoy2;ZcN3 zd-rbp#DvyUiDO*p5sE-bBm_p_*I&PkgsJBX?v~KsDDP$mR_`XF8!{3{sL!82Pf*ZMQ5l>}p#cq@pE9Ctft1|E!>ls>Q7}mSAmoov zPdCt?_xy)8{qEg6NKW8-D4c#MDmphj?D##3j_{_mo*Vo#V@#K3slK9;67GK$s7K=j z(8(s1d6^sL)jb;)9BkTCg?jp~BtYshIZqG`L1Uud7Bj?w+Wu;Me4LG#Rap2hI2J&C zgI1~8rbW{-Ct>IYr~lYwgOBkV=j*5AyWI$7skiOgP{U;3RPkX^Hy*hcq-aEI`o@7 zwM}ia{-xb}QHBJ$?(+Sy37!QYmHM)het7q!HkRk(TW%_n(PY4h5*PDO>}O|Y{$5;c zZEdBBy#Bqi@}t!sWDu~G`1$!MFupq7U&bP4Tm7kJjSx39{0W)#;NSrGgdW5DqNhtS zpu)#G8$*}c;JVXfzknPrb8vJN9uktkV@=GviGe7yn-@iufI|YV8WvX8hg@91`HGUx z0b4LKGP1R~Stk07s*#cARa2A(?ds1>#&zW>Q?Z?(q`mtEIc0&1ZTw0pN5L)$j<)i%yuRCZPLxvw~PL9AJvznvNNlGnzMHp-!S+(*QE3- zG%*XR={o9lJyQ{Ko$z)6yGQs_eHEk8Jk{cH>LEeg7<9#R%eUzSM|+o{ZdaQdg*R{7 zjrU}iIjUo|s4A(5WzDD>!;68Zd0u8HF&zh<3>^vkmeBy)b%~S9?u=ElN85JQwN3Y+ zO=8-v;&aHg6co%8p~*{s{N#yb8WQcjd-<;33*eC=gyK-zd^rUbS}FGyFlj@XvagRf zLBkpy83}v$PQ5pzcftO5Z$g_17w8JV2T~&yt1w1OBh&Mau>Xr#-5Rt}`zjB3<@2+% z_4V}>F&|N0-tqqa2${^&KYxUME*oo0!^ovryuUj=8sDR<^l@-Vw9T`_Y6w1YrYcBp zHMGx>_rL*T+4G`UW4ty$;oM^+2;z>MkE9!uK8HOGjKLZ;W5zC8t%+} zfz*eL_}0+@5g6CD00_eoOe6HN5vT~a{{UIc+hx~KZ-3w8&u;p!Y?p|&g@p&;69G9% z*z0Vxx7P;p796zk)n{blAAH1BYUP!bn%wp>Vq!+X3&W_GNQjUBJ~sB*^XEb!IX#YH z1bzq$fk#QHkU0cmmnqjI6c6wYK{+q`1))m9p=N=gc-;+UA26S<#v47JwZh4TJzB2+=I5{tG+XVML> zB43p!sJcZX3RD{{J9}|?xdYT>Y&4YTMTUR>>;dS>&&vaw&(Xm_5|`=C&n!pn zF>%s~d!*~HKC)^5+Sq`zJYJ$_{o(~UyL7d*z*yqF`%~i8t5>Y7g%cAKka~d*yB#8h zAM(xc{&$lKV1%La30`unM}&N-cU|%9kmz57pH?$1VR0UC8&z+%Dg3#%Uwz>%oX4m$C-d#?L5boB&Lm(Upnm zX;!fgjmPTl=6~a#zu=quj9&47T^fj%#XazeWn^T0a9zE?CHvyCtw(?RJ1aGhh>-5l z^KT7LMLA2~tcZ%}K08i}mf9hBwfkIK`*Ajy8q_u|0n65u2ednUZobT^@?l=CDFFWP z;_`e4XzrBzFTQ?uSVTo`l}(l9bin00<7)3)d)2n-)?asTvUZ%f++d%ZYP1C$lz9WK z;~3uviHSk3u6bqt_h+%nDQ@8=z1<8RT5y}Rj10A)69xkE0T~SqO*@~Rg1x;xfK@ZI z-(WWE>F$<%^oWS_exRP3U`1sQ3D>)7@voV5rKdej084xZ8#eOz|_=~Rig+4 z8=L##!wo}+hYu^kQI)SgwfATi?snR)xo=<~PLAOpqLQVa$@&I)%qp4b@iNa3<>qo* zHtRb4lymtBp%+xTS8D&zI0CW}l#i8_?QCr!^|%5!0?b!0WGrhN*zKxiO5?s5L`cl3 z|F?&;c@*SO0Y?TwL7mfVTbm!&S1OQ-&zEA9cmIg0cKI#5V#q|lQT4Y~Au;-u$KRgO zZ1>WBhdKdIHm_*;tB*}|7?QlJtT7hgV;Wv_f@oA$Rt87`1vDZKYSm*!#cUO3t!y1x zTpsVgZeCs&EiK|;NC8I{`@8(Y8QWvq?-LU8-8Q$j`W7$7_%np3 zv-0yT!BceJ4$WAGjN+*=kIUu+BzC8D6$bo!jMtBxrz^weFJ4Vp2!p;B%HLeNFAo;Zcq(ZOM| z=H>IkaF(5S>$ZVgGcRHd);Gf`)R+VXJ;2Bc9f;aCDbk0jqp~-d&jn5Lgw+dA#`sau zDN)c~-u%nuJy41!-PV0&^L62Nox&C;zMsF)*7R%U^~Y26&$*G{`ptc}#_QH{Vq$e;1FV$IfMiVIeUtuP+WdJLvwfYe})g2vj~ z*}>7#vFY?T_>q&qAOv7PR({8OH?aywS=-I+b3{b{JFbO8X{xW-)q7eeH_34<^WfoZ9iSYHxn!KK+Z;Mhe?7>WEz()AW7c zWgp&)y&Zppm1ZH5_=}hyVSl-%^zbVEq%r`q^-H1lw>6x%Zy-pUyE=^h zEL(S+S8|)5Ol#?$<3=QJn$31AMnEmLNHoE!vfV6>>knA7G!pIc4#3V zaC6U8SwjCe2-$WFM-#krw{PDDMBiy8`^{)?Z6p_7go#jb{Z!-U{4%0PBN-1st%$I2 zStl4z>FDS)e!^4*R~>mWQ6#D50Sd<_K={v=0+l`G=7sVTU1DrDUd_* z0YF#$zRC<(zM$v;D~* zq_W;Nys~0gPm~3-DcC{N$YPjfP|0JYcO8c_jt2_r7-iG3#;UZ zd9tZN%0b6h`5z*^--a7Tz7W#J)^F94QIsJNZzCe+%3eGIOO^s-16bkp^{F)?GfI&1 zUP=&3$Hc_2{#*Bio}T;u{qJ2}4zFIF|4y>Ij?tpD{YB|8VnCN`072lacXf5)hcNK- ze{O8lU3LK9ktiuCZ&n6~q^uCo|MCI`K65aB#G*qq+3e%v;UUONhmJ7ZnyLo&Nx#gn z6>y}`v}N-aPkEWjg|s3WbtJgx;8B{Nj|rO;8p^`X4yN;0xpRpF#3Zw}-y1Xx4iY2j z=^P*2M7X8)A$*UEBW~(35OtZ}QJ=aKCl4ksT@HyOkO~Vzolci6UHYE;z2S_zX=>D@ z+Z*%v4_Amd@6mU|m<1N^oa_^d4Xi+^n<;W_YpeK9eR3Ubd4gwd&OW@J<0r)>MJk+W z#V6mTw^V zc7>^Te*PSs^q)}a)$sWm78VAL;waU(nHf(I^q~Vh*xwg)+0?SIV2*tPPUwX0#nrVn zulr^FxcN}duC6Xmn!%9Ig4+OT6=J)yy?t_G0u>#70IWfq6XjGz>1$I(wlG@(mRE3* z!PaeWZv!M)`*TOp0&9C~IkC2R-0{_)(7CXE{hcnlyy)*zj;fW|g*V@aEDsYCA`H1d zWVEU5HR$}2^?H>}dL!?%cF@0_h;KM)$SkdXre(-5IBR>m%RHUldK!t%dlhUuy_F$z zk45%g0EQHKh+J#TD!A&Dvwo3k6vXA9+cfBzE0K_Y{(go!z+AcTg3&IV)BkXJpqY+Ge_j9as%^_P+LZ>GGj(-1{RFQ@%Hsecv`oOC=nkCKf*Lfml7pSl$< zMJu0jLX4pO-KCOEm)A5u9Uq~hYV7bZr)I>J zsO|$a2|by#pSqAxZcv=;8}QsADzyu?W8&G{@OwARR-RNt zkVT$Ix0Gc333I?(Zh|}QQF6xkm`j)Ue`S&Ue0z~G*I>8W`le%QDzV)tFgTb-#Dj37 zz{t#OyyjMTw?E`x~j3XHhnTHwAh0%*79=;$F51J4KG z!PC_I;S!O_albw4CbC}|shR^6O~APQQK8Ul13_{OoiDi4HQWWElN16FRr7Kh3=adJ z1Y&@ZfvFe{UFGFnoiC8=#V`ZE%Exh3zr?Vn@kjZXdS9P=&e7E+P9xgE?UOE}U2Y~e zZlspm8ZrVykY9MMl!7=szkY6d?Nz2m2u5_MEQaBrA<-BU!dH1*2hzkHoJjDgAR>J6 znB73#KBm34TfLkTX&z^jDa;GU&)Oo64&9tGfAq=m`0nYBlxC%VUX* zMN5TWxf{g`S!{Z=ap`0Y-N^yiILUd55zP(6RSQ7XQ`8575jcr8!&X4Z zV7$J8hE_3Y11saaF}}8%S3>@*Wx+m-gcH(sn=4GWv@Ygh7mZ=tP$f8rcP_r1ttUd< zH~Efd69(f=^73KbyI^DCclh-USKqH@DuK3Sk)(#bLXDrC*xraVS z$d^KmxZa2RO6odV;aj@XWhqDK-rd*sdGLXR>sbeO`;{r(`T69})%@dxoSb`G9qV5^ z)Naqd`J#9)?!tPZuKy|AQ_5z1mBEnrUXNb&*aXjtz9>JM5z95l%$bS#(v9- ztc%BOWi(8mw2FKl;YpqT$Y?6d-j(s1v#aiVW<-gkYU_9B)}5d^mFXDFb%EWOyl@?_ z3fe&b`HhXRH=Z?Mc5C%Gs2Y_=LOkpjC@hM}>t9-U%%Aum+DJ~^{)=W(px5??W`+|+ zR9XwpcWh%i^FCKzg##p%mFU$VupYnTI(Wyu*!YX&uYPKr4wKb~nr<5)lC@)-M7*3{oct1 z#%x=Nz)evFGA*z*p0%N>Ont671$l-;_w!(N1xdjC&!gzpr|1G`xH=g$^I!ZVRA`nO zx-|B*!1QT<*Ppz+OrwA+DY|EHWYOT)V}A0OJoWrX8KkYvkveFXEwp*5=jNXXJ`tjl zmx2C8g*MkBv6Ur+f&ACUiE#X}n+?3Zd*yB6!&7A2FADzahaJeBU!JhUZckNj0B(bJ z>Dq0b)3#=ItsGy9_r_puWU+L9X|qA|pYr>O=S-l$aQDmBaV?yI6hWB2$$#2#@ttZ9 z=D@D|j?eafGMPtHNyk(7+TNh~S3wG9t((?@I_54DlaOos)33j;8%IKg6Lc<>TAGK9 zjF8|wz>_^OQfoJ#BIL>;B$PC;k`x~g+})cuZww0&%PT9ls00rKCc&oM3-lTS!GM1a zZ~@svnE=^G537_(Njn?&E;r4?8f5=^O&gm{xD}XW`5sMwvNg@;xFm-VhaRINoT3y4 z3xO`6r2GrQ)1U>w;@J1^{b|9l*9UUac&Wj>3p+b?WGxuu4ZKgY%ggs5-HEvEriCl6 zn9+=5ScWwodK)j$9GRXZEpd$+Rc+_a>r9_HJD57>iRJ&7;U7IwIfGU6adsvy1dMlB zfO>HCcSVf;&YgeE)>goV^{0r0^{EW39E5zsWv4uDCozC25^$iyPzUtcY%P zd@O{UU?!K*_JVwH9$3&+eh0}B)k7cX6quA#{+?}=!n7MXNM46)Pi-2+X|J(SoPoCh zfL16chB4n|Wo2`r`7lsnCfuHH_5o3qjo5m&-r0tiV%i&cKA`?dfa+yGVvg%t#~egF&wV>nUbwBQ9} z*RC*uF}(8f@`;%gmNuYX^U&u{W3mV6lCkT+wZvvF$0efx`3eNTG_BV~Cc+ zMhj42eErV@1@S~)9%AHuTwHK5FFDz1ZG@+rus7&EJ#n1Pzz4!)(FX$-PEKVdrINh7 z`+R)ph|QV05g=1x2rSuo_8eIlbMGQGeD6MssmcJy5VmE5hIQ6q1Pp=!g+e3dt*hD^ zlbpP@y{(ivsP2jj#*ZhnGs;MriGs|(j#w{F3~ z(dbllSFHDJDsGwckK!$_tdy6N(*jpuo@(aTwl;$%PfP?e2S>-^9*hbUyMS8q6;9ro zlb}B>Oi4k!*;PMMRlSX9`TF&r;pJU7PnZY>g1hunckpA>ijQbx8$r)~3eYRb@&+7T zUBx{Al>J%*WDSD`JfzB;@i1{(Sy>4k`t_XO;GoL$=RFJdmoV8|ZT$n-fx$H=Xm5Fw zRJEgemgj&j2VULG%uJod83seICA>Z>7;4+w+cDQy@h*bYfk3Em4?`5S?Of$!Pmhee z0$e}=>N2DtSWR>s@~mxCP`Ho~ii(QsUq^tW6LPVE5eWoBdI+{rIe{ztA9>HEzxLXd zWSQ{4P^5nU35(~#|258Vz5XzA2doTar|jYJF2C?_9Ngf-{CtU6g(Ti$k^z}O7{#0$ zs|T5;-}7Uvb57W^(m`LfXV2P=%1N<10F{7Fm^D!{vqVTiVQp?Mn>hqz4M-#rFAsNj z{~S--d3k!m3t{zXgxv;@f3gu{N#KFlVQyXvynNBn0zA`AlmLt*Dsp;O7V7Kk44#;n z2%SF)0;UpyNmEzatHOaX4JuTP2HhO`J>EC76%dn69acFSyfWN_tmi`VADI9g6! zPcOV}p=@eiiKwWc02$HyNq|6Jicuk+77wGWCJ8r4_36_9kz{U5HJEOK2%Nsh1+fcu z7|{J;z`ClEBCh8K0{X0K0)0^9Kw`{RTLUNt7d4H`$6}fM^z(ms0j>vY?O5$U5M(KW zj1v9vBQZ6#t*PnVn65XH(2>^G)R>iPfw%O(4idd`c7{o0Aj}x>uLBD>OP+@ht)01H zoCL@YPOUP-ffSLCA3q8R2t2Q~74fiK0fG-#g3aaMQ<$RDqQP=z!Y3vk2kjU1_D7G} zu3_$t8zNq3>UxWEG%p~E<9c9jtb9Q_ndL3*ch2U&Uk#l+?mUIe3nv{oad5#G(Vu5B z*T0;ud0^bp=zSpwCU=;LnoZ%eoq;LR8j$pchEz%B#4h)4;fH*Pj&=Z*2$O)Z>PvLN zKZuuU-A z7rhForke^Z0uX?g%W(#fRAC?Ssi=zossV@Q;c*7`BQR+c7Zt%sb*Wy%bT3 zQumv>t?P^OOVphaVagP z2kB#u>nf~jMpqn{fZplCXRgJeSf`1m+<76|%j7oG+v1kgn~zIt`)DT+W8 zzDGhx$;!U=@VNZ57zy((kb|B*XOHOu))$-$FzN_RTBrmE!ndM=3)#=m+B!_6{VWO` zC76Mdu}m4O8#$hT;cE~?=iF%!Wq{CNaK7`~H~5+g1A}>u5IrGigGt~)K=9PSzzzn; zp={ztRHGr>+})v*&=Ir1)f3Ro;mw^dhB`MJ9K-K?@){U^}Ysb0rqyk7FtYbH>bQ|6FDhEU}N7f)dgh2lO#p+jDx&yBM z_c1YI7l%)!1D}YCw?HWdQPdL-qQhbbgpD;IMA%Rq@OsDyz!zEw^7Df&$#6>rHW@ag zu&9U-1C>QtiWYBTa?*jH5;BE;V+jHg_2C2e>th=ma*Vvvy@LaJ1qDbl8a96O=wRAR zb5uFdh;lCwyvwpvHQxhesvw2$U{WvtNg%B=B_$;|iyCYuxj5qBxUEoG)WaO>TjF;Ar!N36nuEBTzn@;!C z^-gG$?SJ>2svQqf~t_Zb?ZbLCRe^L*n4|>YgMY| zBIk^(0htFfI}C6`dfG~rqgmTPJ8~%N!u0o$>PqeidQU8G7qozPbM+8a6>pS6SXlUa z3KEQ3B}614QZVia`CVP0>Pca`BW+RaUyr@@Ppf2QUHNua(@Ur@G@zmhp8FG?=Jgwq zMY8s|YUSha!b?+dd;?0-y+JYujz*370}QrGj+8q^{q>D-iCL<{Ruua^n_1}! zrSiMD*Uf7qX674be5H@R*M8}}IsxQ-IVGMuxC!IaR77-noM~$LkedO>Z%+Ash*XDf ziZD0-VYLVj1m$GGF{?~n|9t^`QO({$Vyw^j-qqi_gI}x_8+8+?#wc(|ga@m=?AREJ zm#V+F)*nOh)8$q&(&)wY%2N%i%s4KD{lLIooqnHSTSYg5tth7Um6r4###&;}8{UvMy!l&t?jsGC%G;j=CquVNn;-IhEp!1%n>{D!D(mxC(3j0LjhIYNDE8^4t}`e^LBq;3IZ| z*=k+Zk?>ChA~XHN0+ynM0=~wqV;qQQ6L?cHs#$t40=8N z39S{WP+8Q)%of9c^!9-%a)gu$J>A-`@K5Z&Tkq8-9a?k zh9PZUr$fc5z)GEGgq8~HLgn4zk0(zT`O&cVr;Vmvd^%esTnLW3JieTmLwdJ@X7|gn zi%Kpas}Ufv-LWWZaBy@vy$e3dt1iA!2amWe52n9piaG@Y~;to4;ocLQTXB;d(1ahT3fTNblOAPXl}f%&!~;?ohlJCQcCi zKb?JfG?mfY_9+sDh;%}xWGo?MYH~~=p_Iy8M8-tM5He3?%n%YnhKeL9GN%k786rc; zlnj}N_d5OFcdc)&_xM=geS&id*neuvI>H9rMI z`on$s2{9jv=#z>$V)w2qO6)z!d944jb5;8>C?=D5^W*v1X6@8Z*FDNJ=Ar$|Sz}38 zaHt*1lp+b$O@!AhvdT@&TQ^Sn`|1|eS%qADVQwi)`GigXm3`XU-bL$%+?(trqI?~N z1?O0{jXz%M99z_XR;VfTT@4f2B&;Yy`?`GSa`R!KSPlutM;hyu5OqEl3o6`dTQ}V` z7O(w7X zh)nhNM<3;r862IEQvPN;NitDKHv<@5T4Bxn;oI*vx~|LS8^UKQceI>)(kJih(;3an z)326(GK#>23=d7+@;YM=ANJ@twFQ!7mxnTc0g8vBf2zdM^LHMIMPx@V|od%s{* zftcxMjXaB=BDJ$`9d9=z`|NgdH>yhZ4Wo4@r6{s31fF81_|@WeQFNHn|4H$ql8Lg~ zejBGfrCWDN_Wpid`14s2XPrR($EJFR;AbR4n{cen(f7wqHW9Tc!^aAO)D|R*R{3h5 z5KnT6CssaD?d9os%b~BZI)7H(F85q74`Yd%+vSYG*gJhv*>`C6AM00fa^J@?S==$7 z`GtxvRzkL?;_G|w>(oY%WUt8ia;#>*=<(Q2Ok@*@Z1LXx<$Q;`Rddv91xB8h2`Bo@ z^Cb2ee)~t`4c<@kjd)^9*ZUNlD7IgSN(~EVvE^eCsg+>*6|}|e3{Nemk%jO|{0)u9t>KK{h@H?f7r-Ro6Bhp0PW8Y2uZYHD6@+Y%~>tT|^^ zsylbZcFN{Sd3SiLs3Mo2R$QUcil1_Kzy$*frjEZMV=IcqYsv3D^%c1MJ{p8}@JZCN zNVw?iByzg-JdSWkoVs>AW`2NDlWQ}#q_0->x2XhNjZ4m&LE#)JxPh1TTlWbm@3V9< zH{G`F3R&rLAHK5n(3Us`(Ig4kho>xpLqe{YnmX>u+}3r}AyVtqdo* z6!49r+r9`A3$;gkVgqkboR!=wMBK8ryo0-{GVq7>uy}KC(v^=6;-)fts;VfxFQH!# zl8xRo)4TLnEUc}IUc9ifwSD=V)wJLLX$M!|s9oLrDJJQY-xFR|XHeb@zSrp>CBt#` zx>@QiA=;MR6i1(b*svMN66_nU%(>vopAzcG9<1V)^2G zy?S*=C7#-h4#%4$Dy?=QVk`B}sJbs~JVW2&1rl3H3{Tg5k2lsaI#}r%X>zT6QqXkT=ZFCO# zhW7TVifGfhODaE`Bwe=jX}9$|mR#2A6@1ktI9e%4MdT(?u7BK7zdM1Mwl?+4w&}Hr ztcXKJZ8o&#`GvEqz8#CNy!;Hk{ivRpSX%VB-&?C{3LyGRtfunX`!q>yTl1-M5I-+h zOUV}wK;<{k31j2b%*>yt3Q($%8*Tsv=t(p1cYARyLOu=b$_Oy!kbXPuq*bmw&>MQN zH}ojWWk%`Nnag%0%g(4ogRqQm_YIRKN-J-)cZ#@r8W=y_+3`1ddC2bk!_3N*8~Q&V zoPF}A%=TPm9D@s$$UfUC%X*i;b0_vhRnROAS69wCtLDjTa3{9r!Klt-rhy+>I5@iy zvw|nj)9HNc7I=DJuvXr`=h?p>o^@NfnHd=DLGJssrL3$B#oqYD1WZ0S_UyTM;etwj zKkATZ!L#S$exNa#bvp4SDzC-GMMQ| zIhtMmJDyVq)>4oO@vZ{0zJ~gGE-L^{1rU6AuyI5HhZ$~##~%3py>DEjI@p=S0yPfl!}|?@Y(`S~11S z>`$v7Nlxb|$a^p$nrLaPa4+yi7lC$pTsZc{jdL$m&cy~Gn$?>tb9(F;^*$$ry4qBf zNc1-$np;~x9S>X&P^eiw-(}-kRPAVzzTm*tv&S((%%9=CK>U~z3w7FC&FrEJLy9V* zLa+3HV_;a>*dR9;8XT;jT0vtBC?c#);1U9Ni`7++gWExEpLKZydNWE;Fa*rMrV4@Pif_cyz@tU;h63YzQ7sGbQLKu5?{Xp`r8vr@N%zv#hlAV)lE$ zwv3dhKsA$P|E?|cN11{32VTeznihE8cy6rp%gM<_9TH?#1MrJK3Sp3i4;a9aq@*O~ z@zC&amLNrZ4`_dbvrBjt!^`pUL^#6$Si@Z9ka19ayVjV(q8r?B+VtL;bFo_$4kfk- zm`A#u=DEkq%PUF@1>Q3*%VKlUwZh=JV}Mp|lF$;A-4wpE_vjOCS@h{xSN9>+Mjd6~C0{DndSJ8hZs z84>|L97big@&*%-+4;3#6*4dA85o?-YSYb~nV#-?bt8QhlY9h26j*tg%(G5-vmkPk z0Vq;f9w2h%u`H=WQEMwHLT#)p#akm6E>EvNZ@) z5Rpqo^;iOMKk4alN10w;UQT*4vY(ATV-RrB=;&xdNOVjLo%&fB{i_s|hYBXM7WK^{Ij%*emjutyo)cC zC(Wh9jY=K%i;0n`+c{G&OG?=GgiYvraC-cK&)^skJ@E<2vlj6&S=l3;Pk(w2vfrMG z@!MGZy8M1^S1k{Hz`m#kf6=X9{<&l#WC^U#X{#|m6qb|gfgtkRHv`KxSo@(JX%7Y$ z&~iW(!8N81M<0kpqKy(`JNC7`y$Jn@cWaY&baZsm;a-0`F6fMU6;QeTh`9j8MFhLd zbD&Pu)ru4pKYHXb8z0KMqInV%d}QAVY8hEswT#aQB{TcG#D-wn2`&y?;Lt>J6|Hi) zq}&fN4J<9?fJ_7I0Va!39i;dOb9hWvBoBbhJzJq-UfbB-zBYUL!IQ07PPFdncLTnW zj*a}16-ZT>uF5v+e1hc%I2Eugk=DPgYz5rZhQB=bz-$LfjVZv-&kwpFlh9hv_3gKu zoX`vd^7~BhX<%R=oNOG{040GG6dh|O{s0m`&`jhXBEWrmc=R&qXwDtMzT++Z{V813 z&ufZ+Hoxcs%LjmTSxjm+CF}qKnM&TF#+)q^HGg|1o#o0Nz))p3aDDbo6f~Z zO5xigr`%xA5KPkatvSI`DH>We;4$BIO*)*3GR=)z&E#=bR!?`gCPWOtrdF`6pu4N< zS48|tNGBz}yNjm;J*>fOrtXN$XZX0vfDZ}S+sV;!qW|3nBvXDLRCH`Ao%>w*#l@e4 zT8S8fVVQa}t7&A!DORs?UyJC#N+d4AS`W?7GwH1e%SvyB`-gyiN!j+oaupx}uuoHC z@@gddgD_eQ1sbF~z}BX{j`8ycz)OgjDg9QN zUPdrkpoW{@hYRnOZO@)1cw6GKk&%&q{@6R*#`W&+SBG8FGR6!d&b{P7^mL%eLdt=p zx%m#4ynIrnv5T7gp9K2H@79;Cz?)W9 zrb_(8_s$fmi^WlZ}XNUA(G3?%5XDr(1G86{p544(AUk&MZCOjK5+nE5NWqbQM^k8TDbtdg-i??87 z?aaG8GB&1`)dupl*YYU80~;L;-BQh!t5>TB>|+lZ8S3cp>^Sqb4nQmrQ}nrNAV{jK z8$lW~BYJH4S2`?7L61jHhMN@J#Y=4px*S+s=uslSN1zL)`BYKi4H+Vgt_EdV`O+*c zEc9MGX2blexY!A1qz~vAn)$Yod*MHV-Wz8ry||}tfy@F}XikDlLvs&o)EE`stIgNfl*8RfV9PRmL<2!<$uc;C_RBJU1_vP@yDd+R& z=Q%mS9$=k$GpK23@Os_2o+*{q%HYdWGaA`^+G02%F|pz8jSfD;gQ^y_;X!{&v_9tg zr^1LBqKRw@rwL-3pMTv@!(pNiSH6Dfql6ZCICA-ojgRYwSlP~XHOtD=J0>S`Qr)}P!u7_K?L>fNIz}t zdwK`2k&wYy5W_NfqQ_PyUSQw8XgCRQd1E@l3ww-=oLs@B;@~&0NVC~3$NVcZNyp;A zK6M<`QBd&7&9%CGxd-Vzron=O_9oFh)E+jCAMimZCfT zZFK$!G@sBobqcIUY#f@9lgR9KDRiUS9;&d^|7?fU(MXSMi8%Z5FL_2D(@LJ6ZxJ*+ zGQhtu+F0&H*94Lg@dqCfen4Qh?R#@^C4`GAV;e9l+b*sUZ_Y zs;_?Pl-Q9Yo#GsXIiKw8QOH}#9*44fT|8ctluZ5pZEI=CZS;Zvknqgh+_1egbcZ>1 zmbP>4I@b0QMLp8tWbYCa2XFwGPmHB_$;?%b~mK z0pcUxGg9Rp?9vq@vkiUbHnc1xJG(>SLkCzITU!30c|_J_ya^oS7LWnG2I_cF0U*PM zxUYTPjlwuoKv*~=ENt(kuD-rLELr3@19X-X5PE&UR?+$NVjDz{1_tOLD0kS1()M7> zh0+wueji5!KT8PbF^^ZsEy;@e{$CA(Qqrv5lcAxs$5NVqI7IA~i+%WT{d*-v#~?}6 z&s&n|i2831%MY$2CWhMz(le)uC8IVX$Ah%L&%brEmOj+e^x?zI%uK>@ueWHfAl6`~ zE;;~9DD*-QXS=ND6C|ym5D>WofCar{`v=en;{xXJ@bJn%!^-MD?6tH=~}Wg?(=U1&7z-K)|JkewC)* z?WNIg`~kyYbmvy4-o1meVrgD2Ak_j>3M@eyTH1EcDFR^)eU`S?)`6ctSr{3gU2WLu z7l~r@vlKErXj4JGfH6Sf^XD+`+!Ip6Q>Ig7Imaw0DSf@C2kLY%f{{jl9-aIC{W~3- z6!gP>9zXs4=haq*Zl`%mE}8{=|Jt+Tx0$5OyN2bepbL+l%V!?C!X`E_;J-|FHfapx zLK=tn+4K~fuWa%+L5>3V*w^%w75xfRVVY&jNDAa&>$@&3lzP!14SnkneE zLhOUbgOKI3lVW-voEOjDi;oXv7_+?JJ0!L1wrn;3BZ}LUMi4{*WY+f0mUK90eCi-|l6Ur7CQ4rNA3{=#C{&W4 zPB7MRpSyBX*YI-N8V5?um1i;ezMHQ^C-^CkwkqLoD+HqE2b5C2OcyxQ zJ2oE3O3(-^bo6ZN?QUbP+|5j^K1_2O_{e-S$L1k6d8ti=RFcG%ZOY_|Tc%m^n#Ot0 z#}tGd(O3RB;lR6zfx3=n+b&tdibfw930z#c=R};wA1nS1x2*4OBTqY`vJNIZ9uM^H z^Cdq*SlPy4a*Vzpk;>EAyL`xxb^TnK%6j1yFa51A&a~ls1`a_H*ywl>DDZNnMsR0}7=4 z^IXp!`x}zPHe-4^jL0?BYL}tp-~1)7A4WSCpP%DVbgAjaRcfVwk?-@5(PYHR`mC$L zEQOfJK0r(S?`q@aLrg}lnOFN6y)%C5yP=J{-Y_#g^}_zJtEB(YCCS4~>J$b66cyXO zIq>e|PdvW8*tT-?^n#m5lr^I~>$SzIjM2@ zSHz|vHcV(j>fz6Z`n^IXvP8N(X_5VxgsV?GyC?jfm!=Z?wp)|6?+>A6pD2d%D9A7X zRh{;3aWMhDOHc26Ec03Z2}c|E@}A2qo4jt{QIVmat7n~ZJo0VQ@^#O*RjmV)Rbihj zt?gv>FVgWzFXFql{x>X3zQ}(9Le6-ZA4O+L=WK|a*k;MTQP(utlxRnT_0$9tyQ^}( zO*CR9$tLDMOty6jZz9mp5!@)K0{?FJ&u$R67n~L-DII3x79jQyQzQq#k^pqXF} z+*{%}Gw$5>O&bDK&`m_sX4 zMlI8|o{eALGAMN_u8=d`IQDFqjmJmBi>78nS27bm5eQTixMxBr*JhPn$BTQv?vFfm zLy=1%)4aE^Kz)qE(sGD&&ApXQBRidwmoP*a-XIY6Mym2c0}W?$a1&pLn^88fhH2Kt z8m&As{2VZ(^S9@__~wSd2MxC{nd{97L~&IMLVW7x&70{tMa$ow&3QN$fz#BZLv2_{&(*JsA)8c zjgCHG_$L07Irvg%5~U8p6r7x3qVN6@m1B+R(GmsPDpA_QsN$WRz%?sJc^O&77DPH9 zQlb4RhJN#aMAos|tE8n}8pJKybYh`79)Fomrv6kJ)TXBOzCnwXUJ)n_o)VxjX?9H{ z9DqZh69N?gBstBu@LC8BEqZ+vyk09BABG@BY?vi4UL=B<2>?t*{EvyZcBD$Q?)kNm zxs3N2*RnQ7{iisa-499+bF4atPo+%s?mK96`;$hOfAE9Tv%b5_*yso+_G}^$XCb32 zS}IyzT(s_cBg4z{Brk&_H4CBRZ?(J#!+6^7WO zp&_WoR7p{>{mYm8<3RC%GG)G&hsUeY(Mu z_Lpu#q3`c3Id{DDo3882;+LtUMA=OQ-#dsDwYx;(%0P00j1W-pt5?!KTnuD%7hnJg zawuxi^9Nh&5(}`rk!csOsE|&;jv8Yv9d5;>j1Qrj0~w^-8Oom$P-h^x^WhQ~7w0?k zFey1XIU(Vap<&Yx2k42yIge{*6dBW+iB1g|znRGjX_ejePg)M{@pZTK_*q?dgfDAAwK+KV! zPtRRFG#xEu|G8^QX5|mt1T7m)sC#X9*JEO*tvgEY?tY=~^ zJqW^avTRJHF~~bg#R{eW13pUl?cTdLIW|_AfiipuIRP?ewScGdNwfnllBDKwL_ykp zh}OpXCNH{%eS(5$6rPlnp!$tf%K)*f+@ccTv0r3)`B9mJasPwQU1#!#)LlVUfcgF* zK)y6SuRNBX`}3d-dYYRHYYiYt9ff-y+ya%?l6tCqp|7#2iGxT4g_%qdgkM*TkhZ&~ z;ZK)M1lg@vb3^O_RreaMLY3~>>Vtb^-iG(4G<~E6*j14rcufrh_F!2T_3jQILM%X9 z1KAg>Ygk`?Y-+j%wYjr%Cqv(5yK*yYYY*h$;8}rl9j(#IoPCu4(9Jgl0(l?vzR}ds zAc$8Ap9?7Ocz5oVw*L;#l1nUr$4pF3O`-17J0Kz`7!({lHZ`R}jrnAQDt*{IxY2>= ze;dU=EKn}J^Sq5x#mmbJyjK&G0ppbq_4P>i^+gt7M}e|A=SUW)$N>1jLjCSg3Z4Yf z-;z2)Aq~a%HFI+i?S%vdPc`105wF`$Xpupfm;VQhgxw zfK{Xt%gsL}0D?PMP^?T1{SX|zA$7+j7JKlqqM`zDCFnNUwz~rOI zb4pd!Sd<89Q>W7bg7<(*n-jKrQC75IfQ0ZcP(NG=#4324`>&t9^9va{-Z3} z&(D8BSNEPBZVUl9m!%Z8J)rcXB-1#38h|Xgy?s4Ba()KQ36kTW!IHxDvloq9h2Y&X zyRZ;oP31kk4fn(M1W-J=^HVhdhy#eq$d4aeC@IM{`mDj^caEt78}oyZG+SEA+?t42 z<&{OT@T6u{T#<*d_Z%)`U7fuojGg6{+--UNIx2++ zSPF@s!XqL8YVYq{`QM?GD-dlBSEk{qsWS|UI9lk^rG%&`rjVN8z(AZxv!7al40lc7 zK%@J*C^xrk-Kw6U(=iy_n)B_7qN3lMdRUN4P|Alg$S3Xe)+T4`8j3hup}4phNM)5S z*>8Y%Comb1@k5$NAYg3hA9N_i)U~ptdfhrAPqCGoIT^&%ZBI>%j%EUE(YHXDAT$PSd1Nf%s6ahwO)bW0~efvl^D+q+! zlu&Anz)!AOJ|Fu`xF-4Mw{3 z+(ox0FU>4bfH4TH-E(F*NM}EshJZ;S${ir{GcW1s0j_IlY_vid1B7TDFCI-TGQtHD zC7bZyrS9$QqJ$HiCwE}8zW2Z5(7X~ee9KtFY6tA=o9|C4#t_TjSyy8Mit z?d@EC;53S1%MSgYfOdZhK+pe!hNQcb(GXffi%Mh*L6p(e&CNkN3DeI+aPZeJC`nPd zH^dER=m3{vy`HYM-nsbC_$(Uy<(h#%I9i6w&z}8^sw!A$Fx>}3|NLbSYJUb%f^jH0 z5Cu_J6@v9S4`wSU=mk%oPE1X~s7mO-fp-0?ATN`hmVTv2xX3@$JKzZ>CT0M{X#-

20w8xNf51f!t{KF-!U0R`>z;mEfJ9T8 zM;uB4@~NLWi>lW zgoTFA%+BIz9wa8JXSMnI`W~_VT8P7+9zNs%>hR~$CJI8Wv~?kkH^KYa(EnEuLVCUM zuUz`SqLhpDeu5kMy07U`sMHD|YPGN-(EazXug;1hS`p?rK9cL0|LX$eFh~A|b + + + + + + +nCine: Member List + + + + + + + + + +

+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::IIndexer Member List
+
+
+ +

This is the complete list of members for ncine::IIndexer, including all inherited members.

+ + + + + + + + + +
addObject(Object *object)=0ncine::IIndexerpure virtual
isEmpty() const =0ncine::IIndexerpure virtual
logReport() const =0ncine::IIndexerpure virtual
object(unsigned int id) const =0ncine::IIndexerpure virtual
removeObject(unsigned int id)=0ncine::IIndexerpure virtual
setObject(unsigned int id, Object *object)=0ncine::IIndexerpure virtual
size() const =0ncine::IIndexerpure virtual
~IIndexer()=0 (defined in ncine::IIndexer)ncine::IIndexerinlinepure virtual
+ + + + diff --git a/master/classncine_1_1_i_indexer.html b/master/classncine_1_1_i_indexer.html new file mode 100644 index 0000000000..468396cd2b --- /dev/null +++ b/master/classncine_1_1_i_indexer.html @@ -0,0 +1,135 @@ + + + + + + + +nCine: ncine::IIndexer Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::IIndexer Class Referenceabstract
+
+
+ +

The Interface for every Object indexer. + More...

+ +

#include <IIndexer.h>

+
+Inheritance diagram for ncine::IIndexer:
+
+
Inheritance graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+virtual unsigned int addObject (Object *object)=0
 Adds an object to the index.
 
+virtual bool removeObject (unsigned int id)=0
 Removes an object from the index.
 
+virtual Objectobject (unsigned int id) const =0
 Returns the object with the specified object id, if any.
 
+virtual bool setObject (unsigned int id, Object *object)=0
 Sets the object pointer for the specified id.
 
+virtual bool isEmpty () const =0
 Returns true if the index is empty.
 
+virtual unsigned int size () const =0
 Returns the number of objects in the index.
 
+virtual void logReport () const =0
 Prints in the log a list of currently indexed objects.
 
+

Detailed Description

+

The Interface for every Object indexer.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classncine_1_1_i_indexer__inherit__graph.map b/master/classncine_1_1_i_indexer__inherit__graph.map new file mode 100644 index 0000000000..637cf1cf66 --- /dev/null +++ b/master/classncine_1_1_i_indexer__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classncine_1_1_i_indexer__inherit__graph.md5 b/master/classncine_1_1_i_indexer__inherit__graph.md5 new file mode 100644 index 0000000000..b35cd4922a --- /dev/null +++ b/master/classncine_1_1_i_indexer__inherit__graph.md5 @@ -0,0 +1 @@ +ecb3ffa3569c0417cba4fea8a8c136af \ No newline at end of file diff --git a/master/classncine_1_1_i_indexer__inherit__graph.png b/master/classncine_1_1_i_indexer__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..14329f7671333878c0583914a8d086adb7a09985 GIT binary patch literal 2816 zcmcImc{o&U8$Y2$@uFxfBZRU|)=9QukZlq|wrpcxUes8V>CG}921#nPSerza-fWq% zyz(N(ZtNmSS+g_4nE6g!@AX~Z_5J_d=Q`)Pp8Gk^bMEsz_wV<+ldUXGc(_Hl0RZ4J zGc~dS+idU-Jo&(^+h1+6oswB*ZGk= zlFxJCzOga80gnvd(GB(o1f-u8YQtFnz8$}YyA)r-74?RrZW~WeSu0<-u$%u4z~MyJ z`6aBsx)@pO=Wo8sPc)RXo0$IX&QQFA#TgQHF=vKT^`sh^wOD!Zl<15qv1Q|^w%UdQ zD(4>{-WxDKAEU>MouI1^4V=&SXt^z@+%!N4_5sJj27ozP-;SsYju#Un_n6?e_=Gi?K|`IE51Ep0U zrKF_HEi86ku-PBa!!A94bE9%8Hb+H81tq&R_9uF%D+$M}L;UR`;e9Z-5#?MPp{Aa>I8Bbs==9p8GaP4X zZOM!(-#(bjdu0RyAtOU3;Hg@)(@!TZ+{e4SGQBhs}7{I~7QRdd1iySz7b9IEC3eIpi=HqcM;UNz#p_^>=sU@$QtzO3w%czSOq&$f<;H zJM!6GRH|)cGRr zIy!@cgCsK9TXp}* zPMtb0EBleRL=wQ%c<98>Ai ziV9gtF1d#2bCYjd2-V{X(5>B7=MQ%u84=)!14{hBVngByUxEs2Si&n|jB&z+O05p7 zXL0fDn40~u9Bcv@>M?br)v|0A*Fxjg@iEyB(4z;&*P? z4Kwy;RDpY${PQjGG5v@1o4a9%_~B3%0&3EW8oZZ780!SowNEFmbcbnCwy!wfWLfQG66F{ZLsS z>$yRz@>LqD5PoEC<;uL`mie(2I21g?BG$S}DF1cy^^yI9!@V2aZQEutiAd`kdtvTC z`n5#=i~_nS1QNYddVTe!M0N@|A(DA6Go^rjXFY$`_Y^5Bi~Eny^Ne;$=pmMQt&Tbx zS>dqJhtz-qwZg*Ge}94eg2dlK*Dn7N6aifMVUh5!Hv{#5f}?aWLbaZSR@!|$LE zEBf*5lms?3p3%ay$$9Dj*SUQC>@gox9YEFm(UsHSx0rq zPcA9HlGY4nZI1hA6?2*#+xg#|w^udhqPZ=S$z#?aP1l8xA!X0Xh%xv?<^ zkjcx-%R$z_weoW(M%{ICnwY2w#454_NJB#t6B95ch%vk{e0gyQn92Ye;X* zQNi3^%!-dU)Yrda$MQ;YL`n3Z+i-d@O+ z$)KwN`DC&v_EJr4tz}?C^wzhPl^`A{nM48rU0vO%MiqeRDK0J!JI(###S8Gne1p2ZRDGY=`}T$0tO>|=fw5>CbJU_o@Ue*rn+uOx zS_~{KED9Aqk;30(WLyLFp4w%cDg=JLK}S>56qADhCGK3N=`l{uu*B8X)u_g#uiS~A zEassYZ*grc9MoY&Mbwt^pW|`H1--q99F#1smFvWbz~6rt7Z&d9?S;w74ZJIAZpQlg z`B_*{Xfzt-$whWHHZN7-{wQXll&68P3(`QT8H3o7ZenIS-RTUW#{C`@f`_E=hE?raN() zjd%7U)~3tV7tYHYUUheupfO + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::IInputEventHandler Member List
+
+
+ +

This is the complete list of members for ncine::IInputEventHandler, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + +
IInputEventHandler() (defined in ncine::IInputEventHandler)ncine::IInputEventHandlerinline
onFilesDropped(const DropEvent &event)ncine::IInputEventHandlerinlinevirtual
onJoyAxisMoved(const JoyAxisEvent &event)ncine::IInputEventHandlerinlinevirtual
onJoyButtonPressed(const JoyButtonEvent &event)ncine::IInputEventHandlerinlinevirtual
onJoyButtonReleased(const JoyButtonEvent &event)ncine::IInputEventHandlerinlinevirtual
onJoyConnected(const JoyConnectionEvent &event)ncine::IInputEventHandlerinlinevirtual
onJoyDisconnected(const JoyConnectionEvent &event)ncine::IInputEventHandlerinlinevirtual
onJoyHatMoved(const JoyHatEvent &event)ncine::IInputEventHandlerinlinevirtual
onJoyMappedAxisMoved(const JoyMappedAxisEvent &event)ncine::IInputEventHandlerinlinevirtual
onJoyMappedButtonPressed(const JoyMappedButtonEvent &event)ncine::IInputEventHandlerinlinevirtual
onJoyMappedButtonReleased(const JoyMappedButtonEvent &event)ncine::IInputEventHandlerinlinevirtual
onKeyPressed(const KeyboardEvent &event)ncine::IInputEventHandlerinlinevirtual
onKeyReleased(const KeyboardEvent &event)ncine::IInputEventHandlerinlinevirtual
onMouseButtonPressed(const MouseEvent &event)ncine::IInputEventHandlerinlinevirtual
onMouseButtonReleased(const MouseEvent &event)ncine::IInputEventHandlerinlinevirtual
onMouseMoved(const MouseState &state)ncine::IInputEventHandlerinlinevirtual
onPointerDown(const TouchEvent &event)ncine::IInputEventHandlerinlinevirtual
onPointerUp(const TouchEvent &event)ncine::IInputEventHandlerinlinevirtual
onQuitRequest()ncine::IInputEventHandlerinlinevirtual
onScrollInput(const ScrollEvent &event)ncine::IInputEventHandlerinlinevirtual
onTextInput(const TextInputEvent &event)ncine::IInputEventHandlerinlinevirtual
onTouchDown(const TouchEvent &event)ncine::IInputEventHandlerinlinevirtual
onTouchMove(const TouchEvent &event)ncine::IInputEventHandlerinlinevirtual
onTouchUp(const TouchEvent &event)ncine::IInputEventHandlerinlinevirtual
~IInputEventHandler() (defined in ncine::IInputEventHandler)ncine::IInputEventHandlerinlinevirtual
+ + + + diff --git a/master/classncine_1_1_i_input_event_handler.html b/master/classncine_1_1_i_input_event_handler.html new file mode 100644 index 0000000000..0b59203a2c --- /dev/null +++ b/master/classncine_1_1_i_input_event_handler.html @@ -0,0 +1,218 @@ + + + + + + + +nCine: ncine::IInputEventHandler Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::IInputEventHandler Class Reference
+
+
+ +

The interface class for handling input events from keyboard, screen touches, mouse, accelerometer and joystick. + More...

+ +

#include <IInputEventHandler.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+virtual void onKeyPressed (const KeyboardEvent &event)
 Callback function called every time a key is pressed.
 
+virtual void onKeyReleased (const KeyboardEvent &event)
 Callback function called every time a key is released.
 
+virtual void onTextInput (const TextInputEvent &event)
 Callback function called every time a text input is generated.
 
+virtual void onTouchDown (const TouchEvent &event)
 Callback function called every time the first screen touch is made.
 
+virtual void onTouchUp (const TouchEvent &event)
 Callback function called every time the last screen touch is released.
 
+virtual void onTouchMove (const TouchEvent &event)
 Callback function called every time a screen touch is moved.
 
+virtual void onPointerDown (const TouchEvent &event)
 Callback function called every time a screen touch different than the first one is made.
 
+virtual void onPointerUp (const TouchEvent &event)
 Callback function called every time a screen touch different than the last one is released.
 
+virtual void onMouseButtonPressed (const MouseEvent &event)
 Callback function called every time a mouse button is pressed.
 
+virtual void onMouseButtonReleased (const MouseEvent &event)
 Callback function called every time a mouse button is released.
 
+virtual void onMouseMoved (const MouseState &state)
 Callback function called every time the mouse is moved.
 
+virtual void onScrollInput (const ScrollEvent &event)
 Callback function called every time a scroll input occurs (mouse wheel, touchpad gesture, etc.)
 
+virtual void onJoyButtonPressed (const JoyButtonEvent &event)
 Callback function called every time a joystick button is pressed.
 
+virtual void onJoyButtonReleased (const JoyButtonEvent &event)
 Callback function called every time a joystick button is released.
 
+virtual void onJoyHatMoved (const JoyHatEvent &event)
 Callback function called every time a joystick hat is moved.
 
+virtual void onJoyAxisMoved (const JoyAxisEvent &event)
 Callback function called every time a joystick axis is moved.
 
+virtual void onJoyMappedButtonPressed (const JoyMappedButtonEvent &event)
 Callback function called every time a button of a joystick with mapping is pressed.
 
+virtual void onJoyMappedButtonReleased (const JoyMappedButtonEvent &event)
 Callback function called every time a button of a joystick with mapping is released.
 
+virtual void onJoyMappedAxisMoved (const JoyMappedAxisEvent &event)
 Callback function called every time an axis of a joystick with mapping is moved.
 
+virtual void onJoyConnected (const JoyConnectionEvent &event)
 Callback function called every time a joystick is connected.
 
+virtual void onJoyDisconnected (const JoyConnectionEvent &event)
 Callback function called every time a joystick is disconnected.
 
+virtual void onFilesDropped (const DropEvent &event)
 Callback function called every time some files or directories are dropped on the window.
 
virtual bool onQuitRequest ()
 Callback function called when the system sends a quit event, for example when the user clicks the window close button. More...
 
+

Detailed Description

+

The interface class for handling input events from keyboard, screen touches, mouse, accelerometer and joystick.

+

Member Function Documentation

+ +

◆ onQuitRequest()

+ +
+
+ + + + + +
+ + + + + + + +
virtual bool ncine::IInputEventHandler::onQuitRequest ()
+
+inlinevirtual
+
+ +

Callback function called when the system sends a quit event, for example when the user clicks the window close button.

+
Returns
True if the application should quit
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classncine_1_1_i_input_manager-members.html b/master/classncine_1_1_i_input_manager-members.html new file mode 100644 index 0000000000..382f93d845 --- /dev/null +++ b/master/classncine_1_1_i_input_manager-members.html @@ -0,0 +1,115 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::IInputManager Member List
+
+
+ +

This is the complete list of members for ncine::IInputManager, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addJoyMappingsFromFile(const char *filename)ncine::IInputManager
addJoyMappingsFromStrings(const char **mappingStrings)ncine::IInputManager
deadZoneNormalize(Vector2f &joyVector, float deadZoneValue) constncine::IInputManager
dropEvent_ (defined in ncine::IInputManager)ncine::IInputManagerprotectedstatic
handler()ncine::IInputManagerinlinestatic
IInputManager() (defined in ncine::IInputManager)ncine::IInputManagerinline
inputEventHandler_ (defined in ncine::IInputManager)ncine::IInputManagerprotectedstatic
isJoyMapped(int joyId) constncine::IInputManager
isJoyPresent(int joyId) const =0ncine::IInputManagerpure virtual
joyGuid(int joyId) const =0ncine::IInputManagerpure virtual
joyMappedState(int joyId) constncine::IInputManager
joyMapping_ (defined in ncine::IInputManager)ncine::IInputManagerprotectedstatic
joyName(int joyId) const =0ncine::IInputManagerpure virtual
joyNumAxes(int joyId) const =0ncine::IInputManagerpure virtual
joyNumButtons(int joyId) const =0ncine::IInputManagerpure virtual
joyNumHats(int joyId) const =0ncine::IInputManagerpure virtual
joystickState(int joyId) const =0ncine::IInputManagerpure virtual
keyboardState() const =0ncine::IInputManagerpure virtual
LeftStickDeadZone (defined in ncine::IInputManager)ncine::IInputManagerstatic
MaxAxisValue (defined in ncine::IInputManager)ncine::IInputManagerstatic
MaxNumJoysticks (defined in ncine::IInputManager)ncine::IInputManagerstatic
MouseCursorMode enum namencine::IInputManager
mouseCursorMode() constncine::IInputManagerinline
mouseCursorMode_ (defined in ncine::IInputManager)ncine::IInputManagerprotectedstatic
mouseState() const =0ncine::IInputManagerpure virtual
numJoyMappings() constncine::IInputManager
RightStickDeadZone (defined in ncine::IInputManager)ncine::IInputManagerstatic
setHandler(IInputEventHandler *inputEventHandler)ncine::IInputManagerstatic
setMouseCursorMode(MouseCursorMode mode)ncine::IInputManagervirtual
TriggerDeadZone (defined in ncine::IInputManager)ncine::IInputManagerstatic
~IInputManager() (defined in ncine::IInputManager)ncine::IInputManagerinlinevirtual
+ + + + diff --git a/master/classncine_1_1_i_input_manager.html b/master/classncine_1_1_i_input_manager.html new file mode 100644 index 0000000000..cf68596121 --- /dev/null +++ b/master/classncine_1_1_i_input_manager.html @@ -0,0 +1,290 @@ + + + + + + + +nCine: ncine::IInputManager Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

The interface class for parsing and dispatching input events. + More...

+ +

#include <IInputManager.h>

+
+Collaboration diagram for ncine::IInputManager:
+
+
Collaboration graph
+ + + + + +
[legend]
+ + + + +

+Public Types

enum class  MouseCursorMode { NORMAL +, HIDDEN +, DISABLED + }
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+virtual const MouseStatemouseState () const =0
 Returns current mouse state.
 
+virtual const KeyboardStatekeyboardState () const =0
 Returns current keyboard state.
 
+virtual bool isJoyPresent (int joyId) const =0
 Returns true if the specified joystick is connected.
 
+virtual const char * joyName (int joyId) const =0
 Returns the name of the specified joystick.
 
+virtual const char * joyGuid (int joyId) const =0
 Returns the GUID of the specified joystick.
 
+virtual int joyNumButtons (int joyId) const =0
 Returns the number of available buttons for the specified joystick.
 
+virtual int joyNumHats (int joyId) const =0
 Returns the number of available hats for the specified joystick.
 
+virtual int joyNumAxes (int joyId) const =0
 Returns the number of available axes for the specified joystick.
 
+virtual const JoystickStatejoystickState (int joyId) const =0
 Returns the state of the joystick.
 
bool isJoyMapped (int joyId) const
 Returns true if the joystick has a valid mapping configuration. More...
 
+const JoyMappedStatejoyMappedState (int joyId) const
 Returns the state of the mapped joystick.
 
+void deadZoneNormalize (Vector2f &joyVector, float deadZoneValue) const
 Modifies the joystick axis vector to account for a dead zone.
 
+void addJoyMappingsFromFile (const char *filename)
 Adds joystick mapping configurations from a text file.
 
+void addJoyMappingsFromStrings (const char **mappingStrings)
 Adds joystick mapping configurations from a strings array terminated by a nullptr
 
+unsigned int numJoyMappings () const
 Returns the current number of valid joystick mappings.
 
+MouseCursorMode mouseCursorMode () const
 Returns current mouse cursor mode.
 
+virtual void setMouseCursorMode (MouseCursorMode mode)
 Sets the mouse cursor mode.
 
+ + + + + + + +

+Static Public Member Functions

+static IInputEventHandlerhandler ()
 Gets the current input event handler for the manager.
 
+static void setHandler (IInputEventHandler *inputEventHandler)
 Sets the input event handler for the manager.
 
+ + + + + + + + + + + +

+Static Public Attributes

+static const int MaxNumJoysticks = 4
 
+static const short int MaxAxisValue = 32767
 
+static const float LeftStickDeadZone = 7849 / 32767.0f
 
+static const float RightStickDeadZone = 8689 / 32767.0f
 
+static const float TriggerDeadZone = 30 / 32767.0f
 
+ + + + + + + + + +

+Static Protected Attributes

+static IInputEventHandlerinputEventHandler_ = nullptr
 
+static MouseCursorMode mouseCursorMode_ = IInputManager::MouseCursorMode::NORMAL
 
+static JoyMapping joyMapping_
 
+static DropEvent dropEvent_
 
+

Detailed Description

+

The interface class for parsing and dispatching input events.

+

Member Enumeration Documentation

+ +

◆ MouseCursorMode

+ +
+
+ + + + + +
+ + + + +
enum ncine::IInputManager::MouseCursorMode
+
+strong
+
+ + + + +
Enumerator
NORMAL 

Mouse cursor behaves normally.

+
HIDDEN 

Mouse cursor is hidden but behaves normally.

+
DISABLED 

Mouse cursor is hidden and locked to the window.

+
Note
Mouse movement will be relative if supported (with no acceleration and no scaling)
+
+ +
+
+

Member Function Documentation

+ +

◆ isJoyMapped()

+ +
+
+ + + + + + + + +
bool ncine::IInputManager::isJoyMapped (int joyId) const
+
+ +

Returns true if the joystick has a valid mapping configuration.

+
Note
Joystick will stay mapped in theonJoyConnected() and onJoyDisconnected() callbacks
+ +
+
+
The documentation for this class was generated from the following files:
    +
  • include/ncine/IInputManager.h
  • +
  • src/android/AndroidInputManager.cpp
  • +
  • src/input/GlfwInputManager.cpp
  • +
  • src/input/IInputManager.cpp
  • +
  • src/input/Qt5InputManager.cpp
  • +
  • src/input/SdlInputManager.cpp
  • +
+
+ + + + diff --git a/master/classncine_1_1_i_input_manager__coll__graph.map b/master/classncine_1_1_i_input_manager__coll__graph.map new file mode 100644 index 0000000000..56f3491f9f --- /dev/null +++ b/master/classncine_1_1_i_input_manager__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/master/classncine_1_1_i_input_manager__coll__graph.md5 b/master/classncine_1_1_i_input_manager__coll__graph.md5 new file mode 100644 index 0000000000..f9417c45e7 --- /dev/null +++ b/master/classncine_1_1_i_input_manager__coll__graph.md5 @@ -0,0 +1 @@ +74f97ff0d50d95d26a98989796d7fd86 \ No newline at end of file diff --git a/master/classncine_1_1_i_input_manager__coll__graph.png b/master/classncine_1_1_i_input_manager__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..bff8a1a1f6290c5854e44f826e4191730a0e810b GIT binary patch literal 7712 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 b52#*rO<(bXwQ<3bFGN8`MY>$lB=G+Lp|1DK literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_i_logger-members.html b/master/classncine_1_1_i_logger-members.html new file mode 100644 index 0000000000..3299d19cd2 --- /dev/null +++ b/master/classncine_1_1_i_logger-members.html @@ -0,0 +1,91 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::ILogger Member List
+
+
+ +

This is the complete list of members for ncine::ILogger, including all inherited members.

+ + + + + + + + +
clearLogString()=0ncine::ILoggerpure virtual
LogLevel enum namencine::ILogger
logString() const =0ncine::ILoggerpure virtual
logStringCapacity() const =0ncine::ILoggerpure virtual
logStringLength() const =0ncine::ILoggerpure virtual
write(LogLevel level, const char *fmt,...)=0ncine::ILoggerpure virtual
~ILogger()=0 (defined in ncine::ILogger)ncine::ILoggerinlinepure virtual
+ + + + diff --git a/master/classncine_1_1_i_logger.html b/master/classncine_1_1_i_logger.html new file mode 100644 index 0000000000..06917753dc --- /dev/null +++ b/master/classncine_1_1_i_logger.html @@ -0,0 +1,145 @@ + + + + + + + +nCine: ncine::ILogger Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::ILogger Class Referenceabstract
+
+
+ +

The interface class for loggers. + More...

+ +

#include <ILogger.h>

+
+Inheritance diagram for ncine::ILogger:
+
+
Inheritance graph
+ + + + +
[legend]
+ + + + + +

+Public Types

enum class  LogLevel {
+  UNKNOWN = -1 +, OFF = 0 +, VERBOSE +, DEBUG +,
+  INFO +, WARN +, ERROR +, FATAL +
+ }
 Log levels, from less to more severe.
 
+ + + + + + + + + + + + + + + + +

+Public Member Functions

+virtual unsigned int write (LogLevel level, const char *fmt,...)=0
 Logs a message with a specified level of severity.
 
+virtual const char * logString () const =0
 Returns the log string with all the recorded log entries.
 
+virtual void clearLogString ()=0
 Clears the entries from the log string.
 
+virtual unsigned int logStringLength () const =0
 Returns the length of the log string.
 
+virtual unsigned int logStringCapacity () const =0
 Returns the capacity of the log string.
 
+

Detailed Description

+

The interface class for loggers.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classncine_1_1_i_logger__inherit__graph.map b/master/classncine_1_1_i_logger__inherit__graph.map new file mode 100644 index 0000000000..b049fa553d --- /dev/null +++ b/master/classncine_1_1_i_logger__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classncine_1_1_i_logger__inherit__graph.md5 b/master/classncine_1_1_i_logger__inherit__graph.md5 new file mode 100644 index 0000000000..342de7a581 --- /dev/null +++ b/master/classncine_1_1_i_logger__inherit__graph.md5 @@ -0,0 +1 @@ +beae96c4aa4032d7c3196d3217b730f0 \ No newline at end of file diff --git a/master/classncine_1_1_i_logger__inherit__graph.png b/master/classncine_1_1_i_logger__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..44260c216421f0fe75ac52334dd1aaba4f6e8bdc GIT binary patch literal 2972 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 ZKqb-m*?s|C4V2q}(G@d;N + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::ITextureSaver Member List
+
+
+ +

This is the complete list of members for ncine::ITextureSaver, including all inherited members.

+ + + + + + + + +
bpp(const Format format) (defined in ncine::ITextureSaver)ncine::ITextureSaver
dataSize(const Properties &properties) (defined in ncine::ITextureSaver)ncine::ITextureSaver
flipPixels(const Properties &properties, unsigned char *dest) (defined in ncine::ITextureSaver)ncine::ITextureSaver
Format enum name (defined in ncine::ITextureSaver)ncine::ITextureSaver
saveToFile(const Properties &properties, const char *filename)=0 (defined in ncine::ITextureSaver)ncine::ITextureSaverpure virtual
saveToFile(const Properties &properties, nctl::UniquePtr< IFile > fileHandle)=0 (defined in ncine::ITextureSaver)ncine::ITextureSaverpure virtual
~ITextureSaver() (defined in ncine::ITextureSaver)ncine::ITextureSavervirtual
+ + + + diff --git a/master/classncine_1_1_i_texture_saver.html b/master/classncine_1_1_i_texture_saver.html new file mode 100644 index 0000000000..f735654175 --- /dev/null +++ b/master/classncine_1_1_i_texture_saver.html @@ -0,0 +1,139 @@ + + + + + + + +nCine: ncine::ITextureSaver Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::ITextureSaver Class Referenceabstract
+
+
+ +

Texture saver interface class. + More...

+ +

#include <ITextureSaver.h>

+
+Inheritance diagram for ncine::ITextureSaver:
+
+
Inheritance graph
+ + + + + +
[legend]
+ + + + +

+Classes

struct  Properties
 
+ + + +

+Public Types

enum class  Format { RGB8 +, RGBA8 +, RGB_FLOAT + }
 
+ + + + + + + + + + + +

+Public Member Functions

+virtual bool saveToFile (const Properties &properties, const char *filename)=0
 
+virtual bool saveToFile (const Properties &properties, nctl::UniquePtr< IFile > fileHandle)=0
 
+unsigned int bpp (const Format format)
 
+unsigned int dataSize (const Properties &properties)
 
+void flipPixels (const Properties &properties, unsigned char *dest)
 
+

Detailed Description

+

Texture saver interface class.

+

The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classncine_1_1_i_texture_saver__inherit__graph.map b/master/classncine_1_1_i_texture_saver__inherit__graph.map new file mode 100644 index 0000000000..8ebb2261c2 --- /dev/null +++ b/master/classncine_1_1_i_texture_saver__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/master/classncine_1_1_i_texture_saver__inherit__graph.md5 b/master/classncine_1_1_i_texture_saver__inherit__graph.md5 new file mode 100644 index 0000000000..2e82aba441 --- /dev/null +++ b/master/classncine_1_1_i_texture_saver__inherit__graph.md5 @@ -0,0 +1 @@ +f2de2c41451bac48ae0f27428812f231 \ No newline at end of file diff --git a/master/classncine_1_1_i_texture_saver__inherit__graph.png b/master/classncine_1_1_i_texture_saver__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..24907fe931dc9ab498cb10c7b58c71c1484f8a20 GIT binary patch literal 7083 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 + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::IThreadCommand Member List
+
+
+ +

This is the complete list of members for ncine::IThreadCommand, including all inherited members.

+ + + +
execute()=0ncine::IThreadCommandpure virtual
~IThreadCommand() (defined in ncine::IThreadCommand)ncine::IThreadCommandinlinevirtual
+ + + + diff --git a/master/classncine_1_1_i_thread_command.html b/master/classncine_1_1_i_thread_command.html new file mode 100644 index 0000000000..d8579e9b49 --- /dev/null +++ b/master/classncine_1_1_i_thread_command.html @@ -0,0 +1,102 @@ + + + + + + + +nCine: ncine::IThreadCommand Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::IThreadCommand Class Referenceabstract
+
+
+ +

Thread pool command interface. + More...

+ +

#include <IThreadCommand.h>

+ + + + + +

+Public Member Functions

+virtual void execute ()=0
 Executes the command on a worker thread.
 
+

Detailed Description

+

Thread pool command interface.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classncine_1_1_i_thread_pool-members.html b/master/classncine_1_1_i_thread_pool-members.html new file mode 100644 index 0000000000..c9cd358c75 --- /dev/null +++ b/master/classncine_1_1_i_thread_pool-members.html @@ -0,0 +1,86 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::IThreadPool Member List
+
+
+ +

This is the complete list of members for ncine::IThreadPool, including all inherited members.

+ + + +
enqueueCommand(nctl::UniquePtr< IThreadCommand > threadCommand)=0ncine::IThreadPoolpure virtual
~IThreadPool()=0 (defined in ncine::IThreadPool)ncine::IThreadPoolinlinepure virtual
+ + + + diff --git a/master/classncine_1_1_i_thread_pool.html b/master/classncine_1_1_i_thread_pool.html new file mode 100644 index 0000000000..8eed78dd08 --- /dev/null +++ b/master/classncine_1_1_i_thread_pool.html @@ -0,0 +1,111 @@ + + + + + + + +nCine: ncine::IThreadPool Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::IThreadPool Class Referenceabstract
+
+
+ +

Thread pool interface class. + More...

+ +

#include <IThreadPool.h>

+
+Inheritance diagram for ncine::IThreadPool:
+
+
Inheritance graph
+ + + + +
[legend]
+ + + + + +

+Public Member Functions

+virtual void enqueueCommand (nctl::UniquePtr< IThreadCommand > threadCommand)=0
 Enqueues a command request for a worker thread.
 
+

Detailed Description

+

Thread pool interface class.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classncine_1_1_i_thread_pool__inherit__graph.map b/master/classncine_1_1_i_thread_pool__inherit__graph.map new file mode 100644 index 0000000000..f879cb0bf3 --- /dev/null +++ b/master/classncine_1_1_i_thread_pool__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classncine_1_1_i_thread_pool__inherit__graph.md5 b/master/classncine_1_1_i_thread_pool__inherit__graph.md5 new file mode 100644 index 0000000000..b29ff1ffd0 --- /dev/null +++ b/master/classncine_1_1_i_thread_pool__inherit__graph.md5 @@ -0,0 +1 @@ +6677b9027e11a240dcdb38e2b7af151c \ No newline at end of file diff --git a/master/classncine_1_1_i_thread_pool__inherit__graph.png b/master/classncine_1_1_i_thread_pool__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..932cd885077c2a630c8b29d89ed4b69e69fe14b8 GIT binary patch literal 3779 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 Sm%zVL;BT#ah*Aw?$bSG^EqEOO literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_joy_axis_event-members.html b/master/classncine_1_1_joy_axis_event-members.html new file mode 100644 index 0000000000..fb568bb33d --- /dev/null +++ b/master/classncine_1_1_joy_axis_event-members.html @@ -0,0 +1,88 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::JoyAxisEvent Member List
+
+
+ +

This is the complete list of members for ncine::JoyAxisEvent, including all inherited members.

+ + + + + +
axisIdncine::JoyAxisEvent
joyIdncine::JoyAxisEvent
normValuencine::JoyAxisEvent
valuencine::JoyAxisEvent
+ + + + diff --git a/master/classncine_1_1_joy_axis_event.html b/master/classncine_1_1_joy_axis_event.html new file mode 100644 index 0000000000..d449e828a1 --- /dev/null +++ b/master/classncine_1_1_joy_axis_event.html @@ -0,0 +1,114 @@ + + + + + + + +nCine: ncine::JoyAxisEvent Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::JoyAxisEvent Class Reference
+
+
+ +

Information about a joystick axis event. + More...

+ +

#include <InputEvents.h>

+ + + + + + + + + + + + + + +

+Public Attributes

+int joyId
 Joystick id.
 
+int axisId
 Axis id.
 
+short int value
 Axis value between -32768 and 32767.
 
+float normValue
 Axis value normalized between -1.0f and 1.0f.
 
+

Detailed Description

+

Information about a joystick axis event.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classncine_1_1_joy_button_event-members.html b/master/classncine_1_1_joy_button_event-members.html new file mode 100644 index 0000000000..f6cab5c996 --- /dev/null +++ b/master/classncine_1_1_joy_button_event-members.html @@ -0,0 +1,86 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::JoyButtonEvent Member List
+
+
+ +

This is the complete list of members for ncine::JoyButtonEvent, including all inherited members.

+ + + +
buttonIdncine::JoyButtonEvent
joyIdncine::JoyButtonEvent
+ + + + diff --git a/master/classncine_1_1_joy_button_event.html b/master/classncine_1_1_joy_button_event.html new file mode 100644 index 0000000000..101d364add --- /dev/null +++ b/master/classncine_1_1_joy_button_event.html @@ -0,0 +1,106 @@ + + + + + + + +nCine: ncine::JoyButtonEvent Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::JoyButtonEvent Class Reference
+
+
+ +

Information about a joystick button event. + More...

+ +

#include <InputEvents.h>

+ + + + + + + + +

+Public Attributes

+int joyId
 Joystick id.
 
+int buttonId
 Button id.
 
+

Detailed Description

+

Information about a joystick button event.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classncine_1_1_joy_connection_event-members.html b/master/classncine_1_1_joy_connection_event-members.html new file mode 100644 index 0000000000..a44a0a48d4 --- /dev/null +++ b/master/classncine_1_1_joy_connection_event-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::JoyConnectionEvent Member List
+
+
+ +

This is the complete list of members for ncine::JoyConnectionEvent, including all inherited members.

+ + +
joyIdncine::JoyConnectionEvent
+ + + + diff --git a/master/classncine_1_1_joy_connection_event.html b/master/classncine_1_1_joy_connection_event.html new file mode 100644 index 0000000000..49cea58844 --- /dev/null +++ b/master/classncine_1_1_joy_connection_event.html @@ -0,0 +1,102 @@ + + + + + + + +nCine: ncine::JoyConnectionEvent Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::JoyConnectionEvent Class Reference
+
+
+ +

Information about a joystick connection event. + More...

+ +

#include <InputEvents.h>

+ + + + + +

+Public Attributes

+int joyId
 Joystick id.
 
+

Detailed Description

+

Information about a joystick connection event.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classncine_1_1_joy_hat_event-members.html b/master/classncine_1_1_joy_hat_event-members.html new file mode 100644 index 0000000000..94a2732b37 --- /dev/null +++ b/master/classncine_1_1_joy_hat_event-members.html @@ -0,0 +1,87 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::JoyHatEvent Member List
+
+
+ +

This is the complete list of members for ncine::JoyHatEvent, including all inherited members.

+ + + + +
hatIdncine::JoyHatEvent
hatStatencine::JoyHatEvent
joyIdncine::JoyHatEvent
+ + + + diff --git a/master/classncine_1_1_joy_hat_event.html b/master/classncine_1_1_joy_hat_event.html new file mode 100644 index 0000000000..8b25a95bc9 --- /dev/null +++ b/master/classncine_1_1_joy_hat_event.html @@ -0,0 +1,110 @@ + + + + + + + +nCine: ncine::JoyHatEvent Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::JoyHatEvent Class Reference
+
+
+ +

Information about a joystick hat event. + More...

+ +

#include <InputEvents.h>

+ + + + + + + + + + + +

+Public Attributes

+int joyId
 Joystick id.
 
+int hatId
 Hat id.
 
+unsigned char hatState
 Hat position state.
 
+

Detailed Description

+

Information about a joystick hat event.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classncine_1_1_joy_mapped_axis_event-members.html b/master/classncine_1_1_joy_mapped_axis_event-members.html new file mode 100644 index 0000000000..714ea5cc5a --- /dev/null +++ b/master/classncine_1_1_joy_mapped_axis_event-members.html @@ -0,0 +1,87 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::JoyMappedAxisEvent Member List
+
+
+ +

This is the complete list of members for ncine::JoyMappedAxisEvent, including all inherited members.

+ + + + +
axisNamencine::JoyMappedAxisEvent
joyIdncine::JoyMappedAxisEvent
valuencine::JoyMappedAxisEvent
+ + + + diff --git a/master/classncine_1_1_joy_mapped_axis_event.html b/master/classncine_1_1_joy_mapped_axis_event.html new file mode 100644 index 0000000000..ad44241b48 --- /dev/null +++ b/master/classncine_1_1_joy_mapped_axis_event.html @@ -0,0 +1,110 @@ + + + + + + + +nCine: ncine::JoyMappedAxisEvent Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::JoyMappedAxisEvent Class Reference
+
+
+ +

Information about a joystick mapped axis event. + More...

+ +

#include <InputEvents.h>

+ + + + + + + + + + + +

+Public Attributes

+int joyId
 Joystick id.
 
+AxisName axisName
 Axis name.
 
+float value
 Axis value between its minimum and maximum.
 
+

Detailed Description

+

Information about a joystick mapped axis event.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classncine_1_1_joy_mapped_button_event-members.html b/master/classncine_1_1_joy_mapped_button_event-members.html new file mode 100644 index 0000000000..011d4459e4 --- /dev/null +++ b/master/classncine_1_1_joy_mapped_button_event-members.html @@ -0,0 +1,86 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::JoyMappedButtonEvent Member List
+
+
+ +

This is the complete list of members for ncine::JoyMappedButtonEvent, including all inherited members.

+ + + +
buttonNamencine::JoyMappedButtonEvent
joyIdncine::JoyMappedButtonEvent
+ + + + diff --git a/master/classncine_1_1_joy_mapped_button_event.html b/master/classncine_1_1_joy_mapped_button_event.html new file mode 100644 index 0000000000..9545906e3f --- /dev/null +++ b/master/classncine_1_1_joy_mapped_button_event.html @@ -0,0 +1,106 @@ + + + + + + + +nCine: ncine::JoyMappedButtonEvent Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::JoyMappedButtonEvent Class Reference
+
+
+ +

Information about a joystick mapped button event. + More...

+ +

#include <InputEvents.h>

+ + + + + + + + +

+Public Attributes

+int joyId
 Joystick id.
 
+ButtonName buttonName
 Button name.
 
+

Detailed Description

+

Information about a joystick mapped button event.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classncine_1_1_joy_mapped_state-members.html b/master/classncine_1_1_joy_mapped_state-members.html new file mode 100644 index 0000000000..d519f6d397 --- /dev/null +++ b/master/classncine_1_1_joy_mapped_state-members.html @@ -0,0 +1,89 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::JoyMappedState Member List
+
+
+ +

This is the complete list of members for ncine::JoyMappedState, including all inherited members.

+ + + + + + +
axisValue(AxisName name) const =0ncine::JoyMappedStatepure virtual
isButtonPressed(ButtonName name) const =0ncine::JoyMappedStatepure virtual
NumAxesncine::JoyMappedStatestatic
NumButtonsncine::JoyMappedStatestatic
~JoyMappedState() (defined in ncine::JoyMappedState)ncine::JoyMappedStateinlinevirtual
+ + + + diff --git a/master/classncine_1_1_joy_mapped_state.html b/master/classncine_1_1_joy_mapped_state.html new file mode 100644 index 0000000000..9c92a688da --- /dev/null +++ b/master/classncine_1_1_joy_mapped_state.html @@ -0,0 +1,118 @@ + + + + + + + +nCine: ncine::JoyMappedState Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::JoyMappedState Class Referenceabstract
+
+
+ +

Information about the mapped joystick state. + More...

+ +

#include <InputEvents.h>

+ + + + + + + + +

+Public Member Functions

+virtual bool isButtonPressed (ButtonName name) const =0
 Returns 'true' if the specified button is pressed.
 
+virtual float axisValue (AxisName name) const =0
 Returns the value of the specified axis.
 
+ + + + + + + +

+Static Public Attributes

+static const unsigned int NumButtons = 20
 The number of joystick buttons with a mapping name.
 
+static const unsigned int NumAxes = 6
 The number of joystick axes with a mapping name.
 
+

Detailed Description

+

Information about the mapped joystick state.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classncine_1_1_joystick_state-members.html b/master/classncine_1_1_joystick_state-members.html new file mode 100644 index 0000000000..0e9d92eadf --- /dev/null +++ b/master/classncine_1_1_joystick_state-members.html @@ -0,0 +1,88 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::JoystickState Member List
+
+
+ +

This is the complete list of members for ncine::JoystickState, including all inherited members.

+ + + + + +
axisNormValue(int axisId) const =0ncine::JoystickStatepure virtual
axisValue(int axisId) const =0ncine::JoystickStatepure virtual
hatState(int hatId) const =0ncine::JoystickStatepure virtual
isButtonPressed(int buttonId) const =0ncine::JoystickStatepure virtual
+ + + + diff --git a/master/classncine_1_1_joystick_state.html b/master/classncine_1_1_joystick_state.html new file mode 100644 index 0000000000..352e177fa4 --- /dev/null +++ b/master/classncine_1_1_joystick_state.html @@ -0,0 +1,114 @@ + + + + + + + +nCine: ncine::JoystickState Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::JoystickState Class Referenceabstract
+
+
+ +

Information about the joystick state. + More...

+ +

#include <InputEvents.h>

+ + + + + + + + + + + + + + +

+Public Member Functions

+virtual bool isButtonPressed (int buttonId) const =0
 Returns 'true' if the specified button is pressed.
 
+virtual unsigned char hatState (int hatId) const =0
 Returns the state of the specified hat.
 
+virtual short int axisValue (int axisId) const =0
 Returns a value between -32768 and 32767 for a joystick axis.
 
+virtual float axisNormValue (int axisId) const =0
 Returns a normalized value between -1.0 and 1.0 for a joystick axis.
 
+

Detailed Description

+

Information about the joystick state.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classncine_1_1_keyboard_event-members.html b/master/classncine_1_1_keyboard_event-members.html new file mode 100644 index 0000000000..80b3213852 --- /dev/null +++ b/master/classncine_1_1_keyboard_event-members.html @@ -0,0 +1,88 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::KeyboardEvent Member List
+
+
+ +

This is the complete list of members for ncine::KeyboardEvent, including all inherited members.

+ + + + + +
KeyboardEvent() (defined in ncine::KeyboardEvent)ncine::KeyboardEventinline
modncine::KeyboardEvent
scancodencine::KeyboardEvent
symncine::KeyboardEvent
+ + + + diff --git a/master/classncine_1_1_keyboard_event.html b/master/classncine_1_1_keyboard_event.html new file mode 100644 index 0000000000..0a9a5e7eed --- /dev/null +++ b/master/classncine_1_1_keyboard_event.html @@ -0,0 +1,110 @@ + + + + + + + +nCine: ncine::KeyboardEvent Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::KeyboardEvent Class Reference
+
+
+ +

Information about a keyboard event. + More...

+ +

#include <InputEvents.h>

+ + + + + + + + + + + +

+Public Attributes

+int scancode
 Key scan code.
 
+KeySym sym
 Key symbol code.
 
+int mod
 Key modifiers mask.
 
+

Detailed Description

+

Information about a keyboard event.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classncine_1_1_keyboard_state-members.html b/master/classncine_1_1_keyboard_state-members.html new file mode 100644 index 0000000000..acebcb9e53 --- /dev/null +++ b/master/classncine_1_1_keyboard_state-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::KeyboardState Member List
+
+
+ +

This is the complete list of members for ncine::KeyboardState, including all inherited members.

+ + +
isKeyDown(KeySym key) const =0ncine::KeyboardStatepure virtual
+ + + + diff --git a/master/classncine_1_1_keyboard_state.html b/master/classncine_1_1_keyboard_state.html new file mode 100644 index 0000000000..dfd373ceff --- /dev/null +++ b/master/classncine_1_1_keyboard_state.html @@ -0,0 +1,102 @@ + + + + + + + +nCine: ncine::KeyboardState Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::KeyboardState Class Referenceabstract
+
+
+ +

Information about the keyboard state. + More...

+ +

#include <InputEvents.h>

+ + + + + +

+Public Member Functions

+virtual bool isKeyDown (KeySym key) const =0
 Returns true if the specified key is down.
 
+

Detailed Description

+

Information about the keyboard state.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classncine_1_1_lua_color_utils-members.html b/master/classncine_1_1_lua_color_utils-members.html new file mode 100644 index 0000000000..342e289d39 --- /dev/null +++ b/master/classncine_1_1_lua_color_utils-members.html @@ -0,0 +1,92 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::LuaColorUtils Member List
+
+
+ +

This is the complete list of members for ncine::LuaColorUtils, including all inherited members.

+ + + + + + + + + +
push(lua_State *L, const Colorf &color) (defined in ncine::LuaColorUtils)ncine::LuaColorUtilsstatic
pushField(lua_State *L, const char *name, const Colorf &color) (defined in ncine::LuaColorUtils)ncine::LuaColorUtilsstatic
retrieve(lua_State *L, int index, int &newIndex) (defined in ncine::LuaColorUtils)ncine::LuaColorUtilsstatic
retrieveArray(lua_State *L, int index) (defined in ncine::LuaColorUtils)ncine::LuaColorUtilsstatic
retrieveArrayField(lua_State *L, int index, const char *name) (defined in ncine::LuaColorUtils)ncine::LuaColorUtilsstatic
retrieveParams(lua_State *L, int index) (defined in ncine::LuaColorUtils)ncine::LuaColorUtilsstatic
retrieveTable(lua_State *L, int index) (defined in ncine::LuaColorUtils)ncine::LuaColorUtilsstatic
retrieveTableField(lua_State *L, int index, const char *name) (defined in ncine::LuaColorUtils)ncine::LuaColorUtilsstatic
+ + + + diff --git a/master/classncine_1_1_lua_color_utils.html b/master/classncine_1_1_lua_color_utils.html new file mode 100644 index 0000000000..80cb3caeb1 --- /dev/null +++ b/master/classncine_1_1_lua_color_utils.html @@ -0,0 +1,123 @@ + + + + + + + +nCine: ncine::LuaColorUtils Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::LuaColorUtils Class Reference
+
+
+ +

Lua utilities for the Color class. + More...

+ +

#include <LuaColorUtils.h>

+ + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

+static void push (lua_State *L, const Colorf &color)
 
+static void pushField (lua_State *L, const char *name, const Colorf &color)
 
+static Colorf retrieve (lua_State *L, int index, int &newIndex)
 
+static Colorf retrieveTable (lua_State *L, int index)
 
+static Colorf retrieveArray (lua_State *L, int index)
 
+static Colorf retrieveParams (lua_State *L, int index)
 
+static Colorf retrieveTableField (lua_State *L, int index, const char *name)
 
+static Colorf retrieveArrayField (lua_State *L, int index, const char *name)
 
+

Detailed Description

+

Lua utilities for the Color class.

+

The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classncine_1_1_lua_i_app_event_handler-members.html b/master/classncine_1_1_lua_i_app_event_handler-members.html new file mode 100644 index 0000000000..92bb6f9d38 --- /dev/null +++ b/master/classncine_1_1_lua_i_app_event_handler-members.html @@ -0,0 +1,95 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::LuaIAppEventHandler Member List
+
+
+ +

This is the complete list of members for ncine::LuaIAppEventHandler, including all inherited members.

+ + + + + + + + + + + + +
onChangeScalingFactor(lua_State *L, float factor) (defined in ncine::LuaIAppEventHandler)ncine::LuaIAppEventHandlerstatic
onDrawViewport(lua_State *L, Viewport &viewport) (defined in ncine::LuaIAppEventHandler)ncine::LuaIAppEventHandlerstatic
onFrameEnd(lua_State *L) (defined in ncine::LuaIAppEventHandler)ncine::LuaIAppEventHandlerstatic
onFrameStart(lua_State *L) (defined in ncine::LuaIAppEventHandler)ncine::LuaIAppEventHandlerstatic
onInit(lua_State *L) (defined in ncine::LuaIAppEventHandler)ncine::LuaIAppEventHandlerstatic
onPostUpdate(lua_State *L) (defined in ncine::LuaIAppEventHandler)ncine::LuaIAppEventHandlerstatic
onPreInit(lua_State *L, AppConfiguration &config) (defined in ncine::LuaIAppEventHandler)ncine::LuaIAppEventHandlerstatic
onResizeWindow(lua_State *L, int width, int height) (defined in ncine::LuaIAppEventHandler)ncine::LuaIAppEventHandlerstatic
onResume(lua_State *L) (defined in ncine::LuaIAppEventHandler)ncine::LuaIAppEventHandlerstatic
onShutdown(lua_State *L) (defined in ncine::LuaIAppEventHandler)ncine::LuaIAppEventHandlerstatic
onSuspend(lua_State *L) (defined in ncine::LuaIAppEventHandler)ncine::LuaIAppEventHandlerstatic
+ + + + diff --git a/master/classncine_1_1_lua_i_app_event_handler.html b/master/classncine_1_1_lua_i_app_event_handler.html new file mode 100644 index 0000000000..b6224b300d --- /dev/null +++ b/master/classncine_1_1_lua_i_app_event_handler.html @@ -0,0 +1,132 @@ + + + + + + + +nCine: ncine::LuaIAppEventHandler Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::LuaIAppEventHandler Class Reference
+
+
+ +

Wrapper around the IAppEventHandler class. + More...

+ +

#include <LuaIAppEventHandler.h>

+ + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

+static void onPreInit (lua_State *L, AppConfiguration &config)
 
+static void onInit (lua_State *L)
 
+static void onFrameStart (lua_State *L)
 
+static void onPostUpdate (lua_State *L)
 
+static void onDrawViewport (lua_State *L, Viewport &viewport)
 
+static void onFrameEnd (lua_State *L)
 
+static void onResizeWindow (lua_State *L, int width, int height)
 
+static void onChangeScalingFactor (lua_State *L, float factor)
 
+static void onShutdown (lua_State *L)
 
+static void onSuspend (lua_State *L)
 
+static void onResume (lua_State *L)
 
+

Detailed Description

+

Wrapper around the IAppEventHandler class.

+

The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classncine_1_1_lua_i_input_event_handler-members.html b/master/classncine_1_1_lua_i_input_event_handler-members.html new file mode 100644 index 0000000000..939dc4e722 --- /dev/null +++ b/master/classncine_1_1_lua_i_input_event_handler-members.html @@ -0,0 +1,106 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::LuaIInputEventHandler Member List
+
+
+ +

This is the complete list of members for ncine::LuaIInputEventHandler, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + +
onJoyAxisMoved(lua_State *L, const JoyAxisEvent &event) (defined in ncine::LuaIInputEventHandler)ncine::LuaIInputEventHandlerstatic
onJoyButtonPressed(lua_State *L, const JoyButtonEvent &event) (defined in ncine::LuaIInputEventHandler)ncine::LuaIInputEventHandlerstatic
onJoyButtonReleased(lua_State *L, const JoyButtonEvent &event) (defined in ncine::LuaIInputEventHandler)ncine::LuaIInputEventHandlerstatic
onJoyConnected(lua_State *L, const JoyConnectionEvent &event) (defined in ncine::LuaIInputEventHandler)ncine::LuaIInputEventHandlerstatic
onJoyDisconnected(lua_State *L, const JoyConnectionEvent &event) (defined in ncine::LuaIInputEventHandler)ncine::LuaIInputEventHandlerstatic
onJoyHatMoved(lua_State *L, const JoyHatEvent &event) (defined in ncine::LuaIInputEventHandler)ncine::LuaIInputEventHandlerstatic
onJoyMappedAxisMoved(lua_State *L, const JoyMappedAxisEvent &event) (defined in ncine::LuaIInputEventHandler)ncine::LuaIInputEventHandlerstatic
onJoyMappedButtonPressed(lua_State *L, const JoyMappedButtonEvent &event) (defined in ncine::LuaIInputEventHandler)ncine::LuaIInputEventHandlerstatic
onJoyMappedButtonReleased(lua_State *L, const JoyMappedButtonEvent &event) (defined in ncine::LuaIInputEventHandler)ncine::LuaIInputEventHandlerstatic
onKeyPressed(lua_State *L, const KeyboardEvent &event) (defined in ncine::LuaIInputEventHandler)ncine::LuaIInputEventHandlerstatic
onKeyReleased(lua_State *L, const KeyboardEvent &event) (defined in ncine::LuaIInputEventHandler)ncine::LuaIInputEventHandlerstatic
onMouseButtonPressed(lua_State *L, const MouseEvent &event) (defined in ncine::LuaIInputEventHandler)ncine::LuaIInputEventHandlerstatic
onMouseButtonReleased(lua_State *L, const MouseEvent &event) (defined in ncine::LuaIInputEventHandler)ncine::LuaIInputEventHandlerstatic
onMouseMoved(lua_State *L, const MouseState &state) (defined in ncine::LuaIInputEventHandler)ncine::LuaIInputEventHandlerstatic
onPointerDown(lua_State *L, const TouchEvent &event) (defined in ncine::LuaIInputEventHandler)ncine::LuaIInputEventHandlerstatic
onPointerUp(lua_State *L, const TouchEvent &event) (defined in ncine::LuaIInputEventHandler)ncine::LuaIInputEventHandlerstatic
onQuitRequest(lua_State *L) (defined in ncine::LuaIInputEventHandler)ncine::LuaIInputEventHandlerstatic
onScrollInput(lua_State *L, const ScrollEvent &event) (defined in ncine::LuaIInputEventHandler)ncine::LuaIInputEventHandlerstatic
onTextInput(lua_State *L, const TextInputEvent &event) (defined in ncine::LuaIInputEventHandler)ncine::LuaIInputEventHandlerstatic
onTouchDown(lua_State *L, const TouchEvent &event) (defined in ncine::LuaIInputEventHandler)ncine::LuaIInputEventHandlerstatic
onTouchMove(lua_State *L, const TouchEvent &event) (defined in ncine::LuaIInputEventHandler)ncine::LuaIInputEventHandlerstatic
onTouchUp(lua_State *L, const TouchEvent &event) (defined in ncine::LuaIInputEventHandler)ncine::LuaIInputEventHandlerstatic
+ + + + diff --git a/master/classncine_1_1_lua_i_input_event_handler.html b/master/classncine_1_1_lua_i_input_event_handler.html new file mode 100644 index 0000000000..39d610c313 --- /dev/null +++ b/master/classncine_1_1_lua_i_input_event_handler.html @@ -0,0 +1,165 @@ + + + + + + + +nCine: ncine::LuaIInputEventHandler Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::LuaIInputEventHandler Class Reference
+
+
+ +

Wrapper around the IInputEventHandler class. + More...

+ +

#include <LuaIInputEventHandler.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

+static void onKeyPressed (lua_State *L, const KeyboardEvent &event)
 
+static void onKeyReleased (lua_State *L, const KeyboardEvent &event)
 
+static void onTextInput (lua_State *L, const TextInputEvent &event)
 
+static void onTouchDown (lua_State *L, const TouchEvent &event)
 
+static void onTouchUp (lua_State *L, const TouchEvent &event)
 
+static void onTouchMove (lua_State *L, const TouchEvent &event)
 
+static void onPointerDown (lua_State *L, const TouchEvent &event)
 
+static void onPointerUp (lua_State *L, const TouchEvent &event)
 
+static void onMouseButtonPressed (lua_State *L, const MouseEvent &event)
 
+static void onMouseButtonReleased (lua_State *L, const MouseEvent &event)
 
+static void onMouseMoved (lua_State *L, const MouseState &state)
 
+static void onScrollInput (lua_State *L, const ScrollEvent &event)
 
+static void onJoyButtonPressed (lua_State *L, const JoyButtonEvent &event)
 
+static void onJoyButtonReleased (lua_State *L, const JoyButtonEvent &event)
 
+static void onJoyHatMoved (lua_State *L, const JoyHatEvent &event)
 
+static void onJoyAxisMoved (lua_State *L, const JoyAxisEvent &event)
 
+static void onJoyMappedButtonPressed (lua_State *L, const JoyMappedButtonEvent &event)
 
+static void onJoyMappedButtonReleased (lua_State *L, const JoyMappedButtonEvent &event)
 
+static void onJoyMappedAxisMoved (lua_State *L, const JoyMappedAxisEvent &event)
 
+static void onJoyConnected (lua_State *L, const JoyConnectionEvent &event)
 
+static void onJoyDisconnected (lua_State *L, const JoyConnectionEvent &event)
 
+static bool onQuitRequest (lua_State *L)
 
+

Detailed Description

+

Wrapper around the IInputEventHandler class.

+

The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classncine_1_1_lua_rect_utils-members.html b/master/classncine_1_1_lua_rect_utils-members.html new file mode 100644 index 0000000000..4e5e0a1b00 --- /dev/null +++ b/master/classncine_1_1_lua_rect_utils-members.html @@ -0,0 +1,92 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::LuaRectUtils< T > Member List
+
+
+ +

This is the complete list of members for ncine::LuaRectUtils< T >, including all inherited members.

+ + + + + + + + + +
push(lua_State *L, const Rect< T > &rect) (defined in ncine::LuaRectUtils< T >)ncine::LuaRectUtils< T >static
pushField(lua_State *L, const char *name, const Rect< T > &rect) (defined in ncine::LuaRectUtils< T >)ncine::LuaRectUtils< T >static
retrieve(lua_State *L, int index, int &newIndex) (defined in ncine::LuaRectUtils< T >)ncine::LuaRectUtils< T >static
retrieveArray(lua_State *L, int index) (defined in ncine::LuaRectUtils< T >)ncine::LuaRectUtils< T >static
retrieveArrayField(lua_State *L, int index, const char *name) (defined in ncine::LuaRectUtils< T >)ncine::LuaRectUtils< T >static
retrieveParams(lua_State *L, int index) (defined in ncine::LuaRectUtils< T >)ncine::LuaRectUtils< T >static
retrieveTable(lua_State *L, int index) (defined in ncine::LuaRectUtils< T >)ncine::LuaRectUtils< T >static
retrieveTableField(lua_State *L, int index, const char *name) (defined in ncine::LuaRectUtils< T >)ncine::LuaRectUtils< T >static
+ + + + diff --git a/master/classncine_1_1_lua_rect_utils.html b/master/classncine_1_1_lua_rect_utils.html new file mode 100644 index 0000000000..550330956e --- /dev/null +++ b/master/classncine_1_1_lua_rect_utils.html @@ -0,0 +1,125 @@ + + + + + + + +nCine: ncine::LuaRectUtils< T > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::LuaRectUtils< T > Class Template Reference
+
+
+ +

Lua utilities for the Rect template class. + More...

+ +

#include <LuaRectUtils.h>

+ + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

+static void push (lua_State *L, const Rect< T > &rect)
 
+static void pushField (lua_State *L, const char *name, const Rect< T > &rect)
 
+static Rect< T > retrieve (lua_State *L, int index, int &newIndex)
 
+static Rect< T > retrieveTable (lua_State *L, int index)
 
+static Rect< T > retrieveArray (lua_State *L, int index)
 
+static Rect< T > retrieveParams (lua_State *L, int index)
 
+static Rect< T > retrieveTableField (lua_State *L, int index, const char *name)
 
+static Rect< T > retrieveArrayField (lua_State *L, int index, const char *name)
 
+

Detailed Description

+

template<class T>
+class ncine::LuaRectUtils< T >

+ +

Lua utilities for the Rect template class.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classncine_1_1_lua_state_manager-members.html b/master/classncine_1_1_lua_state_manager-members.html new file mode 100644 index 0000000000..e43075f628 --- /dev/null +++ b/master/classncine_1_1_lua_state_manager-members.html @@ -0,0 +1,117 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::LuaStateManager Member List
+
+
+ +

This is the complete list of members for ncine::LuaStateManager, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ApiType enum namencine::LuaStateManager
apiType() const (defined in ncine::LuaStateManager)ncine::LuaStateManagerinline
loadFromFile(const char *filename, const char *chunkName, nctl::String *errorMsg, int *status)ncine::LuaStateManager
loadFromFile(const char *filename, const char *chunkName, nctl::String *errorMsg)ncine::LuaStateManager
loadFromFile(const char *filename, const char *chunkName)ncine::LuaStateManager
loadFromFile(const char *filename)ncine::LuaStateManager
loadFromMemory(const char *bufferName, const char *bufferPtr, unsigned long int bufferSize, nctl::String *errorMsg, int *status)ncine::LuaStateManager
loadFromMemory(const char *bufferName, const char *bufferPtr, unsigned long int bufferSize, nctl::String *errorMsg)ncine::LuaStateManager
loadFromMemory(const char *bufferName, const char *bufferPtr, unsigned long int bufferSize)ncine::LuaStateManager
LuaEventHandler (defined in ncine::LuaStateManager)ncine::LuaStateManagerfriend
LuaStateManager(ApiType apiType, StatisticsTracking statsTracking, StandardLibraries stdLibraries) (defined in ncine::LuaStateManager)ncine::LuaStateManager
LuaStateManager(lua_State *L, ApiType apiType, StatisticsTracking statsTracking, StandardLibraries stdLibraries) (defined in ncine::LuaStateManager)ncine::LuaStateManager
LuaStatistics (defined in ncine::LuaStateManager)ncine::LuaStateManagerfriend
manager(lua_State *L) (defined in ncine::LuaStateManager)ncine::LuaStateManagerstatic
reopen(ApiType apiType, StatisticsTracking statsTracking, StandardLibraries stdLibraries) (defined in ncine::LuaStateManager)ncine::LuaStateManager
reopen() (defined in ncine::LuaStateManager)ncine::LuaStateManager
runFromFile(const char *filename, const char *chunkName, nctl::String *errorMsg, int *status, LuaUtils::RunInfo *runInfo)ncine::LuaStateManager
runFromFile(const char *filename, const char *chunkName, nctl::String *errorMsg)ncine::LuaStateManager
runFromFile(const char *filename, const char *chunkName)ncine::LuaStateManager
runFromFile(const char *filename)ncine::LuaStateManager
runFromMemory(const char *bufferName, const char *bufferPtr, unsigned long int bufferSize, nctl::String *errorMsg, int *status, LuaUtils::RunInfo *runInfo)ncine::LuaStateManager
runFromMemory(const char *bufferName, const char *bufferPtr, unsigned long int bufferSize, nctl::String *errorMsg)ncine::LuaStateManager
runFromMemory(const char *bufferName, const char *bufferPtr, unsigned long int bufferSize)ncine::LuaStateManager
standardLibraries() const (defined in ncine::LuaStateManager)ncine::LuaStateManagerinline
StandardLibraries enum namencine::LuaStateManager
state() (defined in ncine::LuaStateManager)ncine::LuaStateManagerinline
statisticsTracking() const (defined in ncine::LuaStateManager)ncine::LuaStateManagerinline
StatisticsTracking enum namencine::LuaStateManager
trackedType(void *pointer) const (defined in ncine::LuaStateManager)ncine::LuaStateManager
trackedUserDatas() (defined in ncine::LuaStateManager)ncine::LuaStateManagerinline
untrackedType(void *pointer) const (defined in ncine::LuaStateManager)ncine::LuaStateManager
untrackedUserDatas() (defined in ncine::LuaStateManager)ncine::LuaStateManagerinline
~LuaStateManager() (defined in ncine::LuaStateManager)ncine::LuaStateManager
+ + + + diff --git a/master/classncine_1_1_lua_state_manager.html b/master/classncine_1_1_lua_state_manager.html new file mode 100644 index 0000000000..a5f4359258 --- /dev/null +++ b/master/classncine_1_1_lua_state_manager.html @@ -0,0 +1,270 @@ + + + + + + + +nCine: ncine::LuaStateManager Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::LuaStateManager Class Reference
+
+
+ +

The Lua scripting state manager. + More...

+ +

#include <LuaStateManager.h>

+ + + + +

+Classes

struct  StateToManager
 
+ + + + + + + + + + +

+Public Types

enum class  ApiType { FULL +, EDIT_ONLY +, CONSTANTS_ONLY +, NONE + }
 The Lua API type to enable. More...
 
enum class  StatisticsTracking { ENABLED +, DISABLED + }
 To enable or not memory and instruction count statistics.
 
enum class  StandardLibraries { LOADED +, NOT_LOADED + }
 To load or not standard Lua system libraries.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

LuaStateManager (ApiType apiType, StatisticsTracking statsTracking, StandardLibraries stdLibraries)
 
LuaStateManager (lua_State *L, ApiType apiType, StatisticsTracking statsTracking, StandardLibraries stdLibraries)
 
+void reopen (ApiType apiType, StatisticsTracking statsTracking, StandardLibraries stdLibraries)
 
+void reopen ()
 
+bool loadFromFile (const char *filename, const char *chunkName, nctl::String *errorMsg, int *status)
 Loads (without running) a script from a file, with the specified chunk name (used for debug), a string for an error message, and the status code.
 
+bool loadFromFile (const char *filename, const char *chunkName, nctl::String *errorMsg)
 Loads (without running) a script from a file, with the specified chunk name (used for debug), and a string for an error message.
 
+bool loadFromFile (const char *filename, const char *chunkName)
 Loads (without running) a script from a file, with the specified chunk name (used for debug)
 
+bool loadFromFile (const char *filename)
 Loads (without running) a script from a file.
 
+bool loadFromMemory (const char *bufferName, const char *bufferPtr, unsigned long int bufferSize, nctl::String *errorMsg, int *status)
 Loads (without running) a script from a memory buffer, with a string for an error message, and the status code.
 
+bool loadFromMemory (const char *bufferName, const char *bufferPtr, unsigned long int bufferSize, nctl::String *errorMsg)
 Loads (without running) a script from a memory buffer, with a string for an error message.
 
+bool loadFromMemory (const char *bufferName, const char *bufferPtr, unsigned long int bufferSize)
 Loads (without running) a script from a memory buffer.
 
+bool runFromFile (const char *filename, const char *chunkName, nctl::String *errorMsg, int *status, LuaUtils::RunInfo *runInfo)
 Loads and then runs a script from a file, with the specified chunk name (used for debug), a string for an error message, the status code, and an information object.
 
+bool runFromFile (const char *filename, const char *chunkName, nctl::String *errorMsg)
 Loads and then runs a script from a file, with the specified chunk name (used for debug), and a string for an error message.
 
+bool runFromFile (const char *filename, const char *chunkName)
 Loads and then runs a script from a file, with the specified chunk name (used for debug)
 
+bool runFromFile (const char *filename)
 Loads and then runs a script from a file.
 
+bool runFromMemory (const char *bufferName, const char *bufferPtr, unsigned long int bufferSize, nctl::String *errorMsg, int *status, LuaUtils::RunInfo *runInfo)
 Loads and then runs a script from a memory buffer, with the status code, a string for an error message, the status code and an information object.
 
+bool runFromMemory (const char *bufferName, const char *bufferPtr, unsigned long int bufferSize, nctl::String *errorMsg)
 Loads and then runs a script from a memory buffer, with the status code, and a string for an error message.
 
+bool runFromMemory (const char *bufferName, const char *bufferPtr, unsigned long int bufferSize)
 Loads and then runs a script from a memory buffer.
 
+lua_State * state ()
 
+ApiType apiType () const
 
+StatisticsTracking statisticsTracking () const
 
+StandardLibraries standardLibraries () const
 
+LuaTypes::UserDataType trackedType (void *pointer) const
 
+nctl::HashMap< void *, LuaTypes::UserDataType > & trackedUserDatas ()
 
+LuaTypes::UserDataType untrackedType (void *pointer) const
 
+nctl::HashMap< void *, LuaTypes::UserDataType > & untrackedUserDatas ()
 
+ + + +

+Static Public Member Functions

+static LuaStateManagermanager (lua_State *L)
 
+ + + + + +

+Friends

+class LuaEventHandler
 
+class LuaStatistics
 
+

Detailed Description

+

The Lua scripting state manager.

+

Member Enumeration Documentation

+ +

◆ ApiType

+ +
+
+ + + + + +
+ + + + +
enum ncine::LuaStateManager::ApiType
+
+strong
+
+ +

The Lua API type to enable.

+ + + + + +
Enumerator
FULL 

All API methods.

+
EDIT_ONLY 

All API methods except the ones that create or destroy objects.

+
CONSTANTS_ONLY 

Only constants, without methods.

+
NONE 

No Lua API.

+
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classncine_1_1_lua_untracked_user_data-members.html b/master/classncine_1_1_lua_untracked_user_data-members.html new file mode 100644 index 0000000000..5c7dac6214 --- /dev/null +++ b/master/classncine_1_1_lua_untracked_user_data-members.html @@ -0,0 +1,90 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::LuaUntrackedUserData< T > Member List
+
+
+ +

This is the complete list of members for ncine::LuaUntrackedUserData< T >, including all inherited members.

+ + + + + + + +
push(lua_State *L, T *object) (defined in ncine::LuaUntrackedUserData< T >)ncine::LuaUntrackedUserData< T >static
push(lua_State *L, const T *object) (defined in ncine::LuaUntrackedUserData< T >)ncine::LuaUntrackedUserData< T >static
pushField(lua_State *L, const char *name, T *object) (defined in ncine::LuaUntrackedUserData< T >)ncine::LuaUntrackedUserData< T >static
pushField(lua_State *L, const char *name, const T *object) (defined in ncine::LuaUntrackedUserData< T >)ncine::LuaUntrackedUserData< T >static
retrieve(lua_State *L, int index) (defined in ncine::LuaUntrackedUserData< T >)ncine::LuaUntrackedUserData< T >inlinestatic
retrieveOrNil(lua_State *L, int index) (defined in ncine::LuaUntrackedUserData< T >)ncine::LuaUntrackedUserData< T >inlinestatic
+ + + + diff --git a/master/classncine_1_1_lua_untracked_user_data.html b/master/classncine_1_1_lua_untracked_user_data.html new file mode 100644 index 0000000000..b7657447c0 --- /dev/null +++ b/master/classncine_1_1_lua_untracked_user_data.html @@ -0,0 +1,119 @@ + + + + + + + +nCine: ncine::LuaUntrackedUserData< T > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::LuaUntrackedUserData< T > Class Template Reference
+
+
+ +

Common methods to retrieve an untracked C++ class in Lua. + More...

+ +

#include <LuaUntrackedUserData.h>

+ + + + + + + + + + + + + + +

+Static Public Member Functions

+static T * retrieve (lua_State *L, int index)
 
+static T * retrieveOrNil (lua_State *L, int index)
 
+static void push (lua_State *L, T *object)
 
+static void push (lua_State *L, const T *object)
 
+static void pushField (lua_State *L, const char *name, T *object)
 
+static void pushField (lua_State *L, const char *name, const T *object)
 
+

Detailed Description

+

template<class T>
+class ncine::LuaUntrackedUserData< T >

+ +

Common methods to retrieve an untracked C++ class in Lua.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classncine_1_1_lua_utils_1_1_run_info-members.html b/master/classncine_1_1_lua_utils_1_1_run_info-members.html new file mode 100644 index 0000000000..2aa191b913 --- /dev/null +++ b/master/classncine_1_1_lua_utils_1_1_run_info-members.html @@ -0,0 +1,89 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::LuaUtils::RunInfo Member List
+
+
+ +

This is the complete list of members for ncine::LuaUtils::RunInfo, including all inherited members.

+ + + + + + +
debugInfo(unsigned int level) const (defined in ncine::LuaUtils::RunInfo)ncine::LuaUtils::RunInfo
LuaDebug::debugInfoMessageHandler (defined in ncine::LuaUtils::RunInfo)ncine::LuaUtils::RunInfofriend
MaxLevels (defined in ncine::LuaUtils::RunInfo)ncine::LuaUtils::RunInfostatic
numLevels() const (defined in ncine::LuaUtils::RunInfo)ncine::LuaUtils::RunInfoinline
pcall (defined in ncine::LuaUtils::RunInfo)ncine::LuaUtils::RunInfofriend
+ + + + diff --git a/master/classncine_1_1_lua_utils_1_1_run_info.html b/master/classncine_1_1_lua_utils_1_1_run_info.html new file mode 100644 index 0000000000..024c92fc47 --- /dev/null +++ b/master/classncine_1_1_lua_utils_1_1_run_info.html @@ -0,0 +1,128 @@ + + + + + + + +nCine: ncine::LuaUtils::RunInfo Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::LuaUtils::RunInfo Class Reference
+
+
+ +

A class that collects additional status information when running Lua scripts. + More...

+ +

#include <LuaUtils.h>

+ + + + +

+Classes

struct  DebugInfo
 
+ + + + + +

+Public Member Functions

+unsigned int numLevels () const
 
+const DebugInfodebugInfo (unsigned int level) const
 
+ + + +

+Static Public Attributes

+static const unsigned int MaxLevels = 8
 
+ + + + + +

+Friends

+DLL_PUBLIC int pcall (lua_State *L, int nargs, int nresults, RunInfo *runInfo)
 
+int LuaDebug::debugInfoMessageHandler (lua_State *L)
 
+

Detailed Description

+

A class that collects additional status information when running Lua scripts.

+

The documentation for this class was generated from the following files:
    +
  • include/ncine/LuaUtils.h
  • +
  • src/scripting/LuaUtils.cpp
  • +
+
+ + + + diff --git a/master/classncine_1_1_lua_vector2_utils-members.html b/master/classncine_1_1_lua_vector2_utils-members.html new file mode 100644 index 0000000000..21a879d934 --- /dev/null +++ b/master/classncine_1_1_lua_vector2_utils-members.html @@ -0,0 +1,92 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::LuaVector2Utils< T > Member List
+
+
+ +

This is the complete list of members for ncine::LuaVector2Utils< T >, including all inherited members.

+ + + + + + + + + +
push(lua_State *L, const Vector2< T > &v) (defined in ncine::LuaVector2Utils< T >)ncine::LuaVector2Utils< T >static
pushField(lua_State *L, const char *name, const Vector2< T > &v) (defined in ncine::LuaVector2Utils< T >)ncine::LuaVector2Utils< T >static
retrieve(lua_State *L, int index, int &newIndex) (defined in ncine::LuaVector2Utils< T >)ncine::LuaVector2Utils< T >static
retrieveArray(lua_State *L, int index) (defined in ncine::LuaVector2Utils< T >)ncine::LuaVector2Utils< T >static
retrieveArrayField(lua_State *L, int index, const char *name) (defined in ncine::LuaVector2Utils< T >)ncine::LuaVector2Utils< T >static
retrieveParams(lua_State *L, int index) (defined in ncine::LuaVector2Utils< T >)ncine::LuaVector2Utils< T >static
retrieveTable(lua_State *L, int index) (defined in ncine::LuaVector2Utils< T >)ncine::LuaVector2Utils< T >static
retrieveTableField(lua_State *L, int index, const char *name) (defined in ncine::LuaVector2Utils< T >)ncine::LuaVector2Utils< T >static
+ + + + diff --git a/master/classncine_1_1_lua_vector2_utils.html b/master/classncine_1_1_lua_vector2_utils.html new file mode 100644 index 0000000000..563a46b54d --- /dev/null +++ b/master/classncine_1_1_lua_vector2_utils.html @@ -0,0 +1,125 @@ + + + + + + + +nCine: ncine::LuaVector2Utils< T > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::LuaVector2Utils< T > Class Template Reference
+
+
+ +

Lua utilities for the Vector2 template class. + More...

+ +

#include <LuaVector2Utils.h>

+ + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

+static void push (lua_State *L, const Vector2< T > &v)
 
+static void pushField (lua_State *L, const char *name, const Vector2< T > &v)
 
+static Vector2< T > retrieve (lua_State *L, int index, int &newIndex)
 
+static Vector2< T > retrieveTable (lua_State *L, int index)
 
+static Vector2< T > retrieveArray (lua_State *L, int index)
 
+static Vector2< T > retrieveParams (lua_State *L, int index)
 
+static Vector2< T > retrieveTableField (lua_State *L, int index, const char *name)
 
+static Vector2< T > retrieveArrayField (lua_State *L, int index, const char *name)
 
+

Detailed Description

+

template<class T>
+class ncine::LuaVector2Utils< T >

+ +

Lua utilities for the Vector2 template class.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classncine_1_1_lua_vector3_utils-members.html b/master/classncine_1_1_lua_vector3_utils-members.html new file mode 100644 index 0000000000..1d69b9839d --- /dev/null +++ b/master/classncine_1_1_lua_vector3_utils-members.html @@ -0,0 +1,92 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::LuaVector3Utils< T > Member List
+
+
+ +

This is the complete list of members for ncine::LuaVector3Utils< T >, including all inherited members.

+ + + + + + + + + +
push(lua_State *L, const Vector3< T > &v) (defined in ncine::LuaVector3Utils< T >)ncine::LuaVector3Utils< T >static
pushField(lua_State *L, const char *name, const Vector3< T > &v) (defined in ncine::LuaVector3Utils< T >)ncine::LuaVector3Utils< T >static
retrieve(lua_State *L, int index, int &newIndex) (defined in ncine::LuaVector3Utils< T >)ncine::LuaVector3Utils< T >static
retrieveArray(lua_State *L, int index) (defined in ncine::LuaVector3Utils< T >)ncine::LuaVector3Utils< T >static
retrieveArrayField(lua_State *L, int index, const char *name) (defined in ncine::LuaVector3Utils< T >)ncine::LuaVector3Utils< T >static
retrieveParams(lua_State *L, int index) (defined in ncine::LuaVector3Utils< T >)ncine::LuaVector3Utils< T >static
retrieveTable(lua_State *L, int index) (defined in ncine::LuaVector3Utils< T >)ncine::LuaVector3Utils< T >static
retrieveTableField(lua_State *L, int index, const char *name) (defined in ncine::LuaVector3Utils< T >)ncine::LuaVector3Utils< T >static
+ + + + diff --git a/master/classncine_1_1_lua_vector3_utils.html b/master/classncine_1_1_lua_vector3_utils.html new file mode 100644 index 0000000000..8042c4f6e7 --- /dev/null +++ b/master/classncine_1_1_lua_vector3_utils.html @@ -0,0 +1,125 @@ + + + + + + + +nCine: ncine::LuaVector3Utils< T > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::LuaVector3Utils< T > Class Template Reference
+
+
+ +

Lua utilities for the Vector3 template class. + More...

+ +

#include <LuaVector3Utils.h>

+ + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

+static void push (lua_State *L, const Vector3< T > &v)
 
+static void pushField (lua_State *L, const char *name, const Vector3< T > &v)
 
+static Vector3< T > retrieve (lua_State *L, int index, int &newIndex)
 
+static Vector3< T > retrieveTable (lua_State *L, int index)
 
+static Vector3< T > retrieveArray (lua_State *L, int index)
 
+static Vector3< T > retrieveParams (lua_State *L, int index)
 
+static Vector3< T > retrieveTableField (lua_State *L, int index, const char *name)
 
+static Vector3< T > retrieveArrayField (lua_State *L, int index, const char *name)
 
+

Detailed Description

+

template<class T>
+class ncine::LuaVector3Utils< T >

+ +

Lua utilities for the Vector3 template class.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classncine_1_1_lua_vector4_utils-members.html b/master/classncine_1_1_lua_vector4_utils-members.html new file mode 100644 index 0000000000..8e5fc1a1c7 --- /dev/null +++ b/master/classncine_1_1_lua_vector4_utils-members.html @@ -0,0 +1,92 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::LuaVector4Utils< T > Member List
+
+
+ +

This is the complete list of members for ncine::LuaVector4Utils< T >, including all inherited members.

+ + + + + + + + + +
push(lua_State *L, const Vector4< T > &v) (defined in ncine::LuaVector4Utils< T >)ncine::LuaVector4Utils< T >static
pushField(lua_State *L, const char *name, const Vector4< T > &v) (defined in ncine::LuaVector4Utils< T >)ncine::LuaVector4Utils< T >static
retrieve(lua_State *L, int index, int &newIndex) (defined in ncine::LuaVector4Utils< T >)ncine::LuaVector4Utils< T >static
retrieveArray(lua_State *L, int index) (defined in ncine::LuaVector4Utils< T >)ncine::LuaVector4Utils< T >static
retrieveArrayField(lua_State *L, int index, const char *name) (defined in ncine::LuaVector4Utils< T >)ncine::LuaVector4Utils< T >static
retrieveParams(lua_State *L, int index) (defined in ncine::LuaVector4Utils< T >)ncine::LuaVector4Utils< T >static
retrieveTable(lua_State *L, int index) (defined in ncine::LuaVector4Utils< T >)ncine::LuaVector4Utils< T >static
retrieveTableField(lua_State *L, int index, const char *name) (defined in ncine::LuaVector4Utils< T >)ncine::LuaVector4Utils< T >static
+ + + + diff --git a/master/classncine_1_1_lua_vector4_utils.html b/master/classncine_1_1_lua_vector4_utils.html new file mode 100644 index 0000000000..a8a28662c4 --- /dev/null +++ b/master/classncine_1_1_lua_vector4_utils.html @@ -0,0 +1,125 @@ + + + + + + + +nCine: ncine::LuaVector4Utils< T > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::LuaVector4Utils< T > Class Template Reference
+
+
+ +

Lua utilities for the Vector4 template class. + More...

+ +

#include <LuaVector4Utils.h>

+ + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

+static void push (lua_State *L, const Vector4< T > &v)
 
+static void pushField (lua_State *L, const char *name, const Vector4< T > &v)
 
+static Vector4< T > retrieve (lua_State *L, int index, int &newIndex)
 
+static Vector4< T > retrieveTable (lua_State *L, int index)
 
+static Vector4< T > retrieveArray (lua_State *L, int index)
 
+static Vector4< T > retrieveParams (lua_State *L, int index)
 
+static Vector4< T > retrieveTableField (lua_State *L, int index, const char *name)
 
+static Vector4< T > retrieveArrayField (lua_State *L, int index, const char *name)
 
+

Detailed Description

+

template<class T>
+class ncine::LuaVector4Utils< T >

+ +

Lua utilities for the Vector4 template class.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classncine_1_1_matrix4x4-members.html b/master/classncine_1_1_matrix4x4-members.html new file mode 100644 index 0000000000..c4f56324e3 --- /dev/null +++ b/master/classncine_1_1_matrix4x4-members.html @@ -0,0 +1,138 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::Matrix4x4< T > Member List
+
+
+ +

This is the complete list of members for ncine::Matrix4x4< T >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
data() (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inline
data() const (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inline
frustum(T left, T right, T bottom, T top, T near, T far) (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inlinestatic
Identityncine::Matrix4x4< T >static
inverse() const (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inline
Matrix4x4() (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inline
Matrix4x4(const Vector4< T > &v0, const Vector4< T > &v1, const Vector4< T > &v2, const Vector4< T > &v3) (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inline
operator*(const Vector4< T > &v) const (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inline
operator*(const Vector3< T > &v) const (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inline
operator* (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >friend
operator* (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >friend
operator*(const Matrix4x4 &m) const (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inline
operator*(T s) const (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inline
operator* (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >friend
operator*=(const Matrix4x4 &m) (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inline
operator*=(T s) (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inline
operator+(const Matrix4x4 &m) const (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inline
operator+(T s) const (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inline
operator+=(const Matrix4x4 &m) (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inline
operator+=(T s) (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inline
operator-() const (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inline
operator-(const Matrix4x4 &m) const (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inline
operator-(T s) const (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inline
operator-=(const Matrix4x4 &m) (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inline
operator-=(T s) (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inline
operator/(const Matrix4x4 &m) const (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inline
operator/(T s) const (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inline
operator/=(const Matrix4x4 &m) (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inline
operator/=(T s) (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inline
operator==(const Matrix4x4 &m) const (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inline
operator[](unsigned int index) (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inline
operator[](unsigned int index) const (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inline
ortho(T left, T right, T bottom, T top, T near, T far) (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inlinestatic
perspective(T fovY, T aspect, T near, T far) (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inlinestatic
rotateX(T degrees) (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inline
rotateY(T degrees) (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inline
rotateZ(T degrees) (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inline
rotationX(T degrees) (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inlinestatic
rotationY(T degrees) (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inlinestatic
rotationZ(T degrees) (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inlinestatic
scale(T xx, T yy, T zz) (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inline
scale(const Vector3< T > &v) (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inline
scale(T s) (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inline
scaling(T xx, T yy, T zz) (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inlinestatic
scaling(const Vector3< T > &v) (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inlinestatic
scaling(T s) (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inlinestatic
set(const Vector4< T > &v0, const Vector4< T > &v1, const Vector4< T > &v2, const Vector4< T > &v3) (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inline
translate(T xx, T yy, T zz) (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inline
translate(const Vector3< T > &v) (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inline
translation(T xx, T yy, T zz) (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inlinestatic
translation(const Vector3< T > &v) (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inlinestatic
transpose() (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inline
transposed() const (defined in ncine::Matrix4x4< T >)ncine::Matrix4x4< T >inline
Zeroncine::Matrix4x4< T >static
+ + + + diff --git a/master/classncine_1_1_matrix4x4.html b/master/classncine_1_1_matrix4x4.html new file mode 100644 index 0000000000..947913803b --- /dev/null +++ b/master/classncine_1_1_matrix4x4.html @@ -0,0 +1,285 @@ + + + + + + + +nCine: ncine::Matrix4x4< T > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::Matrix4x4< T > Class Template Reference
+
+
+ +

A four by four matrix based on templates. + More...

+ +

#include <Matrix4x4.h>

+
+Collaboration diagram for ncine::Matrix4x4< T >:
+
+
Collaboration graph
+ + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Matrix4x4 (const Vector4< T > &v0, const Vector4< T > &v1, const Vector4< T > &v2, const Vector4< T > &v3)
 
+void set (const Vector4< T > &v0, const Vector4< T > &v1, const Vector4< T > &v2, const Vector4< T > &v3)
 
+T * data ()
 
+const T * data () const
 
+Vector4< T > & operator[] (unsigned int index)
 
+const Vector4< T > & operator[] (unsigned int index) const
 
+bool operator== (const Matrix4x4 &m) const
 
+Matrix4x4 operator- () const
 
+Matrix4x4operator+= (const Matrix4x4 &m)
 
+Matrix4x4operator-= (const Matrix4x4 &m)
 
+Matrix4x4operator*= (const Matrix4x4 &m)
 
+Matrix4x4operator/= (const Matrix4x4 &m)
 
+Matrix4x4operator+= (T s)
 
+Matrix4x4operator-= (T s)
 
+Matrix4x4operator*= (T s)
 
+Matrix4x4operator/= (T s)
 
+Vector4< T > operator* (const Vector4< T > &v) const
 
+Vector3< T > operator* (const Vector3< T > &v) const
 
+Matrix4x4 operator+ (const Matrix4x4 &m) const
 
+Matrix4x4 operator- (const Matrix4x4 &m) const
 
+Matrix4x4 operator* (const Matrix4x4 &m) const
 
+Matrix4x4 operator/ (const Matrix4x4 &m) const
 
+Matrix4x4 operator+ (T s) const
 
+Matrix4x4 operator- (T s) const
 
+Matrix4x4 operator* (T s) const
 
+Matrix4x4 operator/ (T s) const
 
+Matrix4x4 transposed () const
 
+Matrix4x4transpose ()
 
+Matrix4x4 inverse () const
 
+Matrix4x4translate (T xx, T yy, T zz)
 
+Matrix4x4translate (const Vector3< T > &v)
 
+Matrix4x4rotateX (T degrees)
 
+Matrix4x4rotateY (T degrees)
 
+Matrix4x4rotateZ (T degrees)
 
+Matrix4x4scale (T xx, T yy, T zz)
 
+Matrix4x4scale (const Vector3< T > &v)
 
+Matrix4x4scale (T s)
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

+static Matrix4x4 translation (T xx, T yy, T zz)
 
+static Matrix4x4 translation (const Vector3< T > &v)
 
+static Matrix4x4 rotationX (T degrees)
 
+static Matrix4x4 rotationY (T degrees)
 
+static Matrix4x4 rotationZ (T degrees)
 
+static Matrix4x4 scaling (T xx, T yy, T zz)
 
+static Matrix4x4 scaling (const Vector3< T > &v)
 
+static Matrix4x4 scaling (T s)
 
+static Matrix4x4 ortho (T left, T right, T bottom, T top, T near, T far)
 
+static Matrix4x4 frustum (T left, T right, T bottom, T top, T near, T far)
 
+static Matrix4x4 perspective (T fovY, T aspect, T near, T far)
 
+ + + + + + + +

+Static Public Attributes

+static const Matrix4x4 Zero
 A matrix with all zero elements.
 
+static const Matrix4x4 Identity
 An identity matrix.
 
+ + + + + + + + + + +

+Friends

+template<class S >
Vector4< S > operator* (const Vector4< S > &v, const Matrix4x4< S > &m)
 
+template<class S >
Vector3< S > operator* (const Vector3< S > &v, const Matrix4x4< S > &m)
 
+template<class S >
Matrix4x4< S > operator* (S s, const Matrix4x4< S > &m)
 
+

Detailed Description

+

template<class T>
+class ncine::Matrix4x4< T >

+ +

A four by four matrix based on templates.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classncine_1_1_matrix4x4__coll__graph.map b/master/classncine_1_1_matrix4x4__coll__graph.map new file mode 100644 index 0000000000..0a9940afa3 --- /dev/null +++ b/master/classncine_1_1_matrix4x4__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/master/classncine_1_1_matrix4x4__coll__graph.md5 b/master/classncine_1_1_matrix4x4__coll__graph.md5 new file mode 100644 index 0000000000..91f337e25d --- /dev/null +++ b/master/classncine_1_1_matrix4x4__coll__graph.md5 @@ -0,0 +1 @@ +1c2f47f1855df1015fe616119607cf56 \ No newline at end of file diff --git a/master/classncine_1_1_matrix4x4__coll__graph.png b/master/classncine_1_1_matrix4x4__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..742eeca42b11a24ba9b5512f72b856f177a331dd GIT binary patch literal 3985 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 E4?)JT0RR91 literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_mesh_sprite-members.html b/master/classncine_1_1_mesh_sprite-members.html new file mode 100644 index 0000000000..20333164e6 --- /dev/null +++ b/master/classncine_1_1_mesh_sprite-members.html @@ -0,0 +1,311 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::MeshSprite Member List
+
+
+ +

This is the complete list of members for ncine::MeshSprite, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
aabb() constncine::DrawableNodeinline
aabb_ncine::DrawableNodeprotected
AabbBit enum value (defined in ncine::SceneNode)ncine::SceneNodeprotected
absAlpha() constncine::SceneNodeinline
absAnchorPoint() constncine::SceneNodeinline
absColor() constncine::SceneNodeinline
absColor_ncine::SceneNodeprotected
absHeight() constncine::DrawableNodeinlinevirtual
absLayer() constncine::SceneNodeinline
absLayer_ncine::SceneNodeprotected
absPosition() constncine::SceneNodeinline
absPosition_ncine::SceneNodeprotected
absRotation() constncine::SceneNodeinline
absRotation_ncine::SceneNodeprotected
absScale() constncine::SceneNodeinline
absScaleFactor_ncine::SceneNodeprotected
absSize() constncine::DrawableNodeinline
absWidth() constncine::DrawableNodeinlinevirtual
addChildNode(SceneNode *childNode)ncine::SceneNode
alpha() constncine::SceneNodeinline
AnchorBottomLeft (defined in ncine::DrawableNode)ncine::DrawableNodestatic
AnchorBottomRight (defined in ncine::DrawableNode)ncine::DrawableNodestatic
AnchorCenter (defined in ncine::DrawableNode)ncine::DrawableNodestatic
anchorPoint() constncine::DrawableNodeinline
anchorPoint_ncine::SceneNodeprotected
AnchorTopLeft (defined in ncine::DrawableNode)ncine::DrawableNodestatic
AnchorTopRight (defined in ncine::DrawableNode)ncine::DrawableNodestatic
BaseSprite(BaseSprite &&)=defaultncine::BaseSprite
BaseSprite(SceneNode *parent, Texture *texture, float xx, float yy)ncine::BaseSpriteprotected
BaseSprite(SceneNode *parent, Texture *texture, const Vector2f &position)ncine::BaseSpriteprotected
BaseSprite(const BaseSprite &other)ncine::BaseSpriteprotected
BlendingFactor enum namencine::DrawableNode
BlendingPreset enum namencine::DrawableNode
bytesPerVertex() constncine::MeshSpriteinline
childOrderIndex() constncine::SceneNode
childOrderIndex_ncine::SceneNodeprotected
children()ncine::SceneNodeinline
children() constncine::SceneNodeinline
children_ncine::SceneNodeprotected
clone() constncine::MeshSpriteinline
color() constncine::SceneNodeinline
color_ncine::SceneNodeprotected
ColorBit enum value (defined in ncine::SceneNode)ncine::SceneNodeprotected
copyIndices(unsigned int numIndices, const unsigned short *indices)ncine::MeshSprite
copyIndices(const MeshSprite &meshSprite)ncine::MeshSprite
copyVertices(unsigned int numVertices, unsigned int bytesPerVertex, const void *vertexData)ncine::MeshSprite
copyVertices(unsigned int numVertices, const Vertex *vertices)ncine::MeshSprite
copyVertices(unsigned int numVertices, const VertexNoTexture *vertices)ncine::MeshSprite
copyVertices(const MeshSprite &meshSprite)ncine::MeshSprite
createVerticesFromTexels(unsigned int numVertices, const Vector2f *points, TextureCutMode cutMode)ncine::MeshSprite
createVerticesFromTexels(unsigned int numVertices, const Vector2f *points)ncine::MeshSprite
deleteChildrenOnDestruction() constncine::SceneNodeinline
destBlendingFactor() constncine::DrawableNode
DirtyBitPositions enum namencine::SceneNodeprotected
dirtyBits_ncine::SceneNodeprotected
draw(RenderQueue &renderQueue) overridencine::DrawableNodevirtual
DrawableNode(SceneNode *parent, float xx, float yy)ncine::DrawableNode
DrawableNode(SceneNode *parent, const Vector2f &position)ncine::DrawableNode
DrawableNode(SceneNode *parent)ncine::DrawableNodeexplicit
DrawableNode()ncine::DrawableNode
DrawableNode(DrawableNode &&)ncine::DrawableNode
DrawableNode(const DrawableNode &other)ncine::DrawableNodeprotected
drawEnabled_ (defined in ncine::SceneNode)ncine::SceneNodeprotected
emplaceIndices(unsigned int numIndices)ncine::MeshSprite
emplaceVertices(unsigned int numElements, unsigned int bytesPerVertex)ncine::MeshSprite
emplaceVertices(unsigned int numElements)ncine::MeshSprite
flippedX_ncine::BaseSpriteprotected
flippedY_ncine::BaseSpriteprotected
fromId(unsigned int id)ncine::Objectstatic
height() constncine::DrawableNodeinlinevirtual
height_ncine::DrawableNodeprotected
id() constncine::Objectinline
indices() constncine::MeshSpriteinline
instanceBlock_ (defined in ncine::BaseSprite)ncine::BaseSpriteprotected
isBlendingEnabled() constncine::DrawableNode
isDrawEnabled() constncine::SceneNodeinline
isEnabled() constncine::SceneNodeinline
isFlippedX() constncine::BaseSpriteinline
isFlippedY() constncine::BaseSpriteinline
isUpdateEnabled() constncine::SceneNodeinline
lastFrameRendered() constncine::DrawableNodeinline
lastFrameRendered_ncine::DrawableNodeprotected
lastFrameUpdated() constncine::SceneNodeinline
lastFrameUpdated_ncine::SceneNodeprotected
layer() constncine::SceneNodeinline
layer_ncine::SceneNodeprotected
localMatrix() constncine::SceneNodeinline
localMatrix_ncine::SceneNodeprotected
MaxNameLengthncine::Objectstatic
MeshSprite()ncine::MeshSprite
MeshSprite(SceneNode *parent, Texture *texture)ncine::MeshSprite
MeshSprite(Texture *texture)ncine::MeshSpriteexplicit
MeshSprite(SceneNode *parent, Texture *texture, float xx, float yy)ncine::MeshSprite
MeshSprite(SceneNode *parent, Texture *texture, const Vector2f &position)ncine::MeshSprite
MeshSprite(Texture *texture, float xx, float yy)ncine::MeshSprite
MeshSprite(Texture *texture, const Vector2f &position)ncine::MeshSprite
MeshSprite(MeshSprite &&)=defaultncine::MeshSprite
MeshSprite(const MeshSprite &other)ncine::MeshSpriteprotected
MinRotationncine::SceneNodestatic
move(float x, float y)ncine::SceneNodeinline
move(const Vector2f &position)ncine::SceneNodeinline
moveX(float x)ncine::SceneNodeinline
moveY(float y)ncine::SceneNodeinline
name() constncine::Object
numBytes() constncine::MeshSpriteinline
numIndices() constncine::MeshSpriteinline
numVertices() constncine::MeshSpriteinline
Object(ObjectType type)ncine::Objectexplicit
Object(ObjectType type, const char *name)ncine::Object
Object(Object &&other)ncine::Object
Object(const Object &other)ncine::Objectprotected
ObjectType enum namencine::Object
operator=(MeshSprite &&)=defaultncine::MeshSprite
ncine::BaseSprite::operator=(BaseSprite &&)=defaultncine::BaseSprite
ncine::DrawableNode::operator=(DrawableNode &&)ncine::DrawableNode
ncine::SceneNode::operator=(SceneNode &&other)ncine::SceneNode
ncine::SceneNode::operator=(const SceneNode &)=deletencine::SceneNodeprotected
ncine::Object::operator=(Object &&other)ncine::Object
parent() constncine::SceneNodeinline
parent()ncine::SceneNodeinline
parent_ncine::SceneNodeprotected
position() constncine::SceneNodeinline
position_ncine::SceneNodeprotected
removeAllChildrenNodes()ncine::SceneNode
removeChildNode(SceneNode *childNode)ncine::SceneNode
removeChildNodeAt(unsigned int index)ncine::SceneNode
renderCommand_ncine::DrawableNodeprotected
resetTexture()ncine::BaseSprite
rotation() constncine::SceneNodeinline
rotation_ncine::SceneNodeprotected
scale() constncine::SceneNodeinline
scaleFactor_ncine::SceneNodeprotected
SceneNode(SceneNode *parent, float x, float y)ncine::SceneNode
SceneNode(SceneNode *parent, const Vector2f &position)ncine::SceneNode
SceneNode(SceneNode *parent)ncine::SceneNodeexplicit
SceneNode()ncine::SceneNode
SceneNode(SceneNode &&other)ncine::SceneNode
SceneNode(const SceneNode &other)ncine::SceneNodeprotected
setAbsAnchorPoint(float x, float y)ncine::SceneNodeinline
setAbsAnchorPoint(const Vector2f &point)ncine::SceneNodeinline
setAlpha(unsigned char alpha)ncine::SceneNodeinline
setAlphaF(float alpha)ncine::SceneNodeinline
setAnchorPoint(float xx, float yy)ncine::DrawableNode
setAnchorPoint(const Vector2f &point)ncine::DrawableNodeinline
setBlendingEnabled(bool blendingEnabled)ncine::DrawableNode
setBlendingFactors(BlendingFactor srcBlendingFactor, BlendingFactor destBlendingFactor)ncine::DrawableNode
setBlendingPreset(BlendingPreset blendingPreset)ncine::DrawableNode
setColor(Color color)ncine::SceneNodeinline
setColor(Colorf color)ncine::SceneNodeinline
setColor(unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha)ncine::SceneNodeinline
setColorF(float red, float green, float blue, float alpha)ncine::SceneNodeinline
setDeleteChildrenOnDestruction(bool shouldDeleteChildrenOnDestruction)ncine::SceneNodeinline
setDrawEnabled(bool drawEnabled)ncine::SceneNodeinline
setEnabled(bool isEnabled)ncine::SceneNodeinline
setFlippedX(bool flippedX)ncine::BaseSprite
setFlippedY(bool flippedY)ncine::BaseSprite
setIndices(unsigned int numIndices, const unsigned short *indices)ncine::MeshSprite
setIndices(const MeshSprite &meshSprite)ncine::MeshSprite
setLayer(uint16_t layer)ncine::SceneNodeinline
setLocalMatrix(const Matrix4x4f &localMatrix)ncine::SceneNodeinline
setName(const char *name)ncine::Object
setParent(SceneNode *parentNode)ncine::SceneNode
setPosition(float x, float y)ncine::SceneNodeinline
setPosition(const Vector2f &position)ncine::SceneNodeinline
setPositionX(float x)ncine::SceneNodeinline
setPositionY(float y)ncine::SceneNodeinline
setRotation(float rotation)ncine::SceneNodeinline
setScale(float scaleFactor)ncine::SceneNodeinline
setScale(float scaleFactorX, float scaleFactorY)ncine::SceneNodeinline
setScale(const Vector2f &scaleFactor)ncine::SceneNodeinline
setSize(float width, float height)ncine::BaseSprite
setSize(const Vector2f &size)ncine::BaseSpriteinline
setTexRect(const Recti &rect)ncine::BaseSprite
setTexture(Texture *texture)ncine::BaseSprite
setUpdateEnabled(bool updateEnabled)ncine::SceneNodeinline
setVertices(unsigned int numVertices, unsigned int bytesPerVertex, const void *vertexData)ncine::MeshSprite
setVertices(unsigned int numVertices, const Vertex *vertices)ncine::MeshSprite
setVertices(unsigned int numVertices, const VertexNoTexture *vertices)ncine::MeshSprite
setVertices(const MeshSprite &meshSprite)ncine::MeshSprite
setVisitOrderState(enum VisitOrderState visitOrderState)ncine::SceneNodeinline
setWorldMatrix(const Matrix4x4f &worldMatrix)ncine::SceneNodeinline
shouldDeleteChildrenOnDestruction_ncine::SceneNodeprotected
size() constncine::DrawableNodeinline
SizeBit enum value (defined in ncine::SceneNode)ncine::SceneNodeprotected
srcBlendingFactor() constncine::DrawableNode
sType() (defined in ncine::MeshSprite)ncine::MeshSpriteinlinestatic
swapChildPointer(SceneNode *first, SceneNode *second)ncine::SceneNodeprotected
swapChildrenNodes(unsigned int firstIndex, unsigned int secondIndex)ncine::SceneNode
swapNodeBack()ncine::SceneNode
swapNodeForward()ncine::SceneNode
texRect() constncine::BaseSpriteinline
texRect_ncine::BaseSpriteprotected
texture() constncine::BaseSpriteinline
texture_ncine::BaseSpriteprotected
TextureBit enum value (defined in ncine::SceneNode)ncine::SceneNodeprotected
TextureCutMode enum name (defined in ncine::MeshSprite)ncine::MeshSprite
transform() (defined in ncine::SceneNode)ncine::SceneNodeprotectedvirtual
TransformationBit enum value (defined in ncine::SceneNode)ncine::SceneNodeprotected
type() constncine::Objectinline
type_ncine::Objectprotected
uniqueIndices() constncine::MeshSpriteinline
uniqueVertices() constncine::MeshSpriteinline
unlinkChildNode(SceneNode *childNode)ncine::SceneNode
update(float interval)ncine::SceneNodevirtual
updateAabb()ncine::DrawableNodeprotectedvirtual
updateCulling()ncine::DrawableNodeprotected
updateEnabled_ (defined in ncine::SceneNode)ncine::SceneNodeprotected
updateRenderCommand() overridencine::BaseSpriteprotectedvirtual
VertexBytes (defined in ncine::MeshSprite)ncine::MeshSpritestatic
VertexFloats (defined in ncine::MeshSprite)ncine::MeshSpritestatic
VertexNoTextureBytes (defined in ncine::MeshSprite)ncine::MeshSpritestatic
VertexNoTextureFloats (defined in ncine::MeshSprite)ncine::MeshSpritestatic
vertices() constncine::MeshSpriteinline
visit(RenderQueue &renderQueue, unsigned int &visitOrderIndex)ncine::SceneNodevirtual
visitOrderIndex() constncine::SceneNodeinline
visitOrderIndex_ncine::SceneNodeprotected
VisitOrderState enum name (defined in ncine::SceneNode)ncine::SceneNode
visitOrderState() constncine::SceneNodeinline
visitOrderState_ncine::SceneNodeprotected
width() constncine::DrawableNodeinlinevirtual
width_ncine::DrawableNodeprotected
withVisitOrder_ncine::SceneNodeprotected
worldMatrix() constncine::SceneNodeinline
worldMatrix_ncine::SceneNodeprotected
~DrawableNode() override (defined in ncine::DrawableNode)ncine::DrawableNode
~Object()ncine::Objectvirtual
~SceneNode() overridencine::SceneNode
+ + + + diff --git a/master/classncine_1_1_mesh_sprite.html b/master/classncine_1_1_mesh_sprite.html new file mode 100644 index 0000000000..33ce280199 --- /dev/null +++ b/master/classncine_1_1_mesh_sprite.html @@ -0,0 +1,1164 @@ + + + + + + + +nCine: ncine::MeshSprite Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

A scene node representing a mesh with vertices and UVs. + More...

+ +

#include <MeshSprite.h>

+
+Inheritance diagram for ncine::MeshSprite:
+
+
Inheritance graph
+ + + + + + + +
[legend]
+
+Collaboration diagram for ncine::MeshSprite:
+
+
Collaboration graph
+ + + + + + + + + + + + + + + + + +
[legend]
+ + + + + + + + +

+Classes

struct  Vertex
 Vertex data for the mesh. More...
 
struct  VertexNoTexture
 Vertex data for the mesh when no texture is specified. More...
 
+ + + + + + + + + + + + + + + + + +

+Public Types

enum class  TextureCutMode { RESIZE +, CROP + }
 
- Public Types inherited from ncine::DrawableNode
enum class  BlendingPreset {
+  DISABLED +, ALPHA +, PREMULTIPLIED_ALPHA +, ADDITIVE +,
+  MULTIPLY +
+ }
 Presets for blending factors. More...
 
enum class  BlendingFactor {
+  ZERO +, ONE +, SRC_COLOR +, ONE_MINUS_SRC_COLOR +,
+  DST_COLOR +, ONE_MINUS_DST_COLOR +, SRC_ALPHA +, ONE_MINUS_SRC_ALPHA +,
+  DST_ALPHA +, ONE_MINUS_DST_ALPHA +, CONSTANT_COLOR +, ONE_MINUS_CONSTANT_COLOR +,
+  CONSTANT_ALPHA +, ONE_MINUS_CONSTANT_ALPHA +, SRC_ALPHA_SATURATE +
+ }
 OpenGL blending factors.
 
- Public Types inherited from ncine::SceneNode
enum class  VisitOrderState { ENABLED +, DISABLED +, SAME_AS_PARENT + }
 
- Public Types inherited from ncine::Object
enum class  ObjectType {
+  BASE = 0 +, TEXTURE +, SHADER +, SCENENODE +,
+  SPRITE +, MESH_SPRITE +, ANIMATED_SPRITE +, PARTICLE +,
+  PARTICLE_SYSTEM +, FONT +, TEXTNODE +, AUDIOBUFFER +,
+  AUDIOBUFFER_PLAYER +, AUDIOSTREAM_PLAYER +
+ }
 Object types.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

MeshSprite ()
 Default constructor for a sprite with no parent and no texture, positioned in the origin.
 
MeshSprite (SceneNode *parent, Texture *texture)
 Constructor for a sprite with a parent and texture, positioned in the relative origin.
 
MeshSprite (Texture *texture)
 Constructor for a sprite with a texture but no parent, positioned in the origin.
 
MeshSprite (SceneNode *parent, Texture *texture, float xx, float yy)
 Constructor for a sprite with a parent, a texture and a specified relative position.
 
MeshSprite (SceneNode *parent, Texture *texture, const Vector2f &position)
 Constructor for a sprite with a parent, a texture and a specified relative position as a vector.
 
MeshSprite (Texture *texture, float xx, float yy)
 Constructor for a sprite with a texture and a specified position but no parent.
 
MeshSprite (Texture *texture, const Vector2f &position)
 Constructor for a sprite with a texture and a specified position as a vector but no parent.
 
MeshSprite (MeshSprite &&)=default
 Default move constructor.
 
+MeshSpriteoperator= (MeshSprite &&)=default
 Default move assignment operator.
 
+MeshSprite clone () const
 Returns a copy of this object.
 
+unsigned int bytesPerVertex () const
 Returns the number of bytes used by each vertex.
 
+unsigned int numVertices () const
 Returns the number of vertices of the sprite mesh.
 
+unsigned int numBytes () const
 Returns the total number of bytes used by all sprite's vertices.
 
+const float * vertices () const
 Returns the vertices data of the sprite mesh.
 
+bool uniqueVertices () const
 Returns true if the vertices belong to the sprite and are not stored externally.
 
void copyVertices (unsigned int numVertices, unsigned int bytesPerVertex, const void *vertexData)
 Copies the vertices data with a custom format from a pointer into the sprite. More...
 
+void copyVertices (unsigned int numVertices, const Vertex *vertices)
 Copies the vertices data from a pointer into the sprite.
 
+void copyVertices (unsigned int numVertices, const VertexNoTexture *vertices)
 Copies the vertices data from a pointer into the sprite (no texture version)
 
+void copyVertices (const MeshSprite &meshSprite)
 Copies the vertices data from another sprite and sets the same size.
 
void setVertices (unsigned int numVertices, unsigned int bytesPerVertex, const void *vertexData)
 Sets the vertices data to point to an external array with a custom format. More...
 
+void setVertices (unsigned int numVertices, const Vertex *vertices)
 Sets the vertices data to point to an external array.
 
+void setVertices (unsigned int numVertices, const VertexNoTexture *vertices)
 Sets the vertices data to point to an external array (no texture version)
 
+void setVertices (const MeshSprite &meshSprite)
 Sets the vertices data to the data used by another sprite and sets the same size.
 
+float * emplaceVertices (unsigned int numElements, unsigned int bytesPerVertex)
 Returns the internal vertices data, cleared and set to the required size (custom format version)
 
+float * emplaceVertices (unsigned int numElements)
 Returns the internal vertices data, cleared and set to the required size.
 
+void createVerticesFromTexels (unsigned int numVertices, const Vector2f *points, TextureCutMode cutMode)
 Creates an internal set of vertices from an external array of points in texture space, with optional texture cut mode.
 
+void createVerticesFromTexels (unsigned int numVertices, const Vector2f *points)
 Creates an internal set of vertices from an external array of points in texture space.
 
+unsigned int numIndices () const
 Returns the number of indices used to draw the sprite mesh.
 
+const unsigned short * indices () const
 Returns the indices used to draw the sprite mesh.
 
+bool uniqueIndices () const
 Returns true if the indices belong to the sprite and are not stored externally.
 
+void copyIndices (unsigned int numIndices, const unsigned short *indices)
 Copies the indices from a pointer into the sprite.
 
+void copyIndices (const MeshSprite &meshSprite)
 Copies the indices from another sprite.
 
+void setIndices (unsigned int numIndices, const unsigned short *indices)
 Sets the indices data to point to an external array.
 
+void setIndices (const MeshSprite &meshSprite)
 Sets the indices data to the data used by another sprite.
 
+unsigned short * emplaceIndices (unsigned int numIndices)
 Returns the internal indices data, cleared and set to the required size.
 
- Public Member Functions inherited from ncine::BaseSprite
BaseSprite (BaseSprite &&)=default
 Default move constructor.
 
+BaseSpriteoperator= (BaseSprite &&)=default
 Default move assignment operator.
 
+void setSize (float width, float height)
 Sets the sprite size.
 
+void setSize (const Vector2f &size)
 Sets the sprite size with a Vector2f
 
+const Texturetexture () const
 Gets the texture object.
 
void setTexture (Texture *texture)
 Sets the texture object. More...
 
void resetTexture ()
 Triggers a texture update without setting a new texture. More...
 
+Recti texRect () const
 Gets the texture source rectangle for blitting.
 
+void setTexRect (const Recti &rect)
 Sets the texture source rectangle for blitting.
 
+bool isFlippedX () const
 Returns true if the sprite texture is horizontally flipped.
 
+void setFlippedX (bool flippedX)
 Flips the texture rect horizontally.
 
+bool isFlippedY () const
 Returns true if the sprite texture is vertically flipped.
 
+void setFlippedY (bool flippedY)
 Flips the texture rect vertically.
 
- Public Member Functions inherited from ncine::DrawableNode
DrawableNode (SceneNode *parent, float xx, float yy)
 Constructor for a drawable node with a parent and a specified relative position.
 
DrawableNode (SceneNode *parent, const Vector2f &position)
 Constructor for a drawable node with a parent and a specified relative position as a vector.
 
DrawableNode (SceneNode *parent)
 Constructor for a drawable node with a parent and positioned in the relative origin.
 
DrawableNode ()
 Constructor for a drawable node with no parent and positioned in the origin.
 
DrawableNode (DrawableNode &&)
 Default move constructor.
 
+DrawableNodeoperator= (DrawableNode &&)
 Default move assignment operator.
 
+bool draw (RenderQueue &renderQueue) override
 Updates the draw command and adds it to the queue.
 
+virtual float width () const
 Returns the width of the node area.
 
+virtual float height () const
 Returns the height of the node area.
 
+Vector2f size () const
 Returns the size of the node area.
 
+virtual float absWidth () const
 Returns the absolute width of the node area.
 
+virtual float absHeight () const
 Returns the absolute height of the node area.
 
+Vector2f absSize () const
 Returns the absolute size of the node area.
 
+Vector2f anchorPoint () const
 Gets the transformation anchor point.
 
void setAnchorPoint (float xx, float yy)
 Sets the transformation anchor point. More...
 
+void setAnchorPoint (const Vector2f &point)
 Sets the transformation anchor point with a Vector2f
 
+bool isBlendingEnabled () const
 Returns true if the node renders with blending enabled.
 
+void setBlendingEnabled (bool blendingEnabled)
 Sets the blending state for node rendering.
 
+BlendingFactor srcBlendingFactor () const
 Returns the source blending factor.
 
+BlendingFactor destBlendingFactor () const
 Returns the destination blending factor.
 
+void setBlendingPreset (BlendingPreset blendingPreset)
 Sets a blending preset for source and destination blending factors.
 
+void setBlendingFactors (BlendingFactor srcBlendingFactor, BlendingFactor destBlendingFactor)
 Sets a specific source and destination blending factors.
 
+unsigned long int lastFrameRendered () const
 Returns the last frame in which any of the viewports have rendered this node (node was not culled)
 
+Rectf aabb () const
 Returns the axis-aligned bounding box of the node area in the last frame.
 
- Public Member Functions inherited from ncine::SceneNode
 SceneNode (SceneNode *parent, float x, float y)
 Constructor for a node with a parent and a specified relative position. More...
 
 SceneNode (SceneNode *parent, const Vector2f &position)
 Constructor for a node with a parent and a specified relative position as a vector. More...
 
 SceneNode (SceneNode *parent)
 Constructor for a node with a parent and positioned in the relative origin. More...
 
SceneNode ()
 Constructor for a node with no parent and positioned in the origin.
 
~SceneNode () override
 The destructor will delete every child node.
 
SceneNode (SceneNode &&other)
 Move constructor.
 
+SceneNodeoperator= (SceneNode &&other)
 Move assignment operator.
 
+SceneNode clone () const
 Returns a copy of this object.
 
+const SceneNodeparent () const
 Returns the parent as a constant node, if there is any.
 
+SceneNodeparent ()
 Returns the parent node, if there is any.
 
bool setParent (SceneNode *parentNode)
 Sets the parent node. More...
 
+const nctl::Array< SceneNode * > & children ()
 Returns the array of child nodes.
 
+const nctl::Array< const SceneNode * > & children () const
 Returns an array of constant child nodes.
 
bool addChildNode (SceneNode *childNode)
 Adds a node as a child of this one. More...
 
bool removeChildNode (SceneNode *childNode)
 Removes a child of this node, without reparenting nephews. More...
 
bool removeChildNodeAt (unsigned int index)
 Removes the child at the specified index, without reparenting nephews. More...
 
bool removeAllChildrenNodes ()
 Removes all children, without reparenting nephews. More...
 
bool unlinkChildNode (SceneNode *childNode)
 Removes a child of this node reparenting nephews as children. More...
 
unsigned int childOrderIndex () const
 Returns the child order index of this node or zero if it does not have a parent. More...
 
bool swapChildrenNodes (unsigned int firstIndex, unsigned int secondIndex)
 Swaps two children at the specified indices. More...
 
bool swapNodeForward ()
 Brings this node one node forward in the parent's list of children. More...
 
bool swapNodeBack ()
 Brings this node one node back in the parent's list of children. More...
 
+enum VisitOrderState visitOrderState () const
 Returns true if the node visit order is used together with the layer.
 
+void setVisitOrderState (enum VisitOrderState visitOrderState)
 Enables the use of the node visit order together with the layer.
 
+uint16_t visitOrderIndex () const
 Returns the visit drawing order of the node.
 
+virtual void update (float interval)
 Called once every frame to update the node.
 
+virtual void visit (RenderQueue &renderQueue, unsigned int &visitOrderIndex)
 Draws the node and visits its children.
 
+bool isUpdateEnabled () const
 Returns true if the node is updating.
 
+void setUpdateEnabled (bool updateEnabled)
 Enables or disables node updating.
 
+bool isDrawEnabled () const
 Returns true if the node is drawing.
 
+void setDrawEnabled (bool drawEnabled)
 Enables or disables node drawing.
 
+bool isEnabled () const
 Returns true if the node is both updating and drawing.
 
+void setEnabled (bool isEnabled)
 Enables or disables both node updating and drawing.
 
+Vector2f position () const
 Returns node position relative to its parent.
 
+Vector2f absPosition () const
 Returns absolute node position.
 
+void setPosition (float x, float y)
 Sets the node position through two coordinates.
 
+void setPosition (const Vector2f &position)
 Sets the node position through a vector.
 
+void setPositionX (float x)
 Sets the X coordinate of the node position.
 
+void setPositionY (float y)
 Sets the Y coordinate of the node position.
 
+void move (float x, float y)
 Moves the node based on two offsets.
 
+void move (const Vector2f &position)
 Adds a move vector to the node current position.
 
+void moveX (float x)
 Moves the node by an offset on the X axis.
 
+void moveY (float y)
 Moves the node by an offset on the Y axis.
 
+Vector2f absAnchorPoint () const
 Gets the absolute transformation anchor point in pixels.
 
+void setAbsAnchorPoint (float x, float y)
 Sets the absolute transformation anchor point in pixels.
 
+void setAbsAnchorPoint (const Vector2f &point)
 Sets the absolute transformation anchor point in pixels with a Vector2f
 
+const Vector2fscale () const
 Gets the node scale factors.
 
+const Vector2fabsScale () const
 Gets the node absolute scale factors.
 
+void setScale (float scaleFactor)
 Scales the node size both horizontally and vertically.
 
+void setScale (float scaleFactorX, float scaleFactorY)
 Scales the node size both horizontally and vertically.
 
+void setScale (const Vector2f &scaleFactor)
 Scales the node size both horizontally and vertically with a Vector2f
 
+float rotation () const
 Gets the node rotation in degrees.
 
+float absRotation () const
 Gets the node absolute rotation in degrees.
 
+void setRotation (float rotation)
 Sets the node rotation in degrees.
 
+Color color () const
 Gets the node color.
 
+Color absColor () const
 Gets the node absolute color.
 
+void setColor (Color color)
 Sets the node color through a Color object.
 
+void setColor (Colorf color)
 Sets the node color through a Colorf object.
 
+void setColor (unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha)
 Sets the node color through unsigned char components.
 
+void setColorF (float red, float green, float blue, float alpha)
 Sets the node color through float components.
 
+float alpha () const
 Gets the node alpha.
 
+float absAlpha () const
 Gets the node absolute alpha.
 
+void setAlpha (unsigned char alpha)
 Sets the node alpha through an unsigned char component.
 
+void setAlphaF (float alpha)
 Sets the node alpha through a float component.
 
+uint16_t layer () const
 Gets the node rendering layer.
 
uint16_t absLayer () const
 Gets the node absolute rendering layer. More...
 
void setLayer (uint16_t layer)
 Sets the node rendering layer. More...
 
+const Matrix4x4fworldMatrix () const
 Gets the node world matrix.
 
+void setWorldMatrix (const Matrix4x4f &worldMatrix)
 Sets the node world matrix (only useful when called inside onPostUpdate())
 
+const Matrix4x4flocalMatrix () const
 Gets the node local matrix.
 
+void setLocalMatrix (const Matrix4x4f &localMatrix)
 Sets the node local matrix.
 
bool deleteChildrenOnDestruction () const
 Gets the delete children on destruction flag. More...
 
+void setDeleteChildrenOnDestruction (bool shouldDeleteChildrenOnDestruction)
 Sets the delete children on destruction flag.
 
+unsigned long int lastFrameUpdated () const
 Returns the last frame in which any of the viewports have updated this node.
 
- Public Member Functions inherited from ncine::Object
Object (ObjectType type)
 Constructs an object with a specified type and adds it to the index.
 
Object (ObjectType type, const char *name)
 Constructs an object with a specified type and name and adds it to the index.
 
+virtual ~Object ()
 Removes an object from the index and then destroys it.
 
Object (Object &&other)
 Move constructor.
 
+Objectoperator= (Object &&other)
 Move assignment operator.
 
+unsigned int id () const
 Returns the object identification number.
 
+ObjectType type () const
 Returns the object type (RTTI)
 
+const char * name () const
 Returns the object name.
 
+void setName (const char *name)
 Sets the object name.
 
+ + + + + + + + + + + + + + +

+Static Public Member Functions

+static ObjectType sType ()
 
- Static Public Member Functions inherited from ncine::SceneNode
+static ObjectType sType ()
 
- Static Public Member Functions inherited from ncine::Object
+static ObjectType sType ()
 Static method to return class type.
 
+template<class T >
static T * fromId (unsigned int id)
 Returns a casted pointer to the object with the specified id, if any exists.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Attributes

+static const unsigned int VertexBytes = sizeof(Vertex)
 
+static const unsigned int VertexFloats = VertexBytes / sizeof(float)
 
+static const unsigned int VertexNoTextureBytes = sizeof(VertexNoTexture)
 
+static const unsigned int VertexNoTextureFloats = VertexNoTextureBytes / sizeof(float)
 
- Static Public Attributes inherited from ncine::DrawableNode
+static const Vector2f AnchorCenter
 
+static const Vector2f AnchorBottomLeft
 
+static const Vector2f AnchorTopLeft
 
+static const Vector2f AnchorBottomRight
 
+static const Vector2f AnchorTopRight
 
- Static Public Attributes inherited from ncine::SceneNode
+static const float MinRotation = 0.5f
 The minimum amount of rotation to trigger a sine and cosine calculation.
 
- Static Public Attributes inherited from ncine::Object
+static const unsigned int MaxNameLength = 128
 Maximum length for an object name.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

MeshSprite (const MeshSprite &other)
 Protected copy constructor used to clone objects.
 
- Protected Member Functions inherited from ncine::BaseSprite
BaseSprite (SceneNode *parent, Texture *texture, float xx, float yy)
 Protected constructor accessible only by derived sprite classes.
 
BaseSprite (SceneNode *parent, Texture *texture, const Vector2f &position)
 Protected constructor accessible only by derived sprite classes.
 
BaseSprite (const BaseSprite &other)
 Protected copy constructor used to clone objects.
 
+void updateRenderCommand () override
 Updates the render command.
 
- Protected Member Functions inherited from ncine::DrawableNode
+virtual void updateAabb ()
 Calculates updated values for the AABB.
 
+void updateCulling ()
 Called by each viewport update method to update a node culling state.
 
DrawableNode (const DrawableNode &other)
 Protected copy constructor used to clone objects.
 
- Protected Member Functions inherited from ncine::SceneNode
+SceneNodeoperator= (const SceneNode &)=delete
 Deleted assignment operator.
 
SceneNode (const SceneNode &other)
 Protected copy constructor used to clone objects.
 
void swapChildPointer (SceneNode *first, SceneNode *second)
 Swaps the child pointer of a parent when moving an object. More...
 
+virtual void transform ()
 
- Protected Member Functions inherited from ncine::Object
Object (const Object &other)
 Protected copy constructor used to clone objects.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Types inherited from ncine::SceneNode
enum  DirtyBitPositions {
+  TransformationBit = 0 +, ColorBit = 1 +, SizeBit = 2 +, TextureBit = 3 +,
+  AabbBit = 4 +
+ }
 Bit positions inside the dirty bitset.
 
- Protected Attributes inherited from ncine::BaseSprite
+Texturetexture_
 The sprite texture.
 
+Recti texRect_
 The texture source rectangle.
 
+bool flippedX_
 A flag indicating if the sprite texture is horizontally flipped.
 
+bool flippedY_
 A flag indicating if the sprite texture is vertically flipped.
 
+GLUniformBlockCache * instanceBlock_
 
- Protected Attributes inherited from ncine::DrawableNode
+float width_
 Node width in pixel.
 
+float height_
 Node height in pixel.
 
+nctl::UniquePtr< RenderCommand > renderCommand_
 The render command class associated with this node.
 
+unsigned long int lastFrameRendered_
 The last frame any viewports rendered this node.
 
+Rectf aabb_
 Axis-aligned bounding box of the node area.
 
- Protected Attributes inherited from ncine::SceneNode
+bool updateEnabled_
 
+bool drawEnabled_
 
+SceneNodeparent_
 A pointer to the parent node.
 
+nctl::Array< SceneNode * > children_
 The array of child nodes.
 
unsigned int childOrderIndex_
 The order index of this node among its siblings. More...
 
bool withVisitOrder_
 When enabled the visit order is used to resolve the drawing order of same layer nodes. More...
 
+enum VisitOrderState visitOrderState_
 The visit order state of this node.
 
+uint16_t visitOrderIndex_
 The visit order index of this node.
 
+Vector2f position_
 The node relative position.
 
Vector2f anchorPoint_
 
+Vector2f scaleFactor_
 Horizontal and vertical scale factors for node size.
 
+float rotation_
 Degrees for clock-wise node rotation in degrees.
 
Color color_
 Node color for transparency and translucency. More...
 
uint16_t layer_
 The node rendering layer. More...
 
+Vector2f absPosition_
 Absolute position as calculated by the transform() function.
 
+Vector2f absScaleFactor_
 Absolute horizontal and vertical scale factors as calculated by the transform() function.
 
+float absRotation_
 Absolute node rotation as calculated by the transform() function.
 
+Color absColor_
 Absolute node color as calculated by the transform() function.
 
+uint16_t absLayer_
 Absolute node rendering layer as calculated by the transform() function.
 
+Matrix4x4f worldMatrix_
 World transformation matrix (calculated from local and parent's world)
 
+Matrix4x4f localMatrix_
 Local transformation matrix.
 
+bool shouldDeleteChildrenOnDestruction_
 A flag indicating whether the destructor should also delete all children.
 
+nctl::BitSet< uint8_t > dirtyBits_
 Bitset that stores the various dirty states bits.
 
+unsigned long int lastFrameUpdated_
 The last frame any viewport updated this node.
 
- Protected Attributes inherited from ncine::Object
+ObjectType type_
 Object type.
 
+

Detailed Description

+

A scene node representing a mesh with vertices and UVs.

+

Member Function Documentation

+ +

◆ copyVertices()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ncine::MeshSprite::copyVertices (unsigned int numVertices,
unsigned int bytesPerVertex,
const void * vertexData 
)
+
+ +

Copies the vertices data with a custom format from a pointer into the sprite.

+
Note
If used directly, it requires a custom shader that understands the specified data format
+ +
+
+ +

◆ setVertices()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
void ncine::MeshSprite::setVertices (unsigned int numVertices,
unsigned int bytesPerVertex,
const void * vertexData 
)
+
+ +

Sets the vertices data to point to an external array with a custom format.

+
Note
If used directly, it requires a custom shader that understands the specified data format.
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classncine_1_1_mesh_sprite__coll__graph.map b/master/classncine_1_1_mesh_sprite__coll__graph.map new file mode 100644 index 0000000000..6c8cc8e398 --- /dev/null +++ b/master/classncine_1_1_mesh_sprite__coll__graph.map @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/master/classncine_1_1_mesh_sprite__coll__graph.md5 b/master/classncine_1_1_mesh_sprite__coll__graph.md5 new file mode 100644 index 0000000000..c6525819e8 --- /dev/null +++ b/master/classncine_1_1_mesh_sprite__coll__graph.md5 @@ -0,0 +1 @@ +e774322c57d6783f2dc650a9372ee082 \ No newline at end of file diff --git a/master/classncine_1_1_mesh_sprite__coll__graph.png b/master/classncine_1_1_mesh_sprite__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..360115851fe30f8f722e64718bb5bdd81302fd5e GIT binary patch literal 78104 zcmZ_01z43^w>FHTf}(^Xh!TQ`NJ>jLNOvttx zd;b4B=X`5F7kgc>oNGRFjydAK@A3FaOA6n+^Y{)D64E`9Hv+OqNH>j;kgoNhUWebP z-E=2||J~9S6BaHY*GX=_!(k0I$45{Mv-QGWPHZ$`*sFM+TLvmP%V+5wX9F z_>bgX@@nk@mZvhQ%|cX45`pz`+V`0bekf}*l2G^y6}(q|z=R`>ecR4S#Yr_1UDeH9 zyf~`o1~U5Z!`-c;4oTMCF8|do_Qe`s*_^=}FoUaCG9FbX^53^e9+LN}{`21OwiU|1 zzwWs|hyL%|gzAGhP{Xh zPDKj{4i5JB*Jis~33x4;v&qyWBODxF_Y>PF$Yn|DvHd%drGKve^7m6nOWq&Z|9$Hb z`PBa3w@B2y8_5Zd4i4V`{6qhrFXZ{UyikQqOIvV$dI+;1PI!6$@5eou;SXL*OH0Yg z$#xb83!QOkLP0aT#~g&+{r$UJ(~ShUtsd8q-OjdKa96IW1B7>^c7{2gGa zx!Q3f`Ptb{JFP|S{?P9RFCs1%@(58cFRv&nm7NiTBszj&YwU*+@N1L4bamI$i>X+q zX(=8X?sS{saA~!10B7*qJo8)Ig#7l zO;GUW@#&lQ3+Pm|v{!#9DPf?e|MZ4*d3ky77|*jp(gVllt#+t=1R{at{!0#P;Z@7}&W zQmDmmZf?%Q<56EJx063WcXbaHaisItn4K)H3}1}PbtMy(UmvuBN+ zon|vX{3s&6RLOBW?vPSbcTP>!U$n(A7!)h#ibc`%(jKmj>>e*BiDmRH_h*IRF=WCv z@jmNJDB6DR?c?L<$*Z-r(pHV<4Ze0+{~zj^q6e)mD+zBrm)TQkj&bv#%b`SC-b+WuRO z<1WH68Ii~3dSauf7#R`qkXW}rQ=+-KIfRgNr9Z1XmdRu&SB0PGvr6WJYb2qc-AYWE z$NKu{xw(_vs@^tSCn6%^`?)fhgF(P%bF#O5vi&BbkF49!(C}BRm|+Ybua9rb*hPrwYG^%!i?RpRRY;4Oa z)zE8`GxjT(I0%)*0yKL1h88gSY-}p`aVqybgVB94Q}a3pd#CG^&;Cxg$H=yIoL5J? zNI6@c?8OTc3hdHP2?+!NO>N!XEKE#hofn)=dxa$>>@G)J$-G{SlpzG{ner6E!T2Ke z=_Sae;o;ca-1S58bkClpwTithLNMj){`jDQgYytuaL!7-3?U&SFkw3BaW#owj*eE< zN_>uvWwP01-r*4n{b?`S+D)+UJS0v}O^wwsd|+kc=fjN%(ToQ#BuzW<;=bNUk$yx(R3J_MIzIBE_|Ba+ z{{YANd4y<&e^V+#5+9R~Op35jyJ=~$j{EV$hfH^TK4Hqr$cT0KN~@^s4twfLn3?5y zV#+Eg91iorTfRK9j0^>D%&HpEJjM3;LE|zuZq0n@&lHpF8&AV^I0|6Z7*U^YhCS6LFHdXSYkidhXt}LAX!< zYZ($&DBd4?dU`^*P7DV=%RGGe5PbVYv7Q(u1~`!8wUTZZSJ&O09jC*M^J!lqW0Q)# zch2LLmQgh7Cuh6e6{aJyN=m~e2Hopp6)3lE8QVp(SWJ$VnOq*tV!U{f_4DT&r)YkY zu3vM{a}i|}$y{54J`2qu6g|x*v?V=j8@c zQ{SVeJ|+n*s$xxQG%64AN}NpE^h-%G7h5k6t7dzipa`)nJ2y8kM=m^4ad7bErBilz zdycUQ+(Ox&VpYwTFJJNt3)M=>GKFMRRKyG@A6HnsO-{?nX___KKIY)$q-Lv^=I(v_ z_S@{PEv(6rOX7kQDZ!t0`8_DW_J0k&2=iK}+^M}OU|yN?QOmis(BJc8Mq2D0UD z6Qf}K^N-KO#le^++MPKnoYew^-@SWyGir*832~|jX=x!`;kQNP*4A|q5h*<1aQ&9z zJyRkgu+9yJsdc3l6jW7IR5di@6cyD~ROA#CUPLMNvVLf58|~}+($;p;UKSC-1Xg0@ zXse>4;I;i2TM#DA-^jg-Y9q-TrhT+3-15!CK=%g&eIFBjUz1w&pNaR}vq^G8Nl=lL zl(e$4I)Cg>Agrm$PHwogHewOaeffLL!rgU?r)|3M@i3Kgk@j9PFS_@~YBoJyUKKk# z5lKlSb8{oRaw=M>i!H68`SuWNYq8}N6mQID&(y`l_)Sc7R8{4Qesy$p4Gawpbaj>P zE@C@yP!meE56EBM49?5X&&kft$oRGs9ttunG9N#_kA~K$NGJ>2 z0v7_IA}jkcOrcFT0^%;cik^rFTt4!Moh>az5s?gWMH#uY&+f@E_aeIUGy~%=7RFy* zU_OeCU5SZZiHmy@9kU!4yV7s1@%OmZ=vF>le#igM-ItV(`r4vevMwGL@5arKC)&r$^i0MRU=``Lln?tdB~z+NQTlHS}jZFuyPE zo*a}dj|~fz2xZIb>EpbB?|(l3;>BW1i$OdG9vp26)S_}`JKHiF>k=#L5*zCWZ0xFU zKf1U7GL7VU`xNsLCW)z)ufKn6e0-m$XK_4!%tE(8x0S{Cn~v5{BYHG^^!APp9#Z<^ zQpWpt?tx9i(l|AI_Y9E@{xhEf`tgWs$S|0)DH%>&5dMf*2|Yu}(QC@$&(MFoEN(iCe`h>Gj;&{X8XeCT& zb8@KGIl$=<$4{U+P-tSl?4yb_g#ye%MddjwYX&Q8@tP@kG$R+6g(~Z9_%g1uvqp5Te`~0oTM6X$NIhhFdV?WE24DouO?uVJII&^-Nx;J*BP)xA8|8TE=A@=31ecZ;t8b%~ zWfA`C9=C5ur^6a06-9JfY|TmuY8nv{3M3JcZ!(^%sO*JMF_cs$^W@8B-zFX%#Si@% zElKk0SM;yZSY_2XcoQA>=DrASU&x0#JesHjbyjzqsMj%omak4bI$B6mkQ84Uw_OMM%?5kUali$N_ zKU{mwGap`AtB4F zd@nUC%gn%l0w>O|Nq^5XAtC#XZlE9OpT$W;t3vkR2FEg09bvPo*w-27H!?yG!M44< zp{1o0u8|SX<)zO5(h0ut|cRi@y-P9`3#t%(y5+;nn!wEyRz zZgKx4Kw>1O&f8k({4wP&b##8{4e>ej=dV9Q4vvlabT85o5R`hI-1Zp?bb4o5R9g6( zfq?1Hzh;2)-q24r+i8z{^<>{0{{4qwNyY4eTBmc?&stk=Ux*L&bPfzrSXqg#8aznk zY?lye&B}5%EDrPx3c4NOL;nX(=;g-_!U+Cd`?h zg^R`a8b9)luDHDv+%BZZ0vLZz^im&;awO~@K^Vs@1d^a%{~#tDM1a+-r+xWya5(jVM#BXX%*OBEt>Au0mRA>t3+yeh`ctkoE)m|@!^W_g z^7i&tbNcC(`HyEnfKNa`23Si;$<2_gCYzsscE{ao{2C9tT=qawk+I4W zlansvm33}z=S~Nu+H8zVRM>YE6czpS3;Fr@%=!58^&?Tx(6|zWlYKcLglpIQnc1r= z+e6<2mnk4Ho-KFS*LMeS3*q23Cb;wW$OO^BXl&1%B2m~vcowl?pIf_WpZ&GDXMcXB zrtU+Y|Hq1H@4-D1NaiWFG-oDpKEcJ>7M2X|7#aEA-L11TcTKwpuRn#?AS?T4^v92J zA3sJVYJ^8eD=8?5#XjErJ*S(J6R`bvOE0dr)KQ*dzt-8vpu1V{PZn2u5PM!~R3Ji1 zNFI%nmnHutz3)?axMz6y+1%V&c=&gClS>tY$kQ((H!*qO?95&u)E|Ux{OR0Dy(t@pFw7>DuGW)$o_dF0K=-_&6}hD0y}Ds940ucs01^ z`wwyZl)OyOc$moH z$il%v2A?HzAzohh&i zybgOwO^x2aedUmO*!ee*lF@#)Q*v67p8O15s;TMIY8+qaCSun8z|hazK$%yr7#fRs zgJE}+6UHYg5#))ft<_*}Utwukl>W#1Q`_%e4W#4?HyM>8|Aj`~Y47}SI5qW?^C1qk z@+;Hv*BCTWoi=Jn-k7pVS#ac&1IT&?AIQp~tz2bUVpPo5)(?!0>DXRJ&mLZ7jmajw zFsW6?qgN(Vbvc*ko31)K>ad4ip8q_4yh2Za&BK4khk`OE-Ho_8OUfGRR~UtqK2z?t z&D0GgrId1JAvPEW$wuR9wG=Iz z;9f*t_6$gTPLe3BV6nF?`w{==)FoVl(>uYdp0Kl+G;6nhvJS~*Z<;f$D)W~s=fr!h z=0o#{cX~QUgy_WUxZi804cao|EoktiTcQvhlTW2{2BT=XC+p5Q`)?l0Z?EjQ`UN1` z)hX>!M4P`Xw7e5%XYyjWz;E>wpKa(a~*=l>D0jJDxB?1sI5_t(`htk`<9d znIMV@qpvI*F%VF}a6I-Nu+bI!r<>h%7bj|_rp?iG8N)zD*WA#j6Xh+r>;&tG472(ME6`xEx8l?)6zn|rj&C1#iDRXadYtc z>9ns-lQshk<$$-dBg&M0qjT@$egIkJ*D-Llqoc9X*#1|H0ul#`6-rN;qod=^KQG(S zTkOaYqOJ#P=LPj#v=KP;Iem`c9w#VXFG+*0N=x@(p!8xfRv`osu*K)RhUvnK{ep%tGDpJK?_3wV z+EFkjmCM)GV;E41MslNw?jp?|xe(afKe4xu%a+qj8-`3(DrtekHFkGS9v`}u_Rq?HHP_OOr7lY-`3Cw2DkT(<4^rCi}lQ@j~2eBwe=Xb8}|Af zzP!PU1?nMhOdXwCjamUt=R3>tp5UKXXu;j^RQN6i^|;P0E&}Q-_7qcDS-B&T^J`^g zv<7WdJ8%u_>+3;5L5tlX&W+t7h{c3-?ySJ=l&_#8;)mQ|P;BeExWv@3|CawH6YaT%P=W8RU6{f82 z%YA8kdnDNR;m$oaP(nnLPotU5VgVghQ;V0)j^}hPudjF4)g>kV0fa$iHUE5peHjiHSym!m~lPY+7 zb7xsWp2S^lUi(=w=h!6?wpZPyx2Y)=iZnv0oYq@usj2h~44N|!YbY`$;+kzx!QLhy zr|FSMPfu6-YDdk)G}zYWj|m`D7w{5ub8}F({&=%L)((eOvmVsHmmBqt|l#I!t3r*ZpidU{&Z zbzgyx?>eXVbP&s=VZPpbp5Lph>~QP;{{Av)LcOkd8p#Q_2yj+Z3*R;&W_qckgKcB#>(lQ zc)&^IOZoZpXR<|a*r!iR5w^hgWze&-#&nVO?Ck95cf~vI%(YfbIspmc-V#gz){N=4+9daa2c@&+0rQT0LncdA&EI<+p zW?`^7S!+{^oFe_}tGz{psGgzW=ZuVp1O&BaW6Vz73l7fCEGlQY0EbuEdGl$xxYY2a z{C=0nKyP?{vL6!@1Lp@`z>XlJps!7QJq)P3xBj;0sjpa+;>MW${%S#Y5*NYg{&4^4 zzDaq@4Wv@P(9n&K#9dIT_0wiaCbXGyz>JadykGeDxZ-oWscC9XO-xMm_sfyq_wn}b zS>@;FKiykqFdiU>V-J)Gu%hBrI2NO&MhhJ=E?n-%JM&>=5>7=7u3TVDu^vgSiKP8Lu#O2}U)TueVR!UojaNU`kkm5cE?|gi=>vvy7^D4wEZnchV zY)L>BknEK_bq$FzAoVjup|6&+X;9#GCAk|y5QgGZ9OWhw_4dxrXuUgkzYKf}kGea_=2dETS%wp};{*%_y}BrKUXmW3a#MZy=rvHy7wmd%`2aiU z&tCJ0;sHi>_a!5kd6o5IU;7;&&*dJtjo%q7TjRW^Tu3QFgq*RdpHEnhF$g)5$wf6a zFRNP0&z92md*N$Xrd+~OKUY>(2LGym|LfN;Uawntj~~~4E83rKm2&OO@VBzIe(6s^ zMdfl#Y-`2FHjcrK?|gCQzq7NV)yTX)b;*9~A#%+PLPEmTp}Z$tF0Yfi?QLyq9kxko zHE5zxP*BFk#-2QR(w)SeL{oye49lxR2AJb2imt5%1_qMe7jbf8t95Jq=U(ix=_)PD zkS^ND$OsM&PD)D39v8S?0%p@_h(mNb&9%;lldgyA{;5klMF2xa(Q0Pehlyrj3%2Ug zv;8hJ89q5Wdi3ZKkkw4Mko_RlxTxE9cz*qQx-s#Ui5BSg^^J`SdgNbquIwQ#CN1X* z6oUoz7mpu3s@Q!`nwOf00JkRo~6ouxC1KBpw^Iq@=nq`Kqd_YuBz_TwK_Uc1=xjGcz;O)6+u$0bxU11Z5t_ ztEW$&($Q@LLyd=r2h=?{V)<-&GykksoZQ^pV0_kMa7izu5&;Pi5E3F}w+rml_x*3I z`}od#WR$wI9kCd3W}W6hcfzZiER8!!NQF=``BozALy zC2-!&?I6%N*=odq&}}hQCqZPct6OR^OvA~^De+OKCHT3wG&a~L_vM*2(4~qwSyD;) zRa-E0FR|-hudqekab{iJ1q{mAtFNbb`-W$uFGhb}XADD2ON(%dbPsJ3m#eXb#pThq z4&P5;YBk?po)B`mR66Y&1F2r5eAX*Wl#!m!`0ITg&M0t?I@;Q>L(3A7PBR#EF|x4W zqTYa27ZemUt3JD><+9a)0-+QrvLv??BcRCw>TlkYhyi9P{G}P2x8=S&>uP&zE3r2= zHZ}l<5WTSYRyJ{nh@?=nFWZOkJMHH;RyHO|iTUenY}Kugwx~08t}T5+9Jh{CSWHo? zmiM$bH8pu-X3L9mdrOInn-*GoUD`b%ijIj9L2YeoOC6?+5amjOWbShO6{8Lg!hD+h z@;IcVq~!hk2C%d*tmO@hDQ`%tZI^wF)Iy6O0Lc*7)I6OFbzSl41i%!61xAurQy;YcKpUBb> z-C|?14ha2i29L0iL3OiD{@aeA;0>r2FD^I4pX-D%HIRJ09O(?!d|V(Pc{ zGZGRUY6PSEg-aQt_G&tDkPay#5RY+j?IGXp=n!{zzbx0N6DrWCEjJq@ix8~`flGQi zDFz0Hg~g`p=|S)L8%@1Hd#mMA4$gHNb;R=KWi#k*u3ej2oNtW@Mok{Oegp3dXt)cDiw5x0)rCy;02D#+GyRm{4e6&Ld{72S0mHMIni)wOz9<=<0c9; z>z|87UZuZPCMq=!+p7ijl2ePrEdQ0exoyuh!B}ObrRl>KzY2M&aHOJNO%rX@JMFLN zwMXu+kFjuay26l?lattjOt`vXva+)I>R-#@08vs>K6w(Cz;1s5Ql>qI-62gkWK(8m z;OU8piC?~axra0g@v-9Nmteb5p&{Unp zmIE;N6i%!lIJqF}boaUBkc1626sC=4U%HFIbL0B^f`U!Z0Z~v;ECtW+`}q1EZcb@x zY9^(A{{8!Hw*06X`#mqZ0Cs^g>dNF#Oa7x+fxs+cWV8%ZBf`S!Z9_gkJG+jI{NVn53gC*hwaFyomF494 z5$cphJ~%@Knn^J+c=zvHfsh4*>*%U<+9T#mdBw%0!NBh2>)X=cg`!8V;^cG!p=8YI z3W#zz9?erEd4|D*L!;&Z+kF!ahtWY>O6l5B{pD#r*g}M88Dxx|hY`0zxZczX zWXQ4i)ESArH=?w3bow*fhaJw2ws+>+^YZd=sS$I(e`A8rm~9R^-d%ixhgU|QI3zbz z=TJncqceMPeyUmLqCyh|>NDNWSSHY!kX)^{nAxBXnfh{8O zTx;-)!eUp#?6!jqcW%%V7FY;>0TMp}dZWJd;D86P%A*qJ><2@`q664B(@*jH%3?|H z`&CpNf+_0Jk3jzJc5!TAo0cjeLHJth`wc&V9ViE(L}It!5RZP90@&1qcHR$IRpt*X zi%IT7;RRw65*g$xAUJ~5u+DZh64o%2F*zw|s#vdmWo6~D@4(YhNNP*L$3RU5#Wvlm zS0L@=^j)i%3mZ(i9%vh+=H@%~_r5-WbNzQGAg5KYciQ2h82vy-e-^AP^9I?R=R`rXj@ zd0)LL$Qz?M9E;P^(nK@9T()N_=19fA?k&*dhGjpQ8hBz+!&_h>{Uo=lq#wd`X=&*{ z=maNHlQCV%pFg{F#S`V`MOjR`NTx{B6QJ{C4L!{1u(SFc0R?&w@2GXK&@Cbl#-}&| zEC4uIFNlL@cRAiU>1KS)abhTmh9NbociF5=HS_`N83f1yward4g8xyye8jCigNVL1 zSql}Arp5V)YNlf7%#SZE(>Im4MA_+A8hYt4@^d9zovNiH5qT!f=P#&39?{KQ3B-WR z`5F3*nwmNqk004k4utSf*E=^M9T_G(ZOx8=+aP!$fE;oD;HpvJJ-QV`Gmnx6HM zqTHRKu-b^2zmSnpO3^LyiI53!T)RgT}ixH(oKl_CvLma4GuB8cROy+H$#t5&s>U_Y5+4^lAD zvBHbQ`z{{+kG3}B;e2&HJv~UYYOEI}d3oQ*#EdNUrU4Gv^VTWg!-o$5W&ynQfDiIZ za1vLw^e{kE%*=Mpfp~l=A8FpbayxT?EK(wlxmV#4;`OOPk}I4moCjC0*~LYBNKqzh zo$I$w`$b4e=jtxq-Y6=zW=iy*pK(N^qa-t=a%KTWRy);2><1gqxtuViIKj~#npG76ANUJ8fV0wMSuoXS|HElBIJa?(8L4-k6u7n z7?M*i?~kF+gxlt=s()R}Yu$K6%?>kkbgTk96(G5difZWkincyXOlf*X8xOC_bY6E+fg_4pR zlK(qBp0T$b*GpfBVVw6)y_Vn_YSc=n6O^Hn?9aH?;;UbxNxS{l1h{roN4h5jp(7HIJ|K85N&WEKiae4Ao8XN0i*ue5h#>3d<%%?#V zr|W5u>*eD`S)_GVT>vUq3>$Wia+H4FpZP5Ni2$Rdw-(b-TiF{ zq2g6-e)Y=pgs+mhD=_M%q$0)LpVLChz85-g`U;M4-10As0z!-bx;U&eCuuLq+brU#byfAoo(w(rad?ovSa(lj!o!* zO-S2}pPj%}EDyK-mZ8%1_YHmz&{)jR^Z-`{NYiDzNtXs!fnj>k7SaHJV=~*5m1$|j zWwH9K){&Nu_>!-Y&4%z4I)%3+I5!)iw9QvN@G`KZxVYq>eSZt zHQRa`wItwW@W1$D=IS37D-WWxI40` zW@k{;YYCf?+$b}VOZbFG^}L#mY2FG-8L=d@wVw=@Lv)ric!EIoHWmQwc z4F`Q z_F5`dz5NuxgXtnH`-%uNX^wt?O*-HKEo8_is6pKwo)hyVwT|1ZgQ2jG-nO5qv==IT zREKM@{}6KDNJ%+gUf2VpbY*f0p2do;=K+B~erosqUcDn|BT)cBpf%e>caBn!v)D}5@Jl7?ZvLV( z>3C!hd+O0OGhKAHM6KeD*%^i7&tKJD{5eN4Q;j_PrJQoD{%?+<0k=vlU*95qxCMgi zz#cNoy&T9`X7Z7uKueOx;mD?PLbML*)LUm`^jq4Z*xI&164?)p7>fD$=dj!|7m&2a zRLs@qi^>dTFYlmW2gKUeRph@^QpoD6l!<*L6K`1(-kGuH`^1?Ba|NyU9)!8%1Yo?k zq_VMBcE%BPWp=X?WqNI&28*m0LG^^DoY zg_3!)0k<9>ZCK^kmmxCW)JcDGsdJda5l+1AoBb4quBHTrh)sH>ptwCp_7@^NCN4iY zB=MVicWOvo;?1b#%4(0X3OT6pl6k&eZnr%BYx*9NDb@0pMuMUn=R4DyqwK-oU%hIkI1@H>0@GXNW7c+)D!}JwoS|H^mY2lJBL9on0mt77>*O zKATQ+V$hQ;$t13iP=t9nQlT@ED-R5%6`Mz?Uy`WDbz9<_t#LFD)Zk|R2ES?eB>dSe z2gk~4s+?=L&KD4)HCn&s(4{1CxHuv;!=*D6Yv+2{UUG7-Bcm)p_smeSUdvD(d!GD^ z>opJDX|@I%ecdEC-pHz=d4ubT|46yHSXfA^C{lw}g#Qm73&b;o`1q!O3USiVHy}Q| zP5l4CcryP55Y`Z=Pg*_j;*XE!EFj$OokZzIvtTxtnw>(X&n%^ne{ zcRJg4W9cH_x~p8{VEOj#({n3emIen0zuK(>Hg^shc(>E_3Lxa51*ScURw|Zp`Cxqv zK=T~MJpX`zlG4(@^9|v?c&+^dmG6T*MOjf1)aP{c^gCNyKik{cZC3`MvErAhowb41 z0yX$+J0ChUq=cWVm*sdh-!oqqQ7mex9Ml&7a%E+*$_~ad*zqH*&MdI;Y1*DWRZ)$* zag$(ccMR+PeO(iiHZYzZh1*W6aNW}|PjHkoADWGLRP*!?j*$=%0qK|^>PV?kSW(e- zns5lTp)mXx9PuxeWHXa2@h{O-;SykESQ z>EpVshf?@G0NS`6>&28a8;n;H6csI@pdnqN28fLuKa$N=O1058Hl`pJAiXaG*f(}u zXJq?4WC(jhP-doQWgV^#TO4go)Am&6<(Zju!Op1@0Ns>;n;^Wz+Emk;r_kh|WpIab zXGOzG{_g!dL6S)tGt*k^jyn|w-IE4v_()5MeeSfJ=Ux52Eju}4*y1faGb!rjVQSkX>A=1cx*6m9R|AltjQUAZb=02FLRQZL4!qaaliyP{D)b54j> z9}#ZhsNCBO-!sXe5F9?Wd3eWXdwUxYbxds&lhwsV+((Z<%mi&6cn=;hK*k;$`0|S(t!GxSA4Jbq$E=Psi)83dE7$FcT+jNWf_V%DYVsUK7xmuqIB%m1Y!Ra^r zB4n?V%6sNPxl#8uUcl=vy&G+i+Q&!q92dh(*;R+_G3a?ZK%~>wMei+VJt#N(dbH`D zBu)P6_&QSQ3pu69!tSO`wKWFaJhMDCM^BL;& z;H=0yN{}W#0uBMF_LSpdLX@2laMsW%1}|naV@mrR#sM0lBO4h^n`b;8Y1*QQS5N1G3CLg1t`@(_oBV_YaIwWIs$a08mlkrYa@cyK~Zwio+Yy@F8xMZPk$o&ECIyg939WE%C@>|%RZ2?Hng{vN566lFZSK1h_ z>Ytp{kdo>i8)Ii?F6T7?@(WN9IIch;cz--QJA=CV_KoXkXaOT72DrGm6+IuI=?@^0 z+rPC#rgbB zrKY9=nq7U-B@xSPhJf`_QyZW7Y7d9t{QUejakm*M6;%fiAArU}Zxb6^HIrE%A0HpH z>93E_If04!dvkMY!^`hA$54;0-DUM}E~}EXd{!2xuX{f~qbx>|WvEA#ZTdaZ(oJ_h zJ34LjJvrgK7W4l9Y-kL9Gl0I?HC0qb{*~q4`Xr;ge0E&f;!PRZ<1exJIw~MFvdaYy+SLNAq(;o zU}Vlur!HxzsBG-*p=Whttb(?-F_?fIn8}o^tYHXrP|X8U3*v^L#_11D+D<4hUcBIY z1I@wT-Xq7E%vAyXA7>iYMSyzax)bNWEs(WKU;8NV3EM48i)IaH(K*}2gk%OviH(i@q9Q3Gvc0?e%scSO707Ez z5wQY(0Vwm%)>d%j&%JM;pa3mZ>oyB?+Z`X0XU`gkh9WURCMr;1nu2u?Cucc@hq`p+ zwn*CCLaj~Nu{v$-BW%WjU&{8!JFlv0jCU87)o9`%m-;>UeNc~GOvBI5>KfATh`!M$ zUeHYq>daz({`dK*VRPufvddFM0NNNCsc2)f2Rz6U%26qh4K=`p0JSm&ZHe*}39l_@ zfNKMok=~#SA85}ESrMX1wb}m{)30Un80$YFrg6G7v-7}Jb<_t6g!$RhYSD~!Y5pk7 zOy+{!mx@YG9sryoz4zd@-?$c&Yt@~IM2N9lgv^um(YkFHWI`1lzB>x_`$ z?C&!%Gf%>;LiY!3jjACKb+d3pK!FAF9FkCSQc`cszF49EiZ#QPkNLvP?D$Nnjhnk` z|8X%?RnM*5;@zQZZG`+s-NZ`R!XoOy3!LWWOsRwubxX^eSDqV_4^`N=X(%(_HI|TV zr=d)$kFM$&cyr?LYTNm75F&`8-p0V#{Oyn|$Nm>3Q$1!!p72sb?C#lUeIJ=Ij!Cuf zXfhGYjSl{N545`mUE|OVXuJ07I%Up=^!@ut)$dpC3-0)Q`tdW>vnApr649k2;Uvj4 z%(O^PfD5FXSdS*C%)VC)5mpK?u0~BZ*560dG|A2qdNDUg`r*ToN4s7K!PoQFFw;yy zuWM2N(E>DHLwf3sNuVQHfVc1f{i_j~eJ)K?JUFACkt=~OUPeZSOwf&6x9A^Y1cW8cmE7@MJjd2w2{j;2a}Atfn$O(abc%Na&wb{^fabZk8oAMes19 z1400jJ3rH|dTzOz%2E2xd^4mTJyc}YDB$2uK@0ZELz4Wzs|}WIpfessXPOIm+o~sO z4;{-`So8_EUEe{yI+IS3*=Q6SjDGm-eO2Q>Rh{uwi)Y6uS0(M1i;;O@?t9d>b`g4Eu-RVDvk8j9YHCgb)#7V)ne9FVt#;1a&;q4jM1Fu46b9sDEV! zMiRs%p>ImxP4iW$O%CCp5*HN}fiR4ok`2U8zKlmtn1pCifpaxS9+ch^Ti5pyex2E+S!I*qvz#0L
OKvnfC|EyY(b`y~8ASq+pqe|fA&^K3)PXH!I7JDD8e0XX=?e2X)?^JS}06hzf zdT4fVI{48XB|R0-Y7Jt57ZR~^Yinol=m+3NOE)&lSD`iytgCY~H8m9yY6jMW#q?K? z<>DQ5^db4@uYu%lN%$<6_Mr^deSo=T*}#dt&MfuCQs8co4EBD~WuRt>en(rxi-V2Y zwyPu5-7=KAHbwuqtaDp)@${}TDWff~mLL++Tb|QHcGUm-K@8lkEUTNFMBw%D@M54* zba~kka%@GyN0^u&feGDT84L`(%feCt-t>!n=fM!vH@v*OP=|1y7X!o6lfrM4<+U(s zgbxuqIxA}tm_A5kZEP5cbpeV4X97}4pglV~I`$3^hvT;)WNW$|XNZ%<(dh`CzX57_ zVS1XEc5!~*41yvgrw}P4T6JL?B}7DyX98%~*4Ll>01mRqus0PLI#7XtVg6ZQ5OErp zRp;k#WF@&l3fKb#F)DEoZAu+HJOX5P5)=_vg)*o%LFO|#ISJN~Go|TeDX}162+|Ws zjTd&0Aqdtx?vmA70gnd1fu~TwC&B)`KZ1T3c=v~tipr|0PaZuA#AgL<%%{n!R&hl% zg8@StFF?y0$8ou_?|_ul^;P>5RQi7hkiRb3sHI$J9#(R9ITumNRvUWQJ` zGAIAHK|KZn;Dc&DJs!5Q=nIE#K=GKJ@d;4CeAR2maf+#13>D4TqgK?`*7iz3x%U{v z{!x5HorL&!kOA=( zERR(bKz$!UsU#{U2FCks5enShBu?k%d1xT5lu=NC8m-J~UbGC62fC<)gcst`m=7N+ zz^h&b$aP}=e>j}>KBuSaf_(5wnuBJLd#TE1IU@l2z3}jGple_&fbx|BrR*OS%;2Vd z51)xdVs(S&5Ondg0(l3TBoJr8^Am#b7=*0XK~)2ljyyT`v8FRswr_!IP|YBca*2$K{nO3ECtK1f|dFpDjwxZK^{LFWOdLgFn*8u8JE zsc`yfmm9Eb=>OE@V{b1(WwZc%JaB-;nIk~mnom?S(a>~tb#1_w*IUm1Q=M%vN{hn} zWEVVzWq*JFr9U`>NYRWuQ@Lz;aF3So6cR|#K-vRU&tFM^(``U>z}H+P)v|{euZ%uM zax*8({D`^mk>_c0D!o9VCxRM*B3-CW>F-H`SZ}LKSf0e#CB+|o+bg!*6@6uD}?|Km5p6u*Y#(i z7f#Cf1O(s@0ejg7aDtfb&DjSnWHSR<^>Um`^9cjh4}>NIo`f{ z1cIKq-DA*XYYdBgEN2VgB?#$dOg z#3#kZW(NCwDLy`VtDXIzCvs0+k&qr$nsRn}))SO(1^Tw|sZJ}z!d;E+1{K|g$Vw-Pxv)K94Q?kP}2d=5kS zd4seVp{iPcak2`u{^8cv(hNt!O*obi;y-jx19$<7=^Uj3oPZ|2ly^`TLzn^$zD_9w zAaMQvhpxAPs(S6#c$cDplz^0kN^GRNBm@x=5D=8^P^4Q@N*V-2M5MdByG!Xtx&#&- zQj&MB?>py?bI*6KgTdHiE3o*lH)cG~Z^BJ5CmD7x|9Bg=)Q8ixOsI3*x^)YZ;_p{; zRPpTt)6;pQrqQzWA(GvopAQQgry4q9E3=z#@`5T9XwpfDh|VETwLDX-OGMH<{CIhe z^OAv$4cgb3$xvm0cTB6%-3^p1@NZQZE|1)>y_?nQUCK*K?Tm~vW_=XLRq5Pn+TQ+B>ZrxtgU!K#St} zpxr762?}yC#ePZ{cmNftZ(qNbS@iyza6UjkI-0Ud6!n;GYxBv{j{5RNJaf3dt`0OP zk0|Bg7U~R!Bo)r4^1M8AD44b#4}m-{-WL+GGKixrL6 zs7N9Gl?e~|;x35b;h~};g@OWk`Un&R2Vx13g}dC5)Yc6jct)QayLW6}U@Ddx^F_GD zg7lKZWyn>2^fpmu)MHbNAu^5x#@Ewf_q5;dEne`N{cBm`*!NOdi1gr4fgjAXIVJWz zL5(^y0gk1c3bPGp>>V5&c*ub-Y4V!KmTjSB(=N=%{` z2d{yM0eS!s5|)+m7_36o2KpQE?FO7=IB;LVqX{J|EG!HQ479Pg2cd{oxv8?Dp&_ZN zxhAtBTNGS~;r*+z(b0eZ{*8a^7DKk9##~%lx>kPx`s#)4ZIF-z%(NNoL2M5C8VhrC z8X6i%xpKOc0Z@b1zpFduE!i@$X9V*w{7okdiavSJx0v<8str zUsbgapp@ZcdK`7G@6SLx7ltn*C$}{ti;kR=j}v%OX3Js!0C5nsF&<1y({Om~IMe8H zH$;-tUZCFy+(3Y?f}O|(|HSjM04Y9GX!DPQj!~Y$L6mbv+>7Hq5Af^GwrimzYrsMF`0-=75!;-stvUSk z=?H(exBDXhhV@*o^gvBW~Hq)*=&$?5VrTXJ=|q%T#V9g)SMQ z2HJ)Q^zTDMukyT`k1a}7!1nO^JJ<2-#U16Cv4-3y91eLeOig=wW5b|7Gcc6m(p(A@ zp`FyQ$Ap0r*d#39dCdUzK`ajNno@z#T%{a96QQK85D<-TdF;+N!+}0FJ`NRN>z`l# z0plDj+VLaHAQxz7#LeVODBMs)H&?N}dYIw2L)z#U__z-&5tx`X9 z#1e^C%T7EJ*c+G9UKxA1W&Spvr`qe4e2OZlC0%_4GcVdFI8-`EpZnjw&u6bC@=2my zJYqT?jiq3VMU-#DvX6gptmAP`CUSZCd)&E-rKP&kNN~pOS(lA`PfrBgq|Seg@cbjb zeao1VppSq$X{p23Bpe?|^zl4(ZqR{oMY9kFLd12nGY6@DiyjB)g>;mZ?005G3@Slw z55jXu6*}7509OWTG16Ov2#z<3az9&F)z)H!N={C@g;7r&(-uST2WV*FeDVvuZtrXP zlA(5&M4g^tl~d--00662`>-p8n@rNBF!&dx2QT6F^z7)*)%q=6Ec$q>MT zno%%5RA0^9oP|@$+SZoF62D&R5hWgHp^q$m_wqixp9Z=4`K&grZEZKGN2bkx&_^LW zpLiN?8=G@Bt=GZpK)!&UcM?0$=62>9=RlDmm7${4co^sVPDHY=vQOl}&#U4LtAdS% zW@)*QpS>u7Rg+!j?EoS~GT7(3mu2X_?C$P@5>l6i#H@VsFI&v3RVfoc57>E zJ^n67VN&~wKgk>(9vaed-74?HJ3cD6bL|(~$wdEc4 zkxenEx4(>w>kKB@qTugaZt^lF&#&F^0=+1-8$l88!pH>6-LQ&8dY>G7$Sjy`MEIBED*rvyn7c;uRwjZH*em6-@?VE z1{AGuW3p-25K&T2PxOIv&B(|Ij3(qEMxgoxZzPE1+kS$n#|flG@Y``kPfsj$D<&T$l2X>Aki z4*r2Ff?levoA!-|lsUJ~>2DxBlhbRfy`kd;X?}z1(`#;~*O)G|w}-yH(h9cTO8kRa z_VTfPdAzD;c+vPAE=PIt(R-hl!xioEY>r|F1y3>C!4P#k>k1hwc?i_`x#28FNn?^B zyIt=auz3gA#PD!H-Ym|~d*Xw`BMO>!YAi;j6UhEc=dG3p^t=OW_8uNrke2-W_kv(* zM_B%8%ZuDc9VB0J69a8;tGG!13jHwSC%dtL^Rckd?$uBiRP3}%=}r0*q_EPj*iOK6 z@ZQG8gue=mE?F7Z5J*NI?u$UQd~z!QV6-0Nz&ol#$+L8~=7d|#$e|3o*w@roC3mn9 z$4lY~rN^JkBl-utyoV7lAOGy{w=y*q$CQf`P^`>0+^Go)!s3eFTwkBu6Q*)xV`qm{ z9x~51fpANFEZ;VN5A7@A7Vy16mSqA>mW2fyNVFhBffS1kZ|8KV|F0VG2E^&VeYG)r zl-g>(PnbULs673MiRzAp=s7PlVf909%%zUKFiK}`n#CzxicnbXG=yu65Bqz2w_N=F zg2vV{f>tylbEJduO)W;|1qw`>w{94nujPfFy|CnuyrAbc_!2_)wc?7uJj1}^)m?aX z=(=h*5M(i3m!Gw#mCQG!@82_DBR7`j-D)&ZfhWfK9O!LL#B$lJf50s?c_OD3)?QJG7r-q_jK#e?EV_EU`Oo=<_U-#R z_wGiEWl~tooJu<4nPjWx#+KXjTn9w z%1}H2%;hBn{{b!-=6td6YY`;&L*;oN6#0!8N1EWGfjA%Xz=HlcZ~qOKO+|*?+kgH> z3k}d)ErbMCSY_`-lFzd@3V)buNVjTm4v^4m!{leEbi#-n2n$q;!&nc z`?1`qNp>1B%<4v?t;gdr5^LM8rj=qZ;A62uC4_mIJY8$%RUx0zx<@n7m6Gb8tmq5E z8F!p`gB#I|2(d!iVUF21^j2J@)hgNtjgucs%U2DsdZ>&GKg{ROq9`6qP-?jz}SQ3CU&1X*VFd-U{ z{c-iT-vfsV4SApA4SN!|faKf8ZhSuup9$x|`lw&wCUlxFOT!DN26}$n_Q-0u(0*$d zKWRfVJg{(mSD3Cc*3zB1!ht_^P}lx$s6R$jGsoq;H@7+8@Nh&hJ`F{9T&7x)mfWfG z1{Zm}`Ico@V#mJL8#CS(C3^F_ByT1t;#r`D8O+1822>sjY7@XV1_Sj{cR&HRUMU>q%Bk{av8@~TaYi-lYPw`VS4LX^5nW^xV ztX$vY;v98urXHgn+p~8}H*>z4xu4B*M#^KIG)0pE$KXC5<;g{p7t&-{@=&q~f#3*G z7F8gM%V(`q$o-m|jA|Pmyel%ghSYCM`sCCbB#%*dG&mo<2q^C&YXW(%~jgz1eHXyQb+CiqobG z!r!lc0dv;@3@;!B@x!}u@co<1`&oiOt*p3;___G_m+a0Gywo?{wv0>XZ& zbA6pJH^#{Yi4ZltzdmwVvc8+leEE{{fe)J%V|)3@rdz891<#i$ISc;qpJ{~+8k?(~ z0Q;D$cU`W(W6o}{7edUtKKGb`8D&ar}7BL9}v zW`UG$YO9UpouXDmTPfiaN0tx1$;-X9G}$klcq-6A3+!fQDFvn(DgVZKauT$ zH05xa7EzN+F=rKd!FER{vhh50xcA21vHtBKj~uf~V5$JGmErbnd8dac_mKd3wtp3oS6G(M{i+?G?$8GdnZl!S*u zkj4j9V3~V<-wmujBrIwikj8_9%|`*+GmtR#_VxnI2Fn-XFwA6-_&{zz|Ia_8BO{RT z1CV8DOFl9#ZgXS96)YH(ouwrulNO_{^5O;ti_lRA>lYBq3Gd#$mFt6!r3Jh3@-%eA zT_(~uc&~7WNK{xo#B6unKPc3njN=xAvT!LbO{aJb??B`N5*9jC^U@hY2#JfvBVjDq3} zGQVHNsb{Kdn{jPp|CzwfRu?Au6KiM5MceJTn?|a5i(bmn*B557o0wP(nT`mEXVL3= zIP^?UpCAV#ar~s=-CAG2cGNItL6S>Td#zyr4RP?4h?dZU+-z*Tl_X(rSMAMfo74q( z-498Hv+8)8+=s6tnwkK6G|>7f`m4ID-^AHKe<7oJmNBn62Z*w^EKooeEJmUrAhvTN zS62M+39)>kC;}nu9JClAJp{W4$VO%^a_t@D7oUUkdC@O0@RoR1b+vBK55&u5p1?;2 z1*1@u^?x{XY4TLj%p1M@uWbG+VPWFl z#B1$Mp7KKc43u<`x8bIJY*j*<7Ls6RU6mgd&56xacO4;iAN8&{(=qW`2zg9THpcwA zD&jFITLFOL4n1U#Rs`nY`e`(GI*tcY6Y0{wMf$@qT^TmW(49& z+$G6qAeGE){v6Nm_9||8-f|Zl9T!-?@x%%r3>SqLYC2}#&@TKxs*8U=T>kzUp<1ZJ zN)qfVzEJai16sGg%#VO}f4*J213d>&$%IG_qcZ7=9kS+sm6S(J-`DQ-^-ZWA6CPlZ z$ETSz+xQ$*;880U*R&L5eBO0Zc^+ElyrD92df16B6OR4bjL8E%SQ1EG2t7Ts@NB!I zz~vS%o~)WOXP7&on$2DYm|CVQpj9n=-?--Dd<7EUc=>* z91<;ZIPMW?JUEwg??=~H4PyC}$IBMT>FUSJ%kS@h*!8X#;ii)q=xzq#hZrXHCm#X# z6-v=Rw_6BEXWw&nXOqS<9x%MwPS!jQ<2!bV zeqWuhiu#2nC(^7h07*o6!|S@2CqwKw_7hyCAo9_*AO0OAM6rWLexb|k{TD>u$v*?0 z*u=h7w@EEdmke17kf4UhKh9=_k5;an9CgnQ`U=wb2Q>4pJF)ob4`+llxRf(cFI3L! zS)sS4?JSMIU>t7}GD0*d(AQ7dn=Z7Tej&+WjBe)SatdaE*H$^tN{htKP#J*$Z(2|x z+j4Mx2ha0b%XjHpmquicG~N;|WlR>mw7|GA5Z~8scNcj})H;YfUvGgLt7(?;mJ>^) zjJ#ApNpUi}T2W<2MsdI4c1mmwLL6O zd!qR@j=Y!eV*1K71#jnbrg9L)_*EXKPDHNC*b-lf|(9fik!!pk{MCv8)u9b{0h!KEdiz zS@1NtM%cyO%I6^OTXIrE^#EwnsWC7R$SV%Q6@l;tfpC4K7$nSdUenEYK({L-bOxm` z=zp$P9l{R*J&0sPR1_%*Nyq9RFnjyp1NRoJu5kW3T3dteu?-|XpuG-!3b74{;Q={N z3(PjCNktu}&!v!se^4#H`lZ2V+JGBubxxBBeMyj+FToc4hl^2zwr(p)5eRq zSpZH8I^WBn-ceCex$l0W4}&}$9QXp$R)zex8_B->cX2D#teFfX8%9RoVED$M@i#VY za?su+B*>c!f>jy@-hkJBesrIv1H@+}Bx9LTZ3IMP>-1o+LZAyqio^R9shO0XeJB?5 zO>jGd5KRrRZ<2S&#fZt1=2m(r}sylwS|2-{cON5R?o5of`m zF&PfJ&Avn7XXtuCOL%jrp`ihI9yFGu#KhD-GBPp&_jjhNz43FhvYKqBr>4%9!bIJV z{I8wkiZlH452_t?0XT_yc07b$Qf}Rh(@EsCPceUgAuEHhZm#Jd8K{a8NTH&y*zFx1 zivsZTpt}H&D0_SRPPbQpNB!^tX%7`z(C5&EV^S+=XvokPDyBY2&q-THn*x&9eBga4qpq zHvRAJD>f0qi@xRK7u|)t53-i8Bgn2laNGq$Jq!wht|+L@xA>(0qm59m5rS{);6TrX zN7WDEH6Lj4VTcWIQVyRTpkcLFz0-OBpCJ^(f33DXCt<=sK)}xM6_OAV4(+ADOE#_r z2l$|3zDg8Kb`XWYhS0k$%uQ?cHeAw(elOWpr-yqq z5}Iu4;7xt>Xku!rb|zzG#R#T+yx}t8(SWu5;e#;e_V3?N(1oz>V!jzITK3!L&tiE# z;BaC13JO6NCnqp_K4YTN)4qk_lL+lxfCT~y5MV*%A%0Gw|MimL+ysoyLttfyis~jS zfH<0#hes)UWO(+kx-O16pAb8H*bnyIzvr+A0NbL$LW1qv0zAJz)HEK9ZruVb94J`$vcN#g)F-GT`W-!rxWuwrKB3R#VV5Fj=nat3=s z90*i?73t5`IoE)=?0+}S2Q6sAr9cwUrn*S=@TWKFK^Jo&h}v$z4_C`OIXMCN5yWa~ zJ9pO>*UXp!r#CYr!ocujYz(?*<&Y;sPn*iob&RwX`owOR=g!dQ03DEzf{YASy!5tHB9_l$$e72??h&jl9`p&? z>5N5}*0AnBFWEj=Ka|eNQoJh&v4xX6G~fK5^HTE$Xg1!iO{}jJXS_d@XaO>@VmxS3 z;ZTjwQ{!X)?*?xmSycBj>~lD%py>vj3m8&`+%Y2&6e{{(?co_g0&zIYXf;gA>RH33 z;KaDxxw;JNUXF>41qTGM8|s4*f$X7XSn@w`RMkm+=$ib-pd+sMP7+Jf1uP%C6o=33y3-og*1p~ zwa(($zqGZrflLwL*KFz~pke>={TXyq0QAud)~hdH2th~y6RzI>X#%1Tu%CcBQk|FA z1B(v!Ozx`RE&Jc=95KmHe zLV$zPnJozns+Fas`3S5-3j;G5dL1eLz!jnHVArV&zy}$HOK7dEl(e*0BPeCz4;pDZ zVhsx+_=KDGEKkpsy_o$nTV7@CBM0g?x>haqx4Tis6g#HeG|p6#%Rr&bR3b(1NXMw( zQT%`A;MFN9A7$x5x%_y;%b=JHb*)Tp1C9#xv=bB30+f9ap%IANR-c1{1Dc#y%Tc;g zbgw!Q@LXyH{@UH}*8c^7mB*ld0=mnZ1N343>*@(t)1)TCij9p01+Bg6VEfp6@Yf>} z!ZL{2g;h7WdOu2z&y~O#f`d240{jT@ixwBfi6;ZM2>RGfL|SMx!$tbd-wX{Yai}nn zr0YSNUk}L%iJxMcC|5<}MvC?toYNOfv2-WY_yF=tGL^c)%Yz{uvorA=|a)ANYO z;9Ro6HH)`(Fe~#qNCp1g^Kjpt_mZW5AtfaMcqjhbalpm|fPlMugLpDTa*}|je3dN` zKO%#gmmC!_iuGIli!m~{xYw*>~JkJ5$2WM8OFdD|NoJjO~Du} z7+422w`?f7v9Y3CbX|EVsEE&dHi=3Ny$Fica3b;i}K4TN14#N80b1A9hBrr=VZRjT#{HB z$!EJ4Y;Gaa8!&-U58SSw!^5!b0DUR?@Zmdv&dmsO{9l(_JUuTgV@()g2#=wrrbh75 zBZx9lx=qk|$KTwQeYmr731`gJNvEiNFA=^t7}D$oXFxzOJ|5M&05kp8J3tZu;hOiq z2OoZL{F}Z1hxzvXKCSZgUF4umVO_~q{jq#{=G-?K3UiCz#4~`Wao`Ukf5QSUZMavl z>yHw@-F~S|A;<fE}(E}`wvrcH#zu}HGXb%E~#RH!z zt!E1hjBpON#+S0&y(OkCpNu1jjOt~Dqq9Hb+uyKN+Ma2CvE?3&Pq>%4tNiQuC>ld zQgm>kGPAQoRwIT9N_x(>a^^^im@&cj3?O5F0%|XQeT-?}ixo-N3OJb_#mP_fHppkSF5kj2tuM4Fn*&8ap zjbhvLflzy8Z#;*wp`guX)2v_tY$(4?rJ2I}X@&3dl8>1u;6wSCxR;j+0+NI$Z{=y* zzyB7T>3Un^TVA_XdXKH=E5EenRvi*rKY4z!C0ZfUL^#xRXZ*68o0%h~7SDWJ+TI*g z+c`_fi{)?UnBEG0tD!uqXNcAfm2|PNj;^u$s=sUd-h?>y#;lDPj(R}wW%gO7z zoF238y!*~gq^GSUSNCy{sd9S=I?3EGQ=f!~j$Iz{u1w+s{8>sRg@uPlTh9x%nJ26N zEG~E7{`uw==^9#gS@YDHn-6}3iRrt}lRu(HQ&W_9!Qx&Xlkn&QBs#Qo${9|IkB%G( zU9C=w^j=)rlkhm+KpgO)4u;SrRQ4$^54MHvD&+_GsI3Sc4X$W&2qD^%3f52HM(JC& z1^s0u1kqq-AZ5IV?$Q;xB|b=89pChcJG9x=*JRS_gY&`D!@4EfyVFNk zBnR|((0N&m>)5B*58A+e-_ASH1!Jgqi3imgy@7@G;oAy87j_w$3J)n4Qt( z>zQ>IRlb99KX=~30@vH+EKfeYir66SCeV(Af}hR|bxnzO8@8Uyv&r{+zA&(*4vt0P zCnG{l96cQ!E0L-?sIh>8+kfC#l6>~eMt~AvmUr%?Zd8MR>iryPo=<&z zT;(ne@k>GnmhBH(kE%*57|c%TG*Bp(tB;mG+8qRx*p zzU)W{M<^s)C?9fBJ>=4);B6<}!0H=g%F(;^5RpXsB=IH(o$;vCTgy~rkk;3K3YpE- z&r35o?-0Hdk!4h!6I5^(O%IZ2=aHHI@o|w@f8(yczX&VZ1J}GdSJ`!rzBrL@mo)v@ ze)@1S54=nEFr5N+nx7x2fj5BZsHHj%zDQFWEMEYaCclW1{}7ss>}5e(sw(pum%DIb z%VwBN{l(T|>+ZqXZ~Ry2i+U_UYLWXB zhRbXJ+=c>w!IO+5rNVRvkdKC&crZuKO(sFY_RVjf zkr4_2!P5|pWsSzH7JM;&BT-yxI61+2XbJFJ2|gH8dIy^(AREhZ=i7_){mDuCnFJLT z(3`=+%7~}(Zq=Wd;@;YdrVRD17l~;97+Qqz^tv&=m>%^;K7x#6i4d{-5!#)Imm|OV z6R|v+?72$*q)fR)PkiDkr!*2L+QoQzh_vs$uh}hY!Pt;X>DOD)CgmYwnJ*X98TAIv zPv#N|lK4N!`b``^eSqhJ!+MF{u>6sn8GWYm(NKEx>p+PVQ1%sEEgF}fycC@Q^W6*0 z3ZJ@zFE0|?C5Cl9$f=ILd5EqxV&9b9IiErv-uaTgD z+OH|@33Gb?))IICQ`{C7y~*Wth@{4B_bdUbzX7I_i!a~d##)%{%*=%TfLM9zg)n!i-6^t#026__qaZUg7I?K72 zZs5G&u3gnl9+*rr`BI@#MYhp<^8=}MtmH#bVBi#lSJQ?xa~cTV<&6K7EQE$seZ%F; zmMPZr`oR}$V&X%l(THurEe&zxE1bSQJ{)xWZ#NMK9Qo*^+L4+yF#{7kPdlL$CFSR` zJr7!P;Mr(HHV+JpYAs6u{X;SR#`SAoO)*|7tB$brndC8>go{{avn%sSYY>P-qtB)^ z)fJf}_Z!-wM^hMK53LsVt{+6Dx>~l2j{m&JOz}@X2oT^-m4ve6zylxH6C9<(e^$^} z+&r(z<+kVM{3a$Y>5@@@_AFkFB{%PDWYoAcoh_{PY^6K3oMiMhUm!%6#lXN85`rbZ zXsu>1*rS3vS;Xe<4ppO3c7oYWL16#@eKVHBAbkbP6N<^R*a@XfpdpYD6Yn|I&Ckz+ z*c7MLNq812uS<)I0gGzay&llf(Lse-NGP_~$m4KS6@V4UjoKSH&(jA+qL|*kWrgmt z`UeqR;@MxXsjFw+^kocE8LybfWV4P!72o^`r@o>+@AXq|tzg~Y!YVsiaZYOA#6ymX zBx7DDb-y0xpl77YQ6n<>B|0-o>81tB{Nq_fqdCw%`L4FE-e@hjpZuzTvov*ZLa9b1 z#PT^e{O6X5YyyE&-i@arvKbF#nDEW++jEo3yvSYNH!`?SON*r_yU_29C3~;G>*vp) z?ziDTInL0bu%NL%LOMoVgRW6?vpDGw5sFF`FN6wlfhqt+vUR{xSiUwir1fuo1kyGz z@DhlFovaQ#m*AFsFJ#OU15QQ=K7q@sH<b1EUqRO}=D-?uZRU{+465o!oFx|GvqAYAktjq}gErvmCSn;PVL$ zb#dt~R4u3T}O%QfMb)G;R`kx@(r{FUe!vs~gx`qbe zRPp>_4)6^e37P7QbotR&g%#GEW17!*TPDR9h@ESnaD@<6b&oFm^C$FdPK4g#OHL7= zFD63=9am&qVl$WHz#p$)tWyDE6ugBqE{>S+=hiLh7cWrltxAh2KYRcRQR1z_fFaaLvSxn@=@%%K zK^%jRS~36bm}3HC10bOhA3t6Pw{%0@bHqW_{gnHoEBqK8wK2se@4hXEeQ2G8D(O24 zw(AHS@%%9rl`e@CjpU+=yu5E!)I?)J?S~Tb&A+~{BaO4q!n)mTTPI^IkuWgL4g0yD z2JbBdQq=DN1A)_ev^_&XP7YdDaG3NhSVIj7a49QWTXF~LFoQ(B*1Nk4F-J>{;TAz#)eR+5Oh0n#IFo+#xn# z>xI|m;c5yso+t1ttm-K^VbKqjHZ#GbrR!8 zEWZdzco7^(+%;b8m+4AORFsr(t&{@70q#n%IYmYurPuqz$50LTQDOpSf4t=u8mDG* zSy@d*1+X1y^pB3oQo1bvsBK+gdkSdfm3r?;>-KS{Ar51IwA(0^4a4u<}^#>ymDH{>qv zS(OyMPG#sAAi0LvJ^w26{%!gvwZkOM%g>3r6GJKDn0N0g21Mf3_*@Tr$NQnGzL@j8 z`KDe{v*KGz!{!N%l^fkW5G$Vf}eBH)ca3m~3K{N?>yxFgar zdg3Feh0Mf6I6aY+B%)#GFd5PX{!v9rO6U)I{9C?LmA>FB>{{-{q{j07J>NtVN|V8~ z`P-`blO|D`M5^X zWsPd&K`CwmyfsnXtZZzL0VxDjJgKq;G9I4%$rqY3_pg{*ZQ5*kkJQ)nP#%e=p}xM^ zV)JzP0_9Xn**tI`Nr*2Drgoj5cZpv9AjL8(*Px_sdlQ3q-;&?JM});099gd!c|@&P z9OCuYP}Nxf7#RePl)?`D9+1?5*MZCrf)wbCceb|^#J584J5RmT9fnxI=&0K2YBxAh zpduuJ2|Xlcz@;-qo}QclylJ?z6Qk1xGFc*`13*1H3OD{=))EPiLdSuL$8ZS28irUD z8f?(OLN9D{-rF)z{3e^<6vD~~MX8@W#u?DYXtcj|lO|S-Z^^MjP>1YznD}A8 z^S;NAW!rmU$Iv80!GvmbKIvHx81sO;2pk_EA&)sB`LiQ5Y*j;Kwc?GTDPiLJUs7gbqm3N(XzVX8Vhm(cLLxIEi|z7jNpl2+lZ+<+h( zynV=iXAEe>{KFSQ&T9%O!*J%y-g|+DYO-OjW%pCv^Qz-F~P!lpOkd`;qfJ-HLDC>^%R{+{9&&(hHg!A zD@fz+(MB-Bc^&8@t{7gHC8eS8K#^$_lN!%|dBsTRL)FFZ!b?Idz*PB#l0qTAxTG9R zovp*8Is^^_U$1$388D0qHQ5N$)6)wIo(8iwJdgw$J^V>YO%1$1CC3PCuF(Hfe&CCT zgoLR+v_XC(~O($WIRQv(dR zSYI~<(E%9FtgNj56_~&>>YVmcU`T_u&?^MBgsdtw#Enl*H;82)H;JDkn z#yEbBKYk^YZ^Ympe5(n;OJs)uek2%;qz%4I(lbh7Ck6iW5C1L>!xdZc@8U49exO4l zO*aHgor6$XAMgyke*GHS%D`x*rKN@G7=i6aNmjrg1h?Q0c=bnBb<>B}Q0f_aDtx%4 z?JI+WgTYGYjgJMp^wzCG({gBa!~(BNjpg1W+cYqBf;ys;7aL@(05$=bh14}7R1be< zF7vAH-fx;^BnL&J@@D1^RKd^^g!Rd~1-w*ClPzYI0 z3-~C=%J#VK)T=5gCf8CT(LiUck^k-In<3*esDwcGyn_2WP)hj?J8)ov0njfbVH}sA zAF3S)#Dt*GPzQVa5nwAUkoj%R)bjK2e3j2+*KLSvT>$t8rI16<)RYhli}}AT{vevR z0vodLG8~e)x|2mB`iJ z61fk)w?3DFPd!*p0|<^<{ii_MBCd&naPbDy=H#M3&hu1giTn4KaIK1Q(j!iNlfMfY z^OK5z2b+dw5wJ?IiO086V_(UCcs{co;Q`tXH@Es(8yZJFGqV?;z#I3#2f{AbtyzS~ z{~h40SD;X9Y;2*(($5JAmWGCZ;1HdzdCv?px4?T3KKqCAaY@5#n8`2?3C;+(vVOr7 z!|LjZ-dwFt-vK!k9_NfkOHyXSY>ONj}GJ?VGZVVk9s zrH+g8CV+OVUApaEoGl;ksA@IpfFv$*Ooca6#=)+Xg11Y5gu#C>l}a*XQBAXTksaZJ zh1$H zYe3e}4w8o?>dbWpQ_V>&(r;75mhGuP&$r(a}u2{GL*Zz50jiV?yOlt7KJ zuqR6D1YQYHHpm6B5H-t?WLtRH+e?Ioewrw~8xoQeg!RlBI>0G==YKa_{bPB_<77KF zx8wvUxiK(Ge@1Lc4|KVETHD(Lf1@rrmF$2YAjpToxnx8{z%2&+*{t&_ z70r`@2?4|msG`;v7l$mZ!EFf!@$Gcx9HN*yTEhNk74+ZGoIi8w< zbrwck7S5O%!F`A?&R&1;N<$-NRt{XA79KF*Y7Qz(kdaJojZHXBwZi@2Kc9m?AO|W4 zxAXlULNx8X8npD!ayx`_&4m@38uOZyuMQ}$CB-K2PeuOvlkBO(0mQ4P{v1wCy6f)g za}5>j+BI*G_@3@4i_&DsXB+}_@W4015qoilOVu9ys%z9SOj`ZJ@Ma;i#v4Z4Y(TpZAfVI{KVbkGq-QW|_FaPD<(Q_`%^Np3$Uec;Bs&4hnVQDF|Ic?R zPKn$W%k5J&9+_OA{^o~=aXe}cMK_8QbLRR87Gg=v#kx^PA$OhIoHH3H`8^F5S+#gCy{ z3(oTm@cbJT10NA=AwKwD{=*kz(TOHB_51;TTYEda{_nA|fa5$~i(f+rn^NC3SsZ;O z+AmApvQPbocW^?#kWitfk1{jApd(xma9`@cg}3JvJ5Yk~-n~l*nu6O6@>MAA-!D|j zttER1hdt5~95)++W)6IKHHJl(``3~>ahp9@p6;?WR>9#4wZ5m%^~v0<=P>NHA8>Hs zw-!}g{f0o_Tc0dmey5ZSWPVew7e`IO0iQm>U?w9#dVx)$u#jDGk(Y%0{D}mkPf2hSU_5JJL2IK`PQzp@n3(2}+2ucs?LUC(2fVDLjHB%GXSVEJlS~sHGauOr&t#uJ#|Z0$D1??U5W;`h z?%x{jp_=(%6sRmOzW{L$I2=KwIW+#X1UcUFTwQ$v+TL(7KsCUvHrV~+Gbkg{UdBLF zkNU^9IMRgZsed{`^18Z=oH4jQ9&EIWKfsrjlLJPeld#VHmBhrvosA73xAFqx@WTga zKo6$&-n{MHsB$+{L0T=*~2;qY7J|qNXUxVWTL>SGu>6xfKmnIznq8Q=O zY>M|g(E>C>I#VXUWx^dLEfuo11grZzK#+zMoIki;hs*BT(h5f4U8?Vt(fLRQnav137uNc09 z3=a%YVy7;$PEIFqBI4lSz}0UH(GzUrwGHY=Em(=r35Vztxv>GmhHSDvJxxweFNbBz z7R9_H)@E1=<5=slZ#NoSH5$&;FdrUT?1y5WD*bAQ9SX%c_?{#b6jT1uF!VWCmL5`V z2pi3zA_X*_jncsIkC!*xh*Zr+iK`IM8A zVgSb)HE2Cfg(>S zDQOkyc|}H!Ld6ea_qV4z;X%FgD{~fAjWzRKq&r-A-^N!tuVD=|d?3Ez1tWt%Gv(;u z05m?z#~%c^xnG~20`vi}kf@1yfJg8+-}474*TEs}#607N0Ev{4kY12EfdG9xU(;WE zP+VlQP3I7>S0Hk1<^uYTIR1^=GMGS?osr>p_-3u$KH^P>Ow~U&hcEp6mR+QMc^|k*P?t>OG)xhHYItA7rQ7KC&}2yR+g&Y|8`t$AiUu~q z>iGT(!B*HPMwXTZDJcM3KRP`$V?4{x&Sqp{It8mZ#GXpZ$`CXC^ss@!r{{@R=g$wg z2x^4?`m>xqomS1{kLq^aqw#3_eDiX~Qg_G?_5#@4ZewCXrVmw-!tCtkv4?bYEb1i^2UdtC zh_+x+0QQUB{132{U|cK~IwNC$EWZ^xI=YLiE6hA>NJ{cdOpwpSzBvXv><^V^r+54>yG5$y^#>&F?U8MMY_!h^YlQpf_DZogM-9&7MC z;kYBXahKncvO@BeN=k7c2`w)#@AFW~yFw0mwY9ELod<$BboxMi2nm_*5vl|OGq4~6 zOkt=2Z)&C`T!PAb3b)Ehi)h#J{S@_Sz z)KE9~-1&}wSmXo_OjcmSGQ&-xe)pN^@rM`RShBOSAbCNnVEEN4zp1>lu%M`>7I5(k zDgXd#hR+5bFM*&f_P|p|ZuRHGB1Dn7CaJv+?Mwk~M@A42+CmAe^nXdtRh? zoateO@VtFL$8o1&WAnVe@hY2wzhrVsodFAdp>=eCSBi}UTywzDS|4S0znS%mTNqT* z0Jwvs-O|_?2DKxu%1CQCBDb$TCZp&+I9K4 zs_@a-*+<{|x4@j|>+e5T=M1Tp89c6E9`LCa8w(4vSI5J3Wte~|dU^7+0~h|crlO+F z?;qj6f4_mkKjambx=0#KU}(p|Dn>)VLAQxSN~OQLc_*N^w65+Pp!7i11nH?d;J_eY z{@Mhi*+T%Tp;LEqdEv?z%St2$7n`v$5?WF)wh`v*sa$H00l-rwPt69dB^X`mz6fx! zzR5`!$XuYf_{-ax9Zx+^UkA=+82{T2v>m9Q^v6B&9<2=^gcG``Xcsl#%>BFyZc<<0 zcF5L>-#|^Z9M^Rm*L_#t?`NFv^L(AJ5gZf*$_2bX0KA<# ze!S_^r#f+b8q6r7LDIU#Hx+$5bF{u4w}3JjJxCIpx|iopMfDIfOIlhQ-12_Ginh0eiiuA2UrESU zPmi)FjRrmTI!8*N*u5L>sXf)+)q|ShyHGTfwu3o^or4uqb#-+Y48J;8FpR@EnwsU# z*u<*$*L1mfk(J%n)!#en#&1hyr2q6PG^%b#Tpb`^tYkn0X6Sp+dN3~`;o?y`h=0Sw z!?Uv|aU%Hqd_pDhXuH>ys!d2>+vUF<>4=KA;27x?-SB0{^3^N$Q++HKHn-B0!(cBo z>ljmeFhzsx4pdk83gEee17?lO1$t|4?gqRMOYFXbuK~S`CI2^6RI{D}80W&M2!AL{ z%Z@#khh}P9wnMg|U+K!{?R31Rnvb86%GwmBfM@LcMNuk7g6fBn2N5KFgf0kXdH4lOyQ`Skx@cu=x1>Ld~;WpmYC1p*iC(Gdeflk z@Jjn!{BW#dD&TH7TfTn%+QZFlCzZGxz*C%;$j3FwP2^OL+fBfG#rC8TG<|JGFZ=yd zJc9iE^dGU0X$KtDOIsofYfVCHTiapAknZmi4!2<4v@NcLzw`9;G)x&qUFX;cY~0+I zuqDJRK;et%yqypC20Z5YWc0{6t%x(-v(qx0RzrtPdNB)775%>+&+g<`Db0rAm=M_I zLh+X78dR-f-kw`thPWR@Y0De7{9qn-F))$q_;Z%ES*G>*OUkn;f*MY#TxAU6 zk_B&^*O{1V1fPZHxkE*SLlBT1w1LQyu*Q>su8f_X*u$U0Ose(!%h)fo*alGe0_SXP zZoX6ypNSp<$EA#n|5nv}^^o1l5ltDHt1|vpwkIqn+C8O@-2L>6z&5Qk6({D>(Jrrc z=1?JYSa%Z+Us5bH2EpC7_-P zcPKi@$QUPdi-^#Q8iqLpsug5+qjRE?e{_L!qAd&L%@*XcC9VG@emR1cvJ7$uz(x)2{4dIf9x z)KoKc)2^IPp02Q07t<7( z|G<*0;z5p7@ih!8z~rEe=Xla6Sz9*opIiXwPLNhH9@gf^W|8sa(on6-NYg$%LdZ9_ zdF(B6bR-LF444=OrKN5AW8u?dvVjkDQfjIIT=B=5h#p&t_`8!fJ4nNg6ta(gtl+#K zruaT+G%b1kx~sF(_*`qeLkk%dokN*6?xVlIjFHjcuTL>|+s`6O6?)Z=L-Ve{$l+lM zaJpzJN-|MeS{fABF&t-g6Vy1u!wtwNHfd_VG7%Ee)9Z)lq2TnNP%-VHk$8mj_bQhd z^ftio;dFsYMYn1n9zKd0kW=aTy(9}OtBKX6N$i`so7p;#(phegj*X45p01ssCg}}? z&*OZywb}XW;v z{Z=(JaGg8n0#6F4z0^JvJUurs-`*5D1YVM*3r%~VtKQ;ki`Bqhs;gVpR!U4|)m-6o z71>C5?tJ@}?fiKixB=Lh$hZB+M1$V7#?F*X>+=L^+TLqB^6$mao)As*qffqJ8TveR=hxar z&zQ}Yjg}oW16!)XW%S};^uvW3S}o8Ea1oPUKU15z3}bWOD(*VQPk>)ogl_r_ytuY{ z0^&dOH-COSz)=gbg{ITDD+g!OuwFu?#;8>wqd>|)Fv1G~N|G2}jAQ-9pukfJ?566) z&+^py$Keb0udMT%ni%)d&xJo{L7nH9lQSt~eRvap@g5fbCA({7dc0i05Pagf21Q|~ zym&24uCO^|VPu4K`QwN~p=tQ?HABN{tBx$>0l7mVD0Ju~A7A0imrii0?Pf_eVxNa{}DY(J? zHXf^6fOtr2sUI%vvEi;&Ywzk}6?ST9X=!O{+7(zU2E}!GIb(JnDIp~#h_E9DPSbSQWzBi#!M0Nzsh4G+Mntst_1Rcjo`=u@^_GZmU-}4v zO(=;~O%PT8gTsL$R&cx`E zA_{*HwxjDoz+z_B*VDuJUAP>r*2KllhxcU;ov~P+5Y4>=_s^!U?Uj7vgg=RzTK@GX zi@VPzU%0X3C6}D{v_1}v}%a={;+qWsK1>NoL31wH@cs-zVIJoumvUaWzKTy1H0O;TtIb?f;XL<5d0kgUH#l$HhFY zUH|Z(IB|w>QR2FEr32G$vQ6Wf;dxkfCa7h0=eUM{p2HxBaSk0WNG#g}{`vFpi@x+N zKQVDAOCuW(GU_{qyzLD!14DiFeRtuC+}1s}@|Dr6ZEmb&EH38qXl;7h?WOR$+sv8A=nhLQsB*+aL`FRVqHGk1Ejr3yb2O&rglDIoYkuLvKH@)+{yhH4)ce7~zb7o{rVpem-;^!7r_^f6^Ys>>CAK0bs(`-Q_2U=x7jw{0LlxB))y zR!3VKt*E&XX_hN?8ze+S*ki+_yT9Bydyto#hF_>-l<(EFJWkcCDeG6=^p=xe{a7g( zQolubNFsfv|9P63($@)#spDQ>^ls)S&WP=$?%yHtsB&<=l>2H<+U3G;uVVc{6q;fUiSe<>5u#1rK(aOUkvvbnoT=IUY)`X;-%+s6~%`f|0 zxyDiP!z{b9_8<|SzQUoXzw8rx?AfPX50|mi?KCi0#?Nlq(PTOMSFbcim}yCtsE#}y zoSw$dTO%j&JAd|1HWMTyjlSP?#gHNvOR}TC=Ar}VmlB`aA01WptkdaKgfWZ3R`0!M z2M&->?aU&RzGkTXQj&&W`%z=Cq1X8<{i+wGIuf40xI_`1Gd4=zGF`*L$tl}^c%7}7qCsD~338AJq{Ll-%yr*=uS-d_e?4j7H{wQDibN6`Ap%E_S(Y!Kn1V6?;0 z;{yLI1N)ij>4y*Bgy^SB)>iM)K0rhA(6nG?kkwOzOG;%+Qlf6ww&~pb+k5V*lZE#2>)s~A9}`7|e(;e{31eBc z9f2We`#dWP+>;}IHP|Qc3kU$=18T^6!RzO-2f@L}(}Z#r9_eTtKXhtg2)5wg!SBcuf(CiFeOt9Lhsi-#K%nx)3J^)o!8#n+9+(@jftx+8>r>bEk6LsR+hj{x2 zSgGS|#^?qOB4AZ8hq@09V|0U!zAAN58vD4hy{#?A zeyr`fT3fZt9LzjCDlBj-B#Qi;$&DKfxN1cXSiDUTUDP+8cHR=b;n~$E#H3L>V?J+t z@l;XcAIV)U~x;LF}$cYuLVGpBo!9;YA=Mq-~=PDiDe)4o5(1PQuXJ-`{G3 z&o+8ZHGTc*i3wqJihEeavFPFC;hDq(;9DI~bQB&QCxesFn4s+f-RuW^A^yg!jJY1R zIDP5=1L643p4}^7Dv5;wK=~pBMSv&`rUJ^RewF*auzJcHb*5)PP6}dcD81$Fq8Q~= zNKQ&x1)CC}D8R{~O$P*%bp0X?Nh5XWQ!cV6jo3WwJ079K+lgrySmo`RzVXS)n5R$u zYln!4h%(fzP_Gat^P--1;=)5x=2N$$P>`4-)$}zdhJ(&@tSW8fb9knDLoFikyp z=OGRMSdM>H?4h|9scs93j8-fum`|wHtLE(5% zhdc)vB_*n-im7Uu=uv+!E=~!uZq7j7N+1LT7<10!3t(yDh9z)hEqXH8J3tGY_IOIFC1<_9b(^G!#wI2q!Izv+ z&|5~5di~2c3TuTO619G?MO&7`m!ffdcIw25y12iY?bV~#p|d9=z)1u(7?8qT7ck|f z@IBrxh3^*oDz#<{C~VvZ@!Sx3CA6= z#jJoM8=Wh`2Po|Cb5R?vuHorzbBh`rG}Kk-;( zdwS1GuI?*G`w5%_I$G?nC^&KdL>+$0<8?)~@cuJI4kDB&%PDRi01fzel=VI3u_#?B zi7q{}kh0*agN<+E^l!}%?^)Po^PbViv4R0`;mKJVwxD~T4{E#2of1190XV5|)+pin zo|+w+XU)ItH|Zt))^JR8$y$ed?Zu(g4BAX#`J1{V>$)A+pJE247$Ns+^dZD7h2&4v7@JCr;o_0mSDp!yQGs z5UOxN@P)$bi>!%;6Q3D$W9`*d$#$?2((5=66j0mOFLxS3XFVWn{>|aXH;eF~nlFIv!13S2pZo(tYpbb+KYBC> z_2umB?92=cE$yv;jbz2h1cQBcPMZYl#Ms#2yemq)^btNJx8Y^`;&OQ0m3+76pE)55 z$DP@^!L}25oX^u9G_F~E&#}y0U(inN;TMSct1Bd$Bk1Gv=FKL67NJAbcP~D2@JIU1 zgDdIP*wdlxZR=$~Izh**qKOwDo*mz+JY3}E@2BKkzI@q&Ul(XIOukVA(bZuGYRUiH z=)i_cfn;_2-;@AqhR{$kh5FExi|;P=&@ieFGJk(`_OkA&mGfSSA8!=@^>^^{5`WTo zXKCVTe!jiA`LQkPw7k5$(o)yKStB-_xI@SOHD+|y*9R)5=3RSz^5{`%wYnXg+}uI` z(TVfdsO~ZQSP!ot$W`Fa@8ay-(b-A8d$;=4t1)NIsUy!uUj{b}ixWP6ei*9H{`M0% zd$zaQ+uO*9&0n$y8zx^;%JT2hU*?yyLuIejHJ6-=vX1jKba%XE&=>K7>A}Jmmx%kZ zm9ls5F^%MATBc4p_Bkv@eJl7ucn6=V5p4f~pJ<mSBA+0QrW&?~}tUPv^FPf@`-6%EVYaGPJv?TrV0*(fH6xh%4c&qWnI4;FrYNhedP<*_(JM0=6?au$oGIiWvuHHNGiI;_H1XOXay`&pPy)CX5#dgrm%) zRFoXInUr;|UUrY=I~r6WSHpTiV^TQlz#VGC*OF2}itk7q~oSZQ-vKjWd*@VL5uyTl>hQ%g6lP1vkrr;Pv^ zm1T(4?G3|^tD-kHJZ?;j+%V@Mm%Hc`t8OuxGs4VBBH>4B<3f;FsL7dJ-Eftu*^sSm z(O@_l(pjKBF}%)HF8sWFRZtnPMonh%)82*09g4Fyf4h6sK3k=_ltefe^_I>IM1T9Z z_qY57%S)`6)jQ`B*_|)(MSV(+E&k%{oBJW*a7ewx6VHL)LZSkDIi}lE3Wwa)J@%bo zqKl)DTl8TYV=b7u$oOAVlzRW&i?u3t4*H+srwtFi>CoLpdnG%F-h%S+tC5q4Srq5 z2a)PFzwU0LHMU~-P`rt_p}PKrWSPZCw%~1%s0^an-E0($MA|1_Xu6wQ>zH5CG3Ti& z_Wyh)K5^*fWi9^HTDtFiJJgHfd{tsCFK{bZdzB}fM!ZhD7P0e%FD+w=N~>C@PJI1( z#j$tfoD~lr)UrDc=Qw}JxX;;D^jI{59B&N4$h4FB5PA@B6%f+i{R2%8@^{h9i^3p} za8XV!Fd*Oq+DkB7j*dKvj&9uYfJqhLD5{-1$44^~hXNA1TiEG-6MWYvLnCuw1@=CFQcr=>A96C{LQ_~`Hxi!%ZX*FDq89_eK4fc zhWV9r6A)ut-K># zBqC5Ss(_-&Rf9NbEdBFgcl_Wt-26yH;k()-pW}Y$pU6sGT}FaW^N6_j=6dzk#;Fnt zg8ZdRj?T^;PqtVV$H3)*z6T5uNcFM(?^e{(>U#F<0O2i0gref@L=7Gi2|ay%0Db?H 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

a70k>ppD4M;T4W$p{IY}vi{%J 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 z

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�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 Oa9QT+`5Y + + + + + + diff --git a/master/classncine_1_1_mesh_sprite__inherit__graph.md5 b/master/classncine_1_1_mesh_sprite__inherit__graph.md5 new file mode 100644 index 0000000000..35fcab8a1a --- /dev/null +++ b/master/classncine_1_1_mesh_sprite__inherit__graph.md5 @@ -0,0 +1 @@ +5c8358a86c22054625ddbf53b3607127 \ No newline at end of file diff --git a/master/classncine_1_1_mesh_sprite__inherit__graph.png b/master/classncine_1_1_mesh_sprite__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..61d1ef2f3b548598be506e46f954a8b608438a1c GIT binary patch literal 8874 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 IlCR(WA2X`=i~s-t literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_mouse_event-members.html b/master/classncine_1_1_mouse_event-members.html new file mode 100644 index 0000000000..ee204d07df --- /dev/null +++ b/master/classncine_1_1_mouse_event-members.html @@ -0,0 +1,91 @@ + + + + + + + +nCine: Member List + + + + + + + + + + +
+
+
ncine::MouseEvent Member List
+
+
+ +

This is the complete list of members for ncine::MouseEvent, including all inherited members.

+ + + + + + + + +
isFifthButton() const =0 (defined in ncine::MouseEvent)ncine::MouseEventpure virtual
isFourthButton() const =0 (defined in ncine::MouseEvent)ncine::MouseEventpure virtual
isLeftButton() const =0 (defined in ncine::MouseEvent)ncine::MouseEventpure virtual
isMiddleButton() const =0 (defined in ncine::MouseEvent)ncine::MouseEventpure virtual
isRightButton() const =0 (defined in ncine::MouseEvent)ncine::MouseEventpure virtual
xncine::MouseEvent
yncine::MouseEvent
+ + + + diff --git a/master/classncine_1_1_mouse_event.html b/master/classncine_1_1_mouse_event.html new file mode 100644 index 0000000000..a5b98b5336 --- /dev/null +++ b/master/classncine_1_1_mouse_event.html @@ -0,0 +1,125 @@ + + + + + + + +nCine: ncine::MouseEvent Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::MouseEvent Class Referenceabstract
+
+
+ +

Information about a mouse event. + More...

+ +

#include <InputEvents.h>

+ + + + + + + + + + + + +

+Public Member Functions

+virtual bool isLeftButton () const =0
 
+virtual bool isMiddleButton () const =0
 
+virtual bool isRightButton () const =0
 
+virtual bool isFourthButton () const =0
 
+virtual bool isFifthButton () const =0
 
+ + + + + + + +

+Public Attributes

+int x
 Pointer position on the X axis.
 
+int y
 Pointer position on the Y axis.
 
+

Detailed Description

+

Information about a mouse event.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classncine_1_1_mouse_state-members.html b/master/classncine_1_1_mouse_state-members.html new file mode 100644 index 0000000000..0e75093879 --- /dev/null +++ b/master/classncine_1_1_mouse_state-members.html @@ -0,0 +1,91 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::MouseState Member List
+
+
+ +

This is the complete list of members for ncine::MouseState, including all inherited members.

+ + + + + + + + +
isFifthButtonDown() const =0 (defined in ncine::MouseState)ncine::MouseStatepure virtual
isFourthButtonDown() const =0 (defined in ncine::MouseState)ncine::MouseStatepure virtual
isLeftButtonDown() const =0 (defined in ncine::MouseState)ncine::MouseStatepure virtual
isMiddleButtonDown() const =0 (defined in ncine::MouseState)ncine::MouseStatepure virtual
isRightButtonDown() const =0 (defined in ncine::MouseState)ncine::MouseStatepure virtual
xncine::MouseState
yncine::MouseState
+ + + + diff --git a/master/classncine_1_1_mouse_state.html b/master/classncine_1_1_mouse_state.html new file mode 100644 index 0000000000..7da29ce6bc --- /dev/null +++ b/master/classncine_1_1_mouse_state.html @@ -0,0 +1,125 @@ + + + + + + + +nCine: ncine::MouseState Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::MouseState Class Referenceabstract
+
+
+ +

Information about the mouse state. + More...

+ +

#include <InputEvents.h>

+ + + + + + + + + + + + +

+Public Member Functions

+virtual bool isLeftButtonDown () const =0
 
+virtual bool isMiddleButtonDown () const =0
 
+virtual bool isRightButtonDown () const =0
 
+virtual bool isFourthButtonDown () const =0
 
+virtual bool isFifthButtonDown () const =0
 
+ + + + + + + +

+Public Attributes

+int x
 Pointer position on the X axis.
 
+int y
 Pointer position on the Y axis.
 
+

Detailed Description

+

Information about the mouse state.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classncine_1_1_nuklear_context-members.html b/master/classncine_1_1_nuklear_context-members.html new file mode 100644 index 0000000000..a2a26a9b0b --- /dev/null +++ b/master/classncine_1_1_nuklear_context-members.html @@ -0,0 +1,93 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::NuklearContext Member List
+
+
+ +

This is the complete list of members for ncine::NuklearContext, including all inherited members.

+ + + + + + + + + + +
atlas() (defined in ncine::NuklearContext)ncine::NuklearContextstatic
context() (defined in ncine::NuklearContext)ncine::NuklearContextstatic
init() (defined in ncine::NuklearContext)ncine::NuklearContextstatic
NuklearAndroidInput (defined in ncine::NuklearContext)ncine::NuklearContextfriend
NuklearDrawing (defined in ncine::NuklearContext)ncine::NuklearContextfriend
NuklearGlfwInput (defined in ncine::NuklearContext)ncine::NuklearContextfriend
NuklearQt5Input (defined in ncine::NuklearContext)ncine::NuklearContextfriend
NuklearSdlInput (defined in ncine::NuklearContext)ncine::NuklearContextfriend
shutdown() (defined in ncine::NuklearContext)ncine::NuklearContextstatic
+ + + + diff --git a/master/classncine_1_1_nuklear_context.html b/master/classncine_1_1_nuklear_context.html new file mode 100644 index 0000000000..3a8a3f6e04 --- /dev/null +++ b/master/classncine_1_1_nuklear_context.html @@ -0,0 +1,130 @@ + + + + + + + +nCine: ncine::NuklearContext Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::NuklearContext Class Reference
+
+
+ +

The class that stores Nuklear related variables. + More...

+ +

#include <NuklearContext.h>

+ + + + + + + + + + +

+Static Public Member Functions

+static void init ()
 
+static void shutdown ()
 
+static struct nk_context * context ()
 
+static struct nk_font_atlas * atlas ()
 
+ + + + + + + + + + + +

+Friends

+class NuklearDrawing
 
+class NuklearGlfwInput
 
+class NuklearSdlInput
 
+class NuklearQt5Input
 
+class NuklearAndroidInput
 
+

Detailed Description

+

The class that stores Nuklear related variables.

+

The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classncine_1_1_null_audio_device-members.html b/master/classncine_1_1_null_audio_device-members.html new file mode 100644 index 0000000000..2c924118bb --- /dev/null +++ b/master/classncine_1_1_null_audio_device-members.html @@ -0,0 +1,114 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::NullAudioDevice Member List
+
+
+ +

This is the complete list of members for ncine::NullAudioDevice, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
attributes() const overridencine::NullAudioDeviceinlinevirtual
gain() const overridencine::NullAudioDeviceinlinevirtual
hasExtension(ALExtensions::Enum extensionName) const override (defined in ncine::NullAudioDevice)ncine::NullAudioDeviceinline
ncine::IAudioDevice::hasExtension(ALExtensions::Enum extensionName) const =0ncine::IAudioDevicepure virtual
InvalidSource (defined in ncine::IAudioDevice)ncine::IAudioDevicestatic
maxNumSources() const overridencine::NullAudioDeviceinlinevirtual
name() const overridencine::NullAudioDeviceinlinevirtual
numAvailableSources() const overridencine::NullAudioDeviceinlinevirtual
numPlayers() const overridencine::NullAudioDeviceinlinevirtual
pauseDevice() overridencine::NullAudioDeviceinlinevirtual
pausePlayers() overridencine::NullAudioDeviceinlinevirtual
pausePlayers(PlayerType playerType) overridencine::NullAudioDeviceinlinevirtual
player(unsigned int index) const overridencine::NullAudioDeviceinlinevirtual
player(unsigned int index) overridencine::NullAudioDeviceinlinevirtual
PlayerType enum name (defined in ncine::IAudioDevice)ncine::IAudioDevice
position() const overridencine::NullAudioDeviceinlinevirtual
registerPlayer(IAudioPlayer *player) overridencine::NullAudioDeviceinlinevirtual
resumeDevice() overridencine::NullAudioDeviceinlinevirtual
resumePlayers() overridencine::NullAudioDeviceinlinevirtual
setGain(float gain) overridencine::NullAudioDeviceinlinevirtual
setPosition(const Vector3f &position) overridencine::NullAudioDeviceinlinevirtual
setPosition(float x, float y, float z) overridencine::NullAudioDeviceinlinevirtual
setVelocity(const Vector3f &velocity) overridencine::NullAudioDeviceinlinevirtual
setVelocity(float x, float y, float z) overridencine::NullAudioDeviceinlinevirtual
stopPlayers() overridencine::NullAudioDeviceinlinevirtual
stopPlayers(PlayerType playerType) overridencine::NullAudioDeviceinlinevirtual
unregisterPlayer(IAudioPlayer *player) overridencine::NullAudioDeviceinlinevirtual
updatePlayers() overridencine::NullAudioDeviceinlinevirtual
velocity() const overridencine::NullAudioDeviceinlinevirtual
~IAudioDevice()=0 (defined in ncine::IAudioDevice)ncine::IAudioDeviceinlinepure virtual
+ + + + diff --git a/master/classncine_1_1_null_audio_device.html b/master/classncine_1_1_null_audio_device.html new file mode 100644 index 0000000000..da7f47d803 --- /dev/null +++ b/master/classncine_1_1_null_audio_device.html @@ -0,0 +1,321 @@ + + + + + + + +nCine: ncine::NullAudioDevice Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::NullAudioDevice Class Reference
+
+
+ +

A fake audio device which doesn't play anything. + More...

+ +

#include <IAudioDevice.h>

+
+Inheritance diagram for ncine::NullAudioDevice:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for ncine::NullAudioDevice:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+const Attributesattributes () const override
 Returns the audio device attributes.
 
+const char * name () const override
 Returns the name of the audio device.
 
+bool hasExtension (ALExtensions::Enum extensionName) const override
 
+float gain () const override
 Returns the listener gain value.
 
+void setGain (float gain) override
 Sets the listener gain value.
 
+Vector3f position () const override
 Returns the listener position vector.
 
+void setPosition (const Vector3f &position) override
 Sets the listener position vector.
 
+void setPosition (float x, float y, float z) override
 Sets the listener position vector through components.
 
+Vector3f velocity () const override
 Returns the listener velocity vector.
 
+void setVelocity (const Vector3f &velocity) override
 Sets the listener velocity vector.
 
+void setVelocity (float x, float y, float z) override
 Sets the listener velocity vector through components.
 
+unsigned int maxNumSources () const override
 Returns the maximum number of audio sources.
 
+unsigned int numAvailableSources () const override
 Returns the number of available audio sources.
 
+unsigned int numPlayers () const override
 Returns the number of active players.
 
+const IAudioPlayerplayer (unsigned int index) const override
 Returns the specified active player object (const version)
 
+IAudioPlayerplayer (unsigned int index) override
 Returns the specified active player object.
 
void pausePlayers () override
 Pauses every player currently playing. More...
 
+void stopPlayers () override
 Stops every player currently playing.
 
+void pausePlayers (PlayerType playerType) override
 Pauses every player of the specified type.
 
+void stopPlayers (PlayerType playerType) override
 Stops every player of the specified type.
 
+void resumePlayers () override
 Resumes all and only the players that were paused by a pausePlayers() call.
 
void pauseDevice () override
 Pauses all audio device activities using an OpenAL-soft extension (if available) More...
 
void resumeDevice () override
 
+void registerPlayer (IAudioPlayer *player) override
 Registers a new stream player for buffer update.
 
+void unregisterPlayer (IAudioPlayer *player) override
 Remove a stream player from the array of active players.
 
+void updatePlayers () override
 Updates players state (and buffer queue in the case of stream players)
 
- Public Member Functions inherited from ncine::IAudioDevice
+virtual bool hasExtension (ALExtensions::Enum extensionName) const =0
 Returns true if the specified OpenAL extension is available.
 
+ + + + + + + +

+Additional Inherited Members

- Public Types inherited from ncine::IAudioDevice
enum class  PlayerType { BUFFER +, STREAM + }
 
- Static Public Attributes inherited from ncine::IAudioDevice
+static const unsigned int InvalidSource = ~0U
 
+

Detailed Description

+

A fake audio device which doesn't play anything.

+

Member Function Documentation

+ +

◆ pauseDevice()

+ +
+
+ + + + + +
+ + + + + + + +
void ncine::NullAudioDevice::pauseDevice ()
+
+inlineoverridevirtual
+
+ +

Pauses all audio device activities using an OpenAL-soft extension (if available)

+
Note
If the extension is not available, all players are paused.
+ +

Implements ncine::IAudioDevice.

+ +
+
+ +

◆ pausePlayers()

+ +
+
+ + + + + +
+ + + + + + + +
void ncine::NullAudioDevice::pausePlayers ()
+
+inlineoverridevirtual
+
+ +

Pauses every player currently playing.

+
Note
Paused players can be resumed with resumePlayers().
+ +

Implements ncine::IAudioDevice.

+ +
+
+ +

◆ resumeDevice()

+ +
+
+ + + + + +
+ + + + + + + +
void ncine::NullAudioDevice::resumeDevice ()
+
+inlineoverridevirtual
+
+

Resumes all audio device activities using an OpenAL-soft extension (if available) /*!

Note
If the extension is not available, all paused players resume playing. *‍/
+ +

Implements ncine::IAudioDevice.

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classncine_1_1_null_audio_device__coll__graph.map b/master/classncine_1_1_null_audio_device__coll__graph.map new file mode 100644 index 0000000000..6218a694e9 --- /dev/null +++ b/master/classncine_1_1_null_audio_device__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classncine_1_1_null_audio_device__coll__graph.md5 b/master/classncine_1_1_null_audio_device__coll__graph.md5 new file mode 100644 index 0000000000..864bb6c3b8 --- /dev/null +++ b/master/classncine_1_1_null_audio_device__coll__graph.md5 @@ -0,0 +1 @@ +6b52617995fa87d46583307a94d96abf \ No newline at end of file diff --git a/master/classncine_1_1_null_audio_device__coll__graph.png b/master/classncine_1_1_null_audio_device__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..c83da39e1d5c52724d60ec4ee0a1e764d632cbc0 GIT binary patch literal 3727 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 literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_null_audio_device__inherit__graph.map b/master/classncine_1_1_null_audio_device__inherit__graph.map new file mode 100644 index 0000000000..6218a694e9 --- /dev/null +++ b/master/classncine_1_1_null_audio_device__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classncine_1_1_null_audio_device__inherit__graph.md5 b/master/classncine_1_1_null_audio_device__inherit__graph.md5 new file mode 100644 index 0000000000..864bb6c3b8 --- /dev/null +++ b/master/classncine_1_1_null_audio_device__inherit__graph.md5 @@ -0,0 +1 @@ +6b52617995fa87d46583307a94d96abf \ No newline at end of file diff --git a/master/classncine_1_1_null_audio_device__inherit__graph.png b/master/classncine_1_1_null_audio_device__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..c83da39e1d5c52724d60ec4ee0a1e764d632cbc0 GIT binary patch literal 3727 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 literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_null_gfx_capabilities-members.html b/master/classncine_1_1_null_gfx_capabilities-members.html new file mode 100644 index 0000000000..078f452dd1 --- /dev/null +++ b/master/classncine_1_1_null_gfx_capabilities-members.html @@ -0,0 +1,94 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::NullGfxCapabilities Member List
+
+
+ +

This is the complete list of members for ncine::NullGfxCapabilities, including all inherited members.

+ + + + + + + + + + + +
arrayValue(GLArrayIntValues::Enum arrayValueName, unsigned int index) const override (defined in ncine::NullGfxCapabilities)ncine::NullGfxCapabilitiesinline
ncine::IGfxCapabilities::arrayValue(GLArrayIntValues::Enum arrayValueName, unsigned int index) const =0ncine::IGfxCapabilitiespure virtual
glInfoStrings() const overridencine::NullGfxCapabilitiesinlinevirtual
glVersion(GLVersion version) const overridencine::NullGfxCapabilitiesinlinevirtual
GLVersion enum namencine::IGfxCapabilities
hasExtension(GLExtensions::Enum extensionName) const override (defined in ncine::NullGfxCapabilities)ncine::NullGfxCapabilitiesinline
ncine::IGfxCapabilities::hasExtension(GLExtensions::Enum extensionName) const =0ncine::IGfxCapabilitiespure virtual
value(GLIntValues::Enum valueName) const override (defined in ncine::NullGfxCapabilities)ncine::NullGfxCapabilitiesinline
ncine::IGfxCapabilities::value(GLIntValues::Enum valueName) const =0ncine::IGfxCapabilitiespure virtual
~IGfxCapabilities()=0 (defined in ncine::IGfxCapabilities)ncine::IGfxCapabilitiesinlinepure virtual
+ + + + diff --git a/master/classncine_1_1_null_gfx_capabilities.html b/master/classncine_1_1_null_gfx_capabilities.html new file mode 100644 index 0000000000..05258a6aca --- /dev/null +++ b/master/classncine_1_1_null_gfx_capabilities.html @@ -0,0 +1,156 @@ + + + + + + + +nCine: ncine::NullGfxCapabilities Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::NullGfxCapabilities Class Reference
+
+
+ +

A fake graphics capabilities class that reports no available capabilities. + More...

+ +

#include <IGfxCapabilities.h>

+
+Inheritance diagram for ncine::NullGfxCapabilities:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for ncine::NullGfxCapabilities:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+int glVersion (GLVersion version) const override
 Returns the OpenGL version numbers.
 
+const GlInfoStringsglInfoStrings () const override
 Returns the OpenGL information strings structure.
 
+int value (GLIntValues::Enum valueName) const override
 
+int arrayValue (GLArrayIntValues::Enum arrayValueName, unsigned int index) const override
 
+bool hasExtension (GLExtensions::Enum extensionName) const override
 
- Public Member Functions inherited from ncine::IGfxCapabilities
+virtual int value (GLIntValues::Enum valueName) const =0
 Returns the value of a runtime OpenGL integer value.
 
+virtual int arrayValue (GLArrayIntValues::Enum arrayValueName, unsigned int index) const =0
 Returns the value of a runtime OpenGL integer value from an array.
 
+virtual bool hasExtension (GLExtensions::Enum extensionName) const =0
 Returns true if the specified OpenGL extension is available.
 
+ + + + + +

+Additional Inherited Members

- Public Types inherited from ncine::IGfxCapabilities
enum class  GLVersion { MAJOR +, MINOR +, RELEASE + }
 OpenGL version components.
 
+

Detailed Description

+

A fake graphics capabilities class that reports no available capabilities.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classncine_1_1_null_gfx_capabilities__coll__graph.map b/master/classncine_1_1_null_gfx_capabilities__coll__graph.map new file mode 100644 index 0000000000..ec34eafc58 --- /dev/null +++ b/master/classncine_1_1_null_gfx_capabilities__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classncine_1_1_null_gfx_capabilities__coll__graph.md5 b/master/classncine_1_1_null_gfx_capabilities__coll__graph.md5 new file mode 100644 index 0000000000..cc1e731f56 --- /dev/null +++ b/master/classncine_1_1_null_gfx_capabilities__coll__graph.md5 @@ -0,0 +1 @@ +039401b0615a75c6f3f25521653522ff \ No newline at end of file diff --git a/master/classncine_1_1_null_gfx_capabilities__coll__graph.png b/master/classncine_1_1_null_gfx_capabilities__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..d31dd75f59e90a273ff7fc0ecc9357754fc44bd7 GIT binary patch literal 4295 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 + + + diff --git a/master/classncine_1_1_null_gfx_capabilities__inherit__graph.md5 b/master/classncine_1_1_null_gfx_capabilities__inherit__graph.md5 new file mode 100644 index 0000000000..cc1e731f56 --- /dev/null +++ b/master/classncine_1_1_null_gfx_capabilities__inherit__graph.md5 @@ -0,0 +1 @@ +039401b0615a75c6f3f25521653522ff \ No newline at end of file diff --git a/master/classncine_1_1_null_gfx_capabilities__inherit__graph.png b/master/classncine_1_1_null_gfx_capabilities__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..d31dd75f59e90a273ff7fc0ecc9357754fc44bd7 GIT binary patch literal 4295 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 + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::NullIndexer Member List
+
+
+ +

This is the complete list of members for ncine::NullIndexer, including all inherited members.

+ + + + + + + + + +
addObject(Object *object) overridencine::NullIndexerinlinevirtual
isEmpty() const overridencine::NullIndexerinlinevirtual
logReport() const overridencine::NullIndexerinlinevirtual
object(unsigned int id) const overridencine::NullIndexerinlinevirtual
removeObject(unsigned int id) overridencine::NullIndexerinlinevirtual
setObject(unsigned int id, Object *object) overridencine::NullIndexerinlinevirtual
size() const overridencine::NullIndexerinlinevirtual
~IIndexer()=0 (defined in ncine::IIndexer)ncine::IIndexerinlinepure virtual
+ + + + diff --git a/master/classncine_1_1_null_indexer.html b/master/classncine_1_1_null_indexer.html new file mode 100644 index 0000000000..ff7bea4cef --- /dev/null +++ b/master/classncine_1_1_null_indexer.html @@ -0,0 +1,144 @@ + + + + + + + +nCine: ncine::NullIndexer Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::NullIndexer Class Reference
+
+
+ +

Fake indexer, always returning nullptr and a zero index. + More...

+ +

#include <IIndexer.h>

+
+Inheritance diagram for ncine::NullIndexer:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for ncine::NullIndexer:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+unsigned int addObject (Object *object) override
 Adds an object to the index.
 
+bool removeObject (unsigned int id) override
 Removes an object from the index.
 
+Objectobject (unsigned int id) const override
 Returns the object with the specified object id, if any.
 
+bool setObject (unsigned int id, Object *object) override
 Sets the object pointer for the specified id.
 
+bool isEmpty () const override
 Returns true if the index is empty.
 
+unsigned int size () const override
 Returns the number of objects in the index.
 
+void logReport () const override
 Prints in the log a list of currently indexed objects.
 
+

Detailed Description

+

Fake indexer, always returning nullptr and a zero index.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classncine_1_1_null_indexer__coll__graph.map b/master/classncine_1_1_null_indexer__coll__graph.map new file mode 100644 index 0000000000..60b9ed4eb4 --- /dev/null +++ b/master/classncine_1_1_null_indexer__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classncine_1_1_null_indexer__coll__graph.md5 b/master/classncine_1_1_null_indexer__coll__graph.md5 new file mode 100644 index 0000000000..9066e936b2 --- /dev/null +++ b/master/classncine_1_1_null_indexer__coll__graph.md5 @@ -0,0 +1 @@ +ac81fd2796f72b9987dad5e8efdd54bf \ No newline at end of file diff --git a/master/classncine_1_1_null_indexer__coll__graph.png b/master/classncine_1_1_null_indexer__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..9d727a96c3ac41b0860a503b83d889b52374c07a GIT binary patch literal 2755 zcmcJRc{o&UAIDEBhAaOX z=g*nhf-xJsZbG=g`{VN@MKEx?U$8I(_Wth0txvN6fG_O4nX!FX{z}1hOS=zTl(`y+ z!eDW{(ph6^^AZs#jPK9NNATFgnPmsEW6gvi0|0Eu{wkC^Qyc+xX2$(tclOE&@4E+C z`%;oJA%XCvgK((OsSI1_DO*%_-Dan{OM-0#A6|ECI~w{lE4Og(7ky1t^D&CV1-VKT z*9F`ipfNY&b~^-q@@T{2uT3=EDy^-}E>nQyfBc9VQx;`#oGxExeEkZUHJ(p4f`;vG zsS{ycbx0tVKsZW-Lrg-Il$1`KH~~QzQ;-eDoJsEOILYZ7>P#k6{Jxd7wS;b>wfJ}u zfq=2Gc|f%Li*IU;iomBHdKeoEU@-KSmX@R~0)RbF`zP2{~ z-8-)ZjR98=4-XZw6!X%RvF7@U3X}_u8DU{zQSZ;#_%UVL(x0p8^VqW7gosrw!{aTS zoSsxwRgp+uj*cT0h9mNswQSb*?&#TiCgxv5x(2!{bpqO$n(bLW?cK7 zix-i|_9My+24jg3a+bEbdz)VA!k6%kNy$)_CW%c= zP8t!>Fc|E`%auZ7QFP2I)K z%>!Q*&J}HJY^aDWf$u;eMUtk+TO+}*bWij1@`BWomBjhy=GX99~pV5F8TXU5yMH8mAGx!*kg`y@33a?F^%`tRE7 zmKpu05Yry)$Ofqj%Eqr2@gBIBoXn?DlG#xdlg{4AJLMZ%MH7#{BWX1spqwF;-RvxVG+n01WnMaZ%8e^5>z_b&SIoH+PeLfQpI& zXRGuAZ0Fj%S($4-XLh#DForXcaPT06p;B}p8a1QpmUTCBi43LD(~&J zG5ZP<(e8zO%IxarAA76EjvZT)IYc~k!AEs)l1itC8oY)kejXidd3NCV-am*H3g8%X zL_|fG78i3=MZF>-o_z2`$+dT(ua)gw?mL-)6&_@dH3cgxC|vcQ$m*O@%k8bdu_xWD zVrY0}H3cJxx5Hu^%m-+a*v%p>iIt5N28uLby<9B&dn+X^?Ubr&+s!ExG#YJhZy&j{ zdCO*Qc9xHi&pKa6SV}62{d;|TJN(BQ=XT?LjocT-#n2Nc?!9xr)#&^;Zjceb6f`sf z7c>AU6l$cDO{3G{X-B1{#|K!^Z-EErx;!;}e0(q?wPdoQDnat_;lrY$p9cp^Dy!7D zhlcF2*x|J~DoYnrb;auZc^jqdo?y+>r|UorpE*JDF8UwvNJ>}r=s*;kogs4zY6jZLfL%S}hrwVpHQ#*tgs#TwBM=C6b=GWOUdmCp zu8xl1cuVd(_wdNbr9rfuNb4Q8E&}m|Mhp2|ZpF*X3nDx&E)IyzI(ZSCeo`RD`8^9X z!Osg`US7Y0jW;XP($hnNgGps&pxLR5r#3X`w3O#e^9V{ogoHrWQmNEAR@mkGfG@Vk zfIq~<>TXOJ@+G_yG@$I&yng-m=nuvInLtq5!wDvCYL^}_U+^#m{wm4sdrzT&kgI7w za^DSPCz(v{=;(+DHlfF7Wo3b;wip;JLwWzcMox&AS5Z-Mq&c+e>C?I7?1iAFJHB+k zUD^txUOD^Yz<`aOo?eN7I)CKvUy5nwVOR%k?fN(#A+aMz*x0My-Y`NB%c~k|`OARd z?%|<{M8d^VZY4DE79$!_q^7``>#J8cZ{9>- znECQ5hc4vn>zkgQE+shEl_c8Q+PZbe^k{=~WoxSezVl4T@^D|C_I@s|(|*In9+&m> znm>K|1lsAd3*VSbc@f^czS+P=ypRlRRKUv9)3e+2b$9nURl?HhYL!7axbefo!@a%B z8yg$(cnXV2(bUwOo14RY?wi^2-JMQOPEJfrEH5v2Xj8l=r=h9o@8@?XiVw21uE)jm zKe(hditOp_b>0+*6wH7BZWuV-ogt6hW;EWOE0KJWh)b5WNLPud@R(l195a~T;?e$( d&-Cr> + + + diff --git a/master/classncine_1_1_null_indexer__inherit__graph.md5 b/master/classncine_1_1_null_indexer__inherit__graph.md5 new file mode 100644 index 0000000000..9066e936b2 --- /dev/null +++ b/master/classncine_1_1_null_indexer__inherit__graph.md5 @@ -0,0 +1 @@ +ac81fd2796f72b9987dad5e8efdd54bf \ No newline at end of file diff --git a/master/classncine_1_1_null_indexer__inherit__graph.png b/master/classncine_1_1_null_indexer__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..9d727a96c3ac41b0860a503b83d889b52374c07a GIT binary patch literal 2755 zcmcJRc{o&UAIDEBhAaOX z=g*nhf-xJsZbG=g`{VN@MKEx?U$8I(_Wth0txvN6fG_O4nX!FX{z}1hOS=zTl(`y+ z!eDW{(ph6^^AZs#jPK9NNATFgnPmsEW6gvi0|0Eu{wkC^Qyc+xX2$(tclOE&@4E+C z`%;oJA%XCvgK((OsSI1_DO*%_-Dan{OM-0#A6|ECI~w{lE4Og(7ky1t^D&CV1-VKT z*9F`ipfNY&b~^-q@@T{2uT3=EDy^-}E>nQyfBc9VQx;`#oGxExeEkZUHJ(p4f`;vG zsS{ycbx0tVKsZW-Lrg-Il$1`KH~~QzQ;-eDoJsEOILYZ7>P#k6{Jxd7wS;b>wfJ}u zfq=2Gc|f%Li*IU;iomBHdKeoEU@-KSmX@R~0)RbF`zP2{~ z-8-)ZjR98=4-XZw6!X%RvF7@U3X}_u8DU{zQSZ;#_%UVL(x0p8^VqW7gosrw!{aTS zoSsxwRgp+uj*cT0h9mNswQSb*?&#TiCgxv5x(2!{bpqO$n(bLW?cK7 zix-i|_9My+24jg3a+bEbdz)VA!k6%kNy$)_CW%c= zP8t!>Fc|E`%auZ7QFP2I)K z%>!Q*&J}HJY^aDWf$u;eMUtk+TO+}*bWij1@`BWomBjhy=GX99~pV5F8TXU5yMH8mAGx!*kg`y@33a?F^%`tRE7 zmKpu05Yry)$Ofqj%Eqr2@gBIBoXn?DlG#xdlg{4AJLMZ%MH7#{BWX1spqwF;-RvxVG+n01WnMaZ%8e^5>z_b&SIoH+PeLfQpI& zXRGuAZ0Fj%S($4-XLh#DForXcaPT06p;B}p8a1QpmUTCBi43LD(~&J zG5ZP<(e8zO%IxarAA76EjvZT)IYc~k!AEs)l1itC8oY)kejXidd3NCV-am*H3g8%X zL_|fG78i3=MZF>-o_z2`$+dT(ua)gw?mL-)6&_@dH3cgxC|vcQ$m*O@%k8bdu_xWD zVrY0}H3cJxx5Hu^%m-+a*v%p>iIt5N28uLby<9B&dn+X^?Ubr&+s!ExG#YJhZy&j{ zdCO*Qc9xHi&pKa6SV}62{d;|TJN(BQ=XT?LjocT-#n2Nc?!9xr)#&^;Zjceb6f`sf z7c>AU6l$cDO{3G{X-B1{#|K!^Z-EErx;!;}e0(q?wPdoQDnat_;lrY$p9cp^Dy!7D zhlcF2*x|J~DoYnrb;auZc^jqdo?y+>r|UorpE*JDF8UwvNJ>}r=s*;kogs4zY6jZLfL%S}hrwVpHQ#*tgs#TwBM=C6b=GWOUdmCp zu8xl1cuVd(_wdNbr9rfuNb4Q8E&}m|Mhp2|ZpF*X3nDx&E)IyzI(ZSCeo`RD`8^9X z!Osg`US7Y0jW;XP($hnNgGps&pxLR5r#3X`w3O#e^9V{ogoHrWQmNEAR@mkGfG@Vk zfIq~<>TXOJ@+G_yG@$I&yng-m=nuvInLtq5!wDvCYL^}_U+^#m{wm4sdrzT&kgI7w za^DSPCz(v{=;(+DHlfF7Wo3b;wip;JLwWzcMox&AS5Z-Mq&c+e>C?I7?1iAFJHB+k zUD^txUOD^Yz<`aOo?eN7I)CKvUy5nwVOR%k?fN(#A+aMz*x0My-Y`NB%c~k|`OARd z?%|<{M8d^VZY4DE79$!_q^7``>#J8cZ{9>- znECQ5hc4vn>zkgQE+shEl_c8Q+PZbe^k{=~WoxSezVl4T@^D|C_I@s|(|*In9+&m> znm>K|1lsAd3*VSbc@f^czS+P=ypRlRRKUv9)3e+2b$9nURl?HhYL!7axbefo!@a%B z8yg$(cnXV2(bUwOo14RY?wi^2-JMQOPEJfrEH5v2Xj8l=r=h9o@8@?XiVw21uE)jm zKe(hditOp_b>0+*6wH7BZWuV-ogt6hW;EWOE0KJWh)b5WNLPud@R(l195a~T;?e$( d&-Cr> + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::NullLogger Member List
+
+
+ +

This is the complete list of members for ncine::NullLogger, including all inherited members.

+ + + + + + + + +
clearLogString() overridencine::NullLoggerinlinevirtual
LogLevel enum namencine::ILogger
logString() const overridencine::NullLoggerinlinevirtual
logStringCapacity() const overridencine::NullLoggerinlinevirtual
logStringLength() const overridencine::NullLoggerinlinevirtual
write(LogLevel level, const char *fmt,...) overridencine::NullLoggerinlinevirtual
~ILogger()=0 (defined in ncine::ILogger)ncine::ILoggerinlinepure virtual
+ + + + diff --git a/master/classncine_1_1_null_logger.html b/master/classncine_1_1_null_logger.html new file mode 100644 index 0000000000..09bd16b51a --- /dev/null +++ b/master/classncine_1_1_null_logger.html @@ -0,0 +1,154 @@ + + + + + + + +nCine: ncine::NullLogger Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::NullLogger Class Reference
+
+
+ +

A fake logger which doesn't log anything. + More...

+ +

#include <ILogger.h>

+
+Inheritance diagram for ncine::NullLogger:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for ncine::NullLogger:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + +

+Public Member Functions

+unsigned int write (LogLevel level, const char *fmt,...) override
 Logs a message with a specified level of severity.
 
+const char * logString () const override
 Returns the log string with all the recorded log entries.
 
+void clearLogString () override
 Clears the entries from the log string.
 
+unsigned int logStringLength () const override
 Returns the length of the log string.
 
+unsigned int logStringCapacity () const override
 Returns the capacity of the log string.
 
+ + + + + +

+Additional Inherited Members

- Public Types inherited from ncine::ILogger
enum class  LogLevel {
+  UNKNOWN = -1 +, OFF = 0 +, VERBOSE +, DEBUG +,
+  INFO +, WARN +, ERROR +, FATAL +
+ }
 Log levels, from less to more severe.
 
+

Detailed Description

+

A fake logger which doesn't log anything.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classncine_1_1_null_logger__coll__graph.map b/master/classncine_1_1_null_logger__coll__graph.map new file mode 100644 index 0000000000..7b5f2dde71 --- /dev/null +++ b/master/classncine_1_1_null_logger__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classncine_1_1_null_logger__coll__graph.md5 b/master/classncine_1_1_null_logger__coll__graph.md5 new file mode 100644 index 0000000000..4df2a8eba4 --- /dev/null +++ b/master/classncine_1_1_null_logger__coll__graph.md5 @@ -0,0 +1 @@ +3de670016d153f0a3f9d9f266430107d \ No newline at end of file diff --git a/master/classncine_1_1_null_logger__coll__graph.png b/master/classncine_1_1_null_logger__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..362f76477f69e6614cf600576079fd0a81971c62 GIT binary patch literal 2895 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 literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_null_logger__inherit__graph.map b/master/classncine_1_1_null_logger__inherit__graph.map new file mode 100644 index 0000000000..7b5f2dde71 --- /dev/null +++ b/master/classncine_1_1_null_logger__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classncine_1_1_null_logger__inherit__graph.md5 b/master/classncine_1_1_null_logger__inherit__graph.md5 new file mode 100644 index 0000000000..4df2a8eba4 --- /dev/null +++ b/master/classncine_1_1_null_logger__inherit__graph.md5 @@ -0,0 +1 @@ +3de670016d153f0a3f9d9f266430107d \ No newline at end of file diff --git a/master/classncine_1_1_null_logger__inherit__graph.png b/master/classncine_1_1_null_logger__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..362f76477f69e6614cf600576079fd0a81971c62 GIT binary patch literal 2895 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 literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_null_thread_pool-members.html b/master/classncine_1_1_null_thread_pool-members.html new file mode 100644 index 0000000000..32f5100bad --- /dev/null +++ b/master/classncine_1_1_null_thread_pool-members.html @@ -0,0 +1,86 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::NullThreadPool Member List
+
+
+ +

This is the complete list of members for ncine::NullThreadPool, including all inherited members.

+ + + +
enqueueCommand(nctl::UniquePtr< IThreadCommand > threadCommand) overridencine::NullThreadPoolinlinevirtual
~IThreadPool()=0 (defined in ncine::IThreadPool)ncine::IThreadPoolinlinepure virtual
+ + + + diff --git a/master/classncine_1_1_null_thread_pool.html b/master/classncine_1_1_null_thread_pool.html new file mode 100644 index 0000000000..442c8d6986 --- /dev/null +++ b/master/classncine_1_1_null_thread_pool.html @@ -0,0 +1,120 @@ + + + + + + + +nCine: ncine::NullThreadPool Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::NullThreadPool Class Reference
+
+
+ +

A fake thread pool which doesn't create any thread. + More...

+ +

#include <IThreadPool.h>

+
+Inheritance diagram for ncine::NullThreadPool:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for ncine::NullThreadPool:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + +

+Public Member Functions

+void enqueueCommand (nctl::UniquePtr< IThreadCommand > threadCommand) override
 Enqueues a command request for a worker thread.
 
+

Detailed Description

+

A fake thread pool which doesn't create any thread.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classncine_1_1_null_thread_pool__coll__graph.map b/master/classncine_1_1_null_thread_pool__coll__graph.map new file mode 100644 index 0000000000..4e0e740a9f --- /dev/null +++ b/master/classncine_1_1_null_thread_pool__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classncine_1_1_null_thread_pool__coll__graph.md5 b/master/classncine_1_1_null_thread_pool__coll__graph.md5 new file mode 100644 index 0000000000..4235b8fdd3 --- /dev/null +++ b/master/classncine_1_1_null_thread_pool__coll__graph.md5 @@ -0,0 +1 @@ +2f8e1fd59dd020a262ab9d828b39fa31 \ No newline at end of file diff --git a/master/classncine_1_1_null_thread_pool__coll__graph.png b/master/classncine_1_1_null_thread_pool__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..a82fe994c499ed77c7b1c4ea955e8c91330d7024 GIT binary patch literal 3766 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 F{1 + + + diff --git a/master/classncine_1_1_null_thread_pool__inherit__graph.md5 b/master/classncine_1_1_null_thread_pool__inherit__graph.md5 new file mode 100644 index 0000000000..4235b8fdd3 --- /dev/null +++ b/master/classncine_1_1_null_thread_pool__inherit__graph.md5 @@ -0,0 +1 @@ +2f8e1fd59dd020a262ab9d828b39fa31 \ No newline at end of file diff --git a/master/classncine_1_1_null_thread_pool__inherit__graph.png b/master/classncine_1_1_null_thread_pool__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..a82fe994c499ed77c7b1c4ea955e8c91330d7024 GIT binary patch literal 3766 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 F{1 + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::Object Member List
+
+
+ +

This is the complete list of members for ncine::Object, including all inherited members.

+ + + + + + + + + + + + + + + + +
fromId(unsigned int id)ncine::Objectstatic
id() constncine::Objectinline
MaxNameLengthncine::Objectstatic
name() constncine::Object
Object(ObjectType type)ncine::Objectexplicit
Object(ObjectType type, const char *name)ncine::Object
Object(Object &&other)ncine::Object
Object(const Object &other)ncine::Objectprotected
ObjectType enum namencine::Object
operator=(Object &&other)ncine::Object
setName(const char *name)ncine::Object
sType()ncine::Objectinlinestatic
type() constncine::Objectinline
type_ncine::Objectprotected
~Object()ncine::Objectvirtual
+ + + + diff --git a/master/classncine_1_1_object.html b/master/classncine_1_1_object.html new file mode 100644 index 0000000000..3e11d69f6f --- /dev/null +++ b/master/classncine_1_1_object.html @@ -0,0 +1,222 @@ + + + + + + + +nCine: ncine::Object Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

Static RRTI and identification index. + More...

+ +

#include <Object.h>

+
+Inheritance diagram for ncine::Object:
+
+
Inheritance graph
+ + + + + + + + + + + + + + + + + + + +
[legend]
+ + + + + +

+Public Types

enum class  ObjectType {
+  BASE = 0 +, TEXTURE +, SHADER +, SCENENODE +,
+  SPRITE +, MESH_SPRITE +, ANIMATED_SPRITE +, PARTICLE +,
+  PARTICLE_SYSTEM +, FONT +, TEXTNODE +, AUDIOBUFFER +,
+  AUDIOBUFFER_PLAYER +, AUDIOSTREAM_PLAYER +
+ }
 Object types.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Object (ObjectType type)
 Constructs an object with a specified type and adds it to the index.
 
Object (ObjectType type, const char *name)
 Constructs an object with a specified type and name and adds it to the index.
 
+virtual ~Object ()
 Removes an object from the index and then destroys it.
 
Object (Object &&other)
 Move constructor.
 
+Objectoperator= (Object &&other)
 Move assignment operator.
 
+unsigned int id () const
 Returns the object identification number.
 
+ObjectType type () const
 Returns the object type (RTTI)
 
+const char * name () const
 Returns the object name.
 
+void setName (const char *name)
 Sets the object name.
 
+ + + + + + + + +

+Static Public Member Functions

+static ObjectType sType ()
 Static method to return class type.
 
+template<class T >
static T * fromId (unsigned int id)
 Returns a casted pointer to the object with the specified id, if any exists.
 
+ + + + +

+Static Public Attributes

+static const unsigned int MaxNameLength = 128
 Maximum length for an object name.
 
+ + + + +

+Protected Member Functions

Object (const Object &other)
 Protected copy constructor used to clone objects.
 
+ + + + +

+Protected Attributes

+ObjectType type_
 Object type.
 
+

Detailed Description

+

Static RRTI and identification index.

+

The documentation for this class was generated from the following files:
    +
  • include/ncine/Object.h
  • +
  • src/base/Object.cpp
  • +
+
+ + + + diff --git a/master/classncine_1_1_object__inherit__graph.map b/master/classncine_1_1_object__inherit__graph.map new file mode 100644 index 0000000000..453996f067 --- /dev/null +++ b/master/classncine_1_1_object__inherit__graph.map @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/master/classncine_1_1_object__inherit__graph.md5 b/master/classncine_1_1_object__inherit__graph.md5 new file mode 100644 index 0000000000..c320a054ec --- /dev/null +++ b/master/classncine_1_1_object__inherit__graph.md5 @@ -0,0 +1 @@ +72dd91877a55a9f10cd86225e98c9179 \ No newline at end of file diff --git a/master/classncine_1_1_object__inherit__graph.png b/master/classncine_1_1_object__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..d0aaa61536265a2fd6ab5db02502cc36952fffd0 GIT binary patch literal 37867 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 z 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 + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::PCApplication Member List
+
+
+ +

This is the complete list of members for ncine::PCApplication, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
appCfg_ (defined in ncine::Application)ncine::Applicationprotected
appConfiguration() constncine::Applicationinline
appEventHandler_ (defined in ncine::Application)ncine::Applicationprotected
Application() (defined in ncine::Application)ncine::Applicationprotected
autoSuspension() constncine::Applicationinline
autoSuspension_ (defined in ncine::Application)ncine::Applicationprotected
debugOverlay_ (defined in ncine::Application)ncine::Applicationprotected
debugOverlayNullSettings_ (defined in ncine::Application)ncine::Applicationprotected
debugOverlaySettings()ncine::Applicationinline
frameTimer()ncine::Application
frameTimer_ (defined in ncine::Application)ncine::Applicationprotected
gfxDevice()ncine::Applicationinline
gfxDevice_ (defined in ncine::Application)ncine::Applicationprotected
guiSettings()ncine::Applicationinline
guiSettings_ (defined in ncine::Application)ncine::Applicationprotected
hasFocus() constncine::Applicationinline
hasFocus_ (defined in ncine::Application)ncine::Applicationprotected
height() constncine::Applicationinline
heightInt() constncine::Applicationinline
initCommon()ncine::Applicationprotected
inputManager()ncine::Applicationinline
inputManager_ (defined in ncine::Application)ncine::Applicationprotected
interval() constncine::Application
isSuspended() constncine::Applicationinline
isSuspended_ (defined in ncine::Application)ncine::Applicationprotected
numFrames() constncine::Application
profileStartTime_ (defined in ncine::Application)ncine::Applicationprotected
Qt5Widget (defined in ncine::PCApplication)ncine::PCApplicationfriend
quit()ncine::Applicationinline
renderingSettings()ncine::Applicationinline
renderingSettings_ (defined in ncine::Application)ncine::Applicationprotected
resizeScreenViewport(int width, int height)ncine::Applicationprotected
resolution() constncine::Applicationinline
resolutionInt() constncine::Applicationinline
resume()ncine::Applicationprotected
rootNode()ncine::Applicationinline
rootNode_ (defined in ncine::Application)ncine::Applicationprotected
screenViewport()ncine::Application
screenViewport_ (defined in ncine::Application)ncine::Applicationprotected
setAutoSuspension(bool autoSuspension)ncine::Applicationinline
setFocus(bool hasFocus)ncine::Applicationprotectedvirtual
setSuspended(bool suspended)ncine::Applicationinline
shouldQuit() constncine::Applicationinline
shouldQuit_ (defined in ncine::Application)ncine::Applicationprotected
shutdownCommon()ncine::Applicationprotected
start(nctl::UniquePtr< IAppEventHandler >(*createAppEventHandler)(), int argc, char **argv)ncine::PCApplicationstatic
step()ncine::Applicationprotected
suspend()ncine::Applicationprotected
theApplication()ncine::PCApplicationfriend
timings() constncine::Applicationinline
timings_ (defined in ncine::Application)ncine::Applicationprotected
updateScalingFactor()ncine::Applicationprotected
width() constncine::Applicationinline
widthInt() constncine::Applicationinline
~Application() (defined in ncine::Application)ncine::Applicationprotected
+ + + + diff --git a/master/classncine_1_1_p_c_application.html b/master/classncine_1_1_p_c_application.html new file mode 100644 index 0000000000..75fd150e9e --- /dev/null +++ b/master/classncine_1_1_p_c_application.html @@ -0,0 +1,347 @@ + + + + + + + +nCine: ncine::PCApplication Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::PCApplication Class Reference
+
+
+ +

Handler class for nCine applications on PC. + More...

+ +

#include <PCApplication.h>

+
+Inheritance diagram for ncine::PCApplication:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for ncine::PCApplication:
+
+
Collaboration graph
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
[legend]
+ + + + + +

+Static Public Member Functions

+static int start (nctl::UniquePtr< IAppEventHandler >(*createAppEventHandler)(), int argc, char **argv)
 Entry point method to be called in the main() function.
 
+ + + + + + +

+Friends

+class Qt5Widget
 
+DLL_PUBLIC ApplicationtheApplication ()
 Meyers' Singleton.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Member Functions inherited from ncine::Application
+const AppConfigurationappConfiguration () const
 Returns the configuration used to initialize the application.
 
+RenderingSettingsrenderingSettings ()
 Returns the run-time rendering settings.
 
+GuiSettingsguiSettings ()
 Returns the run-time GUI settings.
 
+IDebugOverlay::DisplaySettingsdebugOverlaySettings ()
 Returns the run-time debug overlay settings, if debug overlay is available.
 
+const float * timings () const
 Returns all timings.
 
+IGfxDevicegfxDevice ()
 Returns the graphics device instance.
 
+SceneNoderootNode ()
 Returns the root node of the transformation graph.
 
+ViewportscreenViewport ()
 Returns the screen viewport.
 
+IInputManagerinputManager ()
 Returns the input manager instance.
 
+unsigned long int numFrames () const
 Returns the total number of frames already rendered.
 
+float interval () const
 Returns the time in seconds that last frame took to complete.
 
+IFrameTimerframeTimer ()
 Returns the frame timer interface.
 
+float width () const
 Returns the drawable screen width as a float number.
 
+float height () const
 Returns the drawable screen height as a float number.
 
+Vector2f resolution () const
 Returns the drawable screen resolution as a Vector2f object.
 
+int widthInt () const
 Returns the drawable screen width as an integer number.
 
+int heightInt () const
 Returns the drawable screen height as an integer number.
 
+Vector2i resolutionInt () const
 Returns the drawable screen resolution as a Vector2i object.
 
bool isSuspended () const
 Returns the value of the suspension flag. More...
 
+void setSuspended (bool suspended)
 Sets the suspension flag value.
 
bool autoSuspension () const
 Returns the value of the auto-suspension flag. More...
 
+void setAutoSuspension (bool autoSuspension)
 Sets the auto-suspension flag value.
 
+void quit ()
 Asks the application to quit as soon as possible (by raising the quit flag)
 
+bool shouldQuit () const
 Returns the value of the quit flag.
 
+bool hasFocus () const
 Returns the focus flag value.
 
- Protected Member Functions inherited from ncine::Application
+void initCommon ()
 Must be called before giving control to the application.
 
+void step ()
 A single step of the game loop made to render a frame.
 
+void shutdownCommon ()
 Must be called before exiting to shut down the application.
 
+void suspend ()
 Called when the application gets suspended.
 
+void resume ()
 Called when the application resumes execution.
 
+virtual void setFocus (bool hasFocus)
 Sets the focus flag.
 
bool resizeScreenViewport (int width, int height)
 Resizes the screen viewport, if it exists. More...
 
bool updateScalingFactor ()
 Checks if the window scaling factor has changed this frame. More...
 
- Protected Attributes inherited from ncine::Application
+bool isSuspended_
 
+bool autoSuspension_
 
+bool hasFocus_
 
+bool shouldQuit_
 
+const AppConfiguration appCfg_
 
+RenderingSettings renderingSettings_
 
+GuiSettings guiSettings_
 
+float timings_ [Timings::COUNT]
 
+IDebugOverlay::DisplaySettings debugOverlayNullSettings_
 
+TimeStamp profileStartTime_
 
+nctl::UniquePtr< FrameTimer > frameTimer_
 
+nctl::UniquePtr< IGfxDevicegfxDevice_
 
+nctl::UniquePtr< SceneNoderootNode_
 
+nctl::UniquePtr< ScreenViewport > screenViewport_
 
+nctl::UniquePtr< IDebugOverlaydebugOverlay_
 
+nctl::UniquePtr< IInputManagerinputManager_
 
+nctl::UniquePtr< IAppEventHandlerappEventHandler_
 
+

Detailed Description

+

Handler class for nCine applications on PC.

+

The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classncine_1_1_p_c_application__coll__graph.map b/master/classncine_1_1_p_c_application__coll__graph.map new file mode 100644 index 0000000000..bc1759fc04 --- /dev/null +++ b/master/classncine_1_1_p_c_application__coll__graph.map @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/master/classncine_1_1_p_c_application__coll__graph.md5 b/master/classncine_1_1_p_c_application__coll__graph.md5 new file mode 100644 index 0000000000..e61aafa523 --- /dev/null +++ b/master/classncine_1_1_p_c_application__coll__graph.md5 @@ -0,0 +1 @@ +4451dec138f1361349cf26b10f7e75b7 \ No newline at end of file diff --git a/master/classncine_1_1_p_c_application__coll__graph.png b/master/classncine_1_1_p_c_application__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..a148ca8cb7adae61691f52bf91c9f33ef1bbab81 GIT binary patch literal 203081 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 z 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 a74b*B-|xwmouJfmveJrY(j~9l`o92G=JJ*R literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_p_c_application__inherit__graph.map b/master/classncine_1_1_p_c_application__inherit__graph.map new file mode 100644 index 0000000000..d48fb019fe --- /dev/null +++ b/master/classncine_1_1_p_c_application__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classncine_1_1_p_c_application__inherit__graph.md5 b/master/classncine_1_1_p_c_application__inherit__graph.md5 new file mode 100644 index 0000000000..7233e532c7 --- /dev/null +++ b/master/classncine_1_1_p_c_application__inherit__graph.md5 @@ -0,0 +1 @@ +0685b23f609e1189f745cb25674f86e4 \ No newline at end of file diff --git a/master/classncine_1_1_p_c_application__inherit__graph.png b/master/classncine_1_1_p_c_application__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..c29fe28e750599e574faada3dd61e7858dafd851 GIT binary patch literal 3576 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 literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_particle-members.html b/master/classncine_1_1_particle-members.html new file mode 100644 index 0000000000..667aa38ccf --- /dev/null +++ b/master/classncine_1_1_particle-members.html @@ -0,0 +1,291 @@ + + + + + + + +nCine: Member List + + + + + + + + + + +
+
+
ncine::Particle Member List
+
+
+ +

This is the complete list of members for ncine::Particle, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
aabb() constncine::DrawableNodeinline
aabb_ncine::DrawableNodeprotected
AabbBit enum value (defined in ncine::SceneNode)ncine::SceneNodeprotected
absAlpha() constncine::SceneNodeinline
absAnchorPoint() constncine::SceneNodeinline
absColor() constncine::SceneNodeinline
absColor_ncine::SceneNodeprotected
absHeight() constncine::DrawableNodeinlinevirtual
absLayer() constncine::SceneNodeinline
absLayer_ncine::SceneNodeprotected
absPosition() constncine::SceneNodeinline
absPosition_ncine::SceneNodeprotected
absRotation() constncine::SceneNodeinline
absRotation_ncine::SceneNodeprotected
absScale() constncine::SceneNodeinline
absScaleFactor_ncine::SceneNodeprotected
absSize() constncine::DrawableNodeinline
absWidth() constncine::DrawableNodeinlinevirtual
addChildNode(SceneNode *childNode)ncine::SceneNode
alpha() constncine::SceneNodeinline
AnchorBottomLeft (defined in ncine::DrawableNode)ncine::DrawableNodestatic
AnchorBottomRight (defined in ncine::DrawableNode)ncine::DrawableNodestatic
AnchorCenter (defined in ncine::DrawableNode)ncine::DrawableNodestatic
anchorPoint() constncine::DrawableNodeinline
anchorPoint_ncine::SceneNodeprotected
AnchorTopLeft (defined in ncine::DrawableNode)ncine::DrawableNodestatic
AnchorTopRight (defined in ncine::DrawableNode)ncine::DrawableNodestatic
BaseSprite(BaseSprite &&)=defaultncine::BaseSprite
BaseSprite(SceneNode *parent, Texture *texture, float xx, float yy)ncine::BaseSpriteprotected
BaseSprite(SceneNode *parent, Texture *texture, const Vector2f &position)ncine::BaseSpriteprotected
BaseSprite(const BaseSprite &other)ncine::BaseSpriteprotected
BlendingFactor enum namencine::DrawableNode
BlendingPreset enum namencine::DrawableNode
childOrderIndex() constncine::SceneNode
childOrderIndex_ncine::SceneNodeprotected
children()ncine::SceneNodeinline
children() constncine::SceneNodeinline
children_ncine::SceneNodeprotected
clone() constncine::Particleinlineprotected
color() constncine::SceneNodeinline
color_ncine::SceneNodeprotected
ColorBit enum value (defined in ncine::SceneNode)ncine::SceneNodeprotected
deleteChildrenOnDestruction() constncine::SceneNodeinline
destBlendingFactor() constncine::DrawableNode
DirtyBitPositions enum namencine::SceneNodeprotected
dirtyBits_ncine::SceneNodeprotected
draw(RenderQueue &renderQueue) overridencine::DrawableNodevirtual
DrawableNode(SceneNode *parent, float xx, float yy)ncine::DrawableNode
DrawableNode(SceneNode *parent, const Vector2f &position)ncine::DrawableNode
DrawableNode(SceneNode *parent)ncine::DrawableNodeexplicit
DrawableNode()ncine::DrawableNode
DrawableNode(DrawableNode &&)ncine::DrawableNode
DrawableNode(const DrawableNode &other)ncine::DrawableNodeprotected
drawEnabled_ (defined in ncine::SceneNode)ncine::SceneNodeprotected
flippedX_ncine::BaseSpriteprotected
flippedY_ncine::BaseSpriteprotected
fromId(unsigned int id)ncine::Objectstatic
height() constncine::DrawableNodeinlinevirtual
height_ncine::DrawableNodeprotected
id() constncine::Objectinline
inLocalSpace_ncine::Particle
instanceBlock_ (defined in ncine::BaseSprite)ncine::BaseSpriteprotected
isAlive() constncine::Particleinline
isBlendingEnabled() constncine::DrawableNode
isDrawEnabled() constncine::SceneNodeinline
isEnabled() constncine::SceneNodeinline
isFlippedX() constncine::BaseSpriteinline
isFlippedY() constncine::BaseSpriteinline
isUpdateEnabled() constncine::SceneNodeinline
lastFrameRendered() constncine::DrawableNodeinline
lastFrameRendered_ncine::DrawableNodeprotected
lastFrameUpdated() constncine::SceneNodeinline
lastFrameUpdated_ncine::SceneNodeprotected
layer() constncine::SceneNodeinline
layer_ncine::SceneNodeprotected
life_ncine::Particle
localMatrix() constncine::SceneNodeinline
localMatrix_ncine::SceneNodeprotected
MaxNameLengthncine::Objectstatic
MinRotationncine::SceneNodestatic
move(float x, float y)ncine::SceneNodeinline
move(const Vector2f &position)ncine::SceneNodeinline
moveX(float x)ncine::SceneNodeinline
moveY(float y)ncine::SceneNodeinline
name() constncine::Object
Object(ObjectType type)ncine::Objectexplicit
Object(ObjectType type, const char *name)ncine::Object
Object(Object &&other)ncine::Object
Object(const Object &other)ncine::Objectprotected
ObjectType enum namencine::Object
operator=(Particle &&)=defaultncine::Particle
ncine::Sprite::operator=(Sprite &&)=defaultncine::Sprite
ncine::BaseSprite::operator=(BaseSprite &&)=defaultncine::BaseSprite
ncine::DrawableNode::operator=(DrawableNode &&)ncine::DrawableNode
ncine::SceneNode::operator=(SceneNode &&other)ncine::SceneNode
ncine::SceneNode::operator=(const SceneNode &)=deletencine::SceneNodeprotected
ncine::Object::operator=(Object &&other)ncine::Object
parent() constncine::SceneNodeinline
parent()ncine::SceneNodeinline
parent_ncine::SceneNodeprotected
Particle(SceneNode *parent, Texture *texture)ncine::Particle
Particle(Particle &&)=defaultncine::Particle
Particle(const Particle &other)ncine::Particleprotected
ParticleSystem (defined in ncine::Particle)ncine::Particlefriend
position() constncine::SceneNodeinline
position_ncine::SceneNodeprotected
removeAllChildrenNodes()ncine::SceneNode
removeChildNode(SceneNode *childNode)ncine::SceneNode
removeChildNodeAt(unsigned int index)ncine::SceneNode
renderCommand_ncine::DrawableNodeprotected
resetTexture()ncine::BaseSprite
rotation() constncine::SceneNodeinline
rotation_ncine::SceneNodeprotected
scale() constncine::SceneNodeinline
scaleFactor_ncine::SceneNodeprotected
SceneNode(SceneNode *parent, float x, float y)ncine::SceneNode
SceneNode(SceneNode *parent, const Vector2f &position)ncine::SceneNode
SceneNode(SceneNode *parent)ncine::SceneNodeexplicit
SceneNode()ncine::SceneNode
SceneNode(SceneNode &&other)ncine::SceneNode
SceneNode(const SceneNode &other)ncine::SceneNodeprotected
setAbsAnchorPoint(float x, float y)ncine::SceneNodeinline
setAbsAnchorPoint(const Vector2f &point)ncine::SceneNodeinline
setAlpha(unsigned char alpha)ncine::SceneNodeinline
setAlphaF(float alpha)ncine::SceneNodeinline
setAnchorPoint(float xx, float yy)ncine::DrawableNode
setAnchorPoint(const Vector2f &point)ncine::DrawableNodeinline
setBlendingEnabled(bool blendingEnabled)ncine::DrawableNode
setBlendingFactors(BlendingFactor srcBlendingFactor, BlendingFactor destBlendingFactor)ncine::DrawableNode
setBlendingPreset(BlendingPreset blendingPreset)ncine::DrawableNode
setColor(Color color)ncine::SceneNodeinline
setColor(Colorf color)ncine::SceneNodeinline
setColor(unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha)ncine::SceneNodeinline
setColorF(float red, float green, float blue, float alpha)ncine::SceneNodeinline
setDeleteChildrenOnDestruction(bool shouldDeleteChildrenOnDestruction)ncine::SceneNodeinline
setDrawEnabled(bool drawEnabled)ncine::SceneNodeinline
setEnabled(bool isEnabled)ncine::SceneNodeinline
setFlippedX(bool flippedX)ncine::BaseSprite
setFlippedY(bool flippedY)ncine::BaseSprite
setLayer(uint16_t layer)ncine::SceneNodeinline
setLocalMatrix(const Matrix4x4f &localMatrix)ncine::SceneNodeinline
setName(const char *name)ncine::Object
setParent(SceneNode *parentNode)ncine::SceneNode
setPosition(float x, float y)ncine::SceneNodeinline
setPosition(const Vector2f &position)ncine::SceneNodeinline
setPositionX(float x)ncine::SceneNodeinline
setPositionY(float y)ncine::SceneNodeinline
setRotation(float rotation)ncine::SceneNodeinline
setScale(float scaleFactor)ncine::SceneNodeinline
setScale(float scaleFactorX, float scaleFactorY)ncine::SceneNodeinline
setScale(const Vector2f &scaleFactor)ncine::SceneNodeinline
setSize(float width, float height)ncine::BaseSprite
setSize(const Vector2f &size)ncine::BaseSpriteinline
setTexRect(const Recti &rect)ncine::BaseSprite
setTexture(Texture *texture)ncine::BaseSprite
setUpdateEnabled(bool updateEnabled)ncine::SceneNodeinline
setVisitOrderState(enum VisitOrderState visitOrderState)ncine::SceneNodeinline
setWorldMatrix(const Matrix4x4f &worldMatrix)ncine::SceneNodeinline
shaderHasChanged() overridencine::BaseSpriteprotectedvirtual
shouldDeleteChildrenOnDestruction_ncine::SceneNodeprotected
size() constncine::DrawableNodeinline
SizeBit enum value (defined in ncine::SceneNode)ncine::SceneNodeprotected
Sprite()ncine::Sprite
Sprite(SceneNode *parent, Texture *texture)ncine::Sprite
Sprite(Texture *texture)ncine::Spriteexplicit
Sprite(SceneNode *parent, Texture *texture, float xx, float yy)ncine::Sprite
Sprite(SceneNode *parent, Texture *texture, const Vector2f &position)ncine::Sprite
Sprite(Texture *texture, float xx, float yy)ncine::Sprite
Sprite(Texture *texture, const Vector2f &position)ncine::Sprite
Sprite(Sprite &&)=defaultncine::Sprite
Sprite(const Sprite &other)ncine::Spriteprotected
srcBlendingFactor() constncine::DrawableNode
startingLifencine::Particle
startingRotationncine::Particle
sType() (defined in ncine::Sprite)ncine::Spriteinlinestatic
swapChildPointer(SceneNode *first, SceneNode *second)ncine::SceneNodeprotected
swapChildrenNodes(unsigned int firstIndex, unsigned int secondIndex)ncine::SceneNode
swapNodeBack()ncine::SceneNode
swapNodeForward()ncine::SceneNode
texRect() constncine::BaseSpriteinline
texRect_ncine::BaseSpriteprotected
texture() constncine::BaseSpriteinline
texture_ncine::BaseSpriteprotected
TextureBit enum value (defined in ncine::SceneNode)ncine::SceneNodeprotected
TransformationBit enum value (defined in ncine::SceneNode)ncine::SceneNodeprotected
type() constncine::Objectinline
type_ncine::Objectprotected
unlinkChildNode(SceneNode *childNode)ncine::SceneNode
updateAabb()ncine::DrawableNodeprotectedvirtual
updateCulling()ncine::DrawableNodeprotected
updateEnabled_ (defined in ncine::SceneNode)ncine::SceneNodeprotected
updateRenderCommand() overridencine::BaseSpriteprotectedvirtual
velocity_ncine::Particle
visit(RenderQueue &renderQueue, unsigned int &visitOrderIndex)ncine::SceneNodevirtual
visitOrderIndex() constncine::SceneNodeinline
visitOrderIndex_ncine::SceneNodeprotected
visitOrderState() constncine::SceneNodeinline
VisitOrderState enum name (defined in ncine::SceneNode)ncine::SceneNode
visitOrderState_ncine::SceneNodeprotected
width() constncine::DrawableNodeinlinevirtual
width_ncine::DrawableNodeprotected
withVisitOrder_ncine::SceneNodeprotected
worldMatrix() constncine::SceneNodeinline
worldMatrix_ncine::SceneNodeprotected
~DrawableNode() override (defined in ncine::DrawableNode)ncine::DrawableNode
~Object()ncine::Objectvirtual
~SceneNode() overridencine::SceneNode
+ + + + diff --git a/master/classncine_1_1_particle.html b/master/classncine_1_1_particle.html new file mode 100644 index 0000000000..d0db0794c4 --- /dev/null +++ b/master/classncine_1_1_particle.html @@ -0,0 +1,1040 @@ + + + + + + + +nCine: ncine::Particle Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

The class holding all the relevant data for a single particle. + More...

+ +

#include <Particle.h>

+
+Inheritance diagram for ncine::Particle:
+
+
Inheritance graph
+ + + + + + + + +
[legend]
+
+Collaboration diagram for ncine::Particle:
+
+
Collaboration graph
+ + + + + + + + + + + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Particle (SceneNode *parent, Texture *texture)
 Constructor for a particle with a parent and texture, positioned in the relative origin.
 
Particle (Particle &&)=default
 Default move constructor.
 
+Particleoperator= (Particle &&)=default
 Default move assignment operator.
 
+bool isAlive () const
 Returns true if the particle is still alive.
 
- Public Member Functions inherited from ncine::Sprite
Sprite ()
 Default constructor for a sprite with no parent and no texture, positioned in the origin.
 
Sprite (SceneNode *parent, Texture *texture)
 Constructor for a sprite with a parent and texture, positioned in the relative origin.
 
Sprite (Texture *texture)
 Constructor for a sprite with a texture but no parent, positioned in the origin.
 
Sprite (SceneNode *parent, Texture *texture, float xx, float yy)
 Constructor for a sprite with a parent, a texture and a specified relative position.
 
Sprite (SceneNode *parent, Texture *texture, const Vector2f &position)
 Constructor for a sprite with a parent, a texture and a specified relative position as a vector.
 
Sprite (Texture *texture, float xx, float yy)
 Constructor for a sprite with a texture and a specified position but no parent.
 
Sprite (Texture *texture, const Vector2f &position)
 Constructor for a sprite with a texture and a specified position as a vector but no parent.
 
Sprite (Sprite &&)=default
 Default move constructor.
 
+Spriteoperator= (Sprite &&)=default
 Default move assignment operator.
 
+Sprite clone () const
 Returns a copy of this object.
 
- Public Member Functions inherited from ncine::BaseSprite
BaseSprite (BaseSprite &&)=default
 Default move constructor.
 
+BaseSpriteoperator= (BaseSprite &&)=default
 Default move assignment operator.
 
+void setSize (float width, float height)
 Sets the sprite size.
 
+void setSize (const Vector2f &size)
 Sets the sprite size with a Vector2f
 
+const Texturetexture () const
 Gets the texture object.
 
void setTexture (Texture *texture)
 Sets the texture object. More...
 
void resetTexture ()
 Triggers a texture update without setting a new texture. More...
 
+Recti texRect () const
 Gets the texture source rectangle for blitting.
 
+void setTexRect (const Recti &rect)
 Sets the texture source rectangle for blitting.
 
+bool isFlippedX () const
 Returns true if the sprite texture is horizontally flipped.
 
+void setFlippedX (bool flippedX)
 Flips the texture rect horizontally.
 
+bool isFlippedY () const
 Returns true if the sprite texture is vertically flipped.
 
+void setFlippedY (bool flippedY)
 Flips the texture rect vertically.
 
- Public Member Functions inherited from ncine::DrawableNode
DrawableNode (SceneNode *parent, float xx, float yy)
 Constructor for a drawable node with a parent and a specified relative position.
 
DrawableNode (SceneNode *parent, const Vector2f &position)
 Constructor for a drawable node with a parent and a specified relative position as a vector.
 
DrawableNode (SceneNode *parent)
 Constructor for a drawable node with a parent and positioned in the relative origin.
 
DrawableNode ()
 Constructor for a drawable node with no parent and positioned in the origin.
 
DrawableNode (DrawableNode &&)
 Default move constructor.
 
+DrawableNodeoperator= (DrawableNode &&)
 Default move assignment operator.
 
+bool draw (RenderQueue &renderQueue) override
 Updates the draw command and adds it to the queue.
 
+virtual float width () const
 Returns the width of the node area.
 
+virtual float height () const
 Returns the height of the node area.
 
+Vector2f size () const
 Returns the size of the node area.
 
+virtual float absWidth () const
 Returns the absolute width of the node area.
 
+virtual float absHeight () const
 Returns the absolute height of the node area.
 
+Vector2f absSize () const
 Returns the absolute size of the node area.
 
+Vector2f anchorPoint () const
 Gets the transformation anchor point.
 
void setAnchorPoint (float xx, float yy)
 Sets the transformation anchor point. More...
 
+void setAnchorPoint (const Vector2f &point)
 Sets the transformation anchor point with a Vector2f
 
+bool isBlendingEnabled () const
 Returns true if the node renders with blending enabled.
 
+void setBlendingEnabled (bool blendingEnabled)
 Sets the blending state for node rendering.
 
+BlendingFactor srcBlendingFactor () const
 Returns the source blending factor.
 
+BlendingFactor destBlendingFactor () const
 Returns the destination blending factor.
 
+void setBlendingPreset (BlendingPreset blendingPreset)
 Sets a blending preset for source and destination blending factors.
 
+void setBlendingFactors (BlendingFactor srcBlendingFactor, BlendingFactor destBlendingFactor)
 Sets a specific source and destination blending factors.
 
+unsigned long int lastFrameRendered () const
 Returns the last frame in which any of the viewports have rendered this node (node was not culled)
 
+Rectf aabb () const
 Returns the axis-aligned bounding box of the node area in the last frame.
 
- Public Member Functions inherited from ncine::SceneNode
 SceneNode (SceneNode *parent, float x, float y)
 Constructor for a node with a parent and a specified relative position. More...
 
 SceneNode (SceneNode *parent, const Vector2f &position)
 Constructor for a node with a parent and a specified relative position as a vector. More...
 
 SceneNode (SceneNode *parent)
 Constructor for a node with a parent and positioned in the relative origin. More...
 
SceneNode ()
 Constructor for a node with no parent and positioned in the origin.
 
~SceneNode () override
 The destructor will delete every child node.
 
SceneNode (SceneNode &&other)
 Move constructor.
 
+SceneNodeoperator= (SceneNode &&other)
 Move assignment operator.
 
+SceneNode clone () const
 Returns a copy of this object.
 
+const SceneNodeparent () const
 Returns the parent as a constant node, if there is any.
 
+SceneNodeparent ()
 Returns the parent node, if there is any.
 
bool setParent (SceneNode *parentNode)
 Sets the parent node. More...
 
+const nctl::Array< SceneNode * > & children ()
 Returns the array of child nodes.
 
+const nctl::Array< const SceneNode * > & children () const
 Returns an array of constant child nodes.
 
bool addChildNode (SceneNode *childNode)
 Adds a node as a child of this one. More...
 
bool removeChildNode (SceneNode *childNode)
 Removes a child of this node, without reparenting nephews. More...
 
bool removeChildNodeAt (unsigned int index)
 Removes the child at the specified index, without reparenting nephews. More...
 
bool removeAllChildrenNodes ()
 Removes all children, without reparenting nephews. More...
 
bool unlinkChildNode (SceneNode *childNode)
 Removes a child of this node reparenting nephews as children. More...
 
unsigned int childOrderIndex () const
 Returns the child order index of this node or zero if it does not have a parent. More...
 
bool swapChildrenNodes (unsigned int firstIndex, unsigned int secondIndex)
 Swaps two children at the specified indices. More...
 
bool swapNodeForward ()
 Brings this node one node forward in the parent's list of children. More...
 
bool swapNodeBack ()
 Brings this node one node back in the parent's list of children. More...
 
+enum VisitOrderState visitOrderState () const
 Returns true if the node visit order is used together with the layer.
 
+void setVisitOrderState (enum VisitOrderState visitOrderState)
 Enables the use of the node visit order together with the layer.
 
+uint16_t visitOrderIndex () const
 Returns the visit drawing order of the node.
 
+virtual void visit (RenderQueue &renderQueue, unsigned int &visitOrderIndex)
 Draws the node and visits its children.
 
+bool isUpdateEnabled () const
 Returns true if the node is updating.
 
+void setUpdateEnabled (bool updateEnabled)
 Enables or disables node updating.
 
+bool isDrawEnabled () const
 Returns true if the node is drawing.
 
+void setDrawEnabled (bool drawEnabled)
 Enables or disables node drawing.
 
+bool isEnabled () const
 Returns true if the node is both updating and drawing.
 
+void setEnabled (bool isEnabled)
 Enables or disables both node updating and drawing.
 
+Vector2f position () const
 Returns node position relative to its parent.
 
+Vector2f absPosition () const
 Returns absolute node position.
 
+void setPosition (float x, float y)
 Sets the node position through two coordinates.
 
+void setPosition (const Vector2f &position)
 Sets the node position through a vector.
 
+void setPositionX (float x)
 Sets the X coordinate of the node position.
 
+void setPositionY (float y)
 Sets the Y coordinate of the node position.
 
+void move (float x, float y)
 Moves the node based on two offsets.
 
+void move (const Vector2f &position)
 Adds a move vector to the node current position.
 
+void moveX (float x)
 Moves the node by an offset on the X axis.
 
+void moveY (float y)
 Moves the node by an offset on the Y axis.
 
+Vector2f absAnchorPoint () const
 Gets the absolute transformation anchor point in pixels.
 
+void setAbsAnchorPoint (float x, float y)
 Sets the absolute transformation anchor point in pixels.
 
+void setAbsAnchorPoint (const Vector2f &point)
 Sets the absolute transformation anchor point in pixels with a Vector2f
 
+const Vector2fscale () const
 Gets the node scale factors.
 
+const Vector2fabsScale () const
 Gets the node absolute scale factors.
 
+void setScale (float scaleFactor)
 Scales the node size both horizontally and vertically.
 
+void setScale (float scaleFactorX, float scaleFactorY)
 Scales the node size both horizontally and vertically.
 
+void setScale (const Vector2f &scaleFactor)
 Scales the node size both horizontally and vertically with a Vector2f
 
+float rotation () const
 Gets the node rotation in degrees.
 
+float absRotation () const
 Gets the node absolute rotation in degrees.
 
+void setRotation (float rotation)
 Sets the node rotation in degrees.
 
+Color color () const
 Gets the node color.
 
+Color absColor () const
 Gets the node absolute color.
 
+void setColor (Color color)
 Sets the node color through a Color object.
 
+void setColor (Colorf color)
 Sets the node color through a Colorf object.
 
+void setColor (unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha)
 Sets the node color through unsigned char components.
 
+void setColorF (float red, float green, float blue, float alpha)
 Sets the node color through float components.
 
+float alpha () const
 Gets the node alpha.
 
+float absAlpha () const
 Gets the node absolute alpha.
 
+void setAlpha (unsigned char alpha)
 Sets the node alpha through an unsigned char component.
 
+void setAlphaF (float alpha)
 Sets the node alpha through a float component.
 
+uint16_t layer () const
 Gets the node rendering layer.
 
uint16_t absLayer () const
 Gets the node absolute rendering layer. More...
 
void setLayer (uint16_t layer)
 Sets the node rendering layer. More...
 
+const Matrix4x4fworldMatrix () const
 Gets the node world matrix.
 
+void setWorldMatrix (const Matrix4x4f &worldMatrix)
 Sets the node world matrix (only useful when called inside onPostUpdate())
 
+const Matrix4x4flocalMatrix () const
 Gets the node local matrix.
 
+void setLocalMatrix (const Matrix4x4f &localMatrix)
 Sets the node local matrix.
 
bool deleteChildrenOnDestruction () const
 Gets the delete children on destruction flag. More...
 
+void setDeleteChildrenOnDestruction (bool shouldDeleteChildrenOnDestruction)
 Sets the delete children on destruction flag.
 
+unsigned long int lastFrameUpdated () const
 Returns the last frame in which any of the viewports have updated this node.
 
- Public Member Functions inherited from ncine::Object
Object (ObjectType type)
 Constructs an object with a specified type and adds it to the index.
 
Object (ObjectType type, const char *name)
 Constructs an object with a specified type and name and adds it to the index.
 
+virtual ~Object ()
 Removes an object from the index and then destroys it.
 
Object (Object &&other)
 Move constructor.
 
+Objectoperator= (Object &&other)
 Move assignment operator.
 
+unsigned int id () const
 Returns the object identification number.
 
+ObjectType type () const
 Returns the object type (RTTI)
 
+const char * name () const
 Returns the object name.
 
+void setName (const char *name)
 Sets the object name.
 
+ + + + + + + + + + + + + + + + +

+Public Attributes

+float life_
 Current particle remaining life in seconds.
 
+float startingLife
 Initial particle remaining life.
 
+float startingRotation
 Initial particle rotation.
 
+Vector2f velocity_
 Current particle velocity vector.
 
+bool inLocalSpace_
 A flag indicating if particle transformations are in local space or not.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

Particle clone () const
 Returns a copy of this object. More...
 
Particle (const Particle &other)
 Protected copy constructor used to clone objects.
 
- Protected Member Functions inherited from ncine::Sprite
Sprite (const Sprite &other)
 Protected copy constructor used to clone objects.
 
- Protected Member Functions inherited from ncine::BaseSprite
BaseSprite (SceneNode *parent, Texture *texture, float xx, float yy)
 Protected constructor accessible only by derived sprite classes.
 
BaseSprite (SceneNode *parent, Texture *texture, const Vector2f &position)
 Protected constructor accessible only by derived sprite classes.
 
BaseSprite (const BaseSprite &other)
 Protected copy constructor used to clone objects.
 
+void shaderHasChanged () override
 Performs the required tasks upon a change to the shader.
 
+void updateRenderCommand () override
 Updates the render command.
 
- Protected Member Functions inherited from ncine::DrawableNode
+virtual void updateAabb ()
 Calculates updated values for the AABB.
 
+void updateCulling ()
 Called by each viewport update method to update a node culling state.
 
DrawableNode (const DrawableNode &other)
 Protected copy constructor used to clone objects.
 
- Protected Member Functions inherited from ncine::SceneNode
+SceneNodeoperator= (const SceneNode &)=delete
 Deleted assignment operator.
 
SceneNode (const SceneNode &other)
 Protected copy constructor used to clone objects.
 
void swapChildPointer (SceneNode *first, SceneNode *second)
 Swaps the child pointer of a parent when moving an object. More...
 
- Protected Member Functions inherited from ncine::Object
Object (const Object &other)
 Protected copy constructor used to clone objects.
 
+ + + +

+Friends

+class ParticleSystem
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ncine::DrawableNode
enum class  BlendingPreset {
+  DISABLED +, ALPHA +, PREMULTIPLIED_ALPHA +, ADDITIVE +,
+  MULTIPLY +
+ }
 Presets for blending factors. More...
 
enum class  BlendingFactor {
+  ZERO +, ONE +, SRC_COLOR +, ONE_MINUS_SRC_COLOR +,
+  DST_COLOR +, ONE_MINUS_DST_COLOR +, SRC_ALPHA +, ONE_MINUS_SRC_ALPHA +,
+  DST_ALPHA +, ONE_MINUS_DST_ALPHA +, CONSTANT_COLOR +, ONE_MINUS_CONSTANT_COLOR +,
+  CONSTANT_ALPHA +, ONE_MINUS_CONSTANT_ALPHA +, SRC_ALPHA_SATURATE +
+ }
 OpenGL blending factors.
 
- Public Types inherited from ncine::SceneNode
enum class  VisitOrderState { ENABLED +, DISABLED +, SAME_AS_PARENT + }
 
- Public Types inherited from ncine::Object
enum class  ObjectType {
+  BASE = 0 +, TEXTURE +, SHADER +, SCENENODE +,
+  SPRITE +, MESH_SPRITE +, ANIMATED_SPRITE +, PARTICLE +,
+  PARTICLE_SYSTEM +, FONT +, TEXTNODE +, AUDIOBUFFER +,
+  AUDIOBUFFER_PLAYER +, AUDIOSTREAM_PLAYER +
+ }
 Object types.
 
- Static Public Member Functions inherited from ncine::Sprite
+static ObjectType sType ()
 
- Static Public Member Functions inherited from ncine::SceneNode
+static ObjectType sType ()
 
- Static Public Member Functions inherited from ncine::Object
+static ObjectType sType ()
 Static method to return class type.
 
+template<class T >
static T * fromId (unsigned int id)
 Returns a casted pointer to the object with the specified id, if any exists.
 
- Static Public Attributes inherited from ncine::DrawableNode
+static const Vector2f AnchorCenter
 
+static const Vector2f AnchorBottomLeft
 
+static const Vector2f AnchorTopLeft
 
+static const Vector2f AnchorBottomRight
 
+static const Vector2f AnchorTopRight
 
- Static Public Attributes inherited from ncine::SceneNode
+static const float MinRotation = 0.5f
 The minimum amount of rotation to trigger a sine and cosine calculation.
 
- Static Public Attributes inherited from ncine::Object
+static const unsigned int MaxNameLength = 128
 Maximum length for an object name.
 
- Protected Types inherited from ncine::SceneNode
enum  DirtyBitPositions {
+  TransformationBit = 0 +, ColorBit = 1 +, SizeBit = 2 +, TextureBit = 3 +,
+  AabbBit = 4 +
+ }
 Bit positions inside the dirty bitset.
 
- Protected Attributes inherited from ncine::BaseSprite
+Texturetexture_
 The sprite texture.
 
+Recti texRect_
 The texture source rectangle.
 
+bool flippedX_
 A flag indicating if the sprite texture is horizontally flipped.
 
+bool flippedY_
 A flag indicating if the sprite texture is vertically flipped.
 
+GLUniformBlockCache * instanceBlock_
 
- Protected Attributes inherited from ncine::DrawableNode
+float width_
 Node width in pixel.
 
+float height_
 Node height in pixel.
 
+nctl::UniquePtr< RenderCommand > renderCommand_
 The render command class associated with this node.
 
+unsigned long int lastFrameRendered_
 The last frame any viewports rendered this node.
 
+Rectf aabb_
 Axis-aligned bounding box of the node area.
 
- Protected Attributes inherited from ncine::SceneNode
+bool updateEnabled_
 
+bool drawEnabled_
 
+SceneNodeparent_
 A pointer to the parent node.
 
+nctl::Array< SceneNode * > children_
 The array of child nodes.
 
unsigned int childOrderIndex_
 The order index of this node among its siblings. More...
 
bool withVisitOrder_
 When enabled the visit order is used to resolve the drawing order of same layer nodes. More...
 
+enum VisitOrderState visitOrderState_
 The visit order state of this node.
 
+uint16_t visitOrderIndex_
 The visit order index of this node.
 
+Vector2f position_
 The node relative position.
 
Vector2f anchorPoint_
 
+Vector2f scaleFactor_
 Horizontal and vertical scale factors for node size.
 
+float rotation_
 Degrees for clock-wise node rotation in degrees.
 
Color color_
 Node color for transparency and translucency. More...
 
uint16_t layer_
 The node rendering layer. More...
 
+Vector2f absPosition_
 Absolute position as calculated by the transform() function.
 
+Vector2f absScaleFactor_
 Absolute horizontal and vertical scale factors as calculated by the transform() function.
 
+float absRotation_
 Absolute node rotation as calculated by the transform() function.
 
+Color absColor_
 Absolute node color as calculated by the transform() function.
 
+uint16_t absLayer_
 Absolute node rendering layer as calculated by the transform() function.
 
+Matrix4x4f worldMatrix_
 World transformation matrix (calculated from local and parent's world)
 
+Matrix4x4f localMatrix_
 Local transformation matrix.
 
+bool shouldDeleteChildrenOnDestruction_
 A flag indicating whether the destructor should also delete all children.
 
+nctl::BitSet< uint8_t > dirtyBits_
 Bitset that stores the various dirty states bits.
 
+unsigned long int lastFrameUpdated_
 The last frame any viewport updated this node.
 
- Protected Attributes inherited from ncine::Object
+ObjectType type_
 Object type.
 
+

Detailed Description

+

The class holding all the relevant data for a single particle.

+
Warning
Particle objects should only be constructed and manipulated by a ParticleSystem and particle affectors, never by the user.
+
Note
The header is public only because the particle array inside the ParticleSystem cannot properly work with forward declaration.
+

Member Function Documentation

+ +

◆ clone()

+ +
+
+ + + + + +
+ + + + + + + +
Particle ncine::Particle::clone () const
+
+inlineprotected
+
+ +

Returns a copy of this object.

+
Note
This method is protected as it should only be called by a ParticleSystem
+ +
+
+
The documentation for this class was generated from the following files:
    +
  • include/ncine/Particle.h
  • +
  • src/graphics/Particle.cpp
  • +
+
+ + + + diff --git a/master/classncine_1_1_particle__coll__graph.map b/master/classncine_1_1_particle__coll__graph.map new file mode 100644 index 0000000000..edccecfbe3 --- /dev/null +++ b/master/classncine_1_1_particle__coll__graph.map @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/master/classncine_1_1_particle__coll__graph.md5 b/master/classncine_1_1_particle__coll__graph.md5 new file mode 100644 index 0000000000..812441d840 --- /dev/null +++ b/master/classncine_1_1_particle__coll__graph.md5 @@ -0,0 +1 @@ +818378afc2ac13a960b0b2a13bf7bdd7 \ No newline at end of file diff --git a/master/classncine_1_1_particle__coll__graph.png b/master/classncine_1_1_particle__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..26f274fba9bba3f4637c8d6d69b6b9a3083f12a1 GIT binary patch literal 96777 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�d$+-Osi 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 sD*Vo{ZSK|n6aW1Pn`OlR$J?B9 + + + + + + + diff --git a/master/classncine_1_1_particle__inherit__graph.md5 b/master/classncine_1_1_particle__inherit__graph.md5 new file mode 100644 index 0000000000..4d6c67d7d7 --- /dev/null +++ b/master/classncine_1_1_particle__inherit__graph.md5 @@ -0,0 +1 @@ +f6f3c240f706c8eef2cf3a3111078996 \ No newline at end of file diff --git a/master/classncine_1_1_particle__inherit__graph.png b/master/classncine_1_1_particle__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..7e0310a6d9aafaf4dd8efdd824ced7eec8cbc59a GIT binary patch literal 11128 zcmc(l1yoi0y7njCA}C!Vf+&rYga}ATNlC||*?`g^jg+*Cgo+@7vS|bf=@LZ{L|Pi8 zyL<7y>+F5+J?Gqgf@# z1nVUsK0GtH?)w0~;ajLE-a<|>|6bQ-Cm_fLrRAn^TlHNSbP#{?#CshKjJ$&RBy@4-)7dQZ~o(NaTbSiogXwu zZT@N-toADEwRWC-PweRI%auVr`2IJzR8kGzd$$otxEEl1#uE$;ngg;ina$^ez8+*{~^iWU4ZB})5dAXxCo~0{}@%qINq9P(C ziClVue0+SfQ&UYzJVvdChK973F?e`*?>~GHiaxTxf8T~nuh5E_nb~oBzI!=VbPOf_ zO5JX}(uHknXJ^IZr&FC3t3`!%yD~aD=W#AbK79C)du)w9Hk>S^lAkxen2wH4NnKsR#DvMh!s09w z6OZ3(CMKrXsVR$Jv$JnXN+^SagTJ)5Gw7HJ2ncX;amfV)+{n$#n_OEXFEb=dXzO)~ z)hjd(R?n7mcXy93myf2F;Z2?%d~exQ!zAH}8m;o+rzL$96(#HKEw;F{DC zfZz<{O%&?FkDi`J+7R8m6)%Z!rpVJ~(nZ3TPoG{?9k23;#zNtT1mC@TR{+U}uK{ac ziKgAYWYZ#BL|;uU_WOMy`sZ3XR_yHTC;iXU)4LGWBz}qxsDEP;p91%8s9x z)l0rTj+&XAtb{Z)+)PSK8*@4#f5VnfrE@iL-3dN&T^!-Z@tL|9l@>Sv4s+v4J4NB_$7wB;@%3kwS^ zX*hHHuHFD@7wb+XsiRpbj#pi~jAo zYWV44(W$JVAw7Ca`t+PnEpx^F(WW#h-*xoS8k>Ls1)O11iG=5JLtDb-?varg9;5OG z6#vZvUGmC8^ll@3o|;-(4`C@{ttCu0yu&6zeD_vAW!+A|tQ>gv=c%a7XFHyUEON22 z;h@oILK2b?<+n{yR9t5n7)S^R2%?kXV`5s~TYlEi&@%_Gcz+%W6z`tIg6VIbF{Ph1CG6qVRe4~@LNw7 zudV*$V+oTir=E9ea&B&=z1E~$?xFuShB%Akk)zXVcW(JLPpJ(&zh;}oE2ATBat)!Y zsY%V^l^1HB5vHf!V=op~o*_kUYHQbJc}Nm#oz6TyCgj>VbM|GoT~jn42Nt5NtbQ}& zwPtdPol{i)>(`_eP8E~8DrwD!f?v*3v0;t$g7X;@-uCt{-Jn zbUCerxX;qz>0bKwjY-UNSujQ+lfS5XI5bm{FC!;MuIZ~I3H)aSx!El*udbp%hFA{9 z>#mv)qa4q{kB5fl4kd{;`}F3*E9r;jgQ*(7z2p(|ugV`_a7Q0{3wW{VU))l0^Kiz~UrTVT8 zr=7MrjKqhQv?8KdaQM=}C%zg9kKFTxg}gS?1D&1KqB+ja`yP8=XIxXo??#1@goM{9 z7+pM=2`jfd*c?TIdV9St6}Iete;ni-hOJU5`**VOw^6U(L`BR!NsO2DKl|UG7A2hb zc7}E0ODWh|v5|m-x4Kix;VceL`@CPB82#282?&XZC^ES$GCNbRhuj-3HyDlQ3??HY zYJ7-C(lQ@4$S;7cV)+jz+tJ(CC&Q7Dk&z*@sO9tNE-EA>yW+`5IEo0}WD`|Fq0{=vbHxc|wa$Ft<*>8?QZwUN=$$>rsk>u$3bL`4VQ7#UzE3s_cn%UM&`L`}N^12|)X64BK-bi?6Dj`sRXHO)nubphS^in(u)NrpM~YMj zoK$@eINo=`59%8jh%O;t>$Ve84XqS_i+VLtdA}kvlMQ)YTgxQ=>I`uhc3oYa?%rJk z10uxP%`HTg1M`s0fU$SZUHp~2fAz8wIu-OVm?;O8gE(@(THmJT{E*|u`3SRW@f^`$3*nouT&9K9m8bj_gXc+#KH06Tj1))x$mQ+v2f3ukM-s0 zg^751d3`7^pK6U|koA?953?KI;3Um!@bUJ(aPcCxN)mS?xUuhpgO9*_{rdHbG`Hx% z)-0=t2=&{yZ|xi$h%a5bq<{Bwrbzz(wYo+GBzw5IHCM0IMZ?h>2L@=sJSwTE$ocq) z+jOOkIu-Qi`|`IR9UM&F2|P>~x{M&NyX_`^{R*Wq^P>QV2cNH;fx3#?hE6VOx^Y@D+wcx1ZBWw$ipEn_nii(+BpQOxbe}DbF{uBS5 zzUw2k(rKgy2LGa_RROg`wq3dnc2@AqV!q{!9v-n;$=2E+SckJOSy+=#eU3E4WW!Ta zN&ZyRuV1f*cJD7GZ^bBt=jY23ag|8HpPqLotMogdUp?)ZS-p&hucOTx;i!)&JZo>jYkx0tQZP5SK4p3uK{=ym#cT^7z@up2QOB`b z6neK}Oe#$!Urx_K3cEdd4IjyRSI6eUULFyS3rXo86zP9YU42G^hf(|!+Y3Efy%yKD zeWZ{J*RE+#Dev!ou!WK|NUwLf>Gkxo*3&j0 zbnc~_pr>^ID*h6xY9M9cOIJ#z;I5PKT4ijC^3l`NBLM#kU#te{zk-=~CDPVqHXH2A z47p9J+`sgT!sz&7B?u2Oaq*_lp9unwr&(aqe`L**A>J!L`X_O1fTVe)<@4tdf$-K= z1;!hGw3eUaW7wmuxSM&&;r!j+0(N%7>D32 z1qBx5mygD0oSdBU&FW3P13W!NK;SQIzk2oz7cL469i(BX)K1wt* zB`Q6ZlD?Z78AU@-;Y?JPJU!m}(%H%E%+!B&h4AH*C&6G4!0@ngaNu`$cQ=th*!=Iu zOsl&mpk)d$e*@45w&r6nw}QzSL?$|4N$6KPv%0#vHqgrH>Cv2FmV7i??PYn2K0$&E zN^K@V_kJ%d#77vV0~n`UW1BaoKZh;QU9)NETwVS6B4Wp*D~?H``2MIkEh#>51Xf8& z#+{v=+J2|D06Nfj5y!!xtgK5PK782z*#$-pqZC_nUDG2U-M%mFJc^5>{+apa4ZrIz zCF5Ejs_}p$9?zAZ!V}{8KL&D!f(Z!;QCF^9Y1%F@s-Q(|_-Xa;-lf86`1JFmnO{lOdM zzkmNEmRafr=J|3##h68mfQV%)X}SNAXY>&e;F@L3`^`;P{GhwKy2K~OHQrCKPy>Y~mU=~| za3(uT17W+cCpv}z?QH4mJ+=(KTn9*IXOkBXM`K^M}8J zjf{+pgo>(zrvO{|eZgI~FL3Q)Vs@I3a?0G~r1@@Yem=MAb3r_Hb@j(>Rv6#eh&ubz zwks_bj>N{tN6yO1N=Q!r*=yWC0v1Q=bvOJ{+ph9TK4g7kV?p3#!VMv{tA{n5m6dgY zogEJo(RYJiy+TpP3(6em+5R?ydfHPD1*X34FKEwBf|B3@?qBY3xYN1NN* zp~k$5a&kDdmNxNUz9{7#j#W6ZfQ1!+3~4@gGFMt;Rv!n1W6~+`h{4{$!CdfpvB#3G zxhnAp*)rzTU=)~x`}f`*vYlL9jDip_*>*X-r6uwl&nn5jFtVqkqqAM(^V``Y>z^Nf zOOf#6r95};+pP57h}-NN+)yhua>%Z=mME7KH5RA3wA{l$B)^7oW8+qkr}46@tI}E-x>SMEdmj z8YV)=#E?3U*VT4K^ZpzjhEwNefDJLjsN%k`ZzuSu@4daDQog%{iajtDEVpLA z*(mC%9AdA=ncqp1jGUddaU3eag9~Y2=A&^mBLlFh2?k9ET6=$gA9c9B@F+T3?%q8f z80Wf$#*xLv{4q=t)Lm)>d;mdi!$e9R#_V+1=3AM#NXQe-Rr8 zXL5En9Ij>QF5HOwhldxzMgkhs?Gw-_Ic1q37QA+if{IE$nTGOqo0XuQ5Iwhkaf2h; z^1)Qldh}m8CX4_tvuPOl5|ovBW$`w1>^v}gSf{S}6dg-X1*_>E&(liE;ht$#n$g@Z zJ}*T~5af7<4~tT-sbcK@-Cnlh7ID3zv4-sh1}x;@Ah2$SW!zB!+2>ne$0mQTPhn+C)7V+K=D-KI zuB7xg{R{ZS`H6-`5-!{G?CxHBC%13H87amY-*U(k8~+xVs);Ia-=4R2_uQ4fv9i3} z+MSsk@%rMh0!_XC!p|}ZfN~-)E6kfmtAFMjoHG|W&B;!MwJT^fPq}G5v+A)^y7|9nl>Uiv$bXPY4}z!NB&K!u%x8q z)`H@PhObtFxC8{vqoXD>El=fj8d zFm$da5?i*$$UwlUJ4O5E9r`)5sJ{}Yf^1w;@aRI z>Evxy&CSh|kVb$y>*(oO_T}CMCe8fRgIx3}o+og8I8sx-LFsFqs{-atxQtRhI(AOr zMEv|DYier+Y&vMU&FUCoVj@21>r4NoeX_N+jnFgmr{b$W7UVUly3`T>=ur?vTVq}f z?EsN=+8vsPbDLaQiPg+hm@FGGm2+`mmN(!-3OhUpErajCI;bF9} zL;nQ)VhA|AXIHcVa-#avQc@maoCZuPz}@`A5hOIcw=^{=&@1C;H8Cu!wt$3(S&D-& zO90ho78ag?F@kXvroZOr?atHCu!)M&Bqk;jl9JvsH643>7!?^Q16g}>YfIC_ge)*H z@b|t&nUmXVtE=GvF(9a#`mP9@2dJx`p|zY}Tx@C#A$ae*cOS!-8%CuUPB&OigKK^F zrhpg^);uWv-f!j)pBTmz0U*fevj>(0Fc10*YEej9ig zF9fCiPkdz&6|g@^uoCV zI|f?mjVP3hi%UmWSNzcMa4GaLNfZxK+-oATBys|Vl`T`km@??8}!ggYCe$bre5Lh}zosfu{j}`;!qV;vQF% zxD6h{hmHiv?|l4^U`f-Vzn@>n;?BkfML#(Lxt-c6@2$sebN#x7&CN~9hvqzY?%eq@ z<0>R16eM7?`zR)c(K*odBO|D#{s%h>h#j~St72~5Z{+uf$I;wKX-(Jz1Zsax8gO zuU_5_IM-fGnh#|P$Xl^h8>R6_S3C^v0H&a>-ue3Qg{Tv=g{7sYppMGPaOp4=O1L^vQ=$!xcU|_LvYE7Z=x*jcc(i+8rrO+lq|4Q*6N1D+Vv7WTH^yxTr?M3Zlqv z{63)yv8aUvqGHnYID_r)xwk*=;AuL=#i?^Uf2%H9mg9{6uDWowu$ApSqI_Ka>?<7- z^zNPC?Il|EmcwYapA<=G+%apR7wc2ew~?TyPtR#^+V!$?{Cs(li<7f?W%ypDe>E8% zp7oz4g@ku8?d~oyxB};O)RW$sK}O>IN8%FIPZHd)K+vJQz&!gK0Qwti5qFuo{GsC1 zr@+qFmu7PleZ^e9JOZ2RO$b5sg=BCRVX_L%*iQh1{1_Ptw*1W7Y$rs#1$IEpXPffH z3!l?>Ty$apRnD-~Jz8B&GYb@L(&GBY#8fGu%O`I_y4D1z;q^pj;jr$15U;pb}f(I zBSB^Xqmkaq2tvY&*$a@9SV_4-nvgsKvDN~jrLL~{u~bqpll|o6q_eB5ERcNYnBUv? zT?J)SF`-T$Cvf*|A~5Y0S)eWA#xg%Dg|{PF372M+{j zXlTkEhXnh7{Ai-JQn zadLinQ^k|fZ8yjtMKpc*7r5g}%YR$c?MuzpSEJ!-K>#fFTrspOGX%%9efXD!de|<+ z5^M$$#|AKM#m$7~hyZ?pu7k&Db5hHxIWBDrg$O&ld`g|i5;aZ( zDLzhKZmtEQZ(v|h)V}K(x{}9NYuberzj#5PF={6y_*Sb;Sy`Dow-3c%Tv;hLJ2&@v zd1b`_P*;0rr-)IYtn9-fL8!5-fx{JbH=I4VneEbMz67$H=cnvg6{8i_hx=|RT3)$&!^7Bc_$jJ0- zyai^v(&LYh{U)!2;@PxA(1c=|u;*_=NrGrDGRIY(`On+-f9ege&C!489Ts>v^Q!v1 zp1l?SxnpEJ4Q$M1f889o=S4BG!NsZwo`vwPS^fr5lk!U!E(EO%l`1X@`p7#~5x&QU zdevIre|o~j1AY7;M`Z$^>F-CtGTZm=?y$Hx-kkR0+s%s#^ib5>WV1c!`#wQx*9Iqz2&P18VI0R zTKNyUe@Wtqv8viPAZxVGI#gjRMl^$+MzD?;;lJqFw1ZBvtSZ=Z0}m}xKt+p>>8 zyja6*Jf^AXD_Y_bxv*nl|I}SYMVhH8Q_+`Rd@1!O1zz!UluO_H4C5O%XR5J~oSZc! zT|viv_N>JwS(aVntoTjN+~w(0&NSxZK>KElK#Bv=R-EkK5i^`}SmY!@z|G){ORIzn~@mP9p6 zwj)AzStKwtv55t}P5?)o%qyyE+TWOdZ}W{Fkgwumi6b_R;vnoBn@ZF(ZG`XZTV2xA zqV)%40BZ$27Il!DMn()bPLJJEZ}`*m@bG}*;X`GKA;dLsmfq8`qU)^;PWruiu;~bP zq(y3Ht7ky74(q*%fW%7$qn2jKC`%@dNh49pP2$A zybp#vR)TaG^d1@!F&!Ux%w{F{T*C-_z}gssUvd)fdK8W=D)+Er%!dRv4LLhIH`Jq->ZgF} zS3cO{xIa=E+>?E0nlJExL{dr$LkOS@xzT)BTnAgpHcs}&r<=*8TVQk2M$5T76Qf?^ z@=y?528h=wbSR? zD(+D<#5APeDg9X`k)v6f|E>XCGvjJcvitY%>+Z29w5{(9n91enoT*BeKAt4Ubj06g zN1<_E>My{Abph+I=P^?o4n6L__iAX1`M7js{E6pWz3+Mk(HHQ2Q!nI zn@bFAyO<8ynMyWk$_o zh`9l4z%{{kFjiJ9kZR1&15S^|E#Z#FU~e!I1-TnTw&|ZXXWHLG`+~WPOS^6~Lmzl# zav#F1nC~t(B)AP&*gJ=*!H%byKkG6sLNk$JY;I%2@#f8&`Ayl*Z>iVM{jnF6_Q%f8 z7K$Xv8-Hg@|9MZ4k|$5F&bY&6KZea~Ch^S$QOq=2Be`~8a8w=%+mZg;)}leI`O~Ww evf+`ZI84TanNG6P4`C}Ua$8>gR-r8F;r{{G&;X$T literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_particle_affector-members.html b/master/classncine_1_1_particle_affector-members.html new file mode 100644 index 0000000000..5edf8f5f79 --- /dev/null +++ b/master/classncine_1_1_particle_affector-members.html @@ -0,0 +1,98 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::ParticleAffector Member List
+
+
+ +

This is the complete list of members for ncine::ParticleAffector, including all inherited members.

+ + + + + + + + + + + + + + + +
affect(Particle *particle)ncine::ParticleAffector
affect(Particle *particle, float normalizedAge)=0ncine::ParticleAffectorpure virtual
clearSteps()=0ncine::ParticleAffectorpure virtual
enabled_ncine::ParticleAffectorprotected
isEnabled() constncine::ParticleAffectorinline
numSteps() const =0ncine::ParticleAffectorpure virtual
ParticleAffector(Type type) (defined in ncine::ParticleAffector)ncine::ParticleAffectorinline
ParticleAffector(const ParticleAffector &other)=defaultncine::ParticleAffectorprotected
removeStep(unsigned int index)=0ncine::ParticleAffectorpure virtual
setEnabled(bool enabled)ncine::ParticleAffectorinline
Type enum name (defined in ncine::ParticleAffector)ncine::ParticleAffector
type() constncine::ParticleAffectorinline
type_ncine::ParticleAffectorprotected
~ParticleAffector() (defined in ncine::ParticleAffector)ncine::ParticleAffectorinlinevirtual
+ + + + diff --git a/master/classncine_1_1_particle_affector.html b/master/classncine_1_1_particle_affector.html new file mode 100644 index 0000000000..acefde11a4 --- /dev/null +++ b/master/classncine_1_1_particle_affector.html @@ -0,0 +1,182 @@ + + + + + + + +nCine: ncine::ParticleAffector Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::ParticleAffector Class Referenceabstract
+
+
+ +

Base class for particle affectors. + More...

+ +

#include <ParticleAffectors.h>

+
+Inheritance diagram for ncine::ParticleAffector:
+
+
Inheritance graph
+ + + + + + + + +
[legend]
+ + + + +

+Public Types

enum class  Type {
+  COLOR +, SIZE +, ROTATION +, POSITION +,
+  VELOCITY +
+ }
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

ParticleAffector (Type type)
 
+void affect (Particle *particle)
 Affects a property of the specified particle.
 
+virtual void affect (Particle *particle, float normalizedAge)=0
 Affects a property of the specified particle, without calculating the normalized age.
 
+Type type () const
 Returns the affector type.
 
+bool isEnabled () const
 Returns true if the affector is enabled.
 
+void setEnabled (bool enabled)
 Enables or disables the affector.
 
+virtual unsigned int numSteps () const =0
 Returns the number of steps.
 
+virtual void removeStep (unsigned int index)=0
 Removes the step at the specified position index.
 
+virtual void clearSteps ()=0
 Removes all steps.
 
+ + + + +

+Protected Member Functions

ParticleAffector (const ParticleAffector &other)=default
 Protected default copy constructor used to clone objects.
 
+ + + + + + + +

+Protected Attributes

+Type type_
 Affector type.
 
+bool enabled_
 A flag indicating whether the affector is enabled or not.
 
+

Detailed Description

+

Base class for particle affectors.

+

Affectors modify particle properties depending on their remaining life

+

The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classncine_1_1_particle_affector__inherit__graph.map b/master/classncine_1_1_particle_affector__inherit__graph.map new file mode 100644 index 0000000000..109cf26627 --- /dev/null +++ b/master/classncine_1_1_particle_affector__inherit__graph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/master/classncine_1_1_particle_affector__inherit__graph.md5 b/master/classncine_1_1_particle_affector__inherit__graph.md5 new file mode 100644 index 0000000000..e721bec203 --- /dev/null +++ b/master/classncine_1_1_particle_affector__inherit__graph.md5 @@ -0,0 +1 @@ +2052d3a21aa7c2644cee0b296a4bde5e \ No newline at end of file diff --git a/master/classncine_1_1_particle_affector__inherit__graph.png b/master/classncine_1_1_particle_affector__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..5cca123b4c538df898483011f3596d4981de65db GIT binary patch literal 15345 zcmb7r1z43`w=F7C0)ilofFRuAmiO2d6&3rSv&2^cV4bw>?zIqeS zUJlh86>f}GP@f-M{eE_=!f^-t8s^0J=N%};LT~=>1s~a5N20&qDu>h>osnUzqmz`Y zHM{Nh=+Pq*5|aKb1xd8enVEgdPM8flJ3A&NuMKZhpjV}tB;w;EN4J?2YUr>Y*7>6f z2?<#a<%hq0+hRY~-7P3-xt zhWxTqr^agpUhww8`e=A~xLJ3Sg{9>Wr{$X}Ov#;L1saiG_uA>(*-~^?aOpYinymL&N6g=0AV_ zSPtg8U!3tp%)*EY3k#!|ggpneC*o?}eAM^Zut#G-NIP{r%Qf zR+W{NdwY9fuV06D2?`3HoWCI@B9cP9uSqWQI(9JBMMVw1c9Yic?bWM?Nnf0bh}RGI z0TmS$C+GLlQXWdmpOcdmE%pJCwY9#mW?EV#iCv{7C0*_9QQwW={+gPaE-o&rsAUz|4*Je!Wv(n?okByCtLagIuP0h{C?d;gMN4mSZR8>`*?2|g?Wv&M8c(A6a ztvwn|r!a%)HY!BHk7t%nX-0}9TyBv=y?u}79xpF1bwIg}&GY9E#J=R_<_lGefaR<>#(rKbs+%(QYsZy)!&B-3Lga@p%so;%~;smbBKM(%zVO) zi9V{KtsNX3d`mkgKc9!2du?N**}kf<@R`1TZAOOwk#cPXdW*e%%l&-EfC>vyKWUU% z+N~!Uz2=QK;0^(bW@cs*5;qfMdAPVp%_Vpe!*Mv-*?+QQHn4Lhj7?1FJ$pu#e^Xai z_i9|ulOpyAGK@eYD=S&SWNwQ)&*;y2ocMLipL=-;1~;TBWfKK0FD(rW4B%8~Ux$0j zElN?uTfx?%PAV+qNa>-wIKCb7?j3HZ_zNp5{ByI7`S}Mnrwq!OM5Ls2w6q83(P?Q^ zZ(DM{e!c%u*yk*sKE{W1I;K>VGUWAZCI$xFpqPXN2EjbirNWR^vOCKuos`cFI8iIm z-`F|vkN5X;(bF&WW=KK+L#)cuDz}HdCSbw9#AIe+SzlUe?dsY;IM`TO5kr%B^5jkf zYHtfs(D_!w?d|PteeZo$h!IIiNonb}2yy`>B_&xox#Z+zSnL#G@Ahdsh>fwaF^Exd zSGq19w6u;mHtK*(`D8|Bdlwg0R#sa15)=>S8GcCxg@P|%LRw~}DdIb?o?PF^Xyy$u zmyWKkoSfY5?k+KAP|RJtJ9l7E<6~py+<#8?S8v?75jgql&~myy(D!V+r6Kq>IXStr zlM`&A;^N|vG&R_*utQ>FWApOz{QMpjI7=g2l!it`xHvlEvB12;0ICV_q*~z zz5Xj3B1s@0zPv6&{ouj;KB@b0l*kMGFYMn5|+ z&?y=I9S5!Q!w0?X4h?p3FE6i8lSG4o{PLyW2K4Tw~*Txw)A7y2SLDt#SqdKkWs1 zt*pFY2Q6*b%rEdXjCoa6J-*?8tpc6Cy7uDhbIx1J%DYUABrMFdZtj|% zo}(W=th5WTZfO~?lF{dcg*6WhRNW%n5OP;i$aG$Q0W|H-N7?zf&ds0M3T3T$T z>xmf|ziC*Qz?9;X2lppMMR{)M*r=*Tmz1OxY+BjcYFn@O?nKi+)yV;_;*sqydxb8lPl*b@RdIDGL5)Z`MUsq_<{gsD2w+_#{YEdTF;u z#MQwe$~sZBZr`)Tv{g=2>+LQ0j0i9mbf1sjb9*5vZAb}c^MiaNty*GJ1nlMn0oLPzFw`^`y@9%Bl;cX)L0x1MstQ&%Emf2WeE>Y7- z$+kzd%mU!BFgKS?5hkaK`S3v|tDgh2qoX6*)%@I_m+UB5^d;ScLNc-guidV|x55ra zg)V_XH3BbU!m4IT1SKU~%F7Y%lD)Ul{ji>O%F;$R8QE8iL6L)0nXCJQM_Bk?3t$(4 zgw3Zsc1U()E!(8LGLxR0FVm(o3u^e))rVN)h;YQ(+S(jOO7-_= zKd2B##RZ$&WfLTh^X>0L&?rdc9#1@CD8?e?nL_C4>RJO(GVe`4Iq`6p+`H{3ibFwB z`{MW4r6u#;o%invpp;J=-@SWR;!^8z>G5s)xWPff>FKyPZ%R88%h({q$-^v~4F`i8f4iXR$m|9r@%&9i*`morOGK<)ln!+I^WvZAdGV6gV zvgB0x{{8#lU`Z&u&+g&k8k(989v0^0FuhB(BlF#!xfx_g$g1Kv=S}n9o{GIH3~z`}>E! z^|rCe2RIustHY`;c6)EVuclWfWUDb0@AP2Z(%M?L(5Q*>1g}}nHhp#I(ql1Mir;&; zJ6WWx#JOD{$(M4u`G1MPXpkw%cySvru&}}b5Ys7qqzo9g;whB-2L#Kks`BcL=kO-Q z$I2bTjM!3``GfDujEGQIS0^PQadCB>MNAA2e<>)K?CpJIHE3&7Z?B_sJ7iU<*ZhGb z(Y<@DX`~YSrx3WyT}oP7KOCO#?aYh(TAs}ZL~8c7EOUY09rd9B_n%2ZK}BWd$7s$j zE@~<&k!>biTt$9rCPgD?RIs!F*D$H0+t%0DA#S5a`5flZf(%biPFy!9s_mxhkG5y| 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 literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_particle_system-members.html b/master/classncine_1_1_particle_system-members.html new file mode 100644 index 0000000000..b221a537f5 --- /dev/null +++ b/master/classncine_1_1_particle_system-members.html @@ -0,0 +1,237 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::ParticleSystem Member List
+
+
+ +

This is the complete list of members for ncine::ParticleSystem, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AabbBit enum value (defined in ncine::SceneNode)ncine::SceneNodeprotected
absAlpha() constncine::SceneNodeinline
absAnchorPoint() constncine::SceneNodeinline
absColor() constncine::SceneNodeinline
absColor_ncine::SceneNodeprotected
absLayer() constncine::SceneNodeinline
absLayer_ncine::SceneNodeprotected
absPosition() constncine::SceneNodeinline
absPosition_ncine::SceneNodeprotected
absRotation() constncine::SceneNodeinline
absRotation_ncine::SceneNodeprotected
absScale() constncine::SceneNodeinline
absScaleFactor_ncine::SceneNodeprotected
addAffector(nctl::UniquePtr< ParticleAffector > affector)ncine::ParticleSysteminline
addChildNode(SceneNode *childNode)ncine::SceneNode
affectors()ncine::ParticleSysteminline
affectors() constncine::ParticleSysteminline
alpha() constncine::SceneNodeinline
anchorPoint_ncine::SceneNodeprotected
areAffectorsEnabled(void) constncine::ParticleSysteminline
childOrderIndex() constncine::SceneNode
childOrderIndex_ncine::SceneNodeprotected
children()ncine::SceneNodeinline
children() constncine::SceneNodeinline
children_ncine::SceneNodeprotected
clearAffectors()ncine::ParticleSystem
clone() constncine::ParticleSysteminline
color() constncine::SceneNodeinline
color_ncine::SceneNodeprotected
ColorBit enum value (defined in ncine::SceneNode)ncine::SceneNodeprotected
deleteChildrenOnDestruction() constncine::SceneNodeinline
DirtyBitPositions enum namencine::SceneNodeprotected
dirtyBits_ncine::SceneNodeprotected
draw(RenderQueue &renderQueue)ncine::SceneNodeinlinevirtual
drawEnabled_ (defined in ncine::SceneNode)ncine::SceneNodeprotected
emitParticles(const ParticleInitializer &init)ncine::ParticleSystem
fromId(unsigned int id)ncine::Objectstatic
id() constncine::Objectinline
inLocalSpace(void) constncine::ParticleSysteminline
isDrawEnabled() constncine::SceneNodeinline
isEnabled() constncine::SceneNodeinline
isParticlesUpdateEnabled(void) constncine::ParticleSysteminline
isUpdateEnabled() constncine::SceneNodeinline
killParticles()ncine::ParticleSystem
lastFrameUpdated() constncine::SceneNodeinline
lastFrameUpdated_ncine::SceneNodeprotected
layer() constncine::SceneNodeinline
layer_ncine::SceneNodeprotected
localMatrix() constncine::SceneNodeinline
localMatrix_ncine::SceneNodeprotected
MaxNameLengthncine::Objectstatic
MinRotationncine::SceneNodestatic
move(float x, float y)ncine::SceneNodeinline
move(const Vector2f &position)ncine::SceneNodeinline
moveX(float x)ncine::SceneNodeinline
moveY(float y)ncine::SceneNodeinline
name() constncine::Object
numAliveParticles() constncine::ParticleSysteminline
numParticles() constncine::ParticleSysteminline
Object(ObjectType type)ncine::Objectexplicit
Object(ObjectType type, const char *name)ncine::Object
Object(Object &&other)ncine::Object
Object(const Object &other)ncine::Objectprotected
ObjectType enum namencine::Object
operator=(ParticleSystem &&)ncine::ParticleSystem
ncine::SceneNode::operator=(SceneNode &&other)ncine::SceneNode
ncine::SceneNode::operator=(const SceneNode &)=deletencine::SceneNodeprotected
ncine::Object::operator=(Object &&other)ncine::Object
parent() constncine::SceneNodeinline
parent()ncine::SceneNodeinline
parent_ncine::SceneNodeprotected
ParticleSystem(SceneNode *parent, unsigned int count, Texture *texture)ncine::ParticleSystem
ParticleSystem(SceneNode *parent, unsigned int count, Texture *texture, Recti texRect)ncine::ParticleSystem
ParticleSystem(ParticleSystem &&)ncine::ParticleSystem
ParticleSystem(const ParticleSystem &other)ncine::ParticleSystemprotected
position() constncine::SceneNodeinline
position_ncine::SceneNodeprotected
removeAllChildrenNodes()ncine::SceneNode
removeChildNode(SceneNode *childNode)ncine::SceneNode
removeChildNodeAt(unsigned int index)ncine::SceneNode
rotation() constncine::SceneNodeinline
rotation_ncine::SceneNodeprotected
scale() constncine::SceneNodeinline
scaleFactor_ncine::SceneNodeprotected
SceneNode(SceneNode *parent, float x, float y)ncine::SceneNode
SceneNode(SceneNode *parent, const Vector2f &position)ncine::SceneNode
SceneNode(SceneNode *parent)ncine::SceneNodeexplicit
SceneNode()ncine::SceneNode
SceneNode(SceneNode &&other)ncine::SceneNode
SceneNode(const SceneNode &other)ncine::SceneNodeprotected
setAbsAnchorPoint(float x, float y)ncine::SceneNodeinline
setAbsAnchorPoint(const Vector2f &point)ncine::SceneNodeinline
setAffectorsEnabled(bool affectorsEnabled)ncine::ParticleSysteminline
setAlpha(unsigned char alpha)ncine::SceneNodeinline
setAlphaF(float alpha)ncine::SceneNodeinline
setAnchorPoint(float xx, float yy)ncine::ParticleSystem
setAnchorPoint(const Vector2f &point)ncine::ParticleSystem
setBlendingFactors(DrawableNode::BlendingFactor srcBlendingFactor, DrawableNode::BlendingFactor destBlendingFactor)ncine::ParticleSystem
setBlendingPreset(DrawableNode::BlendingPreset blendingPreset)ncine::ParticleSystem
setColor(Color color)ncine::SceneNodeinline
setColor(Colorf color)ncine::SceneNodeinline
setColor(unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha)ncine::SceneNodeinline
setColorF(float red, float green, float blue, float alpha)ncine::SceneNodeinline
setDeleteChildrenOnDestruction(bool shouldDeleteChildrenOnDestruction)ncine::SceneNodeinline
setDrawEnabled(bool drawEnabled)ncine::SceneNodeinline
setEnabled(bool isEnabled)ncine::SceneNodeinline
setFlippedX(bool flippedX)ncine::ParticleSystem
setFlippedY(bool flippedY)ncine::ParticleSystem
setInLocalSpace(bool inLocalSpace)ncine::ParticleSysteminline
setLayer(uint16_t layer)ncine::ParticleSystem
setLocalMatrix(const Matrix4x4f &localMatrix)ncine::SceneNodeinline
setName(const char *name)ncine::Object
setParent(SceneNode *parentNode)ncine::SceneNode
setParticlesUpdateEnabled(bool particlesUpdateEnabled)ncine::ParticleSysteminline
setPosition(float x, float y)ncine::SceneNodeinline
setPosition(const Vector2f &position)ncine::SceneNodeinline
setPositionX(float x)ncine::SceneNodeinline
setPositionY(float y)ncine::SceneNodeinline
setRotation(float rotation)ncine::SceneNodeinline
setScale(float scaleFactor)ncine::SceneNodeinline
setScale(float scaleFactorX, float scaleFactorY)ncine::SceneNodeinline
setScale(const Vector2f &scaleFactor)ncine::SceneNodeinline
setTexRect(const Recti &rect)ncine::ParticleSystem
setTexture(Texture *texture)ncine::ParticleSystem
setUpdateEnabled(bool updateEnabled)ncine::SceneNodeinline
setVisitOrderState(enum VisitOrderState visitOrderState)ncine::SceneNodeinline
setWorldMatrix(const Matrix4x4f &worldMatrix)ncine::SceneNodeinline
shouldDeleteChildrenOnDestruction_ncine::SceneNodeprotected
SizeBit enum value (defined in ncine::SceneNode)ncine::SceneNodeprotected
sType() (defined in ncine::ParticleSystem)ncine::ParticleSysteminlinestatic
swapChildPointer(SceneNode *first, SceneNode *second)ncine::SceneNodeprotected
swapChildrenNodes(unsigned int firstIndex, unsigned int secondIndex)ncine::SceneNode
swapNodeBack()ncine::SceneNode
swapNodeForward()ncine::SceneNode
TextureBit enum value (defined in ncine::SceneNode)ncine::SceneNodeprotected
transform() (defined in ncine::SceneNode)ncine::SceneNodeprotectedvirtual
TransformationBit enum value (defined in ncine::SceneNode)ncine::SceneNodeprotected
type() constncine::Objectinline
type_ncine::Objectprotected
unlinkChildNode(SceneNode *childNode)ncine::SceneNode
update(float interval) overridencine::ParticleSystemvirtual
updateEnabled_ (defined in ncine::SceneNode)ncine::SceneNodeprotected
visit(RenderQueue &renderQueue, unsigned int &visitOrderIndex)ncine::SceneNodevirtual
visitOrderIndex() constncine::SceneNodeinline
visitOrderIndex_ncine::SceneNodeprotected
visitOrderState() constncine::SceneNodeinline
VisitOrderState enum name (defined in ncine::SceneNode)ncine::SceneNode
visitOrderState_ncine::SceneNodeprotected
withVisitOrder_ncine::SceneNodeprotected
worldMatrix() constncine::SceneNodeinline
worldMatrix_ncine::SceneNodeprotected
~Object()ncine::Objectvirtual
~SceneNode() overridencine::SceneNode
+ + + + diff --git a/master/classncine_1_1_particle_system.html b/master/classncine_1_1_particle_system.html new file mode 100644 index 0000000000..9527ee1b92 --- /dev/null +++ b/master/classncine_1_1_particle_system.html @@ -0,0 +1,755 @@ + + + + + + + +nCine: ncine::ParticleSystem Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

The class representing a particle system. + More...

+ +

#include <ParticleSystem.h>

+
+Inheritance diagram for ncine::ParticleSystem:
+
+
Inheritance graph
+ + + + + +
[legend]
+
+Collaboration diagram for ncine::ParticleSystem:
+
+
Collaboration graph
+ + + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

ParticleSystem (SceneNode *parent, unsigned int count, Texture *texture)
 Constructs a particle system with the specified maximum amount of particles.
 
ParticleSystem (SceneNode *parent, unsigned int count, Texture *texture, Recti texRect)
 Constructs a particle system with the specified maximum amount of particles and the specified texture rectangle.
 
ParticleSystem (ParticleSystem &&)
 Default move constructor.
 
+ParticleSystemoperator= (ParticleSystem &&)
 Default move assignment operator.
 
+ParticleSystem clone () const
 Returns a copy of this object.
 
+void addAffector (nctl::UniquePtr< ParticleAffector > affector)
 Adds a particle affector.
 
+void clearAffectors ()
 Deletes all particle affectors.
 
+void emitParticles (const ParticleInitializer &init)
 Emits particles with the specified initialization parameters.
 
+void killParticles ()
 Kills all alive particles.
 
+nctl::Array< nctl::UniquePtr< ParticleAffector > > & affectors ()
 Returns the array of particle affectors.
 
+const nctl::Array< nctl::UniquePtr< ParticleAffector > > & affectors () const
 Returns the constant array of particle affectors.
 
+bool inLocalSpace (void) const
 Returns true if particles are positioned using the particle system as their origin.
 
+void setInLocalSpace (bool inLocalSpace)
 Sets or clears the local space flag, to move particles around the particle system or freely.
 
+bool isParticlesUpdateEnabled (void) const
 Returns true if particles are updating.
 
+void setParticlesUpdateEnabled (bool particlesUpdateEnabled)
 Enables or disables particles updating.
 
+bool areAffectorsEnabled (void) const
 Returns true if affectors are modifying particles properties.
 
+void setAffectorsEnabled (bool affectorsEnabled)
 Enables or disables affectors modifying particles properties.
 
+unsigned int numParticles () const
 Returns the total number of particles in the system.
 
+unsigned int numAliveParticles () const
 Returns the number of particles currently alive.
 
+void setTexture (Texture *texture)
 Sets the texture object for every particle in the system.
 
+void setTexRect (const Recti &rect)
 Sets the texture source rectangle for every particle in the system.
 
+void setAnchorPoint (float xx, float yy)
 Sets the transformation anchor point for every particle in the system.
 
+void setAnchorPoint (const Vector2f &point)
 Sets the transformation anchor point for every particle in the system with a Vector2f
 
+void setFlippedX (bool flippedX)
 Flips the texture rect horizontally for every particle in the system.
 
+void setFlippedY (bool flippedY)
 Flips the texture rect vertically for every particle in the system.
 
+void setBlendingPreset (DrawableNode::BlendingPreset blendingPreset)
 Sets the blending factors preset for every particle in the system.
 
+void setBlendingFactors (DrawableNode::BlendingFactor srcBlendingFactor, DrawableNode::BlendingFactor destBlendingFactor)
 Sets the source and destination blending factors for every particle in the system.
 
+void setLayer (uint16_t layer)
 Sets the rendering layer for every particle in the system.
 
+void update (float interval) override
 Called once every frame to update the node.
 
- Public Member Functions inherited from ncine::SceneNode
 SceneNode (SceneNode *parent, float x, float y)
 Constructor for a node with a parent and a specified relative position. More...
 
 SceneNode (SceneNode *parent, const Vector2f &position)
 Constructor for a node with a parent and a specified relative position as a vector. More...
 
 SceneNode (SceneNode *parent)
 Constructor for a node with a parent and positioned in the relative origin. More...
 
SceneNode ()
 Constructor for a node with no parent and positioned in the origin.
 
~SceneNode () override
 The destructor will delete every child node.
 
SceneNode (SceneNode &&other)
 Move constructor.
 
+SceneNodeoperator= (SceneNode &&other)
 Move assignment operator.
 
+SceneNode clone () const
 Returns a copy of this object.
 
+const SceneNodeparent () const
 Returns the parent as a constant node, if there is any.
 
+SceneNodeparent ()
 Returns the parent node, if there is any.
 
bool setParent (SceneNode *parentNode)
 Sets the parent node. More...
 
+const nctl::Array< SceneNode * > & children ()
 Returns the array of child nodes.
 
+const nctl::Array< const SceneNode * > & children () const
 Returns an array of constant child nodes.
 
bool addChildNode (SceneNode *childNode)
 Adds a node as a child of this one. More...
 
bool removeChildNode (SceneNode *childNode)
 Removes a child of this node, without reparenting nephews. More...
 
bool removeChildNodeAt (unsigned int index)
 Removes the child at the specified index, without reparenting nephews. More...
 
bool removeAllChildrenNodes ()
 Removes all children, without reparenting nephews. More...
 
bool unlinkChildNode (SceneNode *childNode)
 Removes a child of this node reparenting nephews as children. More...
 
unsigned int childOrderIndex () const
 Returns the child order index of this node or zero if it does not have a parent. More...
 
bool swapChildrenNodes (unsigned int firstIndex, unsigned int secondIndex)
 Swaps two children at the specified indices. More...
 
bool swapNodeForward ()
 Brings this node one node forward in the parent's list of children. More...
 
bool swapNodeBack ()
 Brings this node one node back in the parent's list of children. More...
 
+enum VisitOrderState visitOrderState () const
 Returns true if the node visit order is used together with the layer.
 
+void setVisitOrderState (enum VisitOrderState visitOrderState)
 Enables the use of the node visit order together with the layer.
 
+uint16_t visitOrderIndex () const
 Returns the visit drawing order of the node.
 
+virtual void visit (RenderQueue &renderQueue, unsigned int &visitOrderIndex)
 Draws the node and visits its children.
 
+virtual bool draw (RenderQueue &renderQueue)
 Renders the node.
 
+bool isUpdateEnabled () const
 Returns true if the node is updating.
 
+void setUpdateEnabled (bool updateEnabled)
 Enables or disables node updating.
 
+bool isDrawEnabled () const
 Returns true if the node is drawing.
 
+void setDrawEnabled (bool drawEnabled)
 Enables or disables node drawing.
 
+bool isEnabled () const
 Returns true if the node is both updating and drawing.
 
+void setEnabled (bool isEnabled)
 Enables or disables both node updating and drawing.
 
+Vector2f position () const
 Returns node position relative to its parent.
 
+Vector2f absPosition () const
 Returns absolute node position.
 
+void setPosition (float x, float y)
 Sets the node position through two coordinates.
 
+void setPosition (const Vector2f &position)
 Sets the node position through a vector.
 
+void setPositionX (float x)
 Sets the X coordinate of the node position.
 
+void setPositionY (float y)
 Sets the Y coordinate of the node position.
 
+void move (float x, float y)
 Moves the node based on two offsets.
 
+void move (const Vector2f &position)
 Adds a move vector to the node current position.
 
+void moveX (float x)
 Moves the node by an offset on the X axis.
 
+void moveY (float y)
 Moves the node by an offset on the Y axis.
 
+Vector2f absAnchorPoint () const
 Gets the absolute transformation anchor point in pixels.
 
+void setAbsAnchorPoint (float x, float y)
 Sets the absolute transformation anchor point in pixels.
 
+void setAbsAnchorPoint (const Vector2f &point)
 Sets the absolute transformation anchor point in pixels with a Vector2f
 
+const Vector2fscale () const
 Gets the node scale factors.
 
+const Vector2fabsScale () const
 Gets the node absolute scale factors.
 
+void setScale (float scaleFactor)
 Scales the node size both horizontally and vertically.
 
+void setScale (float scaleFactorX, float scaleFactorY)
 Scales the node size both horizontally and vertically.
 
+void setScale (const Vector2f &scaleFactor)
 Scales the node size both horizontally and vertically with a Vector2f
 
+float rotation () const
 Gets the node rotation in degrees.
 
+float absRotation () const
 Gets the node absolute rotation in degrees.
 
+void setRotation (float rotation)
 Sets the node rotation in degrees.
 
+Color color () const
 Gets the node color.
 
+Color absColor () const
 Gets the node absolute color.
 
+void setColor (Color color)
 Sets the node color through a Color object.
 
+void setColor (Colorf color)
 Sets the node color through a Colorf object.
 
+void setColor (unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha)
 Sets the node color through unsigned char components.
 
+void setColorF (float red, float green, float blue, float alpha)
 Sets the node color through float components.
 
+float alpha () const
 Gets the node alpha.
 
+float absAlpha () const
 Gets the node absolute alpha.
 
+void setAlpha (unsigned char alpha)
 Sets the node alpha through an unsigned char component.
 
+void setAlphaF (float alpha)
 Sets the node alpha through a float component.
 
+uint16_t layer () const
 Gets the node rendering layer.
 
uint16_t absLayer () const
 Gets the node absolute rendering layer. More...
 
void setLayer (uint16_t layer)
 Sets the node rendering layer. More...
 
+const Matrix4x4fworldMatrix () const
 Gets the node world matrix.
 
+void setWorldMatrix (const Matrix4x4f &worldMatrix)
 Sets the node world matrix (only useful when called inside onPostUpdate())
 
+const Matrix4x4flocalMatrix () const
 Gets the node local matrix.
 
+void setLocalMatrix (const Matrix4x4f &localMatrix)
 Sets the node local matrix.
 
bool deleteChildrenOnDestruction () const
 Gets the delete children on destruction flag. More...
 
+void setDeleteChildrenOnDestruction (bool shouldDeleteChildrenOnDestruction)
 Sets the delete children on destruction flag.
 
+unsigned long int lastFrameUpdated () const
 Returns the last frame in which any of the viewports have updated this node.
 
- Public Member Functions inherited from ncine::Object
Object (ObjectType type)
 Constructs an object with a specified type and adds it to the index.
 
Object (ObjectType type, const char *name)
 Constructs an object with a specified type and name and adds it to the index.
 
+virtual ~Object ()
 Removes an object from the index and then destroys it.
 
Object (Object &&other)
 Move constructor.
 
+Objectoperator= (Object &&other)
 Move assignment operator.
 
+unsigned int id () const
 Returns the object identification number.
 
+ObjectType type () const
 Returns the object type (RTTI)
 
+const char * name () const
 Returns the object name.
 
+void setName (const char *name)
 Sets the object name.
 
+ + + + + + + + + + + + + + +

+Static Public Member Functions

+static ObjectType sType ()
 
- Static Public Member Functions inherited from ncine::SceneNode
+static ObjectType sType ()
 
- Static Public Member Functions inherited from ncine::Object
+static ObjectType sType ()
 Static method to return class type.
 
+template<class T >
static T * fromId (unsigned int id)
 Returns a casted pointer to the object with the specified id, if any exists.
 
+ + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

ParticleSystem (const ParticleSystem &other)
 Protected copy constructor used to clone objects.
 
- Protected Member Functions inherited from ncine::SceneNode
+SceneNodeoperator= (const SceneNode &)=delete
 Deleted assignment operator.
 
SceneNode (const SceneNode &other)
 Protected copy constructor used to clone objects.
 
void swapChildPointer (SceneNode *first, SceneNode *second)
 Swaps the child pointer of a parent when moving an object. More...
 
+virtual void transform ()
 
- Protected Member Functions inherited from ncine::Object
Object (const Object &other)
 Protected copy constructor used to clone objects.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ncine::SceneNode
enum class  VisitOrderState { ENABLED +, DISABLED +, SAME_AS_PARENT + }
 
- Public Types inherited from ncine::Object
enum class  ObjectType {
+  BASE = 0 +, TEXTURE +, SHADER +, SCENENODE +,
+  SPRITE +, MESH_SPRITE +, ANIMATED_SPRITE +, PARTICLE +,
+  PARTICLE_SYSTEM +, FONT +, TEXTNODE +, AUDIOBUFFER +,
+  AUDIOBUFFER_PLAYER +, AUDIOSTREAM_PLAYER +
+ }
 Object types.
 
- Static Public Attributes inherited from ncine::SceneNode
+static const float MinRotation = 0.5f
 The minimum amount of rotation to trigger a sine and cosine calculation.
 
- Static Public Attributes inherited from ncine::Object
+static const unsigned int MaxNameLength = 128
 Maximum length for an object name.
 
- Protected Types inherited from ncine::SceneNode
enum  DirtyBitPositions {
+  TransformationBit = 0 +, ColorBit = 1 +, SizeBit = 2 +, TextureBit = 3 +,
+  AabbBit = 4 +
+ }
 Bit positions inside the dirty bitset.
 
- Protected Attributes inherited from ncine::SceneNode
+bool updateEnabled_
 
+bool drawEnabled_
 
+SceneNodeparent_
 A pointer to the parent node.
 
+nctl::Array< SceneNode * > children_
 The array of child nodes.
 
unsigned int childOrderIndex_
 The order index of this node among its siblings. More...
 
bool withVisitOrder_
 When enabled the visit order is used to resolve the drawing order of same layer nodes. More...
 
+enum VisitOrderState visitOrderState_
 The visit order state of this node.
 
+uint16_t visitOrderIndex_
 The visit order index of this node.
 
+Vector2f position_
 The node relative position.
 
Vector2f anchorPoint_
 
+Vector2f scaleFactor_
 Horizontal and vertical scale factors for node size.
 
+float rotation_
 Degrees for clock-wise node rotation in degrees.
 
Color color_
 Node color for transparency and translucency. More...
 
uint16_t layer_
 The node rendering layer. More...
 
+Vector2f absPosition_
 Absolute position as calculated by the transform() function.
 
+Vector2f absScaleFactor_
 Absolute horizontal and vertical scale factors as calculated by the transform() function.
 
+float absRotation_
 Absolute node rotation as calculated by the transform() function.
 
+Color absColor_
 Absolute node color as calculated by the transform() function.
 
+uint16_t absLayer_
 Absolute node rendering layer as calculated by the transform() function.
 
+Matrix4x4f worldMatrix_
 World transformation matrix (calculated from local and parent's world)
 
+Matrix4x4f localMatrix_
 Local transformation matrix.
 
+bool shouldDeleteChildrenOnDestruction_
 A flag indicating whether the destructor should also delete all children.
 
+nctl::BitSet< uint8_t > dirtyBits_
 Bitset that stores the various dirty states bits.
 
+unsigned long int lastFrameUpdated_
 The last frame any viewport updated this node.
 
- Protected Attributes inherited from ncine::Object
+ObjectType type_
 Object type.
 
+

Detailed Description

+

The class representing a particle system.

+

The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classncine_1_1_particle_system__coll__graph.map b/master/classncine_1_1_particle_system__coll__graph.map new file mode 100644 index 0000000000..cc17cb48c6 --- /dev/null +++ b/master/classncine_1_1_particle_system__coll__graph.map @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/master/classncine_1_1_particle_system__coll__graph.md5 b/master/classncine_1_1_particle_system__coll__graph.md5 new file mode 100644 index 0000000000..800781719d --- /dev/null +++ b/master/classncine_1_1_particle_system__coll__graph.md5 @@ -0,0 +1 @@ +f43ce6e33e5a72c3d67915b29d51dc14 \ No newline at end of file diff --git a/master/classncine_1_1_particle_system__coll__graph.png b/master/classncine_1_1_particle_system__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..b9649bae8d6ddf9503a824ef84fcaae21129598e GIT binary patch literal 41904 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

gwWj-mx7yaelb4phxR88OfdUDxCFx-2z z@AeGY)6_QyNx##$Kial+Ol!+|wK8Kc@A~9Z88#Y%kc2UY`O?Z;iEvgWX2@n#&Y#OE z%d!3TR;jV*@2!KU>vs@bdCkZP^5lOnxaa=~;}+_%{kx>(e??$Gb2mZg=s*9d#HB1@ zc=*SV?APu<0^u`bJ!*ZzcXH`r>f3>*O|$t*E<0%anvy3FEGYPy?&wB{i+tj%*lju8 zC}?#>K)YT`W*=wG^WdM<1j2Bj2a}Mk(`KfvbX&(C)1uR+OIr`>@?P&!c)sM|RM*Es zc=zF*^!Cqsi)ro4_T!hh)&%+&$R+B(bpON)i$4wa)onCMnbQH>+i=In*w|vy{&+!r z7ggCV5>mpoi$jJxKC2kqTkT}?(DRv?wm-fS&_rW6^K&YUK=^f_uhBOqWmws$m+anD z+QECC*Zc;{qteRp(o4IR6NQFx(f<^pArWc#c_2{r!mh0;);|RjH#$iDc|=JF&vwq! z3O%4&(CaI{Zh0B!RRFufy8`*Rm=S8>KuhEez3?dNtckBe%P5>>2I1T&_}X7uSTE3aOKo z>zb4p{uO-J-5_DrjfqJOkNSsMOH-Spc_rP(%#*##1F0Ir;U(+ZC$5kM)-Sh~1`$O1 zX?%`kW7+3s$zeV6`Pw#@w%d|2-i+T~7(X8~n;H!Ggp_g|NFr&oPz;!yjMQ64~nfXmVe02yR^N@ zHLm(`*x4y{p^yn8w#P@F6se?WuamdfD-&#=JMVH$%*_XSPKZZLmkW{}I_5fhzx-9Y z%0Ab{yQk2hYE^tzMb(U@fzN4ufmC*@(2}PW+;C$0`Ve(P>|l}lb)RQ2HLA<&1ES-H z)}02P!+SvX4ql=PXC)iRL+3arHUQ~4(&wPiPq57l5@=}}&9uy8DKvL1USq$xwQUiV zvn(kghJ;UMT+~juuieh&?mu*B1(VXbLV>zMeo>JmA-Jhpmy@GmXvk_AUtL)N9t6dl zL^=2VeCaf^W=R3E;qA+B(7JNd4?_(PWPrU9=Wq_Ujjzj$r6(mJL6woV1^xu$Fw72p zC90rxlc9)2g20db>B`#csPBu{xtdLfl&3~cL)dp#6msICT9-vU^;HHO)5!@MX zs{ZNOyb$p(BFfymVp0PE8cug`Xiy^rfW66pnF2vB)-Rh9Q4L6$kuf)y^b-ycP-%yw|~nZ*GXeb0N>^45)=6a>GEJJ-ec&#tiyaGC8hmO4f3) zbx#o3r%(smvyEW#2LU`%2ptChKO;9ZUfHxG3|t_01hT6JKEVXpyNNLmT*5GM2`8@ zb?EnDWhf^X1VFS+{I>-Mb#+mTaYdydjYqk@5(on$KodkHTqvvvvIvw9pwmPyFuoZa zFZ!;6zWB`Y4H%?IFk5-N87ObREeN)1@va;|P=;_Ep&*DnsAWRgB-?UD8v7~C!6gpK zDF5RfH*HBTW|oXHk~)1rR&{J$;YTPbB(m%3PUkp5seisl|N3D##Fm2BQtToj9CT5{ zZuqBAn}wu>u*g}Rvm#L{wXzt?v-N;v7NG4y^~nC+Z7u4Nm^g(o=6dtq0N6nOs3gAF zO)tGo&w?gN?N;CDXi4v7*lghzH1q3G)J)_qfL8c;p zFrctg`l)#r|7dccA(-8dP>Dls1R8JRk^AV$L!B>z$N&?5B@1{)73JyMlBA-UOeTgs zd;0o(O_U3quT6F+*~9}6fk~21pGtZfbkY)5qrY{d0SXk*ihn38TO&Hm_!E~04nu5^ zm^hrXxi79Gk%YABpu%>kXbg~GIs`E^*tVx&98V_ikdaAplECwzig43UvuA_Dg?ZWK z=cuV;55d_0_XzHnP-^~@7HZWcmXr26@)}DE3y^;BBy%8lmudM9g-J5)NA8hGv5>UF zPBG!gr<`9AZYp}&XN%VVDlBy=byrna|9tn4C={9b_5YhRP!k}428cHnhdsdzG)cg}(P!B~D7S6P4QCz5h0);GWC8(&_eLMC#iJO~G%Y>7 z&dyGH&r^`M+}wsGyiC6%DR!S-{w=d>3K|7Jnal9X@&zyL)9>>=q-il+@<`BQTUyPoKrg7%n1_YyS#{ zs+BWah^V@4f_L}AQFUEW*TpLowK{C^x+u*QoLfZWu73hN1b+k($kg=J!A6ABq~RD_ z@@pBdus9e>WF}d7WP($N#?@8HQDyK`{|4;4@fE%FK0s9b`|qWU(3d3+ZBfGN5-Ri7 Y>E6}pdgMEfl2?9x)bU7(jYstV0fDnBt^fc4 literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_particle_system__inherit__graph.map b/master/classncine_1_1_particle_system__inherit__graph.map new file mode 100644 index 0000000000..76b6ef083d --- /dev/null +++ b/master/classncine_1_1_particle_system__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/master/classncine_1_1_particle_system__inherit__graph.md5 b/master/classncine_1_1_particle_system__inherit__graph.md5 new file mode 100644 index 0000000000..2b0877d5ba --- /dev/null +++ b/master/classncine_1_1_particle_system__inherit__graph.md5 @@ -0,0 +1 @@ +25a5ee5af9d2a8ae11c221e2a8370ab0 \ No newline at end of file diff --git a/master/classncine_1_1_particle_system__inherit__graph.png b/master/classncine_1_1_particle_system__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..ba938e923c439258ad32b7fb38ac0f54d5776055 GIT binary patch literal 5779 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 G6Y+1Tyc9$L literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_position_affector-members.html b/master/classncine_1_1_position_affector-members.html new file mode 100644 index 0000000000..2c1732fbd2 --- /dev/null +++ b/master/classncine_1_1_position_affector-members.html @@ -0,0 +1,108 @@ + + + + + + + +nCine: Member List + + + + + + + + + +

+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::PositionAffector Member List
+
+
+ +

This is the complete list of members for ncine::PositionAffector, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
addPositionStep(float age, float posX, float posY) (defined in ncine::PositionAffector)ncine::PositionAffector
addPositionStep(float age, const Vector2f &position) (defined in ncine::PositionAffector)ncine::PositionAffectorinline
addPositionStep(const PositionStep &step) (defined in ncine::PositionAffector)ncine::PositionAffectorinline
affect(Particle *particle, float normalizedAge) overridencine::PositionAffectorvirtual
ncine::ParticleAffector::affect(Particle *particle)ncine::ParticleAffector
clearSteps() overridencine::PositionAffectorinlinevirtual
clone() constncine::PositionAffectorinline
enabled_ncine::ParticleAffectorprotected
isEnabled() constncine::ParticleAffectorinline
numSteps() const overridencine::PositionAffectorinlinevirtual
operator=(PositionAffector &&)=defaultncine::PositionAffector
ParticleAffector(Type type) (defined in ncine::ParticleAffector)ncine::ParticleAffectorinline
ParticleAffector(const ParticleAffector &other)=defaultncine::ParticleAffectorprotected
PositionAffector() (defined in ncine::PositionAffector)ncine::PositionAffectorinline
PositionAffector(PositionAffector &&)=defaultncine::PositionAffector
PositionAffector(const PositionAffector &other)=defaultncine::PositionAffectorprotected
removeStep(unsigned int index) overridencine::PositionAffectorvirtual
setEnabled(bool enabled)ncine::ParticleAffectorinline
steps() (defined in ncine::PositionAffector)ncine::PositionAffectorinline
steps() const (defined in ncine::PositionAffector)ncine::PositionAffectorinline
type() constncine::ParticleAffectorinline
Type enum name (defined in ncine::ParticleAffector)ncine::ParticleAffector
type_ncine::ParticleAffectorprotected
~ParticleAffector() (defined in ncine::ParticleAffector)ncine::ParticleAffectorinlinevirtual
+ + + + diff --git a/master/classncine_1_1_position_affector.html b/master/classncine_1_1_position_affector.html new file mode 100644 index 0000000000..951b515733 --- /dev/null +++ b/master/classncine_1_1_position_affector.html @@ -0,0 +1,222 @@ + + + + + + + +nCine: ncine::PositionAffector Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::PositionAffector Class Reference
+
+
+ +

Particle position affector. + More...

+ +

#include <ParticleAffectors.h>

+
+Inheritance diagram for ncine::PositionAffector:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for ncine::PositionAffector:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + +

+Classes

struct  PositionStep
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

PositionAffector (PositionAffector &&)=default
 Default move constructor.
 
+PositionAffectoroperator= (PositionAffector &&)=default
 Default move assignment operator.
 
+PositionAffector clone () const
 Returns a copy of this object.
 
+void affect (Particle *particle, float normalizedAge) override
 Affects the position of the specified particle.
 
+void addPositionStep (float age, float posX, float posY)
 
+void addPositionStep (float age, const Vector2f &position)
 
+void addPositionStep (const PositionStep &step)
 
+unsigned int numSteps () const override
 Returns the number of steps.
 
+void removeStep (unsigned int index) override
 Removes the step at the specified position index.
 
+void clearSteps () override
 Removes all steps.
 
+nctl::Array< PositionStep > & steps ()
 
+const nctl::Array< PositionStep > & steps () const
 
- Public Member Functions inherited from ncine::ParticleAffector
ParticleAffector (Type type)
 
+void affect (Particle *particle)
 Affects a property of the specified particle.
 
+Type type () const
 Returns the affector type.
 
+bool isEnabled () const
 Returns true if the affector is enabled.
 
+void setEnabled (bool enabled)
 Enables or disables the affector.
 
+ + + + + + + + +

+Protected Member Functions

PositionAffector (const PositionAffector &other)=default
 Protected default copy constructor used to clone objects.
 
- Protected Member Functions inherited from ncine::ParticleAffector
ParticleAffector (const ParticleAffector &other)=default
 Protected default copy constructor used to clone objects.
 
+ + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ncine::ParticleAffector
enum class  Type {
+  COLOR +, SIZE +, ROTATION +, POSITION +,
+  VELOCITY +
+ }
 
- Protected Attributes inherited from ncine::ParticleAffector
+Type type_
 Affector type.
 
+bool enabled_
 A flag indicating whether the affector is enabled or not.
 
+

Detailed Description

+

Particle position affector.

+

The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classncine_1_1_position_affector__coll__graph.map b/master/classncine_1_1_position_affector__coll__graph.map new file mode 100644 index 0000000000..268125b0ff --- /dev/null +++ b/master/classncine_1_1_position_affector__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classncine_1_1_position_affector__coll__graph.md5 b/master/classncine_1_1_position_affector__coll__graph.md5 new file mode 100644 index 0000000000..391c591a59 --- /dev/null +++ b/master/classncine_1_1_position_affector__coll__graph.md5 @@ -0,0 +1 @@ +3cc9578c54d3b07e18ac1de6f2e1f863 \ No newline at end of file diff --git a/master/classncine_1_1_position_affector__coll__graph.png b/master/classncine_1_1_position_affector__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..1ee9be25a75a5e42c4178638fa51973b8117adc1 GIT binary patch literal 4135 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 + + + diff --git a/master/classncine_1_1_position_affector__inherit__graph.md5 b/master/classncine_1_1_position_affector__inherit__graph.md5 new file mode 100644 index 0000000000..391c591a59 --- /dev/null +++ b/master/classncine_1_1_position_affector__inherit__graph.md5 @@ -0,0 +1 @@ +3cc9578c54d3b07e18ac1de6f2e1f863 \ No newline at end of file diff --git a/master/classncine_1_1_position_affector__inherit__graph.png b/master/classncine_1_1_position_affector__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..1ee9be25a75a5e42c4178638fa51973b8117adc1 GIT binary patch literal 4135 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 + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::Qt5Widget Member List
+
+
+ +

This is the complete list of members for ncine::Qt5Widget, including all inherited members.

+ + + + + + + + + + + + + + +
appEventHandler() (defined in ncine::Qt5Widget)ncine::Qt5Widget
event(QEvent *event) override (defined in ncine::Qt5Widget)ncine::Qt5Widgetprotected
initializeGL() override (defined in ncine::Qt5Widget)ncine::Qt5Widgetprotected
makeCurrent()ncine::Qt5Widget
minimumSizeHint() const override (defined in ncine::Qt5Widget)ncine::Qt5Widgetprotected
paintGL() override (defined in ncine::Qt5Widget)ncine::Qt5Widgetprotected
Qt5Widget(nctl::UniquePtr< IAppEventHandler >(*createAppEventHandler)()) (defined in ncine::Qt5Widget)ncine::Qt5Widgetinlineexplicit
Qt5Widget(nctl::UniquePtr< IAppEventHandler >(*createAppEventHandler)(), int argc, char **argv) (defined in ncine::Qt5Widget)ncine::Qt5Widgetinline
Qt5Widget(QWidget *parent, nctl::UniquePtr< IAppEventHandler >(*createAppEventHandler)(), int argc, char **argv) (defined in ncine::Qt5Widget)ncine::Qt5Widget
resizeGL(int w, int h) override (defined in ncine::Qt5Widget)ncine::Qt5Widgetprotected
setShouldUpdate(bool shouldUpdate)ncine::Qt5Widgetinline
sizeHint() const override (defined in ncine::Qt5Widget)ncine::Qt5Widgetprotected
~Qt5Widget() (defined in ncine::Qt5Widget)ncine::Qt5Widget
+ + + + diff --git a/master/classncine_1_1_qt5_widget.html b/master/classncine_1_1_qt5_widget.html new file mode 100644 index 0000000000..04763ef6a8 --- /dev/null +++ b/master/classncine_1_1_qt5_widget.html @@ -0,0 +1,179 @@ + + + + + + + +nCine: ncine::Qt5Widget Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::Qt5Widget Class Reference
+
+
+ +

The Qt5 nCine widget. + More...

+ +

#include <Qt5Widget.h>

+
+Inheritance diagram for ncine::Qt5Widget:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for ncine::Qt5Widget:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + +

+Public Member Functions

Qt5Widget (nctl::UniquePtr< IAppEventHandler >(*createAppEventHandler)())
 
Qt5Widget (nctl::UniquePtr< IAppEventHandler >(*createAppEventHandler)(), int argc, char **argv)
 
Qt5Widget (QWidget *parent, nctl::UniquePtr< IAppEventHandler >(*createAppEventHandler)(), int argc, char **argv)
 
+void setShouldUpdate (bool shouldUpdate)
 If set to false the widget will stop to automatically update each frame.
 
+IAppEventHandlerappEventHandler ()
 
void makeCurrent ()
 Makes the widget's rendering context the current OpenGL rendering context. More...
 
+ + + + + + + + + + + + + +

+Protected Member Functions

+bool event (QEvent *event) override
 
+void initializeGL () override
 
+void resizeGL (int w, int h) override
 
+void paintGL () override
 
+QSize minimumSizeHint () const override
 
+QSize sizeHint () const override
 
+

Detailed Description

+

The Qt5 nCine widget.

+

Member Function Documentation

+ +

◆ makeCurrent()

+ +
+
+ + + + + + + +
void ncine::Qt5Widget::makeCurrent ()
+
+ +

Makes the widget's rendering context the current OpenGL rendering context.

+
Note
This custom version of the method also resets the FBO binding
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classncine_1_1_qt5_widget__coll__graph.map b/master/classncine_1_1_qt5_widget__coll__graph.map new file mode 100644 index 0000000000..4255229ff0 --- /dev/null +++ b/master/classncine_1_1_qt5_widget__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classncine_1_1_qt5_widget__coll__graph.md5 b/master/classncine_1_1_qt5_widget__coll__graph.md5 new file mode 100644 index 0000000000..f23a608127 --- /dev/null +++ b/master/classncine_1_1_qt5_widget__coll__graph.md5 @@ -0,0 +1 @@ +1f3cf95f79da7bbca10102b5a5688ab9 \ No newline at end of file diff --git a/master/classncine_1_1_qt5_widget__coll__graph.png b/master/classncine_1_1_qt5_widget__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..106fc5ef5fe63717b12a857cd3dc6de85bb20cef GIT binary patch literal 3960 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 Cx1~V< literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_qt5_widget__inherit__graph.map b/master/classncine_1_1_qt5_widget__inherit__graph.map new file mode 100644 index 0000000000..4255229ff0 --- /dev/null +++ b/master/classncine_1_1_qt5_widget__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classncine_1_1_qt5_widget__inherit__graph.md5 b/master/classncine_1_1_qt5_widget__inherit__graph.md5 new file mode 100644 index 0000000000..f23a608127 --- /dev/null +++ b/master/classncine_1_1_qt5_widget__inherit__graph.md5 @@ -0,0 +1 @@ +1f3cf95f79da7bbca10102b5a5688ab9 \ No newline at end of file diff --git a/master/classncine_1_1_qt5_widget__inherit__graph.png b/master/classncine_1_1_qt5_widget__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..106fc5ef5fe63717b12a857cd3dc6de85bb20cef GIT binary patch literal 3960 zcmb_fg#i{8bUz2!=SrC zkZ#EVkv_|N&v(y1aMwIDdp~>4+Uu9^`>s$u9Ss;I8zlrmu)CUS_rVnhzOLlNf9^h9 zHUJmWM_L+c(8ZrmdP8m$1knoLRZ~X!ByXnpqpoPowDGfCn^IY1s8M|ie`){is>!S# z4NQ-i|Ml=7Pk(A$t^z~TEJpeR{OfeHdk-|3%HJq3kz6MJ z+Z3rpF3`~!h@5#b^e!t1<3aejLfg0H^4P9XV&-S>PmwJ;Iuat8_+b1~A{lqmLu&uo zR4dvkiJ!`bv92e-HopyHB(9j6nhM6qNfhlP*xA?;6BA7|@56mVnmhHi@4Y|G#g$_LY!rO-#)aj!1~De0&~;u(|dzF3in6+nH6? zF3{^P^Yc2|vz1EH&c1)JzaNiWrd2#m=c%Z!{>@ro&^}UNG**n(%^kYI*txgVW&P;U z)^r_N6!E1?ibsoAZrNE`%~6Tg2W>GkG0~I1q+$_iHvjYxnW2}TpASJjJw5Ew&ZuG? zY3ZteX+$9WW&0K&PfroIZ-1Yh^g&oW|DR!K7+X3Vsd(-K{OuDliOtU!ba8PZ zBYV}_+Nu%B^}x{3&&OwRaZ#ZA=l1r@#Kgq(G|YQreciC|p}wgpmA5FmQ7GnKLqo$z zf!-PSJ$!L7{OVP`*f-p-QG%YXuH&_y1&$@v)$wXP(@lYBW5EPuz|JgDFn3W=(c0Qt zapQ454o4r-Qth$E&@CY)#mvHD2Zp0#_nfQc(5Xn4@T=*+dU|-!aLA;~F)7m-8I5IY#f^@Qg{gh0uSbBokdb-K-Olb(PtV9WJTh{fAynaP z-+(ma8cx$PKwe&6Bu-vI;e5mhJ+S7HhoW?NYHxp^&n?GJUtb>>L>}x~V`gW!!mpdE zmxsbA1#!1`i8dvtq`=BL{D2Q<%SkRY)YMaT-hDkiu!GjFE{89F!$LwrQc_Zi>-Q+x zj7CZLqI`evSTUIkb_M&8x(xgK`!CIVd3n{;)Ck^pcXNApA>Y?u4LmFM*UEaW5*#1%>A01|?EHnGc~{@Bk8yp)QHibUDX-QC*Snx2G$ znz|5=r=!I3GEm%}*6*9`f9>_{TNq1*G$$t~{w{fNGu6-j{&#Qq@Lgp`k#@_=%X-O< zdOWzDqvu*$T1I8=>|lk)|ritZ3Dd~Plo zL>KnWt)iaLD^DJr?oNsQeRQ;YbSm$?1tNTOd`t{I6f$&ja#B?dNloQKnA^6 zJ{jp#yg*E?Zfr<^E|idnatK@J!()&9m*?l_XJ@&knS_Leu}x+yEG+*1Ckc5Bp^FD& z=vQ?mzVC{PMA+HcL3ns@G6;mwNtsEV*GGF8DF2iON6`QL{JEW-ojExCc1FYrxH60qw{9vB$t z=jyHxt=Bq+~VVN)R?A;V$|nD=!Cig5L^l9KTTf9XUGF9cz4&u`;n)#C`$)YMeU zHVIp8ateyOnwmbx`+4gYXW!2Q`TFQcj+Wxkr)Os{7>o!aA$H^X2~kW;j8>e;18a=nF?!^r zOxDWTIbgLvnxiPApB*l95Y9YEwK~&V`+4_TAJNNn4aQ4J}6Z81Q#Pd@^Ul>~S+zkE? zdt_9kUYk4#)Ijwpt7~YmXuq1gaifNfeomd2;g+!48Gi3=+k$W+%>hpg4;ih+;8>bj z;}mMhWH|DE-z>r4t=m#(gGMA@T^+6`2|ZNKe2|&4Fwqh9ac5@jXNAb++G~7A$OoQ}M)41=ieQxR`05 z;L1k!^3r?151TIdd2K3kuz2`pjnw&J&_5*1`m6c&7p`i%@k{^Z`2S<*|JO-so;oEJ zW8;LJB|MCB3C;T+m-7Jss-&c($+(T!e2RW0P081{#!L-k7k{pj|BGmBDe5x(k52f< z3W6FpUCBcsoaUvp0Tb80N7mLiZ{B37jm0j&@qsP3zgM}yUwzT{{{#TAqoad^=2g$* zwy$4NMn;);lcZe~0?!e(b^eFWvD9sma54ymLaE)kli{nAEYtGnQ<3=zAqrz)U_eAf zWG3Q`+3&iMd^7&^2UA>EPka08w{MX;Iyrg*Ks?;JbLZ^rY`ftw_46qJpxxcwQhL6q z8h}C=492!AmIyL2HRa^s0KaqZ=YTEb!G$Ij_VknDw9D?PPE*ypC)-WBNaUic%y#36 z$T1-~K7PE+PFGFs>tuxkfj|Hd)`Bh;?xbN1`{w`aCj~7nEe(y1t}YM{LAz-I#}v2O z`<+OXDJdysICMNbZl&nt-p>PO14{rbFAy`KPV;a=e%;oef}$jR1$2=lMDjd2O!qs(o#%ptO&aC^!Q+-4B^@q!3mi3^5x6m zrmUhFH6$n2CuA1Z{3^^6~LmSXclp1sE3!8XX;#bQtX}^aIP}JuAxw>|J^@@up*(3fBEmYASdkz(}CYicG6?1Q;XUzNMz2v8ZvoE-5+k6cE77Rz4LjkTnc<=xnaAXVU&)HeztwaLycY*!Wr&eNDZNz<-I%A}rr>?@`ATxI2 z32saKhlexuz7p52Vbn8?jg7y3{o3qPkqAKyPVhAw*?uEf2%wbdAKCTEt$mg=jJnR9o)!mJRppX`zS%D4&^kP%`ye~c} zNmoaQ607ory_^KHeEgV?IqVJ(efb}mFebz#sOseYLM~-%Z4IdO-mR@IQ0QfLeNvK= zJ$p)`qQyXMaz#o@N*=Vq18r<<5HF4y1rkE&$X`}hSA+j?$-3FNy1Ifs04k-VWG94H zLF});h#(LU4^PjG0uehK8&JhaZEc`tpPy`2fgM2J#X>u5V&mezkB>Jyd%C&#?XT(s zRrR^0yR*|CBoo9zC1Ypq%d43ehn#Og)`}l~`hdr4iWGe?ccWZ+Be&hBaB)glN%a>2 z)yc#2p`jtA#j<;^d4JzSUcN3mI=a8V|HFq5&CSi%wPNw@+iPnHX=yW~qs%}vGBCW4 zi;IhnekroXNl)Lh1kJkD$jZv*>ZTbQVZiwYDA!V#0kMmEoO)(< zRu(u-2-a6T02+~>k55is{&0I{dt;+6eZ*={_B96=7ni4}CmUn4jW`u0W#iE@ zJ0*60b2D7$kcHf72e|;Gy$r#OLoCqgRFveu{F7lx^FAe|VO88U+HIv5h&%X1I~q|| zQ4!;x6Po!99L^ShynC|Arf5Q~@V}?h|1ehD1#y|qbaUGyR2Vo)LwE1!s1>PL2LBsT Cx1~V< literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_quaternion-members.html b/master/classncine_1_1_quaternion-members.html new file mode 100644 index 0000000000..107f927ac9 --- /dev/null +++ b/master/classncine_1_1_quaternion-members.html @@ -0,0 +1,124 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::Quaternion< T > Member List
+
+
+ +

This is the complete list of members for ncine::Quaternion< T >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
conjugate() (defined in ncine::Quaternion< T >)ncine::Quaternion< T >inline
conjugated() const (defined in ncine::Quaternion< T >)ncine::Quaternion< T >inline
data() (defined in ncine::Quaternion< T >)ncine::Quaternion< T >inline
data() const (defined in ncine::Quaternion< T >)ncine::Quaternion< T >inline
fromAxisAngle(T xx, T yy, T zz, T degrees) (defined in ncine::Quaternion< T >)ncine::Quaternion< T >inlinestatic
fromAxisAngle(const Vector3< T > &axis, T degrees) (defined in ncine::Quaternion< T >)ncine::Quaternion< T >inlinestatic
fromXAxisAngle(T degrees) (defined in ncine::Quaternion< T >)ncine::Quaternion< T >inlinestatic
fromYAxisAngle(T degrees) (defined in ncine::Quaternion< T >)ncine::Quaternion< T >inlinestatic
fromZAxisAngle(T degrees) (defined in ncine::Quaternion< T >)ncine::Quaternion< T >inlinestatic
Identityncine::Quaternion< T >static
magnitude() const (defined in ncine::Quaternion< T >)ncine::Quaternion< T >inline
normalize() (defined in ncine::Quaternion< T >)ncine::Quaternion< T >inline
normalized() const (defined in ncine::Quaternion< T >)ncine::Quaternion< T >inline
operator*(const Quaternion &q) const (defined in ncine::Quaternion< T >)ncine::Quaternion< T >inline
operator*(T s) const (defined in ncine::Quaternion< T >)ncine::Quaternion< T >inline
operator*=(const Quaternion &q) (defined in ncine::Quaternion< T >)ncine::Quaternion< T >inline
operator*=(T s) (defined in ncine::Quaternion< T >)ncine::Quaternion< T >inline
operator+(const Quaternion &q) const (defined in ncine::Quaternion< T >)ncine::Quaternion< T >inline
operator+=(const Quaternion &q) (defined in ncine::Quaternion< T >)ncine::Quaternion< T >inline
operator-() const (defined in ncine::Quaternion< T >)ncine::Quaternion< T >inline
operator-(const Quaternion &q) const (defined in ncine::Quaternion< T >)ncine::Quaternion< T >inline
operator-=(const Quaternion &q) (defined in ncine::Quaternion< T >)ncine::Quaternion< T >inline
operator/(T s) const (defined in ncine::Quaternion< T >)ncine::Quaternion< T >inline
operator/=(T s) (defined in ncine::Quaternion< T >)ncine::Quaternion< T >inline
operator=(const Quaternion &other) (defined in ncine::Quaternion< T >)ncine::Quaternion< T >inline
operator==(const Quaternion &q) const (defined in ncine::Quaternion< T >)ncine::Quaternion< T >inline
operator[](unsigned int index) (defined in ncine::Quaternion< T >)ncine::Quaternion< T >inline
operator[](unsigned int index) const (defined in ncine::Quaternion< T >)ncine::Quaternion< T >inline
Quaternion() (defined in ncine::Quaternion< T >)ncine::Quaternion< T >inline
Quaternion(T xx, T yy, T zz, T ww) (defined in ncine::Quaternion< T >)ncine::Quaternion< T >inline
Quaternion(const Vector4< T > &v) (defined in ncine::Quaternion< T >)ncine::Quaternion< T >inlineexplicit
Quaternion(const Quaternion &other) (defined in ncine::Quaternion< T >)ncine::Quaternion< T >inline
set(T xx, T yy, T zz, T ww) (defined in ncine::Quaternion< T >)ncine::Quaternion< T >inline
sqrMagnitude() const (defined in ncine::Quaternion< T >)ncine::Quaternion< T >inline
toMatrix4x4() const (defined in ncine::Quaternion< T >)ncine::Quaternion< T >inline
w (defined in ncine::Quaternion< T >)ncine::Quaternion< T >
x (defined in ncine::Quaternion< T >)ncine::Quaternion< T >
y (defined in ncine::Quaternion< T >)ncine::Quaternion< T >
z (defined in ncine::Quaternion< T >)ncine::Quaternion< T >
Zeroncine::Quaternion< T >static
+ + + + diff --git a/master/classncine_1_1_quaternion.html b/master/classncine_1_1_quaternion.html new file mode 100644 index 0000000000..9026f7b298 --- /dev/null +++ b/master/classncine_1_1_quaternion.html @@ -0,0 +1,240 @@ + + + + + + + +nCine: ncine::Quaternion< T > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

A quaternion class based on templates. + More...

+ +

#include <Quaternion.h>

+
+Collaboration diagram for ncine::Quaternion< T >:
+
+
Collaboration graph
+ + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Quaternion (T xx, T yy, T zz, T ww)
 
Quaternion (const Vector4< T > &v)
 
Quaternion (const Quaternion &other)
 
+Quaternionoperator= (const Quaternion &other)
 
+void set (T xx, T yy, T zz, T ww)
 
+T * data ()
 
+const T * data () const
 
+T & operator[] (unsigned int index)
 
+const T & operator[] (unsigned int index) const
 
+bool operator== (const Quaternion &q) const
 
+Quaternion operator- () const
 
+Quaternionoperator+= (const Quaternion &q)
 
+Quaternionoperator-= (const Quaternion &q)
 
+Quaternionoperator*= (const Quaternion &q)
 
+Quaternionoperator*= (T s)
 
+Quaternionoperator/= (T s)
 
+Quaternion operator+ (const Quaternion &q) const
 
+Quaternion operator- (const Quaternion &q) const
 
+Quaternion operator* (const Quaternion &q) const
 
+Quaternion operator* (T s) const
 
+Quaternion operator/ (T s) const
 
+T magnitude () const
 
+T sqrMagnitude () const
 
+Quaternion normalized () const
 
+Quaternionnormalize ()
 
+Quaternion conjugated () const
 
+Quaternionconjugate ()
 
+Matrix4x4< T > toMatrix4x4 () const
 
+ + + + + + + + + + + +

+Static Public Member Functions

+static Quaternion fromAxisAngle (T xx, T yy, T zz, T degrees)
 
+static Quaternion fromAxisAngle (const Vector3< T > &axis, T degrees)
 
+static Quaternion fromXAxisAngle (T degrees)
 
+static Quaternion fromYAxisAngle (T degrees)
 
+static Quaternion fromZAxisAngle (T degrees)
 
+ + + + + + + + + +

+Public Attributes

+T x
 
+T y
 
+T z
 
+T w
 
+ + + + + + + +

+Static Public Attributes

+static const Quaternion Zero
 A quaternion with all zero elements.
 
+static const Quaternion Identity
 An identity quaternion.
 
+

Detailed Description

+

template<class T>
+class ncine::Quaternion< T >

+ +

A quaternion class based on templates.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classncine_1_1_quaternion__coll__graph.map b/master/classncine_1_1_quaternion__coll__graph.map new file mode 100644 index 0000000000..997c2b4be2 --- /dev/null +++ b/master/classncine_1_1_quaternion__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/master/classncine_1_1_quaternion__coll__graph.md5 b/master/classncine_1_1_quaternion__coll__graph.md5 new file mode 100644 index 0000000000..1e8fa8fd10 --- /dev/null +++ b/master/classncine_1_1_quaternion__coll__graph.md5 @@ -0,0 +1 @@ +fa7b189235c65c7f55b4e6edccf38dbb \ No newline at end of file diff --git a/master/classncine_1_1_quaternion__coll__graph.png b/master/classncine_1_1_quaternion__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..ce82f63988ec3f98b5b77cd149662da53119a5b9 GIT binary patch literal 3614 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 + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::Random Member List
+
+
+ +

This is the complete list of members for ncine::Random, including all inherited members.

+ + + + + + + + + + + +
fastInteger(uint32_t min, uint32_t max)ncine::Random
fastReal()ncine::Random
fastReal(float min, float max)ncine::Random
init(uint64_t initState, uint64_t initSequence)ncine::Random
integer()ncine::Random
integer(uint32_t min, uint32_t max)ncine::Random
Random()ncine::Random
Random(uint64_t initState, uint64_t initSequence)ncine::Random
real()ncine::Random
real(float min, float max)ncine::Random
+ + + + diff --git a/master/classncine_1_1_random.html b/master/classncine_1_1_random.html new file mode 100644 index 0000000000..61c4c3439e --- /dev/null +++ b/master/classncine_1_1_random.html @@ -0,0 +1,140 @@ + + + + + + + +nCine: ncine::Random Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::Random Class Reference
+
+
+ +

PCG32 random number generator. + More...

+ +

#include <Random.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Random ()
 Creates a new generator with default seeds.
 
Random (uint64_t initState, uint64_t initSequence)
 Creates a new generator with the specified seeds.
 
+void init (uint64_t initState, uint64_t initSequence)
 Initializes the generator with the specified seeds.
 
+uint32_t integer ()
 Generates a uniformly distributed `32-bit number.
 
+uint32_t integer (uint32_t min, uint32_t max)
 Generates a uniformly distributed `32-bit number, r, where min <= r < max.
 
+float real ()
 Generates a uniformly distributed float number, r, where 0 <= r < 1.
 
+float real (float min, float max)
 Generates a uniformly distributed float number, r, where min <= r < max.
 
+uint32_t fastInteger (uint32_t min, uint32_t max)
 Faster but less uniform version of integer()
 
+float fastReal ()
 Faster but less uniform version of real()
 
+float fastReal (float min, float max)
 Faster but less uniform version of real()
 
+

Detailed Description

+

PCG32 random number generator.

+

Based on the Apache License 2.0 code from pcg-random.org

+

The documentation for this class was generated from the following files:
    +
  • include/ncine/Random.h
  • +
  • src/base/Random.cpp
  • +
+
+ + + + diff --git a/master/classncine_1_1_rect-members.html b/master/classncine_1_1_rect-members.html new file mode 100644 index 0000000000..f271a0ca26 --- /dev/null +++ b/master/classncine_1_1_rect-members.html @@ -0,0 +1,115 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::Rect< T > Member List
+
+
+ +

This is the complete list of members for ncine::Rect< T >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
center() constncine::Rect< T >inline
contains(T px, T py) constncine::Rect< T >inline
contains(const Vector2< T > &p) constncine::Rect< T >inline
contains(const Rect< T > &rect) constncine::Rect< T >inline
fromCenterSize(T xx, T yy, T ww, T hh)ncine::Rect< T >inlinestatic
fromCenterSize(const Vector2< T > &center, const Vector2< T > &size)ncine::Rect< T >inlinestatic
fromMinMax(T minX, T minY, T maxX, T maxY)ncine::Rect< T >inlinestatic
fromMinMax(const Vector2< T > &min, const Vector2< T > &max)ncine::Rect< T >inlinestatic
hncine::Rect< T >
intersect(const Rect< T > &rect)ncine::Rect< T >inline
invertSize()ncine::Rect< T >inline
max() constncine::Rect< T >inline
min() constncine::Rect< T >inline
operator==(const Rect &rect) constncine::Rect< T >inline
overlaps(const Rect< T > &rect) constncine::Rect< T >inline
Rect()ncine::Rect< T >inline
Rect(T xx, T yy, T ww, T hh)ncine::Rect< T >inline
Rect(const Vector2< T > &point, const Vector2< T > &size)ncine::Rect< T >inline
set(T xx, T yy, T ww, T hh)ncine::Rect< T >inline
set(const Vector2< T > &point, const Vector2< T > &size)ncine::Rect< T >inline
setCenter(float cx, float cy)ncine::Rect< T >inline
setCenter(const Vector2< T > &center)ncine::Rect< T >inline
setCenterSize(T xx, T yy, T ww, T hh)ncine::Rect< T >inline
setCenterSize(const Vector2< T > &center, const Vector2< T > &size)ncine::Rect< T >inline
setMinMax(T minX, T minY, T maxX, T maxY)ncine::Rect< T >inline
setMinMax(const Vector2< T > &min, const Vector2< T > &max)ncine::Rect< T >inline
setSize(float ww, float hh)ncine::Rect< T >inline
setSize(const Vector2< T > &size)ncine::Rect< T >inline
wncine::Rect< T >
xncine::Rect< T >
yncine::Rect< T >
+ + + + diff --git a/master/classncine_1_1_rect.html b/master/classncine_1_1_rect.html new file mode 100644 index 0000000000..97e8827f64 --- /dev/null +++ b/master/classncine_1_1_rect.html @@ -0,0 +1,352 @@ + + + + + + + +nCine: ncine::Rect< T > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::Rect< T > Class Template Reference
+
+
+ +

A template based rectangle in a two dimensional space. + More...

+ +

#include <Rect.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Rect ()
 Default constructor, all zeros.
 
Rect (T xx, T yy, T ww, T hh)
 Constructs a rectangle from top-left point and size.
 
Rect (const Vector2< T > &point, const Vector2< T > &size)
 Constructs a rectangle from top-left point and size as two Vector2
 
+Vector2< T > center () const
 Calculates the center of the rectangle.
 
+Vector2< T > min () const
 Calculates the minimum coordinates of the rectangle.
 
+Vector2< T > max () const
 Calculates the maximum coordinates of the rectangle.
 
+void set (T xx, T yy, T ww, T hh)
 Sets rectangle top-left point and size.
 
+void set (const Vector2< T > &point, const Vector2< T > &size)
 Sets rectangle top-left point and size as two Vector2
 
+void setCenter (float cx, float cy)
 Retains rectangle size but moves its center to another position.
 
+void setCenter (const Vector2< T > &center)
 Retains rectangle size but moves its center to another position with a Vector2
 
+void setSize (float ww, float hh)
 Retains rectangle center but changes its size.
 
+void setSize (const Vector2< T > &size)
 Retains rectangle center but changes its size with a Vector2
 
+void setCenterSize (T xx, T yy, T ww, T hh)
 Sets rectangle center and size.
 
+void setCenterSize (const Vector2< T > &center, const Vector2< T > &size)
 Sets rectangle center and size as two Vector2
 
+void setMinMax (T minX, T minY, T maxX, T maxY)
 Sets rectangle minimum and maximum coordinates.
 
+void setMinMax (const Vector2< T > &min, const Vector2< T > &max)
 Sets rectangle minimum and maximum coordinates as two Vector2
 
+void invertSize ()
 Inverts rectangle size and moves (x, y) to a different angle.
 
bool contains (T px, T py) const
 
bool contains (const Vector2< T > &p) const
 
bool contains (const Rect< T > &rect) const
 
bool overlaps (const Rect< T > &rect) const
 
+void intersect (const Rect< T > &rect)
 Intersects this rectangle with the other rectangle.
 
+bool operator== (const Rect &rect) const
 Eqality operator.
 
+ + + + + + + + + + + + + +

+Static Public Member Functions

+static Rect fromCenterSize (T xx, T yy, T ww, T hh)
 Creates a rectangle from center and size.
 
+static Rect fromCenterSize (const Vector2< T > &center, const Vector2< T > &size)
 Creates a rectangle from center and size as two Vector2
 
+static Rect fromMinMax (T minX, T minY, T maxX, T maxY)
 Creates a rectangle from minimum and maximum coordinates.
 
+static Rect fromMinMax (const Vector2< T > &min, const Vector2< T > &max)
 Creates a rectangle from minimum and maximum coordinates as two Vector2
 
+ + + + + + + + + + + + + +

+Public Attributes

+T x
 Top-left X coordinate as a public property (left with positive width)
 
+T y
 Top-left Y coordinate as a public property (top with positive height)
 
+T w
 Width as a public property.
 
+T h
 Height as a public property.
 
+

Detailed Description

+

template<class T>
+class ncine::Rect< T >

+ +

A template based rectangle in a two dimensional space.

+

Member Function Documentation

+ +

◆ contains() [1/3]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
bool ncine::Rect< T >::contains (const Rect< T > & rect) const
+
+inline
+
+
Returns
True if the other rectangle is contained inside this one
+ +
+
+ +

◆ contains() [2/3]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
bool ncine::Rect< T >::contains (const Vector2< T > & p) const
+
+inline
+
+
Returns
True if the point vector is inside this rectangle
+ +
+
+ +

◆ contains() [3/3]

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
bool ncine::Rect< T >::contains (px,
py 
) const
+
+inline
+
+
Returns
True if the point is inside this rectangle
+ +
+
+ +

◆ overlaps()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
bool ncine::Rect< T >::overlaps (const Rect< T > & rect) const
+
+inline
+
+
Returns
True if this rect does overlap the other rectangle in any way
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classncine_1_1_rect_animation-members.html b/master/classncine_1_1_rect_animation-members.html new file mode 100644 index 0000000000..300079bf9a --- /dev/null +++ b/master/classncine_1_1_rect_animation-members.html @@ -0,0 +1,113 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::RectAnimation Member List
+
+
+ +

This is the complete list of members for ncine::RectAnimation, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addRect(const Recti &rect, float frameDuration)ncine::RectAnimation
addRect(int x, int y, int w, int h, float frameDuration)ncine::RectAnimation
addRect(const Recti &rect)ncine::RectAnimationinline
addRect(int x, int y, int w, int h)ncine::RectAnimationinline
addRects(const Vector2i &size, const Recti &srcRect, unsigned int rectsToSkip, const Vector2i &padding, float frameDuration)ncine::RectAnimation
addRects(const Vector2i &size, const Recti &srcRect, unsigned int rectsToSkip)ncine::RectAnimationinline
addRects(const Vector2i &size, const Recti &srcRect)ncine::RectAnimationinline
defaultFrameDuration() constncine::RectAnimationinline
frame() constncine::RectAnimationinline
frameDuration() constncine::RectAnimationinline
frameDurations()ncine::RectAnimationinline
frameDurations() constncine::RectAnimationinline
isPaused() constncine::RectAnimationinline
loopMode() constncine::RectAnimationinline
LoopMode enum namencine::RectAnimation
numFrames() constncine::RectAnimationinline
rect() constncine::RectAnimationinline
rectangles()ncine::RectAnimationinline
rectangles() constncine::RectAnimationinline
RectAnimation()ncine::RectAnimationinline
RectAnimation(float defaultFrameDuration, LoopMode loopMode, RewindMode rewindMode)ncine::RectAnimation
rewindMode() constncine::RectAnimationinline
RewindMode enum namencine::RectAnimation
setDefaultFrameDuration(float defaultFrameDuration)ncine::RectAnimationinline
setFrame(unsigned int frameNum)ncine::RectAnimation
setLoopMode(LoopMode loopMode)ncine::RectAnimationinline
setPaused(bool isPaused)ncine::RectAnimationinline
setRewindMode(RewindMode rewindMode)ncine::RectAnimationinline
updateFrame(float interval)ncine::RectAnimation
+ + + + diff --git a/master/classncine_1_1_rect_animation.html b/master/classncine_1_1_rect_animation.html new file mode 100644 index 0000000000..d400b2d213 --- /dev/null +++ b/master/classncine_1_1_rect_animation.html @@ -0,0 +1,383 @@ + + + + + + + +nCine: ncine::RectAnimation Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::RectAnimation Class Reference
+
+
+ +

The class containing data for a rectangles based animation. + More...

+ +

#include <RectAnimation.h>

+ + + + + + + + +

+Public Types

enum class  LoopMode { DISABLED +, ENABLED + }
 Loop modes.
 
enum class  RewindMode { FROM_START +, BACKWARD + }
 Rewind modes. More...
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

RectAnimation ()
 Default constructor.
 
RectAnimation (float defaultFrameDuration, LoopMode loopMode, RewindMode rewindMode)
 Constructor for an animation with a specified default frame duration, loop and rewind mode.
 
+bool isPaused () const
 Returns true if the animation is paused.
 
+void setPaused (bool isPaused)
 Sets the pause flag.
 
+void updateFrame (float interval)
 Updates current frame based on time passed.
 
+unsigned int numFrames () const
 Returns the number of frames (rectangles)
 
+unsigned int frame () const
 Returns current frame.
 
+void setFrame (unsigned int frameNum)
 Sets current frame.
 
+float defaultFrameDuration () const
 Returns the default frame duration in seconds.
 
+void setDefaultFrameDuration (float defaultFrameDuration)
 Sets the default frame duration in seconds.
 
+LoopMode loopMode () const
 Returns the loop mode.
 
+void setLoopMode (LoopMode loopMode)
 Sets the loop mode.
 
+RewindMode rewindMode () const
 Returns the rewind mode.
 
+void setRewindMode (RewindMode rewindMode)
 Sets the rewind mode.
 
+void addRect (const Recti &rect, float frameDuration)
 Adds a rectangle to the array specifying the frame duration.
 
+void addRect (int x, int y, int w, int h, float frameDuration)
 Creates a rectangle from origin and size and then adds it to the array, specifying the frame duration.
 
+void addRect (const Recti &rect)
 Adds a rectangle to the array with the default frame duration.
 
+void addRect (int x, int y, int w, int h)
 Creates a rectangle from origin and size and then adds it to the array, with the default frame duration.
 
unsigned int addRects (const Vector2i &size, const Recti &srcRect, unsigned int rectsToSkip, const Vector2i &padding, float frameDuration)
 Adds rectangles to the array specifying their size, the source rectangle, a number of rectangles to skip, a padding, and the frame duration. More...
 
unsigned int addRects (const Vector2i &size, const Recti &srcRect, unsigned int rectsToSkip)
 Adds rectangles to the array specifying their size, the source rectangle, and a number of rectangles to skip. More...
 
unsigned int addRects (const Vector2i &size, const Recti &srcRect)
 Adds rectangles to the array specifying their size and the source rectangle. More...
 
+const Rectirect () const
 Returns the current rectangle.
 
+float frameDuration () const
 Returns the current frame duration in seconds.
 
+nctl::Array< Recti > & rectangles ()
 Returns the array of all rectangles.
 
+const nctl::Array< Recti > & rectangles () const
 Returns the constant array of all rectangles.
 
+nctl::Array< float > & frameDurations ()
 Returns the array of all frame durations.
 
+const nctl::Array< float > & frameDurations () const
 Returns the constant array of all frame durations.
 
+

Detailed Description

+

The class containing data for a rectangles based animation.

+

Member Enumeration Documentation

+ +

◆ RewindMode

+ +
+
+ + + + + +
+ + + + +
enum ncine::RectAnimation::RewindMode
+
+strong
+
+ +

Rewind modes.

+ + + +
Enumerator
FROM_START 

When the animation reaches the last frame it begins again from start.

+
BACKWARD 

When the animation reaches the last frame it goes backward.

+
+ +
+
+

Member Function Documentation

+ +

◆ addRects() [1/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
unsigned int ncine::RectAnimation::addRects (const Vector2isize,
const RectisrcRect 
)
+
+inline
+
+ +

Adds rectangles to the array specifying their size and the source rectangle.

+
Returns
The number of rectangles added
+ +
+
+ +

◆ addRects() [2/3]

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
unsigned int ncine::RectAnimation::addRects (const Vector2isize,
const RectisrcRect,
unsigned int rectsToSkip 
)
+
+inline
+
+ +

Adds rectangles to the array specifying their size, the source rectangle, and a number of rectangles to skip.

+
Returns
The number of rectangles added
+ +
+
+ +

◆ addRects() [3/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
unsigned int ncine::RectAnimation::addRects (const Vector2isize,
const RectisrcRect,
unsigned int rectsToSkip,
const Vector2ipadding,
float frameDuration 
)
+
+ +

Adds rectangles to the array specifying their size, the source rectangle, a number of rectangles to skip, a padding, and the frame duration.

+
Returns
The number of rectangles added
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classncine_1_1_render_doc_capture-members.html b/master/classncine_1_1_render_doc_capture-members.html new file mode 100644 index 0000000000..56f2db16f1 --- /dev/null +++ b/master/classncine_1_1_render_doc_capture-members.html @@ -0,0 +1,102 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::RenderDocCapture Member List
+
+
+ +

This is the complete list of members for ncine::RenderDocCapture, including all inherited members.

+ + + + + + + + + + + + + + + + + + + +
apiVersion(int *major, int *minor, int *patch) (defined in ncine::RenderDocCapture)ncine::RenderDocCapturestatic
Application (defined in ncine::RenderDocCapture)ncine::RenderDocCapturefriend
captureFilePathTemplate() (defined in ncine::RenderDocCapture)ncine::RenderDocCapturestatic
captureInfo(uint32_t idx, char *filename, uint32_t *pathlength, uint64_t *timestamp) (defined in ncine::RenderDocCapture)ncine::RenderDocCapturestatic
discardFrameCapture() (defined in ncine::RenderDocCapture)ncine::RenderDocCapturestatic
enableOverlay(bool enabled) (defined in ncine::RenderDocCapture)ncine::RenderDocCapturestatic
endFrameCapture() (defined in ncine::RenderDocCapture)ncine::RenderDocCapturestatic
isAvailable() (defined in ncine::RenderDocCapture)ncine::RenderDocCapturestatic
isFrameCapturing() (defined in ncine::RenderDocCapture)ncine::RenderDocCapturestatic
isOverlayEnabled() (defined in ncine::RenderDocCapture)ncine::RenderDocCapturestatic
isTargetControlConnected() (defined in ncine::RenderDocCapture)ncine::RenderDocCapturestatic
launchReplayUI(uint32_t connectTargetControl, const char *cmdLine) (defined in ncine::RenderDocCapture)ncine::RenderDocCapturestatic
numCaptures() (defined in ncine::RenderDocCapture)ncine::RenderDocCapturestatic
setCaptureFileComments(const char *filePath, const char *comments) (defined in ncine::RenderDocCapture)ncine::RenderDocCapturestatic
setCaptureFilePathTemplate(const char *pathTemplate) (defined in ncine::RenderDocCapture)ncine::RenderDocCapturestatic
triggerCapture() (defined in ncine::RenderDocCapture)ncine::RenderDocCapturestatic
triggerMultiFrameCapture(uint32_t numFrames) (defined in ncine::RenderDocCapture)ncine::RenderDocCapturestatic
unloadCrashHandler() (defined in ncine::RenderDocCapture)ncine::RenderDocCapturestatic
+ + + + diff --git a/master/classncine_1_1_render_doc_capture.html b/master/classncine_1_1_render_doc_capture.html new file mode 100644 index 0000000000..ebf17da845 --- /dev/null +++ b/master/classncine_1_1_render_doc_capture.html @@ -0,0 +1,157 @@ + + + + + + + +nCine: ncine::RenderDocCapture Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::RenderDocCapture Class Reference
+
+
+ +

A class for in-application integration of RenderDoc. + More...

+ +

#include <RenderDocCapture.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Member Functions

+static bool isAvailable ()
 
+static bool isTargetControlConnected ()
 
+static bool isFrameCapturing ()
 
+static void apiVersion (int *major, int *minor, int *patch)
 
+static bool isOverlayEnabled ()
 
+static void enableOverlay (bool enabled)
 
+static void triggerCapture ()
 
+static void triggerMultiFrameCapture (uint32_t numFrames)
 
+static bool endFrameCapture ()
 
+static bool discardFrameCapture ()
 
+static uint32_t numCaptures ()
 
+static uint32_t captureInfo (uint32_t idx, char *filename, uint32_t *pathlength, uint64_t *timestamp)
 
+static const char * captureFilePathTemplate ()
 
+static void setCaptureFilePathTemplate (const char *pathTemplate)
 
+static void setCaptureFileComments (const char *filePath, const char *comments)
 
+static uint32_t launchReplayUI (uint32_t connectTargetControl, const char *cmdLine)
 
+static void unloadCrashHandler ()
 
+ + + +

+Friends

+class Application
 
+

Detailed Description

+

A class for in-application integration of RenderDoc.

+

The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classncine_1_1_rotation_affector-members.html b/master/classncine_1_1_rotation_affector-members.html new file mode 100644 index 0000000000..71a45f3f64 --- /dev/null +++ b/master/classncine_1_1_rotation_affector-members.html @@ -0,0 +1,107 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::RotationAffector Member List
+
+
+ +

This is the complete list of members for ncine::RotationAffector, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + +
addRotationStep(float age, float angle) (defined in ncine::RotationAffector)ncine::RotationAffector
addRotationStep(const RotationStep &step) (defined in ncine::RotationAffector)ncine::RotationAffectorinline
affect(Particle *particle, float normalizedAge) overridencine::RotationAffectorvirtual
ncine::ParticleAffector::affect(Particle *particle)ncine::ParticleAffector
clearSteps() overridencine::RotationAffectorinlinevirtual
clone() constncine::RotationAffectorinline
enabled_ncine::ParticleAffectorprotected
isEnabled() constncine::ParticleAffectorinline
numSteps() const overridencine::RotationAffectorinlinevirtual
operator=(RotationAffector &&)=defaultncine::RotationAffector
ParticleAffector(Type type) (defined in ncine::ParticleAffector)ncine::ParticleAffectorinline
ParticleAffector(const ParticleAffector &other)=defaultncine::ParticleAffectorprotected
removeStep(unsigned int index) overridencine::RotationAffectorvirtual
RotationAffector() (defined in ncine::RotationAffector)ncine::RotationAffectorinline
RotationAffector(RotationAffector &&)=defaultncine::RotationAffector
RotationAffector(const RotationAffector &other)=defaultncine::RotationAffectorprotected
setEnabled(bool enabled)ncine::ParticleAffectorinline
steps() (defined in ncine::RotationAffector)ncine::RotationAffectorinline
steps() const (defined in ncine::RotationAffector)ncine::RotationAffectorinline
type() constncine::ParticleAffectorinline
Type enum name (defined in ncine::ParticleAffector)ncine::ParticleAffector
type_ncine::ParticleAffectorprotected
~ParticleAffector() (defined in ncine::ParticleAffector)ncine::ParticleAffectorinlinevirtual
+ + + + diff --git a/master/classncine_1_1_rotation_affector.html b/master/classncine_1_1_rotation_affector.html new file mode 100644 index 0000000000..2106164453 --- /dev/null +++ b/master/classncine_1_1_rotation_affector.html @@ -0,0 +1,219 @@ + + + + + + + +nCine: ncine::RotationAffector Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::RotationAffector Class Reference
+
+
+ +

Particle rotation affector. + More...

+ +

#include <ParticleAffectors.h>

+
+Inheritance diagram for ncine::RotationAffector:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for ncine::RotationAffector:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + +

+Classes

struct  RotationStep
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

RotationAffector (RotationAffector &&)=default
 Default move constructor.
 
+RotationAffectoroperator= (RotationAffector &&)=default
 Default move assignment operator.
 
+RotationAffector clone () const
 Returns a copy of this object.
 
+void affect (Particle *particle, float normalizedAge) override
 Affects the rotation of the specified particle.
 
+void addRotationStep (float age, float angle)
 
+void addRotationStep (const RotationStep &step)
 
+unsigned int numSteps () const override
 Returns the number of steps.
 
+void removeStep (unsigned int index) override
 Removes the step at the specified position index.
 
+void clearSteps () override
 Removes all steps.
 
+nctl::Array< RotationStep > & steps ()
 
+const nctl::Array< RotationStep > & steps () const
 
- Public Member Functions inherited from ncine::ParticleAffector
ParticleAffector (Type type)
 
+void affect (Particle *particle)
 Affects a property of the specified particle.
 
+Type type () const
 Returns the affector type.
 
+bool isEnabled () const
 Returns true if the affector is enabled.
 
+void setEnabled (bool enabled)
 Enables or disables the affector.
 
+ + + + + + + + +

+Protected Member Functions

RotationAffector (const RotationAffector &other)=default
 Protected default copy constructor used to clone objects.
 
- Protected Member Functions inherited from ncine::ParticleAffector
ParticleAffector (const ParticleAffector &other)=default
 Protected default copy constructor used to clone objects.
 
+ + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ncine::ParticleAffector
enum class  Type {
+  COLOR +, SIZE +, ROTATION +, POSITION +,
+  VELOCITY +
+ }
 
- Protected Attributes inherited from ncine::ParticleAffector
+Type type_
 Affector type.
 
+bool enabled_
 A flag indicating whether the affector is enabled or not.
 
+

Detailed Description

+

Particle rotation affector.

+

The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classncine_1_1_rotation_affector__coll__graph.map b/master/classncine_1_1_rotation_affector__coll__graph.map new file mode 100644 index 0000000000..987c4a3dbf --- /dev/null +++ b/master/classncine_1_1_rotation_affector__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classncine_1_1_rotation_affector__coll__graph.md5 b/master/classncine_1_1_rotation_affector__coll__graph.md5 new file mode 100644 index 0000000000..565d69fc7b --- /dev/null +++ b/master/classncine_1_1_rotation_affector__coll__graph.md5 @@ -0,0 +1 @@ +10adc85385719f0ade237e2cd131e72a \ No newline at end of file diff --git a/master/classncine_1_1_rotation_affector__coll__graph.png b/master/classncine_1_1_rotation_affector__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..79c943f6f0651d82de9f2d8d72b3aa4c8e6d7e7c GIT binary patch literal 3776 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 + + + diff --git a/master/classncine_1_1_rotation_affector__inherit__graph.md5 b/master/classncine_1_1_rotation_affector__inherit__graph.md5 new file mode 100644 index 0000000000..565d69fc7b --- /dev/null +++ b/master/classncine_1_1_rotation_affector__inherit__graph.md5 @@ -0,0 +1 @@ +10adc85385719f0ade237e2cd131e72a \ No newline at end of file diff --git a/master/classncine_1_1_rotation_affector__inherit__graph.png b/master/classncine_1_1_rotation_affector__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..79c943f6f0651d82de9f2d8d72b3aa4c8e6d7e7c GIT binary patch literal 3776 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 + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::SceneNode Member List
+
+
+ +

This is the complete list of members for ncine::SceneNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
AabbBit enum value (defined in ncine::SceneNode)ncine::SceneNodeprotected
absAlpha() constncine::SceneNodeinline
absAnchorPoint() constncine::SceneNodeinline
absColor() constncine::SceneNodeinline
absColor_ncine::SceneNodeprotected
absLayer() constncine::SceneNodeinline
absLayer_ncine::SceneNodeprotected
absPosition() constncine::SceneNodeinline
absPosition_ncine::SceneNodeprotected
absRotation() constncine::SceneNodeinline
absRotation_ncine::SceneNodeprotected
absScale() constncine::SceneNodeinline
absScaleFactor_ncine::SceneNodeprotected
addChildNode(SceneNode *childNode)ncine::SceneNode
alpha() constncine::SceneNodeinline
anchorPoint_ncine::SceneNodeprotected
childOrderIndex() constncine::SceneNode
childOrderIndex_ncine::SceneNodeprotected
children()ncine::SceneNodeinline
children() constncine::SceneNodeinline
children_ncine::SceneNodeprotected
clone() constncine::SceneNodeinline
color() constncine::SceneNodeinline
color_ncine::SceneNodeprotected
ColorBit enum value (defined in ncine::SceneNode)ncine::SceneNodeprotected
deleteChildrenOnDestruction() constncine::SceneNodeinline
DirtyBitPositions enum namencine::SceneNodeprotected
dirtyBits_ncine::SceneNodeprotected
draw(RenderQueue &renderQueue)ncine::SceneNodeinlinevirtual
drawEnabled_ (defined in ncine::SceneNode)ncine::SceneNodeprotected
fromId(unsigned int id)ncine::Objectstatic
id() constncine::Objectinline
isDrawEnabled() constncine::SceneNodeinline
isEnabled() constncine::SceneNodeinline
isUpdateEnabled() constncine::SceneNodeinline
lastFrameUpdated() constncine::SceneNodeinline
lastFrameUpdated_ncine::SceneNodeprotected
layer() constncine::SceneNodeinline
layer_ncine::SceneNodeprotected
localMatrix() constncine::SceneNodeinline
localMatrix_ncine::SceneNodeprotected
MaxNameLengthncine::Objectstatic
MinRotationncine::SceneNodestatic
move(float x, float y)ncine::SceneNodeinline
move(const Vector2f &position)ncine::SceneNodeinline
moveX(float x)ncine::SceneNodeinline
moveY(float y)ncine::SceneNodeinline
name() constncine::Object
Object(ObjectType type)ncine::Objectexplicit
Object(ObjectType type, const char *name)ncine::Object
Object(Object &&other)ncine::Object
Object(const Object &other)ncine::Objectprotected
ObjectType enum namencine::Object
operator=(SceneNode &&other)ncine::SceneNode
operator=(const SceneNode &)=deletencine::SceneNodeprotected
ncine::Object::operator=(Object &&other)ncine::Object
parent() constncine::SceneNodeinline
parent()ncine::SceneNodeinline
parent_ncine::SceneNodeprotected
position() constncine::SceneNodeinline
position_ncine::SceneNodeprotected
removeAllChildrenNodes()ncine::SceneNode
removeChildNode(SceneNode *childNode)ncine::SceneNode
removeChildNodeAt(unsigned int index)ncine::SceneNode
rotation() constncine::SceneNodeinline
rotation_ncine::SceneNodeprotected
scale() constncine::SceneNodeinline
scaleFactor_ncine::SceneNodeprotected
SceneNode(SceneNode *parent, float x, float y)ncine::SceneNode
SceneNode(SceneNode *parent, const Vector2f &position)ncine::SceneNode
SceneNode(SceneNode *parent)ncine::SceneNodeexplicit
SceneNode()ncine::SceneNode
SceneNode(SceneNode &&other)ncine::SceneNode
SceneNode(const SceneNode &other)ncine::SceneNodeprotected
setAbsAnchorPoint(float x, float y)ncine::SceneNodeinline
setAbsAnchorPoint(const Vector2f &point)ncine::SceneNodeinline
setAlpha(unsigned char alpha)ncine::SceneNodeinline
setAlphaF(float alpha)ncine::SceneNodeinline
setColor(Color color)ncine::SceneNodeinline
setColor(Colorf color)ncine::SceneNodeinline
setColor(unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha)ncine::SceneNodeinline
setColorF(float red, float green, float blue, float alpha)ncine::SceneNodeinline
setDeleteChildrenOnDestruction(bool shouldDeleteChildrenOnDestruction)ncine::SceneNodeinline
setDrawEnabled(bool drawEnabled)ncine::SceneNodeinline
setEnabled(bool isEnabled)ncine::SceneNodeinline
setLayer(uint16_t layer)ncine::SceneNodeinline
setLocalMatrix(const Matrix4x4f &localMatrix)ncine::SceneNodeinline
setName(const char *name)ncine::Object
setParent(SceneNode *parentNode)ncine::SceneNode
setPosition(float x, float y)ncine::SceneNodeinline
setPosition(const Vector2f &position)ncine::SceneNodeinline
setPositionX(float x)ncine::SceneNodeinline
setPositionY(float y)ncine::SceneNodeinline
setRotation(float rotation)ncine::SceneNodeinline
setScale(float scaleFactor)ncine::SceneNodeinline
setScale(float scaleFactorX, float scaleFactorY)ncine::SceneNodeinline
setScale(const Vector2f &scaleFactor)ncine::SceneNodeinline
setUpdateEnabled(bool updateEnabled)ncine::SceneNodeinline
setVisitOrderState(enum VisitOrderState visitOrderState)ncine::SceneNodeinline
setWorldMatrix(const Matrix4x4f &worldMatrix)ncine::SceneNodeinline
shouldDeleteChildrenOnDestruction_ncine::SceneNodeprotected
SizeBit enum value (defined in ncine::SceneNode)ncine::SceneNodeprotected
sType() (defined in ncine::SceneNode)ncine::SceneNodeinlinestatic
swapChildPointer(SceneNode *first, SceneNode *second)ncine::SceneNodeprotected
swapChildrenNodes(unsigned int firstIndex, unsigned int secondIndex)ncine::SceneNode
swapNodeBack()ncine::SceneNode
swapNodeForward()ncine::SceneNode
TextureBit enum value (defined in ncine::SceneNode)ncine::SceneNodeprotected
transform() (defined in ncine::SceneNode)ncine::SceneNodeprotectedvirtual
TransformationBit enum value (defined in ncine::SceneNode)ncine::SceneNodeprotected
type() constncine::Objectinline
type_ncine::Objectprotected
unlinkChildNode(SceneNode *childNode)ncine::SceneNode
update(float interval)ncine::SceneNodevirtual
updateEnabled_ (defined in ncine::SceneNode)ncine::SceneNodeprotected
visit(RenderQueue &renderQueue, unsigned int &visitOrderIndex)ncine::SceneNodevirtual
visitOrderIndex() constncine::SceneNodeinline
visitOrderIndex_ncine::SceneNodeprotected
VisitOrderState enum name (defined in ncine::SceneNode)ncine::SceneNode
visitOrderState() constncine::SceneNodeinline
visitOrderState_ncine::SceneNodeprotected
withVisitOrder_ncine::SceneNodeprotected
worldMatrix() constncine::SceneNodeinline
worldMatrix_ncine::SceneNodeprotected
~Object()ncine::Objectvirtual
~SceneNode() overridencine::SceneNode
+ + + + diff --git a/master/classncine_1_1_scene_node.html b/master/classncine_1_1_scene_node.html new file mode 100644 index 0000000000..ebfa63a33d --- /dev/null +++ b/master/classncine_1_1_scene_node.html @@ -0,0 +1,1226 @@ + + + + + + + +nCine: ncine::SceneNode Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

The base class for the transformation nodes hierarchy. + More...

+ +

#include <SceneNode.h>

+
+Inheritance diagram for ncine::SceneNode:
+
+
Inheritance graph
+ + + + + + + + + + + + +
[legend]
+
+Collaboration diagram for ncine::SceneNode:
+
+
Collaboration graph
+ + + + + + + + + +
[legend]
+ + + + + + + + +

+Public Types

enum class  VisitOrderState { ENABLED +, DISABLED +, SAME_AS_PARENT + }
 
- Public Types inherited from ncine::Object
enum class  ObjectType {
+  BASE = 0 +, TEXTURE +, SHADER +, SCENENODE +,
+  SPRITE +, MESH_SPRITE +, ANIMATED_SPRITE +, PARTICLE +,
+  PARTICLE_SYSTEM +, FONT +, TEXTNODE +, AUDIOBUFFER +,
+  AUDIOBUFFER_PLAYER +, AUDIOSTREAM_PLAYER +
+ }
 Object types.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

 SceneNode (SceneNode *parent, float x, float y)
 Constructor for a node with a parent and a specified relative position. More...
 
 SceneNode (SceneNode *parent, const Vector2f &position)
 Constructor for a node with a parent and a specified relative position as a vector. More...
 
 SceneNode (SceneNode *parent)
 Constructor for a node with a parent and positioned in the relative origin. More...
 
SceneNode ()
 Constructor for a node with no parent and positioned in the origin.
 
~SceneNode () override
 The destructor will delete every child node.
 
SceneNode (SceneNode &&other)
 Move constructor.
 
+SceneNodeoperator= (SceneNode &&other)
 Move assignment operator.
 
+SceneNode clone () const
 Returns a copy of this object.
 
+const SceneNodeparent () const
 Returns the parent as a constant node, if there is any.
 
+SceneNodeparent ()
 Returns the parent node, if there is any.
 
bool setParent (SceneNode *parentNode)
 Sets the parent node. More...
 
+const nctl::Array< SceneNode * > & children ()
 Returns the array of child nodes.
 
+const nctl::Array< const SceneNode * > & children () const
 Returns an array of constant child nodes.
 
bool addChildNode (SceneNode *childNode)
 Adds a node as a child of this one. More...
 
bool removeChildNode (SceneNode *childNode)
 Removes a child of this node, without reparenting nephews. More...
 
bool removeChildNodeAt (unsigned int index)
 Removes the child at the specified index, without reparenting nephews. More...
 
bool removeAllChildrenNodes ()
 Removes all children, without reparenting nephews. More...
 
bool unlinkChildNode (SceneNode *childNode)
 Removes a child of this node reparenting nephews as children. More...
 
unsigned int childOrderIndex () const
 Returns the child order index of this node or zero if it does not have a parent. More...
 
bool swapChildrenNodes (unsigned int firstIndex, unsigned int secondIndex)
 Swaps two children at the specified indices. More...
 
bool swapNodeForward ()
 Brings this node one node forward in the parent's list of children. More...
 
bool swapNodeBack ()
 Brings this node one node back in the parent's list of children. More...
 
+enum VisitOrderState visitOrderState () const
 Returns true if the node visit order is used together with the layer.
 
+void setVisitOrderState (enum VisitOrderState visitOrderState)
 Enables the use of the node visit order together with the layer.
 
+uint16_t visitOrderIndex () const
 Returns the visit drawing order of the node.
 
+virtual void update (float interval)
 Called once every frame to update the node.
 
+virtual void visit (RenderQueue &renderQueue, unsigned int &visitOrderIndex)
 Draws the node and visits its children.
 
+virtual bool draw (RenderQueue &renderQueue)
 Renders the node.
 
+bool isUpdateEnabled () const
 Returns true if the node is updating.
 
+void setUpdateEnabled (bool updateEnabled)
 Enables or disables node updating.
 
+bool isDrawEnabled () const
 Returns true if the node is drawing.
 
+void setDrawEnabled (bool drawEnabled)
 Enables or disables node drawing.
 
+bool isEnabled () const
 Returns true if the node is both updating and drawing.
 
+void setEnabled (bool isEnabled)
 Enables or disables both node updating and drawing.
 
+Vector2f position () const
 Returns node position relative to its parent.
 
+Vector2f absPosition () const
 Returns absolute node position.
 
+void setPosition (float x, float y)
 Sets the node position through two coordinates.
 
+void setPosition (const Vector2f &position)
 Sets the node position through a vector.
 
+void setPositionX (float x)
 Sets the X coordinate of the node position.
 
+void setPositionY (float y)
 Sets the Y coordinate of the node position.
 
+void move (float x, float y)
 Moves the node based on two offsets.
 
+void move (const Vector2f &position)
 Adds a move vector to the node current position.
 
+void moveX (float x)
 Moves the node by an offset on the X axis.
 
+void moveY (float y)
 Moves the node by an offset on the Y axis.
 
+Vector2f absAnchorPoint () const
 Gets the absolute transformation anchor point in pixels.
 
+void setAbsAnchorPoint (float x, float y)
 Sets the absolute transformation anchor point in pixels.
 
+void setAbsAnchorPoint (const Vector2f &point)
 Sets the absolute transformation anchor point in pixels with a Vector2f
 
+const Vector2fscale () const
 Gets the node scale factors.
 
+const Vector2fabsScale () const
 Gets the node absolute scale factors.
 
+void setScale (float scaleFactor)
 Scales the node size both horizontally and vertically.
 
+void setScale (float scaleFactorX, float scaleFactorY)
 Scales the node size both horizontally and vertically.
 
+void setScale (const Vector2f &scaleFactor)
 Scales the node size both horizontally and vertically with a Vector2f
 
+float rotation () const
 Gets the node rotation in degrees.
 
+float absRotation () const
 Gets the node absolute rotation in degrees.
 
+void setRotation (float rotation)
 Sets the node rotation in degrees.
 
+Color color () const
 Gets the node color.
 
+Color absColor () const
 Gets the node absolute color.
 
+void setColor (Color color)
 Sets the node color through a Color object.
 
+void setColor (Colorf color)
 Sets the node color through a Colorf object.
 
+void setColor (unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha)
 Sets the node color through unsigned char components.
 
+void setColorF (float red, float green, float blue, float alpha)
 Sets the node color through float components.
 
+float alpha () const
 Gets the node alpha.
 
+float absAlpha () const
 Gets the node absolute alpha.
 
+void setAlpha (unsigned char alpha)
 Sets the node alpha through an unsigned char component.
 
+void setAlphaF (float alpha)
 Sets the node alpha through a float component.
 
+uint16_t layer () const
 Gets the node rendering layer.
 
uint16_t absLayer () const
 Gets the node absolute rendering layer. More...
 
void setLayer (uint16_t layer)
 Sets the node rendering layer. More...
 
+const Matrix4x4fworldMatrix () const
 Gets the node world matrix.
 
+void setWorldMatrix (const Matrix4x4f &worldMatrix)
 Sets the node world matrix (only useful when called inside onPostUpdate())
 
+const Matrix4x4flocalMatrix () const
 Gets the node local matrix.
 
+void setLocalMatrix (const Matrix4x4f &localMatrix)
 Sets the node local matrix.
 
bool deleteChildrenOnDestruction () const
 Gets the delete children on destruction flag. More...
 
+void setDeleteChildrenOnDestruction (bool shouldDeleteChildrenOnDestruction)
 Sets the delete children on destruction flag.
 
+unsigned long int lastFrameUpdated () const
 Returns the last frame in which any of the viewports have updated this node.
 
- Public Member Functions inherited from ncine::Object
Object (ObjectType type)
 Constructs an object with a specified type and adds it to the index.
 
Object (ObjectType type, const char *name)
 Constructs an object with a specified type and name and adds it to the index.
 
+virtual ~Object ()
 Removes an object from the index and then destroys it.
 
Object (Object &&other)
 Move constructor.
 
+Objectoperator= (Object &&other)
 Move assignment operator.
 
+unsigned int id () const
 Returns the object identification number.
 
+ObjectType type () const
 Returns the object type (RTTI)
 
+const char * name () const
 Returns the object name.
 
+void setName (const char *name)
 Sets the object name.
 
+ + + + + + + + + + + +

+Static Public Member Functions

+static ObjectType sType ()
 
- Static Public Member Functions inherited from ncine::Object
+static ObjectType sType ()
 Static method to return class type.
 
+template<class T >
static T * fromId (unsigned int id)
 Returns a casted pointer to the object with the specified id, if any exists.
 
+ + + + + + + + +

+Static Public Attributes

+static const float MinRotation = 0.5f
 The minimum amount of rotation to trigger a sine and cosine calculation.
 
- Static Public Attributes inherited from ncine::Object
+static const unsigned int MaxNameLength = 128
 Maximum length for an object name.
 
+ + + + +

+Protected Types

enum  DirtyBitPositions {
+  TransformationBit = 0 +, ColorBit = 1 +, SizeBit = 2 +, TextureBit = 3 +,
+  AabbBit = 4 +
+ }
 Bit positions inside the dirty bitset.
 
+ + + + + + + + + + + + + + + + +

+Protected Member Functions

+SceneNodeoperator= (const SceneNode &)=delete
 Deleted assignment operator.
 
SceneNode (const SceneNode &other)
 Protected copy constructor used to clone objects.
 
void swapChildPointer (SceneNode *first, SceneNode *second)
 Swaps the child pointer of a parent when moving an object. More...
 
+virtual void transform ()
 
- Protected Member Functions inherited from ncine::Object
Object (const Object &other)
 Protected copy constructor used to clone objects.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+bool updateEnabled_
 
+bool drawEnabled_
 
+SceneNodeparent_
 A pointer to the parent node.
 
+nctl::Array< SceneNode * > children_
 The array of child nodes.
 
unsigned int childOrderIndex_
 The order index of this node among its siblings. More...
 
bool withVisitOrder_
 When enabled the visit order is used to resolve the drawing order of same layer nodes. More...
 
+enum VisitOrderState visitOrderState_
 The visit order state of this node.
 
+uint16_t visitOrderIndex_
 The visit order index of this node.
 
+Vector2f position_
 The node relative position.
 
Vector2f anchorPoint_
 
+Vector2f scaleFactor_
 Horizontal and vertical scale factors for node size.
 
+float rotation_
 Degrees for clock-wise node rotation in degrees.
 
Color color_
 Node color for transparency and translucency. More...
 
uint16_t layer_
 The node rendering layer. More...
 
+Vector2f absPosition_
 Absolute position as calculated by the transform() function.
 
+Vector2f absScaleFactor_
 Absolute horizontal and vertical scale factors as calculated by the transform() function.
 
+float absRotation_
 Absolute node rotation as calculated by the transform() function.
 
+Color absColor_
 Absolute node color as calculated by the transform() function.
 
+uint16_t absLayer_
 Absolute node rendering layer as calculated by the transform() function.
 
+Matrix4x4f worldMatrix_
 World transformation matrix (calculated from local and parent's world)
 
+Matrix4x4f localMatrix_
 Local transformation matrix.
 
+bool shouldDeleteChildrenOnDestruction_
 A flag indicating whether the destructor should also delete all children.
 
+nctl::BitSet< uint8_t > dirtyBits_
 Bitset that stores the various dirty states bits.
 
+unsigned long int lastFrameUpdated_
 The last frame any viewport updated this node.
 
- Protected Attributes inherited from ncine::Object
+ObjectType type_
 Object type.
 
+

Detailed Description

+

The base class for the transformation nodes hierarchy.

+

Constructor & Destructor Documentation

+ +

◆ SceneNode() [1/3]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ncine::SceneNode::SceneNode (SceneNodeparent,
float x,
float y 
)
+
+ +

Constructor for a node with a parent and a specified relative position.

+
Parameters
+ + +
parentThe parent can be nullptr
+
+
+ +
+
+ +

◆ SceneNode() [2/3]

+ +
+
+ + + + + + + + + + + + + + + + + + +
ncine::SceneNode::SceneNode (SceneNodeparent,
const Vector2fposition 
)
+
+ +

Constructor for a node with a parent and a specified relative position as a vector.

+
Parameters
+ + +
parentThe parent can be nullptr
+
+
+ +
+
+ +

◆ SceneNode() [3/3]

+ +
+
+ + + + + +
+ + + + + + + + +
ncine::SceneNode::SceneNode (SceneNodeparent)
+
+explicit
+
+ +

Constructor for a node with a parent and positioned in the relative origin.

+
Parameters
+ + +
parentThe parent can be nullptr
+
+
+ +
+
+

Member Function Documentation

+ +

◆ absLayer()

+ +
+
+ + + + + +
+ + + + + + + +
uint16_t ncine::SceneNode::absLayer () const
+
+inline
+
+ +

Gets the node absolute rendering layer.

+
Note
The final layer value is inherited from the parent if the node layer is 0.
+ +
+
+ +

◆ addChildNode()

+ +
+
+ + + + + + + + +
bool ncine::SceneNode::addChildNode (SceneNodechildNode)
+
+ +

Adds a node as a child of this one.

+
Returns
True if the node has been added
+ +
+
+ +

◆ childOrderIndex()

+ +
+
+ + + + + + + +
unsigned int ncine::SceneNode::childOrderIndex () const
+
+ +

Returns the child order index of this node or zero if it does not have a parent.

+
Returns
If the node has no parent then 0 is returned
+ +
+
+ +

◆ deleteChildrenOnDestruction()

+ +
+
+ + + + + +
+ + + + + + + +
bool ncine::SceneNode::deleteChildrenOnDestruction () const
+
+inline
+
+ +

Gets the delete children on destruction flag.

+

If the flag is true the children are deleted upon node destruction.

+ +
+
+ +

◆ removeAllChildrenNodes()

+ +
+
+ + + + + + + +
bool ncine::SceneNode::removeAllChildrenNodes ()
+
+ +

Removes all children, without reparenting nephews.

+
Returns
True if there were at least one node to remove
+ +
+
+ +

◆ removeChildNode()

+ +
+
+ + + + + + + + +
bool ncine::SceneNode::removeChildNode (SceneNodechildNode)
+
+ +

Removes a child of this node, without reparenting nephews.

+
Returns
True if the node has been removed
+ +
+
+ +

◆ removeChildNodeAt()

+ +
+
+ + + + + + + + +
bool ncine::SceneNode::removeChildNodeAt (unsigned int index)
+
+ +

Removes the child at the specified index, without reparenting nephews.

+
Returns
True if the node has been removed
+ +
+
+ +

◆ setLayer()

+ +
+
+ + + + + +
+ + + + + + + + +
void ncine::SceneNode::setLayer (uint16_t layer)
+
+inline
+
+ +

Sets the node rendering layer.

+
Note
The lowest value (bottom) is 0 and the highest one (top) is 65535. When the value is 0, the final layer value is inherited from the parent.
+ +
+
+ +

◆ setParent()

+ +
+
+ + + + + + + + +
bool ncine::SceneNode::setParent (SceneNodeparentNode)
+
+ +

Sets the parent node.

+
Returns
True if the parent has been set
+ +
+
+ +

◆ swapChildPointer()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void ncine::SceneNode::swapChildPointer (SceneNodefirst,
SceneNodesecond 
)
+
+protected
+
+ +

Swaps the child pointer of a parent when moving an object.

+
Note
It is faster than calling setParent() on the first child and removeChildNode() on the second one
+ +
+
+ +

◆ swapChildrenNodes()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool ncine::SceneNode::swapChildrenNodes (unsigned int firstIndex,
unsigned int secondIndex 
)
+
+ +

Swaps two children at the specified indices.

+
Returns
True if the two nodes have been swapped
+ +
+
+ +

◆ swapNodeBack()

+ +
+
+ + + + + + + +
bool ncine::SceneNode::swapNodeBack ()
+
+ +

Brings this node one node back in the parent's list of children.

+
Returns
True if the node has been brought one position back
+ +
+
+ +

◆ swapNodeForward()

+ +
+
+ + + + + + + +
bool ncine::SceneNode::swapNodeForward ()
+
+ +

Brings this node one node forward in the parent's list of children.

+
Returns
True if the node has been brought one position forward
+ +
+
+ +

◆ unlinkChildNode()

+ +
+
+ + + + + + + + +
bool ncine::SceneNode::unlinkChildNode (SceneNodechildNode)
+
+ +

Removes a child of this node reparenting nephews as children.

+
Returns
True if the node has been unlinked
+ +
+
+

Member Data Documentation

+ +

◆ anchorPoint_

+ +
+
+ + + + + +
+ + + + +
Vector2f ncine::SceneNode::anchorPoint_
+
+protected
+
+

The anchor point for transformations, in pixels

Note
The default point is the center
+ +
+
+ +

◆ childOrderIndex_

+ +
+
+ + + + + +
+ + + + +
unsigned int ncine::SceneNode::childOrderIndex_
+
+protected
+
+ +

The order index of this node among its siblings.

+
Note
The index is cached here to make siblings reordering methods faster
+ +
+
+ +

◆ color_

+ +
+
+ + + + + +
+ + + + +
Color ncine::SceneNode::color_
+
+protected
+
+ +

Node color for transparency and translucency.

+

Even if the base scene node is not always drawable, it carries color information to easily pass that information to its children.

+ +
+
+ +

◆ layer_

+ +
+
+ + + + + +
+ + + + +
uint16_t ncine::SceneNode::layer_
+
+protected
+
+ +

The node rendering layer.

+

Even if the base scene node is not always drawable, it carries layer information to easily pass that information to its children.

+ +
+
+ +

◆ withVisitOrder_

+ +
+
+ + + + + +
+ + + + +
bool ncine::SceneNode::withVisitOrder_
+
+protected
+
+ +

When enabled the visit order is used to resolve the drawing order of same layer nodes.

+
Note
This flag cannot be changed by the user, it is derived from the parent and this node states
+ +
+
+
The documentation for this class was generated from the following files:
    +
  • include/ncine/SceneNode.h
  • +
  • src/graphics/SceneNode.cpp
  • +
+
+ + + + diff --git a/master/classncine_1_1_scene_node__coll__graph.map b/master/classncine_1_1_scene_node__coll__graph.map new file mode 100644 index 0000000000..69faebc301 --- /dev/null +++ b/master/classncine_1_1_scene_node__coll__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/master/classncine_1_1_scene_node__coll__graph.md5 b/master/classncine_1_1_scene_node__coll__graph.md5 new file mode 100644 index 0000000000..2aa14d7dc8 --- /dev/null +++ b/master/classncine_1_1_scene_node__coll__graph.md5 @@ -0,0 +1 @@ +786643970b813a943a8864d433be179e \ No newline at end of file diff --git a/master/classncine_1_1_scene_node__coll__graph.png b/master/classncine_1_1_scene_node__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..4f6f0f8637df2be11c85f1cb62ae5d00b447987a GIT binary patch literal 38649 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 d3&X|F#E~;?rQ~l3Utb3C + + + + + + + + + + + diff --git a/master/classncine_1_1_scene_node__inherit__graph.md5 b/master/classncine_1_1_scene_node__inherit__graph.md5 new file mode 100644 index 0000000000..c7d69d7827 --- /dev/null +++ b/master/classncine_1_1_scene_node__inherit__graph.md5 @@ -0,0 +1 @@ +0b660a5713392b6c839d4f39c5b01260 \ No newline at end of file diff --git a/master/classncine_1_1_scene_node__inherit__graph.png b/master/classncine_1_1_scene_node__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..041aec6ca082736c7178b248742a0f63f5e25714 GIT binary patch literal 23361 zcmdqJbySwyxA%S1NVkM^N{6(7ASED3r-TR!NJ@i%gmj6Zv?54IN_PrKh)7C@fHX+= zJMaBF@x13b&lu+!?|<*uV~@Ro`@XJqt(a@h&-c5o@CWKj_&C%!2m}KEp0d0a0)es% z|E6MN!f%Ej=F7r=FdwNZ$s?|i|GaO^O+X+R5clL|bv)BHrhQEMj~20Z##Yj_>oROL zS#tQ_Zkv2kw4Zo{_l;F0p5(bPqvf-qiT>qYertnZ?hhT~Pw{A~lKaL@M4o@k!HqX| zjh9&2J8K^}Q5n4O{Vv{^5vvqiv?soD;q^lL#s1o!c;?;-b{0nj0}~TdBXfcTf|!_C zmryk=EKFIWtRp-uY@h63KiteFxFcV;x;G%x)f$AA6C;~=%WX}^)7x8xHmD-XXF*=4 zI0%c7Nmy8SjZ)`Ys))UuqT;Jz0cF%FQuZwNzdJj3TwJ~k3*?~&GAPr&WNDLfhC51q zC1Gb``l-$RA3u0UsHaOXGBV1pQOYkp3MY+M-`Uw|=}F|uiP5w=O-aQ=gXXx(+1he; zMp1nn@uCxRLNxjuz0%4L&d%4jOoQd4)wq1(%l#6&4lEudhd{ zzU8&~G>|NW#baE>edMD_2EF=Hz_N3$olqt?A%XOny*)8Cbp)$wlKE(%VNU1iN~ZtZ z(h^3FR`~aH$;FnJXel?&;|{{O5`60kRitb$xwr zFZU$}ZEQRXe)Wopg#|r}0~H}BC+D>PM>9J+d#)`6*XjB5_L)YX&%%07pK^T9kcxb9 zcE~6tMQcA%@iH@$e%RJ6gi0e_A|&!UA6y{2ufn4Jl`LC=#nIMuO4p-DkNE9IxgT3w zGx75iNlQz2fBSaRVDih7sxYmj zJK1$^gZC$w%l)ZL2mv7>?FQG?*VuP%`y4*2E!mu?{7gwhW1L?mC@3h8c%-M7WL>9{ zLz1YH<9U9(i}QSIvRVV3!TRyzH= zK>%akQBzZcvnN9k@b1kUou#q(%f$>Ba85}{$^NUugXCjV`jg2r}@2_7}g2{MeC1#-<5jjn#N84ue z>(E%-Cr?&f2IOZ;Ezop0$-NKOa=bPy#ARGB&%MMXB=p4f71r;tEtWhkpmq?D&n8z_ zSKm1}`1)t?qx0JE&ELz*Od=u_lhuwTqXuZ0cy|m8D8HwP2L%SA-jMdC^z-xM;N(Qz z*(aSumu-1#<`+IbZs2=7AKKmB-O`^bTIRlKq?RT|tf{H#Z)PQR*}= z$8A)BP5)wFGk+z9Mw9^A94DuiI=A(>*RQk0Sox?tovGGXeG^UZF|ax^0m-4 z&#$zl!o%o@iHH!0267vWsp)9}ufLCBva2M)VqjrqwfOVn!)q%B8z+slu)LIFliI+F ziV8vYCSn_0Xn!8H-^GFc?X!(?%3Du~;BIVgHwtpew6GYMekx7ZxwS((A(9>3IQm~B z-G7F?HFCd#B)n@H&zQ5=d;0o1I-_YI4B5$Rc9b-mhP>6c%>PIR7 zZCrH&1JUmvzE2B{UJJQ6yHar2l0vkM7Wrq@7_d4sWu;h#lWI1WTJ>sjkP-SVk&{ie zH@&!0fk#|6Sdf3b6A__OYT0$|&70ffXGy(Q;|(Wa9rREYt2752y zR+1hWcl`X~ga6}?sg5ys*hp2R^h^rdiXZx`z6r~7FYO5Lem`BS9hT`Q5%QYEEx*f3 z(0p%MhDAj|M-q9zA6i;5vPF7ty-adQ%KWcvrs@*;WI3}YS|OYVRoM&?W49&b=4Rg* zGo{Qj>O}t1ZFAz`4T(3Hi3R7l+65y_BK8u6OFHtEp~x1lPddgXiGSGC%;H$snUAb- zS*oJYCLW=Ko~0`6PrV9I(LKD_Q3_|;*{t@rxk;?Kx$v+rtefFsqc>KyM;2W+h%*aazsIIrv!K%<)!zGrvXKSdFjOhhfbyTMWWnQexuOn{avJ z_zc)&{(tg=ESZAl8j-xt87eAjsm%~uzU3dX+9?u6#c1d48N>XKf6}tES@38jbYO>8 zz{y7=(ww$|6$+ouj**qv`WP$yS^`xU7Jhetu2d7Xxh<$(WfhEU*8X5FnSy zeh0*u!A2hs2vaJwA+G4iZArn?Qw)L#TvMlHXTz1LfV?+}XK3wQP)MlE_rxXbwigL2 zD=RWK1O^2Sez=QOw9GLOMJ42Pykp^e`0I)1e8}}%v9a_rbW+~?cg)S-2d{R=As6`m z&q>E-d~I#*LW45Yd-v{PV`I0R9<1lY1-RX8sC(e$o@wj>3wF1%rXHHQ#l)zs{^P669dRIKzV zb~LpxDx#*o-mbHl!%ktZ*v1|4XDFBOaCY40J&V9?a8Z#``ChawP=e(Liv@dqeMcjI!7n-7Y%o8wC6L;*f^S z*Y?js{->+CVm^o5$TR?-M&!NQ`sgvFXrF~g{jbi<9$Q&i3}z{e*Eln$rKJ(k(nj}~ zT$`AfppJ=&IX+!4*&UF%n!CI>v&z`3C`?TDxL-~~Lu0uyUS`nfEev~R@52~EnR6mY zZwzW(Sd;k7V$#xX_`)qyR_XoE1)`#(%N(X9`ZArC=UgtGIAn@p=P0Fud9v=lVn9sL`JRL7(v>wQa_PaQ>fDSxf zdTWN5%Qxf_+D@_d&x6dZw7mQ-WG~5X&zE}0Z%Df1X@63CSyaTcv9ZB#^ONOB=fw08v?8v;Q_PCgHRjr;Z( zwywOyvH&cFlNw09YU=9r#N69o;S*C)U7KtDu=lXueLjd#x&?ANf@HPBjzaxnllR8P&Hh(f1C8#R)W2QCsYM+My$WrHJ|XDHTs1X`)zs8fmONd(IO}gb z9*1bFb2FMo^p#OjC$v`BN;{zpcKXpGW0>=HY5jeDc+kmh&@kt}zwb31PS|Pm84Y>q z9~>a}?YF!SOI?8G1-TkeNSBEmgk8VDab63_?Pr3JMCxN3;IK zFtrvI9w7+TAL9}bj5aI}Zo?XiNfvst0C`M}&k-*q%VqYHB9EUu`Di~`rO|Jc>@{}l zY_T(zJ~q?uG+*bMsLfAwS_#*dEQQEhj{3eQOK<;7RB}P0JU=%Vu#(|JVCK7vfm}UY z`o-p7Bgln&WM73M%MKezCc>hlzd{6gU|@jl=;#<68mezs=rQ}^`tI)TI{`~fhv_({TNV_~&-cjvW@i98!8f?TTQ6+Vp<#D+W_PDsQS(miHgrluN)7}^PLuQfEmfKZA# znJ1ss`|q@38PvJnH1)r5!ww9%Zt95w`Fzf&flL|t*4EaP@}aAXqgf-v(8rYM@woyd zRM`Omh~K||BeVTC5;&_hThsN-H*a3M8%mHUful?Of4BXZZiI9PT)?8nJQCl{ViKBa zw8O78!JtX~Y?Pd9#M54B*KhvlH6d=~yhKIIzKRN#0i*~-KyXoT6 z_dtgwG(Mi%!Qoe2FO3aP5d43xy6|0fbs+;IiVqg;a^n*eZQ}+xm3VH*#oM1EoFIXz zi&iqOC@-;kyo>j2(j9Ns&xb5Ix%$WZm#7K~gogoRg-PgwW3oC-D8v{TSL*iyd>(<5PF}#ZJA~kF!rh;CipU z4W{nhYi1VOqlk)Ls_}2$V6>GbGPke@M8mSqvbc+T?X~pIw1@vfwCHG7gIPMa>rWBb z@$W%Kg<&?UAm+?Os;KBfc3tM8(MlH4bnb$VN$5VL)y9sCAN}?6A~!R|kO;kd2^F>$ z?cAnUHbbXR1sF%JpNCNq-)rkuj-e7dl_Ltq!8Q31*E(4rtxhI}=t~tPQ&hx(_A(LDLCbr2`z;8Cmw$K5z0{sql3_*08yY=l z;LVkt4iP#8W^>n#?pO!SX=H7ZjgI2Enxpsh#~qZ~hW!$j5IIbbqh)M@!#IxVglmBT zA-JK5XI-Ikj6p?3;wB~)N8;`UnGkMRlA-g1LyFqYPb38%1+xct%{)%}_Sm4}sb_MR zTgb-gTalRr$Kq+}>b<TS6+ z2{*&Fn#bnH;?7JzQ?jy18jfZ}4VtCNKPve^AjeD+7vPp@#`g0wdjyxLuo;ri%GN#l zdcEFxMV&G0Bi5T__X}^jw)Qc|UH6W+{V#~ghIIpjABRC_W|JElR`a`WP-o{nY;Ox` zpIaQ74+!Jts{e~4R$=Lg;xX8GzA{L%5}*6 z*v;W+s~HL(?^|}(LF8O*u9q*i>MHEU?x|%o(0%`26&8&jl#oy~9IqU^3s|K<2vT8O zij9su&CfqR>r48cZT|LtIEUDoup6-GiV@Y+%2J$d!rdLx$jy$C_x^|7usck3-<6j~ zC7@MlXV1h_bSj;nnr#pvBTqD6?(0`pyB)lDZi(Co1}c+n6FkF`7FE?hy=6QOU_T&ybZR(mq*_Pr*k= zz{Mq$&%D||$}TA2FhxDpT+$Xn&OE<7YOf)*cmkrSH346b5q-UzF*Ww z-_w%xG;^{Vm*4pjs^8_wtr@>bEMnpk725E91hP>ZQ?+)KLTm)04! zX=I6DO5!=Y_I%kl76nbhVy5BFyJRX=+DKPQDyXj0Dp5$W<6nVPtCx7ju=$kQfHJ(_u1~T*?e9w26YUr8#nIrS416u=D zE)gYFqW`ShKPym&wfWMUVt#(Nv`VDCC-LLXM)~bwg`w-_T7*@v++gX4km2}0 zSG1BzFUu?!86sLD$SpiCy-X*nq@mo>q&nInw?xh>l~daJd8wVP`U}r-J*?@5^%!{NzRyEludgh9vC3=najN%CzAbayeR-gINy^YMib^|F=)oqVNkZ z>CUX-Lcp{+-)X-muULF{Z#kNXhUS%Ze@46niSEw~sVnopzulfr3}cp+SsYw8Z609A zJW`bBxTy)rbhYLFpAky_Ij?7v6yH$Cgrt0`+P9`1TgMGzW*VHL>ov%`LDe)mdr z=9rp-f(<#9s_awYA#A^Wy6-=?S)DLgW+~)*pv$qbnW&|dC4o%84&pc>3~K*ALC1Iz z@;yCu@oYQyOACHfbF*ZXeWbj*JFoXaN~oDXa&8x(K|CyYvNh8fny*c|+fK;7b2urD zO}LFBJJ;2PH!@v+#BXoJ8Ay#Sv_>FuctDYG17;Mt_6;JtxKpGkn6s}HoYI;U!9Eq{H<8(e{Fnk4l=M<)&JHMDZbLvuAzFt1{8SypF5d>ioKymQ6uK^k8f8oPpuLgEXsU|B?yj z!-u49--a4Tg@=vP%-vlCYNLbov78t=2{rvH{TD#=8(aLRbm%D;+#SMtvsDcivaf4t zYYSNSQ5N-=Xk8}orCY7qlkaIrpbiD5xus=L(~GkOpt1Rh zWxd7}4?9TMy#u?umBX^arlw4wzD5Js`Z70{z3SO7CbtR+D?7W$)uG(GIa>EB=mBQkB?j0+EAgiRq*zf_@tg50Tq}st?FlZAmMZgH#t|= zTi*MBP(VR|+Rzfdm9pxwH6;rQhlz;^vPl3In4yfj^Xsk)d3562w}6P1#Uv%$0S7cS zHPrx|w?0i1fBxf(RWG~W6^EszWrf2u_1<#-T~H1{CCNUSa>`XtCn6`ufEvrd$cRZm zfEd0B9SGE$mzVeWcY?;Pf!PKxA){)CA}UD<3F<(Gx$~1fL;zGitvx+BfPD}}ieLbWjBK@u$rNcq~LhiCA!J|93G1Om9h4;VkK#dIkj3Y-u*q0WV`k@E`+sL!82 z_w@3bhl&;v01V0HZBEv~G^j;t=@R6orlzH(rFZJxH=X|cVB|I^MF3+d{qm))#(D9* z-sj$jGi&DI33^|xbQSgdm9am8HG^!C@BW~Y^8Nc?LC#ZYbngfwR@TtqJ5bvE zyVQ#u8G^5J>@=4GoO+pOMek z)ib4|7rSB?LEmeE7WJHK8Z*1OH_8b(@WQK?vMPS;mcQc)Q$?+QKn9){?E z{?<)cOwf?_S~CDz5kg5xnRhZXJ^j$6(l+s3YATnJpV zp=8p_!J$|TWR$_5KehV4f9Kts`dii5Rs8}2jsP$3R(P*Y;!;W9Un^_t2*4bV0NyGv zGcykk4QWp`c$F`oz%LiVh?(Uz$-aUZ6kb(Tm9n}rka@kozdy64n9eMz=l3e|p-xsZ z?LKW!*Xxs^%l7s54&A1>af7>Q@4MvE_dT2Qi;LdI4bG#Ed!J$WZ(TXs+TtKMxVbyN zMqX!p+Y8h(k~-FHz6}F$2bQQX`zC02Q?<{ruJf4|YFLYM;pILeGWHT0hi9Nu3n?3r$?%YFoW9xV-1!+8BmGEKtR;D zYVto9M-)_;!rl>xfm>?ciVA!z(GUwK1Qqc1*zLm|B6~$eOyJiR4i2VkD|>$iDtY~- z>*O-4_V}8PLD6n$ZAA$splyTDYvJf(z%}gP9pwX;+f|vdrp;$-BcCZno>9*DU%fD?b-}Q$q=soV+|Y%8 zn`0OF+_id-ZN(DP#ve7#mSSRJ<}f^^m6ZxeC02@Jr`e2`FkQyKX{z2^*R9cYeH8!2 z>AtLvj!u48s<7Rw*RM(XjZqO!FfsdYDJd!aURil7A-*>6b2;+OLfO?>(%2&1fqLjS(yMdyUc06O>1BkYQ(Ln+906Zwuf~v^TNIMmJ=s%OZp62f{r?lKm>qp zd~|t!0wFdyGt;bcw0Cj&dwOI?M~9X_2XN#C;Mj`t^5{q%6Q;OY#%(HSq5|;nA6W{x z4f{V;-vPFAadB}1?YQA=t6sRrg2UBI(qG4_y0J?b2x?a>J)ibrtab6mU;PSSLqo$q zv&}Mo=etT%b#Az|wY7k0#Cc5{!ipc(+jd?97>xwHkn0rTn|~D{Br&FbEustgJc1jEyOUZ5T`|kMklfdQUquR%`ufz)4<{Y9y5e;F`~(Q-8eY9PD`wy;p~R=| z243#KFZ4OJIT{y7WoJ-H>48r6tB?@lhQ`#Ep&n$@Cm z92_;V*G-SHp>(n>Ua^17qU2nLlP)RAEcoTR_u;dy_GbA5kTd_>+?wTUt)9IM2iZP) zZ{<1M^SxH0AD_#Sq zfuUXOHQvHU;mMB$QShlb_@BMQVpH2ugv#0Io1**#_@=!3^0nU%<_^f^=@huA{?!yr z4#2<-B%&NwP+g@%l9i!Pta_Z8CcF?B9kc9>v3PQrne69RI>PCOs*2F0FFlDkPxthQ z&~Mot;+3e$;WiJF~R4*|Q{A zVZV-ms-A?!=e=1o!PD6pVjP8E{+-b3c;-fa8!e4%uZiQUpo-1_Re;2#;ayM?&t~t2 z{bwCpc_qTQ{f{P4Or(39e#p+=`1QBAI65x<1@6)ITje(~VHGa{v%~}jo>7Xsu=<_x z;6Go+18>TvuulU{2p&|>yFFY*tm@Z1eX3>0ii=|(CoGQWPtNZRgwFr?fJ-UuD-J~i zyR!;Y0T;J(R@d)k3I_fiuJgSCt7kJePzYm_4C-#7)6wxTyv0T0A{cfRTJ6QgqtlPs z@}R}sfomceY`xEO-@ShM?3^X@KR>K$yoAiw-pT7=9TN*>DVfx}UvGc)b#7}~j)koW zMSn~&#Rdc8NZ@g|*7!sUGowXX@XcOofkzksV!M|6iF0^&UT65B$;t`Moqa@ zmc-9WJOUcV;FXVoCp=hqxMNG}hiCIk%M^3V{k{OVIiH}fn$*MvJ;@LVO-wXQw$U${ zX$3mp-ODBSXaPOFS6zOji-f%`C^ZEg<7>-z^>DZK&eqXUxi#fVPSI)vvtr>L@6-Db zno%|9 z1^EUXp>oWym`luR2Xf%zey>eclEMlAnH&UiL>$ir6@^8fk>gUJGjZg79*%eI%+s7U zx3Y>5ot+A(_rMkKsq%01_IatCS=RAwF7Zv?F2L>ax&w`lj^Hd%OSP1KiU(oUxBmQz zzS!j-JvAlAZF&QbnYnhjEG!STVH}sLqOI)=sj2{XEA>8j+Hn45UzBIi3XAX)Blj~_ z33pdHlc}fgQbmztA%&ruhBulnc|=4_9XXU+9v{a~;Nb8bZi3qt`-DNv6C*9%9{J1B zQ7gVB75O^oCCt^+gWGuYbU|rp^#;v;s1sH8On}c_4mWg>)1{|}j7B6Xw6QU9I6f@z z2Dh`I7^oXWl*i;MD#OZZX#pVGsLph=mlAM#M>qWR(d7A-ta2=VRamctlC{ zZ5NoQ!ENEWKTm^-jM-t&Mh9hOVK|=)IlNt^9pB7v$Yh|%H1kfYsB+P^187Eeb7l^f;E%j zKXXl1)@=T**>@nWVVCr(Y5Ox<)BcvnJ4;Ay%%I-=1~>O{S>A-Tt!x}kMSTm46pnw+r zY^O<9OFyOlbbp=MEzMhj2wh&`q;1ADoKSi^0!HHC(7{Pw%Q8H{lvshd-1<25=Mto^1s+FM>_0J}2A}~ENXVMSa_Cb#lAL4Wd77>%AI$vt zz;`GAR%`IJ-J0hsbV$@15|}$dWP=MzulI)C8YwArJ~QzMF5JWmLfG!<`sdx1%vDhBf_NXAz&Dn_g5nxQS%wONzpTmB zdTGTiK+N&2@CfR?{X8vU#AV7F%`XquyB1}xK-6RLj(`bDOhy*e8J%cQ?QlE8>(%vX z#sXEigW*{5^w&}gff}D`B4oT9sf-84O!9Nck%5B)69ilqHuXCRY@;xF1PyMZg}7>Y zpW@?DS5SWa$~s=>CWvbi3ltcN*n5x#fSxbFYtsEsV;+Skd>4PtMiYej;#$s6GUF<> zz#z1v-~0Vn4sstm-piUTWcu@h{xb1R+r0m8!rtEN zT6tke5$+Wk9SF_%`*T5L+hL=|R0olGr}fUQXHQ>J3B8U_H4Xz+PpgaRryaNR>%Ml$ z_{RT;c0XT-h3Q*Zk0J&KXXi$XP+^;ot&V3cU^CswNg<%S9R}7RlQl|jRWgh;i32=p z5$@phhcAbnZPNj30-iKtxAea}SrPNxF;9;wx<6K&Jb&t@U19G-8rWiXH&OT>@A%&$ zZ0`W}DqU@;uAvZSal>n5#b%nQthb26$Vf>s%4PN0nUl@_^l9|h@x-Gi`T_2n4y7%h z&7q_Qe`}ls<|+}LddY|1zaQr_$HiR3#?IUG0*AEIAdie0L4pe@M zc6;mK;zE}VV8DLBK?X)zMWC(2wv~Fz{>yz-$0sMPQ2Ia>@Mp4`&kssZ>gbbW30Dt~ zt`uQA+jqk|Hg=Ox`DIwAa&4=A$omy)({tt}Gxgmc23~LgDrdjwWu|xc0G{c z4qHMixa2c^|6ZeOM9lqf@HDZ<1L#zCPL2f>j({P8b8=Y06&>>C%^R&=ndi%D09j@8 zb+VqXAeYgd{8cdc>>M7xf{&4qlByQ9zkkngL)-=Zqhd6O`EWcSZ`gZC|FmvXYRzWR zw8@w1@bFMsS^3B9E6B~2pi2Fqm7j6EhZ#^>%8x`yU|H8lJAx{m-}l&Q{MWBmu=D{W zMp_w#he}LpQ2`VnyU1>gAXU_{*wsBN#XQ{3@V}bv<+Xj`oPwD5J_nc`0RUjs)Ye*n zQ5xLQw{DR=8OZnwHE~=Gg|@4zsK9m=(H=_J-rK9XcYL@x$r!;D5gEDL zFFHH7UeeqNjwHlwu^X48#*T1t6r@M3!E5i<5NFR5@L9uTm-We0 zELI)m|XlIe%bI6O9_EA+WqEfCV9jHG_?1HJ?Ir*$H&K2q7&oe z8BvMKzkInhq|2EI&aAHhaP>LupkoyfIZfag{kpKQz}~bBDhv@C8kz!7NU%*tE-x=H zeJ>F_0Z8{XEDXEMsy8VM$k3nF)te4Lj)wm>11`zw1n*f<4VX~-_cf$XvWNG(#y+H` zrcz$NuAgI)`0u9|PET}o({~SSCVifE$1yIzxbQ|iTJjg6_uY9p4xkzdPS1C{=vAYS zjt7j%=%1~?49zksqNsOWWl~g9vdfTkoVl$@rXaw>b03|-w8lwxua1;m9awDdTfWGZ z@9Cr{VK7J|YP01}VzKY^efyR_;)Z%hO+}^Pr(JicvxZ6U{|Jg=eEUx*x_?YKORAr* zqpYfW7s9DxEL~A@Mp{}FP_cI4B7qDHf`TN_?Fa-o;hv3`qJYyf6x^`z!D!2_7?e9X ze}(NQ$W)WKTVY6?FHYT%Is*d(;_Ps9sBd;;q*BLJUthof90j0A{?A^cUnZw&nE;M; z-KW5*IrlS1)e{0f#Fr(<=bYH66x;?-k5Yhx^Yd^8z$^|j95^gtvNzt|enmw^g+ySr zwO;vdfB)3o+TV=G{z@`NjHIn^tnQ0TO5SBlm`7TB)yYT{hym`E{PhI%f|TfhQi5uR zI@fwO3XrrNfL|;)0`C;*S%NP#M_qaifS3E$R5+aWp#}eNOD|t@RA68r=ZZFGVpv$% z9ngzZ8@DfZ-Y(t+XdU|TeVkV8 z1-wZ$F-|Tnfh8q;$iCLjRc8e41gO$@(+i)%6Ko`8WMp$Y^X)r(dw0PG z8c>jK0>%|2t%LRJx-m}N64c0BX@t+k#RW%an1zMO|6#P&5aHfICW91sz=H`(rr(aU z=WSwQ2snEeyXgHpij1q{Qd1*AT3Cc&47SS8)^q?*$D93SkYX9Ao6KP4grg*hrW*ft z3Pjl7Q^&fIis_%u*kaH0Me@iF5U*fcdM9Y5l20l?f93V|3Ghy3&|eO)vOa(2GW9#L zf<1N)PHQ2LpTHTb!D>gdTYx2bj4E1?uF-JtZn3jtLC1I1Z#Nm|Y{-wmxHDe6cJ1kG zla%+-7CuZdWNZh>2IpPCzWH?M6aMMpCN7A8YALs_Sy)&An3B!u0u7q)R_JA&`z8+j zsnD#M4tl40K>7?1W<`)ze#daWwg4m_{dQ(vOXLQ|#vt!Em6nyY!kMTt=S4+;F zkF@XZK!%j?-oIhTTkOI)+1W_oo@m)~>aC`_wuwDIw zjERWei}yA)WF9RVRXqzAo$>rQoV~dl#T1 zXq%Bgemp2DBxRB%qd!q2(wzWzFEJ%0cCoaL>)P-&$HoH+#VATfw>N@xGZ7WV4&+8- ziwRr*!58y}HIH(#Eru3^i|zeXO9`ahg}$QakV3()e7gk1W! zzCNh+Zbn7f9yvC0>ErD53E_kHvq7)xpOa8IyjMp0d;GucW5YN@SxxW0eECvKDbKC5 zlc2Qp59%G*PG?6?k3sk^t;D}0+bZyTg+9pWp~3oITnbRc^q9<)6x+B-I$~XXNNTBN zu6(I8{V&n{t}a^LK33aD2B#YDNhFVfQw7{eaI}bn2=ZMvwLb({SnCqW*NNjlJPIFs z4vZAMab@PM>SyBK?AzBRQC=dH-QAA{ku()zSBdLCSty6M)GQr^Oc8z(fZ ztc1&UKnVdxg6!9t>e!_BL$^mp2hm;$K&%o`Z%CAg2{zCUcF0#NF(BS z?Q^5_Cnsmy++fZQ6cmjY5PS`FR`mDubYiMsxL`E;yfZT=FMmJ`*YPx%dA_oB$NkVA zL3r5NOF~31g9)D)QYns$GuW8*r)Fg>5F8@Ip;A$izkOCn3r3HS%uE_G96!$2VSgBt zYF=u8R)EtH^r}f4t(%h=DP29x3EzHv$)P>mO8-zPHEY==_@jDzMdL+`3GbaEiupgs zc*w%E+JmO(F*DOox2YllC&6R{lz3Bhx`;|6-$yUe0yqi;?2R0Y=<2q{%c#H|gch>! zEt5(=U%q=ukdlTA#PVss%akzX%+ikam!+j|cYZxV(cpO^OEmZUairgcgss3Yw4qN2 zH;`6B~yN9(#Pk=&1k|alC_N_!udeYczOVWD%d#H}R9z&e-GJwl<<1ri~Ko zMT;MFgQgY&rb2WdpPbQhIIJU>PT(UUCZQ>6tqG>F@$+YsA{a3-B2S0ANfOvtp~rVG&(MyO;Y8O} z7m29T61mvU++$HhSj0rsw*((BV4vP^ZU2a2>e-3`-uN43%O`0>RRoBI;;hJ#o0%MMPXiaW~Yx z6>M^^(}I=cktP_-0zr)8SoiHq8q2QY);PwkccP9Qk#P7-IH?9ja2VD9PZ#}F>pKBw zq%-?#WDw)qy>m4tq&pF_^9Szv2Pj|RgyQEPxf(uT)yFo~P7hmSg|FuGVO;(I^EA?C z1@qm%^zl7x1V@HwxF1q8tv;C!537h~bwI4yy_A7~=oK7X z7?Ar!wWIUZYDd>n7!vIkudMmNACGr1kWArWU5)ut&*0M^0SfB!uVPt?yA0-XkVeDz z?KT1< z=5zXR#8+Unm=^c>9wtx(rUKG)wU`Wxm--vED=Ci_J4KzA)kGAd3|=-gFah@<9=Wy^ zzD`WxIRc6<`Q1=nu-@{JkaPmJlSkgP5^lGy?#Ao9#0zIY978WM&Y>$G7{G1Wv{uNT}*biDA;y@W&!lH3}5Gm zzxMPsVEA9<08f$C`bp!tOhqA1yebO$#iN&F(S?P^*w_Y`%*^5<4tNl_wUDhD=_DDG z<=&}t0|V;u8D9uU6W~_e*en9)ue=V=d0I`3#mg}%EG)Zc(-O$jt8nwU^mH&5GG*CX zgs&4()EtigGGr1LzX8Dc?kn!EiCoo4a;sy-?M&N>I@SaZ-}tl}D5Rtqm;@$K`};Ki zJSIs}4T1Sf)m*UQKbxW?P*v5&qxwPy;{97dlbShY9ju+GZ!?ODFq%%-P@}00+h#Li zI8TFEc^N5cwo1PU-UVDeKFKBU^v9z#@dO@ZdvM@eZKz{XDmgbro_V76r$_|>_!E1P z0^h8QX5~eJZ)$PgFLjtk2js)VV183Qy$<*#Qx^N9a62kolcSr7guJ~Ib#9h;v~_r} zIV2$)Q){qb)PXui|1UlhS!GYl@42G|z^4v~OIQz-e%EkKuHL0kFRp`pA4(8|jT6zD z>HnoWT)DcmqcQ-axLNIfG#s=wK)PQo+MC+qncpJ2H@lUj#FE?T;>oi@IKcjKZhnvi z2_xrPZy~10Zm(zZ zh+xA3g_35Zt(AD>c|)crEvQ?JVxHocmuG?^4!&qtCmP!M%$hu$uq%Np zaO2k=AxP6$gs~JbHd)>UYT=GkHN?pMdP#tCdD)@HUxxPUS8*++d~LAeDXXg&m+xZ8 z=9QP(DPrdQW&OQG8)B5s=SKO>i9SHtD1!aIvWm)2Yl5G5k@;tj?cr54T>*^b8FpOnxK)|L?t6_9{^H|LXxvPg*3S zAR!@vlY{c|m@0osj{g1VzXgAd^ydMh(R4;`G-BP1->g7~BH)DIQ+q$K8oXq{w(=WH z7js5BG1}VX>=Mv;kMaw(8yDvjRFkUlaIW%Ij!X zYAyWFjdxeAy2W%d=lcKc%K|Pve7eET_a2H?jdMB#6h5KrVALV@0XXMqQ1y%oVGgeVfQJYKk6H4Hw7nnrCtHmj z8$*JF(f>ILx!ezlJPl_hH=IO!I#NI`efozPNZ?P!w~)s)sghtBy)+E$(y}iAb6ciLaEAG{e zU%m)hTUZRPR@JZJT1I_)EJ#5^(+hpt3G=H9?0p8{1M4}38jI5&UNG?*?tJrYi9wm1 zmDkzWP;YN!&ZkcW)43UN+Q=G=3Q|V7xrkCY?^u~xqG73-dF1an!;a1PqGTYZ!`|LL z@e1r?ScqG~!XL7-P~|=lZEda1uI86l_4M|lAP5Ku=EMkYbjfm%Wfd0_fb~J@I}H&L zocW@>b?a8k?Ce$9ifgqL6n{u_>~`~&H1c2|K&SKL#aP>eoT6zs0-2SajV>%K3?7TS z%F5XAqJU2(UH$#{bEM$T-H!#A7GtEP{-~HWy{c0&>tx#Wm+MaWdE6laxC7V&=&zgM zlhhKf9O$Shwzjq{l-eiPDJjPn50?irW5JaRXSYh)>#g$38(~J>fVYYObEk!g%MV8X zTOuNdVvz>iiqD>LgPT^T>FAlykiE8^9vs3@T3X!N`pZg`x3$pZhkp>x8>=vJ6&yG7 z!;{zpoLBNpvcQUw=Y!!SDGNJ0Sa6&5?J+Pg7y-us15&WGWQNKeD_{5V@D1KCx9c85b55$bqi}`C(*HlLe@;1?h0=o(aujk;0BP!_V=q;n86u1=Jcfe7scK`mFnA_2$ z4>&B~D62p6uMlU$!^7bPA)4zZ&#|zupg#%0WBUpaQ(Ag@Jdh}W=?$lApL;30j^sB0eqDhZf9L+V6PI;hLgfaydxsS7=wwja`VFe<42A6mAcP!4Q#&H z%Y|9|aeZVwDc%z7`l+<^ffow#eHAse;Xk#1q`p!*9TkiJcEPQwn+ZuymSdi@v0r+i zC5X51cmYXNzec>*L?N7(G0PpvJCAG|qJ17Jv>|u`?{38M*A??d?$E^~h z;B(QBDei!vcByD`Cj=2TB__eMjzlgrO}$b2AS}^^)!cOpn_q=x_65CzgPOUA_>7%v zWn5Lna+fWX?cWkul~pA}ASsn&AbMYGhynr?2bLEG(q|%$k*F z62Nt^$ekbUudUOAS6~lRaxlf^>xr*9#4d`#86AB8D;XQ%#UkUQxy=izloW|e>9j?^ zv*0@nbASG%5i!dtq)}GF^lu;7ey*cC9df6|&CBSmGE2*N+1)b7SvelI^Y%KoPhvXV#Vodux0d*sl12Lg;zvJV@ zo92ak%+4{3@HUjso@e&`navv5^YqYJ2y{&Eg^#g;2q#+J6)^^Bzc220-OPL5lu=5K zVlWLZCaeX^p_uyElO^%u&oNRl1{3OZTx)e)u^by7Ztv{8aU<8LTY(8>dEh80CjHI zmd~m(!zV~e`t(j_Hg+s3mRf4!ns%=DO$}$#@L(s`3RyipykI#-HVt*K=(-x}$VH*R z01Z=9(}5F$49tDkY;4MjDVBpeI#ze~U0*4)1m8h)bg6;?qSHf%oZgq=wc=?;e)@`eJo=&GoMJW}w%g#Cj__8? zsQGRGfv)CDH?rQO`{0!0@>N<0F)-W+pNsV$v0d8iFnIF=~BJ*pOo~F>wRNq_lc_zyl7D zW?nH<@bTA@FuJ?llR1nL#!0+XA>IClOUG z`SW9y6|ODRhsJJFm-Sqm+Qu~dqa zl8_Qnwu+f3ge>JE!u`DWoaa9GpL?I@{^@zl%=>-V$eVpdOX-=^Nms%Y)o?fMC4 zN;`G6)LogaTX|7wD6RrbZVb#N8FGDDx!yOoQc7>=OkK3Ui*wqOnCwNY%W(bibAWH}~4^o;XCPIQ{(T zuS{kLgqs*LYXozt!zP)-S)*M(a!N|v%F4yhU&M!3S1U8=e4XL!B7z$-;)b&QVb7^Ec_esF?aP_XGlfJE5zbdRWRcl?A2krd<&n&=nQkfiP}5Y2b}`#5*o z`sp8{Z5v_)jy%oq@s5azVfXVJv|iEmM;RrHo+c7AI4BGsvcRrIn|fmQOkkiMmHH1k zG-qeUUz4%)V(N2ZU4|HMQ^W}21DtkUdoG$T$K@F>*Wm+P__Z?tQo>L`dD; zD;)BlZR!*j>nQQwi5%u$a@u*fhqd$D&pmCiNW`pEWCgi=dQRH3>GWz@`kJ*(+UrE@ zh{>F{$0&0+a&Z9>ZLUJu!7cpNr|Ml;yQ^;9(=V&2Xvo&%h4@wA^!HchS|M`^M3vUz zefw_YXFkc?S%AaFCqLh?w)u`U9$m%$P`a!#O*6mUH#Vs+`tDup5M$YAthTX$ryCkX zp-hdvM_t|4Th14W({d=s5>h^P`o)V0)ULC&3OW0ucJID*O)!@mN05q?zE^GV#8-g( z$=wgsGRGZhM_nk+h*=ReyX^YgRz`g^|FLOqUXnOb$Igz9?IgwDw`_GvA?@7B1K$K6 zlO7wLsp}BYQ(>(}Y^Uw+ZHGAx=0#CRTfZ~PPoLgr&3xr>b#JMyXw{ySjPvYH-O_

l>tBh z$Hw;dYvnCMIIdpxCkbbKmyDZa72MiiN^{h>X_*ri*w=);${4dLwlA;ei(#IXmBrB? z-yX%rf4gCQfeXhsxr8q|BSZPJ3NvA3L|a@WQg_AqtZw;BO+@}k4Mp@`e0-2s_X%#R z0^X3&oI#x=3tv!%$;s~C#X(>OZO9`_H!PtS(JU`F6_nEF%g$#1k(77org=s~;HumK zzWcF5pFYWGXrxSt?zP-lzQ^q4ks8WyCg$4MyL)DGw3x_9+{Jpuk5@C==7!V5YxFMZ zyG}~qdZV(UZ99|(;>>9IWfPfnV@{Ic5sk77YYe#BtTD#85$hQlW&ZtVTuV_&2}h&v z?Sg`jIy|K0shOF*rlvehwOD$tY@hM;l!$}0I+f><@FR~{Miyx%PE=m8KQzCzbPY(< z&iPYzckEXr4P2zt+XhbFqn|<0AK2>AH=1yk@D$kaK(qo4fDAb2<)zujIk#WUFrwuB zHYn1P7rUH-`6U{|2ej-R96rKWM8qTo_c|Fbq%)Wv2DrOFkfPFP_3+<74ypt%z?7sh zl@P?hr`Qh*B3yVJ(DMTwCQnHwc;b30AxgPjSQwF(CIWVN63xz}WWt)_JlQ2Kv=&5y z9%$I}_DT)vt-9x7U)-G5)zLvHD8NAzG$Mo~ZLeRmv8IxlRn(%I8Y!qspzYs;)W6kn zh7o{owxlr*-Qxj>F*>crhWpXK5@(2nzHi_B4p#*f7%zU=^c^-Q!pmr8W(M673!Xe+ zQ~VN=lE-MY3uun--oLNdMK{@q=6Pi};Z?FPbBX%);b&!E5HF&4z(TKV^aa^SE}DR@ zBGOPc++Ha;yP@5yQG9LvA8#1xgH`!#P77^>`F#nVMa^XA$zO5=%v2L41*wUt%{HaB*kQb115xy4cEV=gWch%)r*DZgPXrd{sQDs{)P zQlO)wgP>OP_gy-HT&Hy+BCy6kHgc>7j0I5@boyZbgdx@8;VNHzJ#91Na`16pKf zXU0zl*l!lzGnYD#m%#E>0krNj1r@lQo?aO8;Rq8mO^gk|QR>Ubi!+WKVQ_*as5M;K zFHeCY0kV)|pwiDaH#Ww69vm#3mebdF`n3zlpo5jwAAUdL*Ke`8TzO78D7{(%N*o6S zVI_CA1uUQdi;Ig6SX7k6GTK+`cYGIHSH!RzGr z7z86Xw_lNvg&qfnp-521Vm&=Qzq<`L19}DsrLJCQZK?MQ==Ibby{aWF09Ee~TG$05 z2DF~l*CX2WRs9%h#*Q3?8v>0NKY4s6O4o)RrrFe^$B#zO%mu* z>fx4_mMr%%bMN1-sZgZZIvLKZlLn6Z_#_kJ5J-~{^kYrcoe5yh<}Wv>TEu!^mo1V1 z-@wz?`QqYYlYRSYEq5*Emyg4Crt{O}h&2{1PLw1fOb#pBkV@SG%^LyOge2|0rv0pH zv>I+@adB}Q`OUxvPp0ot5(a%B4EwbrGr026RsDA$4D-IJHJ%I|eVIL|=~|^R^Zu^6 zR}q6@eC!wrfYw{_Z7xB2vZE-q8q5qIfs_7J~mYwa0<@nAMEH<_$b#=ep=!LYSAL^0^r>9(e zs(a+j&CNY&v?#!n7%b#+5gL}%AwIEftLp3PU+icfpC^p69u>u0+TK8 zfp-4i&{nmN-YeSkfa7C@5`&`={{$|S0lWYJ literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_scroll_event-members.html b/master/classncine_1_1_scroll_event-members.html new file mode 100644 index 0000000000..285edfc7c6 --- /dev/null +++ b/master/classncine_1_1_scroll_event-members.html @@ -0,0 +1,86 @@ + + + + + + + +nCine: Member List + + + + + + + + + +

+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::ScrollEvent Member List
+
+
+ +

This is the complete list of members for ncine::ScrollEvent, including all inherited members.

+ + + +
xncine::ScrollEvent
yncine::ScrollEvent
+ + + + diff --git a/master/classncine_1_1_scroll_event.html b/master/classncine_1_1_scroll_event.html new file mode 100644 index 0000000000..8070032ae3 --- /dev/null +++ b/master/classncine_1_1_scroll_event.html @@ -0,0 +1,106 @@ + + + + + + + +nCine: ncine::ScrollEvent Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::ScrollEvent Class Reference
+
+
+ +

Information about a scroll event (mouse wheel, touchpad gesture, etc.) + More...

+ +

#include <InputEvents.h>

+ + + + + + + + +

+Public Attributes

+float x
 Scroll offset on the X axis.
 
+float y
 Scroll offset on the Y axis.
 
+

Detailed Description

+

Information about a scroll event (mouse wheel, touchpad gesture, etc.)

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classncine_1_1_service_locator-members.html b/master/classncine_1_1_service_locator-members.html new file mode 100644 index 0000000000..59c71b66a0 --- /dev/null +++ b/master/classncine_1_1_service_locator-members.html @@ -0,0 +1,101 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::ServiceLocator Member List
+
+ + + + + diff --git a/master/classncine_1_1_service_locator.html b/master/classncine_1_1_service_locator.html new file mode 100644 index 0000000000..12874cbd6e --- /dev/null +++ b/master/classncine_1_1_service_locator.html @@ -0,0 +1,172 @@ + + + + + + + +nCine: ncine::ServiceLocator Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::ServiceLocator Class Reference
+
+
+ +

Provides base services to requesting classes. + More...

+ +

#include <ServiceLocator.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+IIndexerindexer ()
 Returns a reference to the current indexer provider instance.
 
+void registerIndexer (nctl::UniquePtr< IIndexer > service)
 Registers an indexer service provider.
 
+void unregisterIndexer ()
 Unregisters the index service provider and reinstates the null one.
 
+ILoggerlogger ()
 Returns a reference to the current logger provider instance.
 
+void registerLogger (nctl::UniquePtr< ILogger > service)
 Registers a logger service provider.
 
+void unregisterLogger ()
 Unregisters the logger service provider and reinstates the null one.
 
+IAudioDeviceaudioDevice ()
 Returns a reference to the current audio device instance.
 
+void registerAudioDevice (nctl::UniquePtr< IAudioDevice > service)
 Registers an audio device provider.
 
+void unregisterAudioDevice ()
 Unregisters the audio device provider and reinstates the null one.
 
+IThreadPoolthreadPool ()
 Returns a reference to the current thread pool instance.
 
+void registerThreadPool (nctl::UniquePtr< IThreadPool > service)
 Registers a thread pool provider.
 
+void unregisterThreadPool ()
 Unregisters the thread pool provider and reinstates the null one.
 
+const IGfxCapabilitiesgfxCapabilities ()
 Returns a reference to the current graphics capabilities instance.
 
+void registerGfxCapabilities (nctl::UniquePtr< IGfxCapabilities > service)
 Registers a graphics capabilities provider.
 
+void unregisterGfxCapabilities ()
 Unregisters the graphics capabilitiesprovider and reinstates the null one.
 
+void unregisterAll ()
 Unregisters every registered service and reinstates null ones.
 
+ + + + +

+Friends

+DLL_PUBLIC ServiceLocatortheServiceLocator ()
 Meyers' Singleton.
 
+

Detailed Description

+

Provides base services to requesting classes.

+

It has memory ownership on service classes.

+

The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classncine_1_1_shader-members.html b/master/classncine_1_1_shader-members.html new file mode 100644 index 0000000000..d0b0380e2f --- /dev/null +++ b/master/classncine_1_1_shader-members.html @@ -0,0 +1,149 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::Shader Member List
+
+
+ +

This is the complete list of members for ncine::Shader, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
DefaultFragment enum name (defined in ncine::Shader)ncine::Shader
DefaultVertex enum name (defined in ncine::Shader)ncine::Shader
fromId(unsigned int id)ncine::Objectstatic
id() constncine::Objectinline
Introspection enum name (defined in ncine::Shader)ncine::Shader
isBinaryCacheEnabled()ncine::Shaderstatic
isLinked() constncine::Shader
loadFromFile(const char *shaderName, Introspection introspection, const char *vertex, const char *fragment) (defined in ncine::Shader)ncine::Shader
loadFromFile(const char *shaderName, const char *vertex, const char *fragment) (defined in ncine::Shader)ncine::Shader
loadFromFile(const char *vertex, const char *fragment) (defined in ncine::Shader)ncine::Shader
loadFromFile(const char *shaderName, Introspection introspection, DefaultVertex defaultVertex, const char *fragment) (defined in ncine::Shader)ncine::Shader
loadFromFile(const char *shaderName, DefaultVertex defaultVertex, const char *fragment) (defined in ncine::Shader)ncine::Shader
loadFromFile(DefaultVertex defaultVertex, const char *fragment) (defined in ncine::Shader)ncine::Shader
loadFromFile(const char *shaderName, Introspection introspection, const char *vertex, DefaultFragment defaultFragment) (defined in ncine::Shader)ncine::Shader
loadFromFile(const char *shaderName, const char *vertex, DefaultFragment defaultFragment) (defined in ncine::Shader)ncine::Shader
loadFromFile(const char *vertex, DefaultFragment defaultFragment) (defined in ncine::Shader)ncine::Shader
loadFromMemory(const char *shaderName, Introspection introspection, const char *vertex, const char *fragment, uint64_t vertexHash, uint64_t fragmentHash) (defined in ncine::Shader)ncine::Shader
loadFromMemory(const char *shaderName, Introspection introspection, const char *vertex, const char *fragment) (defined in ncine::Shader)ncine::Shader
loadFromMemory(const char *shaderName, const char *vertex, const char *fragment) (defined in ncine::Shader)ncine::Shader
loadFromMemory(const char *vertex, const char *fragment) (defined in ncine::Shader)ncine::Shader
loadFromMemory(const char *shaderName, Introspection introspection, DefaultVertex defaultVertex, const char *fragment, uint64_t fragmentHash) (defined in ncine::Shader)ncine::Shader
loadFromMemory(const char *shaderName, Introspection introspection, DefaultVertex defaultVertex, const char *fragment) (defined in ncine::Shader)ncine::Shader
loadFromMemory(const char *shaderName, DefaultVertex defaultVertex, const char *fragment) (defined in ncine::Shader)ncine::Shader
loadFromMemory(DefaultVertex defaultVertex, const char *fragment) (defined in ncine::Shader)ncine::Shader
loadFromMemory(const char *shaderName, Introspection introspection, const char *vertex, DefaultFragment defaultFragment, uint64_t vertexHash) (defined in ncine::Shader)ncine::Shader
loadFromMemory(const char *shaderName, Introspection introspection, const char *vertex, DefaultFragment defaultFragment) (defined in ncine::Shader)ncine::Shader
loadFromMemory(const char *shaderName, const char *vertex, DefaultFragment defaultFragment) (defined in ncine::Shader)ncine::Shader
loadFromMemory(const char *vertex, DefaultFragment defaultFragment) (defined in ncine::Shader)ncine::Shader
LoadMode enum name (defined in ncine::Shader)ncine::Shader
logOnErrors() constncine::Shader
MaxNameLengthncine::Objectstatic
name() constncine::Object
Object(ObjectType type)ncine::Objectexplicit
Object(ObjectType type, const char *name)ncine::Object
Object(Object &&other)ncine::Object
Object(const Object &other)ncine::Objectprotected
ObjectType enum namencine::Object
ncine::Object::operator=(Object &&other)ncine::Object
registerBatchedShader(Shader &batchedShader)ncine::Shader
retrieveInfoLog(nctl::String &infoLog) constncine::Shader
retrieveInfoLogLength() constncine::Shader
setAttribute(const char *name, int stride, unsigned long int pointer)ncine::Shader
setBinaryCacheEnabled(bool enable)ncine::Shaderstatic
setGLShaderProgramLabel(const char *label)ncine::Shader
setLogOnErrors(bool shouldLogOnErrors)ncine::Shader
setName(const char *name)ncine::Object
Shader()ncine::Shader
Shader(const char *shaderName, LoadMode loadMode, Introspection introspection, const char *vertex, const char *fragment, uint64_t vertexHash, uint64_t fragmentHash) (defined in ncine::Shader)ncine::Shader
Shader(const char *shaderName, LoadMode loadMode, Introspection introspection, const char *vertex, const char *fragment) (defined in ncine::Shader)ncine::Shader
Shader(const char *shaderName, LoadMode loadMode, const char *vertex, const char *fragment) (defined in ncine::Shader)ncine::Shader
Shader(LoadMode loadMode, const char *vertex, const char *fragment) (defined in ncine::Shader)ncine::Shader
Shader(const char *shaderName, LoadMode loadMode, Introspection introspection, DefaultVertex defaultVertex, const char *fragment, uint64_t fragmentHash) (defined in ncine::Shader)ncine::Shader
Shader(const char *shaderName, LoadMode loadMode, Introspection introspection, DefaultVertex defaultVertex, const char *fragment) (defined in ncine::Shader)ncine::Shader
Shader(const char *shaderName, LoadMode loadMode, DefaultVertex defaultVertex, const char *fragment) (defined in ncine::Shader)ncine::Shader
Shader(LoadMode loadMode, DefaultVertex defaultVertex, const char *fragment) (defined in ncine::Shader)ncine::Shader
Shader(const char *shaderName, LoadMode loadMode, Introspection introspection, const char *vertex, DefaultFragment defaultFragment, uint64_t vertexHash) (defined in ncine::Shader)ncine::Shader
Shader(const char *shaderName, LoadMode loadMode, Introspection introspection, const char *vertex, DefaultFragment defaultFragment) (defined in ncine::Shader)ncine::Shader
Shader(const char *shaderName, LoadMode loadMode, const char *vertex, DefaultFragment defaultFragment) (defined in ncine::Shader)ncine::Shader
Shader(LoadMode loadMode, const char *vertex, DefaultFragment defaultFragment) (defined in ncine::Shader)ncine::Shader
ShaderState (defined in ncine::Shader)ncine::Shaderfriend
sType() (defined in ncine::Shader)ncine::Shaderinlinestatic
type() constncine::Objectinline
type_ncine::Objectprotected
~Object()ncine::Objectvirtual
~Shader() override (defined in ncine::Shader)ncine::Shader
+ + + + diff --git a/master/classncine_1_1_shader.html b/master/classncine_1_1_shader.html new file mode 100644 index 0000000000..11b157e4fe --- /dev/null +++ b/master/classncine_1_1_shader.html @@ -0,0 +1,458 @@ + + + + + + + +nCine: ncine::Shader Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

Shader class. + More...

+ +

#include <Shader.h>

+
+Inheritance diagram for ncine::Shader:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for ncine::Shader:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + +

+Public Types

enum class  LoadMode { STRING +, FILE + }
 
enum class  Introspection { ENABLED +, NO_UNIFORMS_IN_BLOCKS +, DISABLED + }
 
enum class  DefaultVertex {
+  SPRITE +, SPRITE_NOTEXTURE +, MESHSPRITE +, MESHSPRITE_NOTEXTURE +,
+  TEXTNODE +, BATCHED_SPRITES +, BATCHED_SPRITES_NOTEXTURE +, BATCHED_MESHSPRITES +,
+  BATCHED_MESHSPRITES_NOTEXTURE +, BATCHED_TEXTNODES +
+ }
 
enum class  DefaultFragment {
+  SPRITE +, SPRITE_GRAY +, SPRITE_NOTEXTURE +, TEXTNODE_ALPHA +,
+  TEXTNODE_RED +
+ }
 
- Public Types inherited from ncine::Object
enum class  ObjectType {
+  BASE = 0 +, TEXTURE +, SHADER +, SCENENODE +,
+  SPRITE +, MESH_SPRITE +, ANIMATED_SPRITE +, PARTICLE +,
+  PARTICLE_SYSTEM +, FONT +, TEXTNODE +, AUDIOBUFFER +,
+  AUDIOBUFFER_PLAYER +, AUDIOSTREAM_PLAYER +
+ }
 Object types.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Shader ()
 Creates an OpenGL shader program name.
 
Shader (const char *shaderName, LoadMode loadMode, Introspection introspection, const char *vertex, const char *fragment, uint64_t vertexHash, uint64_t fragmentHash)
 
Shader (const char *shaderName, LoadMode loadMode, Introspection introspection, const char *vertex, const char *fragment)
 
Shader (const char *shaderName, LoadMode loadMode, const char *vertex, const char *fragment)
 
Shader (LoadMode loadMode, const char *vertex, const char *fragment)
 
Shader (const char *shaderName, LoadMode loadMode, Introspection introspection, DefaultVertex defaultVertex, const char *fragment, uint64_t fragmentHash)
 
Shader (const char *shaderName, LoadMode loadMode, Introspection introspection, DefaultVertex defaultVertex, const char *fragment)
 
Shader (const char *shaderName, LoadMode loadMode, DefaultVertex defaultVertex, const char *fragment)
 
Shader (LoadMode loadMode, DefaultVertex defaultVertex, const char *fragment)
 
Shader (const char *shaderName, LoadMode loadMode, Introspection introspection, const char *vertex, DefaultFragment defaultFragment, uint64_t vertexHash)
 
Shader (const char *shaderName, LoadMode loadMode, Introspection introspection, const char *vertex, DefaultFragment defaultFragment)
 
Shader (const char *shaderName, LoadMode loadMode, const char *vertex, DefaultFragment defaultFragment)
 
Shader (LoadMode loadMode, const char *vertex, DefaultFragment defaultFragment)
 
+bool loadFromMemory (const char *shaderName, Introspection introspection, const char *vertex, const char *fragment, uint64_t vertexHash, uint64_t fragmentHash)
 
+bool loadFromMemory (const char *shaderName, Introspection introspection, const char *vertex, const char *fragment)
 
+bool loadFromMemory (const char *shaderName, const char *vertex, const char *fragment)
 
+bool loadFromMemory (const char *vertex, const char *fragment)
 
+bool loadFromMemory (const char *shaderName, Introspection introspection, DefaultVertex defaultVertex, const char *fragment, uint64_t fragmentHash)
 
+bool loadFromMemory (const char *shaderName, Introspection introspection, DefaultVertex defaultVertex, const char *fragment)
 
+bool loadFromMemory (const char *shaderName, DefaultVertex defaultVertex, const char *fragment)
 
+bool loadFromMemory (DefaultVertex defaultVertex, const char *fragment)
 
+bool loadFromMemory (const char *shaderName, Introspection introspection, const char *vertex, DefaultFragment defaultFragment, uint64_t vertexHash)
 
+bool loadFromMemory (const char *shaderName, Introspection introspection, const char *vertex, DefaultFragment defaultFragment)
 
+bool loadFromMemory (const char *shaderName, const char *vertex, DefaultFragment defaultFragment)
 
+bool loadFromMemory (const char *vertex, DefaultFragment defaultFragment)
 
+bool loadFromFile (const char *shaderName, Introspection introspection, const char *vertex, const char *fragment)
 
+bool loadFromFile (const char *shaderName, const char *vertex, const char *fragment)
 
+bool loadFromFile (const char *vertex, const char *fragment)
 
+bool loadFromFile (const char *shaderName, Introspection introspection, DefaultVertex defaultVertex, const char *fragment)
 
+bool loadFromFile (const char *shaderName, DefaultVertex defaultVertex, const char *fragment)
 
+bool loadFromFile (DefaultVertex defaultVertex, const char *fragment)
 
+bool loadFromFile (const char *shaderName, Introspection introspection, const char *vertex, DefaultFragment defaultFragment)
 
+bool loadFromFile (const char *shaderName, const char *vertex, DefaultFragment defaultFragment)
 
+bool loadFromFile (const char *vertex, DefaultFragment defaultFragment)
 
bool setAttribute (const char *name, int stride, unsigned long int pointer)
 Sets the VBO stride and pointer for the specified vertex attribute. More...
 
+bool isLinked () const
 Returns true if the shader is linked and can therefore be used.
 
+unsigned int retrieveInfoLogLength () const
 Returns the length of the information log including the null termination character.
 
+void retrieveInfoLog (nctl::String &infoLog) const
 Retrieves the information log and copies it in the provided string object.
 
+bool logOnErrors () const
 Returns the automatic log on errors flag.
 
void setLogOnErrors (bool shouldLogOnErrors)
 Sets the automatic log on errors flag. More...
 
+void setGLShaderProgramLabel (const char *label)
 Sets the OpenGL object label for the shader program.
 
+void registerBatchedShader (Shader &batchedShader)
 Registers a shader to be used for batches of render commands.
 
- Public Member Functions inherited from ncine::Object
Object (ObjectType type)
 Constructs an object with a specified type and adds it to the index.
 
Object (ObjectType type, const char *name)
 Constructs an object with a specified type and name and adds it to the index.
 
+virtual ~Object ()
 Removes an object from the index and then destroys it.
 
Object (Object &&other)
 Move constructor.
 
+Objectoperator= (Object &&other)
 Move assignment operator.
 
+unsigned int id () const
 Returns the object identification number.
 
+ObjectType type () const
 Returns the object type (RTTI)
 
+const char * name () const
 Returns the object name.
 
+void setName (const char *name)
 Sets the object name.
 
+ + + + + + + + + + + + + + + + + +

+Static Public Member Functions

+static bool isBinaryCacheEnabled ()
 Returns true if the binary shader cache is enabled.
 
+static void setBinaryCacheEnabled (bool enable)
 Enables or disables the binary shader cache.
 
+static ObjectType sType ()
 
- Static Public Member Functions inherited from ncine::Object
+static ObjectType sType ()
 Static method to return class type.
 
+template<class T >
static T * fromId (unsigned int id)
 Returns a casted pointer to the object with the specified id, if any exists.
 
+ + + +

+Friends

+class ShaderState
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Attributes inherited from ncine::Object
+static const unsigned int MaxNameLength = 128
 Maximum length for an object name.
 
- Protected Member Functions inherited from ncine::Object
Object (const Object &other)
 Protected copy constructor used to clone objects.
 
- Protected Attributes inherited from ncine::Object
+ObjectType type_
 Object type.
 
+

Detailed Description

+

Shader class.

+

Member Function Documentation

+ +

◆ setAttribute()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool ncine::Shader::setAttribute (const char * name,
int stride,
unsigned long int pointer 
)
+
+ +

Sets the VBO stride and pointer for the specified vertex attribute.

+
Returns
True if the vertex attribute has been found
+ +
+
+ +

◆ setLogOnErrors()

+ +
+
+ + + + + + + + +
void ncine::Shader::setLogOnErrors (bool shouldLogOnErrors)
+
+ +

Sets the automatic log on errors flag.

+

If the flag is set to true, the shader will automatically log compilation and linking errors.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • include/ncine/Shader.h
  • +
  • src/graphics/Shader.cpp
  • +
+
+ + + + diff --git a/master/classncine_1_1_shader__coll__graph.map b/master/classncine_1_1_shader__coll__graph.map new file mode 100644 index 0000000000..001b7b968f --- /dev/null +++ b/master/classncine_1_1_shader__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classncine_1_1_shader__coll__graph.md5 b/master/classncine_1_1_shader__coll__graph.md5 new file mode 100644 index 0000000000..df61c1823c --- /dev/null +++ b/master/classncine_1_1_shader__coll__graph.md5 @@ -0,0 +1 @@ +d757f9663c98fd1a8d3f25c1eeec37ce \ No newline at end of file diff --git a/master/classncine_1_1_shader__coll__graph.png b/master/classncine_1_1_shader__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..756e723fb1fc4fffcf4a71435b58bfb51115fd55 GIT binary patch literal 2855 zcmbuBc{o&U8^BMLH4&5E=VY4P*PB-uL>x?~m`#?>W~w&vl*iocp<-d->gWniI}ON@9xy1VK`V zu^4ACUjlcim=Ji@=3v=i62aTqV4$@>S0Rm@1wj&hhcQ-1qw*&2U$U2T*q-PwDVDlJ zU&UEQMxHK*6feYB`KGFii5!H@8kQEVlh?SWzJ*fQG9WJ}Ty(@l9@7DqQwx)fj?63x z*ylGOpPf+u;GqSJiA{KNvZ93X?Da>+rPUoTnpK+OP#se^-o{--+jT+`a4*pr(aR^A zh3o$kJukIsrSh=u$(N0xT%l#BQdw_rZ+(4zi8Nb*A*u6a|L0eW&oneoDA1%i1Y=cmHj;>|+ST>bPEh{UluD;;vDxcpqG%LN$ z^!w=Onc!g6&6{V3+ZD@>j&ZrSh(yD9D~p1J(GO}dF-y4y{(_~YYIkk(m5I;Q^CO)u z#&@vr%*@OqM~=*?4S)YWIzB$MAxHP5s-ohL$;qIAfCfC{T0?`W`Hfh3xra)O_=5)z zP`;|FszW64zlSnu)o#Vq%*+gltRR#9ITSB0m+M>xgJe`yzkT}T?(Mz0x)LLC)!D_R z_%z+?MMQ0FEsM>LUznjY7#haL?&`N51vHeEr7`eVQ&QSBgZp3J$Edryxebw(m6f%$ zw164V=!?u!hq$;n3F4!GunCR6`U@!s9`rR{azPM#&Y+QT87yjilSRU+dAzxv9s~`9 z8gJXS4N83W%;;)|#7guzD9ntYshOagH53ws5(!QXe`M6?K<^=ka)*q`i*Jr0M=9QRvf` zFL>Bvjq8zj z2V#oBaMunF3E|WfCMOH0VFW*US+O=^Vq#9jein;Gr(1F9#f63YwG~1>JzZzX2pVjR z;dga);qEKAdI_cdd`#K(sg_1t8R;bPCq6Sjery?AtK%96LF6lSS~9k_xarKSFiTta9x*$MF)q5wyCJh zbO6&k7FZ0=FM`7Y2LLzy*)=I6L+U3_C&$g(J9CrSSk0rKvUp$LJqSd4Mg~YGLj!f+2^q==?N*`F?(E*@A&voZ zS?5FGDqp{Tot&JUiTp0c*T+Y#!x%ltV@??cp3}4Eggr`Z=I-tgjrE<_xp!4(erxja z<44F2JI77aXPpE(2OIg#0)f$1Qgc|?p$2J;Z|Yv}oNV-<<%}+XQjt6G<1l4DFYQ!9T8e*Km7BK!H^ON;7}qK9=~wY!rZ)kJQbaY zrEEy*9vgeEeoM(xUgFS=?FQjnZ(GZ>g%gIGii`U#73g|T>K1CHhq__v^*TE74(f3U zmp5P6SX*Yc3`<;80&80hbM{32e&WhCaYSq&64%BMa0j*Y@t&Tw-4414^$xuQN*w+a z?G6@3&V$Q}XRyEZwlfc7?;Y64q0t&S)Z@+sW=wRn`&nKBH|61mmQXL}IcpZW91GV% zL~q!uf>dk$ks&3ey>+X>=d%5J0cRdj$^44qnW$zOt)QZ!^Jw;}*Q@MRpVg6@Z8j*> zs>H^N%4KoGslMUw{PFh&CRt1UzM>JL_VZ?(@eSH=Z*6^I_yP~)nwBYkRC7vg=gnJ zSBZxZUaPh8yXB4Jmlp;Z*Qs7FPUG>f{ZRAs^W-Oi2x3D33n7x+-P3~#WIqA4j*N_i z68G<@3ma;^uBiJmb`fNtoV+~2&kv@o%$xo*EOB&zR8ST;ES8j%6w<5V=M1-*&1OT1 z%gf6^uf|66#UVPK4%h|qDV8b#oH(J9Vco3P@#RZ2pr~2oREyq5 z=tF;hL4H1t%tRuQAY=T9kFKTImPAKKqm9g9}l9Cd67)<*_-3*{%fP#6&(&FM_VPX1cbYB%gGN*lVdU|bPb_kd(bGzl#z<{1_YdTOP=F+7y zm#0+f^y2)FH<{b2D=Tv?;smQJOQ1f@21P|oe7YPNu;{z7S;xEajE_&)NQZJl!kVzC zw0Xj6Y@VR$BqFWm6g{cJ^EoKh!cap)!{|l9t(`UU$`c;Ui@WvKt=q1~|Ge0~-dj#|`g=Od6}keImmt@msu)1WI@SwTUeySp2L0FFny zi?3X{BB`iTS6{DHu^n>q^duD&ygyxSV{HvVc6YSbK|g=}0swBCYgeD1no`wN{Vd|{ zq36SI{ao#D2ft0B=y-a1I!NM`eh<)v4Gc0AJ;5oXot&Hi&XVb`ylxOeL-jN?G_9V{K^FjudsP*x zWT|owvM&19SWOLDI%OwJfZ$4^Ncrd z{0Rg`Ype98O-l<47;9@#Lv(a>fWwT8B0@t$fnq*BJ|ZF_ + + + diff --git a/master/classncine_1_1_shader__inherit__graph.md5 b/master/classncine_1_1_shader__inherit__graph.md5 new file mode 100644 index 0000000000..df61c1823c --- /dev/null +++ b/master/classncine_1_1_shader__inherit__graph.md5 @@ -0,0 +1 @@ +d757f9663c98fd1a8d3f25c1eeec37ce \ No newline at end of file diff --git a/master/classncine_1_1_shader__inherit__graph.png b/master/classncine_1_1_shader__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..756e723fb1fc4fffcf4a71435b58bfb51115fd55 GIT binary patch literal 2855 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 + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::ShaderState Member List
+
+
+ +

This is the complete list of members for ncine::ShaderState, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
copyToUniformBlock(const char *blockName, unsigned int destIndex, unsigned char *src, unsigned int numBytes) (defined in ncine::ShaderState)ncine::ShaderState
copyToUniformBlock(const char *blockName, unsigned char *src, unsigned int numBytes) (defined in ncine::ShaderState)ncine::ShaderState
copyToUniformBlock(const char *blockName, unsigned char *src) (defined in ncine::ShaderState)ncine::ShaderState
node() constncine::ShaderStateinline
resetShader()ncine::ShaderState
setNode(DrawableNode *node)ncine::ShaderState
setShader(Shader *shader)ncine::ShaderState
setTexture(unsigned int unit, const Texture *texture)ncine::ShaderState
setTexture(const Texture *texture)ncine::ShaderStateinline
setUniformFloat(const char *blockName, const char *name, const float *vector) (defined in ncine::ShaderState)ncine::ShaderState
setUniformFloat(const char *blockName, const char *name, float value0) (defined in ncine::ShaderState)ncine::ShaderState
setUniformFloat(const char *blockName, const char *name, float value0, float value1) (defined in ncine::ShaderState)ncine::ShaderState
setUniformFloat(const char *blockName, const char *name, float value0, float value1, float value2) (defined in ncine::ShaderState)ncine::ShaderState
setUniformFloat(const char *blockName, const char *name, float value0, float value1, float value2, float value3) (defined in ncine::ShaderState)ncine::ShaderState
setUniformFloat(const char *blockName, const char *name, const Vector2f &vector) (defined in ncine::ShaderState)ncine::ShaderState
setUniformFloat(const char *blockName, const char *name, const Vector3f &vector) (defined in ncine::ShaderState)ncine::ShaderState
setUniformFloat(const char *blockName, const char *name, const Vector4f &vector) (defined in ncine::ShaderState)ncine::ShaderState
setUniformFloat(const char *blockName, const char *name, const Colorf &color) (defined in ncine::ShaderState)ncine::ShaderState
setUniformInt(const char *blockName, const char *name, const int *vector) (defined in ncine::ShaderState)ncine::ShaderState
setUniformInt(const char *blockName, const char *name, int value0) (defined in ncine::ShaderState)ncine::ShaderState
setUniformInt(const char *blockName, const char *name, int value0, int value1) (defined in ncine::ShaderState)ncine::ShaderState
setUniformInt(const char *blockName, const char *name, int value0, int value1, int value2) (defined in ncine::ShaderState)ncine::ShaderState
setUniformInt(const char *blockName, const char *name, int value0, int value1, int value2, int value3) (defined in ncine::ShaderState)ncine::ShaderState
setUniformInt(const char *blockName, const char *name, const Vector2i &vector) (defined in ncine::ShaderState)ncine::ShaderState
setUniformInt(const char *blockName, const char *name, const Vector3i &vector) (defined in ncine::ShaderState)ncine::ShaderState
setUniformInt(const char *blockName, const char *name, const Vector4i &vector) (defined in ncine::ShaderState)ncine::ShaderState
shader() constncine::ShaderStateinline
ShaderState() (defined in ncine::ShaderState)ncine::ShaderState
ShaderState(DrawableNode *node, Shader *shader)ncine::ShaderState
uniformBlockSize(const char *blockName) (defined in ncine::ShaderState)ncine::ShaderState
~ShaderState() (defined in ncine::ShaderState)ncine::ShaderState
+ + + + diff --git a/master/classncine_1_1_shader_state.html b/master/classncine_1_1_shader_state.html new file mode 100644 index 0000000000..2342fae902 --- /dev/null +++ b/master/classncine_1_1_shader_state.html @@ -0,0 +1,285 @@ + + + + + + + +nCine: ncine::ShaderState Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::ShaderState Class Reference
+
+
+ +

Shader state class for the user to use custom shaders. + More...

+ +

#include <ShaderState.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

ShaderState (DrawableNode *node, Shader *shader)
 Constructs a shader state object and assigns to it a node and a shader.
 
+const DrawableNodenode () const
 Returns the drawable node affected by the shader state.
 
bool setNode (DrawableNode *node)
 Sets the drawable node affected by the shader state. More...
 
+const Shadershader () const
 Return the associated custom shader.
 
bool setShader (Shader *shader)
 Sets the associated custom shader. More...
 
bool resetShader ()
 Triggers a shader update without setting a new shader. More...
 
bool setTexture (unsigned int unit, const Texture *texture)
 Assigns a texture to the specified texture unit. More...
 
+bool setTexture (const Texture *texture)
 Assigns a texture to texture unit zero.
 
+bool setUniformInt (const char *blockName, const char *name, const int *vector)
 
+bool setUniformInt (const char *blockName, const char *name, int value0)
 
+bool setUniformInt (const char *blockName, const char *name, int value0, int value1)
 
+bool setUniformInt (const char *blockName, const char *name, int value0, int value1, int value2)
 
+bool setUniformInt (const char *blockName, const char *name, int value0, int value1, int value2, int value3)
 
+bool setUniformInt (const char *blockName, const char *name, const Vector2i &vector)
 
+bool setUniformInt (const char *blockName, const char *name, const Vector3i &vector)
 
+bool setUniformInt (const char *blockName, const char *name, const Vector4i &vector)
 
+bool setUniformFloat (const char *blockName, const char *name, const float *vector)
 
+bool setUniformFloat (const char *blockName, const char *name, float value0)
 
+bool setUniformFloat (const char *blockName, const char *name, float value0, float value1)
 
+bool setUniformFloat (const char *blockName, const char *name, float value0, float value1, float value2)
 
+bool setUniformFloat (const char *blockName, const char *name, float value0, float value1, float value2, float value3)
 
+bool setUniformFloat (const char *blockName, const char *name, const Vector2f &vector)
 
+bool setUniformFloat (const char *blockName, const char *name, const Vector3f &vector)
 
+bool setUniformFloat (const char *blockName, const char *name, const Vector4f &vector)
 
+bool setUniformFloat (const char *blockName, const char *name, const Colorf &color)
 
+unsigned int uniformBlockSize (const char *blockName)
 
+bool copyToUniformBlock (const char *blockName, unsigned int destIndex, unsigned char *src, unsigned int numBytes)
 
+bool copyToUniformBlock (const char *blockName, unsigned char *src, unsigned int numBytes)
 
+bool copyToUniformBlock (const char *blockName, unsigned char *src)
 
+

Detailed Description

+

Shader state class for the user to use custom shaders.

+

Member Function Documentation

+ +

◆ resetShader()

+ +
+
+ + + + + + + +
bool ncine::ShaderState::resetShader ()
+
+ +

Triggers a shader update without setting a new shader.

+
Note
Use this method when the content of the currently assigned shader changes.
+ +
+
+ +

◆ setNode()

+ +
+
+ + + + + + + + +
bool ncine::ShaderState::setNode (DrawableNodenode)
+
+ +

Sets the drawable node affected by the shader state.

+
Returns
True if the node has been changed
+ +
+
+ +

◆ setShader()

+ +
+
+ + + + + + + + +
bool ncine::ShaderState::setShader (Shadershader)
+
+ +

Sets the associated custom shader.

+
Returns
True if the shader has been changed
+ +
+
+ +

◆ setTexture()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool ncine::ShaderState::setTexture (unsigned int unit,
const Texturetexture 
)
+
+ +

Assigns a texture to the specified texture unit.

+
Note
Contrary to uniforms, there is no need to set the texture again when you reset a shader or when you set a new one.
+
Returns
True if the texture has been assigned
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classncine_1_1_size_affector-members.html b/master/classncine_1_1_size_affector-members.html new file mode 100644 index 0000000000..0e99772358 --- /dev/null +++ b/master/classncine_1_1_size_affector-members.html @@ -0,0 +1,119 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::SizeAffector Member List
+
+
+ +

This is the complete list of members for ncine::SizeAffector, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
addSizeStep(float age, float scale) (defined in ncine::SizeAffector)ncine::SizeAffectorinline
addSizeStep(float age, float scaleX, float scaleY) (defined in ncine::SizeAffector)ncine::SizeAffector
addSizeStep(float age, const Vector2f &scale) (defined in ncine::SizeAffector)ncine::SizeAffectorinline
addSizeStep(const SizeStep &step) (defined in ncine::SizeAffector)ncine::SizeAffectorinline
affect(Particle *particle, float normalizedAge) overridencine::SizeAffectorvirtual
ncine::ParticleAffector::affect(Particle *particle)ncine::ParticleAffector
baseScale() constncine::SizeAffectorinline
baseScaleX() const (defined in ncine::SizeAffector)ncine::SizeAffectorinline
baseScaleY() const (defined in ncine::SizeAffector)ncine::SizeAffectorinline
clearSteps() overridencine::SizeAffectorinlinevirtual
clone() constncine::SizeAffectorinline
enabled_ncine::ParticleAffectorprotected
isEnabled() constncine::ParticleAffectorinline
numSteps() const overridencine::SizeAffectorinlinevirtual
operator=(SizeAffector &&)=defaultncine::SizeAffector
ParticleAffector(Type type) (defined in ncine::ParticleAffector)ncine::ParticleAffectorinline
ParticleAffector(const ParticleAffector &other)=defaultncine::ParticleAffectorprotected
removeStep(unsigned int index) overridencine::SizeAffectorvirtual
setBaseScale(float baseScale)ncine::SizeAffectorinline
setBaseScale(const Vector2f &baseScale)ncine::SizeAffectorinline
setBaseScaleX(float baseScaleX) (defined in ncine::SizeAffector)ncine::SizeAffectorinline
setBaseScaleY(float baseScaleY) (defined in ncine::SizeAffector)ncine::SizeAffectorinline
setEnabled(bool enabled)ncine::ParticleAffectorinline
SizeAffector()ncine::SizeAffectorinline
SizeAffector(float baseScale)ncine::SizeAffectorinlineexplicit
SizeAffector(float baseScaleX, float baseScaleY)ncine::SizeAffectorinline
SizeAffector(const Vector2f &baseScale)ncine::SizeAffectorinlineexplicit
SizeAffector(SizeAffector &&)=defaultncine::SizeAffector
SizeAffector(const SizeAffector &other)=defaultncine::SizeAffectorprotected
steps() (defined in ncine::SizeAffector)ncine::SizeAffectorinline
steps() const (defined in ncine::SizeAffector)ncine::SizeAffectorinline
Type enum name (defined in ncine::ParticleAffector)ncine::ParticleAffector
type() constncine::ParticleAffectorinline
type_ncine::ParticleAffectorprotected
~ParticleAffector() (defined in ncine::ParticleAffector)ncine::ParticleAffectorinlinevirtual
+ + + + diff --git a/master/classncine_1_1_size_affector.html b/master/classncine_1_1_size_affector.html new file mode 100644 index 0000000000..cd1de5488c --- /dev/null +++ b/master/classncine_1_1_size_affector.html @@ -0,0 +1,265 @@ + + + + + + + +nCine: ncine::SizeAffector Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::SizeAffector Class Reference
+
+
+ +

Particle size affector. + More...

+ +

#include <ParticleAffectors.h>

+
+Inheritance diagram for ncine::SizeAffector:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for ncine::SizeAffector:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + +

+Classes

struct  SizeStep
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

SizeAffector ()
 Constructs a size affector with a default base scale factor.
 
SizeAffector (float baseScale)
 Constructs a size affector with a base scale factor as a reference.
 
SizeAffector (float baseScaleX, float baseScaleY)
 Constructs a size affector with a horizontal and a vertical base scale factor as a reference.
 
SizeAffector (const Vector2f &baseScale)
 Constructs a size affector with a vector base scale factor as a reference.
 
SizeAffector (SizeAffector &&)=default
 Default move constructor.
 
+SizeAffectoroperator= (SizeAffector &&)=default
 Default move assignment operator.
 
+SizeAffector clone () const
 Returns a copy of this object.
 
+void affect (Particle *particle, float normalizedAge) override
 Affects the size of the specified particle.
 
+void addSizeStep (float age, float scale)
 
+void addSizeStep (float age, float scaleX, float scaleY)
 
+void addSizeStep (float age, const Vector2f &scale)
 
+void addSizeStep (const SizeStep &step)
 
+unsigned int numSteps () const override
 Returns the number of steps.
 
+void removeStep (unsigned int index) override
 Removes the step at the specified position index.
 
+void clearSteps () override
 Removes all steps.
 
+nctl::Array< SizeStep > & steps ()
 
+const nctl::Array< SizeStep > & steps () const
 
+float baseScaleX () const
 
+void setBaseScaleX (float baseScaleX)
 
+float baseScaleY () const
 
+void setBaseScaleY (float baseScaleY)
 
+const Vector2fbaseScale () const
 Returns the base scale factor that will be multiplied by all steps.
 
+void setBaseScale (float baseScale)
 Sets a base scale factor that will be multiplied by all steps.
 
+void setBaseScale (const Vector2f &baseScale)
 Sets a base scale factor with a Vector2f, that will be multiplied by all steps.
 
- Public Member Functions inherited from ncine::ParticleAffector
ParticleAffector (Type type)
 
+void affect (Particle *particle)
 Affects a property of the specified particle.
 
+Type type () const
 Returns the affector type.
 
+bool isEnabled () const
 Returns true if the affector is enabled.
 
+void setEnabled (bool enabled)
 Enables or disables the affector.
 
+ + + + + + + + +

+Protected Member Functions

SizeAffector (const SizeAffector &other)=default
 Protected default copy constructor used to clone objects.
 
- Protected Member Functions inherited from ncine::ParticleAffector
ParticleAffector (const ParticleAffector &other)=default
 Protected default copy constructor used to clone objects.
 
+ + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ncine::ParticleAffector
enum class  Type {
+  COLOR +, SIZE +, ROTATION +, POSITION +,
+  VELOCITY +
+ }
 
- Protected Attributes inherited from ncine::ParticleAffector
+Type type_
 Affector type.
 
+bool enabled_
 A flag indicating whether the affector is enabled or not.
 
+

Detailed Description

+

Particle size affector.

+

The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classncine_1_1_size_affector__coll__graph.map b/master/classncine_1_1_size_affector__coll__graph.map new file mode 100644 index 0000000000..66d5a73b39 --- /dev/null +++ b/master/classncine_1_1_size_affector__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classncine_1_1_size_affector__coll__graph.md5 b/master/classncine_1_1_size_affector__coll__graph.md5 new file mode 100644 index 0000000000..cd166878d9 --- /dev/null +++ b/master/classncine_1_1_size_affector__coll__graph.md5 @@ -0,0 +1 @@ +c34a0ba3e647258bd639ed5ba4a7344f \ No newline at end of file diff --git a/master/classncine_1_1_size_affector__coll__graph.png b/master/classncine_1_1_size_affector__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..fe3bf6335be217b20aeb04d5dec2e27a79edf71c GIT binary patch literal 4120 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 F{{mQv`al2x literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_size_affector__inherit__graph.map b/master/classncine_1_1_size_affector__inherit__graph.map new file mode 100644 index 0000000000..66d5a73b39 --- /dev/null +++ b/master/classncine_1_1_size_affector__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classncine_1_1_size_affector__inherit__graph.md5 b/master/classncine_1_1_size_affector__inherit__graph.md5 new file mode 100644 index 0000000000..cd166878d9 --- /dev/null +++ b/master/classncine_1_1_size_affector__inherit__graph.md5 @@ -0,0 +1 @@ +c34a0ba3e647258bd639ed5ba4a7344f \ No newline at end of file diff --git a/master/classncine_1_1_size_affector__inherit__graph.png b/master/classncine_1_1_size_affector__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..fe3bf6335be217b20aeb04d5dec2e27a79edf71c GIT binary patch literal 4120 zcmc&%i8s_=|Nmqs`!be>NlGEf5+zH@mL%CFVh}?^S+ZqmvF{0kY{|YS`xY{juaOYS z7>s>4r75Ptb3NxgzvcY?fZv&O=g#@ex%YGL`@XgtZEU2+!6w26K@i7veQguaSA+JD zg$aDSQjaHsjtO}~Pa8To{N%M4r$7+bz;$gcGym5c!~kPH7X&kTi|(1#i3B9Su{K)0 zM9;mXBzrt&WQ@LWm?v3P)y^DO;#zD_OA*mYZV($8lVW@GKGjRVG%O}t$|RU^p+vw< z$IN&WqVu}&az5aI>|C7uf`KLaMrdw^D3Q3nP0Ly6e@T46n;?(95=H)q$!MXwsv6sU zgW*4|e|DDBM3$J}2%V;L%JYO-<{BftY}PzI{v zSeU3N2LgeJUt7K;$8(nLKdn0YW`+V|ettd^+BDzTe&L@~?r3cx6%RNxv;MvAp_dmO z?$IYaUdc7I2>Fxz7{@jE)lj|Y<45hc#l;0pO+wAh&8{d^SBvi&Hw?yv6}oF{d($FI zJVUK*Wo5;xJ+OX=nx!73d@+F@_Xy04QAUfHn3`TD=9HJq7-g##HsFOECmKBw7Za{& zYinoue*gacp||(*%1YTVmvl{pW=LG)bO_;iu)9c|6h^JBXl7}N87pL9U~oKHe`aNc zHN)`!>bqY>CZ*u@5$5F<;wMkO9iV1ridb1&mk#_{9X$%i3D@B_aXEYf0=-ISJ;pyq z^L=;84aQCqi5dDQkp;T($iBWl8nvZGwE;CExwyWLr&88%V-?mtA|fI}j&Wd%wS1?I zmWdX@!RmzfC_Zm5FJwbQ1HPx{xd06IbBzmr@q=yxywo=Y48ji%CgyrRc;E!b)$Z*0 zFOo=I(D{TpOkJHKq18{$wA9S49zETW-A);^!DF!zM~t&3CnuE>N+ssTFKA$eE{E=` zWhtR}Q~DS1Q&Tw$^Yi4jJGeZwmygfaas>Lq-<=&-xVMfD<2HrjOwY{egsjEL+BC$O zTUxpk{gRWD4G|mj@)P!YQ&CYY42+EVZEf)WG})fv!W&)tq2*-ICue8JzkPd>pP&EA ziR9y_P8FJ>!3^xXySq(Kb``|b17FBHVn6ivAC*om>vz;QG-PmOmz9-`ijD1A87bxw z7B2mbNjZHBd9c4%Qd!C9$j%$hKq8Us-hg*!FojGcuG%e|_9-_G9#Vzg*}15&#DtssR)HCX=o)g)J;CxldY*BwO0p z=;-LMLo!lQq;Z*4gRw@>dym(~WZT{LmXaGO%O`lFtpWl9vT$IduXcBKN=6$zr#0$v z`X_l|Vq#UkhW}na80~N^lGFKCu7-1*yoI@WFB}fHGBxGvj5m{Zb|0@=SW;9_z@(-M zXjYdaY%gePF8=+qr3h8z<%Qi#OG)X0YKDhRD*qZGbT9pk=|%1zjE#*!VT+6R`C+i` z$w|0`Uc$PU4I?8X1nKGN?Z52@&u-Vh$^wFlX=L5((a~t)sJI zn^F~`N>!ARmVOo<&iFbzd)Ha6lcvyFWv=%p`y4T(8z7#&&?Fix->c%(97FBXb^{wn0=vh)d@C;9UUbBvI6|Ao7v>#Ez^e zh)=I(IK<7*|M6hVJ#)OMxmj2`l?@QH=KXu^z(7?_ghqw;<)EOT$rj)8o1YG>>pB3% zI${Oo=%BlI?|yB_(g;@d^72YbNhzqa3#Ja4Z*Mz_$s-wxZsl?U(7t=8aEQQ>qMH~+ z7tZyK4N6(5Vw_j$`roZi+|G|VdH1oiaYFKR*4EY!{rtAfYJ7x+D0e>Ho8@fKtwLz%hwICm#_wsAYkAxhX0_*7x zb_eZE(@y{`M@?9|wZ=vkRozTW<1{>LHvoN}umAPp`iQMF+Ri~DqBc0_tWh>q4(V8k zQNH=7UEpocvOvRTo^c6z%&-|e@Zy zGhe48Jnu8TRwpQGAl7xRk}l-EeXFSy67s^NFDWxKGBZ<`&usK?$QfnjqZ{p7%2F$7 zKVo(T^T;Amh8Bry<6GBCztWx+8uW4>%W{}63seTnq0zh_XYtjCBICp*3b>t}>vb#2 zTnfk{pT5^+7)uil+LW+ixuG4Xw=sblm5tiGd*)_pT4=N)6Ia7Rx>Tz4rv4>U%0=$add|O;AwKKPbqrUihb6oy%a(xyGRdGAH~Zx8i;LvX}V$ zbT2olaH&nZ=FERJx;JLhJaBkiv-c9RH%0&on-2NQp`oDx*rR7>mlG|cbWSVWZ;wjR zH!x7}6;^W`Pf1IQAT)YPNJ=sRg8`xe0uOhC2QlW=EB-h!^$FMdHWmg7r4pAQs^}Kl z+uO^+%BtnzagLvj5iq>QsgKtXb3UK2y1UuB_3-EXbp{588KU2`xlMX*Zepz?ZniMp zjt(-ju$b*jIh~|`l4&IfI28Hk&u$QYIEL-~_`W8Of1~Z~IiS(;z{Dh^rP-#YrY?Ff z8a7gJLOr|NOY(l3cVA!js~VtEse!*%M{l5~y1VJ%#e0OsAcX=%fMvB^JZhv!Tt!6? zxX$u)rzVX?n^|3DgIwL*t^&=jvTcosh+x8FUyTit~~~e)r~`Fie;&IV)L|~Ly*ho*IFhfydgWJNagJd7cQKUmF>+@4?6#F<_Z)B z;?=Y=R3GRu*>of{^gwxTZ#GsANQTcC9i-wh8K!@-8`yJ={|_XH0rop&5)>8|27ypV z5ApKyex-sliOkLxMIw`BCepoTcDSS-ReA;Ds2F83VZpI7kTb833LAp$TY|KQvCZ{NPz1B=6``np9D$|@>8rpj2>_^w%eBM=He)Uayw z5Cz%R*w`3?c4nS)?G$WoZ^LmUGO4GguC8Z)?=JwxQ;uWGGykN@sN&LJzm5ZTcH+z# z7LYCiM@?*P<3SypT3hKMHFfpm%uKfCyH$TeMn`Yy{qeN67T({P<9aaFCQQ%79%gkG zi;X|_Xpib^W@)*dxD7yGUfsc_s5po1J9+v6pyAwsr?WF7l+?daQdJd^ks%Bs5c@EU ze0FkBMotbF#UtUy1ShM(yzI^qHA;U1jZz@0!9c*9_Gj-ayg<4x%yYgi}wa@9iiVAL~>-ny8LP7$R zv-gHw=sW}+hs9Fd2EW*qlyf|1=87;Vyoy3eb*8io!*GwH5)<`+rMBL+$<+uxJXLKy zJqZ;ROGp1LVr%4w4_DTSt%62IMuFqqLe~IUz?CB$M4TV}b?@GBgS6-8?@N(L>6;*S z4k9k~BIREhoN`hSMtlLNgJuTlAP{<3}dwM3a@=4BoN|vCFv{ZLc**rWvXt&2-*_BAhK~JbF#TOsVGJt#$ z0V3z2wycd;gNSnE$dRb1s1M+|v8m~EuouU^m#5s)v)%2b${^k{k7CRRS!sJ$NWQx}lx z@zxaj!^=;dPg`3rzj^bf#&zh;XJwx4tLo_EZzcZQME<9tXxFsRPV{aN8dp^1jYVEOFg*T$`RUjJl)T%v$m2r^0atzKx{i@{)m8gv F{{mQv`al2x literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_sprite-members.html b/master/classncine_1_1_sprite-members.html new file mode 100644 index 0000000000..159c3ca2a3 --- /dev/null +++ b/master/classncine_1_1_sprite-members.html @@ -0,0 +1,282 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::Sprite Member List
+
+
+ +

This is the complete list of members for ncine::Sprite, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
aabb() constncine::DrawableNodeinline
aabb_ncine::DrawableNodeprotected
AabbBit enum value (defined in ncine::SceneNode)ncine::SceneNodeprotected
absAlpha() constncine::SceneNodeinline
absAnchorPoint() constncine::SceneNodeinline
absColor() constncine::SceneNodeinline
absColor_ncine::SceneNodeprotected
absHeight() constncine::DrawableNodeinlinevirtual
absLayer() constncine::SceneNodeinline
absLayer_ncine::SceneNodeprotected
absPosition() constncine::SceneNodeinline
absPosition_ncine::SceneNodeprotected
absRotation() constncine::SceneNodeinline
absRotation_ncine::SceneNodeprotected
absScale() constncine::SceneNodeinline
absScaleFactor_ncine::SceneNodeprotected
absSize() constncine::DrawableNodeinline
absWidth() constncine::DrawableNodeinlinevirtual
addChildNode(SceneNode *childNode)ncine::SceneNode
alpha() constncine::SceneNodeinline
AnchorBottomLeft (defined in ncine::DrawableNode)ncine::DrawableNodestatic
AnchorBottomRight (defined in ncine::DrawableNode)ncine::DrawableNodestatic
AnchorCenter (defined in ncine::DrawableNode)ncine::DrawableNodestatic
anchorPoint() constncine::DrawableNodeinline
anchorPoint_ncine::SceneNodeprotected
AnchorTopLeft (defined in ncine::DrawableNode)ncine::DrawableNodestatic
AnchorTopRight (defined in ncine::DrawableNode)ncine::DrawableNodestatic
BaseSprite(BaseSprite &&)=defaultncine::BaseSprite
BaseSprite(SceneNode *parent, Texture *texture, float xx, float yy)ncine::BaseSpriteprotected
BaseSprite(SceneNode *parent, Texture *texture, const Vector2f &position)ncine::BaseSpriteprotected
BaseSprite(const BaseSprite &other)ncine::BaseSpriteprotected
BlendingFactor enum namencine::DrawableNode
BlendingPreset enum namencine::DrawableNode
childOrderIndex() constncine::SceneNode
childOrderIndex_ncine::SceneNodeprotected
children()ncine::SceneNodeinline
children() constncine::SceneNodeinline
children_ncine::SceneNodeprotected
clone() constncine::Spriteinline
color() constncine::SceneNodeinline
color_ncine::SceneNodeprotected
ColorBit enum value (defined in ncine::SceneNode)ncine::SceneNodeprotected
deleteChildrenOnDestruction() constncine::SceneNodeinline
destBlendingFactor() constncine::DrawableNode
DirtyBitPositions enum namencine::SceneNodeprotected
dirtyBits_ncine::SceneNodeprotected
draw(RenderQueue &renderQueue) overridencine::DrawableNodevirtual
DrawableNode(SceneNode *parent, float xx, float yy)ncine::DrawableNode
DrawableNode(SceneNode *parent, const Vector2f &position)ncine::DrawableNode
DrawableNode(SceneNode *parent)ncine::DrawableNodeexplicit
DrawableNode()ncine::DrawableNode
DrawableNode(DrawableNode &&)ncine::DrawableNode
DrawableNode(const DrawableNode &other)ncine::DrawableNodeprotected
drawEnabled_ (defined in ncine::SceneNode)ncine::SceneNodeprotected
flippedX_ncine::BaseSpriteprotected
flippedY_ncine::BaseSpriteprotected
fromId(unsigned int id)ncine::Objectstatic
height() constncine::DrawableNodeinlinevirtual
height_ncine::DrawableNodeprotected
id() constncine::Objectinline
instanceBlock_ (defined in ncine::BaseSprite)ncine::BaseSpriteprotected
isBlendingEnabled() constncine::DrawableNode
isDrawEnabled() constncine::SceneNodeinline
isEnabled() constncine::SceneNodeinline
isFlippedX() constncine::BaseSpriteinline
isFlippedY() constncine::BaseSpriteinline
isUpdateEnabled() constncine::SceneNodeinline
lastFrameRendered() constncine::DrawableNodeinline
lastFrameRendered_ncine::DrawableNodeprotected
lastFrameUpdated() constncine::SceneNodeinline
lastFrameUpdated_ncine::SceneNodeprotected
layer() constncine::SceneNodeinline
layer_ncine::SceneNodeprotected
localMatrix() constncine::SceneNodeinline
localMatrix_ncine::SceneNodeprotected
MaxNameLengthncine::Objectstatic
MinRotationncine::SceneNodestatic
move(float x, float y)ncine::SceneNodeinline
move(const Vector2f &position)ncine::SceneNodeinline
moveX(float x)ncine::SceneNodeinline
moveY(float y)ncine::SceneNodeinline
name() constncine::Object
Object(ObjectType type)ncine::Objectexplicit
Object(ObjectType type, const char *name)ncine::Object
Object(Object &&other)ncine::Object
Object(const Object &other)ncine::Objectprotected
ObjectType enum namencine::Object
operator=(Sprite &&)=defaultncine::Sprite
ncine::BaseSprite::operator=(BaseSprite &&)=defaultncine::BaseSprite
ncine::DrawableNode::operator=(DrawableNode &&)ncine::DrawableNode
ncine::SceneNode::operator=(SceneNode &&other)ncine::SceneNode
ncine::SceneNode::operator=(const SceneNode &)=deletencine::SceneNodeprotected
ncine::Object::operator=(Object &&other)ncine::Object
parent() constncine::SceneNodeinline
parent()ncine::SceneNodeinline
parent_ncine::SceneNodeprotected
position() constncine::SceneNodeinline
position_ncine::SceneNodeprotected
removeAllChildrenNodes()ncine::SceneNode
removeChildNode(SceneNode *childNode)ncine::SceneNode
removeChildNodeAt(unsigned int index)ncine::SceneNode
renderCommand_ncine::DrawableNodeprotected
resetTexture()ncine::BaseSprite
rotation() constncine::SceneNodeinline
rotation_ncine::SceneNodeprotected
scale() constncine::SceneNodeinline
scaleFactor_ncine::SceneNodeprotected
SceneNode(SceneNode *parent, float x, float y)ncine::SceneNode
SceneNode(SceneNode *parent, const Vector2f &position)ncine::SceneNode
SceneNode(SceneNode *parent)ncine::SceneNodeexplicit
SceneNode()ncine::SceneNode
SceneNode(SceneNode &&other)ncine::SceneNode
SceneNode(const SceneNode &other)ncine::SceneNodeprotected
setAbsAnchorPoint(float x, float y)ncine::SceneNodeinline
setAbsAnchorPoint(const Vector2f &point)ncine::SceneNodeinline
setAlpha(unsigned char alpha)ncine::SceneNodeinline
setAlphaF(float alpha)ncine::SceneNodeinline
setAnchorPoint(float xx, float yy)ncine::DrawableNode
setAnchorPoint(const Vector2f &point)ncine::DrawableNodeinline
setBlendingEnabled(bool blendingEnabled)ncine::DrawableNode
setBlendingFactors(BlendingFactor srcBlendingFactor, BlendingFactor destBlendingFactor)ncine::DrawableNode
setBlendingPreset(BlendingPreset blendingPreset)ncine::DrawableNode
setColor(Color color)ncine::SceneNodeinline
setColor(Colorf color)ncine::SceneNodeinline
setColor(unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha)ncine::SceneNodeinline
setColorF(float red, float green, float blue, float alpha)ncine::SceneNodeinline
setDeleteChildrenOnDestruction(bool shouldDeleteChildrenOnDestruction)ncine::SceneNodeinline
setDrawEnabled(bool drawEnabled)ncine::SceneNodeinline
setEnabled(bool isEnabled)ncine::SceneNodeinline
setFlippedX(bool flippedX)ncine::BaseSprite
setFlippedY(bool flippedY)ncine::BaseSprite
setLayer(uint16_t layer)ncine::SceneNodeinline
setLocalMatrix(const Matrix4x4f &localMatrix)ncine::SceneNodeinline
setName(const char *name)ncine::Object
setParent(SceneNode *parentNode)ncine::SceneNode
setPosition(float x, float y)ncine::SceneNodeinline
setPosition(const Vector2f &position)ncine::SceneNodeinline
setPositionX(float x)ncine::SceneNodeinline
setPositionY(float y)ncine::SceneNodeinline
setRotation(float rotation)ncine::SceneNodeinline
setScale(float scaleFactor)ncine::SceneNodeinline
setScale(float scaleFactorX, float scaleFactorY)ncine::SceneNodeinline
setScale(const Vector2f &scaleFactor)ncine::SceneNodeinline
setSize(float width, float height)ncine::BaseSprite
setSize(const Vector2f &size)ncine::BaseSpriteinline
setTexRect(const Recti &rect)ncine::BaseSprite
setTexture(Texture *texture)ncine::BaseSprite
setUpdateEnabled(bool updateEnabled)ncine::SceneNodeinline
setVisitOrderState(enum VisitOrderState visitOrderState)ncine::SceneNodeinline
setWorldMatrix(const Matrix4x4f &worldMatrix)ncine::SceneNodeinline
shaderHasChanged() overridencine::BaseSpriteprotectedvirtual
shouldDeleteChildrenOnDestruction_ncine::SceneNodeprotected
size() constncine::DrawableNodeinline
SizeBit enum value (defined in ncine::SceneNode)ncine::SceneNodeprotected
Sprite()ncine::Sprite
Sprite(SceneNode *parent, Texture *texture)ncine::Sprite
Sprite(Texture *texture)ncine::Spriteexplicit
Sprite(SceneNode *parent, Texture *texture, float xx, float yy)ncine::Sprite
Sprite(SceneNode *parent, Texture *texture, const Vector2f &position)ncine::Sprite
Sprite(Texture *texture, float xx, float yy)ncine::Sprite
Sprite(Texture *texture, const Vector2f &position)ncine::Sprite
Sprite(Sprite &&)=defaultncine::Sprite
Sprite(const Sprite &other)ncine::Spriteprotected
srcBlendingFactor() constncine::DrawableNode
sType() (defined in ncine::Sprite)ncine::Spriteinlinestatic
swapChildPointer(SceneNode *first, SceneNode *second)ncine::SceneNodeprotected
swapChildrenNodes(unsigned int firstIndex, unsigned int secondIndex)ncine::SceneNode
swapNodeBack()ncine::SceneNode
swapNodeForward()ncine::SceneNode
texRect() constncine::BaseSpriteinline
texRect_ncine::BaseSpriteprotected
texture() constncine::BaseSpriteinline
texture_ncine::BaseSpriteprotected
TextureBit enum value (defined in ncine::SceneNode)ncine::SceneNodeprotected
transform() (defined in ncine::SceneNode)ncine::SceneNodeprotectedvirtual
TransformationBit enum value (defined in ncine::SceneNode)ncine::SceneNodeprotected
type() constncine::Objectinline
type_ncine::Objectprotected
unlinkChildNode(SceneNode *childNode)ncine::SceneNode
update(float interval)ncine::SceneNodevirtual
updateAabb()ncine::DrawableNodeprotectedvirtual
updateCulling()ncine::DrawableNodeprotected
updateEnabled_ (defined in ncine::SceneNode)ncine::SceneNodeprotected
updateRenderCommand() overridencine::BaseSpriteprotectedvirtual
visit(RenderQueue &renderQueue, unsigned int &visitOrderIndex)ncine::SceneNodevirtual
visitOrderIndex() constncine::SceneNodeinline
visitOrderIndex_ncine::SceneNodeprotected
VisitOrderState enum name (defined in ncine::SceneNode)ncine::SceneNode
visitOrderState() constncine::SceneNodeinline
visitOrderState_ncine::SceneNodeprotected
width() constncine::DrawableNodeinlinevirtual
width_ncine::DrawableNodeprotected
withVisitOrder_ncine::SceneNodeprotected
worldMatrix() constncine::SceneNodeinline
worldMatrix_ncine::SceneNodeprotected
~DrawableNode() override (defined in ncine::DrawableNode)ncine::DrawableNode
~Object()ncine::Objectvirtual
~SceneNode() overridencine::SceneNode
+ + + + diff --git a/master/classncine_1_1_sprite.html b/master/classncine_1_1_sprite.html new file mode 100644 index 0000000000..53aa6aec03 --- /dev/null +++ b/master/classncine_1_1_sprite.html @@ -0,0 +1,963 @@ + + + + + + + +nCine: ncine::Sprite Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

A scene node representing a regular sprite. + More...

+ +

#include <Sprite.h>

+
+Inheritance diagram for ncine::Sprite:
+
+
Inheritance graph
+ + + + + + + + + +
[legend]
+
+Collaboration diagram for ncine::Sprite:
+
+
Collaboration graph
+ + + + + + + + + + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Sprite ()
 Default constructor for a sprite with no parent and no texture, positioned in the origin.
 
Sprite (SceneNode *parent, Texture *texture)
 Constructor for a sprite with a parent and texture, positioned in the relative origin.
 
Sprite (Texture *texture)
 Constructor for a sprite with a texture but no parent, positioned in the origin.
 
Sprite (SceneNode *parent, Texture *texture, float xx, float yy)
 Constructor for a sprite with a parent, a texture and a specified relative position.
 
Sprite (SceneNode *parent, Texture *texture, const Vector2f &position)
 Constructor for a sprite with a parent, a texture and a specified relative position as a vector.
 
Sprite (Texture *texture, float xx, float yy)
 Constructor for a sprite with a texture and a specified position but no parent.
 
Sprite (Texture *texture, const Vector2f &position)
 Constructor for a sprite with a texture and a specified position as a vector but no parent.
 
Sprite (Sprite &&)=default
 Default move constructor.
 
+Spriteoperator= (Sprite &&)=default
 Default move assignment operator.
 
+Sprite clone () const
 Returns a copy of this object.
 
- Public Member Functions inherited from ncine::BaseSprite
BaseSprite (BaseSprite &&)=default
 Default move constructor.
 
+BaseSpriteoperator= (BaseSprite &&)=default
 Default move assignment operator.
 
+void setSize (float width, float height)
 Sets the sprite size.
 
+void setSize (const Vector2f &size)
 Sets the sprite size with a Vector2f
 
+const Texturetexture () const
 Gets the texture object.
 
void setTexture (Texture *texture)
 Sets the texture object. More...
 
void resetTexture ()
 Triggers a texture update without setting a new texture. More...
 
+Recti texRect () const
 Gets the texture source rectangle for blitting.
 
+void setTexRect (const Recti &rect)
 Sets the texture source rectangle for blitting.
 
+bool isFlippedX () const
 Returns true if the sprite texture is horizontally flipped.
 
+void setFlippedX (bool flippedX)
 Flips the texture rect horizontally.
 
+bool isFlippedY () const
 Returns true if the sprite texture is vertically flipped.
 
+void setFlippedY (bool flippedY)
 Flips the texture rect vertically.
 
- Public Member Functions inherited from ncine::DrawableNode
DrawableNode (SceneNode *parent, float xx, float yy)
 Constructor for a drawable node with a parent and a specified relative position.
 
DrawableNode (SceneNode *parent, const Vector2f &position)
 Constructor for a drawable node with a parent and a specified relative position as a vector.
 
DrawableNode (SceneNode *parent)
 Constructor for a drawable node with a parent and positioned in the relative origin.
 
DrawableNode ()
 Constructor for a drawable node with no parent and positioned in the origin.
 
DrawableNode (DrawableNode &&)
 Default move constructor.
 
+DrawableNodeoperator= (DrawableNode &&)
 Default move assignment operator.
 
+bool draw (RenderQueue &renderQueue) override
 Updates the draw command and adds it to the queue.
 
+virtual float width () const
 Returns the width of the node area.
 
+virtual float height () const
 Returns the height of the node area.
 
+Vector2f size () const
 Returns the size of the node area.
 
+virtual float absWidth () const
 Returns the absolute width of the node area.
 
+virtual float absHeight () const
 Returns the absolute height of the node area.
 
+Vector2f absSize () const
 Returns the absolute size of the node area.
 
+Vector2f anchorPoint () const
 Gets the transformation anchor point.
 
void setAnchorPoint (float xx, float yy)
 Sets the transformation anchor point. More...
 
+void setAnchorPoint (const Vector2f &point)
 Sets the transformation anchor point with a Vector2f
 
+bool isBlendingEnabled () const
 Returns true if the node renders with blending enabled.
 
+void setBlendingEnabled (bool blendingEnabled)
 Sets the blending state for node rendering.
 
+BlendingFactor srcBlendingFactor () const
 Returns the source blending factor.
 
+BlendingFactor destBlendingFactor () const
 Returns the destination blending factor.
 
+void setBlendingPreset (BlendingPreset blendingPreset)
 Sets a blending preset for source and destination blending factors.
 
+void setBlendingFactors (BlendingFactor srcBlendingFactor, BlendingFactor destBlendingFactor)
 Sets a specific source and destination blending factors.
 
+unsigned long int lastFrameRendered () const
 Returns the last frame in which any of the viewports have rendered this node (node was not culled)
 
+Rectf aabb () const
 Returns the axis-aligned bounding box of the node area in the last frame.
 
- Public Member Functions inherited from ncine::SceneNode
 SceneNode (SceneNode *parent, float x, float y)
 Constructor for a node with a parent and a specified relative position. More...
 
 SceneNode (SceneNode *parent, const Vector2f &position)
 Constructor for a node with a parent and a specified relative position as a vector. More...
 
 SceneNode (SceneNode *parent)
 Constructor for a node with a parent and positioned in the relative origin. More...
 
SceneNode ()
 Constructor for a node with no parent and positioned in the origin.
 
~SceneNode () override
 The destructor will delete every child node.
 
SceneNode (SceneNode &&other)
 Move constructor.
 
+SceneNodeoperator= (SceneNode &&other)
 Move assignment operator.
 
+SceneNode clone () const
 Returns a copy of this object.
 
+const SceneNodeparent () const
 Returns the parent as a constant node, if there is any.
 
+SceneNodeparent ()
 Returns the parent node, if there is any.
 
bool setParent (SceneNode *parentNode)
 Sets the parent node. More...
 
+const nctl::Array< SceneNode * > & children ()
 Returns the array of child nodes.
 
+const nctl::Array< const SceneNode * > & children () const
 Returns an array of constant child nodes.
 
bool addChildNode (SceneNode *childNode)
 Adds a node as a child of this one. More...
 
bool removeChildNode (SceneNode *childNode)
 Removes a child of this node, without reparenting nephews. More...
 
bool removeChildNodeAt (unsigned int index)
 Removes the child at the specified index, without reparenting nephews. More...
 
bool removeAllChildrenNodes ()
 Removes all children, without reparenting nephews. More...
 
bool unlinkChildNode (SceneNode *childNode)
 Removes a child of this node reparenting nephews as children. More...
 
unsigned int childOrderIndex () const
 Returns the child order index of this node or zero if it does not have a parent. More...
 
bool swapChildrenNodes (unsigned int firstIndex, unsigned int secondIndex)
 Swaps two children at the specified indices. More...
 
bool swapNodeForward ()
 Brings this node one node forward in the parent's list of children. More...
 
bool swapNodeBack ()
 Brings this node one node back in the parent's list of children. More...
 
+enum VisitOrderState visitOrderState () const
 Returns true if the node visit order is used together with the layer.
 
+void setVisitOrderState (enum VisitOrderState visitOrderState)
 Enables the use of the node visit order together with the layer.
 
+uint16_t visitOrderIndex () const
 Returns the visit drawing order of the node.
 
+virtual void update (float interval)
 Called once every frame to update the node.
 
+virtual void visit (RenderQueue &renderQueue, unsigned int &visitOrderIndex)
 Draws the node and visits its children.
 
+bool isUpdateEnabled () const
 Returns true if the node is updating.
 
+void setUpdateEnabled (bool updateEnabled)
 Enables or disables node updating.
 
+bool isDrawEnabled () const
 Returns true if the node is drawing.
 
+void setDrawEnabled (bool drawEnabled)
 Enables or disables node drawing.
 
+bool isEnabled () const
 Returns true if the node is both updating and drawing.
 
+void setEnabled (bool isEnabled)
 Enables or disables both node updating and drawing.
 
+Vector2f position () const
 Returns node position relative to its parent.
 
+Vector2f absPosition () const
 Returns absolute node position.
 
+void setPosition (float x, float y)
 Sets the node position through two coordinates.
 
+void setPosition (const Vector2f &position)
 Sets the node position through a vector.
 
+void setPositionX (float x)
 Sets the X coordinate of the node position.
 
+void setPositionY (float y)
 Sets the Y coordinate of the node position.
 
+void move (float x, float y)
 Moves the node based on two offsets.
 
+void move (const Vector2f &position)
 Adds a move vector to the node current position.
 
+void moveX (float x)
 Moves the node by an offset on the X axis.
 
+void moveY (float y)
 Moves the node by an offset on the Y axis.
 
+Vector2f absAnchorPoint () const
 Gets the absolute transformation anchor point in pixels.
 
+void setAbsAnchorPoint (float x, float y)
 Sets the absolute transformation anchor point in pixels.
 
+void setAbsAnchorPoint (const Vector2f &point)
 Sets the absolute transformation anchor point in pixels with a Vector2f
 
+const Vector2fscale () const
 Gets the node scale factors.
 
+const Vector2fabsScale () const
 Gets the node absolute scale factors.
 
+void setScale (float scaleFactor)
 Scales the node size both horizontally and vertically.
 
+void setScale (float scaleFactorX, float scaleFactorY)
 Scales the node size both horizontally and vertically.
 
+void setScale (const Vector2f &scaleFactor)
 Scales the node size both horizontally and vertically with a Vector2f
 
+float rotation () const
 Gets the node rotation in degrees.
 
+float absRotation () const
 Gets the node absolute rotation in degrees.
 
+void setRotation (float rotation)
 Sets the node rotation in degrees.
 
+Color color () const
 Gets the node color.
 
+Color absColor () const
 Gets the node absolute color.
 
+void setColor (Color color)
 Sets the node color through a Color object.
 
+void setColor (Colorf color)
 Sets the node color through a Colorf object.
 
+void setColor (unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha)
 Sets the node color through unsigned char components.
 
+void setColorF (float red, float green, float blue, float alpha)
 Sets the node color through float components.
 
+float alpha () const
 Gets the node alpha.
 
+float absAlpha () const
 Gets the node absolute alpha.
 
+void setAlpha (unsigned char alpha)
 Sets the node alpha through an unsigned char component.
 
+void setAlphaF (float alpha)
 Sets the node alpha through a float component.
 
+uint16_t layer () const
 Gets the node rendering layer.
 
uint16_t absLayer () const
 Gets the node absolute rendering layer. More...
 
void setLayer (uint16_t layer)
 Sets the node rendering layer. More...
 
+const Matrix4x4fworldMatrix () const
 Gets the node world matrix.
 
+void setWorldMatrix (const Matrix4x4f &worldMatrix)
 Sets the node world matrix (only useful when called inside onPostUpdate())
 
+const Matrix4x4flocalMatrix () const
 Gets the node local matrix.
 
+void setLocalMatrix (const Matrix4x4f &localMatrix)
 Sets the node local matrix.
 
bool deleteChildrenOnDestruction () const
 Gets the delete children on destruction flag. More...
 
+void setDeleteChildrenOnDestruction (bool shouldDeleteChildrenOnDestruction)
 Sets the delete children on destruction flag.
 
+unsigned long int lastFrameUpdated () const
 Returns the last frame in which any of the viewports have updated this node.
 
- Public Member Functions inherited from ncine::Object
Object (ObjectType type)
 Constructs an object with a specified type and adds it to the index.
 
Object (ObjectType type, const char *name)
 Constructs an object with a specified type and name and adds it to the index.
 
+virtual ~Object ()
 Removes an object from the index and then destroys it.
 
Object (Object &&other)
 Move constructor.
 
+Objectoperator= (Object &&other)
 Move assignment operator.
 
+unsigned int id () const
 Returns the object identification number.
 
+ObjectType type () const
 Returns the object type (RTTI)
 
+const char * name () const
 Returns the object name.
 
+void setName (const char *name)
 Sets the object name.
 
+ + + + + + + + + + + + + + +

+Static Public Member Functions

+static ObjectType sType ()
 
- Static Public Member Functions inherited from ncine::SceneNode
+static ObjectType sType ()
 
- Static Public Member Functions inherited from ncine::Object
+static ObjectType sType ()
 Static method to return class type.
 
+template<class T >
static T * fromId (unsigned int id)
 Returns a casted pointer to the object with the specified id, if any exists.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

Sprite (const Sprite &other)
 Protected copy constructor used to clone objects.
 
- Protected Member Functions inherited from ncine::BaseSprite
BaseSprite (SceneNode *parent, Texture *texture, float xx, float yy)
 Protected constructor accessible only by derived sprite classes.
 
BaseSprite (SceneNode *parent, Texture *texture, const Vector2f &position)
 Protected constructor accessible only by derived sprite classes.
 
BaseSprite (const BaseSprite &other)
 Protected copy constructor used to clone objects.
 
+void shaderHasChanged () override
 Performs the required tasks upon a change to the shader.
 
+void updateRenderCommand () override
 Updates the render command.
 
- Protected Member Functions inherited from ncine::DrawableNode
+virtual void updateAabb ()
 Calculates updated values for the AABB.
 
+void updateCulling ()
 Called by each viewport update method to update a node culling state.
 
DrawableNode (const DrawableNode &other)
 Protected copy constructor used to clone objects.
 
- Protected Member Functions inherited from ncine::SceneNode
+SceneNodeoperator= (const SceneNode &)=delete
 Deleted assignment operator.
 
SceneNode (const SceneNode &other)
 Protected copy constructor used to clone objects.
 
void swapChildPointer (SceneNode *first, SceneNode *second)
 Swaps the child pointer of a parent when moving an object. More...
 
+virtual void transform ()
 
- Protected Member Functions inherited from ncine::Object
Object (const Object &other)
 Protected copy constructor used to clone objects.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ncine::DrawableNode
enum class  BlendingPreset {
+  DISABLED +, ALPHA +, PREMULTIPLIED_ALPHA +, ADDITIVE +,
+  MULTIPLY +
+ }
 Presets for blending factors. More...
 
enum class  BlendingFactor {
+  ZERO +, ONE +, SRC_COLOR +, ONE_MINUS_SRC_COLOR +,
+  DST_COLOR +, ONE_MINUS_DST_COLOR +, SRC_ALPHA +, ONE_MINUS_SRC_ALPHA +,
+  DST_ALPHA +, ONE_MINUS_DST_ALPHA +, CONSTANT_COLOR +, ONE_MINUS_CONSTANT_COLOR +,
+  CONSTANT_ALPHA +, ONE_MINUS_CONSTANT_ALPHA +, SRC_ALPHA_SATURATE +
+ }
 OpenGL blending factors.
 
- Public Types inherited from ncine::SceneNode
enum class  VisitOrderState { ENABLED +, DISABLED +, SAME_AS_PARENT + }
 
- Public Types inherited from ncine::Object
enum class  ObjectType {
+  BASE = 0 +, TEXTURE +, SHADER +, SCENENODE +,
+  SPRITE +, MESH_SPRITE +, ANIMATED_SPRITE +, PARTICLE +,
+  PARTICLE_SYSTEM +, FONT +, TEXTNODE +, AUDIOBUFFER +,
+  AUDIOBUFFER_PLAYER +, AUDIOSTREAM_PLAYER +
+ }
 Object types.
 
- Static Public Attributes inherited from ncine::DrawableNode
+static const Vector2f AnchorCenter
 
+static const Vector2f AnchorBottomLeft
 
+static const Vector2f AnchorTopLeft
 
+static const Vector2f AnchorBottomRight
 
+static const Vector2f AnchorTopRight
 
- Static Public Attributes inherited from ncine::SceneNode
+static const float MinRotation = 0.5f
 The minimum amount of rotation to trigger a sine and cosine calculation.
 
- Static Public Attributes inherited from ncine::Object
+static const unsigned int MaxNameLength = 128
 Maximum length for an object name.
 
- Protected Types inherited from ncine::SceneNode
enum  DirtyBitPositions {
+  TransformationBit = 0 +, ColorBit = 1 +, SizeBit = 2 +, TextureBit = 3 +,
+  AabbBit = 4 +
+ }
 Bit positions inside the dirty bitset.
 
- Protected Attributes inherited from ncine::BaseSprite
+Texturetexture_
 The sprite texture.
 
+Recti texRect_
 The texture source rectangle.
 
+bool flippedX_
 A flag indicating if the sprite texture is horizontally flipped.
 
+bool flippedY_
 A flag indicating if the sprite texture is vertically flipped.
 
+GLUniformBlockCache * instanceBlock_
 
- Protected Attributes inherited from ncine::DrawableNode
+float width_
 Node width in pixel.
 
+float height_
 Node height in pixel.
 
+nctl::UniquePtr< RenderCommand > renderCommand_
 The render command class associated with this node.
 
+unsigned long int lastFrameRendered_
 The last frame any viewports rendered this node.
 
+Rectf aabb_
 Axis-aligned bounding box of the node area.
 
- Protected Attributes inherited from ncine::SceneNode
+bool updateEnabled_
 
+bool drawEnabled_
 
+SceneNodeparent_
 A pointer to the parent node.
 
+nctl::Array< SceneNode * > children_
 The array of child nodes.
 
unsigned int childOrderIndex_
 The order index of this node among its siblings. More...
 
bool withVisitOrder_
 When enabled the visit order is used to resolve the drawing order of same layer nodes. More...
 
+enum VisitOrderState visitOrderState_
 The visit order state of this node.
 
+uint16_t visitOrderIndex_
 The visit order index of this node.
 
+Vector2f position_
 The node relative position.
 
Vector2f anchorPoint_
 
+Vector2f scaleFactor_
 Horizontal and vertical scale factors for node size.
 
+float rotation_
 Degrees for clock-wise node rotation in degrees.
 
Color color_
 Node color for transparency and translucency. More...
 
uint16_t layer_
 The node rendering layer. More...
 
+Vector2f absPosition_
 Absolute position as calculated by the transform() function.
 
+Vector2f absScaleFactor_
 Absolute horizontal and vertical scale factors as calculated by the transform() function.
 
+float absRotation_
 Absolute node rotation as calculated by the transform() function.
 
+Color absColor_
 Absolute node color as calculated by the transform() function.
 
+uint16_t absLayer_
 Absolute node rendering layer as calculated by the transform() function.
 
+Matrix4x4f worldMatrix_
 World transformation matrix (calculated from local and parent's world)
 
+Matrix4x4f localMatrix_
 Local transformation matrix.
 
+bool shouldDeleteChildrenOnDestruction_
 A flag indicating whether the destructor should also delete all children.
 
+nctl::BitSet< uint8_t > dirtyBits_
 Bitset that stores the various dirty states bits.
 
+unsigned long int lastFrameUpdated_
 The last frame any viewport updated this node.
 
- Protected Attributes inherited from ncine::Object
+ObjectType type_
 Object type.
 
+

Detailed Description

+

A scene node representing a regular sprite.

+

The documentation for this class was generated from the following files:
    +
  • include/ncine/Sprite.h
  • +
  • src/graphics/Sprite.cpp
  • +
+
+ + + + diff --git a/master/classncine_1_1_sprite__coll__graph.map b/master/classncine_1_1_sprite__coll__graph.map new file mode 100644 index 0000000000..ceca2490ac --- /dev/null +++ b/master/classncine_1_1_sprite__coll__graph.map @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + diff --git a/master/classncine_1_1_sprite__coll__graph.md5 b/master/classncine_1_1_sprite__coll__graph.md5 new file mode 100644 index 0000000000..f5c4d83b24 --- /dev/null +++ b/master/classncine_1_1_sprite__coll__graph.md5 @@ -0,0 +1 @@ +92a08505c53662081fdad77da4906f9d \ No newline at end of file diff --git a/master/classncine_1_1_sprite__coll__graph.png b/master/classncine_1_1_sprite__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..90327cfb301c4d614375b99e2e6d5a0b88c95596 GIT binary patch literal 77596 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 (^7QDB74j!#6CrLwB& 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 KnM`TJfBp|&20n=Z literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_sprite__inherit__graph.map b/master/classncine_1_1_sprite__inherit__graph.map new file mode 100644 index 0000000000..becc767da5 --- /dev/null +++ b/master/classncine_1_1_sprite__inherit__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/master/classncine_1_1_sprite__inherit__graph.md5 b/master/classncine_1_1_sprite__inherit__graph.md5 new file mode 100644 index 0000000000..0afd110811 --- /dev/null +++ b/master/classncine_1_1_sprite__inherit__graph.md5 @@ -0,0 +1 @@ +6371252614f88b9a2f2470c473f8426b \ No newline at end of file diff --git a/master/classncine_1_1_sprite__inherit__graph.png b/master/classncine_1_1_sprite__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..bd7b2360fce069c44bb092703e39797ae3af264b GIT binary patch literal 14875 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 ISO3+&0o#)kC;$Ke literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_text_input_event-members.html b/master/classncine_1_1_text_input_event-members.html new file mode 100644 index 0000000000..687c5f7164 --- /dev/null +++ b/master/classncine_1_1_text_input_event-members.html @@ -0,0 +1,86 @@ + + + + + + + +nCine: Member List + + + + + + + + + + +
+
+
ncine::TextInputEvent Member List
+
+
+ +

This is the complete list of members for ncine::TextInputEvent, including all inherited members.

+ + + +
textncine::TextInputEvent
TextInputEvent() (defined in ncine::TextInputEvent)ncine::TextInputEventinline
+ + + + diff --git a/master/classncine_1_1_text_input_event.html b/master/classncine_1_1_text_input_event.html new file mode 100644 index 0000000000..3ef768872a --- /dev/null +++ b/master/classncine_1_1_text_input_event.html @@ -0,0 +1,102 @@ + + + + + + + +nCine: ncine::TextInputEvent Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::TextInputEvent Class Reference
+
+
+ +

Information about a text input event. + More...

+ +

#include <InputEvents.h>

+ + + + + +

+Public Attributes

+char text [5]
 Unicode code point encoded in UTF-8.
 
+

Detailed Description

+

Information about a text input event.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classncine_1_1_text_node-members.html b/master/classncine_1_1_text_node-members.html new file mode 100644 index 0000000000..fac47c68be --- /dev/null +++ b/master/classncine_1_1_text_node-members.html @@ -0,0 +1,274 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::TextNode Member List
+
+
+ +

This is the complete list of members for ncine::TextNode, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
aabb() constncine::DrawableNodeinline
aabb_ncine::DrawableNodeprotected
AabbBit enum value (defined in ncine::SceneNode)ncine::SceneNodeprotected
absAlpha() constncine::SceneNodeinline
absAnchorPoint() constncine::SceneNodeinline
absColor() constncine::SceneNodeinline
absColor_ncine::SceneNodeprotected
absHeight() const overridencine::TextNodevirtual
absLayer() constncine::SceneNodeinline
absLayer_ncine::SceneNodeprotected
absLineHeight() constncine::TextNodeinline
absPosition() constncine::SceneNodeinline
absPosition_ncine::SceneNodeprotected
absRotation() constncine::SceneNodeinline
absRotation_ncine::SceneNodeprotected
absScale() constncine::SceneNodeinline
absScaleFactor_ncine::SceneNodeprotected
absSize() constncine::DrawableNodeinline
absWidth() const overridencine::TextNodevirtual
addChildNode(SceneNode *childNode)ncine::SceneNode
alignment() constncine::TextNodeinline
Alignment enum namencine::TextNode
alpha() constncine::SceneNodeinline
AnchorBottomLeft (defined in ncine::DrawableNode)ncine::DrawableNodestatic
AnchorBottomRight (defined in ncine::DrawableNode)ncine::DrawableNodestatic
AnchorCenter (defined in ncine::DrawableNode)ncine::DrawableNodestatic
anchorPoint() constncine::DrawableNodeinline
anchorPoint_ncine::SceneNodeprotected
AnchorTopLeft (defined in ncine::DrawableNode)ncine::DrawableNodestatic
AnchorTopRight (defined in ncine::DrawableNode)ncine::DrawableNodestatic
BlendingFactor enum namencine::DrawableNode
BlendingPreset enum namencine::DrawableNode
calculateBoundaries(const Font &font, bool withKerning, const nctl::String &string)ncine::TextNodestatic
childOrderIndex() constncine::SceneNode
childOrderIndex_ncine::SceneNodeprotected
children()ncine::SceneNodeinline
children() constncine::SceneNodeinline
children_ncine::SceneNodeprotected
clone() constncine::TextNodeinline
color() constncine::SceneNodeinline
color_ncine::SceneNodeprotected
ColorBit enum value (defined in ncine::SceneNode)ncine::SceneNodeprotected
DefaultStringLengthncine::TextNodestatic
deleteChildrenOnDestruction() constncine::SceneNodeinline
destBlendingFactor() constncine::DrawableNode
DirtyBitPositions enum namencine::SceneNodeprotected
dirtyBits_ncine::SceneNodeprotected
draw(RenderQueue &renderQueue) overridencine::TextNodevirtual
DrawableNode(SceneNode *parent, float xx, float yy)ncine::DrawableNode
DrawableNode(SceneNode *parent, const Vector2f &position)ncine::DrawableNode
DrawableNode(SceneNode *parent)ncine::DrawableNodeexplicit
DrawableNode()ncine::DrawableNode
DrawableNode(DrawableNode &&)ncine::DrawableNode
DrawableNode(const DrawableNode &other)ncine::DrawableNodeprotected
drawEnabled_ (defined in ncine::SceneNode)ncine::SceneNodeprotected
enableKerning(bool withKerning)ncine::TextNode
font() constncine::TextNodeinline
fromId(unsigned int id)ncine::Objectstatic
height() const overridencine::TextNodevirtual
height_ncine::DrawableNodeprotected
id() constncine::Objectinline
isBlendingEnabled() constncine::DrawableNode
isDrawEnabled() constncine::SceneNodeinline
isEnabled() constncine::SceneNodeinline
isUpdateEnabled() constncine::SceneNodeinline
lastFrameRendered() constncine::DrawableNodeinline
lastFrameRendered_ncine::DrawableNodeprotected
lastFrameUpdated() constncine::SceneNodeinline
lastFrameUpdated_ncine::SceneNodeprotected
layer() constncine::SceneNodeinline
layer_ncine::SceneNodeprotected
lineHeight() constncine::TextNodeinline
localMatrix() constncine::SceneNodeinline
localMatrix_ncine::SceneNodeprotected
MaxNameLengthncine::Objectstatic
MinRotationncine::SceneNodestatic
move(float x, float y)ncine::SceneNodeinline
move(const Vector2f &position)ncine::SceneNodeinline
moveX(float x)ncine::SceneNodeinline
moveY(float y)ncine::SceneNodeinline
name() constncine::Object
Object(ObjectType type)ncine::Objectexplicit
Object(ObjectType type, const char *name)ncine::Object
Object(Object &&other)ncine::Object
Object(const Object &other)ncine::Objectprotected
ObjectType enum namencine::Object
operator=(TextNode &&)=defaultncine::TextNode
ncine::DrawableNode::operator=(DrawableNode &&)ncine::DrawableNode
ncine::SceneNode::operator=(SceneNode &&other)ncine::SceneNode
ncine::SceneNode::operator=(const SceneNode &)=deletencine::SceneNodeprotected
ncine::Object::operator=(Object &&other)ncine::Object
parent() constncine::SceneNodeinline
parent()ncine::SceneNodeinline
parent_ncine::SceneNodeprotected
position() constncine::SceneNodeinline
position_ncine::SceneNodeprotected
removeAllChildrenNodes()ncine::SceneNode
removeChildNode(SceneNode *childNode)ncine::SceneNode
removeChildNodeAt(unsigned int index)ncine::SceneNode
renderCommand_ncine::DrawableNodeprotected
renderMode() constncine::TextNode
rotation() constncine::SceneNodeinline
rotation_ncine::SceneNodeprotected
scale() constncine::SceneNodeinline
scaleFactor_ncine::SceneNodeprotected
SceneNode(SceneNode *parent, float x, float y)ncine::SceneNode
SceneNode(SceneNode *parent, const Vector2f &position)ncine::SceneNode
SceneNode(SceneNode *parent)ncine::SceneNodeexplicit
SceneNode()ncine::SceneNode
SceneNode(SceneNode &&other)ncine::SceneNode
SceneNode(const SceneNode &other)ncine::SceneNodeprotected
setAbsAnchorPoint(float x, float y)ncine::SceneNodeinline
setAbsAnchorPoint(const Vector2f &point)ncine::SceneNodeinline
setAlignment(Alignment alignment)ncine::TextNode
setAlpha(unsigned char alpha)ncine::SceneNodeinline
setAlphaF(float alpha)ncine::SceneNodeinline
setAnchorPoint(float xx, float yy)ncine::DrawableNode
setAnchorPoint(const Vector2f &point)ncine::DrawableNodeinline
setBlendingEnabled(bool blendingEnabled)ncine::DrawableNode
setBlendingFactors(BlendingFactor srcBlendingFactor, BlendingFactor destBlendingFactor)ncine::DrawableNode
setBlendingPreset(BlendingPreset blendingPreset)ncine::DrawableNode
setColor(Color color)ncine::SceneNodeinline
setColor(Colorf color)ncine::SceneNodeinline
setColor(unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha)ncine::SceneNodeinline
setColorF(float red, float green, float blue, float alpha)ncine::SceneNodeinline
setDeleteChildrenOnDestruction(bool shouldDeleteChildrenOnDestruction)ncine::SceneNodeinline
setDrawEnabled(bool drawEnabled)ncine::SceneNodeinline
setEnabled(bool isEnabled)ncine::SceneNodeinline
setFont(Font *font)ncine::TextNode
setLayer(uint16_t layer)ncine::SceneNodeinline
setLineHeight(float lineHeight)ncine::TextNodeinline
setLocalMatrix(const Matrix4x4f &localMatrix)ncine::SceneNodeinline
setName(const char *name)ncine::Object
setParent(SceneNode *parentNode)ncine::SceneNode
setPosition(float x, float y)ncine::SceneNodeinline
setPosition(const Vector2f &position)ncine::SceneNodeinline
setPositionX(float x)ncine::SceneNodeinline
setPositionY(float y)ncine::SceneNodeinline
setRenderMode(Font::RenderMode renderMode)ncine::TextNode
setRotation(float rotation)ncine::SceneNodeinline
setScale(float scaleFactor)ncine::SceneNodeinline
setScale(float scaleFactorX, float scaleFactorY)ncine::SceneNodeinline
setScale(const Vector2f &scaleFactor)ncine::SceneNodeinline
setString(const nctl::String &string)ncine::TextNode
setString(const char *string)ncine::TextNode
setUpdateEnabled(bool updateEnabled)ncine::SceneNodeinline
setVisitOrderState(enum VisitOrderState visitOrderState)ncine::SceneNodeinline
setWorldMatrix(const Matrix4x4f &worldMatrix)ncine::SceneNodeinline
shouldDeleteChildrenOnDestruction_ncine::SceneNodeprotected
size() constncine::DrawableNodeinline
SizeBit enum value (defined in ncine::SceneNode)ncine::SceneNodeprotected
srcBlendingFactor() constncine::DrawableNode
string() constncine::TextNodeinline
string()ncine::TextNodeinline
sType() (defined in ncine::TextNode)ncine::TextNodeinlinestatic
swapChildPointer(SceneNode *first, SceneNode *second)ncine::SceneNodeprotected
swapChildrenNodes(unsigned int firstIndex, unsigned int secondIndex)ncine::SceneNode
swapNodeBack()ncine::SceneNode
swapNodeForward()ncine::SceneNode
TextNode() (defined in ncine::TextNode)ncine::TextNode
TextNode(unsigned int maxStringLength) (defined in ncine::TextNode)ncine::TextNodeexplicit
TextNode(SceneNode *parent, Font *font) (defined in ncine::TextNode)ncine::TextNode
TextNode(SceneNode *parent, Font *font, unsigned int maxStringLength) (defined in ncine::TextNode)ncine::TextNode
TextNode(TextNode &&)=defaultncine::TextNode
TextNode(const TextNode &other)ncine::TextNodeprotected
TextureBit enum value (defined in ncine::SceneNode)ncine::SceneNodeprotected
transform() override (defined in ncine::TextNode)ncine::TextNodevirtual
TransformationBit enum value (defined in ncine::SceneNode)ncine::SceneNodeprotected
type() constncine::Objectinline
type_ncine::Objectprotected
unlinkChildNode(SceneNode *childNode)ncine::SceneNode
update(float interval)ncine::SceneNodevirtual
updateAabb()ncine::DrawableNodeprotectedvirtual
updateCulling()ncine::DrawableNodeprotected
updateEnabled_ (defined in ncine::SceneNode)ncine::SceneNodeprotected
visit(RenderQueue &renderQueue, unsigned int &visitOrderIndex)ncine::SceneNodevirtual
visitOrderIndex() constncine::SceneNodeinline
visitOrderIndex_ncine::SceneNodeprotected
visitOrderState() constncine::SceneNodeinline
VisitOrderState enum name (defined in ncine::SceneNode)ncine::SceneNode
visitOrderState_ncine::SceneNodeprotected
width() const overridencine::TextNodevirtual
width_ncine::DrawableNodeprotected
withKerning() constncine::TextNodeinline
withVisitOrder_ncine::SceneNodeprotected
worldMatrix() constncine::SceneNodeinline
worldMatrix_ncine::SceneNodeprotected
~DrawableNode() override (defined in ncine::DrawableNode)ncine::DrawableNode
~Object()ncine::Objectvirtual
~SceneNode() overridencine::SceneNode
+ + + + diff --git a/master/classncine_1_1_text_node.html b/master/classncine_1_1_text_node.html new file mode 100644 index 0000000000..d6df1e8e02 --- /dev/null +++ b/master/classncine_1_1_text_node.html @@ -0,0 +1,980 @@ + + + + + + + +nCine: ncine::TextNode Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

A scene node to draw a text label. + More...

+ +

#include <TextNode.h>

+
+Inheritance diagram for ncine::TextNode:
+
+
Inheritance graph
+ + + + + + +
[legend]
+
+Collaboration diagram for ncine::TextNode:
+
+
Collaboration graph
+ + + + + + + + + + + + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + +

+Public Types

enum class  Alignment { LEFT +, CENTER +, RIGHT + }
 Horizontal alignment modes for text made of multiple lines. More...
 
- Public Types inherited from ncine::DrawableNode
enum class  BlendingPreset {
+  DISABLED +, ALPHA +, PREMULTIPLIED_ALPHA +, ADDITIVE +,
+  MULTIPLY +
+ }
 Presets for blending factors. More...
 
enum class  BlendingFactor {
+  ZERO +, ONE +, SRC_COLOR +, ONE_MINUS_SRC_COLOR +,
+  DST_COLOR +, ONE_MINUS_DST_COLOR +, SRC_ALPHA +, ONE_MINUS_SRC_ALPHA +,
+  DST_ALPHA +, ONE_MINUS_DST_ALPHA +, CONSTANT_COLOR +, ONE_MINUS_CONSTANT_COLOR +,
+  CONSTANT_ALPHA +, ONE_MINUS_CONSTANT_ALPHA +, SRC_ALPHA_SATURATE +
+ }
 OpenGL blending factors.
 
- Public Types inherited from ncine::SceneNode
enum class  VisitOrderState { ENABLED +, DISABLED +, SAME_AS_PARENT + }
 
- Public Types inherited from ncine::Object
enum class  ObjectType {
+  BASE = 0 +, TEXTURE +, SHADER +, SCENENODE +,
+  SPRITE +, MESH_SPRITE +, ANIMATED_SPRITE +, PARTICLE +,
+  PARTICLE_SYSTEM +, FONT +, TEXTNODE +, AUDIOBUFFER +,
+  AUDIOBUFFER_PLAYER +, AUDIOSTREAM_PLAYER +
+ }
 Object types.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

TextNode (unsigned int maxStringLength)
 
TextNode (SceneNode *parent, Font *font)
 
TextNode (SceneNode *parent, Font *font, unsigned int maxStringLength)
 
TextNode (TextNode &&)=default
 Default move constructor.
 
+TextNodeoperator= (TextNode &&)=default
 Default move assignment operator.
 
+TextNode clone () const
 Returns a copy of this object.
 
+float width () const override
 Returns the width of rendered text.
 
+float height () const override
 Returns the height of rendered text.
 
+float absWidth () const override
 Returns the absolute width of rendered text.
 
+float absHeight () const override
 Returns the absolute height of rendered text.
 
+const Fontfont () const
 Gets the font object used by the text node.
 
+void setFont (Font *font)
 Sets the font object used by the text node.
 
+Font::RenderMode renderMode () const
 Returns the render mode used to render this text node.
 
+void setRenderMode (Font::RenderMode renderMode)
 Sets the render mode used to render this text node, overriding the font one.
 
+bool withKerning () const
 Returns true if kerning is enabled for this node rendering.
 
+void enableKerning (bool withKerning)
 Sets the kerning flag for this node rendering.
 
+Alignment alignment () const
 Gets the horizontal text alignment of multiple lines.
 
+void setAlignment (Alignment alignment)
 Sets the horizontal text alignment of multiple lines.
 
+float lineHeight () const
 Gets the text node line height.
 
+float absLineHeight () const
 Gets the text node line height multiplied by the absolute vertical scale factor.
 
+void setLineHeight (float lineHeight)
 Sets the text node line height.
 
+const nctl::Stringstring () const
 Gets the constant string to render.
 
+nctl::Stringstring ()
 Gets the string to render.
 
+void setString (const nctl::String &string)
 Sets the string to render from a string object.
 
+void setString (const char *string)
 Sets the string to render from a C-style string.
 
+void transform () override
 
+bool draw (RenderQueue &renderQueue) override
 Updates the draw command and adds it to the queue.
 
- Public Member Functions inherited from ncine::DrawableNode
DrawableNode (SceneNode *parent, float xx, float yy)
 Constructor for a drawable node with a parent and a specified relative position.
 
DrawableNode (SceneNode *parent, const Vector2f &position)
 Constructor for a drawable node with a parent and a specified relative position as a vector.
 
DrawableNode (SceneNode *parent)
 Constructor for a drawable node with a parent and positioned in the relative origin.
 
DrawableNode ()
 Constructor for a drawable node with no parent and positioned in the origin.
 
DrawableNode (DrawableNode &&)
 Default move constructor.
 
+DrawableNodeoperator= (DrawableNode &&)
 Default move assignment operator.
 
+Vector2f size () const
 Returns the size of the node area.
 
+Vector2f absSize () const
 Returns the absolute size of the node area.
 
+Vector2f anchorPoint () const
 Gets the transformation anchor point.
 
void setAnchorPoint (float xx, float yy)
 Sets the transformation anchor point. More...
 
+void setAnchorPoint (const Vector2f &point)
 Sets the transformation anchor point with a Vector2f
 
+bool isBlendingEnabled () const
 Returns true if the node renders with blending enabled.
 
+void setBlendingEnabled (bool blendingEnabled)
 Sets the blending state for node rendering.
 
+BlendingFactor srcBlendingFactor () const
 Returns the source blending factor.
 
+BlendingFactor destBlendingFactor () const
 Returns the destination blending factor.
 
+void setBlendingPreset (BlendingPreset blendingPreset)
 Sets a blending preset for source and destination blending factors.
 
+void setBlendingFactors (BlendingFactor srcBlendingFactor, BlendingFactor destBlendingFactor)
 Sets a specific source and destination blending factors.
 
+unsigned long int lastFrameRendered () const
 Returns the last frame in which any of the viewports have rendered this node (node was not culled)
 
+Rectf aabb () const
 Returns the axis-aligned bounding box of the node area in the last frame.
 
- Public Member Functions inherited from ncine::SceneNode
 SceneNode (SceneNode *parent, float x, float y)
 Constructor for a node with a parent and a specified relative position. More...
 
 SceneNode (SceneNode *parent, const Vector2f &position)
 Constructor for a node with a parent and a specified relative position as a vector. More...
 
 SceneNode (SceneNode *parent)
 Constructor for a node with a parent and positioned in the relative origin. More...
 
SceneNode ()
 Constructor for a node with no parent and positioned in the origin.
 
~SceneNode () override
 The destructor will delete every child node.
 
SceneNode (SceneNode &&other)
 Move constructor.
 
+SceneNodeoperator= (SceneNode &&other)
 Move assignment operator.
 
+SceneNode clone () const
 Returns a copy of this object.
 
+const SceneNodeparent () const
 Returns the parent as a constant node, if there is any.
 
+SceneNodeparent ()
 Returns the parent node, if there is any.
 
bool setParent (SceneNode *parentNode)
 Sets the parent node. More...
 
+const nctl::Array< SceneNode * > & children ()
 Returns the array of child nodes.
 
+const nctl::Array< const SceneNode * > & children () const
 Returns an array of constant child nodes.
 
bool addChildNode (SceneNode *childNode)
 Adds a node as a child of this one. More...
 
bool removeChildNode (SceneNode *childNode)
 Removes a child of this node, without reparenting nephews. More...
 
bool removeChildNodeAt (unsigned int index)
 Removes the child at the specified index, without reparenting nephews. More...
 
bool removeAllChildrenNodes ()
 Removes all children, without reparenting nephews. More...
 
bool unlinkChildNode (SceneNode *childNode)
 Removes a child of this node reparenting nephews as children. More...
 
unsigned int childOrderIndex () const
 Returns the child order index of this node or zero if it does not have a parent. More...
 
bool swapChildrenNodes (unsigned int firstIndex, unsigned int secondIndex)
 Swaps two children at the specified indices. More...
 
bool swapNodeForward ()
 Brings this node one node forward in the parent's list of children. More...
 
bool swapNodeBack ()
 Brings this node one node back in the parent's list of children. More...
 
+enum VisitOrderState visitOrderState () const
 Returns true if the node visit order is used together with the layer.
 
+void setVisitOrderState (enum VisitOrderState visitOrderState)
 Enables the use of the node visit order together with the layer.
 
+uint16_t visitOrderIndex () const
 Returns the visit drawing order of the node.
 
+virtual void update (float interval)
 Called once every frame to update the node.
 
+virtual void visit (RenderQueue &renderQueue, unsigned int &visitOrderIndex)
 Draws the node and visits its children.
 
+bool isUpdateEnabled () const
 Returns true if the node is updating.
 
+void setUpdateEnabled (bool updateEnabled)
 Enables or disables node updating.
 
+bool isDrawEnabled () const
 Returns true if the node is drawing.
 
+void setDrawEnabled (bool drawEnabled)
 Enables or disables node drawing.
 
+bool isEnabled () const
 Returns true if the node is both updating and drawing.
 
+void setEnabled (bool isEnabled)
 Enables or disables both node updating and drawing.
 
+Vector2f position () const
 Returns node position relative to its parent.
 
+Vector2f absPosition () const
 Returns absolute node position.
 
+void setPosition (float x, float y)
 Sets the node position through two coordinates.
 
+void setPosition (const Vector2f &position)
 Sets the node position through a vector.
 
+void setPositionX (float x)
 Sets the X coordinate of the node position.
 
+void setPositionY (float y)
 Sets the Y coordinate of the node position.
 
+void move (float x, float y)
 Moves the node based on two offsets.
 
+void move (const Vector2f &position)
 Adds a move vector to the node current position.
 
+void moveX (float x)
 Moves the node by an offset on the X axis.
 
+void moveY (float y)
 Moves the node by an offset on the Y axis.
 
+Vector2f absAnchorPoint () const
 Gets the absolute transformation anchor point in pixels.
 
+void setAbsAnchorPoint (float x, float y)
 Sets the absolute transformation anchor point in pixels.
 
+void setAbsAnchorPoint (const Vector2f &point)
 Sets the absolute transformation anchor point in pixels with a Vector2f
 
+const Vector2fscale () const
 Gets the node scale factors.
 
+const Vector2fabsScale () const
 Gets the node absolute scale factors.
 
+void setScale (float scaleFactor)
 Scales the node size both horizontally and vertically.
 
+void setScale (float scaleFactorX, float scaleFactorY)
 Scales the node size both horizontally and vertically.
 
+void setScale (const Vector2f &scaleFactor)
 Scales the node size both horizontally and vertically with a Vector2f
 
+float rotation () const
 Gets the node rotation in degrees.
 
+float absRotation () const
 Gets the node absolute rotation in degrees.
 
+void setRotation (float rotation)
 Sets the node rotation in degrees.
 
+Color color () const
 Gets the node color.
 
+Color absColor () const
 Gets the node absolute color.
 
+void setColor (Color color)
 Sets the node color through a Color object.
 
+void setColor (Colorf color)
 Sets the node color through a Colorf object.
 
+void setColor (unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha)
 Sets the node color through unsigned char components.
 
+void setColorF (float red, float green, float blue, float alpha)
 Sets the node color through float components.
 
+float alpha () const
 Gets the node alpha.
 
+float absAlpha () const
 Gets the node absolute alpha.
 
+void setAlpha (unsigned char alpha)
 Sets the node alpha through an unsigned char component.
 
+void setAlphaF (float alpha)
 Sets the node alpha through a float component.
 
+uint16_t layer () const
 Gets the node rendering layer.
 
uint16_t absLayer () const
 Gets the node absolute rendering layer. More...
 
void setLayer (uint16_t layer)
 Sets the node rendering layer. More...
 
+const Matrix4x4fworldMatrix () const
 Gets the node world matrix.
 
+void setWorldMatrix (const Matrix4x4f &worldMatrix)
 Sets the node world matrix (only useful when called inside onPostUpdate())
 
+const Matrix4x4flocalMatrix () const
 Gets the node local matrix.
 
+void setLocalMatrix (const Matrix4x4f &localMatrix)
 Sets the node local matrix.
 
bool deleteChildrenOnDestruction () const
 Gets the delete children on destruction flag. More...
 
+void setDeleteChildrenOnDestruction (bool shouldDeleteChildrenOnDestruction)
 Sets the delete children on destruction flag.
 
+unsigned long int lastFrameUpdated () const
 Returns the last frame in which any of the viewports have updated this node.
 
- Public Member Functions inherited from ncine::Object
Object (ObjectType type)
 Constructs an object with a specified type and adds it to the index.
 
Object (ObjectType type, const char *name)
 Constructs an object with a specified type and name and adds it to the index.
 
+virtual ~Object ()
 Removes an object from the index and then destroys it.
 
Object (Object &&other)
 Move constructor.
 
+Objectoperator= (Object &&other)
 Move assignment operator.
 
+unsigned int id () const
 Returns the object identification number.
 
+ObjectType type () const
 Returns the object type (RTTI)
 
+const char * name () const
 Returns the object name.
 
+void setName (const char *name)
 Sets the object name.
 
+ + + + + + + + + + + + + + + + + +

+Static Public Member Functions

+static Vector2f calculateBoundaries (const Font &font, bool withKerning, const nctl::String &string)
 Calculates the rectangle boundaries needed to render the provided string with the specified font.
 
+static ObjectType sType ()
 
- Static Public Member Functions inherited from ncine::SceneNode
+static ObjectType sType ()
 
- Static Public Member Functions inherited from ncine::Object
+static ObjectType sType ()
 Static method to return class type.
 
+template<class T >
static T * fromId (unsigned int id)
 Returns a casted pointer to the object with the specified id, if any exists.
 
+ + + + + + + + + + + + + + + + + + + + + + + +

+Static Public Attributes

static const unsigned int DefaultStringLength = 256
 Default maximum length for a string to be rendered. More...
 
- Static Public Attributes inherited from ncine::DrawableNode
+static const Vector2f AnchorCenter
 
+static const Vector2f AnchorBottomLeft
 
+static const Vector2f AnchorTopLeft
 
+static const Vector2f AnchorBottomRight
 
+static const Vector2f AnchorTopRight
 
- Static Public Attributes inherited from ncine::SceneNode
+static const float MinRotation = 0.5f
 The minimum amount of rotation to trigger a sine and cosine calculation.
 
- Static Public Attributes inherited from ncine::Object
+static const unsigned int MaxNameLength = 128
 Maximum length for an object name.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Member Functions

TextNode (const TextNode &other)
 Protected copy constructor used to clone objects.
 
- Protected Member Functions inherited from ncine::DrawableNode
+virtual void updateAabb ()
 Calculates updated values for the AABB.
 
+void updateCulling ()
 Called by each viewport update method to update a node culling state.
 
DrawableNode (const DrawableNode &other)
 Protected copy constructor used to clone objects.
 
- Protected Member Functions inherited from ncine::SceneNode
+SceneNodeoperator= (const SceneNode &)=delete
 Deleted assignment operator.
 
SceneNode (const SceneNode &other)
 Protected copy constructor used to clone objects.
 
void swapChildPointer (SceneNode *first, SceneNode *second)
 Swaps the child pointer of a parent when moving an object. More...
 
- Protected Member Functions inherited from ncine::Object
Object (const Object &other)
 Protected copy constructor used to clone objects.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Protected Types inherited from ncine::SceneNode
enum  DirtyBitPositions {
+  TransformationBit = 0 +, ColorBit = 1 +, SizeBit = 2 +, TextureBit = 3 +,
+  AabbBit = 4 +
+ }
 Bit positions inside the dirty bitset.
 
- Protected Attributes inherited from ncine::DrawableNode
+float width_
 Node width in pixel.
 
+float height_
 Node height in pixel.
 
+nctl::UniquePtr< RenderCommand > renderCommand_
 The render command class associated with this node.
 
+unsigned long int lastFrameRendered_
 The last frame any viewports rendered this node.
 
+Rectf aabb_
 Axis-aligned bounding box of the node area.
 
- Protected Attributes inherited from ncine::SceneNode
+bool updateEnabled_
 
+bool drawEnabled_
 
+SceneNodeparent_
 A pointer to the parent node.
 
+nctl::Array< SceneNode * > children_
 The array of child nodes.
 
unsigned int childOrderIndex_
 The order index of this node among its siblings. More...
 
bool withVisitOrder_
 When enabled the visit order is used to resolve the drawing order of same layer nodes. More...
 
+enum VisitOrderState visitOrderState_
 The visit order state of this node.
 
+uint16_t visitOrderIndex_
 The visit order index of this node.
 
+Vector2f position_
 The node relative position.
 
Vector2f anchorPoint_
 
+Vector2f scaleFactor_
 Horizontal and vertical scale factors for node size.
 
+float rotation_
 Degrees for clock-wise node rotation in degrees.
 
Color color_
 Node color for transparency and translucency. More...
 
uint16_t layer_
 The node rendering layer. More...
 
+Vector2f absPosition_
 Absolute position as calculated by the transform() function.
 
+Vector2f absScaleFactor_
 Absolute horizontal and vertical scale factors as calculated by the transform() function.
 
+float absRotation_
 Absolute node rotation as calculated by the transform() function.
 
+Color absColor_
 Absolute node color as calculated by the transform() function.
 
+uint16_t absLayer_
 Absolute node rendering layer as calculated by the transform() function.
 
+Matrix4x4f worldMatrix_
 World transformation matrix (calculated from local and parent's world)
 
+Matrix4x4f localMatrix_
 Local transformation matrix.
 
+bool shouldDeleteChildrenOnDestruction_
 A flag indicating whether the destructor should also delete all children.
 
+nctl::BitSet< uint8_t > dirtyBits_
 Bitset that stores the various dirty states bits.
 
+unsigned long int lastFrameUpdated_
 The last frame any viewport updated this node.
 
- Protected Attributes inherited from ncine::Object
+ObjectType type_
 Object type.
 
+

Detailed Description

+

A scene node to draw a text label.

+

Member Enumeration Documentation

+ +

◆ Alignment

+ +
+
+ + + + + +
+ + + + +
enum ncine::TextNode::Alignment
+
+strong
+
+ +

Horizontal alignment modes for text made of multiple lines.

+
Note
It does not change the node anchor point
+ +
+
+

Member Data Documentation

+ +

◆ DefaultStringLength

+ +
+
+ + + + + +
+ + + + +
const unsigned int ncine::TextNode::DefaultStringLength = 256
+
+static
+
+ +

Default maximum length for a string to be rendered.

+

This number affects both the size of the string container and the initial size of the vertex array in host memory.

+ +
+
+
The documentation for this class was generated from the following files:
    +
  • include/ncine/TextNode.h
  • +
  • src/graphics/TextNode.cpp
  • +
+
+ + + + diff --git a/master/classncine_1_1_text_node__coll__graph.map b/master/classncine_1_1_text_node__coll__graph.map new file mode 100644 index 0000000000..4001883c77 --- /dev/null +++ b/master/classncine_1_1_text_node__coll__graph.map @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/master/classncine_1_1_text_node__coll__graph.md5 b/master/classncine_1_1_text_node__coll__graph.md5 new file mode 100644 index 0000000000..5851824d9e --- /dev/null +++ b/master/classncine_1_1_text_node__coll__graph.md5 @@ -0,0 +1 @@ +474e7046b5c6c61a2c6f35af18bf6783 \ No newline at end of file diff --git a/master/classncine_1_1_text_node__coll__graph.png b/master/classncine_1_1_text_node__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..3a48ad5475023052db9d5d8568f1ff729b89b349 GIT binary patch literal 77601 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 MH56W)x^&}z0j*iwvj6}9 literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_text_node__inherit__graph.map b/master/classncine_1_1_text_node__inherit__graph.map new file mode 100644 index 0000000000..a07e91a4b1 --- /dev/null +++ b/master/classncine_1_1_text_node__inherit__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/master/classncine_1_1_text_node__inherit__graph.md5 b/master/classncine_1_1_text_node__inherit__graph.md5 new file mode 100644 index 0000000000..581f8f5c6f --- /dev/null +++ b/master/classncine_1_1_text_node__inherit__graph.md5 @@ -0,0 +1 @@ +5df3ad0b40a51283bbc189a2bc5ed4bd \ No newline at end of file diff --git a/master/classncine_1_1_text_node__inherit__graph.png b/master/classncine_1_1_text_node__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..eaa4b7a4483df3fbb68e13436ebb93e1d484eac4 GIT binary patch literal 6808 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 + + + + + + +nCine: Member List + + + + + + + + + + +
+
+
ncine::Texture Member List
+
+
+ +

This is the complete list of members for ncine::Texture, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
chromaKeyColor() constncine::Textureinline
dataSize() constncine::Textureinline
Filtering enum namencine::Texture
Format enum namencine::Texture
format() constncine::Textureinline
fromId(unsigned int id)ncine::Objectstatic
guiTexId() constncine::Texture
height() constncine::Textureinline
id() constncine::Objectinline
init(const char *name, Format format, int mipMapCount, int width, int height)ncine::Texture
init(const char *name, Format format, int mipMapCount, Vector2i size)ncine::Texture
init(const char *name, Format format, int width, int height)ncine::Texture
init(const char *name, Format format, Vector2i size)ncine::Texture
isChromaKeyEnabled() constncine::Textureinline
isCompressed() constncine::Textureinline
loadFromFile(const char *filename) (defined in ncine::Texture)ncine::Texture
loadFromMemory(const char *bufferName, const unsigned char *bufferPtr, unsigned long int bufferSize)ncine::Texture
loadFromTexels(const unsigned char *bufferPtr)ncine::Texture
loadFromTexels(const unsigned char *bufferPtr, unsigned int x, unsigned int y, unsigned int width, unsigned int height)ncine::Texture
loadFromTexels(const unsigned char *bufferPtr, Recti region)ncine::Texture
loadFromTexels(const unsigned char *bufferPtr, unsigned int level, unsigned int x, unsigned int y, unsigned int width, unsigned int height)ncine::Texture
loadFromTexels(const unsigned char *bufferPtr, unsigned int level, Recti region)ncine::Texture
magFiltering() constncine::Textureinline
Material (defined in ncine::Texture)ncine::Texturefriend
MaxNameLengthncine::Objectstatic
minFiltering() constncine::Textureinline
mipMapLevels() constncine::Textureinline
name() constncine::Object
numChannels() constncine::Texture
Object(ObjectType type)ncine::Objectexplicit
Object(ObjectType type, const char *name)ncine::Object
Object(Object &&other)ncine::Object
Object(const Object &other)ncine::Objectprotected
ObjectType enum namencine::Object
operator=(Texture &&)ncine::Texture
ncine::Object::operator=(Object &&other)ncine::Object
rect() constncine::Textureinline
saveToMemory(unsigned char *bufferPtr)ncine::Texture
saveToMemory(unsigned char *bufferPtr, unsigned int level)ncine::Texture
setChromaKeyColor(const Color &chromaKeyColor)ncine::Textureinline
setChromaKeyColor(const Colorf &chromaKeyColor)ncine::Textureinline
setChromaKeyEnabled(bool chromaKeyEnabled)ncine::Textureinline
setGLTextureLabel(const char *label)ncine::Texture
setMagFiltering(Filtering filter)ncine::Texture
setMinFiltering(Filtering filter)ncine::Texture
setName(const char *name)ncine::Object
setWrap(Wrap wrapMode)ncine::Texture
size() constncine::Textureinline
sType() (defined in ncine::Texture)ncine::Textureinlinestatic
Texture()ncine::Texture
Texture(const char *name, Format format, int mipMapCount, int width, int height)ncine::Texture
Texture(const char *name, Format format, int mipMapCount, Vector2i size)ncine::Texture
Texture(const char *name, Format format, int width, int height)ncine::Texture
Texture(const char *name, Format format, Vector2i size)ncine::Texture
Texture(const char *bufferName, const unsigned char *bufferPtr, unsigned long int bufferSize)ncine::Texture
Texture(const char *filename)ncine::Textureexplicit
Texture(Texture &&)ncine::Texture
type() constncine::Objectinline
type_ncine::Objectprotected
Viewport (defined in ncine::Texture)ncine::Texturefriend
width() constncine::Textureinline
wrap() constncine::Textureinline
Wrap enum namencine::Texture
~Object()ncine::Objectvirtual
~Texture() override (defined in ncine::Texture)ncine::Texture
+ + + + diff --git a/master/classncine_1_1_texture.html b/master/classncine_1_1_texture.html new file mode 100644 index 0000000000..fc8c80aa4c --- /dev/null +++ b/master/classncine_1_1_texture.html @@ -0,0 +1,876 @@ + + + + + + + +nCine: ncine::Texture Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

Texture class. + More...

+ +

#include <Texture.h>

+
+Inheritance diagram for ncine::Texture:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for ncine::Texture:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + +

+Public Types

enum class  Format {
+  R8 +, RG8 +, RGB8 +, RGBA8 +,
+  UNKNOWN +
+ }
 Texture formats.
 
enum class  Filtering {
+  NEAREST +, LINEAR +, NEAREST_MIPMAP_NEAREST +, LINEAR_MIPMAP_NEAREST +,
+  NEAREST_MIPMAP_LINEAR +, LINEAR_MIPMAP_LINEAR +
+ }
 Texture filtering modes.
 
enum class  Wrap { CLAMP_TO_EDGE +, MIRRORED_REPEAT +, REPEAT + }
 Texture wrap modes.
 
- Public Types inherited from ncine::Object
enum class  ObjectType {
+  BASE = 0 +, TEXTURE +, SHADER +, SCENENODE +,
+  SPRITE +, MESH_SPRITE +, ANIMATED_SPRITE +, PARTICLE +,
+  PARTICLE_SYSTEM +, FONT +, TEXTNODE +, AUDIOBUFFER +,
+  AUDIOBUFFER_PLAYER +, AUDIOSTREAM_PLAYER +
+ }
 Object types.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Texture ()
 Creates an OpenGL texture name.
 
 Texture (const char *name, Format format, int mipMapCount, int width, int height)
 Creates an empty texture with the specified format, MIP levels, and size. More...
 
 Texture (const char *name, Format format, int mipMapCount, Vector2i size)
 Creates an empty texture with the specified format, MIP levels, and size using a vector. More...
 
 Texture (const char *name, Format format, int width, int height)
 Creates an empty texture with the specified format and size. More...
 
 Texture (const char *name, Format format, Vector2i size)
 Creates an empty texture with the specified format and size using a vector. More...
 
 Texture (const char *bufferName, const unsigned char *bufferPtr, unsigned long int bufferSize)
 Creates a texture from a named memory buffer. More...
 
Texture (const char *filename)
 Creates a texture from an image file.
 
Texture (Texture &&)
 Default move constructor.
 
+Textureoperator= (Texture &&)
 Default move assignment operator.
 
+void init (const char *name, Format format, int mipMapCount, int width, int height)
 Initializes an empty texture with the specified format, MIP levels, and size.
 
+void init (const char *name, Format format, int mipMapCount, Vector2i size)
 Initializes an empty texture with the specified format, MIP levels, and size using a vector.
 
+void init (const char *name, Format format, int width, int height)
 Initializes an empty texture with the specified format and size.
 
+void init (const char *name, Format format, Vector2i size)
 Initializes an empty texture with the specified format and size using a vector.
 
bool loadFromMemory (const char *bufferName, const unsigned char *bufferPtr, unsigned long int bufferSize)
 
+bool loadFromFile (const char *filename)
 
bool loadFromTexels (const unsigned char *bufferPtr)
 Loads all texture texels in raw format from a memory buffer in the first mip level. More...
 
bool loadFromTexels (const unsigned char *bufferPtr, unsigned int x, unsigned int y, unsigned int width, unsigned int height)
 Loads texels in raw format from a memory buffer to a texture sub-region in the first mip level. More...
 
bool loadFromTexels (const unsigned char *bufferPtr, Recti region)
 Loads texels in raw format from a memory buffer to a texture sub-region with a rectangle in the first mip level. More...
 
bool loadFromTexels (const unsigned char *bufferPtr, unsigned int level, unsigned int x, unsigned int y, unsigned int width, unsigned int height)
 Loads texels in raw format from a memory buffer to a specific texture mip level and sub-region. More...
 
bool loadFromTexels (const unsigned char *bufferPtr, unsigned int level, Recti region)
 Loads texels in raw format from a memory buffer to a specific texture mip level and sub-region with a rectangle. More...
 
+bool saveToMemory (unsigned char *bufferPtr)
 Saves all texture texels in the first mip level in raw format to a memory buffer.
 
+bool saveToMemory (unsigned char *bufferPtr, unsigned int level)
 Saves all texture texels in the specified texture mip level in raw format to a memory buffer.
 
+int width () const
 Returns texture width.
 
+int height () const
 Returns texture height.
 
+int mipMapLevels () const
 Returns texture MIP map levels.
 
+Vector2i size () const
 Returns texture size.
 
+Recti rect () const
 Returns texture rectangle.
 
+bool isCompressed () const
 Returns true if the texture holds compressed data.
 
+Format format () const
 Returns the texture data format.
 
+unsigned int numChannels () const
 Returns the number of color channels.
 
+unsigned long dataSize () const
 Returns the amount of video memory needed to load the texture.
 
+Filtering minFiltering () const
 Returns the texture filtering for minification.
 
+Filtering magFiltering () const
 Returns the texture filtering for magnification.
 
+Wrap wrap () const
 Returns texture wrap for both s and t coordinates.
 
+void setMinFiltering (Filtering filter)
 Sets the texture filtering for minification.
 
+void setMagFiltering (Filtering filter)
 Sets the texture filtering for magnification.
 
+void setWrap (Wrap wrapMode)
 Sets texture wrap for both s and t coordinates.
 
+bool isChromaKeyEnabled () const
 Returns true if chroma key transparency will be used when loading.
 
+Color chromaKeyColor () const
 Returns the color treated as transparent when loading a texture.
 
+void setChromaKeyEnabled (bool chromaKeyEnabled)
 Sets the chroma key transparency state to use when loading.
 
+void setChromaKeyColor (const Color &chromaKeyColor)
 Sets the color to be treated as transparent when loading a texture.
 
+void setChromaKeyColor (const Colorf &chromaKeyColor)
 Sets the color to be treated as transparent when loading a texture, using a Colorf
 
+void setGLTextureLabel (const char *label)
 Sets the OpenGL object label for the texture.
 
void * guiTexId () const
 Returns the user data opaque pointer for ImGui's ImTextureID or Nuklear's texture handle. More...
 
- Public Member Functions inherited from ncine::Object
Object (ObjectType type)
 Constructs an object with a specified type and adds it to the index.
 
Object (ObjectType type, const char *name)
 Constructs an object with a specified type and name and adds it to the index.
 
+virtual ~Object ()
 Removes an object from the index and then destroys it.
 
Object (Object &&other)
 Move constructor.
 
+Objectoperator= (Object &&other)
 Move assignment operator.
 
+unsigned int id () const
 Returns the object identification number.
 
+ObjectType type () const
 Returns the object type (RTTI)
 
+const char * name () const
 Returns the object name.
 
+void setName (const char *name)
 Sets the object name.
 
+ + + + + + + + + + + +

+Static Public Member Functions

+static ObjectType sType ()
 
- Static Public Member Functions inherited from ncine::Object
+static ObjectType sType ()
 Static method to return class type.
 
+template<class T >
static T * fromId (unsigned int id)
 Returns a casted pointer to the object with the specified id, if any exists.
 
+ + + + + +

+Friends

+class Material
 
+class Viewport
 
+ + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Attributes inherited from ncine::Object
+static const unsigned int MaxNameLength = 128
 Maximum length for an object name.
 
- Protected Member Functions inherited from ncine::Object
Object (const Object &other)
 Protected copy constructor used to clone objects.
 
- Protected Attributes inherited from ncine::Object
+ObjectType type_
 Object type.
 
+

Detailed Description

+

Texture class.

+

Constructor & Destructor Documentation

+ +

◆ Texture() [1/5]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ncine::Texture::Texture (const char * name,
Format format,
int mipMapCount,
int width,
int height 
)
+
+ +

Creates an empty texture with the specified format, MIP levels, and size.

+
Note
It specifies a pixel format and it is intended to be used with loadFromTexels()
+ +
+
+ +

◆ Texture() [2/5]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ncine::Texture::Texture (const char * name,
Format format,
int mipMapCount,
Vector2i size 
)
+
+ +

Creates an empty texture with the specified format, MIP levels, and size using a vector.

+
Note
It specifies a pixel format and it is intended to be used with loadFromTexels()
+ +
+
+ +

◆ Texture() [3/5]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ncine::Texture::Texture (const char * name,
Format format,
int width,
int height 
)
+
+ +

Creates an empty texture with the specified format and size.

+
Note
It specifies a pixel format and it is intended to be used with loadFromTexels()
+ +
+
+ +

◆ Texture() [4/5]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ncine::Texture::Texture (const char * name,
Format format,
Vector2i size 
)
+
+ +

Creates an empty texture with the specified format and size using a vector.

+
Note
It specifies a pixel format and it is intended to be used with loadFromTexels()
+ +
+
+ +

◆ Texture() [5/5]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
ncine::Texture::Texture (const char * bufferName,
const unsigned char * bufferPtr,
unsigned long int bufferSize 
)
+
+ +

Creates a texture from a named memory buffer.

+
Note
It needs a bufferName with a valid file extension as it loads compressed data from a file in memory
+ +
+
+

Member Function Documentation

+ +

◆ guiTexId()

+ +
+
+ + + + + + + +
void * ncine::Texture::guiTexId () const
+
+ +

Returns the user data opaque pointer for ImGui's ImTextureID or Nuklear's texture handle.

+

The pointer is an opaque handle to be used only by ImGui or Nuklear. It is considered immutable from an user point of view and thus retrievable by a constant method.

+ +
+
+ +

◆ loadFromMemory()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool ncine::Texture::loadFromMemory (const char * bufferName,
const unsigned char * bufferPtr,
unsigned long int bufferSize 
)
+
+
Note
It needs a bufferName with a valid file extension as it loads compressed data from a file in memory
+ +
+
+ +

◆ loadFromTexels() [1/5]

+ +
+
+ + + + + + + + +
bool ncine::Texture::loadFromTexels (const unsigned char * bufferPtr)
+
+ +

Loads all texture texels in raw format from a memory buffer in the first mip level.

+
Note
It loads uncompressed pixel data from memory using the Format specified in the constructor
+ +
+
+ +

◆ loadFromTexels() [2/5]

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool ncine::Texture::loadFromTexels (const unsigned char * bufferPtr,
Recti region 
)
+
+ +

Loads texels in raw format from a memory buffer to a texture sub-region with a rectangle in the first mip level.

+
Note
It loads uncompressed pixel data from memory using the Format specified in the constructor
+ +
+
+ +

◆ loadFromTexels() [3/5]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
bool ncine::Texture::loadFromTexels (const unsigned char * bufferPtr,
unsigned int level,
Recti region 
)
+
+ +

Loads texels in raw format from a memory buffer to a specific texture mip level and sub-region with a rectangle.

+

It loads uncompressed pixel data from memory using the Format specified in the constructor

+ +
+
+ +

◆ loadFromTexels() [4/5]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool ncine::Texture::loadFromTexels (const unsigned char * bufferPtr,
unsigned int level,
unsigned int x,
unsigned int y,
unsigned int width,
unsigned int height 
)
+
+ +

Loads texels in raw format from a memory buffer to a specific texture mip level and sub-region.

+
Note
It loads uncompressed pixel data from memory using the Format specified in the constructor
+ +
+
+ +

◆ loadFromTexels() [5/5]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
bool ncine::Texture::loadFromTexels (const unsigned char * bufferPtr,
unsigned int x,
unsigned int y,
unsigned int width,
unsigned int height 
)
+
+ +

Loads texels in raw format from a memory buffer to a texture sub-region in the first mip level.

+
Note
It loads uncompressed pixel data from memory using the Format specified in the constructor
+ +
+
+
The documentation for this class was generated from the following files:
    +
  • include/ncine/Texture.h
  • +
  • src/graphics/Texture.cpp
  • +
+
+ + + + diff --git a/master/classncine_1_1_texture__coll__graph.map b/master/classncine_1_1_texture__coll__graph.map new file mode 100644 index 0000000000..88811a6015 --- /dev/null +++ b/master/classncine_1_1_texture__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classncine_1_1_texture__coll__graph.md5 b/master/classncine_1_1_texture__coll__graph.md5 new file mode 100644 index 0000000000..081db4e748 --- /dev/null +++ b/master/classncine_1_1_texture__coll__graph.md5 @@ -0,0 +1 @@ +3ab5a6c93b6ec24f38169107ee33e849 \ No newline at end of file diff --git a/master/classncine_1_1_texture__coll__graph.png b/master/classncine_1_1_texture__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..0e8557b305fe3453c301f128dc65ff54bfe577d4 GIT binary patch literal 2638 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 N80ndzh}Z8v`3p=d0~7!N literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_texture__inherit__graph.map b/master/classncine_1_1_texture__inherit__graph.map new file mode 100644 index 0000000000..88811a6015 --- /dev/null +++ b/master/classncine_1_1_texture__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classncine_1_1_texture__inherit__graph.md5 b/master/classncine_1_1_texture__inherit__graph.md5 new file mode 100644 index 0000000000..081db4e748 --- /dev/null +++ b/master/classncine_1_1_texture__inherit__graph.md5 @@ -0,0 +1 @@ +3ab5a6c93b6ec24f38169107ee33e849 \ No newline at end of file diff --git a/master/classncine_1_1_texture__inherit__graph.png b/master/classncine_1_1_texture__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..0e8557b305fe3453c301f128dc65ff54bfe577d4 GIT binary patch literal 2638 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 N80ndzh}Z8v`3p=d0~7!N literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_texture_saver_png-members.html b/master/classncine_1_1_texture_saver_png-members.html new file mode 100644 index 0000000000..dcc0b16381 --- /dev/null +++ b/master/classncine_1_1_texture_saver_png-members.html @@ -0,0 +1,93 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::TextureSaverPng Member List
+
+
+ +

This is the complete list of members for ncine::TextureSaverPng, including all inherited members.

+ + + + + + + + + + +
bpp(const Format format) (defined in ncine::ITextureSaver)ncine::ITextureSaver
dataSize(const Properties &properties) (defined in ncine::ITextureSaver)ncine::ITextureSaver
flipPixels(const Properties &properties, unsigned char *dest) (defined in ncine::ITextureSaver)ncine::ITextureSaver
Format enum name (defined in ncine::ITextureSaver)ncine::ITextureSaver
saveToFile(const Properties &properties, const char *filename) override (defined in ncine::TextureSaverPng)ncine::TextureSaverPngvirtual
saveToFile(const Properties &properties, nctl::UniquePtr< IFile > fileHandle) override (defined in ncine::TextureSaverPng)ncine::TextureSaverPngvirtual
saveToFile(const Properties &properties, const PngProperties &pngProperties, const char *filename) (defined in ncine::TextureSaverPng)ncine::TextureSaverPng
saveToFile(const Properties &properties, const PngProperties &pngProperties, nctl::UniquePtr< IFile > fileHandle) (defined in ncine::TextureSaverPng)ncine::TextureSaverPng
~ITextureSaver() (defined in ncine::ITextureSaver)ncine::ITextureSavervirtual
+ + + + diff --git a/master/classncine_1_1_texture_saver_png.html b/master/classncine_1_1_texture_saver_png.html new file mode 100644 index 0000000000..c3fabbd680 --- /dev/null +++ b/master/classncine_1_1_texture_saver_png.html @@ -0,0 +1,154 @@ + + + + + + + +nCine: ncine::TextureSaverPng Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::TextureSaverPng Class Reference
+
+
+ +

PNG texture saver. + More...

+ +

#include <TextureSaverPng.h>

+
+Inheritance diagram for ncine::TextureSaverPng:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for ncine::TextureSaverPng:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + +

+Classes

struct  PngProperties
 
+ + + + + + + + + + + + + + + + +

+Public Member Functions

+bool saveToFile (const Properties &properties, const char *filename) override
 
+bool saveToFile (const Properties &properties, nctl::UniquePtr< IFile > fileHandle) override
 
+bool saveToFile (const Properties &properties, const PngProperties &pngProperties, const char *filename)
 
+bool saveToFile (const Properties &properties, const PngProperties &pngProperties, nctl::UniquePtr< IFile > fileHandle)
 
- Public Member Functions inherited from ncine::ITextureSaver
+unsigned int bpp (const Format format)
 
+unsigned int dataSize (const Properties &properties)
 
+void flipPixels (const Properties &properties, unsigned char *dest)
 
+ + + + +

+Additional Inherited Members

- Public Types inherited from ncine::ITextureSaver
enum class  Format { RGB8 +, RGBA8 +, RGB_FLOAT + }
 
+

Detailed Description

+

PNG texture saver.

+

The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classncine_1_1_texture_saver_png__coll__graph.map b/master/classncine_1_1_texture_saver_png__coll__graph.map new file mode 100644 index 0000000000..376c011a3c --- /dev/null +++ b/master/classncine_1_1_texture_saver_png__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classncine_1_1_texture_saver_png__coll__graph.md5 b/master/classncine_1_1_texture_saver_png__coll__graph.md5 new file mode 100644 index 0000000000..22f11c758c --- /dev/null +++ b/master/classncine_1_1_texture_saver_png__coll__graph.md5 @@ -0,0 +1 @@ +c65da257c569c85ea97b90eb7499715a \ No newline at end of file diff --git a/master/classncine_1_1_texture_saver_png__coll__graph.png b/master/classncine_1_1_texture_saver_png__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..c21ae7041b0180458e79b9f8306d6229cf6f256c GIT binary patch literal 3970 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 literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_texture_saver_png__inherit__graph.map b/master/classncine_1_1_texture_saver_png__inherit__graph.map new file mode 100644 index 0000000000..376c011a3c --- /dev/null +++ b/master/classncine_1_1_texture_saver_png__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classncine_1_1_texture_saver_png__inherit__graph.md5 b/master/classncine_1_1_texture_saver_png__inherit__graph.md5 new file mode 100644 index 0000000000..22f11c758c --- /dev/null +++ b/master/classncine_1_1_texture_saver_png__inherit__graph.md5 @@ -0,0 +1 @@ +c65da257c569c85ea97b90eb7499715a \ No newline at end of file diff --git a/master/classncine_1_1_texture_saver_png__inherit__graph.png b/master/classncine_1_1_texture_saver_png__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..c21ae7041b0180458e79b9f8306d6229cf6f256c GIT binary patch literal 3970 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 literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_texture_saver_web_p-members.html b/master/classncine_1_1_texture_saver_web_p-members.html new file mode 100644 index 0000000000..1e1b754db1 --- /dev/null +++ b/master/classncine_1_1_texture_saver_web_p-members.html @@ -0,0 +1,93 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::TextureSaverWebP Member List
+
+
+ +

This is the complete list of members for ncine::TextureSaverWebP, including all inherited members.

+ + + + + + + + + + +
bpp(const Format format) (defined in ncine::ITextureSaver)ncine::ITextureSaver
dataSize(const Properties &properties) (defined in ncine::ITextureSaver)ncine::ITextureSaver
flipPixels(const Properties &properties, unsigned char *dest) (defined in ncine::ITextureSaver)ncine::ITextureSaver
Format enum name (defined in ncine::ITextureSaver)ncine::ITextureSaver
saveToFile(const Properties &properties, const char *filename) override (defined in ncine::TextureSaverWebP)ncine::TextureSaverWebPvirtual
saveToFile(const Properties &properties, nctl::UniquePtr< IFile > fileHandle) override (defined in ncine::TextureSaverWebP)ncine::TextureSaverWebPvirtual
saveToFile(const Properties &properties, const WebPProperties &webpProperties, const char *filename) (defined in ncine::TextureSaverWebP)ncine::TextureSaverWebP
saveToFile(const Properties &properties, const WebPProperties &webpProperties, nctl::UniquePtr< IFile > fileHandle) (defined in ncine::TextureSaverWebP)ncine::TextureSaverWebP
~ITextureSaver() (defined in ncine::ITextureSaver)ncine::ITextureSavervirtual
+ + + + diff --git a/master/classncine_1_1_texture_saver_web_p.html b/master/classncine_1_1_texture_saver_web_p.html new file mode 100644 index 0000000000..596954fcd6 --- /dev/null +++ b/master/classncine_1_1_texture_saver_web_p.html @@ -0,0 +1,154 @@ + + + + + + + +nCine: ncine::TextureSaverWebP Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::TextureSaverWebP Class Reference
+
+
+ +

WebP texture saver. + More...

+ +

#include <TextureSaverWebP.h>

+
+Inheritance diagram for ncine::TextureSaverWebP:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for ncine::TextureSaverWebP:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + +

+Classes

struct  WebPProperties
 
+ + + + + + + + + + + + + + + + +

+Public Member Functions

+bool saveToFile (const Properties &properties, const char *filename) override
 
+bool saveToFile (const Properties &properties, nctl::UniquePtr< IFile > fileHandle) override
 
+bool saveToFile (const Properties &properties, const WebPProperties &webpProperties, const char *filename)
 
+bool saveToFile (const Properties &properties, const WebPProperties &webpProperties, nctl::UniquePtr< IFile > fileHandle)
 
- Public Member Functions inherited from ncine::ITextureSaver
+unsigned int bpp (const Format format)
 
+unsigned int dataSize (const Properties &properties)
 
+void flipPixels (const Properties &properties, unsigned char *dest)
 
+ + + + +

+Additional Inherited Members

- Public Types inherited from ncine::ITextureSaver
enum class  Format { RGB8 +, RGBA8 +, RGB_FLOAT + }
 
+

Detailed Description

+

WebP texture saver.

+

The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classncine_1_1_texture_saver_web_p__coll__graph.map b/master/classncine_1_1_texture_saver_web_p__coll__graph.map new file mode 100644 index 0000000000..283277d8f1 --- /dev/null +++ b/master/classncine_1_1_texture_saver_web_p__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classncine_1_1_texture_saver_web_p__coll__graph.md5 b/master/classncine_1_1_texture_saver_web_p__coll__graph.md5 new file mode 100644 index 0000000000..55b403c88d --- /dev/null +++ b/master/classncine_1_1_texture_saver_web_p__coll__graph.md5 @@ -0,0 +1 @@ +3271ed3af9ce14e5094dead6e0947bb6 \ No newline at end of file diff --git a/master/classncine_1_1_texture_saver_web_p__coll__graph.png b/master/classncine_1_1_texture_saver_web_p__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..47bec52bf41907ef3d1b004f11130946fe8b7915 GIT binary patch literal 4179 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 AMgRZ+ literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_texture_saver_web_p__inherit__graph.map b/master/classncine_1_1_texture_saver_web_p__inherit__graph.map new file mode 100644 index 0000000000..283277d8f1 --- /dev/null +++ b/master/classncine_1_1_texture_saver_web_p__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classncine_1_1_texture_saver_web_p__inherit__graph.md5 b/master/classncine_1_1_texture_saver_web_p__inherit__graph.md5 new file mode 100644 index 0000000000..55b403c88d --- /dev/null +++ b/master/classncine_1_1_texture_saver_web_p__inherit__graph.md5 @@ -0,0 +1 @@ +3271ed3af9ce14e5094dead6e0947bb6 \ No newline at end of file diff --git a/master/classncine_1_1_texture_saver_web_p__inherit__graph.png b/master/classncine_1_1_texture_saver_web_p__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..47bec52bf41907ef3d1b004f11130946fe8b7915 GIT binary patch literal 4179 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 AMgRZ+ literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_time_stamp-members.html b/master/classncine_1_1_time_stamp-members.html new file mode 100644 index 0000000000..0dfa3fc5fc --- /dev/null +++ b/master/classncine_1_1_time_stamp-members.html @@ -0,0 +1,110 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::TimeStamp Member List
+
+
+ +

This is the complete list of members for ncine::TimeStamp, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
microseconds() constncine::TimeStamp
microsecondsDouble() constncine::TimeStamp
microsecondsDoubleSince() constncine::TimeStamp
microsecondsSince() constncine::TimeStamp
milliseconds() constncine::TimeStamp
millisecondsDouble() constncine::TimeStamp
millisecondsDoubleSince() constncine::TimeStamp
millisecondsSince() constncine::TimeStamp
nanoseconds() constncine::TimeStamp
nanosecondsDouble() constncine::TimeStamp
nanosecondsDoubleSince() constncine::TimeStamp
nanosecondsSince() constncine::TimeStamp
now()ncine::TimeStampinlinestatic
operator+(const TimeStamp &other) const (defined in ncine::TimeStamp)ncine::TimeStamp
operator+=(const TimeStamp &other) (defined in ncine::TimeStamp)ncine::TimeStamp
operator-(const TimeStamp &other) const (defined in ncine::TimeStamp)ncine::TimeStamp
operator-=(const TimeStamp &other) (defined in ncine::TimeStamp)ncine::TimeStamp
operator<(const TimeStamp &other) const (defined in ncine::TimeStamp)ncine::TimeStamp
operator>(const TimeStamp &other) const (defined in ncine::TimeStamp)ncine::TimeStamp
seconds() constncine::TimeStamp
secondsDouble() constncine::TimeStamp
secondsDoubleSince() constncine::TimeStamp
secondsSince() constncine::TimeStamp
ticks() constncine::TimeStampinline
timeSince() constncine::TimeStamp
TimeStamp() (defined in ncine::TimeStamp)ncine::TimeStamp
+ + + + diff --git a/master/classncine_1_1_time_stamp.html b/master/classncine_1_1_time_stamp.html new file mode 100644 index 0000000000..76c9e8ce3a --- /dev/null +++ b/master/classncine_1_1_time_stamp.html @@ -0,0 +1,197 @@ + + + + + + + +nCine: ncine::TimeStamp Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::TimeStamp Class Reference
+
+
+ +

A class representing a point in time or a duration. + More...

+ +

#include <TimeStamp.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+bool operator> (const TimeStamp &other) const
 
+bool operator< (const TimeStamp &other) const
 
+TimeStampoperator+= (const TimeStamp &other)
 
+TimeStampoperator-= (const TimeStamp &other)
 
+TimeStamp operator+ (const TimeStamp &other) const
 
+TimeStamp operator- (const TimeStamp &other) const
 
+TimeStamp timeSince () const
 Returns a new time stamp with the time elapsed since this one.
 
+float secondsSince () const
 Returns the time elapsed since the timestamp, as seconds in a float number.
 
+double secondsDoubleSince () const
 Returns the time elapsed since the timestamp, as seconds in a double number.
 
+float millisecondsSince () const
 Returns the time elapsed since the timestamp, as milliseconds in a float number.
 
+double millisecondsDoubleSince () const
 Returns the time elapsed since the timestamp, as milliseconds in a double number.
 
+float microsecondsSince () const
 Returns the time elapsed since the timestamp, as microseconds in a float number.
 
+double microsecondsDoubleSince () const
 Returns the time elapsed since the timestamp, as microseconds in a double number.
 
+float nanosecondsSince () const
 Returns the time elapsed since the timestamp, as seconds in a nanoseconds number.
 
+double nanosecondsDoubleSince () const
 Returns the time elapsed since the timestamp, as seconds in a nanoseconds number.
 
+uint64_t ticks () const
 Returns the timestamp counter value (the number of ticks elapsed until now)
 
+float seconds () const
 Returns the timestamp counter value as seconds in a float number.
 
+double secondsDouble () const
 Returns the timestamp counter value as seconds in a double number.
 
+float milliseconds () const
 Returns the timestamp counter value as milliseconds in a float number.
 
+double millisecondsDouble () const
 Returns the timestamp counter value as milliseconds in a double number.
 
+float microseconds () const
 Returns the timestamp counter value as microseconds in a float number.
 
+double microsecondsDouble () const
 Returns the timestamp counter value as microseconds in a double number.
 
+float nanoseconds () const
 Returns the timestamp counter value as nanoseconds in a float number.
 
+double nanosecondsDouble () const
 Returns the timestamp counter value as nanoseconds in a double number.
 
+ + + + +

+Static Public Member Functions

+static TimeStamp now ()
 Returns a new time stamp initialized now.
 
+

Detailed Description

+

A class representing a point in time or a duration.

+

The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classncine_1_1_timer-members.html b/master/classncine_1_1_timer-members.html new file mode 100644 index 0000000000..9fe71beb36 --- /dev/null +++ b/master/classncine_1_1_timer-members.html @@ -0,0 +1,92 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::Timer Member List
+
+
+ +

This is the complete list of members for ncine::Timer, including all inherited members.

+ + + + + + + + + +
interval() constncine::Timer
isRunning() constncine::Timerinline
reset()ncine::Timerinline
sleep(unsigned int milliseconds)ncine::Timerstatic
start()ncine::Timer
stop()ncine::Timer
Timer() (defined in ncine::Timer)ncine::Timer
total() constncine::Timer
+ + + + diff --git a/master/classncine_1_1_timer.html b/master/classncine_1_1_timer.html new file mode 100644 index 0000000000..9acf273fbc --- /dev/null +++ b/master/classncine_1_1_timer.html @@ -0,0 +1,131 @@ + + + + + + + +nCine: ncine::Timer Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

Basic timer and synchronization class. + More...

+ +

#include <Timer.h>

+ + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

+void start ()
 Starts the timer.
 
+void stop ()
 Stops the timer.
 
+void reset ()
 Resets the accumulated time.
 
+bool isRunning () const
 Returns true if the timer is running.
 
+float interval () const
 Returns elapsed time in seconds since last starting the timer.
 
+float total () const
 Returns total accumulated time in seconds.
 
+ + + + +

+Static Public Member Functions

+static void sleep (unsigned int milliseconds)
 Puts the current thread to sleep for the specified number of milliseconds.
 
+

Detailed Description

+

Basic timer and synchronization class.

+

The documentation for this class was generated from the following files:
    +
  • include/ncine/Timer.h
  • +
  • src/Timer.cpp
  • +
+
+ + + + diff --git a/master/classncine_1_1_touch_event-members.html b/master/classncine_1_1_touch_event-members.html new file mode 100644 index 0000000000..34079c0925 --- /dev/null +++ b/master/classncine_1_1_touch_event-members.html @@ -0,0 +1,90 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::TouchEvent Member List
+
+
+ +

This is the complete list of members for ncine::TouchEvent, including all inherited members.

+ + + + + + + +
actionIndex (defined in ncine::TouchEvent)ncine::TouchEvent
count (defined in ncine::TouchEvent)ncine::TouchEvent
findPointerIndex(int pointerId) const (defined in ncine::TouchEvent)ncine::TouchEventinline
MaxPointers (defined in ncine::TouchEvent)ncine::TouchEventstatic
pointers (defined in ncine::TouchEvent)ncine::TouchEvent
TouchEvent() (defined in ncine::TouchEvent)ncine::TouchEventinline
+ + + + diff --git a/master/classncine_1_1_touch_event.html b/master/classncine_1_1_touch_event.html new file mode 100644 index 0000000000..39ad61e1f4 --- /dev/null +++ b/master/classncine_1_1_touch_event.html @@ -0,0 +1,136 @@ + + + + + + + +nCine: ncine::TouchEvent Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

Information about a screen touch event. + More...

+ +

#include <InputEvents.h>

+
+Collaboration diagram for ncine::TouchEvent:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + +

+Classes

struct  Pointer
 
+ + + +

+Public Member Functions

+int findPointerIndex (int pointerId) const
 
+ + + + + + + +

+Public Attributes

+unsigned int count
 
+int actionIndex
 
+Pointer pointers [MaxPointers]
 
+ + + +

+Static Public Attributes

+static const unsigned int MaxPointers = 10
 
+

Detailed Description

+

Information about a screen touch event.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classncine_1_1_touch_event__coll__graph.map b/master/classncine_1_1_touch_event__coll__graph.map new file mode 100644 index 0000000000..6332eb9aad --- /dev/null +++ b/master/classncine_1_1_touch_event__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classncine_1_1_touch_event__coll__graph.md5 b/master/classncine_1_1_touch_event__coll__graph.md5 new file mode 100644 index 0000000000..6d7835a3cb --- /dev/null +++ b/master/classncine_1_1_touch_event__coll__graph.md5 @@ -0,0 +1 @@ +c595faf41b578a775f42edf76b3efc4e \ No newline at end of file diff --git a/master/classncine_1_1_touch_event__coll__graph.png b/master/classncine_1_1_touch_event__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..3eefa9271fcf22373e41457cc709b85a5892538b GIT binary patch literal 3960 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 literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_vector2-members.html b/master/classncine_1_1_vector2-members.html new file mode 100644 index 0000000000..28d7ed9197 --- /dev/null +++ b/master/classncine_1_1_vector2-members.html @@ -0,0 +1,123 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::Vector2< T > Member List
+
+
+ +

This is the complete list of members for ncine::Vector2< T >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
data() (defined in ncine::Vector2< T >)ncine::Vector2< T >inline
data() const (defined in ncine::Vector2< T >)ncine::Vector2< T >inline
dot (defined in ncine::Vector2< T >)ncine::Vector2< T >friend
length() const (defined in ncine::Vector2< T >)ncine::Vector2< T >inline
normalize() (defined in ncine::Vector2< T >)ncine::Vector2< T >inline
normalized() const (defined in ncine::Vector2< T >)ncine::Vector2< T >inline
operator*(const Vector2 &v) const (defined in ncine::Vector2< T >)ncine::Vector2< T >inline
operator*(T s) const (defined in ncine::Vector2< T >)ncine::Vector2< T >inline
operator* (defined in ncine::Vector2< T >)ncine::Vector2< T >friend
operator*=(const Vector2 &v) (defined in ncine::Vector2< T >)ncine::Vector2< T >inline
operator*=(T s) (defined in ncine::Vector2< T >)ncine::Vector2< T >inline
operator+(const Vector2 &v) const (defined in ncine::Vector2< T >)ncine::Vector2< T >inline
operator+(T s) const (defined in ncine::Vector2< T >)ncine::Vector2< T >inline
operator+=(const Vector2 &v) (defined in ncine::Vector2< T >)ncine::Vector2< T >inline
operator+=(T s) (defined in ncine::Vector2< T >)ncine::Vector2< T >inline
operator-() const (defined in ncine::Vector2< T >)ncine::Vector2< T >inline
operator-(const Vector2 &v) const (defined in ncine::Vector2< T >)ncine::Vector2< T >inline
operator-(T s) const (defined in ncine::Vector2< T >)ncine::Vector2< T >inline
operator-=(const Vector2 &v) (defined in ncine::Vector2< T >)ncine::Vector2< T >inline
operator-=(T s) (defined in ncine::Vector2< T >)ncine::Vector2< T >inline
operator/(const Vector2 &v) const (defined in ncine::Vector2< T >)ncine::Vector2< T >inline
operator/(T s) const (defined in ncine::Vector2< T >)ncine::Vector2< T >inline
operator/=(const Vector2 &v) (defined in ncine::Vector2< T >)ncine::Vector2< T >inline
operator/=(T s) (defined in ncine::Vector2< T >)ncine::Vector2< T >inline
operator=(const Vector2 &other) (defined in ncine::Vector2< T >)ncine::Vector2< T >inline
operator==(const Vector2 &v) const (defined in ncine::Vector2< T >)ncine::Vector2< T >inline
operator[](unsigned int index) (defined in ncine::Vector2< T >)ncine::Vector2< T >inline
operator[](unsigned int index) const (defined in ncine::Vector2< T >)ncine::Vector2< T >inline
set(T xx, T yy) (defined in ncine::Vector2< T >)ncine::Vector2< T >inline
sqrLength() const (defined in ncine::Vector2< T >)ncine::Vector2< T >inline
Vector2() (defined in ncine::Vector2< T >)ncine::Vector2< T >inline
Vector2(T s) (defined in ncine::Vector2< T >)ncine::Vector2< T >inlineexplicit
Vector2(T xx, T yy) (defined in ncine::Vector2< T >)ncine::Vector2< T >inline
Vector2(const Vector2 &other) (defined in ncine::Vector2< T >)ncine::Vector2< T >inline
x (defined in ncine::Vector2< T >)ncine::Vector2< T >
XAxisncine::Vector2< T >static
y (defined in ncine::Vector2< T >)ncine::Vector2< T >
YAxisncine::Vector2< T >static
Zeroncine::Vector2< T >static
+ + + + diff --git a/master/classncine_1_1_vector2.html b/master/classncine_1_1_vector2.html new file mode 100644 index 0000000000..8889bf0540 --- /dev/null +++ b/master/classncine_1_1_vector2.html @@ -0,0 +1,241 @@ + + + + + + + +nCine: ncine::Vector2< T > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::Vector2< T > Class Template Reference
+
+
+ +

A two component vector based on templates. + More...

+ +

#include <Vector2.h>

+
+Collaboration diagram for ncine::Vector2< T >:
+
+
Collaboration graph
+ + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Vector2 (T s)
 
Vector2 (T xx, T yy)
 
Vector2 (const Vector2 &other)
 
+Vector2operator= (const Vector2 &other)
 
+void set (T xx, T yy)
 
+T * data ()
 
+const T * data () const
 
+T & operator[] (unsigned int index)
 
+const T & operator[] (unsigned int index) const
 
+bool operator== (const Vector2 &v) const
 
+Vector2 operator- () const
 
+Vector2operator+= (const Vector2 &v)
 
+Vector2operator-= (const Vector2 &v)
 
+Vector2operator*= (const Vector2 &v)
 
+Vector2operator/= (const Vector2 &v)
 
+Vector2operator+= (T s)
 
+Vector2operator-= (T s)
 
+Vector2operator*= (T s)
 
+Vector2operator/= (T s)
 
+Vector2 operator+ (const Vector2 &v) const
 
+Vector2 operator- (const Vector2 &v) const
 
+Vector2 operator* (const Vector2 &v) const
 
+Vector2 operator/ (const Vector2 &v) const
 
+Vector2 operator+ (T s) const
 
+Vector2 operator- (T s) const
 
+Vector2 operator* (T s) const
 
+Vector2 operator/ (T s) const
 
+T length () const
 
+T sqrLength () const
 
+Vector2 normalized () const
 
+Vector2normalize ()
 
+ + + + + +

+Public Attributes

+T x
 
+T y
 
+ + + + + + + + + + +

+Static Public Attributes

+static const Vector2 Zero
 A vector with all zero elements.
 
+static const Vector2 XAxis
 A unit vector on the X axis.
 
+static const Vector2 YAxis
 A unit vector on the Y axis.
 
+ + + + + + + +

+Friends

+template<class S >
Vector2< S > operator* (S s, const Vector2< S > &v)
 
+template<class S >
dot (const Vector2< S > &v1, const Vector2< S > &v2)
 
+

Detailed Description

+

template<class T>
+class ncine::Vector2< T >

+ +

A two component vector based on templates.

+

The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classncine_1_1_vector2__coll__graph.map b/master/classncine_1_1_vector2__coll__graph.map new file mode 100644 index 0000000000..04d5c03502 --- /dev/null +++ b/master/classncine_1_1_vector2__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/master/classncine_1_1_vector2__coll__graph.md5 b/master/classncine_1_1_vector2__coll__graph.md5 new file mode 100644 index 0000000000..5588b6ba0f --- /dev/null +++ b/master/classncine_1_1_vector2__coll__graph.md5 @@ -0,0 +1 @@ +a47aa53bbf9c82144566b29bc6ca5936 \ No newline at end of file diff --git a/master/classncine_1_1_vector2__coll__graph.png b/master/classncine_1_1_vector2__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..473c35c6338515494b97b82eff0cbf270f390393 GIT binary patch literal 4472 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 z + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::Vector3< T > Member List
+
+
+ +

This is the complete list of members for ncine::Vector3< T >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
cross (defined in ncine::Vector3< T >)ncine::Vector3< T >friend
data() (defined in ncine::Vector3< T >)ncine::Vector3< T >inline
data() const (defined in ncine::Vector3< T >)ncine::Vector3< T >inline
dot (defined in ncine::Vector3< T >)ncine::Vector3< T >friend
length() const (defined in ncine::Vector3< T >)ncine::Vector3< T >inline
normalize() (defined in ncine::Vector3< T >)ncine::Vector3< T >inline
normalized() const (defined in ncine::Vector3< T >)ncine::Vector3< T >inline
operator*(const Vector3 &v) const (defined in ncine::Vector3< T >)ncine::Vector3< T >inline
operator*(T s) const (defined in ncine::Vector3< T >)ncine::Vector3< T >inline
operator* (defined in ncine::Vector3< T >)ncine::Vector3< T >friend
operator*=(const Vector3 &v) (defined in ncine::Vector3< T >)ncine::Vector3< T >inline
operator*=(T s) (defined in ncine::Vector3< T >)ncine::Vector3< T >inline
operator+(const Vector3 &v) const (defined in ncine::Vector3< T >)ncine::Vector3< T >inline
operator+(T s) const (defined in ncine::Vector3< T >)ncine::Vector3< T >inline
operator+=(const Vector3 &v) (defined in ncine::Vector3< T >)ncine::Vector3< T >inline
operator+=(T s) (defined in ncine::Vector3< T >)ncine::Vector3< T >inline
operator-() const (defined in ncine::Vector3< T >)ncine::Vector3< T >inline
operator-(const Vector3 &v) const (defined in ncine::Vector3< T >)ncine::Vector3< T >inline
operator-(T s) const (defined in ncine::Vector3< T >)ncine::Vector3< T >inline
operator-=(const Vector3 &v) (defined in ncine::Vector3< T >)ncine::Vector3< T >inline
operator-=(T s) (defined in ncine::Vector3< T >)ncine::Vector3< T >inline
operator/(const Vector3 &v) const (defined in ncine::Vector3< T >)ncine::Vector3< T >inline
operator/(T s) const (defined in ncine::Vector3< T >)ncine::Vector3< T >inline
operator/=(const Vector3 &v) (defined in ncine::Vector3< T >)ncine::Vector3< T >inline
operator/=(T s) (defined in ncine::Vector3< T >)ncine::Vector3< T >inline
operator=(const Vector3 &other) (defined in ncine::Vector3< T >)ncine::Vector3< T >inline
operator==(const Vector3 &v) const (defined in ncine::Vector3< T >)ncine::Vector3< T >inline
operator[](unsigned int index) (defined in ncine::Vector3< T >)ncine::Vector3< T >inline
operator[](unsigned int index) const (defined in ncine::Vector3< T >)ncine::Vector3< T >inline
set(T xx, T yy, T zz) (defined in ncine::Vector3< T >)ncine::Vector3< T >inline
sqrLength() const (defined in ncine::Vector3< T >)ncine::Vector3< T >inline
toVector2() const (defined in ncine::Vector3< T >)ncine::Vector3< T >inline
Vector3() (defined in ncine::Vector3< T >)ncine::Vector3< T >inline
Vector3(T s) (defined in ncine::Vector3< T >)ncine::Vector3< T >inlineexplicit
Vector3(T xx, T yy, T zz) (defined in ncine::Vector3< T >)ncine::Vector3< T >inline
Vector3(const Vector3 &other) (defined in ncine::Vector3< T >)ncine::Vector3< T >inline
x (defined in ncine::Vector3< T >)ncine::Vector3< T >
XAxisncine::Vector3< T >static
y (defined in ncine::Vector3< T >)ncine::Vector3< T >
YAxisncine::Vector3< T >static
z (defined in ncine::Vector3< T >)ncine::Vector3< T >
ZAxisncine::Vector3< T >static
Zeroncine::Vector3< T >static
+ + + + diff --git a/master/classncine_1_1_vector3.html b/master/classncine_1_1_vector3.html new file mode 100644 index 0000000000..5190977896 --- /dev/null +++ b/master/classncine_1_1_vector3.html @@ -0,0 +1,254 @@ + + + + + + + +nCine: ncine::Vector3< T > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::Vector3< T > Class Template Reference
+
+
+ +

A three component vector based on templates. + More...

+ +

#include <Vector3.h>

+
+Collaboration diagram for ncine::Vector3< T >:
+
+
Collaboration graph
+ + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Vector3 (T s)
 
Vector3 (T xx, T yy, T zz)
 
Vector3 (const Vector3 &other)
 
+Vector3operator= (const Vector3 &other)
 
+void set (T xx, T yy, T zz)
 
+T * data ()
 
+const T * data () const
 
+T & operator[] (unsigned int index)
 
+const T & operator[] (unsigned int index) const
 
+bool operator== (const Vector3 &v) const
 
+Vector3 operator- () const
 
+Vector3operator+= (const Vector3 &v)
 
+Vector3operator-= (const Vector3 &v)
 
+Vector3operator*= (const Vector3 &v)
 
+Vector3operator/= (const Vector3 &v)
 
+Vector3operator+= (T s)
 
+Vector3operator-= (T s)
 
+Vector3operator*= (T s)
 
+Vector3operator/= (T s)
 
+Vector3 operator+ (const Vector3 &v) const
 
+Vector3 operator- (const Vector3 &v) const
 
+Vector3 operator* (const Vector3 &v) const
 
+Vector3 operator/ (const Vector3 &v) const
 
+Vector3 operator+ (T s) const
 
+Vector3 operator- (T s) const
 
+Vector3 operator* (T s) const
 
+Vector3 operator/ (T s) const
 
+T length () const
 
+T sqrLength () const
 
+Vector3 normalized () const
 
+Vector3normalize ()
 
+Vector2< T > toVector2 () const
 
+ + + + + + + +

+Public Attributes

+T x
 
+T y
 
+T z
 
+ + + + + + + + + + + + + +

+Static Public Attributes

+static const Vector3 Zero
 A vector with all zero elements.
 
+static const Vector3 XAxis
 A unit vector on the X axis.
 
+static const Vector3 YAxis
 A unit vector on the Y axis.
 
+static const Vector3 ZAxis
 A unit vector on the Z axis.
 
+ + + + + + + + + + +

+Friends

+template<class S >
Vector3< S > operator* (S s, const Vector3< S > &v)
 
+template<class S >
dot (const Vector3< S > &v1, const Vector3< S > &v2)
 
+template<class S >
Vector3< S > cross (const Vector3< S > &v1, const Vector3< S > &v2)
 
+

Detailed Description

+

template<class T>
+class ncine::Vector3< T >

+ +

A three component vector based on templates.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classncine_1_1_vector3__coll__graph.map b/master/classncine_1_1_vector3__coll__graph.map new file mode 100644 index 0000000000..0502947b75 --- /dev/null +++ b/master/classncine_1_1_vector3__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/master/classncine_1_1_vector3__coll__graph.md5 b/master/classncine_1_1_vector3__coll__graph.md5 new file mode 100644 index 0000000000..a2f67a744e --- /dev/null +++ b/master/classncine_1_1_vector3__coll__graph.md5 @@ -0,0 +1 @@ +e437d8f7581e222f7324a790b09370e5 \ No newline at end of file diff --git a/master/classncine_1_1_vector3__coll__graph.png b/master/classncine_1_1_vector3__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..137cc5a7222393c73c24e9083f1d350deb0fbaf1 GIT binary patch literal 4409 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 RSm0YBb(JTu5+#d({{aSWhxY&g literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_vector4-members.html b/master/classncine_1_1_vector4-members.html new file mode 100644 index 0000000000..a9a8aedf8e --- /dev/null +++ b/master/classncine_1_1_vector4-members.html @@ -0,0 +1,129 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::Vector4< T > Member List
+
+
+ +

This is the complete list of members for ncine::Vector4< T >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
data() (defined in ncine::Vector4< T >)ncine::Vector4< T >inline
data() const (defined in ncine::Vector4< T >)ncine::Vector4< T >inline
dot (defined in ncine::Vector4< T >)ncine::Vector4< T >friend
length() const (defined in ncine::Vector4< T >)ncine::Vector4< T >inline
normalize() (defined in ncine::Vector4< T >)ncine::Vector4< T >inline
normalized() const (defined in ncine::Vector4< T >)ncine::Vector4< T >inline
operator*(const Vector4 &v) const (defined in ncine::Vector4< T >)ncine::Vector4< T >inline
operator*(T s) const (defined in ncine::Vector4< T >)ncine::Vector4< T >inline
operator* (defined in ncine::Vector4< T >)ncine::Vector4< T >friend
operator*=(const Vector4 &v) (defined in ncine::Vector4< T >)ncine::Vector4< T >inline
operator*=(T s) (defined in ncine::Vector4< T >)ncine::Vector4< T >inline
operator+(const Vector4 &v) const (defined in ncine::Vector4< T >)ncine::Vector4< T >inline
operator+(T s) const (defined in ncine::Vector4< T >)ncine::Vector4< T >inline
operator+=(const Vector4 &v) (defined in ncine::Vector4< T >)ncine::Vector4< T >inline
operator+=(T s) (defined in ncine::Vector4< T >)ncine::Vector4< T >inline
operator-() const (defined in ncine::Vector4< T >)ncine::Vector4< T >inline
operator-(const Vector4 &v) const (defined in ncine::Vector4< T >)ncine::Vector4< T >inline
operator-(T s) const (defined in ncine::Vector4< T >)ncine::Vector4< T >inline
operator-=(const Vector4 &v) (defined in ncine::Vector4< T >)ncine::Vector4< T >inline
operator-=(T s) (defined in ncine::Vector4< T >)ncine::Vector4< T >inline
operator/(const Vector4 &v) const (defined in ncine::Vector4< T >)ncine::Vector4< T >inline
operator/(T s) const (defined in ncine::Vector4< T >)ncine::Vector4< T >inline
operator/=(const Vector4 &v) (defined in ncine::Vector4< T >)ncine::Vector4< T >inline
operator/=(T s) (defined in ncine::Vector4< T >)ncine::Vector4< T >inline
operator=(const Vector4 &other) (defined in ncine::Vector4< T >)ncine::Vector4< T >inline
operator==(const Vector4 &v) const (defined in ncine::Vector4< T >)ncine::Vector4< T >inline
operator[](unsigned int index) (defined in ncine::Vector4< T >)ncine::Vector4< T >inline
operator[](unsigned int index) const (defined in ncine::Vector4< T >)ncine::Vector4< T >inline
set(T xx, T yy, T zz, T ww) (defined in ncine::Vector4< T >)ncine::Vector4< T >inline
sqrLength() const (defined in ncine::Vector4< T >)ncine::Vector4< T >inline
toVector2() const (defined in ncine::Vector4< T >)ncine::Vector4< T >inline
toVector3() const (defined in ncine::Vector4< T >)ncine::Vector4< T >inline
Vector4() (defined in ncine::Vector4< T >)ncine::Vector4< T >inline
Vector4(T s) (defined in ncine::Vector4< T >)ncine::Vector4< T >inlineexplicit
Vector4(T xx, T yy, T zz, T ww) (defined in ncine::Vector4< T >)ncine::Vector4< T >inline
Vector4(const Vector4 &other) (defined in ncine::Vector4< T >)ncine::Vector4< T >inline
w (defined in ncine::Vector4< T >)ncine::Vector4< T >
WAxisncine::Vector4< T >static
x (defined in ncine::Vector4< T >)ncine::Vector4< T >
XAxisncine::Vector4< T >static
y (defined in ncine::Vector4< T >)ncine::Vector4< T >
YAxisncine::Vector4< T >static
z (defined in ncine::Vector4< T >)ncine::Vector4< T >
ZAxisncine::Vector4< T >static
Zeroncine::Vector4< T >static
+ + + + diff --git a/master/classncine_1_1_vector4.html b/master/classncine_1_1_vector4.html new file mode 100644 index 0000000000..20d2e1dc61 --- /dev/null +++ b/master/classncine_1_1_vector4.html @@ -0,0 +1,260 @@ + + + + + + + +nCine: ncine::Vector4< T > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::Vector4< T > Class Template Reference
+
+
+ +

A four component vector based on templates. + More...

+ +

#include <Vector4.h>

+
+Collaboration diagram for ncine::Vector4< T >:
+
+
Collaboration graph
+ + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Vector4 (T s)
 
Vector4 (T xx, T yy, T zz, T ww)
 
Vector4 (const Vector4 &other)
 
+Vector4operator= (const Vector4 &other)
 
+void set (T xx, T yy, T zz, T ww)
 
+T * data ()
 
+const T * data () const
 
+T & operator[] (unsigned int index)
 
+const T & operator[] (unsigned int index) const
 
+bool operator== (const Vector4 &v) const
 
+Vector4 operator- () const
 
+Vector4operator+= (const Vector4 &v)
 
+Vector4operator-= (const Vector4 &v)
 
+Vector4operator*= (const Vector4 &v)
 
+Vector4operator/= (const Vector4 &v)
 
+Vector4operator+= (T s)
 
+Vector4operator-= (T s)
 
+Vector4operator*= (T s)
 
+Vector4operator/= (T s)
 
+Vector4 operator+ (const Vector4 &v) const
 
+Vector4 operator- (const Vector4 &v) const
 
+Vector4 operator* (const Vector4 &v) const
 
+Vector4 operator/ (const Vector4 &v) const
 
+Vector4 operator+ (T s) const
 
+Vector4 operator- (T s) const
 
+Vector4 operator* (T s) const
 
+Vector4 operator/ (T s) const
 
+T length () const
 
+T sqrLength () const
 
+Vector4 normalized () const
 
+Vector4normalize ()
 
+Vector2< T > toVector2 () const
 
+Vector3< T > toVector3 () const
 
+ + + + + + + + + +

+Public Attributes

+T x
 
+T y
 
+T z
 
+T w
 
+ + + + + + + + + + + + + + + + +

+Static Public Attributes

+static const Vector4 Zero
 A vector with all zero elements.
 
+static const Vector4 XAxis
 A unit vector on the X axis.
 
+static const Vector4 YAxis
 A unit vector on the Y axis.
 
+static const Vector4 ZAxis
 A unit vector on the Z axis.
 
+static const Vector4 WAxis
 A unit vector on the W axis.
 
+ + + + + + + +

+Friends

+template<class S >
Vector4< S > operator* (S s, const Vector4< S > &v)
 
+template<class S >
dot (const Vector4< S > &v1, const Vector4< S > &v2)
 
+

Detailed Description

+

template<class T>
+class ncine::Vector4< T >

+ +

A four component vector based on templates.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classncine_1_1_vector4__coll__graph.map b/master/classncine_1_1_vector4__coll__graph.map new file mode 100644 index 0000000000..b6755e811b --- /dev/null +++ b/master/classncine_1_1_vector4__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/master/classncine_1_1_vector4__coll__graph.md5 b/master/classncine_1_1_vector4__coll__graph.md5 new file mode 100644 index 0000000000..0f22ba2413 --- /dev/null +++ b/master/classncine_1_1_vector4__coll__graph.md5 @@ -0,0 +1 @@ +802c426b3c8896571354190e99ad7e41 \ No newline at end of file diff --git a/master/classncine_1_1_vector4__coll__graph.png b/master/classncine_1_1_vector4__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..e03be378accfa810acda6b674638b07b2c7937d0 GIT binary patch literal 4752 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 literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_velocity_affector-members.html b/master/classncine_1_1_velocity_affector-members.html new file mode 100644 index 0000000000..e22a5d0e1c --- /dev/null +++ b/master/classncine_1_1_velocity_affector-members.html @@ -0,0 +1,108 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::VelocityAffector Member List
+
+
+ +

This is the complete list of members for ncine::VelocityAffector, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
addVelocityStep(float age, float velX, float velY) (defined in ncine::VelocityAffector)ncine::VelocityAffector
addVelocityStep(float age, const Vector2f &velocity) (defined in ncine::VelocityAffector)ncine::VelocityAffectorinline
addVelocityStep(const VelocityStep &step) (defined in ncine::VelocityAffector)ncine::VelocityAffectorinline
affect(Particle *particle, float normalizedAge) overridencine::VelocityAffectorvirtual
ncine::ParticleAffector::affect(Particle *particle)ncine::ParticleAffector
clearSteps() overridencine::VelocityAffectorinlinevirtual
clone() constncine::VelocityAffectorinline
enabled_ncine::ParticleAffectorprotected
isEnabled() constncine::ParticleAffectorinline
numSteps() const overridencine::VelocityAffectorinlinevirtual
operator=(VelocityAffector &&)=defaultncine::VelocityAffector
ParticleAffector(Type type) (defined in ncine::ParticleAffector)ncine::ParticleAffectorinline
ParticleAffector(const ParticleAffector &other)=defaultncine::ParticleAffectorprotected
removeStep(unsigned int index) overridencine::VelocityAffectorvirtual
setEnabled(bool enabled)ncine::ParticleAffectorinline
steps() (defined in ncine::VelocityAffector)ncine::VelocityAffectorinline
steps() const (defined in ncine::VelocityAffector)ncine::VelocityAffectorinline
Type enum name (defined in ncine::ParticleAffector)ncine::ParticleAffector
type() constncine::ParticleAffectorinline
type_ncine::ParticleAffectorprotected
VelocityAffector() (defined in ncine::VelocityAffector)ncine::VelocityAffectorinline
VelocityAffector(VelocityAffector &&)=defaultncine::VelocityAffector
VelocityAffector(const VelocityAffector &other)=defaultncine::VelocityAffectorprotected
~ParticleAffector() (defined in ncine::ParticleAffector)ncine::ParticleAffectorinlinevirtual
+ + + + diff --git a/master/classncine_1_1_velocity_affector.html b/master/classncine_1_1_velocity_affector.html new file mode 100644 index 0000000000..25c7d40779 --- /dev/null +++ b/master/classncine_1_1_velocity_affector.html @@ -0,0 +1,222 @@ + + + + + + + +nCine: ncine::VelocityAffector Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
ncine::VelocityAffector Class Reference
+
+
+ +

Particle velocity affector. + More...

+ +

#include <ParticleAffectors.h>

+
+Inheritance diagram for ncine::VelocityAffector:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for ncine::VelocityAffector:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + +

+Classes

struct  VelocityStep
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

VelocityAffector (VelocityAffector &&)=default
 Default move constructor.
 
+VelocityAffectoroperator= (VelocityAffector &&)=default
 Default move assignment operator.
 
+VelocityAffector clone () const
 Returns a copy of this object.
 
+void affect (Particle *particle, float normalizedAge) override
 Affects the velocity of the specified particle.
 
+void addVelocityStep (float age, float velX, float velY)
 
+void addVelocityStep (float age, const Vector2f &velocity)
 
+void addVelocityStep (const VelocityStep &step)
 
+unsigned int numSteps () const override
 Returns the number of steps.
 
+void removeStep (unsigned int index) override
 Removes the step at the specified position index.
 
+void clearSteps () override
 Removes all steps.
 
+nctl::Array< VelocityStep > & steps ()
 
+const nctl::Array< VelocityStep > & steps () const
 
- Public Member Functions inherited from ncine::ParticleAffector
ParticleAffector (Type type)
 
+void affect (Particle *particle)
 Affects a property of the specified particle.
 
+Type type () const
 Returns the affector type.
 
+bool isEnabled () const
 Returns true if the affector is enabled.
 
+void setEnabled (bool enabled)
 Enables or disables the affector.
 
+ + + + + + + + +

+Protected Member Functions

VelocityAffector (const VelocityAffector &other)=default
 Protected default copy constructor used to clone objects.
 
- Protected Member Functions inherited from ncine::ParticleAffector
ParticleAffector (const ParticleAffector &other)=default
 Protected default copy constructor used to clone objects.
 
+ + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from ncine::ParticleAffector
enum class  Type {
+  COLOR +, SIZE +, ROTATION +, POSITION +,
+  VELOCITY +
+ }
 
- Protected Attributes inherited from ncine::ParticleAffector
+Type type_
 Affector type.
 
+bool enabled_
 A flag indicating whether the affector is enabled or not.
 
+

Detailed Description

+

Particle velocity affector.

+

The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classncine_1_1_velocity_affector__coll__graph.map b/master/classncine_1_1_velocity_affector__coll__graph.map new file mode 100644 index 0000000000..f152fca0fd --- /dev/null +++ b/master/classncine_1_1_velocity_affector__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classncine_1_1_velocity_affector__coll__graph.md5 b/master/classncine_1_1_velocity_affector__coll__graph.md5 new file mode 100644 index 0000000000..8c6b0cc8de --- /dev/null +++ b/master/classncine_1_1_velocity_affector__coll__graph.md5 @@ -0,0 +1 @@ +49977ec9127b9ae4611845144aff1ba5 \ No newline at end of file diff --git a/master/classncine_1_1_velocity_affector__coll__graph.png b/master/classncine_1_1_velocity_affector__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..2c853be68806aeb2f130dd31253c92a0beae758c GIT binary patch literal 4220 zcmc(j_cz?zyT?C5MDItGK{$?1^fr2lmJAUDA&fF=^cJHXf?z_(N%WGUMMR5eM`wth z#29_FjHsiB5bn+o-+S*`_Yb&h=9$l0vp%yw&wloMKkwI`Br}8oJq;HP1VQvhhI;1U zS_i_9iV}QUx@)h23#F5ZfgW`6`&HCh`V4}YWQ_E*EyD7)=Fn!WZZniSUSvtuOntg+ zoMbgsG?ljT%pW2v{ofYFTt;h6f3~e(dYl|0mRip{?Wv7ge;J%-uKn&oG39wPGTjkVsDs5R4sI7uG=AwK1`}~=Mx6RFCkB&kl9NJ(; zMn;a9PCOp(S)bi~hn0AC79nBZJnl3@OGii1=MTm~AP`xq!D5I)jk)EMh{#C)odxYD zrxKsPeta;~;SXcrQ5|>PT2VE4{yZS-^M4`n zH6V+jyuAEfF0xYSW>$yB>86}ex?$F{XRO@n;qrsS!{7RHb8;rvaTVE#iC4I#9ie+4 zy*a&nd{7t};_7PO5sBctW5>v+;Zkw83Iz%?G&Pld`SRtOL$=3ooccq?HZpd$jg794HXp?9b%$fkr`ewAnGPE@JmTCgp%fayW(kU96K*n zU!VsMVlUJB?JnuNxVgRl_g|QXhQ`xRF6ud6i(T;|;^N)qcS`+MM|dziaCRgTX;y)2 z-PRU+9xIao))}TA&Zc>`LvC(vF3%gd&_Nb)h`a0V?M>lK2Zk|3ASj*bPEJm2R~1U4 zb$^-|8g@+Adm(*&)5^+3A})UY;8NGq*XNg&Wx>dRHMF*-N;jmya;yY2Y0rGN+`ry_ z_Nsn0ln{CK)~#EOL2E2hc8xIu1I7~8)mp1!IEo7)veM#l5Ds}2$Ad>f9N zZF2wgA|Q1&wIcI!zkTBH{n2mR+YH>?+_NpAX&21X{c}qjf>5l=SGBYD=N;BjGcet@rAaPH=LXV-rsM1D|2*8 zYWGsZecuW>z|A(TGXHr)tK4E~Bp-ej8GZ3fNpqspPPmAjwk|i9J2o!vcPFxI384o< zm~4;Md}HpBM$CbSO0i4YKKk;-{KLnOud1t=e(O_&4T@=OR6Z{&dSH|J@uMQhMHvq7 zo}cFhLY%Dk%A7y6v$OO2Ht<~PWpph{_Y{wJKp+^Pj+vQz&aEC_OI|iMa`g80hHogi zz<+vf&(@We3YXlw+1$c3EG+Drh6XP)GxK*syQaqZ zvGY)_k|`-%Mn*>2e~AJHgDsFqRfjUz1A=`tH8pjXIyxjXcynt@#u-ajnYkA9xq+{x z!sgy6SWCa4pq}I1<;CS?^1FBMR^mH`|8~B4>gyKz?>9uBG(Wqm7Vla^U6P+!R+8iY z4apcOU)zNFG%iCElR7<~*j|qAsk-{(AMJ@YE&sUL-oIZk-}jxqu5DE8+FV@&Un&_n z(UCN-5Oy}<;3TE$KqgqSyH?7n9JUkvG@UuV{LW#!(xU^8)=TaP<6^G%^KfS9I6CRX zENl4t!P%<3{$qW8XZoM|R_~1`MTSrrx%V!`zsh&862tX>61`!P(v@sU%^g2=GnH2| z_Q?}s)s^~&3ctM-OL0rV2sV^l*iI4s#mT6G$nzXNw4*aQOhw?`Xec@dq;w5_T01dH zGArjm6t?{xeeO}CW7%bZRE)!51cH9h_D@aSmAE?;_^8XSRyfZD z3`U3c?qNicbnc{YyZvUs(hor_2Mw*b*`2TMoo@>m*-)(TfR#%YZ?`o`sWJ-<1Sy-c zSF4Hhp~KAGxCsp{XJ_sN`amM-PWiZ*$UoolqxY9<^!5K>e~&o+ZXbvW*_`}K!r`3! zZN*`<7|Yrp;dmG`1C1Or-Tz}SOc;53ijiw6vCerv$hRi6UDSs2=(KpGm+brIcu&>p z)*{hHchle`NH3tK~;*djOro5^tDiR+O+9IiFXlnaED*DVmo}9Fv%cssiC0q!#$VGn%Y{~u!j#9d&r>5%1T3Ha-N;-kJ`TwHZ7oYb92j6d&mNs_wq)jaq-U4Q9@~H>HG=Y%iFtWz7>7j!h!5XafcYN2|LxS}FEFm&LU3SeXg#qfMM@0=K_|dCH=e4u(`R(#KlEZZZVM7i^U4a z%d_$G^8*2b_wjZMX{^+g4-E6Bw3K@s%=-iGL4Ook4686=;dPoutcBQC@KZ9@gp;iX z0(P>-nV%(ThnVa8s-}jSo}Rv}qM{o}pc-V-*wWGsEWNX{GfUPr`Ewu+ND}DFy1|DB zxYt;fgXV9<29p=Le*Fsc?~i%(*=?Jd05dZtA41y`pm#E8Bu|CB*qk~^&uQ$;^lf>0 z=eNPk8q_cs9hW?nQw>LjRizH7QW`osBQA~{HJsC{8SL)sYXH3P;>i^VqytJGrzb$R zb75M{MiZ|+0~Iy+I-ia;IH*2~k6$d#ybrpqhm(6oDJLZD*a4ki2&7X%MP?#nV`C7Y z1;8n@f`Mdd-Sbm`tQObS%0suc<0v}`1U?%Zo8JPnvSJ6%y_|0N2r$EIVpT;&TxF#s zkP()!y1q`c;IGB29_|uE%8yS-aGI)hwQdUdi-v~A(aWoX`4!OnI1Yy-4rOy~d~%Vc zprqvbKpzj9!hJ+|G@TyUThK5Gvzj`GgC@jnkLq$g7ak$_a zgVpB4txSdz4KjsO99@kyM)Xd}ZvtrWCEPGEq5XY;+S?14$5&LfB?Elv{}v#^Mq}3= z#gnV}KnIP6$MgwDklHUa+7YX+&{@*L3(0#6TU*105}dLZ&wwPPqt3!M=Ua25ZFhmT zx<*ISE_OX{l0cK`sl3+!NKSs6k)B@P*qG)weff)$&QA8BB4!sTOB#8}XRbLOlpx!s zeSPC~;M~unlqTzyFSCGXe(&s_o}Oz00+))5i?fvdozjTY)kyN$*;yu5*0`}Tvxxm+ zB`P|)@y3HUjD7x83=B5_qh${IV@KLu2icXCl^s82{Ph@v=~?KEt3h@r@E!u{`8ziD z5(Nc?Bj|5uzp7e~xV*i+cLv0(++mz)Ja9@)&338%$*C#iQcsfo`};u#4urYGmz6$| zr@b)ci8Xn3NlE&}#YM2?P;=5UcAz}-;Tw|gZ0fLrZofur@021I!Ep~C5-j?wDg5(_ zO%I1I3MHf`zzjGJwG~j{iP9t!Y-Q!(pfWHp0MpwMj?#lq!%drJXYIT)cZP~eIrXGP zhW;ml3LsD;T&ydTQ`XO);rY(?U20A}RF%HU{3{;PF8xelXtWp4#vaWz{!x+e%TKAU h{P&4En+khz>1v^$USzeQJ@`8TGSWxrz1MM!{Vy%Y;UNG3 literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_velocity_affector__inherit__graph.map b/master/classncine_1_1_velocity_affector__inherit__graph.map new file mode 100644 index 0000000000..f152fca0fd --- /dev/null +++ b/master/classncine_1_1_velocity_affector__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classncine_1_1_velocity_affector__inherit__graph.md5 b/master/classncine_1_1_velocity_affector__inherit__graph.md5 new file mode 100644 index 0000000000..8c6b0cc8de --- /dev/null +++ b/master/classncine_1_1_velocity_affector__inherit__graph.md5 @@ -0,0 +1 @@ +49977ec9127b9ae4611845144aff1ba5 \ No newline at end of file diff --git a/master/classncine_1_1_velocity_affector__inherit__graph.png b/master/classncine_1_1_velocity_affector__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..2c853be68806aeb2f130dd31253c92a0beae758c GIT binary patch literal 4220 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 literal 0 HcmV?d00001 diff --git a/master/classncine_1_1_viewport-members.html b/master/classncine_1_1_viewport-members.html new file mode 100644 index 0000000000..1340310fdc --- /dev/null +++ b/master/classncine_1_1_viewport-members.html @@ -0,0 +1,161 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine::Viewport Member List
+
+
+ +

This is the complete list of members for ncine::Viewport, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Application (defined in ncine::Viewport)ncine::Viewportfriend
calculateCullingRect() (defined in ncine::Viewport)ncine::Viewportprotected
camera() constncine::Viewportinline
camera()ncine::Viewportinline
camera_ncine::Viewportprotected
chain()ncine::Viewportinlinestatic
chain_ncine::Viewportprotectedstatic
clearColor() constncine::Viewportinline
clearColor_ (defined in ncine::Viewport)ncine::Viewportprotected
ClearMode enum namencine::Viewport
clearMode() constncine::Viewportinline
clearMode_ (defined in ncine::Viewport)ncine::Viewportprotected
CommittedBit enum value (defined in ncine::Viewport)ncine::Viewportprotected
cullingRect() constncine::Viewportinline
cullingRect_ (defined in ncine::Viewport)ncine::Viewportprotected
depthStencilFormat() constncine::Viewportinline
DepthStencilFormat enum namencine::Viewport
depthStencilFormat_ (defined in ncine::Viewport)ncine::Viewportprotected
draw(unsigned int nextIndex) (defined in ncine::Viewport)ncine::Viewportprotected
fbo_ (defined in ncine::Viewport)ncine::Viewportprotected
height() constncine::Viewportinline
height_ (defined in ncine::Viewport)ncine::Viewportprotected
lastFrameCleared() constncine::Viewportinline
lastFrameCleared_ncine::Viewportprotected
MaxNumTextures (defined in ncine::Viewport)ncine::Viewportprotectedstatic
numColorAttachments() constncine::Viewportinline
operator=(const Viewport &)=deletencine::Viewportprotected
removeAllTextures()ncine::Viewport
renderQueue_ncine::Viewportprotected
rootNode() constncine::Viewportinline
rootNode()ncine::Viewportinline
rootNode_ncine::Viewportprotected
scissorRect() constncine::Viewportinline
scissorRect_ (defined in ncine::Viewport)ncine::Viewportprotected
ScreenViewport (defined in ncine::Viewport)ncine::Viewportfriend
setCamera(Camera *camera)ncine::Viewportinline
setClearColor(float red, float green, float blue, float alpha)ncine::Viewportinline
setClearColor(const Colorf &color)ncine::Viewportinline
setClearMode(ClearMode clearMode)ncine::Viewportinline
setDepthStencilFormat(DepthStencilFormat depthStencilFormat)ncine::Viewport
setGLFramebufferLabel(const char *label)ncine::Viewport
setRootNode(SceneNode *rootNode)ncine::Viewportinline
setScissorRect(Recti scissorRect)ncine::Viewportinline
setScissorRect(int x, int y, int width, int height)ncine::Viewportinline
setScissorRect(const Vector2i &size)ncine::Viewportinline
setScissorRect(int width, int height)ncine::Viewportinline
setTexture(unsigned int index, Texture *texture)ncine::Viewport
setTexture(Texture *texture)ncine::Viewportinline
setViewportRect(Recti viewportRect)ncine::Viewportinline
setViewportRect(int x, int y, int width, int height)ncine::Viewportinline
setViewportRect(const Vector2i &size)ncine::Viewportinline
setViewportRect(int width, int height)ncine::Viewportinline
size() constncine::Viewportinline
sortAndCommitQueue() (defined in ncine::Viewport)ncine::Viewportprotected
StateBitPositions enum namencine::Viewportprotected
stateBits_ncine::Viewportprotected
texture(unsigned int index)ncine::Viewport
texture()ncine::Viewportinline
textures_ (defined in ncine::Viewport)ncine::Viewportprotected
Type enum namencine::Viewport
type() constncine::Viewportinline
type_ (defined in ncine::Viewport)ncine::Viewportprotected
update() (defined in ncine::Viewport)ncine::Viewportprotected
UpdatedBit enum value (defined in ncine::Viewport)ncine::Viewportprotected
Viewport(const char *name, Texture *texture, DepthStencilFormat depthStencilFormat)ncine::Viewport
Viewport(Texture *texture, DepthStencilFormat depthStencilFormat)ncine::Viewport
Viewport(const char *name, Texture *texture)ncine::Viewport
Viewport(Texture *texture)ncine::Viewportexplicit
Viewport()ncine::Viewport
Viewport(const Viewport &)=deletencine::Viewportprotected
viewportRect() constncine::Viewportinline
viewportRect_ (defined in ncine::Viewport)ncine::Viewportprotected
visit() (defined in ncine::Viewport)ncine::Viewportprotected
VisitedBit enum value (defined in ncine::Viewport)ncine::Viewportprotected
width() constncine::Viewportinline
width_ (defined in ncine::Viewport)ncine::Viewportprotected
~Viewport() (defined in ncine::Viewport)ncine::Viewport
+ + + + diff --git a/master/classncine_1_1_viewport.html b/master/classncine_1_1_viewport.html new file mode 100644 index 0000000000..b782715e19 --- /dev/null +++ b/master/classncine_1_1_viewport.html @@ -0,0 +1,631 @@ + + + + + + + +nCine: ncine::Viewport Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

The class handling a viewport and its corresponding render target texture. + More...

+ +

#include <Viewport.h>

+
+Collaboration diagram for ncine::Viewport:
+
+
Collaboration graph
+ + + + + + + + + + + + + + + + + + +
[legend]
+ + + + + + + + + + + +

+Public Types

enum class  Type { WITH_TEXTURE +, NO_TEXTURE +, SCREEN + }
 The different types of viewports available. More...
 
enum class  ClearMode {
+  EVERY_DRAW +, EVERY_FRAME +, THIS_FRAME_ONLY +, NEXT_FRAME_ONLY +,
+  NEVER +
+ }
 The clear mode for a viewport with a texture or for the screen. More...
 
enum class  DepthStencilFormat { NONE +, DEPTH16 +, DEPTH24 +, DEPTH24_STENCIL8 + }
 The depth and stencil format for a viewport with a texture or for the screen.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Viewport (const char *name, Texture *texture, DepthStencilFormat depthStencilFormat)
 Creates a new viewport with the specified name and texture, plus a depth and stencil renderbuffer.
 
Viewport (Texture *texture, DepthStencilFormat depthStencilFormat)
 Creates a new viewport with the specified texture, plus a depth and stencil renderbuffer.
 
Viewport (const char *name, Texture *texture)
 Creates a new viewport with the specified name and texture.
 
Viewport (Texture *texture)
 Creates a new viewport with the specified texture.
 
Viewport ()
 Creates a new viewport with no texture.
 
+Type type () const
 Returns the viewport type.
 
+Texturetexture (unsigned int index)
 Returns the texture at the specified viewport's FBO color attachment index, if any.
 
+Texturetexture ()
 Returns the texture at the first viewport's FBO color attachment index.
 
bool setTexture (unsigned int index, Texture *texture)
 Adds or removes a texture at the specified viewport's FBO color attachment index. More...
 
+bool setTexture (Texture *texture)
 Adds or removes a texture at the first viewport's FBO color attachment index.
 
+DepthStencilFormat depthStencilFormat () const
 Returns the depth and stencil format of the viewport's FBO renderbuffer.
 
bool setDepthStencilFormat (DepthStencilFormat depthStencilFormat)
 Sets the depth and stencil format of the viewport's FBO renderbuffer. More...
 
bool removeAllTextures ()
 Removes all textures and the depth stencil renderbuffer from the viewport's FBO. More...
 
+Vector2i size () const
 Returns viewport's FBO size as a Vector2i object, or a zero vector if no texture is present.
 
+int width () const
 Returns viewport's FBO width or zero if no texture is present.
 
+int height () const
 Returns viewport's FBO height or zero if no texture is present.
 
+unsigned int numColorAttachments () const
 Returns the number of color attachments of the viewport's FBO.
 
+Recti viewportRect () const
 Returns the OpenGL viewport rectangle.
 
+void setViewportRect (Recti viewportRect)
 Sets the OpenGL viewport rectangle through a Recti object.
 
+void setViewportRect (int x, int y, int width, int height)
 Sets the OpenGL viewport rectangle with four integers.
 
+void setViewportRect (const Vector2i &size)
 Resizes the OpenGL viewport rectangle through a Vector2i object.
 
+void setViewportRect (int width, int height)
 Resizes the OpenGL viewport rectangle with two integers.
 
+Recti scissorRect () const
 Returns the OpenGL scissor test rectangle.
 
+void setScissorRect (Recti scissorRect)
 Sets the OpenGL scissor test rectangle through a Recti object.
 
+void setScissorRect (int x, int y, int width, int height)
 Sets the OpenGL scissor test rectangle with four integers.
 
+void setScissorRect (const Vector2i &size)
 Resizes the OpenGL scissor test rectangle through a Vector2i object.
 
+void setScissorRect (int width, int height)
 Resizes the OpenGL scissor test rectangle with two integers.
 
+Rectf cullingRect () const
 Returns the rectangle for screen culling.
 
+unsigned long int lastFrameCleared () const
 Returns the last frame this viewport was cleared.
 
+ClearMode clearMode () const
 Returns the viewport clear mode.
 
+void setClearMode (ClearMode clearMode)
 Sets the viewport clear mode.
 
+Colorf clearColor () const
 Returns the viewport clear color as a Colorf object.
 
+void setClearColor (float red, float green, float blue, float alpha)
 Sets the viewport clear color through four floats.
 
+void setClearColor (const Colorf &color)
 Sets the viewport clear color through a Colorf object.
 
+const SceneNoderootNode () const
 Returns the root node as a constant.
 
+SceneNoderootNode ()
 Returns the root node.
 
+void setRootNode (SceneNode *rootNode)
 Sets or removes the root node.
 
+const Cameracamera () const
 Returns the camera used for rendering as a constant.
 
+Cameracamera ()
 Returns the camera used for rendering.
 
void setCamera (Camera *camera)
 Sets the camera to be used for rendering. More...
 
+void setGLFramebufferLabel (const char *label)
 Sets the OpenGL object label for the viewport framebuffer object.
 
+ + + + +

+Static Public Member Functions

+static nctl::Array< Viewport * > & chain ()
 Returns the reverse ordered array of viewports to be drawn before the screen.
 
+ + + + +

+Protected Types

enum  StateBitPositions { UpdatedBit = 0 +, VisitedBit = 1 +, CommittedBit = 2 + }
 Bit positions inside the state bitset.
 
+ + + + + + + + + + + + + + + + + +

+Protected Member Functions

Viewport (const Viewport &)=delete
 Deleted copy constructor.
 
+Viewportoperator= (const Viewport &)=delete
 Deleted assignment operator.
 
+void calculateCullingRect ()
 
+void update ()
 
+void visit ()
 
+void sortAndCommitQueue ()
 
+void draw (unsigned int nextIndex)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+Type type_
 
+int width_
 
+int height_
 
+Recti viewportRect_
 
+Recti scissorRect_
 
+Rectf cullingRect_
 
+DepthStencilFormat depthStencilFormat_
 
+unsigned long int lastFrameCleared_
 The last frame this viewport was cleared.
 
+ClearMode clearMode_
 
+Colorf clearColor_
 
+nctl::UniquePtr< RenderQueue > renderQueue_
 The render queue of commands for this viewport/RT.
 
+nctl::UniquePtr< GLFramebufferObject > fbo_
 
+Texturetextures_ [MaxNumTextures]
 
+SceneNoderootNode_
 The root scene node for this viewport/RT.
 
Cameracamera_
 The camera used by this viewport. More...
 
+nctl::BitSet< uint8_t > stateBits_
 Bitset that stores the various states bits.
 
+ + + + + + +

+Static Protected Attributes

+static nctl::Array< Viewport * > chain_
 The reverse ordered array of viewports to be drawn before the screen.
 
+static const unsigned int MaxNumTextures = 4
 
+ + + + + +

+Friends

+class Application
 
+class ScreenViewport
 
+

Detailed Description

+

The class handling a viewport and its corresponding render target texture.

+

Member Enumeration Documentation

+ +

◆ ClearMode

+ +
+
+ + + + + +
+ + + + +
enum ncine::Viewport::ClearMode
+
+strong
+
+ +

The clear mode for a viewport with a texture or for the screen.

+ + + + + + +
Enumerator
EVERY_DRAW 

The viewport is cleared every time it is drawn.

+
EVERY_FRAME 

The viewport is cleared once per frame (default behavior)

+
THIS_FRAME_ONLY 

The viewport is cleared only once, at this frame.

+
NEXT_FRAME_ONLY 

The viewport is cleared only once, at next frame.

+
NEVER 

The viewport is never cleared.

+
+ +
+
+ +

◆ Type

+ +
+
+ + + + + +
+ + + + +
enum ncine::Viewport::Type
+
+strong
+
+ +

The different types of viewports available.

+ + + + +
Enumerator
WITH_TEXTURE 

The viewport renders in one or more textures.

+
NO_TEXTURE 

The viewport has no texture of its own, it uses the one from the previous viewport.

+
SCREEN 

The viewport is the screen.

+
+ +
+
+

Member Function Documentation

+ +

◆ removeAllTextures()

+ +
+
+ + + + + + + +
bool ncine::Viewport::removeAllTextures ()
+
+ +

Removes all textures and the depth stencil renderbuffer from the viewport's FBO.

+
Returns
True if the viewport is not the screen and all textures have been removed
+ +
+
+ +

◆ setCamera()

+ +
+
+ + + + + +
+ + + + + + + + +
void ncine::Viewport::setCamera (Cameracamera)
+
+inline
+
+ +

Sets the camera to be used for rendering.

+
Note
The passed parameter can be a nullptr to use the default camera
+ +
+
+ +

◆ setDepthStencilFormat()

+ +
+
+ + + + + + + + +
bool ncine::Viewport::setDepthStencilFormat (DepthStencilFormat depthStencilFormat)
+
+ +

Sets the depth and stencil format of the viewport's FBO renderbuffer.

+
Note
It can remove the depth and stencil render buffer of the viewport's FBO by specifying DepthStencilFormat::NONE.
+
Returns
True if a new depth and stencil format has been successfully set
+ +
+
+ +

◆ setTexture()

+ +
+
+ + + + + + + + + + + + + + + + + + +
bool ncine::Viewport::setTexture (unsigned int index,
Texturetexture 
)
+
+ +

Adds or removes a texture at the specified viewport's FBO color attachment index.

+
Note
Adding more textures enables the use of multiple render targets (MRTs).
+
Returns
True if a texture has been added or removed successfully
+ +
+
+

Member Data Documentation

+ +

◆ camera_

+ +
+
+ + + + + +
+ + + + +
Camera* ncine::Viewport::camera_
+
+protected
+
+ +

The camera used by this viewport.

+
Note
If set to nullptr it will use the default camera
+ +
+
+
The documentation for this class was generated from the following files:
    +
  • include/ncine/Viewport.h
  • +
  • src/graphics/Viewport.cpp
  • +
+
+ + + + diff --git a/master/classncine_1_1_viewport__coll__graph.map b/master/classncine_1_1_viewport__coll__graph.map new file mode 100644 index 0000000000..c59d50ac20 --- /dev/null +++ b/master/classncine_1_1_viewport__coll__graph.map @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/master/classncine_1_1_viewport__coll__graph.md5 b/master/classncine_1_1_viewport__coll__graph.md5 new file mode 100644 index 0000000000..95dab5e173 --- /dev/null +++ b/master/classncine_1_1_viewport__coll__graph.md5 @@ -0,0 +1 @@ +df07b69dbbbbc3896a02fa505402267f \ No newline at end of file diff --git a/master/classncine_1_1_viewport__coll__graph.png b/master/classncine_1_1_viewport__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..b16042f633262eba07746437bb7df540aabdb5bf GIT binary patch literal 100822 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Œ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 G5%V_-0rWQj literal 0 HcmV?d00001 diff --git a/master/classnctl_1_1_alloc_manager-members.html b/master/classnctl_1_1_alloc_manager-members.html new file mode 100644 index 0000000000..6ef28661f6 --- /dev/null +++ b/master/classnctl_1_1_alloc_manager-members.html @@ -0,0 +1,90 @@ + + + + + + + +nCine: Member List + + + + + + + + + + +
+
+
nctl::AllocManager Member List
+
+
+ +

This is the complete list of members for nctl::AllocManager, including all inherited members.

+ + + + + + + +
AllocManagerInitializer (defined in nctl::AllocManager)nctl::AllocManagerfriend
defaultAllocator() (defined in nctl::AllocManager)nctl::AllocManagerinline
setDefaultAllocator(IAllocator *allocator) (defined in nctl::AllocManager)nctl::AllocManager
setStringAllocator(IAllocator *allocator) (defined in nctl::AllocManager)nctl::AllocManager
stringAllocator() (defined in nctl::AllocManager)nctl::AllocManagerinline
theAllocManager (defined in nctl::AllocManager)nctl::AllocManagerfriend
+ + + + diff --git a/master/classnctl_1_1_alloc_manager.html b/master/classnctl_1_1_alloc_manager.html new file mode 100644 index 0000000000..2fe5b3234c --- /dev/null +++ b/master/classnctl_1_1_alloc_manager.html @@ -0,0 +1,121 @@ + + + + + + + +nCine: nctl::AllocManager Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::AllocManager Class Reference
+
+
+ +

The allocators manager. + More...

+ +

#include <AllocManager.h>

+ + + + + + + + + + +

+Public Member Functions

+IAllocatordefaultAllocator ()
 
+IAllocatorstringAllocator ()
 
+IAllocatorsetDefaultAllocator (IAllocator *allocator)
 
+IAllocatorsetStringAllocator (IAllocator *allocator)
 
+ + + + + +

+Friends

+class AllocManagerInitializer
 
+AllocManager DLL_PUBLIC & theAllocManager ()
 
+

Detailed Description

+

The allocators manager.

+

The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classnctl_1_1_alloc_manager_initializer-members.html b/master/classnctl_1_1_alloc_manager_initializer-members.html new file mode 100644 index 0000000000..f35c08702e --- /dev/null +++ b/master/classnctl_1_1_alloc_manager_initializer-members.html @@ -0,0 +1,86 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::AllocManagerInitializer Member List
+
+
+ +

This is the complete list of members for nctl::AllocManagerInitializer, including all inherited members.

+ + + +
AllocManagerInitializer() (defined in nctl::AllocManagerInitializer)nctl::AllocManagerInitializer
~AllocManagerInitializer() (defined in nctl::AllocManagerInitializer)nctl::AllocManagerInitializer
+ + + + diff --git a/master/classnctl_1_1_alloc_manager_initializer.html b/master/classnctl_1_1_alloc_manager_initializer.html new file mode 100644 index 0000000000..9018dae38c --- /dev/null +++ b/master/classnctl_1_1_alloc_manager_initializer.html @@ -0,0 +1,94 @@ + + + + + + + +nCine: nctl::AllocManagerInitializer Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::AllocManagerInitializer Class Reference
+
+
+ +

Allocator manager initializer. + More...

+ +

#include <AllocManager.h>

+

Detailed Description

+

Allocator manager initializer.

+

The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classnctl_1_1_array-members.html b/master/classnctl_1_1_array-members.html new file mode 100644 index 0000000000..103e7512a9 --- /dev/null +++ b/master/classnctl_1_1_array-members.html @@ -0,0 +1,146 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::Array< T > Member List
+
+
+ +

This is the complete list of members for nctl::Array< T >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Array()nctl::Array< T >inline
Array(unsigned int capacity)nctl::Array< T >inlineexplicit
Array(unsigned int capacity, ArrayMode mode)nctl::Array< T >
Array(const Array &other)nctl::Array< T >
Array(Array &&other)nctl::Array< T >
at(unsigned int index) constnctl::Array< T >
at(unsigned int index)nctl::Array< T >
back() constnctl::Array< T >
back()nctl::Array< T >
begin()nctl::Array< T >inline
begin() constnctl::Array< T >inline
capacity() constnctl::Array< T >inline
cBegin() constnctl::Array< T >inline
cEnd() constnctl::Array< T >inline
clear()nctl::Array< T >
ConstIterator typedefnctl::Array< T >
ConstReverseIterator typedefnctl::Array< T >
crBegin() constnctl::Array< T >inline
crEnd() constnctl::Array< T >inline
data() constnctl::Array< T >inline
data()nctl::Array< T >inline
emplace(Iterator position, Args &&... args)nctl::Array< T >
emplaceAt(unsigned int index, Args &&... args)nctl::Array< T >
emplaceBack(Args &&... args)nctl::Array< T >
end()nctl::Array< T >inline
end() constnctl::Array< T >inline
erase(Iterator position)nctl::Array< T >
erase(Iterator first, const Iterator last)nctl::Array< T >
front() constnctl::Array< T >
front()nctl::Array< T >
insert(Iterator position, const T &value)nctl::Array< T >
insert(Iterator position, T &&value)nctl::Array< T >
insert(Iterator position, Iterator first, Iterator last)nctl::Array< T >
insertAt(unsigned int index, const T &element)nctl::Array< T >
insertAt(unsigned int index, T &&element)nctl::Array< T >
insertRange(unsigned int index, const T *firstPtr, const T *lastPtr)nctl::Array< T >
isEmpty() constnctl::Array< T >inline
Iterator typedefnctl::Array< T >
operator=(const Array &other)nctl::Array< T >
operator=(Array &&other)nctl::Array< T >
operator[](unsigned int index) constnctl::Array< T >
operator[](unsigned int index)nctl::Array< T >
popBack()nctl::Array< T >
pushBack(const T &element)nctl::Array< T >inline
pushBack(T &&element)nctl::Array< T >inline
rBegin()nctl::Array< T >inline
rBegin() constnctl::Array< T >inline
removeAt(unsigned int index)nctl::Array< T >inline
removeRange(unsigned int firstIndex, unsigned int lastIndex)nctl::Array< T >
rEnd()nctl::Array< T >inline
rEnd() constnctl::Array< T >inline
ReverseIterator typedefnctl::Array< T >
setCapacity(unsigned int newCapacity)nctl::Array< T >
setSize(unsigned int newSize)nctl::Array< T >
shrinkToFit()nctl::Array< T >
size() constnctl::Array< T >inline
swap(Array &first, Array &second)nctl::Array< T >inline
unorderedErase(Iterator position)nctl::Array< T >
unorderedErase(Iterator first, const Iterator last)nctl::Array< T >
unorderedRemoveAt(unsigned int index)nctl::Array< T >inline
unorderedRemoveRange(unsigned int firstIndex, unsigned int lastIndex)nctl::Array< T >
~Array() (defined in nctl::Array< T >)nctl::Array< T >
+ + + + diff --git a/master/classnctl_1_1_array.html b/master/classnctl_1_1_array.html new file mode 100644 index 0000000000..08828d942c --- /dev/null +++ b/master/classnctl_1_1_array.html @@ -0,0 +1,544 @@ + + + + + + + +nCine: nctl::Array< T > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::Array< T > Class Template Reference
+
+
+ +

A dynamic array based on templates that stores elements in the heap. + More...

+ +

#include <Array.h>

+ + + + + + + + + + + + + + +

+Public Types

+using Iterator = ArrayIterator< T, false >
 Iterator type.
 
+using ConstIterator = ArrayIterator< T, true >
 Constant iterator type.
 
+using ReverseIterator = nctl::ReverseIterator< Iterator >
 Reverse iterator type.
 
+using ConstReverseIterator = nctl::ReverseIterator< ConstIterator >
 Reverse constant iterator type.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Array ()
 Constructs an array without allocating memory.
 
Array (unsigned int capacity)
 Constructs an array with explicit capacity.
 
Array (unsigned int capacity, ArrayMode mode)
 Constructs an array with explicit capacity and the option for it to be fixed.
 
Array (const Array &other)
 Copy constructor.
 
Array (Array &&other)
 Move constructor.
 
+Arrayoperator= (const Array &other)
 Assignment operator.
 
+Arrayoperator= (Array &&other)
 Move assignment operator.
 
+void swap (Array &first, Array &second)
 Swaps two arrays without copying their data.
 
+Iterator begin ()
 Returns an iterator to the first element.
 
+ReverseIterator rBegin ()
 Returns a reverse iterator to the last element.
 
+Iterator end ()
 Returns an iterator to past the last element.
 
+ReverseIterator rEnd ()
 Returns a reverse iterator to prior the first element.
 
+ConstIterator begin () const
 Returns a constant iterator to the first element.
 
+ConstReverseIterator rBegin () const
 Returns a constant reverse iterator to the last element.
 
+ConstIterator end () const
 Returns a constant iterator to past the last lement.
 
+ConstReverseIterator rEnd () const
 Returns a constant reverse iterator to prior the first element.
 
+ConstIterator cBegin () const
 Returns a constant iterator to the first element.
 
+ConstReverseIterator crBegin () const
 Returns a constant reverse iterator to the last element.
 
+ConstIterator cEnd () const
 Returns a constant iterator to past the last lement.
 
+ConstReverseIterator crEnd () const
 Returns a constant reverse iterator to prior the first element.
 
+bool isEmpty () const
 Returns true if the array is empty.
 
unsigned int size () const
 Returns the array size. More...
 
unsigned int capacity () const
 Returns the array capacity. More...
 
+void setSize (unsigned int newSize)
 Sets a new size for the array (allowing for "holes")
 
+void setCapacity (unsigned int newCapacity)
 Sets a new capacity for the array (can be bigger or smaller than the current one)
 
+void shrinkToFit ()
 Decreases the capacity to match the current size of the array.
 
void clear ()
 Clears the array. More...
 
+const T & front () const
 Returns a constant reference to the first element in constant time.
 
+T & front ()
 Returns a reference to the first element in constant time.
 
+const T & back () const
 Returns a constant reference to the last element in constant time.
 
+T & back ()
 Returns a reference to the last element in constant time.
 
+void pushBack (const T &element)
 Appends a new element in constant time, the element is copied into the array.
 
+void pushBack (T &&element)
 Appends a new element in constant time, the element is moved into the array.
 
+template<typename... Args>
void emplaceBack (Args &&... args)
 Constructs a new element at the end of the array.
 
+void popBack ()
 Removes the last element in constant time.
 
+T * insertRange (unsigned int index, const T *firstPtr, const T *lastPtr)
 Inserts new elements at the specified position from a source range, last not included (shifting elements around)
 
+T * insertAt (unsigned int index, const T &element)
 Inserts a new element at a specified position (shifting elements around)
 
+T * insertAt (unsigned int index, T &&element)
 Move inserts a new element at a specified position (shifting elements around)
 
+template<typename... Args>
T * emplaceAt (unsigned int index, Args &&... args)
 Constructs a new element at the position specified by the index.
 
+Iterator insert (Iterator position, const T &value)
 Inserts a new element at the position specified by the iterator (shifting elements around)
 
+Iterator insert (Iterator position, T &&value)
 Move inserts a new element at the position specified by the iterator (shifting elements around)
 
+Iterator insert (Iterator position, Iterator first, Iterator last)
 Inserts new elements from a source at the position specified by the iterator (shifting elements around)
 
+template<typename... Args>
Iterator emplace (Iterator position, Args &&... args)
 Constructs a new element at the position specified by the iterator.
 
+T * removeRange (unsigned int firstIndex, unsigned int lastIndex)
 Removes the specified range of elements, last not included (shifting elements around)
 
+Iterator removeAt (unsigned int index)
 Removes an element at a specified position (shifting elements around)
 
+Iterator erase (Iterator position)
 Removes the element pointed by the iterator (shifting elements around)
 
+Iterator erase (Iterator first, const Iterator last)
 Removes the elements in the range, last not included (shifting elements around)
 
T * unorderedRemoveRange (unsigned int firstIndex, unsigned int lastIndex)
 Removes the specified range of elements, last not included (moving tail elements in place) More...
 
+Iterator unorderedRemoveAt (unsigned int index)
 Removes an element at a specified position (moving the last element in place)
 
Iterator unorderedErase (Iterator position)
 Removes the element pointed by the iterator (moving the last element in place) More...
 
Iterator unorderedErase (Iterator first, const Iterator last)
 Removes the elements in the range, last not included (moving tail elements in place) More...
 
+const T & at (unsigned int index) const
 Read-only access to the specified element (with bounds checking)
 
+T & at (unsigned int index)
 Access to the specified element (with bounds checking)
 
+const T & operator[] (unsigned int index) const
 Read-only subscript operator.
 
+T & operator[] (unsigned int index)
 Subscript operator.
 
+const T * data () const
 Returns a constant pointer to the allocated memory.
 
T * data ()
 Returns a pointer to the allocated memory. More...
 
+

Detailed Description

+

template<class T>
+class nctl::Array< T >

+ +

A dynamic array based on templates that stores elements in the heap.

+

Member Function Documentation

+ +

◆ capacity()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + +
unsigned int nctl::Array< T >::capacity () const
+
+inline
+
+ +

Returns the array capacity.

+

The array has memory allocated to store until the Capacity()-1 element.

+ +
+
+ +

◆ clear()

+ +
+
+
+template<class T >
+ + + + +
void nctl::Array< T >::clear
+
+ +

Clears the array.

+

Size will be set to zero but capacity remains unmodified.

+ +
+
+ +

◆ data()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + +
T* nctl::Array< T >::data ()
+
+inline
+
+ +

Returns a pointer to the allocated memory.

+

When adding new elements through a pointer the size field is not updated, like with std::vector.

+ +
+
+ +

◆ size()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + +
unsigned int nctl::Array< T >::size () const
+
+inline
+
+ +

Returns the array size.

+

The array is filled without gaps until the Size()-1 element.

+ +
+
+ +

◆ unorderedErase() [1/2]

+ +
+
+
+template<class T >
+ + + + + + + + + + + + + + + + + + +
Array< T >::Iterator nctl::Array< T >::unorderedErase (Iterator first,
const Iterator last 
)
+
+ +

Removes the elements in the range, last not included (moving tail elements in place)

+
Note
This method is faster than erase() but it will not preserve the array order
+ +
+
+ +

◆ unorderedErase() [2/2]

+ +
+
+
+template<class T >
+ + + + + + + + +
Array< T >::Iterator nctl::Array< T >::unorderedErase (Iterator position)
+
+ +

Removes the element pointed by the iterator (moving the last element in place)

+
Note
This method is faster than erase() but it will not preserve the array order
+ +
+
+ +

◆ unorderedRemoveRange()

+ +
+
+
+template<class T >
+ + + + + + + + + + + + + + + + + + +
T * nctl::Array< T >::unorderedRemoveRange (unsigned int firstIndex,
unsigned int lastIndex 
)
+
+ +

Removes the specified range of elements, last not included (moving tail elements in place)

+
Note
This method is faster than removeRange() but it will not preserve the array order
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classnctl_1_1_array_iterator-members.html b/master/classnctl_1_1_array_iterator-members.html new file mode 100644 index 0000000000..677267658a --- /dev/null +++ b/master/classnctl_1_1_array_iterator-members.html @@ -0,0 +1,106 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::ArrayIterator< T, IsConst > Member List
+
+
+ +

This is the complete list of members for nctl::ArrayIterator< T, IsConst >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + +
ArrayIterator(T *elementPtr) (defined in nctl::ArrayIterator< T, IsConst >)nctl::ArrayIterator< T, IsConst >inlineexplicit
ArrayIterator(const ArrayIterator< T, false > &it)nctl::ArrayIterator< T, IsConst >inline
ArrayIterator< T, true > classnctl::ArrayIterator< T, IsConst >friend
operator!=(const ArrayIterator &lhs, const ArrayIterator &rhs)nctl::ArrayIterator< T, IsConst >friend
operator*() constnctl::ArrayIterator< T, IsConst >inline
operator+(int n) constnctl::ArrayIterator< T, IsConst >
operator++()nctl::ArrayIterator< T, IsConst >
operator++(int)nctl::ArrayIterator< T, IsConst >
operator+=(int n)nctl::ArrayIterator< T, IsConst >
operator-(int n) constnctl::ArrayIterator< T, IsConst >
operator-(const ArrayIterator &lhs, const ArrayIterator &rhs)nctl::ArrayIterator< T, IsConst >friend
operator--()nctl::ArrayIterator< T, IsConst >
operator--(int)nctl::ArrayIterator< T, IsConst >
operator-=(int n)nctl::ArrayIterator< T, IsConst >
operator<(const ArrayIterator &lhs, const ArrayIterator &rhs)nctl::ArrayIterator< T, IsConst >friend
operator<=(const ArrayIterator &lhs, const ArrayIterator &rhs)nctl::ArrayIterator< T, IsConst >friend
operator==(const ArrayIterator &lhs, const ArrayIterator &rhs)nctl::ArrayIterator< T, IsConst >friend
operator>(const ArrayIterator &lhs, const ArrayIterator &rhs)nctl::ArrayIterator< T, IsConst >friend
operator>=(const ArrayIterator &lhs, const ArrayIterator &rhs)nctl::ArrayIterator< T, IsConst >friend
operator[](int n) constnctl::ArrayIterator< T, IsConst >inline
Pointer typedefnctl::ArrayIterator< T, IsConst >
Reference typedefnctl::ArrayIterator< T, IsConst >
+ + + + diff --git a/master/classnctl_1_1_array_iterator.html b/master/classnctl_1_1_array_iterator.html new file mode 100644 index 0000000000..8e322630db --- /dev/null +++ b/master/classnctl_1_1_array_iterator.html @@ -0,0 +1,196 @@ + + + + + + + +nCine: nctl::ArrayIterator< T, IsConst > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::ArrayIterator< T, IsConst > Class Template Reference
+
+
+ +

An Array iterator. + More...

+ +

#include <ArrayIterator.h>

+ + + + + + + + +

+Public Types

+using Pointer = typename IteratorTraits< ArrayIterator >::Pointer
 Pointer type which respects iterator constness.
 
+using Reference = typename IteratorTraits< ArrayIterator >::Reference
 Reference type which respects iterator constness.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

ArrayIterator (T *elementPtr)
 
ArrayIterator (const ArrayIterator< T, false > &it)
 Copy constructor to implicitly convert a non constant iterator to a constant one.
 
+Reference operator* () const
 Deferencing operator.
 
+ArrayIteratoroperator++ ()
 Iterates to the next element (prefix)
 
+ArrayIterator operator++ (int)
 Iterates to the next element (postfix)
 
+ArrayIteratoroperator-- ()
 Iterates to the previous element (prefix)
 
+ArrayIterator operator-- (int)
 Iterates to the previous element (postfix)
 
+ArrayIteratoroperator+= (int n)
 Compound addition operator.
 
+ArrayIteratoroperator-= (int n)
 Compound subtraction operator.
 
+ArrayIterator operator+ (int n) const
 Addition operator.
 
+ArrayIterator operator- (int n) const
 Subtraction operator.
 
+Reference operator[] (int n) const
 Subscript operator.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Friends

+class ArrayIterator< T, true >
 For non constant to constant iterator implicit conversion.
 
+int operator- (const ArrayIterator &lhs, const ArrayIterator &rhs)
 Pointer subtraction operator.
 
+bool operator== (const ArrayIterator &lhs, const ArrayIterator &rhs)
 Equality operator.
 
+bool operator!= (const ArrayIterator &lhs, const ArrayIterator &rhs)
 Inequality operator.
 
+bool operator> (const ArrayIterator &lhs, const ArrayIterator &rhs)
 Greater than operator.
 
+bool operator< (const ArrayIterator &lhs, const ArrayIterator &rhs)
 Less than operator.
 
+bool operator>= (const ArrayIterator &lhs, const ArrayIterator &rhs)
 Greater than or equal to operator.
 
+bool operator<= (const ArrayIterator &lhs, const ArrayIterator &rhs)
 Less than or equal to operator.
 
+

Detailed Description

+

template<class T, bool IsConst>
+class nctl::ArrayIterator< T, IsConst >

+ +

An Array iterator.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classnctl_1_1_atomic32-members.html b/master/classnctl_1_1_atomic32-members.html new file mode 100644 index 0000000000..aae2e0dbe1 --- /dev/null +++ b/master/classnctl_1_1_atomic32-members.html @@ -0,0 +1,104 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::Atomic32 Member List
+
+
+ +

This is the complete list of members for nctl::Atomic32, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
Atomic32() (defined in nctl::Atomic32)nctl::Atomic32inline
Atomic32(int32_t value) (defined in nctl::Atomic32)nctl::Atomic32inlineexplicit
cmpExchange(int32_t newValue, int32_t cmpValue, MemoryModel memModel) (defined in nctl::Atomic32)nctl::Atomic32
cmpExchange(int32_t newValue, int32_t cmpValue) (defined in nctl::Atomic32)nctl::Atomic32inline
fetchAdd(int32_t value, MemoryModel memModel) (defined in nctl::Atomic32)nctl::Atomic32
fetchAdd(int32_t value) (defined in nctl::Atomic32)nctl::Atomic32inline
fetchSub(int32_t value, MemoryModel memModel) (defined in nctl::Atomic32)nctl::Atomic32
fetchSub(int32_t value) (defined in nctl::Atomic32)nctl::Atomic32inline
load(MemoryModel memModel) (defined in nctl::Atomic32)nctl::Atomic32
load() (defined in nctl::Atomic32)nctl::Atomic32inline
MemoryModel enum name (defined in nctl::Atomic32)nctl::Atomic32
operator int32_t() (defined in nctl::Atomic32)nctl::Atomic32inline
operator++() (defined in nctl::Atomic32)nctl::Atomic32inline
operator++(int) (defined in nctl::Atomic32)nctl::Atomic32inline
operator--() (defined in nctl::Atomic32)nctl::Atomic32inline
operator--(int) (defined in nctl::Atomic32)nctl::Atomic32inline
operator=(int32_t value) (defined in nctl::Atomic32)nctl::Atomic32inline
store(int32_t value, MemoryModel memModel) (defined in nctl::Atomic32)nctl::Atomic32
store(int32_t value) (defined in nctl::Atomic32)nctl::Atomic32inline
~Atomic32()=default (defined in nctl::Atomic32)nctl::Atomic32
+ + + + diff --git a/master/classnctl_1_1_atomic32.html b/master/classnctl_1_1_atomic32.html new file mode 100644 index 0000000000..55fc074d17 --- /dev/null +++ b/master/classnctl_1_1_atomic32.html @@ -0,0 +1,162 @@ + + + + + + + +nCine: nctl::Atomic32 Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::Atomic32 Class Reference
+
+
+ +

An atomic int32_t class. + More...

+ +

#include <Atomic.h>

+ + + + +

+Public Types

enum class  MemoryModel { RELAXED +, ACQUIRE +, RELEASE +, SEQ_CST + }
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Atomic32 (int32_t value)
 
+int32_t load (MemoryModel memModel)
 
+int32_t load ()
 
+void store (int32_t value, MemoryModel memModel)
 
+void store (int32_t value)
 
+int32_t fetchAdd (int32_t value, MemoryModel memModel)
 
+int32_t fetchAdd (int32_t value)
 
+int32_t fetchSub (int32_t value, MemoryModel memModel)
 
+int32_t fetchSub (int32_t value)
 
+bool cmpExchange (int32_t newValue, int32_t cmpValue, MemoryModel memModel)
 
+bool cmpExchange (int32_t newValue, int32_t cmpValue)
 
+int32_t operator= (int32_t value)
 
operator int32_t ()
 
+int32_t operator++ ()
 
+int32_t operator++ (int)
 
+int32_t operator-- ()
 
+int32_t operator-- (int)
 
+

Detailed Description

+

An atomic int32_t class.

+

The documentation for this class was generated from the following files:
    +
  • include/nctl/Atomic.h
  • +
  • src/base/GccAtomic.cpp
  • +
  • src/base/StdAtomic.cpp
  • +
  • src/base/WindowsAtomic.cpp
  • +
+
+ + + + diff --git a/master/classnctl_1_1_atomic64-members.html b/master/classnctl_1_1_atomic64-members.html new file mode 100644 index 0000000000..4021023ae7 --- /dev/null +++ b/master/classnctl_1_1_atomic64-members.html @@ -0,0 +1,104 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::Atomic64 Member List
+
+
+ +

This is the complete list of members for nctl::Atomic64, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
Atomic64() (defined in nctl::Atomic64)nctl::Atomic64inline
Atomic64(int64_t value) (defined in nctl::Atomic64)nctl::Atomic64inlineexplicit
cmpExchange(int64_t newValue, int64_t cmpValue, MemoryModel memModel) (defined in nctl::Atomic64)nctl::Atomic64
cmpExchange(int64_t newValue, int64_t cmpValue) (defined in nctl::Atomic64)nctl::Atomic64inline
fetchAdd(int64_t value, MemoryModel memModel) (defined in nctl::Atomic64)nctl::Atomic64
fetchAdd(int64_t value) (defined in nctl::Atomic64)nctl::Atomic64inline
fetchSub(int64_t value, MemoryModel memModel) (defined in nctl::Atomic64)nctl::Atomic64
fetchSub(int64_t value) (defined in nctl::Atomic64)nctl::Atomic64inline
load(MemoryModel memModel) (defined in nctl::Atomic64)nctl::Atomic64
load() (defined in nctl::Atomic64)nctl::Atomic64inline
MemoryModel enum name (defined in nctl::Atomic64)nctl::Atomic64
operator int64_t() (defined in nctl::Atomic64)nctl::Atomic64inline
operator++() (defined in nctl::Atomic64)nctl::Atomic64inline
operator++(int) (defined in nctl::Atomic64)nctl::Atomic64inline
operator--() (defined in nctl::Atomic64)nctl::Atomic64inline
operator--(int) (defined in nctl::Atomic64)nctl::Atomic64inline
operator=(int64_t value) (defined in nctl::Atomic64)nctl::Atomic64inline
store(int64_t value, MemoryModel memModel) (defined in nctl::Atomic64)nctl::Atomic64
store(int64_t value) (defined in nctl::Atomic64)nctl::Atomic64inline
~Atomic64()=default (defined in nctl::Atomic64)nctl::Atomic64
+ + + + diff --git a/master/classnctl_1_1_atomic64.html b/master/classnctl_1_1_atomic64.html new file mode 100644 index 0000000000..28c50a13f3 --- /dev/null +++ b/master/classnctl_1_1_atomic64.html @@ -0,0 +1,162 @@ + + + + + + + +nCine: nctl::Atomic64 Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::Atomic64 Class Reference
+
+
+ +

An atomic int64_t class. + More...

+ +

#include <Atomic.h>

+ + + + +

+Public Types

enum class  MemoryModel { RELAXED +, ACQUIRE +, RELEASE +, SEQ_CST + }
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

Atomic64 (int64_t value)
 
+int64_t load (MemoryModel memModel)
 
+int64_t load ()
 
+void store (int64_t value, MemoryModel memModel)
 
+void store (int64_t value)
 
+int64_t fetchAdd (int64_t value, MemoryModel memModel)
 
+int64_t fetchAdd (int64_t value)
 
+int64_t fetchSub (int64_t value, MemoryModel memModel)
 
+int64_t fetchSub (int64_t value)
 
+bool cmpExchange (int64_t newValue, int64_t cmpValue, MemoryModel memModel)
 
+bool cmpExchange (int64_t newValue, int64_t cmpValue)
 
+int64_t operator= (int64_t value)
 
operator int64_t ()
 
+int64_t operator++ ()
 
+int64_t operator++ (int)
 
+int64_t operator-- ()
 
+int64_t operator-- (int)
 
+

Detailed Description

+

An atomic int64_t class.

+

The documentation for this class was generated from the following files:
    +
  • include/nctl/Atomic.h
  • +
  • src/base/GccAtomic.cpp
  • +
  • src/base/StdAtomic.cpp
  • +
  • src/base/WindowsAtomic.cpp
  • +
+
+ + + + diff --git a/master/classnctl_1_1_base_list_node-members.html b/master/classnctl_1_1_base_list_node-members.html new file mode 100644 index 0000000000..b24f8185fe --- /dev/null +++ b/master/classnctl_1_1_base_list_node-members.html @@ -0,0 +1,89 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::BaseListNode Member List
+
+
+ +

This is the complete list of members for nctl::BaseListNode, including all inherited members.

+ + + + + + +
BaseListNode() (defined in nctl::BaseListNode)nctl::BaseListNodeinlineprotected
BaseListNode(BaseListNode *previous, BaseListNode *next) (defined in nctl::BaseListNode)nctl::BaseListNodeinlineprotected
List (defined in nctl::BaseListNode)nctl::BaseListNodefriend
next_nctl::BaseListNode
previous_nctl::BaseListNode
+ + + + diff --git a/master/classnctl_1_1_base_list_node.html b/master/classnctl_1_1_base_list_node.html new file mode 100644 index 0000000000..de469c3abe --- /dev/null +++ b/master/classnctl_1_1_base_list_node.html @@ -0,0 +1,138 @@ + + + + + + + +nCine: nctl::BaseListNode Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::BaseListNode Class Reference
+
+
+ +

The base list node used as sentinel. + More...

+ +

#include <List.h>

+
+Inheritance diagram for nctl::BaseListNode:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for nctl::BaseListNode:
+
+
Collaboration graph
+ + + +
[legend]
+ + + + + + + + +

+Public Attributes

+BaseListNodeprevious_
 A pointer to the previous node in the list.
 
+BaseListNodenext_
 A pointer to the next node in the list.
 
+ + + +

+Protected Member Functions

BaseListNode (BaseListNode *previous, BaseListNode *next)
 
+ + + + +

+Friends

+template<class T >
class List
 
+

Detailed Description

+

The base list node used as sentinel.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classnctl_1_1_base_list_node__coll__graph.map b/master/classnctl_1_1_base_list_node__coll__graph.map new file mode 100644 index 0000000000..29e39695b2 --- /dev/null +++ b/master/classnctl_1_1_base_list_node__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/master/classnctl_1_1_base_list_node__coll__graph.md5 b/master/classnctl_1_1_base_list_node__coll__graph.md5 new file mode 100644 index 0000000000..1a2d9d54b1 --- /dev/null +++ b/master/classnctl_1_1_base_list_node__coll__graph.md5 @@ -0,0 +1 @@ +ee9c92cd6e6e33cce0da26c7fe2bcf01 \ No newline at end of file diff --git a/master/classnctl_1_1_base_list_node__coll__graph.png b/master/classnctl_1_1_base_list_node__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..14f7ce481bdaa7fa0b1b954aaf828b513f607352 GIT binary patch literal 3652 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 literal 0 HcmV?d00001 diff --git a/master/classnctl_1_1_base_list_node__inherit__graph.map b/master/classnctl_1_1_base_list_node__inherit__graph.map new file mode 100644 index 0000000000..85f2a5bf82 --- /dev/null +++ b/master/classnctl_1_1_base_list_node__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classnctl_1_1_base_list_node__inherit__graph.md5 b/master/classnctl_1_1_base_list_node__inherit__graph.md5 new file mode 100644 index 0000000000..f2f7f2835c --- /dev/null +++ b/master/classnctl_1_1_base_list_node__inherit__graph.md5 @@ -0,0 +1 @@ +20db0b67ed179dc3d1f948dca9d636ac \ No newline at end of file diff --git a/master/classnctl_1_1_base_list_node__inherit__graph.png b/master/classnctl_1_1_base_list_node__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..16fdb12f08b0237a4c5894763f291b26c31231b1 GIT binary patch literal 3813 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 literal 0 HcmV?d00001 diff --git a/master/classnctl_1_1_bit_set-members.html b/master/classnctl_1_1_bit_set-members.html new file mode 100644 index 0000000000..1bb3d45abc --- /dev/null +++ b/master/classnctl_1_1_bit_set-members.html @@ -0,0 +1,115 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::BitSet< T > Member List
+
+
+ +

This is the complete list of members for nctl::BitSet< T >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
all() constnctl::BitSet< T >inline
any() constnctl::BitSet< T >inline
BitSet() (defined in nctl::BitSet< T >)nctl::BitSet< T >
BitSet(T value) (defined in nctl::BitSet< T >)nctl::BitSet< T >explicit
count() constnctl::BitSet< T >
count() const (defined in nctl::BitSet< T >)nctl::BitSet< T >inline
count() const (defined in nctl::BitSet< T >)nctl::BitSet< T >inline
count() const (defined in nctl::BitSet< T >)nctl::BitSet< T >inline
count() const (defined in nctl::BitSet< T >)nctl::BitSet< T >inline
flip(unsigned int pos)nctl::BitSet< T >inline
none() constnctl::BitSet< T >inline
operator!=(const BitSet &other) const (defined in nctl::BitSet< T >)nctl::BitSet< T >inline
operator& (defined in nctl::BitSet< T >)nctl::BitSet< T >friend
operator&=(const BitSet &other) (defined in nctl::BitSet< T >)nctl::BitSet< T >inline
operator<<(unsigned int pos) const (defined in nctl::BitSet< T >)nctl::BitSet< T >inline
operator<<=(unsigned int pos) (defined in nctl::BitSet< T >)nctl::BitSet< T >inline
operator==(const BitSet &other) const (defined in nctl::BitSet< T >)nctl::BitSet< T >inline
operator>>(unsigned int pos) const (defined in nctl::BitSet< T >)nctl::BitSet< T >inline
operator>>=(unsigned int pos) (defined in nctl::BitSet< T >)nctl::BitSet< T >inline
operator^ (defined in nctl::BitSet< T >)nctl::BitSet< T >friend
operator^=(const BitSet &other) (defined in nctl::BitSet< T >)nctl::BitSet< T >inline
operator| (defined in nctl::BitSet< T >)nctl::BitSet< T >friend
operator|=(const BitSet &other) (defined in nctl::BitSet< T >)nctl::BitSet< T >inline
operator~() const (defined in nctl::BitSet< T >)nctl::BitSet< T >inline
reset()nctl::BitSet< T >inline
reset(unsigned int pos)nctl::BitSet< T >inline
set()nctl::BitSet< T >inline
set(unsigned int pos)nctl::BitSet< T >inline
set(unsigned int pos, bool value)nctl::BitSet< T >inline
size() constnctl::BitSet< T >inline
test(unsigned int pos) constnctl::BitSet< T >inline
+ + + + diff --git a/master/classnctl_1_1_bit_set.html b/master/classnctl_1_1_bit_set.html new file mode 100644 index 0000000000..eff54881ef --- /dev/null +++ b/master/classnctl_1_1_bit_set.html @@ -0,0 +1,345 @@ + + + + + + + +nCine: nctl::BitSet< T > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::BitSet< T > Class Template Reference
+
+
+ +

A sequence of bits to be manipulated with logical operators. + More...

+ +

#include <BitSet.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

BitSet (T value)
 
+bool operator== (const BitSet &other) const
 
+bool operator!= (const BitSet &other) const
 
bool test (unsigned int pos) const
 
bool all () const
 
bool any () const
 
bool none () const
 
unsigned int count () const
 
unsigned int size () const
 
+BitSetoperator&= (const BitSet &other)
 
+BitSetoperator|= (const BitSet &other)
 
+BitSetoperator^= (const BitSet &other)
 
+BitSet operator~ () const
 
+BitSetoperator<<= (unsigned int pos)
 
+BitSetoperator>>= (unsigned int pos)
 
+BitSet operator<< (unsigned int pos) const
 
+BitSet operator>> (unsigned int pos) const
 
+void set ()
 Sets all bits in the bitset.
 
+void set (unsigned int pos)
 Sets the bit at the specified position.
 
+void set (unsigned int pos, bool value)
 Sets the bit at the specified position with the specified value.
 
+void reset ()
 Resets all bits in the bitset.
 
+void reset (unsigned int pos)
 Resets the bit at the specified position.
 
+void flip (unsigned int pos)
 Flips the bit at the specified position.
 
+unsigned int count () const
 
+unsigned int count () const
 
+unsigned int count () const
 
+unsigned int count () const
 
+ + + + + + + +

+Friends

+BitSet operator& (const BitSet &lhs, const BitSet &rhs)
 
+BitSet operator| (const BitSet &lhs, const BitSet &rhs)
 
+BitSet operator^ (const BitSet &lhs, const BitSet &rhs)
 
+

Detailed Description

+

template<class T>
+class nctl::BitSet< T >

+ +

A sequence of bits to be manipulated with logical operators.

+

Member Function Documentation

+ +

◆ all()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + +
bool nctl::BitSet< T >::all
+
+inline
+
+
Returns
True if all bits are set
+ +
+
+ +

◆ any()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + +
bool nctl::BitSet< T >::any
+
+inline
+
+
Returns
True if at least one bit is set
+ +
+
+ +

◆ count()

+ +
+
+
+template<class T >
+ + + + + + + +
unsigned int nctl::BitSet< T >::count () const
+
+
Returns
The number of bits that are set
+ +
+
+ +

◆ none()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + +
bool nctl::BitSet< T >::none
+
+inline
+
+
Returns
True if all bits are not set
+ +
+
+ +

◆ size()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + +
unsigned int nctl::BitSet< T >::size
+
+inline
+
+
Returns
The total number of bits in the bitset
+ +
+
+ +

◆ test()

+ +
+
+
+template<class T >
+ + + + + +
+ + + + + + + + +
bool nctl::BitSet< T >::test (unsigned int pos) const
+
+inline
+
+
Returns
True if the bit at the specified position is set
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classnctl_1_1_default_delete-members.html b/master/classnctl_1_1_default_delete-members.html new file mode 100644 index 0000000000..df64998b76 --- /dev/null +++ b/master/classnctl_1_1_default_delete-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::DefaultDelete< T > Member List
+
+
+ +

This is the complete list of members for nctl::DefaultDelete< T >, including all inherited members.

+ + +
operator()(T *ptr) const (defined in nctl::DefaultDelete< T >)nctl::DefaultDelete< T >inline
+ + + + diff --git a/master/classnctl_1_1_default_delete.html b/master/classnctl_1_1_default_delete.html new file mode 100644 index 0000000000..48b4dd5a6b --- /dev/null +++ b/master/classnctl_1_1_default_delete.html @@ -0,0 +1,94 @@ + + + + + + + +nCine: nctl::DefaultDelete< T > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::DefaultDelete< T > Class Template Reference
+
+
+ + + + +

+Public Member Functions

+void operator() (T *ptr) const
 
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classnctl_1_1_default_delete_3_01_t_0f_0e_4-members.html b/master/classnctl_1_1_default_delete_3_01_t_0f_0e_4-members.html new file mode 100644 index 0000000000..6c281647c8 --- /dev/null +++ b/master/classnctl_1_1_default_delete_3_01_t_0f_0e_4-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::DefaultDelete< T[]> Member List
+
+
+ +

This is the complete list of members for nctl::DefaultDelete< T[]>, including all inherited members.

+ + +
operator()(T *ptr) const (defined in nctl::DefaultDelete< T[]>)nctl::DefaultDelete< T[]>inline
+ + + + diff --git a/master/classnctl_1_1_default_delete_3_01_t_0f_0e_4.html b/master/classnctl_1_1_default_delete_3_01_t_0f_0e_4.html new file mode 100644 index 0000000000..c05a7928af --- /dev/null +++ b/master/classnctl_1_1_default_delete_3_01_t_0f_0e_4.html @@ -0,0 +1,94 @@ + + + + + + + +nCine: nctl::DefaultDelete< T[]> Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::DefaultDelete< T[]> Class Template Reference
+
+
+ + + + +

+Public Member Functions

+void operator() (T *ptr) const
 
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classnctl_1_1_f_n_v1a_hash_func-members.html b/master/classnctl_1_1_f_n_v1a_hash_func-members.html new file mode 100644 index 0000000000..a742e0674e --- /dev/null +++ b/master/classnctl_1_1_f_n_v1a_hash_func-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::FNV1aHashFunc< K > Member List
+
+
+ +

This is the complete list of members for nctl::FNV1aHashFunc< K >, including all inherited members.

+ + +
operator()(const K &key) const (defined in nctl::FNV1aHashFunc< K >)nctl::FNV1aHashFunc< K >inline
+ + + + diff --git a/master/classnctl_1_1_f_n_v1a_hash_func.html b/master/classnctl_1_1_f_n_v1a_hash_func.html new file mode 100644 index 0000000000..2b9714b687 --- /dev/null +++ b/master/classnctl_1_1_f_n_v1a_hash_func.html @@ -0,0 +1,105 @@ + + + + + + + +nCine: nctl::FNV1aHashFunc< K > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::FNV1aHashFunc< K > Class Template Reference
+
+
+ +

Fowler-Noll-Vo Hash (FNV-1a) + More...

+ +

#include <HashFunctions.h>

+ + + + +

+Public Member Functions

+hash_t operator() (const K &key) const
 
+

Detailed Description

+

template<class K>
+class nctl::FNV1aHashFunc< K >

+ +

Fowler-Noll-Vo Hash (FNV-1a)

+

For more information: http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classnctl_1_1_f_n_v1a_hash_func_3_01_string_01_4-members.html b/master/classnctl_1_1_f_n_v1a_hash_func_3_01_string_01_4-members.html new file mode 100644 index 0000000000..546bc75f47 --- /dev/null +++ b/master/classnctl_1_1_f_n_v1a_hash_func_3_01_string_01_4-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::FNV1aHashFunc< String > Member List
+
+
+ +

This is the complete list of members for nctl::FNV1aHashFunc< String >, including all inherited members.

+ + +
operator()(const String &string) const (defined in nctl::FNV1aHashFunc< String >)nctl::FNV1aHashFunc< String >inline
+ + + + diff --git a/master/classnctl_1_1_f_n_v1a_hash_func_3_01_string_01_4.html b/master/classnctl_1_1_f_n_v1a_hash_func_3_01_string_01_4.html new file mode 100644 index 0000000000..859bdcbf55 --- /dev/null +++ b/master/classnctl_1_1_f_n_v1a_hash_func_3_01_string_01_4.html @@ -0,0 +1,103 @@ + + + + + + + +nCine: nctl::FNV1aHashFunc< String > Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::FNV1aHashFunc< String > Class Reference
+
+
+ +

Fowler-Noll-Vo Hash (FNV-1a) + More...

+ +

#include <HashFunctions.h>

+ + + + +

+Public Member Functions

+hash_t operator() (const String &string) const
 
+

Detailed Description

+

Fowler-Noll-Vo Hash (FNV-1a)

+
Note
Specialized version of the function for String objects
+

For more information: http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classnctl_1_1_f_n_v1a_hash_func_3_01const_01char_01_5_01_4-members.html b/master/classnctl_1_1_f_n_v1a_hash_func_3_01const_01char_01_5_01_4-members.html new file mode 100644 index 0000000000..f81a3bae28 --- /dev/null +++ b/master/classnctl_1_1_f_n_v1a_hash_func_3_01const_01char_01_5_01_4-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::FNV1aHashFunc< const char * > Member List
+
+
+ +

This is the complete list of members for nctl::FNV1aHashFunc< const char * >, including all inherited members.

+ + +
operator()(const char *key) const (defined in nctl::FNV1aHashFunc< const char * >)nctl::FNV1aHashFunc< const char * >inline
+ + + + diff --git a/master/classnctl_1_1_f_n_v1a_hash_func_3_01const_01char_01_5_01_4.html b/master/classnctl_1_1_f_n_v1a_hash_func_3_01const_01char_01_5_01_4.html new file mode 100644 index 0000000000..9c324bccc1 --- /dev/null +++ b/master/classnctl_1_1_f_n_v1a_hash_func_3_01const_01char_01_5_01_4.html @@ -0,0 +1,99 @@ + + + + + + + +nCine: nctl::FNV1aHashFunc< const char * > Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::FNV1aHashFunc< const char * > Class Reference
+
+
+ +

#include <HashFunctions.h>

+ + + + +

+Public Member Functions

+hash_t operator() (const char *key) const
 
+

Detailed Description

+
Note
Specialized version of the function for C-style strings
+

For more information: http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classnctl_1_1_fast_hash_func-members.html b/master/classnctl_1_1_fast_hash_func-members.html new file mode 100644 index 0000000000..3054b8830f --- /dev/null +++ b/master/classnctl_1_1_fast_hash_func-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::FastHashFunc< K > Member List
+
+
+ +

This is the complete list of members for nctl::FastHashFunc< K >, including all inherited members.

+ + +
operator()(const K &key) const (defined in nctl::FastHashFunc< K >)nctl::FastHashFunc< K >inline
+ + + + diff --git a/master/classnctl_1_1_fast_hash_func.html b/master/classnctl_1_1_fast_hash_func.html new file mode 100644 index 0000000000..4c5c33beeb --- /dev/null +++ b/master/classnctl_1_1_fast_hash_func.html @@ -0,0 +1,105 @@ + + + + + + + +nCine: nctl::FastHashFunc< K > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::FastHashFunc< K > Class Template Reference
+
+
+ +

fast-hash + More...

+ +

#include <HashFunctions.h>

+ + + + +

+Public Member Functions

+hash_t operator() (const K &key) const
 
+

Detailed Description

+

template<class K>
+class nctl::FastHashFunc< K >

+ +

fast-hash

+

For more information: https://github.com/ztanml/fast-hash

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classnctl_1_1_fast_hash_func_3_01_string_01_4-members.html b/master/classnctl_1_1_fast_hash_func_3_01_string_01_4-members.html new file mode 100644 index 0000000000..e6020d5cd1 --- /dev/null +++ b/master/classnctl_1_1_fast_hash_func_3_01_string_01_4-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::FastHashFunc< String > Member List
+
+
+ +

This is the complete list of members for nctl::FastHashFunc< String >, including all inherited members.

+ + +
operator()(const String &string) const (defined in nctl::FastHashFunc< String >)nctl::FastHashFunc< String >inline
+ + + + diff --git a/master/classnctl_1_1_fast_hash_func_3_01_string_01_4.html b/master/classnctl_1_1_fast_hash_func_3_01_string_01_4.html new file mode 100644 index 0000000000..454f63fc49 --- /dev/null +++ b/master/classnctl_1_1_fast_hash_func_3_01_string_01_4.html @@ -0,0 +1,103 @@ + + + + + + + +nCine: nctl::FastHashFunc< String > Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::FastHashFunc< String > Class Reference
+
+
+ +

fast-hash + More...

+ +

#include <HashFunctions.h>

+ + + + +

+Public Member Functions

+hash_t operator() (const String &string) const
 
+

Detailed Description

+

fast-hash

+
Note
Specialized version of the function for String objects
+

For more information: https://github.com/ztanml/fast-hash

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classnctl_1_1_fast_hash_func_3_01const_01char_01_5_01_4-members.html b/master/classnctl_1_1_fast_hash_func_3_01const_01char_01_5_01_4-members.html new file mode 100644 index 0000000000..de26c853c3 --- /dev/null +++ b/master/classnctl_1_1_fast_hash_func_3_01const_01char_01_5_01_4-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::FastHashFunc< const char * > Member List
+
+
+ +

This is the complete list of members for nctl::FastHashFunc< const char * >, including all inherited members.

+ + +
operator()(const char *key) const (defined in nctl::FastHashFunc< const char * >)nctl::FastHashFunc< const char * >inline
+ + + + diff --git a/master/classnctl_1_1_fast_hash_func_3_01const_01char_01_5_01_4.html b/master/classnctl_1_1_fast_hash_func_3_01const_01char_01_5_01_4.html new file mode 100644 index 0000000000..9aa35eed6a --- /dev/null +++ b/master/classnctl_1_1_fast_hash_func_3_01const_01char_01_5_01_4.html @@ -0,0 +1,103 @@ + + + + + + + +nCine: nctl::FastHashFunc< const char * > Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::FastHashFunc< const char * > Class Reference
+
+
+ +

fast-hash + More...

+ +

#include <HashFunctions.h>

+ + + + +

+Public Member Functions

+hash_t operator() (const char *key) const
 
+

Detailed Description

+

fast-hash

+
Note
Specialized version of the function for C-style strings
+

For more information: https://github.com/ztanml/fast-hash

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classnctl_1_1_fixed_hash_func-members.html b/master/classnctl_1_1_fixed_hash_func-members.html new file mode 100644 index 0000000000..fb463d0b07 --- /dev/null +++ b/master/classnctl_1_1_fixed_hash_func-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::FixedHashFunc< K > Member List
+
+
+ +

This is the complete list of members for nctl::FixedHashFunc< K >, including all inherited members.

+ + +
operator()(const K &key) const (defined in nctl::FixedHashFunc< K >)nctl::FixedHashFunc< K >inline
+ + + + diff --git a/master/classnctl_1_1_fixed_hash_func.html b/master/classnctl_1_1_fixed_hash_func.html new file mode 100644 index 0000000000..0b30bc36c5 --- /dev/null +++ b/master/classnctl_1_1_fixed_hash_func.html @@ -0,0 +1,104 @@ + + + + + + + +nCine: nctl::FixedHashFunc< K > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::FixedHashFunc< K > Class Template Reference
+
+
+ +

Hash function returning always the first hashmap bucket, for debug purposes. + More...

+ +

#include <HashFunctions.h>

+ + + + +

+Public Member Functions

+hash_t operator() (const K &key) const
 
+

Detailed Description

+

template<class K>
+class nctl::FixedHashFunc< K >

+ +

Hash function returning always the first hashmap bucket, for debug purposes.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classnctl_1_1_free_list_allocator-members.html b/master/classnctl_1_1_free_list_allocator-members.html new file mode 100644 index 0000000000..aeace338f7 --- /dev/null +++ b/master/classnctl_1_1_free_list_allocator-members.html @@ -0,0 +1,132 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::FreeListAllocator Member List
+
+
+ +

This is the complete list of members for nctl::FreeListAllocator, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
allocate(size_t bytes, uint8_t alignment)nctl::IAllocatorinline
allocate(size_t bytes) (defined in nctl::IAllocator)nctl::IAllocatorinline
allocateFunc_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
AllocateFunction typedef (defined in nctl::IAllocator)nctl::IAllocator
base() constnctl::IAllocatorinline
base_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
copyOnReallocation() constnctl::IAllocatorinline
copyOnReallocation_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
deallocate(void *ptr)nctl::IAllocatorinline
deallocateFunc_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
DeallocateFunction typedef (defined in nctl::IAllocator)nctl::IAllocator
DefaultAlignmentnctl::IAllocatorstatic
defrag()nctl::FreeListAllocator
defragOnDeallocation() constnctl::FreeListAllocatorinline
deleteArray(T *ptr) (defined in nctl::IAllocator)nctl::IAllocator
deleteObject(T *ptr) (defined in nctl::IAllocator)nctl::IAllocator
FitStrategy enum namenctl::FreeListAllocator
fitStrategy() constnctl::FreeListAllocatorinline
freeBlock() const (defined in nctl::FreeListAllocator)nctl::FreeListAllocatorinline
FreeListAllocator() (defined in nctl::FreeListAllocator)nctl::FreeListAllocatorinline
FreeListAllocator(const char *name) (defined in nctl::FreeListAllocator)nctl::FreeListAllocatorexplicit
FreeListAllocator(size_t size, void *base) (defined in nctl::FreeListAllocator)nctl::FreeListAllocatorinline
FreeListAllocator(const char *name, size_t size, void *base) (defined in nctl::FreeListAllocator)nctl::FreeListAllocatorinline
FreeListAllocator(size_t size, void *base, bool defragOnDeallocation) (defined in nctl::FreeListAllocator)nctl::FreeListAllocatorinline
FreeListAllocator(const char *name, size_t size, void *base, bool defragOnDeallocation) (defined in nctl::FreeListAllocator)nctl::FreeListAllocator
freeMemory() constnctl::IAllocatorinline
IAllocator(const char *name, AllocateFunction allocFunc, ReallocateFunction reallocFunc, DeallocateFunction deallocFunc) (defined in nctl::IAllocator)nctl::IAllocatorinline
IAllocator(const char *name, AllocateFunction allocFunc, ReallocateFunction reallocFunc, DeallocateFunction deallocFunc, size_t size, void *base) (defined in nctl::IAllocator)nctl::IAllocator
init(size_t size, void *base) (defined in nctl::FreeListAllocator)nctl::FreeListAllocator
MaxNameLengthnctl::IAllocatorstatic
name() constnctl::IAllocatorinline
name_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
newArray(size_t numElements) (defined in nctl::IAllocator)nctl::IAllocator
newObject(Args &&... args) (defined in nctl::IAllocator)nctl::IAllocator
numAllocations() constnctl::IAllocatorinline
numAllocations_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
reallocate(void *ptr, size_t bytes, uint8_t alignment)nctl::IAllocator
reallocate(void *ptr, size_t bytes) (defined in nctl::IAllocator)nctl::IAllocatorinline
reallocateFunc_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
ReallocateFunction typedef (defined in nctl::IAllocator)nctl::IAllocator
setCopyOnReallocation(bool value)nctl::IAllocatorinline
setDefragOnDeallocation(bool value)nctl::FreeListAllocatorinline
setFitStrategy(FitStrategy fitStrategy)nctl::FreeListAllocatorinline
size() constnctl::IAllocatorinline
size_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
usedMemory() constnctl::IAllocatorinline
usedMemory_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
~FreeListAllocator() (defined in nctl::FreeListAllocator)nctl::FreeListAllocator
+ + + + diff --git a/master/classnctl_1_1_free_list_allocator.html b/master/classnctl_1_1_free_list_allocator.html new file mode 100644 index 0000000000..0e1b6228f9 --- /dev/null +++ b/master/classnctl_1_1_free_list_allocator.html @@ -0,0 +1,340 @@ + + + + + + + +nCine: nctl::FreeListAllocator Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::FreeListAllocator Class Reference
+
+
+ +

A free list allocator. + More...

+ +

#include <FreeListAllocator.h>

+
+Inheritance diagram for nctl::FreeListAllocator:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for nctl::FreeListAllocator:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + +

+Classes

struct  Block
 
+ + + + + + + + + + + +

+Public Types

enum class  FitStrategy { FIRST_FIT +, BEST_FIT +, WORST_FIT + }
 Block allocation strategy.
 
- Public Types inherited from nctl::IAllocator
+using AllocateFunction = void *(*)(IAllocator *allocator, size_t, uint8_t)
 
+using ReallocateFunction = void *(*)(IAllocator *allocator, void *, size_t, uint8_t, size_t &)
 
+using DeallocateFunction = void(*)(IAllocator *allocator, void *)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

FreeListAllocator (const char *name)
 
FreeListAllocator (size_t size, void *base)
 
FreeListAllocator (const char *name, size_t size, void *base)
 
FreeListAllocator (size_t size, void *base, bool defragOnDeallocation)
 
FreeListAllocator (const char *name, size_t size, void *base, bool defragOnDeallocation)
 
+void init (size_t size, void *base)
 
void defrag ()
 Defragments free list blocks. More...
 
+const BlockfreeBlock () const
 
+FitStrategy fitStrategy () const
 Returns the allocation strategy.
 
+void setFitStrategy (FitStrategy fitStrategy)
 Sets the allocation strategy.
 
+bool defragOnDeallocation () const
 Returns the state of the defrag on deallocation flag.
 
void setDefragOnDeallocation (bool value)
 Sets the state of the defrag on deallocation flag. More...
 
- Public Member Functions inherited from nctl::IAllocator
IAllocator (const char *name, AllocateFunction allocFunc, ReallocateFunction reallocFunc, DeallocateFunction deallocFunc)
 
IAllocator (const char *name, AllocateFunction allocFunc, ReallocateFunction reallocFunc, DeallocateFunction deallocFunc, size_t size, void *base)
 
+void * allocate (size_t bytes, uint8_t alignment)
 Tries to allocate the specified amount of memory with the specified alignment requirement.
 
+void * allocate (size_t bytes)
 
+void * reallocate (void *ptr, size_t bytes, uint8_t alignment)
 Tries to reallocate the allocation at the specified pointer with a different size.
 
+void * reallocate (void *ptr, size_t bytes)
 
+void deallocate (void *ptr)
 Deallocates the allocation at the specified pointer.
 
+const char * name () const
 Returns the name of the allocator.
 
+size_t size () const
 Returns the size of the buffer used for allocations.
 
+void * base () const
 Returns the address of the buffer used for allocations.
 
size_t usedMemory () const
 
size_t freeMemory () const
 
+size_t numAllocations () const
 Returns the number of active allocations.
 
+bool copyOnReallocation () const
 Returns the state of the copy on reallocation flag.
 
void setCopyOnReallocation (bool value)
 Sets the state of the copy on reallocation flag. More...
 
+template<class T , typename... Args>
T * newObject (Args &&... args)
 
+template<class T >
void deleteObject (T *ptr)
 
+template<class T >
T * newArray (size_t numElements)
 
+template<class T >
void deleteArray (T *ptr)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Static Public Attributes inherited from nctl::IAllocator
+static const uint8_t DefaultAlignment = 2 * sizeof(void *)
 16 bytes default alignment on 64bit and 8 bytes on 32bit
 
+static const unsigned int MaxNameLength = 64
 Maximum length for the allocator name string.
 
- Protected Attributes inherited from nctl::IAllocator
+AllocateFunction allocateFunc_
 
+ReallocateFunction reallocateFunc_
 
+DeallocateFunction deallocateFunc_
 
+char name_ [MaxNameLength]
 
+size_t size_
 
+void * base_
 
+size_t usedMemory_
 
+size_t numAllocations_
 
+bool copyOnReallocation_
 
+

Detailed Description

+

A free list allocator.

+

Member Function Documentation

+ +

◆ defrag()

+ +
+
+ + + + + + + +
void nctl::FreeListAllocator::defrag ()
+
+ +

Defragments free list blocks.

+
Note
It does not alter allocated pointers
+ +
+
+ +

◆ setDefragOnDeallocation()

+ +
+
+ + + + + +
+ + + + + + + + +
void nctl::FreeListAllocator::setDefragOnDeallocation (bool value)
+
+inline
+
+ +

Sets the state of the defrag on deallocation flag.

+
Note
When the flag is true a defrag will automatically start after every deallocation
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classnctl_1_1_free_list_allocator__coll__graph.map b/master/classnctl_1_1_free_list_allocator__coll__graph.map new file mode 100644 index 0000000000..d4bae6baf3 --- /dev/null +++ b/master/classnctl_1_1_free_list_allocator__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classnctl_1_1_free_list_allocator__coll__graph.md5 b/master/classnctl_1_1_free_list_allocator__coll__graph.md5 new file mode 100644 index 0000000000..0587ca5e17 --- /dev/null +++ b/master/classnctl_1_1_free_list_allocator__coll__graph.md5 @@ -0,0 +1 @@ +12c8df4400138030369e4cc319105c34 \ No newline at end of file diff --git a/master/classnctl_1_1_free_list_allocator__coll__graph.png b/master/classnctl_1_1_free_list_allocator__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..02c36e5361624556b7baab90a317da0fde5ef410 GIT binary patch literal 5747 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 literal 0 HcmV?d00001 diff --git a/master/classnctl_1_1_free_list_allocator__inherit__graph.map b/master/classnctl_1_1_free_list_allocator__inherit__graph.map new file mode 100644 index 0000000000..bff63a1ad0 --- /dev/null +++ b/master/classnctl_1_1_free_list_allocator__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classnctl_1_1_free_list_allocator__inherit__graph.md5 b/master/classnctl_1_1_free_list_allocator__inherit__graph.md5 new file mode 100644 index 0000000000..bb27fd39e5 --- /dev/null +++ b/master/classnctl_1_1_free_list_allocator__inherit__graph.md5 @@ -0,0 +1 @@ +d292018544eeae3596b6f7b128a791bb \ No newline at end of file diff --git a/master/classnctl_1_1_free_list_allocator__inherit__graph.png b/master/classnctl_1_1_free_list_allocator__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..441078f5b9fac541c507b269042a6508040d5e02 GIT binary patch literal 3263 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 + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::HashMap< K, T, HashFunc > Member List
+
+
+ +

This is the complete list of members for nctl::HashMap< K, T, HashFunc >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
begin()nctl::HashMap< K, T, HashFunc >inline
begin() constnctl::HashMap< K, T, HashFunc >
capacity() constnctl::HashMap< K, T, HashFunc >inline
cBegin() constnctl::HashMap< K, T, HashFunc >inline
cEnd() constnctl::HashMap< K, T, HashFunc >inline
clear()nctl::HashMap< K, T, HashFunc >
ConstIterator typedefnctl::HashMap< K, T, HashFunc >
ConstReverseIterator typedefnctl::HashMap< K, T, HashFunc >
contains(const K &key, T &returnedValue) constnctl::HashMap< K, T, HashFunc >
crBegin() constnctl::HashMap< K, T, HashFunc >inline
crEnd() constnctl::HashMap< K, T, HashFunc >inline
emplace(const K &key, Args &&... args)nctl::HashMap< K, T, HashFunc >
end()nctl::HashMap< K, T, HashFunc >
end() constnctl::HashMap< K, T, HashFunc >
find(const K &key)nctl::HashMap< K, T, HashFunc >
find(const K &key) constnctl::HashMap< K, T, HashFunc >
hash(const K &key) constnctl::HashMap< K, T, HashFunc >inline
HashMap(unsigned int capacity) (defined in nctl::HashMap< K, T, HashFunc >)nctl::HashMap< K, T, HashFunc >explicit
HashMap(const HashMap &other)nctl::HashMap< K, T, HashFunc >
HashMap(HashMap &&other)nctl::HashMap< K, T, HashFunc >
HashMapHelperTraits< K, T, HashFunc, false > (defined in nctl::HashMap< K, T, HashFunc >)nctl::HashMap< K, T, HashFunc >friend
HashMapHelperTraits< K, T, HashFunc, true > (defined in nctl::HashMap< K, T, HashFunc >)nctl::HashMap< K, T, HashFunc >friend
HashMapIterator< K, T, HashFunc, false > (defined in nctl::HashMap< K, T, HashFunc >)nctl::HashMap< K, T, HashFunc >friend
HashMapIterator< K, T, HashFunc, true > (defined in nctl::HashMap< K, T, HashFunc >)nctl::HashMap< K, T, HashFunc >friend
insert(const K &key, const T &value)nctl::HashMap< K, T, HashFunc >
insert(const K &key, T &&value)nctl::HashMap< K, T, HashFunc >
isEmpty() constnctl::HashMap< K, T, HashFunc >inline
Iterator typedefnctl::HashMap< K, T, HashFunc >
loadFactor() constnctl::HashMap< K, T, HashFunc >inline
operator=(const HashMap &other)nctl::HashMap< K, T, HashFunc >
operator=(HashMap &&other)nctl::HashMap< K, T, HashFunc >
operator[](const K &key)nctl::HashMap< K, T, HashFunc >
rBegin()nctl::HashMap< K, T, HashFunc >
rBegin() constnctl::HashMap< K, T, HashFunc >
rehash(unsigned int count)nctl::HashMap< K, T, HashFunc >
remove(const K &key)nctl::HashMap< K, T, HashFunc >
rEnd()nctl::HashMap< K, T, HashFunc >
rEnd() constnctl::HashMap< K, T, HashFunc >
ReverseIterator typedefnctl::HashMap< K, T, HashFunc >
size() constnctl::HashMap< K, T, HashFunc >inline
swap(HashMap &first, HashMap &second)nctl::HashMap< K, T, HashFunc >inline
~HashMap() (defined in nctl::HashMap< K, T, HashFunc >)nctl::HashMap< K, T, HashFunc >
+ + + + diff --git a/master/classnctl_1_1_hash_map.html b/master/classnctl_1_1_hash_map.html new file mode 100644 index 0000000000..4b311d55b1 --- /dev/null +++ b/master/classnctl_1_1_hash_map.html @@ -0,0 +1,435 @@ + + + + + + + +nCine: nctl::HashMap< K, T, HashFunc > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::HashMap< K, T, HashFunc > Class Template Reference
+
+
+ +

A template based hashmap implementation with open addressing and leapfrog probing. + More...

+ +

#include <HashMap.h>

+ + + + + + + + + + + + + + +

+Public Types

+using Iterator = HashMapIterator< K, T, HashFunc, false >
 Iterator type.
 
+using ConstIterator = HashMapIterator< K, T, HashFunc, true >
 Constant iterator type.
 
+using ReverseIterator = nctl::ReverseIterator< Iterator >
 Reverse iterator type.
 
+using ConstReverseIterator = nctl::ReverseIterator< ConstIterator >
 Reverse constant iterator type.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

HashMap (unsigned int capacity)
 
HashMap (const HashMap &other)
 Copy constructor.
 
HashMap (HashMap &&other)
 Move constructor.
 
+HashMapoperator= (const HashMap &other)
 Assignment operator.
 
+HashMapoperator= (HashMap &&other)
 Move assignment operator.
 
+void swap (HashMap &first, HashMap &second)
 Swaps two hashmaps without copying their data.
 
+Iterator begin ()
 Returns an iterator to the first element.
 
+ReverseIterator rBegin ()
 Returns a reverse iterator to the last element.
 
+Iterator end ()
 Returns an iterator to past the last element.
 
+ReverseIterator rEnd ()
 Returns a reverse iterator to prior the first element.
 
+ConstIterator begin () const
 Returns a constant iterator to the first element.
 
+ConstReverseIterator rBegin () const
 Returns a constant reverse iterator to the last element.
 
+ConstIterator end () const
 Returns a constant iterator to past the last lement.
 
+ConstReverseIterator rEnd () const
 Returns a constant reverse iterator to prior the first element.
 
+ConstIterator cBegin () const
 Returns a constant iterator to the first element.
 
+ConstReverseIterator crBegin () const
 Returns a constant reverse iterator to the last element.
 
+ConstIterator cEnd () const
 Returns a constant iterator to past the last lement.
 
+ConstReverseIterator crEnd () const
 Returns a constant reverse iterator to prior the first element.
 
+T & operator[] (const K &key)
 Subscript operator.
 
bool insert (const K &key, const T &value)
 Inserts an element if no other has the same key. More...
 
bool insert (const K &key, T &&value)
 Moves an element if no other has the same key. More...
 
template<typename... Args>
bool emplace (const K &key, Args &&... args)
 Constructs an element if no other has the same key. More...
 
+unsigned int capacity () const
 Returns the capacity of the hashmap.
 
+bool isEmpty () const
 Returns true if the hashmap is empty.
 
+unsigned int size () const
 Returns the number of elements in the hashmap.
 
+float loadFactor () const
 Returns the ratio between used and total buckets.
 
+hash_t hash (const K &key) const
 Returns the hash of a given key.
 
+void clear ()
 Clears the hashmap.
 
+bool contains (const K &key, T &returnedValue) const
 Checks whether an element is in the hashmap or not.
 
T * find (const K &key)
 Checks whether an element is in the hashmap or not. More...
 
const T * find (const K &key) const
 Checks whether an element is in the hashmap or not (read-only) More...
 
bool remove (const K &key)
 Removes a key from the hashmap, if it exists. More...
 
+void rehash (unsigned int count)
 Sets the number of buckets to the new specified size and rehashes the container.
 
+ + + + + + + + + +

+Friends

+class HashMapIterator< K, T, HashFunc, false >
 
+class HashMapIterator< K, T, HashFunc, true >
 
+struct HashMapHelperTraits< K, T, HashFunc, false >
 
+struct HashMapHelperTraits< K, T, HashFunc, true >
 
+

Detailed Description

+

template<class K, class T, class HashFunc = FNV1aHashFunc<K>>
+class nctl::HashMap< K, T, HashFunc >

+ +

A template based hashmap implementation with open addressing and leapfrog probing.

+

Member Function Documentation

+ +

◆ emplace()

+ +
+
+
+template<class K , class T , class HashFunc >
+
+template<typename... Args>
+ + + + + + + + + + + + + + + + + + +
bool nctl::HashMap< K, T, HashFunc >::emplace (const K & key,
Args &&... args 
)
+
+ +

Constructs an element if no other has the same key.

+
Returns
True if the element has been emplaced
+ +
+
+ +

◆ find() [1/2]

+ +
+
+
+template<class K , class T , class HashFunc >
+ + + + + + + + +
T * nctl::HashMap< K, T, HashFunc >::find (const K & key)
+
+ +

Checks whether an element is in the hashmap or not.

+
Note
Prefer this method if copying T is expensive, but always check the validity of returned pointer.
+ +
+
+ +

◆ find() [2/2]

+ +
+
+
+template<class K , class T , class HashFunc >
+ + + + + + + + +
const T * nctl::HashMap< K, T, HashFunc >::find (const K & key) const
+
+ +

Checks whether an element is in the hashmap or not (read-only)

+
Note
Prefer this method if copying T is expensive, but always check the validity of returned pointer.
+ +
+
+ +

◆ insert() [1/2]

+ +
+
+
+template<class K , class T , class HashFunc >
+ + + + + + + + + + + + + + + + + + +
bool nctl::HashMap< K, T, HashFunc >::insert (const K & key,
const T & value 
)
+
+ +

Inserts an element if no other has the same key.

+
Returns
True if the element has been inserted
+ +
+
+ +

◆ insert() [2/2]

+ +
+
+
+template<class K , class T , class HashFunc >
+ + + + + + + + + + + + + + + + + + +
bool nctl::HashMap< K, T, HashFunc >::insert (const K & key,
T && value 
)
+
+ +

Moves an element if no other has the same key.

+
Returns
True if the element has been inserted
+ +
+
+ +

◆ remove()

+ +
+
+
+template<class K , class T , class HashFunc >
+ + + + + + + + +
bool nctl::HashMap< K, T, HashFunc >::remove (const K & key)
+
+ +

Removes a key from the hashmap, if it exists.

+
Returns
True if the element has been found and removed
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classnctl_1_1_hash_map_iterator-members.html b/master/classnctl_1_1_hash_map_iterator-members.html new file mode 100644 index 0000000000..5747d0109f --- /dev/null +++ b/master/classnctl_1_1_hash_map_iterator-members.html @@ -0,0 +1,101 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::HashMapIterator< K, T, HashFunc, IsConst > Member List
+
+
+ +

This is the complete list of members for nctl::HashMapIterator< K, T, HashFunc, IsConst >, including all inherited members.

+ + + + + + + + + + + + + + + + + + +
hash() constnctl::HashMapIterator< K, T, HashFunc, IsConst >
HashMapIterator(typename HashMapHelperTraits< K, T, HashFunc, IsConst >::HashMapPtr hashMap, unsigned int bucketIndex) (defined in nctl::HashMapIterator< K, T, HashFunc, IsConst >)nctl::HashMapIterator< K, T, HashFunc, IsConst >inline
HashMapIterator(typename HashMapHelperTraits< K, T, HashFunc, IsConst >::HashMapPtr hashMap, SentinelTagInit tag) (defined in nctl::HashMapIterator< K, T, HashFunc, IsConst >)nctl::HashMapIterator< K, T, HashFunc, IsConst >
HashMapIterator(const HashMapIterator< K, T, HashFunc, false > &it)nctl::HashMapIterator< K, T, HashFunc, IsConst >inline
HashMapIterator< K, T, HashFunc, true > classnctl::HashMapIterator< K, T, HashFunc, IsConst >friend
key() constnctl::HashMapIterator< K, T, HashFunc, IsConst >
node() constnctl::HashMapIterator< K, T, HashFunc, IsConst >
operator!=(const HashMapIterator &lhs, const HashMapIterator &rhs)nctl::HashMapIterator< K, T, HashFunc, IsConst >friend
operator*() constnctl::HashMapIterator< K, T, HashFunc, IsConst >
operator++()nctl::HashMapIterator< K, T, HashFunc, IsConst >
operator++(int)nctl::HashMapIterator< K, T, HashFunc, IsConst >
operator--()nctl::HashMapIterator< K, T, HashFunc, IsConst >
operator--(int)nctl::HashMapIterator< K, T, HashFunc, IsConst >
operator==(const HashMapIterator &lhs, const HashMapIterator &rhs)nctl::HashMapIterator< K, T, HashFunc, IsConst >friend
Reference typedefnctl::HashMapIterator< K, T, HashFunc, IsConst >
SentinelTagInit enum namenctl::HashMapIterator< K, T, HashFunc, IsConst >
value() constnctl::HashMapIterator< K, T, HashFunc, IsConst >
+ + + + diff --git a/master/classnctl_1_1_hash_map_iterator.html b/master/classnctl_1_1_hash_map_iterator.html new file mode 100644 index 0000000000..d24baa70bc --- /dev/null +++ b/master/classnctl_1_1_hash_map_iterator.html @@ -0,0 +1,210 @@ + + + + + + + +nCine: nctl::HashMapIterator< K, T, HashFunc, IsConst > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::HashMapIterator< K, T, HashFunc, IsConst > Class Template Reference
+
+
+ +

A hashmap iterator. + More...

+ +

#include <HashMapIterator.h>

+ + + + + + + + +

+Public Types

enum class  SentinelTagInit { BEGINNING +, END + }
 Sentinel tags to initialize the iterator at the beginning and end. More...
 
+using Reference = typename IteratorTraits< HashMapIterator >::Reference
 Reference type which respects iterator constness.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

HashMapIterator (typename HashMapHelperTraits< K, T, HashFunc, IsConst >::HashMapPtr hashMap, unsigned int bucketIndex)
 
HashMapIterator (typename HashMapHelperTraits< K, T, HashFunc, IsConst >::HashMapPtr hashMap, SentinelTagInit tag)
 
HashMapIterator (const HashMapIterator< K, T, HashFunc, false > &it)
 Copy constructor to implicitly convert a non constant iterator to a constant one.
 
+Reference operator* () const
 Deferencing operator.
 
+HashMapIteratoroperator++ ()
 Iterates to the next element (prefix)
 
+HashMapIterator operator++ (int)
 Iterates to the next element (postfix)
 
+HashMapIteratoroperator-- ()
 Iterates to the previous element (prefix)
 
+HashMapIterator operator-- (int)
 Iterates to the previous element (postfix)
 
+HashMapHelperTraits< K, T, HashFunc, IsConst >::NodeReference node () const
 Returns the hashmap node currently pointed by the iterator.
 
+const T & value () const
 Returns the value associated to the currently pointed node.
 
+const K & key () const
 Returns the key associated to the currently pointed node.
 
+hash_t hash () const
 Returns the hash associated to the currently pointed node.
 
+ + + + + + + + + + +

+Friends

+class HashMapIterator< K, T, HashFunc, true >
 For non constant to constant iterator implicit conversion.
 
+bool operator== (const HashMapIterator &lhs, const HashMapIterator &rhs)
 Equality operator.
 
+bool operator!= (const HashMapIterator &lhs, const HashMapIterator &rhs)
 Inequality operator.
 
+

Detailed Description

+

template<class K, class T, class HashFunc, bool IsConst>
+class nctl::HashMapIterator< K, T, HashFunc, IsConst >

+ +

A hashmap iterator.

+

Member Enumeration Documentation

+ +

◆ SentinelTagInit

+ +
+
+
+template<class K , class T , class HashFunc , bool IsConst>
+ + + + + +
+ + + + +
enum nctl::HashMapIterator::SentinelTagInit
+
+strong
+
+ +

Sentinel tags to initialize the iterator at the beginning and end.

+ + + +
Enumerator
BEGINNING 

Iterator at the beginning, next element is the first one.

+
END 

Iterator at the end, previous element is the last one.

+
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classnctl_1_1_hash_map_list-members.html b/master/classnctl_1_1_hash_map_list-members.html new file mode 100644 index 0000000000..317cbfc839 --- /dev/null +++ b/master/classnctl_1_1_hash_map_list-members.html @@ -0,0 +1,127 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::HashMapList< K, T, HashFunc > Member List
+
+
+ +

This is the complete list of members for nctl::HashMapList< K, T, HashFunc >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
begin()nctl::HashMapList< K, T, HashFunc >
begin() constnctl::HashMapList< K, T, HashFunc >
bucket(const K &key) constnctl::HashMapList< K, T, HashFunc >inline
bucketAmount() constnctl::HashMapList< K, T, HashFunc >inline
bucketSize(const K &key) constnctl::HashMapList< K, T, HashFunc >inline
cBegin() constnctl::HashMapList< K, T, HashFunc >inline
cEnd() constnctl::HashMapList< K, T, HashFunc >inline
clear()nctl::HashMapList< K, T, HashFunc >
ConstIterator typedefnctl::HashMapList< K, T, HashFunc >
ConstReverseIterator typedefnctl::HashMapList< K, T, HashFunc >
contains(const K &key, T &returnedValue) constnctl::HashMapList< K, T, HashFunc >
crBegin() constnctl::HashMapList< K, T, HashFunc >inline
crEnd() constnctl::HashMapList< K, T, HashFunc >inline
emplace(const K &key, Args &&... args)nctl::HashMapList< K, T, HashFunc >
end()nctl::HashMapList< K, T, HashFunc >
end() constnctl::HashMapList< K, T, HashFunc >
find(const K &key)nctl::HashMapList< K, T, HashFunc >
find(const K &key) constnctl::HashMapList< K, T, HashFunc >
hash(const K &key) constnctl::HashMapList< K, T, HashFunc >inline
HashMapList(unsigned int capacity) (defined in nctl::HashMapList< K, T, HashFunc >)nctl::HashMapList< K, T, HashFunc >explicit
HashMapList(const HashMapList &other)nctl::HashMapList< K, T, HashFunc >
HashMapList(HashMapList &&other)nctl::HashMapList< K, T, HashFunc >
HashMapListHelperTraits< K, T, HashFunc, false > (defined in nctl::HashMapList< K, T, HashFunc >)nctl::HashMapList< K, T, HashFunc >friend
HashMapListHelperTraits< K, T, HashFunc, true > (defined in nctl::HashMapList< K, T, HashFunc >)nctl::HashMapList< K, T, HashFunc >friend
HashMapListIterator< K, T, HashFunc, false > (defined in nctl::HashMapList< K, T, HashFunc >)nctl::HashMapList< K, T, HashFunc >friend
HashMapListIterator< K, T, HashFunc, true > (defined in nctl::HashMapList< K, T, HashFunc >)nctl::HashMapList< K, T, HashFunc >friend
insert(const K &key, const T &value)nctl::HashMapList< K, T, HashFunc >
insert(const K &key, T &&value)nctl::HashMapList< K, T, HashFunc >
isEmpty() constnctl::HashMapList< K, T, HashFunc >inline
Iterator typedefnctl::HashMapList< K, T, HashFunc >
loadFactor() constnctl::HashMapList< K, T, HashFunc >inline
operator=(const HashMapList &other)nctl::HashMapList< K, T, HashFunc >
operator=(HashMapList &&other)nctl::HashMapList< K, T, HashFunc >
operator[](const K &key)nctl::HashMapList< K, T, HashFunc >
rBegin()nctl::HashMapList< K, T, HashFunc >
rBegin() constnctl::HashMapList< K, T, HashFunc >
rehash(unsigned int count)nctl::HashMapList< K, T, HashFunc >
remove(const K &key)nctl::HashMapList< K, T, HashFunc >
rEnd()nctl::HashMapList< K, T, HashFunc >
rEnd() constnctl::HashMapList< K, T, HashFunc >
ReverseIterator typedefnctl::HashMapList< K, T, HashFunc >
size() constnctl::HashMapList< K, T, HashFunc >
~HashMapList() (defined in nctl::HashMapList< K, T, HashFunc >)nctl::HashMapList< K, T, HashFunc >inline
+ + + + diff --git a/master/classnctl_1_1_hash_map_list.html b/master/classnctl_1_1_hash_map_list.html new file mode 100644 index 0000000000..124f40316a --- /dev/null +++ b/master/classnctl_1_1_hash_map_list.html @@ -0,0 +1,417 @@ + + + + + + + +nCine: nctl::HashMapList< K, T, HashFunc > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::HashMapList< K, T, HashFunc > Class Template Reference
+
+
+ +

A template based hashmap implementation with separate chaining and list head cell. + More...

+ +

#include <HashMapList.h>

+ + + + + + + + + + + + + + +

+Public Types

+using Iterator = HashMapListIterator< K, T, HashFunc, false >
 Iterator type.
 
+using ConstIterator = HashMapListIterator< K, T, HashFunc, true >
 Constant iterator type.
 
+using ReverseIterator = nctl::ReverseIterator< Iterator >
 Reverse iterator type.
 
+using ConstReverseIterator = nctl::ReverseIterator< ConstIterator >
 Reverse constant iterator type.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

HashMapList (unsigned int capacity)
 
HashMapList (const HashMapList &other)
 Copy constructor.
 
HashMapList (HashMapList &&other)
 Move constructor.
 
+HashMapListoperator= (const HashMapList &other)
 Assignment operator.
 
+HashMapListoperator= (HashMapList &&other)
 Move assignment operator.
 
+Iterator begin ()
 Returns an iterator to the first element.
 
+ReverseIterator rBegin ()
 Returns a reverse iterator to the last element.
 
+Iterator end ()
 Returns an iterator to past the last element.
 
+ReverseIterator rEnd ()
 Returns a reverse iterator to prior the first element.
 
+ConstIterator begin () const
 Returns a constant iterator to the first element.
 
+ConstReverseIterator rBegin () const
 Returns a constant reverse iterator to the last element.
 
+ConstIterator end () const
 Returns a constant iterator to past the last lement.
 
+ConstReverseIterator rEnd () const
 Returns a constant reverse iterator to prior the first element.
 
+ConstIterator cBegin () const
 Returns a constant iterator to the first element.
 
+ConstReverseIterator crBegin () const
 Returns a constant reverse iterator to the last element.
 
+ConstIterator cEnd () const
 Returns a constant iterator to past the last lement.
 
+ConstReverseIterator crEnd () const
 Returns a constant reverse iterator to prior the first element.
 
+T & operator[] (const K &key)
 Subscript operator.
 
bool insert (const K &key, const T &value)
 Inserts an element if no other has the same key. More...
 
bool insert (const K &key, T &&value)
 Moves an element if no other has the same key. More...
 
template<typename... Args>
bool emplace (const K &key, Args &&... args)
 Constructs an element if no other has the same key. More...
 
+bool isEmpty () const
 Returns true if the hashmap is empty.
 
+unsigned int size () const
 Returns the number of elements in the hashmap.
 
+float loadFactor () const
 Returns the average number of elements per bucket,.
 
+unsigned int bucketAmount () const
 Returns the number of buckets.
 
+unsigned int bucketSize (const K &key) const
 Returns the size of the bucket for the hash generated by the specified key.
 
+unsigned int bucket (const K &key) const
 Returns the index of the bucket for the hash generated by the specified key.
 
+hash_t hash (const K &key) const
 Returns the hash of a given key.
 
+void clear ()
 Clears the hashmap.
 
+bool contains (const K &key, T &returnedValue) const
 Checks whether an element is in the hashmap or not.
 
T * find (const K &key)
 Checks whether an element is in the hashmap or not. More...
 
const T * find (const K &key) const
 Checks whether an element is in the hashmap or not (read-only) More...
 
+bool remove (const K &key)
 Removes a key from the hashmap, if it exists.
 
+void rehash (unsigned int count)
 Sets the number of buckets to the new specified size and rehashes the container.
 
+ + + + + + + + + +

+Friends

+class HashMapListIterator< K, T, HashFunc, false >
 
+class HashMapListIterator< K, T, HashFunc, true >
 
+struct HashMapListHelperTraits< K, T, HashFunc, false >
 
+struct HashMapListHelperTraits< K, T, HashFunc, true >
 
+

Detailed Description

+

template<class K, class T, class HashFunc = FNV1aHashFunc<K>>
+class nctl::HashMapList< K, T, HashFunc >

+ +

A template based hashmap implementation with separate chaining and list head cell.

+

Member Function Documentation

+ +

◆ emplace()

+ +
+
+
+template<class K , class T , class HashFunc >
+
+template<typename... Args>
+ + + + + + + + + + + + + + + + + + +
bool nctl::HashMapList< K, T, HashFunc >::emplace (const K & key,
Args &&... args 
)
+
+ +

Constructs an element if no other has the same key.

+
Returns
True if the element has been emplaced
+ +
+
+ +

◆ find() [1/2]

+ +
+
+
+template<class K , class T , class HashFunc >
+ + + + + + + + +
T * nctl::HashMapList< K, T, HashFunc >::find (const K & key)
+
+ +

Checks whether an element is in the hashmap or not.

+
Note
Prefer this method if copying T is expensive, but always check the validity of returned pointer.
+ +
+
+ +

◆ find() [2/2]

+ +
+
+
+template<class K , class T , class HashFunc >
+ + + + + + + + +
const T * nctl::HashMapList< K, T, HashFunc >::find (const K & key) const
+
+ +

Checks whether an element is in the hashmap or not (read-only)

+
Note
Prefer this method if copying T is expensive, but always check the validity of returned pointer.
+ +
+
+ +

◆ insert() [1/2]

+ +
+
+
+template<class K , class T , class HashFunc >
+ + + + + + + + + + + + + + + + + + +
bool nctl::HashMapList< K, T, HashFunc >::insert (const K & key,
const T & value 
)
+
+ +

Inserts an element if no other has the same key.

+
Returns
True if the element has been inserted
+ +
+
+ +

◆ insert() [2/2]

+ +
+
+
+template<class K , class T , class HashFunc >
+ + + + + + + + + + + + + + + + + + +
bool nctl::HashMapList< K, T, HashFunc >::insert (const K & key,
T && value 
)
+
+ +

Moves an element if no other has the same key.

+
Returns
True if the element has been inserted
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classnctl_1_1_hash_map_list_iterator-members.html b/master/classnctl_1_1_hash_map_list_iterator-members.html new file mode 100644 index 0000000000..717361246c --- /dev/null +++ b/master/classnctl_1_1_hash_map_list_iterator-members.html @@ -0,0 +1,101 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::HashMapListIterator< K, T, HashFunc, IsConst > Member List
+
+
+ +

This is the complete list of members for nctl::HashMapListIterator< K, T, HashFunc, IsConst >, including all inherited members.

+ + + + + + + + + + + + + + + + + + +
hash() constnctl::HashMapListIterator< K, T, HashFunc, IsConst >
HashMapListIterator(typename HashMapListHelperTraits< K, T, HashFunc, IsConst >::HashMapListPtr hashMap, unsigned int bucketIndex, typename HashMapListHelperTraits< K, T, HashFunc, IsConst >::ListIteratorType listIterator, bool atFirstNode) (defined in nctl::HashMapListIterator< K, T, HashFunc, IsConst >)nctl::HashMapListIterator< K, T, HashFunc, IsConst >inline
HashMapListIterator(typename HashMapListHelperTraits< K, T, HashFunc, IsConst >::HashMapListPtr hashMap, SentinelTagInit tag) (defined in nctl::HashMapListIterator< K, T, HashFunc, IsConst >)nctl::HashMapListIterator< K, T, HashFunc, IsConst >
HashMapListIterator(const HashMapListIterator< K, T, HashFunc, false > &it)nctl::HashMapListIterator< K, T, HashFunc, IsConst >inline
HashMapListIterator< K, T, HashFunc, true > classnctl::HashMapListIterator< K, T, HashFunc, IsConst >friend
key() constnctl::HashMapListIterator< K, T, HashFunc, IsConst >
node() constnctl::HashMapListIterator< K, T, HashFunc, IsConst >
operator!=(const HashMapListIterator &lhs, const HashMapListIterator &rhs)nctl::HashMapListIterator< K, T, HashFunc, IsConst >friend
operator*() constnctl::HashMapListIterator< K, T, HashFunc, IsConst >
operator++()nctl::HashMapListIterator< K, T, HashFunc, IsConst >
operator++(int)nctl::HashMapListIterator< K, T, HashFunc, IsConst >
operator--()nctl::HashMapListIterator< K, T, HashFunc, IsConst >
operator--(int)nctl::HashMapListIterator< K, T, HashFunc, IsConst >
operator==(const HashMapListIterator &lhs, const HashMapListIterator &rhs)nctl::HashMapListIterator< K, T, HashFunc, IsConst >friend
Reference typedefnctl::HashMapListIterator< K, T, HashFunc, IsConst >
SentinelTagInit enum namenctl::HashMapListIterator< K, T, HashFunc, IsConst >
value() constnctl::HashMapListIterator< K, T, HashFunc, IsConst >
+ + + + diff --git a/master/classnctl_1_1_hash_map_list_iterator.html b/master/classnctl_1_1_hash_map_list_iterator.html new file mode 100644 index 0000000000..2b922373a7 --- /dev/null +++ b/master/classnctl_1_1_hash_map_list_iterator.html @@ -0,0 +1,210 @@ + + + + + + + +nCine: nctl::HashMapListIterator< K, T, HashFunc, IsConst > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::HashMapListIterator< K, T, HashFunc, IsConst > Class Template Reference
+
+
+ +

A hashmap iterator. + More...

+ +

#include <HashMapListIterator.h>

+ + + + + + + + +

+Public Types

enum class  SentinelTagInit { BEGINNING +, END + }
 Sentinel tags to initialize the iterator at the beginning and end. More...
 
+using Reference = typename IteratorTraits< HashMapListIterator >::Reference
 Reference type which respects iterator constness.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

HashMapListIterator (typename HashMapListHelperTraits< K, T, HashFunc, IsConst >::HashMapListPtr hashMap, unsigned int bucketIndex, typename HashMapListHelperTraits< K, T, HashFunc, IsConst >::ListIteratorType listIterator, bool atFirstNode)
 
HashMapListIterator (typename HashMapListHelperTraits< K, T, HashFunc, IsConst >::HashMapListPtr hashMap, SentinelTagInit tag)
 
HashMapListIterator (const HashMapListIterator< K, T, HashFunc, false > &it)
 Copy constructor to implicitly convert a non constant iterator to a constant one.
 
+Reference operator* () const
 Deferencing operator.
 
+HashMapListIteratoroperator++ ()
 Iterates to the next element (prefix)
 
+HashMapListIterator operator++ (int)
 Iterates to the next element (postfix)
 
+HashMapListIteratoroperator-- ()
 Iterates to the previous element (prefix)
 
+HashMapListIterator operator-- (int)
 Iterates to the previous element (postfix)
 
+HashMapListHelperTraits< K, T, HashFunc, IsConst >::NodeReference node () const
 Returns the hashmap node currently pointed by the iterator.
 
+const T & value () const
 Returns the value associated to the currently pointed node.
 
+const K & key () const
 Returns the key associated to the currently pointed node.
 
+hash_t hash () const
 Returns the hash associated to the currently pointed node.
 
+ + + + + + + + + + +

+Friends

+class HashMapListIterator< K, T, HashFunc, true >
 For non constant to constant iterator implicit conversion.
 
+bool operator== (const HashMapListIterator &lhs, const HashMapListIterator &rhs)
 Equality operator.
 
+bool operator!= (const HashMapListIterator &lhs, const HashMapListIterator &rhs)
 Inequality operator.
 
+

Detailed Description

+

template<class K, class T, class HashFunc, bool IsConst>
+class nctl::HashMapListIterator< K, T, HashFunc, IsConst >

+ +

A hashmap iterator.

+

Member Enumeration Documentation

+ +

◆ SentinelTagInit

+ +
+
+
+template<class K , class T , class HashFunc , bool IsConst>
+ + + + + +
+ + + + +
enum nctl::HashMapListIterator::SentinelTagInit
+
+strong
+
+ +

Sentinel tags to initialize the iterator at the beginning and end.

+ + + +
Enumerator
BEGINNING 

Iterator at the beginning, next element is the first one.

+
END 

Iterator at the end, previous element is the last one.

+
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classnctl_1_1_hash_set-members.html b/master/classnctl_1_1_hash_set-members.html new file mode 100644 index 0000000000..d2899ec46e --- /dev/null +++ b/master/classnctl_1_1_hash_set-members.html @@ -0,0 +1,122 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::HashSet< K, HashFunc > Member List
+
+
+ +

This is the complete list of members for nctl::HashSet< K, HashFunc >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
begin()nctl::HashSet< K, HashFunc >inline
begin() constnctl::HashSet< K, HashFunc >
capacity() constnctl::HashSet< K, HashFunc >inline
cBegin() constnctl::HashSet< K, HashFunc >inline
cEnd() constnctl::HashSet< K, HashFunc >inline
clear()nctl::HashSet< K, HashFunc >
ConstIterator typedefnctl::HashSet< K, HashFunc >
ConstReverseIterator typedefnctl::HashSet< K, HashFunc >
contains(const K &key) constnctl::HashSet< K, HashFunc >
crBegin() constnctl::HashSet< K, HashFunc >inline
crEnd() constnctl::HashSet< K, HashFunc >inline
end()nctl::HashSet< K, HashFunc >
end() constnctl::HashSet< K, HashFunc >
find(const K &key)nctl::HashSet< K, HashFunc >
find(const K &key) constnctl::HashSet< K, HashFunc >
hash(const K &key) constnctl::HashSet< K, HashFunc >inline
HashSet(unsigned int capacity) (defined in nctl::HashSet< K, HashFunc >)nctl::HashSet< K, HashFunc >explicit
HashSet(const HashSet &other)nctl::HashSet< K, HashFunc >
HashSet(HashSet &&other)nctl::HashSet< K, HashFunc >
HashSetHelperTraits< K, HashFunc > (defined in nctl::HashSet< K, HashFunc >)nctl::HashSet< K, HashFunc >friend
HashSetIterator< K, HashFunc > (defined in nctl::HashSet< K, HashFunc >)nctl::HashSet< K, HashFunc >friend
insert(const K &key)nctl::HashSet< K, HashFunc >
insert(K &&key)nctl::HashSet< K, HashFunc >
isEmpty() constnctl::HashSet< K, HashFunc >inline
Iterator typedefnctl::HashSet< K, HashFunc >
loadFactor() constnctl::HashSet< K, HashFunc >inline
operator=(const HashSet &other)nctl::HashSet< K, HashFunc >
operator=(HashSet &&other)nctl::HashSet< K, HashFunc >
rBegin()nctl::HashSet< K, HashFunc >
rBegin() constnctl::HashSet< K, HashFunc >
rehash(unsigned int count)nctl::HashSet< K, HashFunc >
remove(const K &key)nctl::HashSet< K, HashFunc >
rEnd()nctl::HashSet< K, HashFunc >
rEnd() constnctl::HashSet< K, HashFunc >
ReverseIterator typedefnctl::HashSet< K, HashFunc >
size() constnctl::HashSet< K, HashFunc >inline
swap(HashSet &first, HashSet &second)nctl::HashSet< K, HashFunc >inline
~HashSet() (defined in nctl::HashSet< K, HashFunc >)nctl::HashSet< K, HashFunc >
+ + + + diff --git a/master/classnctl_1_1_hash_set.html b/master/classnctl_1_1_hash_set.html new file mode 100644 index 0000000000..d84db9b329 --- /dev/null +++ b/master/classnctl_1_1_hash_set.html @@ -0,0 +1,384 @@ + + + + + + + +nCine: nctl::HashSet< K, HashFunc > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::HashSet< K, HashFunc > Class Template Reference
+
+
+ +

A template based hashset implementation with open addressing and leapfrog probing. + More...

+ +

#include <HashSet.h>

+ + + + + + + + + + + + + + +

+Public Types

using Iterator = HashSetIterator< K, HashFunc >
 Iterator type. More...
 
+using ConstIterator = HashSetIterator< K, HashFunc >
 Constant iterator type.
 
+using ReverseIterator = nctl::ReverseIterator< Iterator >
 Reverse iterator type.
 
+using ConstReverseIterator = nctl::ReverseIterator< ConstIterator >
 Reverse constant iterator type.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

HashSet (unsigned int capacity)
 
HashSet (const HashSet &other)
 Copy constructor.
 
HashSet (HashSet &&other)
 Move constructor.
 
+HashSetoperator= (const HashSet &other)
 Assignment operator.
 
+HashSetoperator= (HashSet &&other)
 Move assignment operator.
 
+void swap (HashSet &first, HashSet &second)
 Swaps two hashsets without copying their data.
 
+ConstIterator begin ()
 Returns a constant iterator to the first element.
 
+ConstReverseIterator rBegin ()
 Returns a reverse constant iterator to the last element.
 
+ConstIterator end ()
 Returns a constant iterator to past the last element.
 
+ConstReverseIterator rEnd ()
 Returns a reverse constant iterator to prior the first element.
 
+ConstIterator begin () const
 Returns a constant iterator to the first element.
 
+ConstReverseIterator rBegin () const
 Returns a constant reverse iterator to the last element.
 
+ConstIterator end () const
 Returns a constant iterator to past the last lement.
 
+ConstReverseIterator rEnd () const
 Returns a constant reverse iterator to prior the first element.
 
+ConstIterator cBegin () const
 Returns a constant iterator to the first element.
 
+ConstReverseIterator crBegin () const
 Returns a constant reverse iterator to the last element.
 
+ConstIterator cEnd () const
 Returns a constant iterator to past the last lement.
 
+ConstReverseIterator crEnd () const
 Returns a constant reverse iterator to prior the first element.
 
bool insert (const K &key)
 Inserts an element if not already in. More...
 
bool insert (K &&key)
 Moves an element if not already in. More...
 
+unsigned int capacity () const
 Returns the capacity of the hashset.
 
+bool isEmpty () const
 Returns true if the hashset is empty.
 
+unsigned int size () const
 Returns the number of elements in the hashset.
 
+float loadFactor () const
 Returns the ratio between used and total buckets.
 
+hash_t hash (const K &key) const
 Returns the hash of a given key.
 
+void clear ()
 Clears the hashset.
 
+bool contains (const K &key) const
 Checks whether an element is in the hashset or not.
 
K * find (const K &key)
 Checks whether an element is in the hashset or not. More...
 
const K * find (const K &key) const
 Checks whether an element is in the hashset or not (read-only) More...
 
bool remove (const K &key)
 Removes a key from the hashset, if it exists. More...
 
+void rehash (unsigned int count)
 Sets the number of buckets to the new specified size and rehashes the container.
 
+ + + + + +

+Friends

+class HashSetIterator< K, HashFunc >
 
+struct HashSetHelperTraits< K, HashFunc >
 
+

Detailed Description

+

template<class K, class HashFunc = FNV1aHashFunc<K>>
+class nctl::HashSet< K, HashFunc >

+ +

A template based hashset implementation with open addressing and leapfrog probing.

+

Member Typedef Documentation

+ +

◆ Iterator

+ +
+
+
+template<class K , class HashFunc = FNV1aHashFunc<K>>
+ + + + +
using nctl::HashSet< K, HashFunc >::Iterator = HashSetIterator<K, HashFunc>
+
+ +

Iterator type.

+

Elements in the hashset can never be changed

+ +
+
+

Member Function Documentation

+ +

◆ find() [1/2]

+ +
+
+
+template<class K , class HashFunc >
+ + + + + + + + +
K * nctl::HashSet< K, HashFunc >::find (const K & key)
+
+ +

Checks whether an element is in the hashset or not.

+
Note
Prefer this method if copying K is expensive, but always check the validity of returned pointer.
+ +
+
+ +

◆ find() [2/2]

+ +
+
+
+template<class K , class HashFunc >
+ + + + + + + + +
const K * nctl::HashSet< K, HashFunc >::find (const K & key) const
+
+ +

Checks whether an element is in the hashset or not (read-only)

+
Note
Prefer this method if copying K is expensive, but always check the validity of returned pointer.
+ +
+
+ +

◆ insert() [1/2]

+ +
+
+
+template<class K , class HashFunc >
+ + + + + + + + +
bool nctl::HashSet< K, HashFunc >::insert (const K & key)
+
+ +

Inserts an element if not already in.

+
Returns
True if the element has been inserted
+ +
+
+ +

◆ insert() [2/2]

+ +
+
+
+template<class K , class HashFunc >
+ + + + + + + + +
bool nctl::HashSet< K, HashFunc >::insert (K && key)
+
+ +

Moves an element if not already in.

+
Returns
True if the element has been inserted
+ +
+
+ +

◆ remove()

+ +
+
+
+template<class K , class HashFunc >
+ + + + + + + + +
bool nctl::HashSet< K, HashFunc >::remove (const K & key)
+
+ +

Removes a key from the hashset, if it exists.

+
Returns
True if the element has been found and removed
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classnctl_1_1_hash_set_iterator-members.html b/master/classnctl_1_1_hash_set_iterator-members.html new file mode 100644 index 0000000000..8a26034eca --- /dev/null +++ b/master/classnctl_1_1_hash_set_iterator-members.html @@ -0,0 +1,97 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::HashSetIterator< K, HashFunc > Member List
+
+
+ +

This is the complete list of members for nctl::HashSetIterator< K, HashFunc >, including all inherited members.

+ + + + + + + + + + + + + + +
hash() constnctl::HashSetIterator< K, HashFunc >
HashSetIterator(typename HashSetHelperTraits< K, HashFunc >::HashSetPtr hashSet, unsigned int bucketIndex) (defined in nctl::HashSetIterator< K, HashFunc >)nctl::HashSetIterator< K, HashFunc >inline
HashSetIterator(typename HashSetHelperTraits< K, HashFunc >::HashSetPtr hashSet, SentinelTagInit tag) (defined in nctl::HashSetIterator< K, HashFunc >)nctl::HashSetIterator< K, HashFunc >
key() constnctl::HashSetIterator< K, HashFunc >
operator!=(const HashSetIterator &lhs, const HashSetIterator &rhs)nctl::HashSetIterator< K, HashFunc >friend
operator*() constnctl::HashSetIterator< K, HashFunc >
operator++()nctl::HashSetIterator< K, HashFunc >
operator++(int)nctl::HashSetIterator< K, HashFunc >
operator--()nctl::HashSetIterator< K, HashFunc >
operator--(int)nctl::HashSetIterator< K, HashFunc >
operator==(const HashSetIterator &lhs, const HashSetIterator &rhs)nctl::HashSetIterator< K, HashFunc >friend
Reference typedefnctl::HashSetIterator< K, HashFunc >
SentinelTagInit enum namenctl::HashSetIterator< K, HashFunc >
+ + + + diff --git a/master/classnctl_1_1_hash_set_iterator.html b/master/classnctl_1_1_hash_set_iterator.html new file mode 100644 index 0000000000..b497127f5e --- /dev/null +++ b/master/classnctl_1_1_hash_set_iterator.html @@ -0,0 +1,194 @@ + + + + + + + +nCine: nctl::HashSetIterator< K, HashFunc > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::HashSetIterator< K, HashFunc > Class Template Reference
+
+
+ +

A hashset iterator. + More...

+ +

#include <HashSetIterator.h>

+ + + + + + + + +

+Public Types

enum class  SentinelTagInit { BEGINNING +, END + }
 Sentinel tags to initialize the iterator at the beginning and end. More...
 
+using Reference = typename IteratorTraits< HashSetIterator >::Reference
 Reference type which respects iterator constness.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

HashSetIterator (typename HashSetHelperTraits< K, HashFunc >::HashSetPtr hashSet, unsigned int bucketIndex)
 
HashSetIterator (typename HashSetHelperTraits< K, HashFunc >::HashSetPtr hashSet, SentinelTagInit tag)
 
+Reference operator* () const
 Deferencing operator.
 
+HashSetIteratoroperator++ ()
 Iterates to the next element (prefix)
 
+HashSetIterator operator++ (int)
 Iterates to the next element (postfix)
 
+HashSetIteratoroperator-- ()
 Iterates to the previous element (prefix)
 
+HashSetIterator operator-- (int)
 Iterates to the previous element (postfix)
 
+const K & key () const
 Returns the key associated to the currently pointed element.
 
+hash_t hash () const
 Returns the hash associated to the currently pointed element.
 
+ + + + + + + +

+Friends

+bool operator== (const HashSetIterator &lhs, const HashSetIterator &rhs)
 Equality operator.
 
+bool operator!= (const HashSetIterator &lhs, const HashSetIterator &rhs)
 Inequality operator.
 
+

Detailed Description

+

template<class K, class HashFunc>
+class nctl::HashSetIterator< K, HashFunc >

+ +

A hashset iterator.

+

Member Enumeration Documentation

+ +

◆ SentinelTagInit

+ +
+
+
+template<class K , class HashFunc >
+ + + + + +
+ + + + +
enum nctl::HashSetIterator::SentinelTagInit
+
+strong
+
+ +

Sentinel tags to initialize the iterator at the beginning and end.

+ + + +
Enumerator
BEGINNING 

Iterator at the beginning, next element is the first one.

+
END 

Iterator at the end, previous element is the last one.

+
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classnctl_1_1_hash_set_list-members.html b/master/classnctl_1_1_hash_set_list-members.html new file mode 100644 index 0000000000..cf37212194 --- /dev/null +++ b/master/classnctl_1_1_hash_set_list-members.html @@ -0,0 +1,123 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::HashSetList< K, HashFunc > Member List
+
+
+ +

This is the complete list of members for nctl::HashSetList< K, HashFunc >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
begin()nctl::HashSetList< K, HashFunc >
begin() constnctl::HashSetList< K, HashFunc >
bucket(const K &key) constnctl::HashSetList< K, HashFunc >inline
bucketAmount() constnctl::HashSetList< K, HashFunc >inline
bucketSize(const K &key) constnctl::HashSetList< K, HashFunc >inline
cBegin() constnctl::HashSetList< K, HashFunc >inline
cEnd() constnctl::HashSetList< K, HashFunc >inline
clear()nctl::HashSetList< K, HashFunc >
ConstIterator typedefnctl::HashSetList< K, HashFunc >
ConstReverseIterator typedefnctl::HashSetList< K, HashFunc >
contains(const K &key) constnctl::HashSetList< K, HashFunc >
crBegin() constnctl::HashSetList< K, HashFunc >inline
crEnd() constnctl::HashSetList< K, HashFunc >inline
end()nctl::HashSetList< K, HashFunc >
end() constnctl::HashSetList< K, HashFunc >
find(const K &key)nctl::HashSetList< K, HashFunc >
find(const K &key) constnctl::HashSetList< K, HashFunc >
hash(const K &key) constnctl::HashSetList< K, HashFunc >inline
HashSetList(unsigned int capacity) (defined in nctl::HashSetList< K, HashFunc >)nctl::HashSetList< K, HashFunc >explicit
HashSetList(const HashSetList &other)nctl::HashSetList< K, HashFunc >
HashSetList(HashSetList &&other)nctl::HashSetList< K, HashFunc >
HashSetListHelperTraits< K, HashFunc > (defined in nctl::HashSetList< K, HashFunc >)nctl::HashSetList< K, HashFunc >friend
HashSetListIterator< K, HashFunc > (defined in nctl::HashSetList< K, HashFunc >)nctl::HashSetList< K, HashFunc >friend
insert(const K &key)nctl::HashSetList< K, HashFunc >
insert(K &&key)nctl::HashSetList< K, HashFunc >
isEmpty() constnctl::HashSetList< K, HashFunc >inline
Iterator typedefnctl::HashSetList< K, HashFunc >
loadFactor() constnctl::HashSetList< K, HashFunc >inline
operator=(const HashSetList &other)nctl::HashSetList< K, HashFunc >
operator=(HashSetList &&other)nctl::HashSetList< K, HashFunc >
rBegin()nctl::HashSetList< K, HashFunc >
rBegin() constnctl::HashSetList< K, HashFunc >
rehash(unsigned int count)nctl::HashSetList< K, HashFunc >
remove(const K &key)nctl::HashSetList< K, HashFunc >
rEnd()nctl::HashSetList< K, HashFunc >
rEnd() constnctl::HashSetList< K, HashFunc >
ReverseIterator typedefnctl::HashSetList< K, HashFunc >
size() constnctl::HashSetList< K, HashFunc >
~HashSetList() (defined in nctl::HashSetList< K, HashFunc >)nctl::HashSetList< K, HashFunc >inline
+ + + + diff --git a/master/classnctl_1_1_hash_set_list.html b/master/classnctl_1_1_hash_set_list.html new file mode 100644 index 0000000000..a7a6506b1d --- /dev/null +++ b/master/classnctl_1_1_hash_set_list.html @@ -0,0 +1,348 @@ + + + + + + + +nCine: nctl::HashSetList< K, HashFunc > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::HashSetList< K, HashFunc > Class Template Reference
+
+
+ +

A template based hashset implementation with separate chaining and list head cell. + More...

+ +

#include <HashSetList.h>

+ + + + + + + + + + + + + + +

+Public Types

+using Iterator = HashSetListIterator< K, HashFunc >
 Iterator type.
 
+using ConstIterator = HashSetListIterator< K, HashFunc >
 Constant iterator type.
 
+using ReverseIterator = nctl::ReverseIterator< Iterator >
 Reverse iterator type.
 
+using ConstReverseIterator = nctl::ReverseIterator< ConstIterator >
 Reverse constant iterator type.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

HashSetList (unsigned int capacity)
 
HashSetList (const HashSetList &other)
 Copy constructor.
 
HashSetList (HashSetList &&other)
 Move constructor.
 
+HashSetListoperator= (const HashSetList &other)
 Assignment operator.
 
+HashSetListoperator= (HashSetList &&other)
 Move assignment operator.
 
+Iterator begin ()
 Returns an iterator to the first element.
 
+ReverseIterator rBegin ()
 Returns a reverse iterator to the last element.
 
+Iterator end ()
 Returns an iterator to past the last element.
 
+ReverseIterator rEnd ()
 Returns a reverse iterator to prior the first element.
 
+ConstIterator begin () const
 Returns a constant iterator to the first element.
 
+ConstReverseIterator rBegin () const
 Returns a constant reverse iterator to the last element.
 
+ConstIterator end () const
 Returns a constant iterator to past the last lement.
 
+ConstReverseIterator rEnd () const
 Returns a constant reverse iterator to prior the first element.
 
+ConstIterator cBegin () const
 Returns a constant iterator to the first element.
 
+ConstReverseIterator crBegin () const
 Returns a constant reverse iterator to the last element.
 
+ConstIterator cEnd () const
 Returns a constant iterator to past the last lement.
 
+ConstReverseIterator crEnd () const
 Returns a constant reverse iterator to prior the first element.
 
bool insert (const K &key)
 Inserts an element if no other has the same key. More...
 
bool insert (K &&key)
 Moves an element if no other has the same key. More...
 
+bool isEmpty () const
 Returns true if the hashSet is empty.
 
+unsigned int size () const
 Returns the number of elements in the hashSet.
 
+float loadFactor () const
 Returns the average number of elements per bucket,.
 
+unsigned int bucketAmount () const
 Returns the number of buckets.
 
+unsigned int bucketSize (const K &key) const
 Returns the size of the bucket for the hash generated by the specified key.
 
+unsigned int bucket (const K &key) const
 Returns the index of the bucket for the hash generated by the specified key.
 
+hash_t hash (const K &key) const
 Returns the hash of a given key.
 
+void clear ()
 Clears the hashSet.
 
+bool contains (const K &key) const
 Checks whether an element is in the hashSet or not.
 
K * find (const K &key)
 Checks whether an element is in the hashSet or not. More...
 
const K * find (const K &key) const
 Checks whether an element is in the hashSet or not (read-only) More...
 
+bool remove (const K &key)
 Removes a key from the hashSet, if it exists.
 
+void rehash (unsigned int count)
 Sets the number of buckets to the new specified size and rehashes the container.
 
+ + + + + +

+Friends

+class HashSetListIterator< K, HashFunc >
 
+struct HashSetListHelperTraits< K, HashFunc >
 
+

Detailed Description

+

template<class K, class HashFunc = FNV1aHashFunc<K>>
+class nctl::HashSetList< K, HashFunc >

+ +

A template based hashset implementation with separate chaining and list head cell.

+

Member Function Documentation

+ +

◆ find() [1/2]

+ +
+
+
+template<class K , class HashFunc >
+ + + + + + + + +
K * nctl::HashSetList< K, HashFunc >::find (const K & key)
+
+ +

Checks whether an element is in the hashSet or not.

+
Note
Prefer this method if copying T is expensive, but always check the validity of returned pointer.
+ +
+
+ +

◆ find() [2/2]

+ +
+
+
+template<class K , class HashFunc >
+ + + + + + + + +
const K * nctl::HashSetList< K, HashFunc >::find (const K & key) const
+
+ +

Checks whether an element is in the hashSet or not (read-only)

+
Note
Prefer this method if copying T is expensive, but always check the validity of returned pointer.
+ +
+
+ +

◆ insert() [1/2]

+ +
+
+
+template<class K , class HashFunc >
+ + + + + + + + +
bool nctl::HashSetList< K, HashFunc >::insert (const K & key)
+
+ +

Inserts an element if no other has the same key.

+
Returns
True if the element has been inserted
+ +
+
+ +

◆ insert() [2/2]

+ +
+
+
+template<class K , class HashFunc >
+ + + + + + + + +
bool nctl::HashSetList< K, HashFunc >::insert (K && key)
+
+ +

Moves an element if no other has the same key.

+
Returns
True if the element has been inserted
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classnctl_1_1_hash_set_list_iterator-members.html b/master/classnctl_1_1_hash_set_list_iterator-members.html new file mode 100644 index 0000000000..0efbda70fb --- /dev/null +++ b/master/classnctl_1_1_hash_set_list_iterator-members.html @@ -0,0 +1,98 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::HashSetListIterator< K, HashFunc > Member List
+
+
+ +

This is the complete list of members for nctl::HashSetListIterator< K, HashFunc >, including all inherited members.

+ + + + + + + + + + + + + + + +
hash() constnctl::HashSetListIterator< K, HashFunc >
HashSetListIterator(typename HashSetListHelperTraits< K, HashFunc >::HashSetListPtr hashSet, unsigned int bucketIndex, typename HashSetListHelperTraits< K, HashFunc >::ListIteratorType listIterator, bool atFirstNode) (defined in nctl::HashSetListIterator< K, HashFunc >)nctl::HashSetListIterator< K, HashFunc >inline
HashSetListIterator(typename HashSetListHelperTraits< K, HashFunc >::HashSetListPtr hashSet, SentinelTagInit tag) (defined in nctl::HashSetListIterator< K, HashFunc >)nctl::HashSetListIterator< K, HashFunc >
key() constnctl::HashSetListIterator< K, HashFunc >
node() constnctl::HashSetListIterator< K, HashFunc >
operator!=(const HashSetListIterator &lhs, const HashSetListIterator &rhs)nctl::HashSetListIterator< K, HashFunc >friend
operator*() constnctl::HashSetListIterator< K, HashFunc >
operator++()nctl::HashSetListIterator< K, HashFunc >
operator++(int)nctl::HashSetListIterator< K, HashFunc >
operator--()nctl::HashSetListIterator< K, HashFunc >
operator--(int)nctl::HashSetListIterator< K, HashFunc >
operator==(const HashSetListIterator &lhs, const HashSetListIterator &rhs)nctl::HashSetListIterator< K, HashFunc >friend
Reference typedefnctl::HashSetListIterator< K, HashFunc >
SentinelTagInit enum namenctl::HashSetListIterator< K, HashFunc >
+ + + + diff --git a/master/classnctl_1_1_hash_set_list_iterator.html b/master/classnctl_1_1_hash_set_list_iterator.html new file mode 100644 index 0000000000..2a354b81db --- /dev/null +++ b/master/classnctl_1_1_hash_set_list_iterator.html @@ -0,0 +1,198 @@ + + + + + + + +nCine: nctl::HashSetListIterator< K, HashFunc > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::HashSetListIterator< K, HashFunc > Class Template Reference
+
+
+ +

A hashset iterator. + More...

+ +

#include <HashSetListIterator.h>

+ + + + + + + + +

+Public Types

enum class  SentinelTagInit { BEGINNING +, END + }
 Sentinel tags to initialize the iterator at the beginning and end. More...
 
+using Reference = typename IteratorTraits< HashSetListIterator >::Reference
 Reference type which respects iterator constness.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

HashSetListIterator (typename HashSetListHelperTraits< K, HashFunc >::HashSetListPtr hashSet, unsigned int bucketIndex, typename HashSetListHelperTraits< K, HashFunc >::ListIteratorType listIterator, bool atFirstNode)
 
HashSetListIterator (typename HashSetListHelperTraits< K, HashFunc >::HashSetListPtr hashSet, SentinelTagInit tag)
 
+Reference operator* () const
 Deferencing operator.
 
+HashSetListIteratoroperator++ ()
 Iterates to the next element (prefix)
 
+HashSetListIterator operator++ (int)
 Iterates to the next element (postfix)
 
+HashSetListIteratoroperator-- ()
 Iterates to the previous element (prefix)
 
+HashSetListIterator operator-- (int)
 Iterates to the previous element (postfix)
 
+HashSetListHelperTraits< K, HashFunc >::NodeReference node () const
 Returns the hashset node currently pointed by the iterator.
 
+const K & key () const
 Returns the key associated to the currently pointed node.
 
+hash_t hash () const
 Returns the hash associated to the currently pointed node.
 
+ + + + + + + +

+Friends

+bool operator== (const HashSetListIterator &lhs, const HashSetListIterator &rhs)
 Equality operator.
 
+bool operator!= (const HashSetListIterator &lhs, const HashSetListIterator &rhs)
 Inequality operator.
 
+

Detailed Description

+

template<class K, class HashFunc>
+class nctl::HashSetListIterator< K, HashFunc >

+ +

A hashset iterator.

+

Member Enumeration Documentation

+ +

◆ SentinelTagInit

+ +
+
+
+template<class K , class HashFunc >
+ + + + + +
+ + + + +
enum nctl::HashSetListIterator::SentinelTagInit
+
+strong
+
+ +

Sentinel tags to initialize the iterator at the beginning and end.

+ + + +
Enumerator
BEGINNING 

Iterator at the beginning, next element is the first one.

+
END 

Iterator at the end, previous element is the last one.

+
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classnctl_1_1_i_allocator-members.html b/master/classnctl_1_1_i_allocator-members.html new file mode 100644 index 0000000000..8e9be6c517 --- /dev/null +++ b/master/classnctl_1_1_i_allocator-members.html @@ -0,0 +1,118 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::IAllocator Member List
+
+
+ +

This is the complete list of members for nctl::IAllocator, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
allocate(size_t bytes, uint8_t alignment)nctl::IAllocatorinline
allocate(size_t bytes) (defined in nctl::IAllocator)nctl::IAllocatorinline
allocateFunc_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
AllocateFunction typedef (defined in nctl::IAllocator)nctl::IAllocator
base() constnctl::IAllocatorinline
base_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
copyOnReallocation() constnctl::IAllocatorinline
copyOnReallocation_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
deallocate(void *ptr)nctl::IAllocatorinline
deallocateFunc_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
DeallocateFunction typedef (defined in nctl::IAllocator)nctl::IAllocator
DefaultAlignmentnctl::IAllocatorstatic
deleteArray(T *ptr) (defined in nctl::IAllocator)nctl::IAllocator
deleteObject(T *ptr) (defined in nctl::IAllocator)nctl::IAllocator
freeMemory() constnctl::IAllocatorinline
IAllocator(const char *name, AllocateFunction allocFunc, ReallocateFunction reallocFunc, DeallocateFunction deallocFunc) (defined in nctl::IAllocator)nctl::IAllocatorinline
IAllocator(const char *name, AllocateFunction allocFunc, ReallocateFunction reallocFunc, DeallocateFunction deallocFunc, size_t size, void *base) (defined in nctl::IAllocator)nctl::IAllocator
MaxNameLengthnctl::IAllocatorstatic
name() constnctl::IAllocatorinline
name_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
newArray(size_t numElements) (defined in nctl::IAllocator)nctl::IAllocator
newObject(Args &&... args) (defined in nctl::IAllocator)nctl::IAllocator
numAllocations() constnctl::IAllocatorinline
numAllocations_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
ProxyAllocator (defined in nctl::IAllocator)nctl::IAllocatorfriend
reallocate(void *ptr, size_t bytes, uint8_t alignment)nctl::IAllocator
reallocate(void *ptr, size_t bytes) (defined in nctl::IAllocator)nctl::IAllocatorinline
reallocateFunc_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
ReallocateFunction typedef (defined in nctl::IAllocator)nctl::IAllocator
setCopyOnReallocation(bool value)nctl::IAllocatorinline
size() constnctl::IAllocatorinline
size_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
usedMemory() constnctl::IAllocatorinline
usedMemory_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
+ + + + diff --git a/master/classnctl_1_1_i_allocator.html b/master/classnctl_1_1_i_allocator.html new file mode 100644 index 0000000000..5ff171085f --- /dev/null +++ b/master/classnctl_1_1_i_allocator.html @@ -0,0 +1,333 @@ + + + + + + + +nCine: nctl::IAllocator Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

The allocator interface. + More...

+ +

#include <IAllocator.h>

+
+Inheritance diagram for nctl::IAllocator:
+
+
Inheritance graph
+ + + + + + + + + +
[legend]
+
+Collaboration diagram for nctl::IAllocator:
+
+
Collaboration graph
+ + + +
[legend]
+ + + + + + + + +

+Public Types

+using AllocateFunction = void *(*)(IAllocator *allocator, size_t, uint8_t)
 
+using ReallocateFunction = void *(*)(IAllocator *allocator, void *, size_t, uint8_t, size_t &)
 
+using DeallocateFunction = void(*)(IAllocator *allocator, void *)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

IAllocator (const char *name, AllocateFunction allocFunc, ReallocateFunction reallocFunc, DeallocateFunction deallocFunc)
 
IAllocator (const char *name, AllocateFunction allocFunc, ReallocateFunction reallocFunc, DeallocateFunction deallocFunc, size_t size, void *base)
 
+void * allocate (size_t bytes, uint8_t alignment)
 Tries to allocate the specified amount of memory with the specified alignment requirement.
 
+void * allocate (size_t bytes)
 
+void * reallocate (void *ptr, size_t bytes, uint8_t alignment)
 Tries to reallocate the allocation at the specified pointer with a different size.
 
+void * reallocate (void *ptr, size_t bytes)
 
+void deallocate (void *ptr)
 Deallocates the allocation at the specified pointer.
 
+const char * name () const
 Returns the name of the allocator.
 
+size_t size () const
 Returns the size of the buffer used for allocations.
 
+void * base () const
 Returns the address of the buffer used for allocations.
 
size_t usedMemory () const
 
size_t freeMemory () const
 
+size_t numAllocations () const
 Returns the number of active allocations.
 
+bool copyOnReallocation () const
 Returns the state of the copy on reallocation flag.
 
void setCopyOnReallocation (bool value)
 Sets the state of the copy on reallocation flag. More...
 
+template<class T , typename... Args>
T * newObject (Args &&... args)
 
+template<class T >
void deleteObject (T *ptr)
 
+template<class T >
T * newArray (size_t numElements)
 
+template<class T >
void deleteArray (T *ptr)
 
+ + + + + + + +

+Static Public Attributes

+static const uint8_t DefaultAlignment = 2 * sizeof(void *)
 16 bytes default alignment on 64bit and 8 bytes on 32bit
 
+static const unsigned int MaxNameLength = 64
 Maximum length for the allocator name string.
 
+ + + + + + + + + + + + + + + + + + + +

+Protected Attributes

+AllocateFunction allocateFunc_
 
+ReallocateFunction reallocateFunc_
 
+DeallocateFunction deallocateFunc_
 
+char name_ [MaxNameLength]
 
+size_t size_
 
+void * base_
 
+size_t usedMemory_
 
+size_t numAllocations_
 
+bool copyOnReallocation_
 
+ + + +

+Friends

+class ProxyAllocator
 
+

Detailed Description

+

The allocator interface.

+

Member Function Documentation

+ +

◆ freeMemory()

+ +
+
+ + + + + +
+ + + + + + + +
size_t nctl::IAllocator::freeMemory () const
+
+inline
+
+

Returns the amount of memory available in the buffer It can be less than the memory availble to allocations due to overhead or fragmentation *‍/

+ +
+
+ +

◆ setCopyOnReallocation()

+ +
+
+ + + + + +
+ + + + + + + + +
void nctl::IAllocator::setCopyOnReallocation (bool value)
+
+inline
+
+ +

Sets the state of the copy on reallocation flag.

+
Note
When the flag is true a growing reallocation might move the data in a new place
+ +
+
+ +

◆ usedMemory()

+ +
+
+ + + + + +
+ + + + + + + +
size_t nctl::IAllocator::usedMemory () const
+
+inline
+
+

Returns the amount of memory in use

Note
It can be more than the memory used by allocations due to overhead *‍/
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classnctl_1_1_i_allocator__coll__graph.map b/master/classnctl_1_1_i_allocator__coll__graph.map new file mode 100644 index 0000000000..100c2dba83 --- /dev/null +++ b/master/classnctl_1_1_i_allocator__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/master/classnctl_1_1_i_allocator__coll__graph.md5 b/master/classnctl_1_1_i_allocator__coll__graph.md5 new file mode 100644 index 0000000000..5b9044cc13 --- /dev/null +++ b/master/classnctl_1_1_i_allocator__coll__graph.md5 @@ -0,0 +1 @@ +3259b9493ea2c26661a939852526871b \ No newline at end of file diff --git a/master/classnctl_1_1_i_allocator__coll__graph.png b/master/classnctl_1_1_i_allocator__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..da7794b83e442ce1e290cdbfd80392af6c5cfc37 GIT binary patch literal 3818 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 literal 0 HcmV?d00001 diff --git a/master/classnctl_1_1_i_allocator__inherit__graph.map b/master/classnctl_1_1_i_allocator__inherit__graph.map new file mode 100644 index 0000000000..95cb17ba74 --- /dev/null +++ b/master/classnctl_1_1_i_allocator__inherit__graph.map @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/master/classnctl_1_1_i_allocator__inherit__graph.md5 b/master/classnctl_1_1_i_allocator__inherit__graph.md5 new file mode 100644 index 0000000000..28eb811f4c --- /dev/null +++ b/master/classnctl_1_1_i_allocator__inherit__graph.md5 @@ -0,0 +1 @@ +221d0bff00e8d685070aad5940fda713 \ No newline at end of file diff --git a/master/classnctl_1_1_i_allocator__inherit__graph.png b/master/classnctl_1_1_i_allocator__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..913b914c2e05ed32f5c54a15428b81ad4a3431e6 GIT binary patch literal 20037 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 literal 0 HcmV?d00001 diff --git a/master/classnctl_1_1_identity_hash_func-members.html b/master/classnctl_1_1_identity_hash_func-members.html new file mode 100644 index 0000000000..36fbab2fbf --- /dev/null +++ b/master/classnctl_1_1_identity_hash_func-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::IdentityHashFunc< K > Member List
+
+
+ +

This is the complete list of members for nctl::IdentityHashFunc< K >, including all inherited members.

+ + +
operator()(const K &key) const (defined in nctl::IdentityHashFunc< K >)nctl::IdentityHashFunc< K >inline
+ + + + diff --git a/master/classnctl_1_1_identity_hash_func.html b/master/classnctl_1_1_identity_hash_func.html new file mode 100644 index 0000000000..31521698d8 --- /dev/null +++ b/master/classnctl_1_1_identity_hash_func.html @@ -0,0 +1,105 @@ + + + + + + + +nCine: nctl::IdentityHashFunc< K > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::IdentityHashFunc< K > Class Template Reference
+
+
+ +

Hash function returning the key unchanged. + More...

+ +

#include <HashFunctions.h>

+ + + + +

+Public Member Functions

+hash_t operator() (const K &key) const
 
+

Detailed Description

+

template<class K>
+class nctl::IdentityHashFunc< K >

+ +

Hash function returning the key unchanged.

+

The key type should be convertible to hash_t.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classnctl_1_1_is_equal_to-members.html b/master/classnctl_1_1_is_equal_to-members.html new file mode 100644 index 0000000000..82697f28f8 --- /dev/null +++ b/master/classnctl_1_1_is_equal_to-members.html @@ -0,0 +1,86 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::IsEqualTo< T > Member List
+
+
+ +

This is the complete list of members for nctl::IsEqualTo< T >, including all inherited members.

+ + + +
IsEqualTo(T refValue) (defined in nctl::IsEqualTo< T >)nctl::IsEqualTo< T >inlineexplicit
operator()(T value) const (defined in nctl::IsEqualTo< T >)nctl::IsEqualTo< T >inline
+ + + + diff --git a/master/classnctl_1_1_is_equal_to.html b/master/classnctl_1_1_is_equal_to.html new file mode 100644 index 0000000000..6bd7807cd7 --- /dev/null +++ b/master/classnctl_1_1_is_equal_to.html @@ -0,0 +1,107 @@ + + + + + + + +nCine: nctl::IsEqualTo< T > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::IsEqualTo< T > Class Template Reference
+
+
+ +

A function object returning true if its argument is equal to a reference value sets upon object construction. + More...

+ +

#include <algorithms.h>

+ + + + + + +

+Public Member Functions

IsEqualTo (T refValue)
 
+bool operator() (T value) const
 
+

Detailed Description

+

template<class T>
+class nctl::IsEqualTo< T >

+ +

A function object returning true if its argument is equal to a reference value sets upon object construction.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classnctl_1_1_is_greater_than-members.html b/master/classnctl_1_1_is_greater_than-members.html new file mode 100644 index 0000000000..ad5983567e --- /dev/null +++ b/master/classnctl_1_1_is_greater_than-members.html @@ -0,0 +1,86 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::IsGreaterThan< T > Member List
+
+
+ +

This is the complete list of members for nctl::IsGreaterThan< T >, including all inherited members.

+ + + +
IsGreaterThan(T refValue) (defined in nctl::IsGreaterThan< T >)nctl::IsGreaterThan< T >inlineexplicit
operator()(T value) const (defined in nctl::IsGreaterThan< T >)nctl::IsGreaterThan< T >inline
+ + + + diff --git a/master/classnctl_1_1_is_greater_than.html b/master/classnctl_1_1_is_greater_than.html new file mode 100644 index 0000000000..2af9949896 --- /dev/null +++ b/master/classnctl_1_1_is_greater_than.html @@ -0,0 +1,107 @@ + + + + + + + +nCine: nctl::IsGreaterThan< T > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::IsGreaterThan< T > Class Template Reference
+
+
+ +

A function object returning true if its argument is greater than a reference value sets upon object construction. + More...

+ +

#include <algorithms.h>

+ + + + + + +

+Public Member Functions

IsGreaterThan (T refValue)
 
+bool operator() (T value) const
 
+

Detailed Description

+

template<class T>
+class nctl::IsGreaterThan< T >

+ +

A function object returning true if its argument is greater than a reference value sets upon object construction.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classnctl_1_1_is_less_than-members.html b/master/classnctl_1_1_is_less_than-members.html new file mode 100644 index 0000000000..a344611da9 --- /dev/null +++ b/master/classnctl_1_1_is_less_than-members.html @@ -0,0 +1,86 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::IsLessThan< T > Member List
+
+
+ +

This is the complete list of members for nctl::IsLessThan< T >, including all inherited members.

+ + + +
IsLessThan(T refValue) (defined in nctl::IsLessThan< T >)nctl::IsLessThan< T >inlineexplicit
operator()(T value) const (defined in nctl::IsLessThan< T >)nctl::IsLessThan< T >inline
+ + + + diff --git a/master/classnctl_1_1_is_less_than.html b/master/classnctl_1_1_is_less_than.html new file mode 100644 index 0000000000..419411b2df --- /dev/null +++ b/master/classnctl_1_1_is_less_than.html @@ -0,0 +1,107 @@ + + + + + + + +nCine: nctl::IsLessThan< T > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::IsLessThan< T > Class Template Reference
+
+
+ +

A function object returning true if its argument is less than a reference value sets upon object construction. + More...

+ +

#include <algorithms.h>

+ + + + + + +

+Public Member Functions

IsLessThan (T refValue)
 
+bool operator() (T value) const
 
+

Detailed Description

+

template<class T>
+class nctl::IsLessThan< T >

+ +

A function object returning true if its argument is less than a reference value sets upon object construction.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classnctl_1_1_is_not_equal_to-members.html b/master/classnctl_1_1_is_not_equal_to-members.html new file mode 100644 index 0000000000..14dd145a00 --- /dev/null +++ b/master/classnctl_1_1_is_not_equal_to-members.html @@ -0,0 +1,86 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::IsNotEqualTo< T > Member List
+
+
+ +

This is the complete list of members for nctl::IsNotEqualTo< T >, including all inherited members.

+ + + +
IsNotEqualTo(T refValue) (defined in nctl::IsNotEqualTo< T >)nctl::IsNotEqualTo< T >inlineexplicit
operator()(T value) const (defined in nctl::IsNotEqualTo< T >)nctl::IsNotEqualTo< T >inline
+ + + + diff --git a/master/classnctl_1_1_is_not_equal_to.html b/master/classnctl_1_1_is_not_equal_to.html new file mode 100644 index 0000000000..9eb72c3eaa --- /dev/null +++ b/master/classnctl_1_1_is_not_equal_to.html @@ -0,0 +1,107 @@ + + + + + + + +nCine: nctl::IsNotEqualTo< T > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::IsNotEqualTo< T > Class Template Reference
+
+
+ +

A function object returning true if its argument is not equal to a reference value sets upon object construction. + More...

+ +

#include <algorithms.h>

+ + + + + + +

+Public Member Functions

IsNotEqualTo (T refValue)
 
+bool operator() (T value) const
 
+

Detailed Description

+

template<class T>
+class nctl::IsNotEqualTo< T >

+ +

A function object returning true if its argument is not equal to a reference value sets upon object construction.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classnctl_1_1_is_not_greater_than-members.html b/master/classnctl_1_1_is_not_greater_than-members.html new file mode 100644 index 0000000000..b8789326fb --- /dev/null +++ b/master/classnctl_1_1_is_not_greater_than-members.html @@ -0,0 +1,86 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::IsNotGreaterThan< T > Member List
+
+
+ +

This is the complete list of members for nctl::IsNotGreaterThan< T >, including all inherited members.

+ + + +
IsNotGreaterThan(T refValue) (defined in nctl::IsNotGreaterThan< T >)nctl::IsNotGreaterThan< T >inlineexplicit
operator()(T value) const (defined in nctl::IsNotGreaterThan< T >)nctl::IsNotGreaterThan< T >inline
+ + + + diff --git a/master/classnctl_1_1_is_not_greater_than.html b/master/classnctl_1_1_is_not_greater_than.html new file mode 100644 index 0000000000..816b6f351a --- /dev/null +++ b/master/classnctl_1_1_is_not_greater_than.html @@ -0,0 +1,107 @@ + + + + + + + +nCine: nctl::IsNotGreaterThan< T > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::IsNotGreaterThan< T > Class Template Reference
+
+
+ +

A function object returning true if its argument is not greater than a reference value sets upon object construction. + More...

+ +

#include <algorithms.h>

+ + + + + + +

+Public Member Functions

IsNotGreaterThan (T refValue)
 
+bool operator() (T value) const
 
+

Detailed Description

+

template<class T>
+class nctl::IsNotGreaterThan< T >

+ +

A function object returning true if its argument is not greater than a reference value sets upon object construction.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classnctl_1_1_is_not_less_than-members.html b/master/classnctl_1_1_is_not_less_than-members.html new file mode 100644 index 0000000000..a6910dfb39 --- /dev/null +++ b/master/classnctl_1_1_is_not_less_than-members.html @@ -0,0 +1,86 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::IsNotLessThan< T > Member List
+
+
+ +

This is the complete list of members for nctl::IsNotLessThan< T >, including all inherited members.

+ + + +
IsNotLessThan(T refValue) (defined in nctl::IsNotLessThan< T >)nctl::IsNotLessThan< T >inlineexplicit
operator()(T value) const (defined in nctl::IsNotLessThan< T >)nctl::IsNotLessThan< T >inline
+ + + + diff --git a/master/classnctl_1_1_is_not_less_than.html b/master/classnctl_1_1_is_not_less_than.html new file mode 100644 index 0000000000..f74ddfa80a --- /dev/null +++ b/master/classnctl_1_1_is_not_less_than.html @@ -0,0 +1,107 @@ + + + + + + + +nCine: nctl::IsNotLessThan< T > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::IsNotLessThan< T > Class Template Reference
+
+
+ +

A function object returning true if its argument is not less than a reference value sets upon object construction. + More...

+ +

#include <algorithms.h>

+ + + + + + +

+Public Member Functions

IsNotLessThan (T refValue)
 
+bool operator() (T value) const
 
+

Detailed Description

+

template<class T>
+class nctl::IsNotLessThan< T >

+ +

A function object returning true if its argument is not less than a reference value sets upon object construction.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classnctl_1_1_jenkins_hash_func-members.html b/master/classnctl_1_1_jenkins_hash_func-members.html new file mode 100644 index 0000000000..c5ba021cad --- /dev/null +++ b/master/classnctl_1_1_jenkins_hash_func-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::JenkinsHashFunc< K > Member List
+
+
+ +

This is the complete list of members for nctl::JenkinsHashFunc< K >, including all inherited members.

+ + +
operator()(const K &key) const (defined in nctl::JenkinsHashFunc< K >)nctl::JenkinsHashFunc< K >inline
+ + + + diff --git a/master/classnctl_1_1_jenkins_hash_func.html b/master/classnctl_1_1_jenkins_hash_func.html new file mode 100644 index 0000000000..d4b7110f0e --- /dev/null +++ b/master/classnctl_1_1_jenkins_hash_func.html @@ -0,0 +1,105 @@ + + + + + + + +nCine: nctl::JenkinsHashFunc< K > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::JenkinsHashFunc< K > Class Template Reference
+
+
+ +

Jenkins hash function. + More...

+ +

#include <HashFunctions.h>

+ + + + +

+Public Member Functions

+hash_t operator() (const K &key) const
 
+

Detailed Description

+

template<class K>
+class nctl::JenkinsHashFunc< K >

+ +

Jenkins hash function.

+

For more information: http://en.wikipedia.org/wiki/Jenkins_hash_function

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classnctl_1_1_jenkins_hash_func_3_01_string_01_4-members.html b/master/classnctl_1_1_jenkins_hash_func_3_01_string_01_4-members.html new file mode 100644 index 0000000000..33250ccc4e --- /dev/null +++ b/master/classnctl_1_1_jenkins_hash_func_3_01_string_01_4-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::JenkinsHashFunc< String > Member List
+
+
+ +

This is the complete list of members for nctl::JenkinsHashFunc< String >, including all inherited members.

+ + +
operator()(const String &string) const (defined in nctl::JenkinsHashFunc< String >)nctl::JenkinsHashFunc< String >inline
+ + + + diff --git a/master/classnctl_1_1_jenkins_hash_func_3_01_string_01_4.html b/master/classnctl_1_1_jenkins_hash_func_3_01_string_01_4.html new file mode 100644 index 0000000000..16537542e2 --- /dev/null +++ b/master/classnctl_1_1_jenkins_hash_func_3_01_string_01_4.html @@ -0,0 +1,103 @@ + + + + + + + +nCine: nctl::JenkinsHashFunc< String > Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::JenkinsHashFunc< String > Class Reference
+
+
+ +

Jenkins hash function. + More...

+ +

#include <HashFunctions.h>

+ + + + +

+Public Member Functions

+hash_t operator() (const String &string) const
 
+

Detailed Description

+

Jenkins hash function.

+
Note
Specialized version of the function for String objects
+

For more information: http://en.wikipedia.org/wiki/Jenkins_hash_function

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classnctl_1_1_jenkins_hash_func_3_01const_01char_01_5_01_4-members.html b/master/classnctl_1_1_jenkins_hash_func_3_01const_01char_01_5_01_4-members.html new file mode 100644 index 0000000000..a89101d5bf --- /dev/null +++ b/master/classnctl_1_1_jenkins_hash_func_3_01const_01char_01_5_01_4-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::JenkinsHashFunc< const char * > Member List
+
+
+ +

This is the complete list of members for nctl::JenkinsHashFunc< const char * >, including all inherited members.

+ + +
operator()(const char *key) const (defined in nctl::JenkinsHashFunc< const char * >)nctl::JenkinsHashFunc< const char * >inline
+ + + + diff --git a/master/classnctl_1_1_jenkins_hash_func_3_01const_01char_01_5_01_4.html b/master/classnctl_1_1_jenkins_hash_func_3_01const_01char_01_5_01_4.html new file mode 100644 index 0000000000..0efdf0edd8 --- /dev/null +++ b/master/classnctl_1_1_jenkins_hash_func_3_01const_01char_01_5_01_4.html @@ -0,0 +1,103 @@ + + + + + + + +nCine: nctl::JenkinsHashFunc< const char * > Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::JenkinsHashFunc< const char * > Class Reference
+
+
+ +

Jenkins hash function. + More...

+ +

#include <HashFunctions.h>

+ + + + +

+Public Member Functions

+hash_t operator() (const char *key) const
 
+

Detailed Description

+

Jenkins hash function.

+
Note
Specialized version of the function for C-style strings
+

For more information: http://en.wikipedia.org/wiki/Jenkins_hash_function

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classnctl_1_1_linear_allocator-members.html b/master/classnctl_1_1_linear_allocator-members.html new file mode 100644 index 0000000000..37a0b1d5be --- /dev/null +++ b/master/classnctl_1_1_linear_allocator-members.html @@ -0,0 +1,125 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::LinearAllocator Member List
+
+
+ +

This is the complete list of members for nctl::LinearAllocator, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
allocate(size_t bytes, uint8_t alignment)nctl::IAllocatorinline
allocate(size_t bytes) (defined in nctl::IAllocator)nctl::IAllocatorinline
allocateFunc_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
AllocateFunction typedef (defined in nctl::IAllocator)nctl::IAllocator
base() constnctl::IAllocatorinline
base_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
clear()nctl::LinearAllocator
copyOnReallocation() constnctl::IAllocatorinline
copyOnReallocation_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
current() const (defined in nctl::LinearAllocator)nctl::LinearAllocatorinline
deallocate(void *ptr)nctl::IAllocatorinline
deallocateFunc_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
DeallocateFunction typedef (defined in nctl::IAllocator)nctl::IAllocator
DefaultAlignmentnctl::IAllocatorstatic
deleteArray(T *ptr) (defined in nctl::IAllocator)nctl::IAllocator
deleteObject(T *ptr) (defined in nctl::IAllocator)nctl::IAllocator
freeMemory() constnctl::IAllocatorinline
IAllocator(const char *name, AllocateFunction allocFunc, ReallocateFunction reallocFunc, DeallocateFunction deallocFunc) (defined in nctl::IAllocator)nctl::IAllocatorinline
IAllocator(const char *name, AllocateFunction allocFunc, ReallocateFunction reallocFunc, DeallocateFunction deallocFunc, size_t size, void *base) (defined in nctl::IAllocator)nctl::IAllocator
init(size_t size, void *base) (defined in nctl::LinearAllocator)nctl::LinearAllocator
LinearAllocator() (defined in nctl::LinearAllocator)nctl::LinearAllocatorinline
LinearAllocator(const char *name) (defined in nctl::LinearAllocator)nctl::LinearAllocatorexplicit
LinearAllocator(size_t size, void *base) (defined in nctl::LinearAllocator)nctl::LinearAllocatorinline
LinearAllocator(const char *name, size_t size, void *base) (defined in nctl::LinearAllocator)nctl::LinearAllocator
MaxNameLengthnctl::IAllocatorstatic
name() constnctl::IAllocatorinline
name_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
newArray(size_t numElements) (defined in nctl::IAllocator)nctl::IAllocator
newObject(Args &&... args) (defined in nctl::IAllocator)nctl::IAllocator
numAllocations() constnctl::IAllocatorinline
numAllocations_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
reallocate(void *ptr, size_t bytes, uint8_t alignment)nctl::IAllocator
reallocate(void *ptr, size_t bytes) (defined in nctl::IAllocator)nctl::IAllocatorinline
reallocateFunc_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
ReallocateFunction typedef (defined in nctl::IAllocator)nctl::IAllocator
setCopyOnReallocation(bool value)nctl::IAllocatorinline
size() constnctl::IAllocatorinline
size_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
usedMemory() constnctl::IAllocatorinline
usedMemory_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
~LinearAllocator() (defined in nctl::LinearAllocator)nctl::LinearAllocator
+ + + + diff --git a/master/classnctl_1_1_linear_allocator.html b/master/classnctl_1_1_linear_allocator.html new file mode 100644 index 0000000000..cb560a5711 --- /dev/null +++ b/master/classnctl_1_1_linear_allocator.html @@ -0,0 +1,254 @@ + + + + + + + +nCine: nctl::LinearAllocator Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::LinearAllocator Class Reference
+
+
+ +

A linear allocator. + More...

+ +

#include <LinearAllocator.h>

+
+Inheritance diagram for nctl::LinearAllocator:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for nctl::LinearAllocator:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

LinearAllocator (const char *name)
 
LinearAllocator (size_t size, void *base)
 
LinearAllocator (const char *name, size_t size, void *base)
 
+void init (size_t size, void *base)
 
+void clear ()
 Clears and loses all active allocations in costant time.
 
+const void * current () const
 
- Public Member Functions inherited from nctl::IAllocator
IAllocator (const char *name, AllocateFunction allocFunc, ReallocateFunction reallocFunc, DeallocateFunction deallocFunc)
 
IAllocator (const char *name, AllocateFunction allocFunc, ReallocateFunction reallocFunc, DeallocateFunction deallocFunc, size_t size, void *base)
 
+void * allocate (size_t bytes, uint8_t alignment)
 Tries to allocate the specified amount of memory with the specified alignment requirement.
 
+void * allocate (size_t bytes)
 
+void * reallocate (void *ptr, size_t bytes, uint8_t alignment)
 Tries to reallocate the allocation at the specified pointer with a different size.
 
+void * reallocate (void *ptr, size_t bytes)
 
+void deallocate (void *ptr)
 Deallocates the allocation at the specified pointer.
 
+const char * name () const
 Returns the name of the allocator.
 
+size_t size () const
 Returns the size of the buffer used for allocations.
 
+void * base () const
 Returns the address of the buffer used for allocations.
 
size_t usedMemory () const
 
size_t freeMemory () const
 
+size_t numAllocations () const
 Returns the number of active allocations.
 
+bool copyOnReallocation () const
 Returns the state of the copy on reallocation flag.
 
void setCopyOnReallocation (bool value)
 Sets the state of the copy on reallocation flag. More...
 
+template<class T , typename... Args>
T * newObject (Args &&... args)
 
+template<class T >
void deleteObject (T *ptr)
 
+template<class T >
T * newArray (size_t numElements)
 
+template<class T >
void deleteArray (T *ptr)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from nctl::IAllocator
+using AllocateFunction = void *(*)(IAllocator *allocator, size_t, uint8_t)
 
+using ReallocateFunction = void *(*)(IAllocator *allocator, void *, size_t, uint8_t, size_t &)
 
+using DeallocateFunction = void(*)(IAllocator *allocator, void *)
 
- Static Public Attributes inherited from nctl::IAllocator
+static const uint8_t DefaultAlignment = 2 * sizeof(void *)
 16 bytes default alignment on 64bit and 8 bytes on 32bit
 
+static const unsigned int MaxNameLength = 64
 Maximum length for the allocator name string.
 
- Protected Attributes inherited from nctl::IAllocator
+AllocateFunction allocateFunc_
 
+ReallocateFunction reallocateFunc_
 
+DeallocateFunction deallocateFunc_
 
+char name_ [MaxNameLength]
 
+size_t size_
 
+void * base_
 
+size_t usedMemory_
 
+size_t numAllocations_
 
+bool copyOnReallocation_
 
+

Detailed Description

+

A linear allocator.

+

The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classnctl_1_1_linear_allocator__coll__graph.map b/master/classnctl_1_1_linear_allocator__coll__graph.map new file mode 100644 index 0000000000..0f1dbabd05 --- /dev/null +++ b/master/classnctl_1_1_linear_allocator__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classnctl_1_1_linear_allocator__coll__graph.md5 b/master/classnctl_1_1_linear_allocator__coll__graph.md5 new file mode 100644 index 0000000000..4e7aec9c6c --- /dev/null +++ b/master/classnctl_1_1_linear_allocator__coll__graph.md5 @@ -0,0 +1 @@ +38f3784cbaea73bb7ac983228ba6fa64 \ No newline at end of file diff --git a/master/classnctl_1_1_linear_allocator__coll__graph.png b/master/classnctl_1_1_linear_allocator__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..83d3593ec36ba8a06ad48edaf29080e23f5f1d83 GIT binary patch literal 5484 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 + + + diff --git a/master/classnctl_1_1_linear_allocator__inherit__graph.md5 b/master/classnctl_1_1_linear_allocator__inherit__graph.md5 new file mode 100644 index 0000000000..d2f58d82bc --- /dev/null +++ b/master/classnctl_1_1_linear_allocator__inherit__graph.md5 @@ -0,0 +1 @@ +32fc69114cadf3a8cebb55a54e0e5023 \ No newline at end of file diff --git a/master/classnctl_1_1_linear_allocator__inherit__graph.png b/master/classnctl_1_1_linear_allocator__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..48fa4deac93276db0b6a02a0a677b7f0f03d299a GIT binary patch literal 3360 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 YJEBRPsu!r>mxo11Q(vR-rtOP=0&h#3$^ZZW literal 0 HcmV?d00001 diff --git a/master/classnctl_1_1_list-members.html b/master/classnctl_1_1_list-members.html new file mode 100644 index 0000000000..b251858764 --- /dev/null +++ b/master/classnctl_1_1_list-members.html @@ -0,0 +1,136 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::List< T > Member List
+
+
+ +

This is the complete list of members for nctl::List< T >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
back() constnctl::List< T >
back()nctl::List< T >
begin()nctl::List< T >inline
begin() constnctl::List< T >inline
cBegin() constnctl::List< T >inline
cEnd() constnctl::List< T >inline
clear()nctl::List< T >
ConstIterator typedefnctl::List< T >
ConstReverseIterator typedefnctl::List< T >
crBegin() constnctl::List< T >inline
crEnd() constnctl::List< T >inline
emplaceAfter(const Iterator position, Args &&... args)nctl::List< T >
emplaceBack(Args &&... args)nctl::List< T >inline
emplaceBefore(const Iterator position, Args &&... args)nctl::List< T >
emplaceFront(Args &&... args)nctl::List< T >inline
end()nctl::List< T >inline
end() constnctl::List< T >inline
erase(ConstIterator position)nctl::List< T >
erase(ConstIterator first, const ConstIterator last)nctl::List< T >
front() constnctl::List< T >
front()nctl::List< T >
insert(const Iterator position, Iterator first, const Iterator last)nctl::List< T >
insertAfter(const Iterator position, const T &element)nctl::List< T >
insertAfter(const Iterator position, T &&element)nctl::List< T >
insertBefore(const Iterator position, const T &element)nctl::List< T >
insertBefore(const Iterator position, T &&element)nctl::List< T >
isEmpty() constnctl::List< T >inline
Iterator typedefnctl::List< T >
List() (defined in nctl::List< T >)nctl::List< T >inline
List(const List &other)nctl::List< T >
List(List &&other)nctl::List< T >
operator=(const List &other)nctl::List< T >
operator=(List &&other)nctl::List< T >
popBack()nctl::List< T >inline
popFront()nctl::List< T >inline
pushBack(const T &element)nctl::List< T >inline
pushBack(T &&element)nctl::List< T >inline
pushFront(const T &element)nctl::List< T >inline
pushFront(T &&element)nctl::List< T >inline
rBegin()nctl::List< T >inline
rBegin() constnctl::List< T >inline
remove(const T &element)nctl::List< T >
removeIf(Predicate pred)nctl::List< T >
rEnd()nctl::List< T >inline
rEnd() constnctl::List< T >inline
ReverseIterator typedefnctl::List< T >
size() constnctl::List< T >inline
splice(Iterator position, List &source)nctl::List< T >
splice(Iterator position, List &source, Iterator it)nctl::List< T >
splice(Iterator position, List &source, Iterator first, Iterator last)nctl::List< T >
swap(List &first, List &second)nctl::List< T >inline
~List() (defined in nctl::List< T >)nctl::List< T >inline
+ + + + diff --git a/master/classnctl_1_1_list.html b/master/classnctl_1_1_list.html new file mode 100644 index 0000000000..2eedfdc136 --- /dev/null +++ b/master/classnctl_1_1_list.html @@ -0,0 +1,365 @@ + + + + + + + +nCine: nctl::List< T > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::List< T > Class Template Reference
+
+
+ +

A double linked list based on templates. + More...

+ +

#include <List.h>

+ + + + + + + + + + + + + + +

+Public Types

+using Iterator = ListIterator< T, false >
 Iterator type.
 
+using ConstIterator = ListIterator< T, true >
 Constant iterator type.
 
+using ReverseIterator = nctl::ReverseIterator< Iterator >
 Reverse iterator type.
 
+using ConstReverseIterator = nctl::ReverseIterator< ConstIterator >
 Reverse constant iterator type.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

List (const List &other)
 Copy constructor.
 
List (List &&other)
 Move constructor.
 
+Listoperator= (const List &other)
 Assignment operator.
 
+Listoperator= (List &&other)
 Move assignment operator.
 
+void swap (List &first, List &second)
 Swaps two lists without copying their data.
 
+Iterator begin ()
 Returns an iterator to the first element.
 
+ReverseIterator rBegin ()
 Returns a reverse iterator to the last element.
 
+Iterator end ()
 Returns an iterator to the end of the list sentinel (valid for reverse traversal too)
 
+ReverseIterator rEnd ()
 Returns a reverse iterator to the end of the list sentinel.
 
+ConstIterator begin () const
 Returns a constant iterator to the first element.
 
+ConstReverseIterator rBegin () const
 Returns a constant reverse iterator to the last element.
 
+ConstIterator end () const
 Returns a constant iterator to the end of the list sentinel (valid reverse traversal too)
 
+ConstReverseIterator rEnd () const
 Returns a constant reverse iterator to the end of the list sentinel.
 
+ConstIterator cBegin () const
 Returns a constant iterator to the first element.
 
+ConstReverseIterator crBegin () const
 Returns a constant reverse iterator to the last element.
 
+ConstIterator cEnd () const
 Returns a constant iterator to the end of the list sentinel (valid reverse traversal too)
 
+ConstReverseIterator crEnd () const
 Returns a constant reverse iterator to the end of the list sentinel.
 
+bool isEmpty () const
 Returns true if the list is empty.
 
+unsigned int size () const
 Returns the number of elements in the list.
 
+void clear ()
 Clears the list.
 
+const T & front () const
 Returns a constant reference to the first element in constant time.
 
+T & front ()
 Returns a reference to the first element in constant time.
 
+const T & back () const
 Returns a constant reference to the last element in constant time.
 
+T & back ()
 Returns a reference to the last element in constant time.
 
+void pushFront (const T &element)
 Inserts a new element as the first, in constant time.
 
+void pushFront (T &&element)
 Move inserts a new element as the first, in constant time.
 
+template<typename... Args>
void emplaceFront (Args &&... args)
 Constructs a new element as the first, in constant time.
 
+void pushBack (const T &element)
 Inserts a new element as the last, in constant time.
 
+void pushBack (T &&element)
 Move inserts a new element as the last, in constant time.
 
+template<typename... Args>
void emplaceBack (Args &&... args)
 Constructs a new element as the last, in constant time.
 
+void popFront ()
 Removes the first element in constant time.
 
+void popBack ()
 Removes the last element in constant time.
 
+ConstIterator insertAfter (const Iterator position, const T &element)
 Inserts a new element after the node pointed by the constant iterator.
 
+ConstIterator insertAfter (const Iterator position, T &&element)
 Move inserts a new element after the node pointed by the constant iterator.
 
+template<typename... Args>
ConstIterator emplaceAfter (const Iterator position, Args &&... args)
 Constructs a new element after the node pointed by the constant iterator.
 
+ConstIterator insertBefore (const Iterator position, const T &element)
 Inserts a new element before the node pointed by the constant iterator.
 
+ConstIterator insertBefore (const Iterator position, T &&element)
 Move inserts a new element before the node pointed by the constant iterator.
 
+template<typename... Args>
ConstIterator emplaceBefore (const Iterator position, Args &&... args)
 Constructs a new element before the node pointed by the constant iterator.
 
+ConstIterator insert (const Iterator position, Iterator first, const Iterator last)
 Inserts new elements from a source range after the node pointed by the constant iterator, last not included.
 
ConstIterator erase (ConstIterator position)
 Removes the node pointed by the constant iterator in constant time. More...
 
ConstIterator erase (ConstIterator first, const ConstIterator last)
 Removes the range of nodes pointed by the iterators in constant time. More...
 
+void remove (const T &element)
 Removes a specified element in linear time.
 
+template<class Predicate >
void removeIf (Predicate pred)
 Removes all the elements that fulfill the condition.
 
+void splice (Iterator position, List &source)
 Transfers all the elements from the source list in front of position
 
+void splice (Iterator position, List &source, Iterator it)
 Transfers one element at it from the source list in front of position
 
+void splice (Iterator position, List &source, Iterator first, Iterator last)
 Transfers a range of elements from the source list, last not included, in front of position
 
+

Detailed Description

+

template<class T>
+class nctl::List< T >

+ +

A double linked list based on templates.

+

Member Function Documentation

+ +

◆ erase() [1/2]

+ +
+
+
+template<class T >
+ + + + + + + + + + + + + + + + + + +
List< T >::ConstIterator nctl::List< T >::erase (ConstIterator first,
const ConstIterator last 
)
+
+ +

Removes the range of nodes pointed by the iterators in constant time.

+
Note
The first iterator cannot be used after on.
+ +
+
+ +

◆ erase() [2/2]

+ +
+
+
+template<class T >
+ + + + + + + + +
List< T >::ConstIterator nctl::List< T >::erase (ConstIterator position)
+
+ +

Removes the node pointed by the constant iterator in constant time.

+
Note
The iterator cannot be used after on.
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classnctl_1_1_list_iterator-members.html b/master/classnctl_1_1_list_iterator-members.html new file mode 100644 index 0000000000..3dce322371 --- /dev/null +++ b/master/classnctl_1_1_list_iterator-members.html @@ -0,0 +1,96 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::ListIterator< T, IsConst > Member List
+
+
+ +

This is the complete list of members for nctl::ListIterator< T, IsConst >, including all inherited members.

+ + + + + + + + + + + + + +
List< T > (defined in nctl::ListIterator< T, IsConst >)nctl::ListIterator< T, IsConst >friend
ListIterator(ListNode< T > *node) (defined in nctl::ListIterator< T, IsConst >)nctl::ListIterator< T, IsConst >inlineexplicit
ListIterator(const ListIterator< T, false > &it)nctl::ListIterator< T, IsConst >inline
ListIterator< T, true > classnctl::ListIterator< T, IsConst >friend
operator!=(const ListIterator &lhs, const ListIterator &rhs)nctl::ListIterator< T, IsConst >friend
operator*() constnctl::ListIterator< T, IsConst >inline
operator++()nctl::ListIterator< T, IsConst >
operator++(int)nctl::ListIterator< T, IsConst >
operator--()nctl::ListIterator< T, IsConst >
operator--(int)nctl::ListIterator< T, IsConst >
operator==(const ListIterator &lhs, const ListIterator &rhs)nctl::ListIterator< T, IsConst >friend
Reference typedefnctl::ListIterator< T, IsConst >
+ + + + diff --git a/master/classnctl_1_1_list_iterator.html b/master/classnctl_1_1_list_iterator.html new file mode 100644 index 0000000000..9b182f2e4c --- /dev/null +++ b/master/classnctl_1_1_list_iterator.html @@ -0,0 +1,155 @@ + + + + + + + +nCine: nctl::ListIterator< T, IsConst > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::ListIterator< T, IsConst > Class Template Reference
+
+
+ +

A List iterator. + More...

+ +

#include <ListIterator.h>

+ + + + + +

+Public Types

+using Reference = typename IteratorTraits< ListIterator >::Reference
 Reference type which respects iterator constness.
 
+ + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

ListIterator (ListNode< T > *node)
 
ListIterator (const ListIterator< T, false > &it)
 Copy constructor to implicitly convert a non constant iterator to a constant one.
 
+Reference operator* () const
 Deferencing operator.
 
+ListIteratoroperator++ ()
 Iterates to the next element (prefix)
 
+ListIterator operator++ (int)
 Iterates to the next element (postfix)
 
+ListIteratoroperator-- ()
 Iterates to the previous element (prefix)
 
+ListIterator operator-- (int)
 Iterates to the previous element (postfix)
 
+ + + + + + + + + + + + +

+Friends

+class List< T >
 
+class ListIterator< T, true >
 For non constant to constant iterator implicit conversion.
 
+bool operator== (const ListIterator &lhs, const ListIterator &rhs)
 Equality operator.
 
+bool operator!= (const ListIterator &lhs, const ListIterator &rhs)
 Inequality operator.
 
+

Detailed Description

+

template<class T, bool IsConst>
+class nctl::ListIterator< T, IsConst >

+ +

A List iterator.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classnctl_1_1_list_node-members.html b/master/classnctl_1_1_list_node-members.html new file mode 100644 index 0000000000..bf9dd10f87 --- /dev/null +++ b/master/classnctl_1_1_list_node-members.html @@ -0,0 +1,90 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::ListNode< T > Member List
+
+
+ +

This is the complete list of members for nctl::ListNode< T >, including all inherited members.

+ + + + + + + +
BaseListNode() (defined in nctl::BaseListNode)nctl::BaseListNodeinlineprotected
BaseListNode(BaseListNode *previous, BaseListNode *next) (defined in nctl::BaseListNode)nctl::BaseListNodeinlineprotected
data_nctl::ListNode< T >
List< T > (defined in nctl::ListNode< T >)nctl::ListNode< T >friend
next_nctl::BaseListNode
previous_nctl::BaseListNode
+ + + + diff --git a/master/classnctl_1_1_list_node.html b/master/classnctl_1_1_list_node.html new file mode 100644 index 0000000000..a617b6d0e8 --- /dev/null +++ b/master/classnctl_1_1_list_node.html @@ -0,0 +1,146 @@ + + + + + + + +nCine: nctl::ListNode< T > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::ListNode< T > Class Template Reference
+
+
+ +

A list node based on templates. + More...

+ +

#include <List.h>

+
+Inheritance diagram for nctl::ListNode< T >:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for nctl::ListNode< T >:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + +

+Public Attributes

+T data_
 Data payload for the node.
 
- Public Attributes inherited from nctl::BaseListNode
+BaseListNodeprevious_
 A pointer to the previous node in the list.
 
+BaseListNodenext_
 A pointer to the next node in the list.
 
+ + + +

+Friends

+class List< T >
 
+ + + + +

+Additional Inherited Members

- Protected Member Functions inherited from nctl::BaseListNode
BaseListNode (BaseListNode *previous, BaseListNode *next)
 
+

Detailed Description

+

template<class T>
+class nctl::ListNode< T >

+ +

A list node based on templates.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classnctl_1_1_list_node__coll__graph.map b/master/classnctl_1_1_list_node__coll__graph.map new file mode 100644 index 0000000000..6b523ebbef --- /dev/null +++ b/master/classnctl_1_1_list_node__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classnctl_1_1_list_node__coll__graph.md5 b/master/classnctl_1_1_list_node__coll__graph.md5 new file mode 100644 index 0000000000..097e1cd135 --- /dev/null +++ b/master/classnctl_1_1_list_node__coll__graph.md5 @@ -0,0 +1 @@ +0f9aaca2e1335617e9e30ef8e97e399e \ No newline at end of file diff --git a/master/classnctl_1_1_list_node__coll__graph.png b/master/classnctl_1_1_list_node__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..dbc4555a0bd187fc2954934093ae60a51f65d9a5 GIT binary patch literal 5965 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 literal 0 HcmV?d00001 diff --git a/master/classnctl_1_1_list_node__inherit__graph.map b/master/classnctl_1_1_list_node__inherit__graph.map new file mode 100644 index 0000000000..c9084c54a3 --- /dev/null +++ b/master/classnctl_1_1_list_node__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classnctl_1_1_list_node__inherit__graph.md5 b/master/classnctl_1_1_list_node__inherit__graph.md5 new file mode 100644 index 0000000000..ca6b00695a --- /dev/null +++ b/master/classnctl_1_1_list_node__inherit__graph.md5 @@ -0,0 +1 @@ +3ecbb38a714a5596b219e9e824a633c2 \ No newline at end of file diff --git a/master/classnctl_1_1_list_node__inherit__graph.png b/master/classnctl_1_1_list_node__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..a3162ff4292d984c411734339f25f78a16c57d0b GIT binary patch literal 3758 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 ZW + + + + + + +nCine: Member List + + + + + + + + + + +
+
+
nctl::MallocAllocator Member List
+
+
+ +

This is the complete list of members for nctl::MallocAllocator, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
allocate(size_t bytes, uint8_t alignment)nctl::IAllocatorinline
allocate(size_t bytes) (defined in nctl::IAllocator)nctl::IAllocatorinline
allocateFunc_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
AllocateFunction typedef (defined in nctl::IAllocator)nctl::IAllocator
base() constnctl::IAllocatorinline
base_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
copyOnReallocation() constnctl::IAllocatorinline
copyOnReallocation_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
deallocate(void *ptr)nctl::IAllocatorinline
deallocateFunc_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
DeallocateFunction typedef (defined in nctl::IAllocator)nctl::IAllocator
DefaultAlignmentnctl::IAllocatorstatic
deleteArray(T *ptr) (defined in nctl::IAllocator)nctl::IAllocator
deleteObject(T *ptr) (defined in nctl::IAllocator)nctl::IAllocator
freeMemory() constnctl::IAllocatorinline
IAllocator(const char *name, AllocateFunction allocFunc, ReallocateFunction reallocFunc, DeallocateFunction deallocFunc) (defined in nctl::IAllocator)nctl::IAllocatorinline
IAllocator(const char *name, AllocateFunction allocFunc, ReallocateFunction reallocFunc, DeallocateFunction deallocFunc, size_t size, void *base) (defined in nctl::IAllocator)nctl::IAllocator
MallocAllocator() (defined in nctl::MallocAllocator)nctl::MallocAllocatorinline
MallocAllocator(const char *name) (defined in nctl::MallocAllocator)nctl::MallocAllocatorexplicit
MaxNameLengthnctl::IAllocatorstatic
name() constnctl::IAllocatorinline
name_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
newArray(size_t numElements) (defined in nctl::IAllocator)nctl::IAllocator
newObject(Args &&... args) (defined in nctl::IAllocator)nctl::IAllocator
numAllocations() constnctl::IAllocatorinline
numAllocations_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
reallocate(void *ptr, size_t bytes, uint8_t alignment)nctl::IAllocator
reallocate(void *ptr, size_t bytes) (defined in nctl::IAllocator)nctl::IAllocatorinline
reallocateFunc_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
ReallocateFunction typedef (defined in nctl::IAllocator)nctl::IAllocator
setCopyOnReallocation(bool value)nctl::IAllocatorinline
size() constnctl::IAllocatorinline
size_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
usedMemory() constnctl::IAllocatorinline
usedMemory_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
~MallocAllocator() (defined in nctl::MallocAllocator)nctl::MallocAllocator
+ + + + diff --git a/master/classnctl_1_1_malloc_allocator.html b/master/classnctl_1_1_malloc_allocator.html new file mode 100644 index 0000000000..89fc3e949d --- /dev/null +++ b/master/classnctl_1_1_malloc_allocator.html @@ -0,0 +1,238 @@ + + + + + + + +nCine: nctl::MallocAllocator Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::MallocAllocator Class Reference
+
+
+ +

The allocator class based on malloc and free + More...

+ +

#include <MallocAllocator.h>

+
+Inheritance diagram for nctl::MallocAllocator:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for nctl::MallocAllocator:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

MallocAllocator (const char *name)
 
- Public Member Functions inherited from nctl::IAllocator
IAllocator (const char *name, AllocateFunction allocFunc, ReallocateFunction reallocFunc, DeallocateFunction deallocFunc)
 
IAllocator (const char *name, AllocateFunction allocFunc, ReallocateFunction reallocFunc, DeallocateFunction deallocFunc, size_t size, void *base)
 
+void * allocate (size_t bytes, uint8_t alignment)
 Tries to allocate the specified amount of memory with the specified alignment requirement.
 
+void * allocate (size_t bytes)
 
+void * reallocate (void *ptr, size_t bytes, uint8_t alignment)
 Tries to reallocate the allocation at the specified pointer with a different size.
 
+void * reallocate (void *ptr, size_t bytes)
 
+void deallocate (void *ptr)
 Deallocates the allocation at the specified pointer.
 
+const char * name () const
 Returns the name of the allocator.
 
+size_t size () const
 Returns the size of the buffer used for allocations.
 
+void * base () const
 Returns the address of the buffer used for allocations.
 
size_t usedMemory () const
 
size_t freeMemory () const
 
+size_t numAllocations () const
 Returns the number of active allocations.
 
+bool copyOnReallocation () const
 Returns the state of the copy on reallocation flag.
 
void setCopyOnReallocation (bool value)
 Sets the state of the copy on reallocation flag. More...
 
+template<class T , typename... Args>
T * newObject (Args &&... args)
 
+template<class T >
void deleteObject (T *ptr)
 
+template<class T >
T * newArray (size_t numElements)
 
+template<class T >
void deleteArray (T *ptr)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from nctl::IAllocator
+using AllocateFunction = void *(*)(IAllocator *allocator, size_t, uint8_t)
 
+using ReallocateFunction = void *(*)(IAllocator *allocator, void *, size_t, uint8_t, size_t &)
 
+using DeallocateFunction = void(*)(IAllocator *allocator, void *)
 
- Static Public Attributes inherited from nctl::IAllocator
+static const uint8_t DefaultAlignment = 2 * sizeof(void *)
 16 bytes default alignment on 64bit and 8 bytes on 32bit
 
+static const unsigned int MaxNameLength = 64
 Maximum length for the allocator name string.
 
- Protected Attributes inherited from nctl::IAllocator
+AllocateFunction allocateFunc_
 
+ReallocateFunction reallocateFunc_
 
+DeallocateFunction deallocateFunc_
 
+char name_ [MaxNameLength]
 
+size_t size_
 
+void * base_
 
+size_t usedMemory_
 
+size_t numAllocations_
 
+bool copyOnReallocation_
 
+

Detailed Description

+

The allocator class based on malloc and free

+

The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classnctl_1_1_malloc_allocator__coll__graph.map b/master/classnctl_1_1_malloc_allocator__coll__graph.map new file mode 100644 index 0000000000..b5ecd3f3ba --- /dev/null +++ b/master/classnctl_1_1_malloc_allocator__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classnctl_1_1_malloc_allocator__coll__graph.md5 b/master/classnctl_1_1_malloc_allocator__coll__graph.md5 new file mode 100644 index 0000000000..a7ba34d5be --- /dev/null +++ b/master/classnctl_1_1_malloc_allocator__coll__graph.md5 @@ -0,0 +1 @@ +f92a27a2f006501a3ad8660e17b49786 \ No newline at end of file diff --git a/master/classnctl_1_1_malloc_allocator__coll__graph.png b/master/classnctl_1_1_malloc_allocator__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..ab3362d180279f9669203d2498ca4a630241896f GIT binary patch literal 5452 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 + + + diff --git a/master/classnctl_1_1_malloc_allocator__inherit__graph.md5 b/master/classnctl_1_1_malloc_allocator__inherit__graph.md5 new file mode 100644 index 0000000000..8b9e1b2f88 --- /dev/null +++ b/master/classnctl_1_1_malloc_allocator__inherit__graph.md5 @@ -0,0 +1 @@ +90082234e7c25d77370feb951f29dbbe \ No newline at end of file diff --git a/master/classnctl_1_1_malloc_allocator__inherit__graph.png b/master/classnctl_1_1_malloc_allocator__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..117528b1bf100a7bddeacab13eb03f1bca814c90 GIT binary patch literal 2978 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 + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::ModuloHashFunc< K, Value > Member List
+
+
+ +

This is the complete list of members for nctl::ModuloHashFunc< K, Value >, including all inherited members.

+ + +
operator()(const K &key) const (defined in nctl::ModuloHashFunc< K, Value >)nctl::ModuloHashFunc< K, Value >inline
+ + + + diff --git a/master/classnctl_1_1_modulo_hash_func.html b/master/classnctl_1_1_modulo_hash_func.html new file mode 100644 index 0000000000..0d171d7259 --- /dev/null +++ b/master/classnctl_1_1_modulo_hash_func.html @@ -0,0 +1,104 @@ + + + + + + + +nCine: nctl::ModuloHashFunc< K, Value > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::ModuloHashFunc< K, Value > Class Template Reference
+
+
+ +

Hash function returning the modulo of the key, for debug purposes. + More...

+ +

#include <HashFunctions.h>

+ + + + +

+Public Member Functions

+hash_t operator() (const K &key) const
 
+

Detailed Description

+

template<class K, unsigned int Value>
+class nctl::ModuloHashFunc< K, Value >

+ +

Hash function returning the modulo of the key, for debug purposes.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classnctl_1_1_pool_allocator-members.html b/master/classnctl_1_1_pool_allocator-members.html new file mode 100644 index 0000000000..8b68baca91 --- /dev/null +++ b/master/classnctl_1_1_pool_allocator-members.html @@ -0,0 +1,129 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::PoolAllocator Member List
+
+
+ +

This is the complete list of members for nctl::PoolAllocator, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
allocate(size_t bytes, uint8_t alignment)nctl::IAllocatorinline
allocate(size_t bytes) (defined in nctl::IAllocator)nctl::IAllocatorinline
allocateFunc_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
AllocateFunction typedef (defined in nctl::IAllocator)nctl::IAllocator
base() constnctl::IAllocatorinline
base_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
copyOnReallocation() constnctl::IAllocatorinline
copyOnReallocation_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
deallocate(void *ptr)nctl::IAllocatorinline
deallocateFunc_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
DeallocateFunction typedef (defined in nctl::IAllocator)nctl::IAllocator
DefaultAlignmentnctl::IAllocatorstatic
deleteArray(T *ptr) (defined in nctl::IAllocator)nctl::IAllocator
deleteObject(T *ptr) (defined in nctl::IAllocator)nctl::IAllocator
elementAlignment() const (defined in nctl::PoolAllocator)nctl::PoolAllocatorinline
elementSize() const (defined in nctl::PoolAllocator)nctl::PoolAllocatorinline
freeList() const (defined in nctl::PoolAllocator)nctl::PoolAllocatorinline
freeMemory() constnctl::IAllocatorinline
IAllocator(const char *name, AllocateFunction allocFunc, ReallocateFunction reallocFunc, DeallocateFunction deallocFunc) (defined in nctl::IAllocator)nctl::IAllocatorinline
IAllocator(const char *name, AllocateFunction allocFunc, ReallocateFunction reallocFunc, DeallocateFunction deallocFunc, size_t size, void *base) (defined in nctl::IAllocator)nctl::IAllocator
init(size_t elementSize, size_t size, void *base) (defined in nctl::PoolAllocator)nctl::PoolAllocatorinline
init(size_t elementSize, uint8_t elementAlignment, size_t size, void *base) (defined in nctl::PoolAllocator)nctl::PoolAllocator
MaxNameLengthnctl::IAllocatorstatic
name() constnctl::IAllocatorinline
name_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
newArray(size_t numElements) (defined in nctl::IAllocator)nctl::IAllocator
newObject(Args &&... args) (defined in nctl::IAllocator)nctl::IAllocator
numAllocations() constnctl::IAllocatorinline
numAllocations_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
PoolAllocator() (defined in nctl::PoolAllocator)nctl::PoolAllocatorinline
PoolAllocator(const char *name) (defined in nctl::PoolAllocator)nctl::PoolAllocatorexplicit
PoolAllocator(size_t elementSize, size_t size, void *base) (defined in nctl::PoolAllocator)nctl::PoolAllocatorinline
PoolAllocator(const char *name, size_t elementSize, size_t size, void *base) (defined in nctl::PoolAllocator)nctl::PoolAllocatorinline
PoolAllocator(size_t elementSize, uint8_t elementAlignment, size_t size, void *base) (defined in nctl::PoolAllocator)nctl::PoolAllocatorinline
PoolAllocator(const char *name, size_t elementSize, uint8_t elementAlignment, size_t size, void *base) (defined in nctl::PoolAllocator)nctl::PoolAllocator
reallocate(void *ptr, size_t bytes, uint8_t alignment)nctl::IAllocator
reallocate(void *ptr, size_t bytes) (defined in nctl::IAllocator)nctl::IAllocatorinline
reallocateFunc_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
ReallocateFunction typedef (defined in nctl::IAllocator)nctl::IAllocator
setCopyOnReallocation(bool value)nctl::IAllocatorinline
size() constnctl::IAllocatorinline
size_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
usedMemory() constnctl::IAllocatorinline
usedMemory_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
~PoolAllocator() (defined in nctl::PoolAllocator)nctl::PoolAllocator
+ + + + diff --git a/master/classnctl_1_1_pool_allocator.html b/master/classnctl_1_1_pool_allocator.html new file mode 100644 index 0000000000..ba7c666926 --- /dev/null +++ b/master/classnctl_1_1_pool_allocator.html @@ -0,0 +1,265 @@ + + + + + + + +nCine: nctl::PoolAllocator Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::PoolAllocator Class Reference
+
+
+ +

A pool allocator. + More...

+ +

#include <PoolAllocator.h>

+
+Inheritance diagram for nctl::PoolAllocator:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for nctl::PoolAllocator:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

PoolAllocator (const char *name)
 
PoolAllocator (size_t elementSize, size_t size, void *base)
 
PoolAllocator (const char *name, size_t elementSize, size_t size, void *base)
 
PoolAllocator (size_t elementSize, uint8_t elementAlignment, size_t size, void *base)
 
PoolAllocator (const char *name, size_t elementSize, uint8_t elementAlignment, size_t size, void *base)
 
+void init (size_t elementSize, size_t size, void *base)
 
+void init (size_t elementSize, uint8_t elementAlignment, size_t size, void *base)
 
+size_t elementSize () const
 
+uint8_t elementAlignment () const
 
+void ** freeList () const
 
- Public Member Functions inherited from nctl::IAllocator
IAllocator (const char *name, AllocateFunction allocFunc, ReallocateFunction reallocFunc, DeallocateFunction deallocFunc)
 
IAllocator (const char *name, AllocateFunction allocFunc, ReallocateFunction reallocFunc, DeallocateFunction deallocFunc, size_t size, void *base)
 
+void * allocate (size_t bytes, uint8_t alignment)
 Tries to allocate the specified amount of memory with the specified alignment requirement.
 
+void * allocate (size_t bytes)
 
+void * reallocate (void *ptr, size_t bytes, uint8_t alignment)
 Tries to reallocate the allocation at the specified pointer with a different size.
 
+void * reallocate (void *ptr, size_t bytes)
 
+void deallocate (void *ptr)
 Deallocates the allocation at the specified pointer.
 
+const char * name () const
 Returns the name of the allocator.
 
+size_t size () const
 Returns the size of the buffer used for allocations.
 
+void * base () const
 Returns the address of the buffer used for allocations.
 
size_t usedMemory () const
 
size_t freeMemory () const
 
+size_t numAllocations () const
 Returns the number of active allocations.
 
+bool copyOnReallocation () const
 Returns the state of the copy on reallocation flag.
 
void setCopyOnReallocation (bool value)
 Sets the state of the copy on reallocation flag. More...
 
+template<class T , typename... Args>
T * newObject (Args &&... args)
 
+template<class T >
void deleteObject (T *ptr)
 
+template<class T >
T * newArray (size_t numElements)
 
+template<class T >
void deleteArray (T *ptr)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from nctl::IAllocator
+using AllocateFunction = void *(*)(IAllocator *allocator, size_t, uint8_t)
 
+using ReallocateFunction = void *(*)(IAllocator *allocator, void *, size_t, uint8_t, size_t &)
 
+using DeallocateFunction = void(*)(IAllocator *allocator, void *)
 
- Static Public Attributes inherited from nctl::IAllocator
+static const uint8_t DefaultAlignment = 2 * sizeof(void *)
 16 bytes default alignment on 64bit and 8 bytes on 32bit
 
+static const unsigned int MaxNameLength = 64
 Maximum length for the allocator name string.
 
- Protected Attributes inherited from nctl::IAllocator
+AllocateFunction allocateFunc_
 
+ReallocateFunction reallocateFunc_
 
+DeallocateFunction deallocateFunc_
 
+char name_ [MaxNameLength]
 
+size_t size_
 
+void * base_
 
+size_t usedMemory_
 
+size_t numAllocations_
 
+bool copyOnReallocation_
 
+

Detailed Description

+

A pool allocator.

+

The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classnctl_1_1_pool_allocator__coll__graph.map b/master/classnctl_1_1_pool_allocator__coll__graph.map new file mode 100644 index 0000000000..68911f998b --- /dev/null +++ b/master/classnctl_1_1_pool_allocator__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classnctl_1_1_pool_allocator__coll__graph.md5 b/master/classnctl_1_1_pool_allocator__coll__graph.md5 new file mode 100644 index 0000000000..056bec7841 --- /dev/null +++ b/master/classnctl_1_1_pool_allocator__coll__graph.md5 @@ -0,0 +1 @@ +a85298437e2ef3b2f452e140ae46bf9b \ No newline at end of file diff --git a/master/classnctl_1_1_pool_allocator__coll__graph.png b/master/classnctl_1_1_pool_allocator__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..5d88143b36f3bd4c0e0b04ec474620967a6ded3d GIT binary patch literal 5367 zcmdT|hf`DAw~nGT5l{pI3W7?JE*+#O^&$|6Gzm?5?`VKX5s_Y0P^$^W2F zf6DU;5T>#yxc4;H{yefGTbthV&i$u*on5fDuAY;WMtxo)3N z45yXH!fjjBzCQ{(bLHIZcS48mUS){vQ@89zDyKz_FJ%H4e{|vD!Evx&bL0eho9uqY z$jB(1QH3Ha_bylXg8VJ9aK?14$JE@CNnaUNoOqve*Hv{U@l^&LJ}v2LYW(+hKa7bF zHdEQB{OY!U#2EW0o(c$LsJbFM&-IUWdExHnz5G@_zgcs6Acyhh(qoeZ|SiHz{y1~B}`CwV{>Tvj_*RNmCt%8qCrJ(ffZ9iICT55WF zUI~c-hf&n-3b(9mYSvw34n}|vmI-;>`G#j^cGi2Q zo|RRK!C)dHA~2z?CN3`E8nZM%Ul>g8k?Gk*PPbhI&fkgVL+dN=|Dqu8E)&a2LJ{WX zV{_$IDcxe>2HG%~LsK}-_Ch~}Ivn^UzozEVfNyL}jF-3fw~2`f{93=}btzBadbKj5 zgxgQC`YH>3eMsp0_wNtF3M|X!38iLNSXk1p6Svvh$bHIX&I*w6@$tEJMFj;&QE_p( z91H68S4PKi<<_Sk2Vmj??$a6iC($X%0C%?YEaCUQ>*_!Q|d%`MeDd|bx z+iQ1{+yaMERpOr2yG3+d`2JzRPhLPkK!lC8UlBkhKAmPX#N~PcIfG2prf<$uJX1j+(hI7Co;~a6?UjxM zLsb2DhaF9;-PmetYYk0I$juDOVyIoWrKKgeUF2Ae_sUo;(~ECk^R-hR)jutrE3cMj zLHU#u6D~6`tzrcy@3kjhp9gaWkM>70;*)0$;b?;%Y^K18d#ug`J(xtqC$_Yx8JAi1{4BQxDf0cheyr7zXybku(GnF8egW^NDu*at zf3|T3jYdn4T2?w-gu~&_w)-{DQBnC$wa{F?eEHFrU_}YX-WlMLI5vrhC(DG%xjBc* zvJ7c=o8b!k{ey!`P-sUCv!KwpRC(*jqZKXqP(lzVINHk>SVi0h%q*G$u)BfjaRNkN zSN^WzoE0}_lMsAQ8P5)6!H+h^ax#B<`l}o-|CG|_Q94xxe~chI|7mS{40$LSee$+q zMIdfRAm#*iqo{2{rPc1?;^MS`^=2qQBZntA_Ts}2GN)|NKGsvTuCD#f>};fw7~%Bk z^=}RLy+uWpiLj;O@0ib@UxkK-vfzX*>Z*Eh)!L7#C1gZd&5vBXiKvGL!%;c>MVOfK z@!iFOUiA<2T%+@gIlc#nhod__-zYY#T^y4om4)mF11Atl-DaJcq}+`V3@bmf=_{}L zhlTnKyGGNFR#jrLloM*1{HesGEQg<#nVETYr8Yluc4x^=yqQsWNoMTD#4(bKNOqAu z-ZY{W_skv;Ol3DaakUpuhsrjx4%uJ47Ib(Sqt%Lv@E_5pm z8cNINj9NS};YT6=dR&FmAtHdSS7kgTiF8#}V{e)x83u5kR@EM)2lwxvaqL6852VW1 z$Bh`HrrYADcZgQ=#f9h`@c+tiWufkLc|o5TQf2BWEk%L$l_U@n&gJN1uGPYv| z>hi!H7jp{>(^?;%>mf(p8R&^&`@!lFiv8^Yy@2(GJuxVq5TdH+W@KU7_?fkC|GxJJ zw{xK^gcNk}Cw}==8EYZ)8b%}%DPoE5I5|Gd(4BOD8?8NDpAQp6tvl7a+Sufb5J-M` zIyh&oa*VX7cQucsq+xt~yp*U_t&ci~g8yfPl~ozYHDg1=qQ=HXmnToKL(gdovgT>>`4buD#9`26I*{{=Q zSj*Pw>{;G@x{_T~L~UYXaz*_^$mvOPa#KjeH7qeB8lwAj-?lF#P&vInKOHf3l zZD3$v%JJ8@ZEn7f`QPKhPYCNt0~XucIC#NmRbEXlK)z9&=loc$FN-KaX5v}yK~-L5 zSCKmwnNn$(B`xLjoeNke^f!)7CihH?3NWQqAlu(I+_iZ8Q((Xy@o?--wfQz4#S;ih z1Iu!u-g_7fMlUBPCw(~fpX2s5CRUW_>k2eST(ljja&Bp9(YLgO1qUlF6G|nNd;js> zrxnuTS&FsfMauK%FR`;fc>I{l)YLRQJRE|25W~Q!5EU62IfT?2u^Fv)@6ME~91aAV zcj!+2a3D+oNC(#b29S=1p1!TGuWu@t-qp4a7d{GN#KbD-t(@=Nqm}ynJEJarX_ACg z+49=dsv`4XIX{Y;fm5*eKh>(Kx!JVBF1pnh;2u=Y=N7=dmeJ7+qY~qCw_)+Iu`x*w z2{ZY_9T#_nYPXT9=$IJVqoX5g1_n>^BeTOG7s1<}tSl=BfrL|+TQUuAGW)umilnz@ z1e7&;*F>31EmFtWMOOYEEPA+K`n>BDnG{Ax5yQ!uHIzcr6|^v3mXTY}C*N^fPfLxM zzwoPm|Aq%MQQ~0eKHf_vlf17>RJJTR^x0sp)EiG2&YH_`D-kQVB zKX@nwJ-}8aV17{Y3hjOKz1MXnd*KSpb!wIMr5bVqAW2Nj%<6`QhOu2a$M)-&p*d-V zRQQg0i3(xDq6Kr{e$5ZtY{4BP4TW+gTQ9puQHR=RRVB%}+(}u7r&Itm#{w6<*Js0G zBQqOZ?s!kB+1S`1vIsKFEG%u4&5^={mk|;2_M2(vBAg2FpP&;Vi;D{$3Wk7`jcz-y zCfo>-9{Kg1dsN0dy4txIV=Q14GOhC#^SGU@?dX6Eid~_h(NO#a*5BgRO;Vc3*~TA; zL~FhG!M|^VmrlAQO@n1$rkrn4Y3VHBPut7H#GPfL1gNEekG+HyN=)QCNwRnL_BwnE zJAaOnvciAUMt4>C(PxOBp57nY7N>C&FhU-2@i&02{enH22h+9m^xBEUl)SuK;t~=7 zQ#`S&il|+$&8b$0!du$!gq)u!aJ+r>>Yk4eV2g3qfQP7QXrwD|ea4noX+~1mZv6Vz zogq_}Tkjpn%*;7B=$DJZTt%Z9)*`>ru}c;WSoNi*LJMG7v|}_M2L}y5nb(Gum5D+C zeb`#V@T`=0R%<*V{^CJQq6Lh%iOdEG}^ell>5kThifYXqJE-PwU+MKGY ziVY;`X$iot+${cmo5Yx6w>Q3d#alJQ(K2N=LK0R*GrBRa6!? zHK~M!h5ZGC%^mMe@X5#!6&lde?ts|18DR(n!pKKMckNL`8wE#wgmvjdY+hc=+S>`A zi>faM3Ps@v7l>iw(N^*prKjVb@z8^O438tm@H`Ej?(UkRF3uzH-iMDXEPQ$_vUS=F zLdAyI84v|r&#jaCoo+};#YRxxgpleM50**>=+}l`=>8ifkuF12r2bsisHlCb*e8~j zYcn$~$G!yamS$B4sB~U|gVcoxGu+aCyRwLEk*11l!Z{7Wr6qPP?Yp*09JO7o>h0qV zK8PE21-r(Wurc;=OkAAr;NYN)*~Cw$nXk_!3{6C{QOJYD*&Nr!4rQlzY#M^VUiTds z9$3W2ri}DS4EGYEp%V-~#=Zk{q4C0}xoqn2zqI6rIvXxGmERKkDC@Yi}@OVMQ0s|PMi ziCI7RxHF%R)eMETX)qZXVOf^xIlCu^O!mA^jwoYyVsd`X&i1E~n3}9-+=p0dY8DoT zO6ptd)=2APZKHk-j0{Y2JeU3>)55>&oK>a%08)`rMS_NoI~<5E73!XU1>1k?x&I#n zyYm-grlxEXIPT6xHOgWyu+q_Sj=ca`tBGvA4O0ATzXfB~J-Crk15*7T>gi_~qQ*Kj z)Bcx2c6yK4+TY#XE8W3SB1-@{@Z{dR32PAxw?M%Dk0XMyK|#uJDJqisNn);gA?Zr( z!)>?JP_p(w0cR#PQ{0r7Pgjkkf8uoAmGF`K)~)bYuNWPA($#fz=p1`9%MBPx50A)w zfSOG%mwjnmcgMa|Oekg)_V$1LvkMg0&hG9RAXM!3Hzx7BBd$=oh(iJ>``2W>LQN|j z$~`9<4+#m3y)8>YQ1?sB%&mjP26CufAs_&=!M&EYHgSNt5KKwQaJelNU~JO>3>0<- z4gScJ{e6EQU*F*>XQn^Ye6R@aMykUOpCDI9)B^+MLrxDT%*-22_SQ(z2?=v0WsOt7 z9-R#7i$HoUDR66zF_#;xPw4Tu^M z5fO#cBXVAT{xDXLkiho!aQ%y(g99%c8{0>#FKEC@$*Z`DvyT)D5N-Y&zwV!GL@K{} z_m0<^8)1k0nkwVTc~di?rKcx;9*v@Z@$H_yJrC$kT)X=;4(m!3_gl~hY~#MazpO!l zPCtIVHI~(^n>Sr#qNJ`a9as!yU|`TlLY1?=JB0T~<`f}5H~!wQ>;M53iGmY;{`WpeVBF%pS} znwm>QBmp!}yym*uwgVL@sOTk?34MJGp<7!%U_}IJyv*v0gL{5qp@Fe++kl?3d%2Q? zMAGNaVi`fgf`YEtp5MQJ8z&CGzNz^W>&mLGu0BX0oD~Dy>nRS2i~|y0`cQ<^_yPF2inea?q!at4I|c`i;S zA0x21xcCg{WI7J{LA;WnU@YjIxX{v>1&OoAgM~pr_=7_Tn9o9{idmoKKW%Fx8&~nwg&m7L=~p0&b1p zXu4pWVm3WJ-3&>9N?Wd|MAfICZv(KSrK97gW);o|`!rlSsX}cX qZ{GY*`|scR7hbuM;VRT;j+9lIq0x-8!fK$C3DHuAseMv;9QI$HeWqOi literal 0 HcmV?d00001 diff --git a/master/classnctl_1_1_pool_allocator__inherit__graph.map b/master/classnctl_1_1_pool_allocator__inherit__graph.map new file mode 100644 index 0000000000..6bb8cfb26c --- /dev/null +++ b/master/classnctl_1_1_pool_allocator__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classnctl_1_1_pool_allocator__inherit__graph.md5 b/master/classnctl_1_1_pool_allocator__inherit__graph.md5 new file mode 100644 index 0000000000..594a6942cb --- /dev/null +++ b/master/classnctl_1_1_pool_allocator__inherit__graph.md5 @@ -0,0 +1 @@ +c8fc62b61619bfb5fab3693eb9d47880 \ No newline at end of file diff --git a/master/classnctl_1_1_pool_allocator__inherit__graph.png b/master/classnctl_1_1_pool_allocator__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..c175cb87ed0ec7a76e0303f792fc60cb1a1fe445 GIT binary patch literal 3244 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 Ab^rhX literal 0 HcmV?d00001 diff --git a/master/classnctl_1_1_proxy_allocator-members.html b/master/classnctl_1_1_proxy_allocator-members.html new file mode 100644 index 0000000000..abd4c95948 --- /dev/null +++ b/master/classnctl_1_1_proxy_allocator-members.html @@ -0,0 +1,120 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::ProxyAllocator Member List
+
+
+ +

This is the complete list of members for nctl::ProxyAllocator, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
allocate(size_t bytes, uint8_t alignment)nctl::IAllocatorinline
allocate(size_t bytes) (defined in nctl::IAllocator)nctl::IAllocatorinline
allocateFunc_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
AllocateFunction typedef (defined in nctl::IAllocator)nctl::IAllocator
base() constnctl::IAllocatorinline
base_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
copyOnReallocation() constnctl::IAllocatorinline
copyOnReallocation_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
deallocate(void *ptr)nctl::IAllocatorinline
deallocateFunc_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
DeallocateFunction typedef (defined in nctl::IAllocator)nctl::IAllocator
DefaultAlignmentnctl::IAllocatorstatic
deleteArray(T *ptr) (defined in nctl::IAllocator)nctl::IAllocator
deleteObject(T *ptr) (defined in nctl::IAllocator)nctl::IAllocator
freeMemory() constnctl::IAllocatorinline
IAllocator(const char *name, AllocateFunction allocFunc, ReallocateFunction reallocFunc, DeallocateFunction deallocFunc) (defined in nctl::IAllocator)nctl::IAllocatorinline
IAllocator(const char *name, AllocateFunction allocFunc, ReallocateFunction reallocFunc, DeallocateFunction deallocFunc, size_t size, void *base) (defined in nctl::IAllocator)nctl::IAllocator
MaxNameLengthnctl::IAllocatorstatic
name() constnctl::IAllocatorinline
name_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
newArray(size_t numElements) (defined in nctl::IAllocator)nctl::IAllocator
newObject(Args &&... args) (defined in nctl::IAllocator)nctl::IAllocator
numAllocations() constnctl::IAllocatorinline
numAllocations_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
ProxyAllocator(IAllocator &allocator) (defined in nctl::ProxyAllocator)nctl::ProxyAllocatorinlineexplicit
ProxyAllocator(const char *name, IAllocator &allocator) (defined in nctl::ProxyAllocator)nctl::ProxyAllocator
reallocate(void *ptr, size_t bytes, uint8_t alignment)nctl::IAllocator
reallocate(void *ptr, size_t bytes) (defined in nctl::IAllocator)nctl::IAllocatorinline
reallocateFunc_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
ReallocateFunction typedef (defined in nctl::IAllocator)nctl::IAllocator
setCopyOnReallocation(bool value)nctl::IAllocatorinline
size() constnctl::IAllocatorinline
size_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
usedMemory() constnctl::IAllocatorinline
usedMemory_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
~ProxyAllocator() (defined in nctl::ProxyAllocator)nctl::ProxyAllocator
+ + + + diff --git a/master/classnctl_1_1_proxy_allocator.html b/master/classnctl_1_1_proxy_allocator.html new file mode 100644 index 0000000000..7929b0c0fb --- /dev/null +++ b/master/classnctl_1_1_proxy_allocator.html @@ -0,0 +1,241 @@ + + + + + + + +nCine: nctl::ProxyAllocator Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::ProxyAllocator Class Reference
+
+
+ +

A proxy allocator. + More...

+ +

#include <ProxyAllocator.h>

+
+Inheritance diagram for nctl::ProxyAllocator:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for nctl::ProxyAllocator:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

ProxyAllocator (IAllocator &allocator)
 
ProxyAllocator (const char *name, IAllocator &allocator)
 
- Public Member Functions inherited from nctl::IAllocator
IAllocator (const char *name, AllocateFunction allocFunc, ReallocateFunction reallocFunc, DeallocateFunction deallocFunc)
 
IAllocator (const char *name, AllocateFunction allocFunc, ReallocateFunction reallocFunc, DeallocateFunction deallocFunc, size_t size, void *base)
 
+void * allocate (size_t bytes, uint8_t alignment)
 Tries to allocate the specified amount of memory with the specified alignment requirement.
 
+void * allocate (size_t bytes)
 
+void * reallocate (void *ptr, size_t bytes, uint8_t alignment)
 Tries to reallocate the allocation at the specified pointer with a different size.
 
+void * reallocate (void *ptr, size_t bytes)
 
+void deallocate (void *ptr)
 Deallocates the allocation at the specified pointer.
 
+const char * name () const
 Returns the name of the allocator.
 
+size_t size () const
 Returns the size of the buffer used for allocations.
 
+void * base () const
 Returns the address of the buffer used for allocations.
 
size_t usedMemory () const
 
size_t freeMemory () const
 
+size_t numAllocations () const
 Returns the number of active allocations.
 
+bool copyOnReallocation () const
 Returns the state of the copy on reallocation flag.
 
void setCopyOnReallocation (bool value)
 Sets the state of the copy on reallocation flag. More...
 
+template<class T , typename... Args>
T * newObject (Args &&... args)
 
+template<class T >
void deleteObject (T *ptr)
 
+template<class T >
T * newArray (size_t numElements)
 
+template<class T >
void deleteArray (T *ptr)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from nctl::IAllocator
+using AllocateFunction = void *(*)(IAllocator *allocator, size_t, uint8_t)
 
+using ReallocateFunction = void *(*)(IAllocator *allocator, void *, size_t, uint8_t, size_t &)
 
+using DeallocateFunction = void(*)(IAllocator *allocator, void *)
 
- Static Public Attributes inherited from nctl::IAllocator
+static const uint8_t DefaultAlignment = 2 * sizeof(void *)
 16 bytes default alignment on 64bit and 8 bytes on 32bit
 
+static const unsigned int MaxNameLength = 64
 Maximum length for the allocator name string.
 
- Protected Attributes inherited from nctl::IAllocator
+AllocateFunction allocateFunc_
 
+ReallocateFunction reallocateFunc_
 
+DeallocateFunction deallocateFunc_
 
+char name_ [MaxNameLength]
 
+size_t size_
 
+void * base_
 
+size_t usedMemory_
 
+size_t numAllocations_
 
+bool copyOnReallocation_
 
+

Detailed Description

+

A proxy allocator.

+

The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classnctl_1_1_proxy_allocator__coll__graph.map b/master/classnctl_1_1_proxy_allocator__coll__graph.map new file mode 100644 index 0000000000..ec2f596ed5 --- /dev/null +++ b/master/classnctl_1_1_proxy_allocator__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classnctl_1_1_proxy_allocator__coll__graph.md5 b/master/classnctl_1_1_proxy_allocator__coll__graph.md5 new file mode 100644 index 0000000000..6a561f3827 --- /dev/null +++ b/master/classnctl_1_1_proxy_allocator__coll__graph.md5 @@ -0,0 +1 @@ +3713181570ee5f9c0523eee223e7b161 \ No newline at end of file diff --git a/master/classnctl_1_1_proxy_allocator__coll__graph.png b/master/classnctl_1_1_proxy_allocator__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..66d990b17c2cfa6f888f44714f58aa5eceeda065 GIT binary patch literal 5708 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 NG$2rwVrBE7{{kRNB0~TG literal 0 HcmV?d00001 diff --git a/master/classnctl_1_1_proxy_allocator__inherit__graph.map b/master/classnctl_1_1_proxy_allocator__inherit__graph.map new file mode 100644 index 0000000000..40a6112795 --- /dev/null +++ b/master/classnctl_1_1_proxy_allocator__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classnctl_1_1_proxy_allocator__inherit__graph.md5 b/master/classnctl_1_1_proxy_allocator__inherit__graph.md5 new file mode 100644 index 0000000000..ae35a8341a --- /dev/null +++ b/master/classnctl_1_1_proxy_allocator__inherit__graph.md5 @@ -0,0 +1 @@ +cb58853fbc99792dcdc6d8467f1634ed \ No newline at end of file diff --git a/master/classnctl_1_1_proxy_allocator__inherit__graph.png b/master/classnctl_1_1_proxy_allocator__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..28d3004cfa4b91a4cf8f4fd95b6c89853ec18b75 GIT binary patch literal 3234 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 U<{b`!KOKO@6&tg1Q*87<0iqv3=Kufz literal 0 HcmV?d00001 diff --git a/master/classnctl_1_1_reverse_iterator-members.html b/master/classnctl_1_1_reverse_iterator-members.html new file mode 100644 index 0000000000..4f03e6a438 --- /dev/null +++ b/master/classnctl_1_1_reverse_iterator-members.html @@ -0,0 +1,113 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::ReverseIterator< Iterator > Member List
+
+
+ +

This is the complete list of members for nctl::ReverseIterator< Iterator >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
base() constnctl::ReverseIterator< Iterator >inline
operator!=(const ReverseIterator &lhs, const ReverseIterator &rhs)nctl::ReverseIterator< Iterator >friend
operator!=(const ReverseIterator &lhs, const ReverseIterator< Iter > &rhs)nctl::ReverseIterator< Iterator >friend
operator*() constnctl::ReverseIterator< Iterator >inline
operator+(int n) constnctl::ReverseIterator< Iterator >
operator++()nctl::ReverseIterator< Iterator >
operator++(int)nctl::ReverseIterator< Iterator >
operator+=(int n)nctl::ReverseIterator< Iterator >
operator-(int n) constnctl::ReverseIterator< Iterator >
operator-(const ReverseIterator &lhs, const ReverseIterator &rhs)nctl::ReverseIterator< Iterator >friend
operator-(const ReverseIterator &lhs, const ReverseIterator< Iter > &rhs)nctl::ReverseIterator< Iterator >friend
operator--()nctl::ReverseIterator< Iterator >
operator--(int)nctl::ReverseIterator< Iterator >
operator-=(int n)nctl::ReverseIterator< Iterator >
operator<(const ReverseIterator &lhs, const ReverseIterator &rhs)nctl::ReverseIterator< Iterator >friend
operator<(const ReverseIterator &lhs, const ReverseIterator< Iter > &rhs)nctl::ReverseIterator< Iterator >friend
operator<=(const ReverseIterator &lhs, const ReverseIterator &rhs)nctl::ReverseIterator< Iterator >friend
operator<=(const ReverseIterator &lhs, const ReverseIterator< Iter > &rhs)nctl::ReverseIterator< Iterator >friend
operator==(const ReverseIterator &lhs, const ReverseIterator &rhs)nctl::ReverseIterator< Iterator >friend
operator==(const ReverseIterator &lhs, const ReverseIterator< Iter > &rhs)nctl::ReverseIterator< Iterator >friend
operator>(const ReverseIterator &lhs, const ReverseIterator &rhs)nctl::ReverseIterator< Iterator >friend
operator>(const ReverseIterator &lhs, const ReverseIterator< Iter > &rhs)nctl::ReverseIterator< Iterator >friend
operator>=(const ReverseIterator &lhs, const ReverseIterator &rhs)nctl::ReverseIterator< Iterator >friend
operator>=(const ReverseIterator &lhs, const ReverseIterator< Iter > &rhs)nctl::ReverseIterator< Iterator >friend
operator[](int n) constnctl::ReverseIterator< Iterator >inline
Pointer typedefnctl::ReverseIterator< Iterator >
Reference typedefnctl::ReverseIterator< Iterator >
ReverseIterator(Iterator it) (defined in nctl::ReverseIterator< Iterator >)nctl::ReverseIterator< Iterator >inlineexplicit
ReverseIterator(const ReverseIterator< Iter > &reverseIt)nctl::ReverseIterator< Iterator >inline
+ + + + diff --git a/master/classnctl_1_1_reverse_iterator.html b/master/classnctl_1_1_reverse_iterator.html new file mode 100644 index 0000000000..336e9475d6 --- /dev/null +++ b/master/classnctl_1_1_reverse_iterator.html @@ -0,0 +1,232 @@ + + + + + + + +nCine: nctl::ReverseIterator< Iterator > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::ReverseIterator< Iterator > Class Template Reference
+
+
+ +

A generic reverse iterator. + More...

+ +

#include <ReverseIterator.h>

+ + + + + + + + +

+Public Types

+using Pointer = typename IteratorTraits< Iterator >::Pointer
 Pointer type which respects iterator constness.
 
+using Reference = typename IteratorTraits< Iterator >::Reference
 Reference type which respects iterator constness.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

ReverseIterator (Iterator it)
 
+template<typename Iter >
 ReverseIterator (const ReverseIterator< Iter > &reverseIt)
 Converting constructor between compatible reverse iterators.
 
+Reference operator* () const
 Deferencing operator.
 
+ReverseIteratoroperator++ ()
 Iterates to the next element (reversed prefix)
 
+ReverseIterator operator++ (int)
 Iterates to the next element (reversed postfix)
 
+ReverseIteratoroperator-- ()
 Iterates to the previous element (reversed prefix)
 
+ReverseIterator operator-- (int)
 Iterates to the previous element (reversed postfix)
 
+ReverseIteratoroperator+= (int n)
 Compound addition operator (reversed)
 
+ReverseIteratoroperator-= (int n)
 Compound subtraction operator (reversed)
 
+ReverseIterator operator+ (int n) const
 Addition operator (reversed)
 
+ReverseIterator operator- (int n) const
 Subtraction operator (reversed)
 
+Reference operator[] (int n) const
 Subscript operator.
 
+Iterator base () const
 Returns the base iterator.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Friends

+int operator- (const ReverseIterator &lhs, const ReverseIterator &rhs)
 Pointer subtraction operator (reversed)
 
+template<typename Iter >
int operator- (const ReverseIterator &lhs, const ReverseIterator< Iter > &rhs)
 Pointer subtraction operator for compatible reverse iterators (reversed)
 
+bool operator== (const ReverseIterator &lhs, const ReverseIterator &rhs)
 Equality operator.
 
+template<typename Iter >
bool operator== (const ReverseIterator &lhs, const ReverseIterator< Iter > &rhs)
 Equality operator for compatible reverse iterators.
 
+bool operator!= (const ReverseIterator &lhs, const ReverseIterator &rhs)
 Inequality operator.
 
+template<typename Iter >
bool operator!= (const ReverseIterator &lhs, const ReverseIterator< Iter > &rhs)
 Inequality operator for compatible reverse iterators.
 
+bool operator> (const ReverseIterator &lhs, const ReverseIterator &rhs)
 Greater than operator (reversed)
 
+template<typename Iter >
bool operator> (const ReverseIterator &lhs, const ReverseIterator< Iter > &rhs)
 Greater than operator for compatible reverse iterators (reversed)
 
+bool operator< (const ReverseIterator &lhs, const ReverseIterator &rhs)
 Less than operator (reversed)
 
+template<typename Iter >
bool operator< (const ReverseIterator &lhs, const ReverseIterator< Iter > &rhs)
 Less than operator for compatible reverse iterators (reversed)
 
+bool operator>= (const ReverseIterator &lhs, const ReverseIterator &rhs)
 Greater than or equal to operator (reversed)
 
+template<typename Iter >
bool operator>= (const ReverseIterator &lhs, const ReverseIterator< Iter > &rhs)
 Greater than or equal to operator for compatible reverse iterators (reversed)
 
+bool operator<= (const ReverseIterator &lhs, const ReverseIterator &rhs)
 Less than or equal to operator (reversed)
 
+template<typename Iter >
bool operator<= (const ReverseIterator &lhs, const ReverseIterator< Iter > &rhs)
 Less than or equal to operator for compatible reverse iterators (reversed)
 
+

Detailed Description

+

template<class Iterator>
+class nctl::ReverseIterator< Iterator >

+ +

A generic reverse iterator.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classnctl_1_1_sax_hash_func-members.html b/master/classnctl_1_1_sax_hash_func-members.html new file mode 100644 index 0000000000..479ce4daa3 --- /dev/null +++ b/master/classnctl_1_1_sax_hash_func-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::SaxHashFunc< K > Member List
+
+
+ +

This is the complete list of members for nctl::SaxHashFunc< K >, including all inherited members.

+ + +
operator()(const K &key) const (defined in nctl::SaxHashFunc< K >)nctl::SaxHashFunc< K >inline
+ + + + diff --git a/master/classnctl_1_1_sax_hash_func.html b/master/classnctl_1_1_sax_hash_func.html new file mode 100644 index 0000000000..76a8585ffa --- /dev/null +++ b/master/classnctl_1_1_sax_hash_func.html @@ -0,0 +1,104 @@ + + + + + + + +nCine: nctl::SaxHashFunc< K > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::SaxHashFunc< K > Class Template Reference
+
+
+ +

Shift-Add-XOR hash function. + More...

+ +

#include <HashFunctions.h>

+ + + + +

+Public Member Functions

+hash_t operator() (const K &key) const
 
+

Detailed Description

+

template<class K>
+class nctl::SaxHashFunc< K >

+ +

Shift-Add-XOR hash function.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classnctl_1_1_sax_hash_func_3_01_string_01_4-members.html b/master/classnctl_1_1_sax_hash_func_3_01_string_01_4-members.html new file mode 100644 index 0000000000..2106704450 --- /dev/null +++ b/master/classnctl_1_1_sax_hash_func_3_01_string_01_4-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::SaxHashFunc< String > Member List
+
+
+ +

This is the complete list of members for nctl::SaxHashFunc< String >, including all inherited members.

+ + +
operator()(const String &string) const (defined in nctl::SaxHashFunc< String >)nctl::SaxHashFunc< String >inline
+ + + + diff --git a/master/classnctl_1_1_sax_hash_func_3_01_string_01_4.html b/master/classnctl_1_1_sax_hash_func_3_01_string_01_4.html new file mode 100644 index 0000000000..e4aec9dba1 --- /dev/null +++ b/master/classnctl_1_1_sax_hash_func_3_01_string_01_4.html @@ -0,0 +1,102 @@ + + + + + + + +nCine: nctl::SaxHashFunc< String > Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::SaxHashFunc< String > Class Reference
+
+
+ +

Shift-Add-XOR hash function. + More...

+ +

#include <HashFunctions.h>

+ + + + +

+Public Member Functions

+hash_t operator() (const String &string) const
 
+

Detailed Description

+

Shift-Add-XOR hash function.

+
Note
Specialized version of the function for String objects
+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classnctl_1_1_sax_hash_func_3_01const_01char_01_5_01_4-members.html b/master/classnctl_1_1_sax_hash_func_3_01const_01char_01_5_01_4-members.html new file mode 100644 index 0000000000..e96af26438 --- /dev/null +++ b/master/classnctl_1_1_sax_hash_func_3_01const_01char_01_5_01_4-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::SaxHashFunc< const char * > Member List
+
+
+ +

This is the complete list of members for nctl::SaxHashFunc< const char * >, including all inherited members.

+ + +
operator()(const char *key) const (defined in nctl::SaxHashFunc< const char * >)nctl::SaxHashFunc< const char * >inline
+ + + + diff --git a/master/classnctl_1_1_sax_hash_func_3_01const_01char_01_5_01_4.html b/master/classnctl_1_1_sax_hash_func_3_01const_01char_01_5_01_4.html new file mode 100644 index 0000000000..821e276fda --- /dev/null +++ b/master/classnctl_1_1_sax_hash_func_3_01const_01char_01_5_01_4.html @@ -0,0 +1,102 @@ + + + + + + + +nCine: nctl::SaxHashFunc< const char * > Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::SaxHashFunc< const char * > Class Reference
+
+
+ +

Shift-Add-XOR hash function. + More...

+ +

#include <HashFunctions.h>

+ + + + +

+Public Member Functions

+hash_t operator() (const char *key) const
 
+

Detailed Description

+

Shift-Add-XOR hash function.

+
Note
Specialized version of the function for C-style strings
+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classnctl_1_1_shared_ptr-members.html b/master/classnctl_1_1_shared_ptr-members.html new file mode 100644 index 0000000000..ec885d40dd --- /dev/null +++ b/master/classnctl_1_1_shared_ptr-members.html @@ -0,0 +1,108 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::SharedPtr< T > Member List
+
+
+ +

This is the complete list of members for nctl::SharedPtr< T >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + +
get() (defined in nctl::SharedPtr< T >)nctl::SharedPtr< T >inline
get() const (defined in nctl::SharedPtr< T >)nctl::SharedPtr< T >inline
makeShared (defined in nctl::SharedPtr< T >)nctl::SharedPtr< T >friend
operator bool() const (defined in nctl::SharedPtr< T >)nctl::SharedPtr< T >inline
operator!= (defined in nctl::SharedPtr< T >)nctl::SharedPtr< T >friend
operator!= (defined in nctl::SharedPtr< T >)nctl::SharedPtr< T >friend
operator!= (defined in nctl::SharedPtr< T >)nctl::SharedPtr< T >friend
operator*() (defined in nctl::SharedPtr< T >)nctl::SharedPtr< T >inline
operator*() const (defined in nctl::SharedPtr< T >)nctl::SharedPtr< T >inline
operator->() (defined in nctl::SharedPtr< T >)nctl::SharedPtr< T >inline
operator->() const (defined in nctl::SharedPtr< T >)nctl::SharedPtr< T >inline
operator=(SharedPtr other) (defined in nctl::SharedPtr< T >)nctl::SharedPtr< T >
operator== (defined in nctl::SharedPtr< T >)nctl::SharedPtr< T >friend
operator== (defined in nctl::SharedPtr< T >)nctl::SharedPtr< T >friend
operator== (defined in nctl::SharedPtr< T >)nctl::SharedPtr< T >friend
reset(T *newPtr) (defined in nctl::SharedPtr< T >)nctl::SharedPtr< T >
reset(nullptr_t) (defined in nctl::SharedPtr< T >)nctl::SharedPtr< T >
SharedPtr() (defined in nctl::SharedPtr< T >)nctl::SharedPtr< T >inline
SharedPtr(T *ptr) (defined in nctl::SharedPtr< T >)nctl::SharedPtr< T >explicit
SharedPtr(UniquePtr< T > &&unique) (defined in nctl::SharedPtr< T >)nctl::SharedPtr< T >explicit
SharedPtr(const SharedPtr &other) (defined in nctl::SharedPtr< T >)nctl::SharedPtr< T >
SharedPtr(SharedPtr &&other) (defined in nctl::SharedPtr< T >)nctl::SharedPtr< T >
useCount() const (defined in nctl::SharedPtr< T >)nctl::SharedPtr< T >
~SharedPtr() (defined in nctl::SharedPtr< T >)nctl::SharedPtr< T >
+ + + + diff --git a/master/classnctl_1_1_shared_ptr.html b/master/classnctl_1_1_shared_ptr.html new file mode 100644 index 0000000000..6bd00afaa8 --- /dev/null +++ b/master/classnctl_1_1_shared_ptr.html @@ -0,0 +1,174 @@ + + + + + + + +nCine: nctl::SharedPtr< T > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::SharedPtr< T > Class Template Reference
+
+
+ +

A shared pointer implementation. + More...

+ +

#include <SharedPtr.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

SharedPtr (T *ptr)
 
SharedPtr (UniquePtr< T > &&unique)
 
SharedPtr (const SharedPtr &other)
 
+SharedPtroperator= (SharedPtr other)
 
SharedPtr (SharedPtr &&other)
 
+void reset (T *newPtr)
 
+void reset (nullptr_t)
 
+T * get ()
 
+const T * get () const
 
+int32_t useCount () const
 
+T & operator* ()
 
+const T & operator* () const
 
+T * operator-> ()
 
+const T * operator-> () const
 
operator bool () const
 
+ + + + + + + + + + + + + + + + +

+Friends

+bool operator== (const SharedPtr &x, const SharedPtr &y)
 
+bool operator!= (const SharedPtr &x, const SharedPtr &y)
 
+bool operator== (const SharedPtr &x, nullptr_t)
 
+bool operator== (nullptr_t, const SharedPtr &y)
 
+bool operator!= (const SharedPtr &x, nullptr_t)
 
+bool operator!= (nullptr_t, const SharedPtr &y)
 
+template<class S , class... Args>
SharedPtr< S > makeShared (Args &&... args)
 
+

Detailed Description

+

template<class T>
+class nctl::SharedPtr< T >

+ +

A shared pointer implementation.

+
Note
It lacks the aliasing constructor and pointer reset when using makeShared()
+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classnctl_1_1_sparse_set-members.html b/master/classnctl_1_1_sparse_set-members.html new file mode 100644 index 0000000000..31121c5a64 --- /dev/null +++ b/master/classnctl_1_1_sparse_set-members.html @@ -0,0 +1,120 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::SparseSet< T > Member List
+
+
+ +

This is the complete list of members for nctl::SparseSet< T >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
begin()nctl::SparseSet< T >inline
begin() constnctl::SparseSet< T >
capacity() constnctl::SparseSet< T >inline
cBegin() constnctl::SparseSet< T >inline
cEnd() constnctl::SparseSet< T >inline
clear()nctl::SparseSet< T >inline
ConstIterator typedefnctl::SparseSet< T >
ConstReverseIterator typedefnctl::SparseSet< T >
contains(T value) constnctl::SparseSet< T >
crBegin() constnctl::SparseSet< T >inline
crEnd() constnctl::SparseSet< T >inline
end()nctl::SparseSet< T >
end() constnctl::SparseSet< T >
find(T value) constnctl::SparseSet< T >
insert(T value)nctl::SparseSet< T >
isEmpty() constnctl::SparseSet< T >inline
Iterator typedefnctl::SparseSet< T >
loadFactor() constnctl::SparseSet< T >inline
maxValue() constnctl::SparseSet< T >inline
NotFound (defined in nctl::SparseSet< T >)nctl::SparseSet< T >static
operator=(const SparseSet &other)nctl::SparseSet< T >
operator=(SparseSet &&other)nctl::SparseSet< T >
rBegin()nctl::SparseSet< T >
rBegin() constnctl::SparseSet< T >
rehash(unsigned int count)nctl::SparseSet< T >
remove(T value)nctl::SparseSet< T >
rEnd()nctl::SparseSet< T >
rEnd() constnctl::SparseSet< T >
ReverseIterator typedefnctl::SparseSet< T >
size() constnctl::SparseSet< T >inline
SparseSet(unsigned int capacity, unsigned int maxValue) (defined in nctl::SparseSet< T >)nctl::SparseSet< T >
SparseSet(const SparseSet &other)nctl::SparseSet< T >
SparseSet(SparseSet &&other)nctl::SparseSet< T >
SparseSetIterator< T > (defined in nctl::SparseSet< T >)nctl::SparseSet< T >friend
swap(SparseSet &first, SparseSet &second)nctl::SparseSet< T >inline
~SparseSet() (defined in nctl::SparseSet< T >)nctl::SparseSet< T >
+ + + + diff --git a/master/classnctl_1_1_sparse_set.html b/master/classnctl_1_1_sparse_set.html new file mode 100644 index 0000000000..6aeaa23c39 --- /dev/null +++ b/master/classnctl_1_1_sparse_set.html @@ -0,0 +1,314 @@ + + + + + + + +nCine: nctl::SparseSet< T > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::SparseSet< T > Class Template Reference
+
+
+ +

A template based sparse set implementation. + More...

+ +

#include <SparseSet.h>

+ + + + + + + + + + + + + + +

+Public Types

using Iterator = SparseSetIterator< T >
 Iterator type. More...
 
+using ConstIterator = SparseSetIterator< T >
 Constant iterator type.
 
+using ReverseIterator = nctl::ReverseIterator< Iterator >
 Reverse iterator type.
 
+using ConstReverseIterator = nctl::ReverseIterator< ConstIterator >
 Reverse constant iterator type.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

SparseSet (unsigned int capacity, unsigned int maxValue)
 
SparseSet (const SparseSet &other)
 Copy constructor.
 
SparseSet (SparseSet &&other)
 Move constructor.
 
+SparseSetoperator= (const SparseSet &other)
 Assignment operator.
 
+SparseSetoperator= (SparseSet &&other)
 Move assignment operator.
 
+void swap (SparseSet &first, SparseSet &second)
 Swaps two SparseSets without copying their data.
 
+ConstIterator begin ()
 Returns a constant iterator to the first element.
 
+ConstReverseIterator rBegin ()
 Returns a reverse constant iterator to the last element.
 
+ConstIterator end ()
 Returns a constant iterator to past the last element.
 
+ConstReverseIterator rEnd ()
 Returns a reverse constant iterator to prior the first element.
 
+ConstIterator begin () const
 Returns a constant iterator to the first element.
 
+ConstReverseIterator rBegin () const
 Returns a constant reverse iterator to the last element.
 
+ConstIterator end () const
 Returns a constant iterator to past the last lement.
 
+ConstReverseIterator rEnd () const
 Returns a constant reverse iterator to prior the first element.
 
+ConstIterator cBegin () const
 Returns a constant iterator to the first element.
 
+ConstReverseIterator crBegin () const
 Returns a constant reverse iterator to the last element.
 
+ConstIterator cEnd () const
 Returns a constant iterator to past the last lement.
 
+ConstReverseIterator crEnd () const
 Returns a constant reverse iterator to prior the first element.
 
bool insert (T value)
 Inserts an element if not already in. More...
 
+unsigned int maxValue () const
 Returns the maximum value of the sparseset.
 
+unsigned int capacity () const
 Returns the capacity of the sparseset.
 
+bool isEmpty () const
 Returns true if the sparseset is empty.
 
+unsigned int size () const
 Returns the number of elements in the sparseset.
 
+float loadFactor () const
 Returns the ratio between used and total buckets.
 
+void clear ()
 Clears the sparseset.
 
+bool contains (T value) const
 Checks whether an element is in the sparseset or not.
 
+T find (T value) const
 Checks whether an element is in the sparseset or not.
 
bool remove (T value)
 Removes a key from the sparseset, if it exists. More...
 
+void rehash (unsigned int count)
 Sets the number of buckets to the new specified size and rehashes the container.
 
+ + + +

+Static Public Attributes

+static const T NotFound = T(-1)
 
+ + + +

+Friends

+class SparseSetIterator< T >
 
+

Detailed Description

+

template<class T>
+class nctl::SparseSet< T >

+ +

A template based sparse set implementation.

+

Member Typedef Documentation

+ +

◆ Iterator

+ +
+
+
+template<class T >
+ + + + +
using nctl::SparseSet< T >::Iterator = SparseSetIterator<T>
+
+ +

Iterator type.

+

Elements in the SparseSet can never be changed

+ +
+
+

Member Function Documentation

+ +

◆ insert()

+ +
+
+
+template<class T >
+ + + + + + + + +
bool nctl::SparseSet< T >::insert (value)
+
+ +

Inserts an element if not already in.

+
Returns
True if the element has been inserted
+ +
+
+ +

◆ remove()

+ +
+
+
+template<class T >
+ + + + + + + + +
bool nctl::SparseSet< T >::remove (value)
+
+ +

Removes a key from the sparseset, if it exists.

+
Returns
True if the element has been found and removed
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classnctl_1_1_sparse_set_iterator-members.html b/master/classnctl_1_1_sparse_set_iterator-members.html new file mode 100644 index 0000000000..6bd0b3df88 --- /dev/null +++ b/master/classnctl_1_1_sparse_set_iterator-members.html @@ -0,0 +1,93 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::SparseSetIterator< T > Member List
+
+
+ +

This is the complete list of members for nctl::SparseSetIterator< T >, including all inherited members.

+ + + + + + + + + + +
operator!=(const SparseSetIterator &lhs, const SparseSetIterator &rhs)nctl::SparseSetIterator< T >friend
operator*() constnctl::SparseSetIterator< T >
operator++()nctl::SparseSetIterator< T >
operator++(int)nctl::SparseSetIterator< T >
operator--()nctl::SparseSetIterator< T >
operator--(int)nctl::SparseSetIterator< T >
operator==(const SparseSetIterator &lhs, const SparseSetIterator &rhs)nctl::SparseSetIterator< T >friend
Reference typedefnctl::SparseSetIterator< T >
SparseSetIterator(const SparseSet< T > *sparseSet, int index) (defined in nctl::SparseSetIterator< T >)nctl::SparseSetIterator< T >inline
+ + + + diff --git a/master/classnctl_1_1_sparse_set_iterator.html b/master/classnctl_1_1_sparse_set_iterator.html new file mode 100644 index 0000000000..07c251e428 --- /dev/null +++ b/master/classnctl_1_1_sparse_set_iterator.html @@ -0,0 +1,145 @@ + + + + + + + +nCine: nctl::SparseSetIterator< T > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::SparseSetIterator< T > Class Template Reference
+
+
+ +

A sparseset iterator. + More...

+ +

#include <SparseSetIterator.h>

+ + + + + +

+Public Types

+using Reference = typename IteratorTraits< SparseSetIterator >::Reference
 Reference type which respects iterator constness.
 
+ + + + + + + + + + + + + + + + + + +

+Public Member Functions

SparseSetIterator (const SparseSet< T > *sparseSet, int index)
 
+Reference operator* () const
 Deferencing operator.
 
+SparseSetIteratoroperator++ ()
 Iterates to the next element (prefix)
 
+SparseSetIterator operator++ (int)
 Iterates to the next element (postfix)
 
+SparseSetIteratoroperator-- ()
 Iterates to the previous element (prefix)
 
+SparseSetIterator operator-- (int)
 Iterates to the previous element (postfix)
 
+ + + + + + + +

+Friends

+bool operator== (const SparseSetIterator &lhs, const SparseSetIterator &rhs)
 Equality operator.
 
+bool operator!= (const SparseSetIterator &lhs, const SparseSetIterator &rhs)
 Inequality operator.
 
+

Detailed Description

+

template<class T>
+class nctl::SparseSetIterator< T >

+ +

A sparseset iterator.

+

The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classnctl_1_1_stack_allocator-members.html b/master/classnctl_1_1_stack_allocator-members.html new file mode 100644 index 0000000000..8416710a2d --- /dev/null +++ b/master/classnctl_1_1_stack_allocator-members.html @@ -0,0 +1,124 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::StackAllocator Member List
+
+
+ +

This is the complete list of members for nctl::StackAllocator, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
allocate(size_t bytes, uint8_t alignment)nctl::IAllocatorinline
allocate(size_t bytes) (defined in nctl::IAllocator)nctl::IAllocatorinline
allocateFunc_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
AllocateFunction typedef (defined in nctl::IAllocator)nctl::IAllocator
base() constnctl::IAllocatorinline
base_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
copyOnReallocation() constnctl::IAllocatorinline
copyOnReallocation_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
current() const (defined in nctl::StackAllocator)nctl::StackAllocatorinline
deallocate(void *ptr)nctl::IAllocatorinline
deallocateFunc_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
DeallocateFunction typedef (defined in nctl::IAllocator)nctl::IAllocator
DefaultAlignmentnctl::IAllocatorstatic
deleteArray(T *ptr) (defined in nctl::IAllocator)nctl::IAllocator
deleteObject(T *ptr) (defined in nctl::IAllocator)nctl::IAllocator
freeMemory() constnctl::IAllocatorinline
IAllocator(const char *name, AllocateFunction allocFunc, ReallocateFunction reallocFunc, DeallocateFunction deallocFunc) (defined in nctl::IAllocator)nctl::IAllocatorinline
IAllocator(const char *name, AllocateFunction allocFunc, ReallocateFunction reallocFunc, DeallocateFunction deallocFunc, size_t size, void *base) (defined in nctl::IAllocator)nctl::IAllocator
init(size_t size, void *base) (defined in nctl::StackAllocator)nctl::StackAllocator
MaxNameLengthnctl::IAllocatorstatic
name() constnctl::IAllocatorinline
name_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
newArray(size_t numElements) (defined in nctl::IAllocator)nctl::IAllocator
newObject(Args &&... args) (defined in nctl::IAllocator)nctl::IAllocator
numAllocations() constnctl::IAllocatorinline
numAllocations_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
reallocate(void *ptr, size_t bytes, uint8_t alignment)nctl::IAllocator
reallocate(void *ptr, size_t bytes) (defined in nctl::IAllocator)nctl::IAllocatorinline
reallocateFunc_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
ReallocateFunction typedef (defined in nctl::IAllocator)nctl::IAllocator
setCopyOnReallocation(bool value)nctl::IAllocatorinline
size() constnctl::IAllocatorinline
size_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
StackAllocator() (defined in nctl::StackAllocator)nctl::StackAllocatorinline
StackAllocator(const char *name) (defined in nctl::StackAllocator)nctl::StackAllocatorexplicit
StackAllocator(size_t size, void *base) (defined in nctl::StackAllocator)nctl::StackAllocatorinline
StackAllocator(const char *name, size_t size, void *base) (defined in nctl::StackAllocator)nctl::StackAllocator
usedMemory() constnctl::IAllocatorinline
usedMemory_ (defined in nctl::IAllocator)nctl::IAllocatorprotected
~StackAllocator() (defined in nctl::StackAllocator)nctl::StackAllocator
+ + + + diff --git a/master/classnctl_1_1_stack_allocator.html b/master/classnctl_1_1_stack_allocator.html new file mode 100644 index 0000000000..69e0917cd8 --- /dev/null +++ b/master/classnctl_1_1_stack_allocator.html @@ -0,0 +1,251 @@ + + + + + + + +nCine: nctl::StackAllocator Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::StackAllocator Class Reference
+
+
+ +

A stack allocator. + More...

+ +

#include <StackAllocator.h>

+
+Inheritance diagram for nctl::StackAllocator:
+
+
Inheritance graph
+ + + + +
[legend]
+
+Collaboration diagram for nctl::StackAllocator:
+
+
Collaboration graph
+ + + + +
[legend]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

StackAllocator (const char *name)
 
StackAllocator (size_t size, void *base)
 
StackAllocator (const char *name, size_t size, void *base)
 
+void init (size_t size, void *base)
 
+const void * current () const
 
- Public Member Functions inherited from nctl::IAllocator
IAllocator (const char *name, AllocateFunction allocFunc, ReallocateFunction reallocFunc, DeallocateFunction deallocFunc)
 
IAllocator (const char *name, AllocateFunction allocFunc, ReallocateFunction reallocFunc, DeallocateFunction deallocFunc, size_t size, void *base)
 
+void * allocate (size_t bytes, uint8_t alignment)
 Tries to allocate the specified amount of memory with the specified alignment requirement.
 
+void * allocate (size_t bytes)
 
+void * reallocate (void *ptr, size_t bytes, uint8_t alignment)
 Tries to reallocate the allocation at the specified pointer with a different size.
 
+void * reallocate (void *ptr, size_t bytes)
 
+void deallocate (void *ptr)
 Deallocates the allocation at the specified pointer.
 
+const char * name () const
 Returns the name of the allocator.
 
+size_t size () const
 Returns the size of the buffer used for allocations.
 
+void * base () const
 Returns the address of the buffer used for allocations.
 
size_t usedMemory () const
 
size_t freeMemory () const
 
+size_t numAllocations () const
 Returns the number of active allocations.
 
+bool copyOnReallocation () const
 Returns the state of the copy on reallocation flag.
 
void setCopyOnReallocation (bool value)
 Sets the state of the copy on reallocation flag. More...
 
+template<class T , typename... Args>
T * newObject (Args &&... args)
 
+template<class T >
void deleteObject (T *ptr)
 
+template<class T >
T * newArray (size_t numElements)
 
+template<class T >
void deleteArray (T *ptr)
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Additional Inherited Members

- Public Types inherited from nctl::IAllocator
+using AllocateFunction = void *(*)(IAllocator *allocator, size_t, uint8_t)
 
+using ReallocateFunction = void *(*)(IAllocator *allocator, void *, size_t, uint8_t, size_t &)
 
+using DeallocateFunction = void(*)(IAllocator *allocator, void *)
 
- Static Public Attributes inherited from nctl::IAllocator
+static const uint8_t DefaultAlignment = 2 * sizeof(void *)
 16 bytes default alignment on 64bit and 8 bytes on 32bit
 
+static const unsigned int MaxNameLength = 64
 Maximum length for the allocator name string.
 
- Protected Attributes inherited from nctl::IAllocator
+AllocateFunction allocateFunc_
 
+ReallocateFunction reallocateFunc_
 
+DeallocateFunction deallocateFunc_
 
+char name_ [MaxNameLength]
 
+size_t size_
 
+void * base_
 
+size_t usedMemory_
 
+size_t numAllocations_
 
+bool copyOnReallocation_
 
+

Detailed Description

+

A stack allocator.

+

The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classnctl_1_1_stack_allocator__coll__graph.map b/master/classnctl_1_1_stack_allocator__coll__graph.map new file mode 100644 index 0000000000..b9ff8919ea --- /dev/null +++ b/master/classnctl_1_1_stack_allocator__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/classnctl_1_1_stack_allocator__coll__graph.md5 b/master/classnctl_1_1_stack_allocator__coll__graph.md5 new file mode 100644 index 0000000000..787399cf59 --- /dev/null +++ b/master/classnctl_1_1_stack_allocator__coll__graph.md5 @@ -0,0 +1 @@ +b1a92ca0d1ff55218165c9ca3cc21190 \ No newline at end of file diff --git a/master/classnctl_1_1_stack_allocator__coll__graph.png b/master/classnctl_1_1_stack_allocator__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..5f6455d96b497e4198d2e67cc731edc3ec3950a0 GIT binary patch literal 5598 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 + + + diff --git a/master/classnctl_1_1_stack_allocator__inherit__graph.md5 b/master/classnctl_1_1_stack_allocator__inherit__graph.md5 new file mode 100644 index 0000000000..3cfa62d406 --- /dev/null +++ b/master/classnctl_1_1_stack_allocator__inherit__graph.md5 @@ -0,0 +1 @@ +45c4c02fc0e7da8b2642d4a9ed352fff \ No newline at end of file diff --git a/master/classnctl_1_1_stack_allocator__inherit__graph.png b/master/classnctl_1_1_stack_allocator__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..33241474c1cbfba5c60bafa6ebf725502ac315cd GIT binary patch literal 3481 zcmcgvXH-+$x((&f6u1WthYnt;D$=AGLl6ZbAVrW~f;4H;YZAnQfP^B3A}v8U6e)7( z5PI)LLhk~hgFr}#)VIBNjQ8Fc_x~Mx?6t?*W36xP^{x5MIrn=*eHbeX9}5TsV%2`6 zVFWyJ!0pY%0JI?H>>8kDu-AoYfG&SsS&jJ^V5GjbhWgXsjNN&p;ZyQu_rbb!xP5kB zRMcmCrMx8NjD`Ues|R1=z}P`Vp5A6hkcK87%-EQ|b>zmEUY{;2+nb4Kik^jxiik=m z$;e*Zd{IHeioTOyr$DlP{Wwys`jt&!s|_^kNB2NnhTqii`Z@G;IinE|)*~o{y99qh zjB`avq=XwtihSqndqfSF-y0Iz-}shOY}+_9-Okc!WNe%X%_GF4v~m(ED;1uz-}>W* zq@?%s?&gsQT+Hk&H!33KL_(+Ee6Z~R$LfrCYL_w zF;n?|laOEGIS(EuLX!D3sV9`({*Pk1JW3usC6-m$uy`RyM@RGO#ir2oo}Ndvw6wu% zsn40%+4GBwW3(~i37MIL^*@@>`uPqcS?Z?U29F+PA&>WzQcCW6FM)s+opxucR@c`t z>FHMa*l0956%ry3g+l!|MqURkghcWydrs{#+pYE_Z1{tZ5UMmZG##CtPks(5TdB^b zmwGKWN!d1h%F4Rd(9ked<^an)@p-59JMH7Gi%&s?rNS<9z+9o&7Jy`M!s% z+E*Fqe*XMP&%p38HMKWR@E+6EtB$0#L6@|yGKcOA(_wtTc2sn9TYLN4s3@k1QaC(+ z+u)PzYpWVhpRKVQ`WY&(zqvSWjeSYptwzv3GBAJ<6oeqbEnjWwr|JCLJG7?kzT#x~ApX z)CcO3NF>7ET%ChoT$uDak?8s=8He+l#$qrzG?veveV)e_o}Q70tKM@;%D}BIX+3t783EmAo@lWE<$KxSOQ_W#& zphg6_u>9r5$miA7)ejhqL(Q7!JYLR!!|?j`>ykHbwz(+CKOYj%is4ZQCcE!$0{Qtg z=xkZz85)?Tq{6NjT}SUxt%|<3Ww*e9zF3xQYtTtDmIx z3a>>dL{;?#bfyFyustDX-x0;PtqOqvrSz%Ypk7o$f>7?Hi#XoXv$MOF2@WVcM13y7 z;sba43QdZbu3X76DKbUvw=%{E-mC7Lnn3(o@h^hH`b$K~;cXRtAydiawpn9nqxe|D zKC_c3>H#k^&QPmOBJtnd`1@FWgo5BR$!3TNqSu$B|=lUo7?(VFPdsd6IY=;(DG`M)U2c`QY%TyZA_ z1+t{w8VMSy%V<1if4u#B`{l|+2@-U+uBJv>dadoFsfP(K6>2)Ci0vM zvJ|Vt60iMCuf$jrNb5r7mG&3Z)0NJ{pYkfS7GO7?q0|L?06`t}Di?sC3u z&B9+zcOLlE+WMAJ*fnNLRf&SN`TQip0K%IXDFcCI0A!&y$^)>Ultp>CoI}_CTDn)c zT`R3V?&5SCmMI4dMUltN=ouL?2?^hp{3f-=FADTSs2R^%-~1MgK$O2cM|{L!c-3A) zw6(Q$+(#8+8T3U0q#kEdh>D6%m6TR5c1S?b2pjr%-3-yoWIA^0NKh+}u8yTvfb1_JtE7tuJ1+Pfl_J8VcA0GHu3@+0!qY=s#nGRQcd=xUZjI$&e3eO)psn zK2+&Sn5y%Wh-4E4^pF;EeA&9GFyFneHd3-?pLU*qhsHfc*8UW*hE*hCR!!rP&79;7Z_aj zd{{^t-t-uNTFKB8TiduiSIGGh0YV-#K0Dbi{VOjIY<=fddOE*w=+W_LJSyH<#7dVUD6-LF zR+zHpm&6cK=yb5$Nl#BN8+L(eYiml{x@# literal 0 HcmV?d00001 diff --git a/master/classnctl_1_1_static_array-members.html b/master/classnctl_1_1_static_array-members.html new file mode 100644 index 0000000000..2b872c5dd0 --- /dev/null +++ b/master/classnctl_1_1_static_array-members.html @@ -0,0 +1,142 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::StaticArray< T, C > Member List
+
+
+ +

This is the complete list of members for nctl::StaticArray< T, C >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
at(unsigned int index) constnctl::StaticArray< T, C >
at(unsigned int index)nctl::StaticArray< T, C >
back() constnctl::StaticArray< T, C >
back()nctl::StaticArray< T, C >
begin()nctl::StaticArray< T, C >inline
begin() constnctl::StaticArray< T, C >inline
capacity() constnctl::StaticArray< T, C >inline
cBegin() constnctl::StaticArray< T, C >inline
cEnd() constnctl::StaticArray< T, C >inline
clear()nctl::StaticArray< T, C >
ConstIterator typedefnctl::StaticArray< T, C >
ConstReverseIterator typedefnctl::StaticArray< T, C >
crBegin() constnctl::StaticArray< T, C >inline
crEnd() constnctl::StaticArray< T, C >inline
data() constnctl::StaticArray< T, C >inline
data()nctl::StaticArray< T, C >inline
emplace(Iterator position, Args &&... args)nctl::StaticArray< T, C >
emplaceAt(unsigned int index, Args &&... args)nctl::StaticArray< T, C >
emplaceBack(Args &&... args)nctl::StaticArray< T, C >
end()nctl::StaticArray< T, C >inline
end() constnctl::StaticArray< T, C >inline
erase(Iterator position)nctl::StaticArray< T, C >
erase(Iterator first, const Iterator last)nctl::StaticArray< T, C >
front() constnctl::StaticArray< T, C >
front()nctl::StaticArray< T, C >
insert(Iterator position, const T &value)nctl::StaticArray< T, C >
insert(Iterator position, T &&value)nctl::StaticArray< T, C >
insert(Iterator position, Iterator first, Iterator last)nctl::StaticArray< T, C >
insertAt(unsigned int index, const T &element)nctl::StaticArray< T, C >
insertAt(unsigned int index, T &&element)nctl::StaticArray< T, C >
insertRange(unsigned int index, const T *firstPtr, const T *lastPtr)nctl::StaticArray< T, C >
isEmpty() constnctl::StaticArray< T, C >inline
Iterator typedefnctl::StaticArray< T, C >
operator=(const StaticArray &other)nctl::StaticArray< T, C >
operator=(StaticArray &&other)nctl::StaticArray< T, C >
operator[](unsigned int index) constnctl::StaticArray< T, C >
operator[](unsigned int index)nctl::StaticArray< T, C >
popBack()nctl::StaticArray< T, C >
pushBack(const T &element)nctl::StaticArray< T, C >inline
pushBack(T &&element)nctl::StaticArray< T, C >inline
rBegin()nctl::StaticArray< T, C >inline
rBegin() constnctl::StaticArray< T, C >inline
removeAt(unsigned int index)nctl::StaticArray< T, C >inline
removeRange(unsigned int firstIndex, unsigned int lastIndex)nctl::StaticArray< T, C >
rEnd()nctl::StaticArray< T, C >inline
rEnd() constnctl::StaticArray< T, C >inline
ReverseIterator typedefnctl::StaticArray< T, C >
setSize(unsigned int newSize)nctl::StaticArray< T, C >
size() constnctl::StaticArray< T, C >inline
StaticArray()nctl::StaticArray< T, C >inline
StaticArray(StaticArrayMode mode)nctl::StaticArray< T, C >inlineexplicit
StaticArray(const StaticArray &other)nctl::StaticArray< T, C >
StaticArray(StaticArray &&other)nctl::StaticArray< T, C >
unorderedErase(Iterator position)nctl::StaticArray< T, C >
unorderedErase(Iterator first, const Iterator last)nctl::StaticArray< T, C >
unorderedRemoveAt(unsigned int index)nctl::StaticArray< T, C >inline
unorderedRemoveRange(unsigned int firstIndex, unsigned int lastIndex)nctl::StaticArray< T, C >
~StaticArray() (defined in nctl::StaticArray< T, C >)nctl::StaticArray< T, C >inline
+ + + + diff --git a/master/classnctl_1_1_static_array.html b/master/classnctl_1_1_static_array.html new file mode 100644 index 0000000000..4dad68d87c --- /dev/null +++ b/master/classnctl_1_1_static_array.html @@ -0,0 +1,470 @@ + + + + + + + +nCine: nctl::StaticArray< T, C > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::StaticArray< T, C > Class Template Reference
+
+
+ +

A static array based on templates that stores elements in the stack. + More...

+ +

#include <StaticArray.h>

+ + + + + + + + + + + + + + +

+Public Types

+using Iterator = ArrayIterator< T, false >
 Iterator type.
 
+using ConstIterator = ArrayIterator< T, true >
 Constant iterator type.
 
+using ReverseIterator = nctl::ReverseIterator< Iterator >
 Reverse iterator type.
 
+using ConstReverseIterator = nctl::ReverseIterator< ConstIterator >
 Reverse constant iterator type.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

StaticArray ()
 Constructs an empty array with fixed capacity.
 
StaticArray (StaticArrayMode mode)
 Constructs an array with the option for it to have the size match its capacity.
 
StaticArray (const StaticArray &other)
 Copy constructor.
 
StaticArray (StaticArray &&other)
 Move constructor.
 
+StaticArrayoperator= (const StaticArray &other)
 Assignment operator.
 
+StaticArrayoperator= (StaticArray &&other)
 Move assignment operator.
 
+Iterator begin ()
 Returns an iterator to the first element.
 
+ReverseIterator rBegin ()
 Returns a reverse iterator to the last element.
 
+Iterator end ()
 Returns an iterator to past the last element.
 
+ReverseIterator rEnd ()
 Returns a reverse iterator to prior the first element.
 
+ConstIterator begin () const
 Returns a constant iterator to the first element.
 
+ConstReverseIterator rBegin () const
 Returns a constant reverse iterator to the last element.
 
+ConstIterator end () const
 Returns a constant iterator to past the last lement.
 
+ConstReverseIterator rEnd () const
 Returns a constant reverse iterator to prior the first element.
 
+ConstIterator cBegin () const
 Returns a constant iterator to the first element.
 
+ConstReverseIterator crBegin () const
 Returns a constant reverse iterator to the last element.
 
+ConstIterator cEnd () const
 Returns a constant iterator to past the last lement.
 
+ConstReverseIterator crEnd () const
 Returns a constant reverse iterator to prior the first element.
 
+bool isEmpty () const
 Returns true if the array is empty.
 
unsigned int size () const
 Returns the array size. More...
 
+unsigned int capacity () const
 Returns the array capacity.
 
+void setSize (unsigned int newSize)
 Sets a new size for the array (allowing for "holes")
 
void clear ()
 Clears the array. More...
 
+const T & front () const
 Returns a constant reference to the first element in constant time.
 
+T & front ()
 Returns a reference to the first element in constant time.
 
+const T & back () const
 Returns a constant reference to the last element in constant time.
 
+T & back ()
 Returns a reference to the last element in constant time.
 
+void pushBack (const T &element)
 Inserts a new element as the last one in constant time.
 
+void pushBack (T &&element)
 Move inserts a new element as the last one in constant time.
 
+template<typename... Args>
void emplaceBack (Args &&... args)
 Constructs a new element as the last one in constant time.
 
+void popBack ()
 Removes the last element in constant time.
 
+T * insertRange (unsigned int index, const T *firstPtr, const T *lastPtr)
 Inserts new elements at the specified position from a source range, last not included (shifting elements around)
 
+T * insertAt (unsigned int index, const T &element)
 Inserts a new element at a specified position (shifting elements around)
 
+T * insertAt (unsigned int index, T &&element)
 Move inserts a new element at a specified position (shifting elements around)
 
+template<typename... Args>
T * emplaceAt (unsigned int index, Args &&... args)
 Constructs a new element at the position specified by the index.
 
+Iterator insert (Iterator position, const T &value)
 Inserts a new element at the position specified by the iterator (shifting elements around)
 
+Iterator insert (Iterator position, T &&value)
 Move inserts a new element at the position specified by the iterator (shifting elements around)
 
+Iterator insert (Iterator position, Iterator first, Iterator last)
 Inserts new elements from a source at the position specified by the iterator (shifting elements around)
 
+template<typename... Args>
Iterator emplace (Iterator position, Args &&... args)
 Constructs a new element at the position specified by the iterator.
 
+T * removeRange (unsigned int firstIndex, unsigned int lastIndex)
 Removes the specified range of elements, last not included (shifting elements around)
 
+Iterator removeAt (unsigned int index)
 Removes an element at a specified position (shifting elements around)
 
+Iterator erase (Iterator position)
 Removes the element pointed by the iterator (shifting elements around)
 
+Iterator erase (Iterator first, const Iterator last)
 Removes the elements in the range, last not included (shifting elements around)
 
T * unorderedRemoveRange (unsigned int firstIndex, unsigned int lastIndex)
 Removes the specified range of elements, last not included (moving tail elements in place) More...
 
+Iterator unorderedRemoveAt (unsigned int index)
 Removes an element at a specified position (moving the last element in place)
 
Iterator unorderedErase (Iterator position)
 Removes the element pointed by the iterator (moving the last element in place) More...
 
Iterator unorderedErase (Iterator first, const Iterator last)
 Removes the elements in the range, last not included (moving tail elements in place) More...
 
+const T & at (unsigned int index) const
 Read-only access to the specified element (with bounds checking)
 
+T & at (unsigned int index)
 Access to the specified element (with bounds checking)
 
+const T & operator[] (unsigned int index) const
 Read-only subscript operator.
 
+T & operator[] (unsigned int index)
 Subscript operator.
 
+const T * data () const
 Returns a constant pointer to the allocated memory.
 
+T * data ()
 Returns a pointer to the allocated memory.
 
+

Detailed Description

+

template<class T, unsigned int C>
+class nctl::StaticArray< T, C >

+ +

A static array based on templates that stores elements in the stack.

+

Member Function Documentation

+ +

◆ clear()

+ +
+
+
+template<class T , unsigned int C>
+ + + + +
void nctl::StaticArray< T, C >::clear
+
+ +

Clears the array.

+

Size will be set to zero but capacity remains unmodified.

+ +
+
+ +

◆ size()

+ +
+
+
+template<class T , unsigned int C>
+ + + + + +
+ + + + + + + +
unsigned int nctl::StaticArray< T, C >::size () const
+
+inline
+
+ +

Returns the array size.

+

The array is filled without gaps until the Size()-1 element.

+ +
+
+ +

◆ unorderedErase() [1/2]

+ +
+
+
+template<class T , unsigned int C>
+ + + + + + + + + + + + + + + + + + +
StaticArray< T, C >::Iterator nctl::StaticArray< T, C >::unorderedErase (Iterator first,
const Iterator last 
)
+
+ +

Removes the elements in the range, last not included (moving tail elements in place)

+
Note
This method is faster than erase() but it will not preserve the array order
+ +
+
+ +

◆ unorderedErase() [2/2]

+ +
+
+
+template<class T , unsigned int C>
+ + + + + + + + +
StaticArray< T, C >::Iterator nctl::StaticArray< T, C >::unorderedErase (Iterator position)
+
+ +

Removes the element pointed by the iterator (moving the last element in place)

+
Note
This method is faster than erase() but it will not preserve the array order
+ +
+
+ +

◆ unorderedRemoveRange()

+ +
+
+
+template<class T , unsigned int C>
+ + + + + + + + + + + + + + + + + + +
T * nctl::StaticArray< T, C >::unorderedRemoveRange (unsigned int firstIndex,
unsigned int lastIndex 
)
+
+ +

Removes the specified range of elements, last not included (moving tail elements in place)

+
Note
This method is faster than removeRange() but it will not preserve the array order
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classnctl_1_1_static_hash_map-members.html b/master/classnctl_1_1_static_hash_map-members.html new file mode 100644 index 0000000000..d45424dba2 --- /dev/null +++ b/master/classnctl_1_1_static_hash_map-members.html @@ -0,0 +1,124 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::StaticHashMap< K, T, Capacity, HashFunc > Member List
+
+
+ +

This is the complete list of members for nctl::StaticHashMap< K, T, Capacity, HashFunc >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
begin()nctl::StaticHashMap< K, T, Capacity, HashFunc >
begin() constnctl::StaticHashMap< K, T, Capacity, HashFunc >inline
capacity() constnctl::StaticHashMap< K, T, Capacity, HashFunc >inline
cBegin() constnctl::StaticHashMap< K, T, Capacity, HashFunc >inline
cEnd() constnctl::StaticHashMap< K, T, Capacity, HashFunc >inline
clear()nctl::StaticHashMap< K, T, Capacity, HashFunc >
ConstIterator typedefnctl::StaticHashMap< K, T, Capacity, HashFunc >
ConstReverseIterator typedefnctl::StaticHashMap< K, T, Capacity, HashFunc >
contains(const K &key, T &returnedValue) constnctl::StaticHashMap< K, T, Capacity, HashFunc >
crBegin() constnctl::StaticHashMap< K, T, Capacity, HashFunc >inline
crEnd() constnctl::StaticHashMap< K, T, Capacity, HashFunc >inline
emplace(const K &key, Args &&... args)nctl::StaticHashMap< K, T, Capacity, HashFunc >
end()nctl::StaticHashMap< K, T, Capacity, HashFunc >
end() constnctl::StaticHashMap< K, T, Capacity, HashFunc >inline
find(const K &key)nctl::StaticHashMap< K, T, Capacity, HashFunc >
find(const K &key) constnctl::StaticHashMap< K, T, Capacity, HashFunc >
hash(const K &key) constnctl::StaticHashMap< K, T, Capacity, HashFunc >inline
insert(const K &key, const T &value)nctl::StaticHashMap< K, T, Capacity, HashFunc >
insert(const K &key, T &&value)nctl::StaticHashMap< K, T, Capacity, HashFunc >
isEmpty() constnctl::StaticHashMap< K, T, Capacity, HashFunc >inline
Iterator typedefnctl::StaticHashMap< K, T, Capacity, HashFunc >
loadFactor() constnctl::StaticHashMap< K, T, Capacity, HashFunc >inline
operator=(const StaticHashMap &other)nctl::StaticHashMap< K, T, Capacity, HashFunc >
operator=(StaticHashMap &&other)nctl::StaticHashMap< K, T, Capacity, HashFunc >
operator[](const K &key)nctl::StaticHashMap< K, T, Capacity, HashFunc >
rBegin()nctl::StaticHashMap< K, T, Capacity, HashFunc >
rBegin() constnctl::StaticHashMap< K, T, Capacity, HashFunc >
remove(const K &key)nctl::StaticHashMap< K, T, Capacity, HashFunc >
rEnd()nctl::StaticHashMap< K, T, Capacity, HashFunc >
rEnd() constnctl::StaticHashMap< K, T, Capacity, HashFunc >
ReverseIterator typedefnctl::StaticHashMap< K, T, Capacity, HashFunc >
size() constnctl::StaticHashMap< K, T, Capacity, HashFunc >inline
StaticHashMap() (defined in nctl::StaticHashMap< K, T, Capacity, HashFunc >)nctl::StaticHashMap< K, T, Capacity, HashFunc >inline
StaticHashMap(const StaticHashMap &other)nctl::StaticHashMap< K, T, Capacity, HashFunc >
StaticHashMap(StaticHashMap &&other)nctl::StaticHashMap< K, T, Capacity, HashFunc >
StaticHashMapHelperTraits< K, T, HashFunc, Capacity, false > (defined in nctl::StaticHashMap< K, T, Capacity, HashFunc >)nctl::StaticHashMap< K, T, Capacity, HashFunc >friend
StaticHashMapHelperTraits< K, T, HashFunc, Capacity, true > (defined in nctl::StaticHashMap< K, T, Capacity, HashFunc >)nctl::StaticHashMap< K, T, Capacity, HashFunc >friend
StaticHashMapIterator< K, T, HashFunc, Capacity, false > (defined in nctl::StaticHashMap< K, T, Capacity, HashFunc >)nctl::StaticHashMap< K, T, Capacity, HashFunc >friend
StaticHashMapIterator< K, T, HashFunc, Capacity, true > (defined in nctl::StaticHashMap< K, T, Capacity, HashFunc >)nctl::StaticHashMap< K, T, Capacity, HashFunc >friend
~StaticHashMap() (defined in nctl::StaticHashMap< K, T, Capacity, HashFunc >)nctl::StaticHashMap< K, T, Capacity, HashFunc >inline
+ + + + diff --git a/master/classnctl_1_1_static_hash_map.html b/master/classnctl_1_1_static_hash_map.html new file mode 100644 index 0000000000..f315dcc47b --- /dev/null +++ b/master/classnctl_1_1_static_hash_map.html @@ -0,0 +1,424 @@ + + + + + + + +nCine: nctl::StaticHashMap< K, T, Capacity, HashFunc > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::StaticHashMap< K, T, Capacity, HashFunc > Class Template Reference
+
+
+ +

A template based hashmap implementation with open addressing and leapfrog probing (version with static allocation) + More...

+ +

#include <StaticHashMap.h>

+ + + + + + + + + + + + + + +

+Public Types

+using Iterator = StaticHashMapIterator< K, T, HashFunc, Capacity, false >
 Iterator type.
 
+using ConstIterator = StaticHashMapIterator< K, T, HashFunc, Capacity, true >
 Constant iterator type.
 
+using ReverseIterator = nctl::ReverseIterator< Iterator >
 Reverse iterator type.
 
+using ConstReverseIterator = nctl::ReverseIterator< ConstIterator >
 Reverse constant iterator type.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

StaticHashMap (const StaticHashMap &other)
 Copy constructor.
 
StaticHashMap (StaticHashMap &&other)
 Move constructor.
 
+StaticHashMapoperator= (const StaticHashMap &other)
 Aassignment operator.
 
+StaticHashMapoperator= (StaticHashMap &&other)
 Move aassignment operator.
 
+Iterator begin ()
 Returns an iterator to the first element.
 
+ReverseIterator rBegin ()
 Returns a reverse iterator to the last element.
 
+Iterator end ()
 Returns an iterator to past the last element.
 
+ReverseIterator rEnd ()
 Returns a reverse iterator to prior the first element.
 
+ConstIterator begin () const
 Returns a constant iterator to the first element.
 
+ConstReverseIterator rBegin () const
 Returns a constant reverse iterator to the last element.
 
+ConstIterator end () const
 Returns a constant iterator to past the last lement.
 
+ConstReverseIterator rEnd () const
 Returns a constant reverse iterator to prior the first element.
 
+ConstIterator cBegin () const
 Returns a constant iterator to the first element.
 
+ConstReverseIterator crBegin () const
 Returns a constant reverse iterator to the last element.
 
+ConstIterator cEnd () const
 Returns a constant iterator to past the last lement.
 
+ConstReverseIterator crEnd () const
 Returns a constant reverse iterator to prior the first element.
 
+T & operator[] (const K &key)
 Subscript operator.
 
bool insert (const K &key, const T &value)
 Inserts an element if no other has the same key. More...
 
bool insert (const K &key, T &&value)
 Moves an element if no other has the same key. More...
 
template<typename... Args>
bool emplace (const K &key, Args &&... args)
 Constructs an element if no other has the same key. More...
 
+unsigned int capacity () const
 Returns the capacity of the hashmap.
 
+bool isEmpty () const
 Returns true if the hashmap is empty.
 
+unsigned int size () const
 Returns the number of elements in the hashmap.
 
+float loadFactor () const
 Returns the ratio between used and total buckets.
 
+hash_t hash (const K &key) const
 Returns the hash of a given key.
 
+void clear ()
 Clears the hashmap.
 
+bool contains (const K &key, T &returnedValue) const
 Checks whether an element is in the hashmap or not.
 
T * find (const K &key)
 Checks whether an element is in the hashmap or not. More...
 
const T * find (const K &key) const
 Checks whether an element is in the hashmap or not (read-only) More...
 
bool remove (const K &key)
 Removes a key from the hashmap, if it exists. More...
 
+ + + + + + + + + +

+Friends

+class StaticHashMapIterator< K, T, HashFunc, Capacity, false >
 
+class StaticHashMapIterator< K, T, HashFunc, Capacity, true >
 
+struct StaticHashMapHelperTraits< K, T, HashFunc, Capacity, false >
 
+struct StaticHashMapHelperTraits< K, T, HashFunc, Capacity, true >
 
+

Detailed Description

+

template<class K, class T, unsigned int Capacity, class HashFunc = FNV1aHashFunc<K>>
+class nctl::StaticHashMap< K, T, Capacity, HashFunc >

+ +

A template based hashmap implementation with open addressing and leapfrog probing (version with static allocation)

+

Member Function Documentation

+ +

◆ emplace()

+ +
+
+
+template<class K , class T , unsigned int Capacity, class HashFunc >
+
+template<typename... Args>
+ + + + + + + + + + + + + + + + + + +
bool nctl::StaticHashMap< K, T, Capacity, HashFunc >::emplace (const K & key,
Args &&... args 
)
+
+ +

Constructs an element if no other has the same key.

+
Returns
True if the element has been emplaced
+ +
+
+ +

◆ find() [1/2]

+ +
+
+
+template<class K , class T , unsigned int Capacity, class HashFunc >
+ + + + + + + + +
T * nctl::StaticHashMap< K, T, Capacity, HashFunc >::find (const K & key)
+
+ +

Checks whether an element is in the hashmap or not.

+
Note
Prefer this method if copying T is expensive, but always check the validity of returned pointer.
+ +
+
+ +

◆ find() [2/2]

+ +
+
+
+template<class K , class T , unsigned int Capacity, class HashFunc >
+ + + + + + + + +
const T * nctl::StaticHashMap< K, T, Capacity, HashFunc >::find (const K & key) const
+
+ +

Checks whether an element is in the hashmap or not (read-only)

+
Note
Prefer this method if copying T is expensive, but always check the validity of returned pointer.
+ +
+
+ +

◆ insert() [1/2]

+ +
+
+
+template<class K , class T , unsigned int Capacity, class HashFunc >
+ + + + + + + + + + + + + + + + + + +
bool nctl::StaticHashMap< K, T, Capacity, HashFunc >::insert (const K & key,
const T & value 
)
+
+ +

Inserts an element if no other has the same key.

+
Returns
True if the element has been inserted
+ +
+
+ +

◆ insert() [2/2]

+ +
+
+
+template<class K , class T , unsigned int Capacity, class HashFunc >
+ + + + + + + + + + + + + + + + + + +
bool nctl::StaticHashMap< K, T, Capacity, HashFunc >::insert (const K & key,
T && value 
)
+
+ +

Moves an element if no other has the same key.

+
Returns
True if the element has been inserted
+ +
+
+ +

◆ remove()

+ +
+
+
+template<class K , class T , unsigned int Capacity, class HashFunc >
+ + + + + + + + +
bool nctl::StaticHashMap< K, T, Capacity, HashFunc >::remove (const K & key)
+
+ +

Removes a key from the hashmap, if it exists.

+
Returns
True if the element has been found and removed
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classnctl_1_1_static_hash_map_iterator-members.html b/master/classnctl_1_1_static_hash_map_iterator-members.html new file mode 100644 index 0000000000..6a6385ee4e --- /dev/null +++ b/master/classnctl_1_1_static_hash_map_iterator-members.html @@ -0,0 +1,101 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::StaticHashMapIterator< K, T, HashFunc, Capacity, IsConst > Member List
+
+
+ +

This is the complete list of members for nctl::StaticHashMapIterator< K, T, HashFunc, Capacity, IsConst >, including all inherited members.

+ + + + + + + + + + + + + + + + + + +
hash() constnctl::StaticHashMapIterator< K, T, HashFunc, Capacity, IsConst >
key() constnctl::StaticHashMapIterator< K, T, HashFunc, Capacity, IsConst >
node() constnctl::StaticHashMapIterator< K, T, HashFunc, Capacity, IsConst >
operator!=(const StaticHashMapIterator &lhs, const StaticHashMapIterator &rhs)nctl::StaticHashMapIterator< K, T, HashFunc, Capacity, IsConst >friend
operator*() constnctl::StaticHashMapIterator< K, T, HashFunc, Capacity, IsConst >
operator++()nctl::StaticHashMapIterator< K, T, HashFunc, Capacity, IsConst >
operator++(int)nctl::StaticHashMapIterator< K, T, HashFunc, Capacity, IsConst >
operator--()nctl::StaticHashMapIterator< K, T, HashFunc, Capacity, IsConst >
operator--(int)nctl::StaticHashMapIterator< K, T, HashFunc, Capacity, IsConst >
operator==(const StaticHashMapIterator &lhs, const StaticHashMapIterator &rhs)nctl::StaticHashMapIterator< K, T, HashFunc, Capacity, IsConst >friend
Reference typedefnctl::StaticHashMapIterator< K, T, HashFunc, Capacity, IsConst >
SentinelTagInit enum namenctl::StaticHashMapIterator< K, T, HashFunc, Capacity, IsConst >
StaticHashMapIterator(typename StaticHashMapHelperTraits< K, T, HashFunc, Capacity, IsConst >::HashMapPtr hashMap, unsigned int bucketIndex) (defined in nctl::StaticHashMapIterator< K, T, HashFunc, Capacity, IsConst >)nctl::StaticHashMapIterator< K, T, HashFunc, Capacity, IsConst >inline
StaticHashMapIterator(typename StaticHashMapHelperTraits< K, T, HashFunc, Capacity, IsConst >::HashMapPtr hashMap, SentinelTagInit tag) (defined in nctl::StaticHashMapIterator< K, T, HashFunc, Capacity, IsConst >)nctl::StaticHashMapIterator< K, T, HashFunc, Capacity, IsConst >
StaticHashMapIterator(const StaticHashMapIterator< K, T, HashFunc, Capacity, false > &it)nctl::StaticHashMapIterator< K, T, HashFunc, Capacity, IsConst >inline
StaticHashMapIterator< K, T, HashFunc, Capacity, true > classnctl::StaticHashMapIterator< K, T, HashFunc, Capacity, IsConst >friend
value() constnctl::StaticHashMapIterator< K, T, HashFunc, Capacity, IsConst >
+ + + + diff --git a/master/classnctl_1_1_static_hash_map_iterator.html b/master/classnctl_1_1_static_hash_map_iterator.html new file mode 100644 index 0000000000..52ecc40b9d --- /dev/null +++ b/master/classnctl_1_1_static_hash_map_iterator.html @@ -0,0 +1,210 @@ + + + + + + + +nCine: nctl::StaticHashMapIterator< K, T, HashFunc, Capacity, IsConst > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::StaticHashMapIterator< K, T, HashFunc, Capacity, IsConst > Class Template Reference
+
+
+ +

A hashmap iterator. + More...

+ +

#include <StaticHashMapIterator.h>

+ + + + + + + + +

+Public Types

enum class  SentinelTagInit { BEGINNING +, END + }
 Sentinel tags to initialize the iterator at the beginning and end. More...
 
+using Reference = typename IteratorTraits< StaticHashMapIterator >::Reference
 Reference type which respects iterator constness.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

StaticHashMapIterator (typename StaticHashMapHelperTraits< K, T, HashFunc, Capacity, IsConst >::HashMapPtr hashMap, unsigned int bucketIndex)
 
StaticHashMapIterator (typename StaticHashMapHelperTraits< K, T, HashFunc, Capacity, IsConst >::HashMapPtr hashMap, SentinelTagInit tag)
 
StaticHashMapIterator (const StaticHashMapIterator< K, T, HashFunc, Capacity, false > &it)
 Copy constructor to implicitly convert a non constant iterator to a constant one.
 
+Reference operator* () const
 Deferencing operator.
 
+StaticHashMapIteratoroperator++ ()
 Iterates to the next element (prefix)
 
+StaticHashMapIterator operator++ (int)
 Iterates to the next element (postfix)
 
+StaticHashMapIteratoroperator-- ()
 Iterates to the previous element (prefix)
 
+StaticHashMapIterator operator-- (int)
 Iterates to the previous element (postfix)
 
+StaticHashMapHelperTraits< K, T, HashFunc, Capacity, IsConst >::NodeReference node () const
 Returns the hashmap node currently pointed by the iterator.
 
+const T & value () const
 Returns the value associated to the currently pointed node.
 
+const K & key () const
 Returns the key associated to the currently pointed node.
 
+hash_t hash () const
 Returns the hash associated to the currently pointed node.
 
+ + + + + + + + + + +

+Friends

+class StaticHashMapIterator< K, T, HashFunc, Capacity, true >
 For non constant to constant iterator implicit conversion.
 
+bool operator== (const StaticHashMapIterator &lhs, const StaticHashMapIterator &rhs)
 Equality operator.
 
+bool operator!= (const StaticHashMapIterator &lhs, const StaticHashMapIterator &rhs)
 Inequality operator.
 
+

Detailed Description

+

template<class K, class T, class HashFunc, unsigned int Capacity, bool IsConst>
+class nctl::StaticHashMapIterator< K, T, HashFunc, Capacity, IsConst >

+ +

A hashmap iterator.

+

Member Enumeration Documentation

+ +

◆ SentinelTagInit

+ +
+
+
+template<class K , class T , class HashFunc , unsigned int Capacity, bool IsConst>
+ + + + + +
+ + + + +
enum nctl::StaticHashMapIterator::SentinelTagInit
+
+strong
+
+ +

Sentinel tags to initialize the iterator at the beginning and end.

+ + + +
Enumerator
BEGINNING 

Iterator at the beginning, next element is the first one.

+
END 

Iterator at the end, previous element is the last one.

+
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classnctl_1_1_static_hash_set-members.html b/master/classnctl_1_1_static_hash_set-members.html new file mode 100644 index 0000000000..2fe6af8ed4 --- /dev/null +++ b/master/classnctl_1_1_static_hash_set-members.html @@ -0,0 +1,120 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::StaticHashSet< K, Capacity, HashFunc > Member List
+
+
+ +

This is the complete list of members for nctl::StaticHashSet< K, Capacity, HashFunc >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
begin()nctl::StaticHashSet< K, Capacity, HashFunc >
begin() constnctl::StaticHashSet< K, Capacity, HashFunc >inline
capacity() constnctl::StaticHashSet< K, Capacity, HashFunc >inline
cBegin() constnctl::StaticHashSet< K, Capacity, HashFunc >inline
cEnd() constnctl::StaticHashSet< K, Capacity, HashFunc >inline
clear()nctl::StaticHashSet< K, Capacity, HashFunc >
ConstIterator typedefnctl::StaticHashSet< K, Capacity, HashFunc >
ConstReverseIterator typedefnctl::StaticHashSet< K, Capacity, HashFunc >
contains(const K &key) constnctl::StaticHashSet< K, Capacity, HashFunc >
crBegin() constnctl::StaticHashSet< K, Capacity, HashFunc >inline
crEnd() constnctl::StaticHashSet< K, Capacity, HashFunc >inline
end()nctl::StaticHashSet< K, Capacity, HashFunc >
end() constnctl::StaticHashSet< K, Capacity, HashFunc >inline
find(const K &key)nctl::StaticHashSet< K, Capacity, HashFunc >
find(const K &key) constnctl::StaticHashSet< K, Capacity, HashFunc >
hash(const K &key) constnctl::StaticHashSet< K, Capacity, HashFunc >inline
insert(const K &key)nctl::StaticHashSet< K, Capacity, HashFunc >
insert(K &&key)nctl::StaticHashSet< K, Capacity, HashFunc >
isEmpty() constnctl::StaticHashSet< K, Capacity, HashFunc >inline
Iterator typedefnctl::StaticHashSet< K, Capacity, HashFunc >
loadFactor() constnctl::StaticHashSet< K, Capacity, HashFunc >inline
operator=(const StaticHashSet &other)nctl::StaticHashSet< K, Capacity, HashFunc >
operator=(StaticHashSet &&other)nctl::StaticHashSet< K, Capacity, HashFunc >
rBegin()nctl::StaticHashSet< K, Capacity, HashFunc >
rBegin() constnctl::StaticHashSet< K, Capacity, HashFunc >
remove(const K &key)nctl::StaticHashSet< K, Capacity, HashFunc >
rEnd()nctl::StaticHashSet< K, Capacity, HashFunc >
rEnd() constnctl::StaticHashSet< K, Capacity, HashFunc >
ReverseIterator typedefnctl::StaticHashSet< K, Capacity, HashFunc >
size() constnctl::StaticHashSet< K, Capacity, HashFunc >inline
StaticHashSet() (defined in nctl::StaticHashSet< K, Capacity, HashFunc >)nctl::StaticHashSet< K, Capacity, HashFunc >inline
StaticHashSet(const StaticHashSet &other)nctl::StaticHashSet< K, Capacity, HashFunc >
StaticHashSet(StaticHashSet &&other)nctl::StaticHashSet< K, Capacity, HashFunc >
StaticHashSetHelperTraits< K, HashFunc, Capacity > (defined in nctl::StaticHashSet< K, Capacity, HashFunc >)nctl::StaticHashSet< K, Capacity, HashFunc >friend
StaticHashSetIterator< K, HashFunc, Capacity > (defined in nctl::StaticHashSet< K, Capacity, HashFunc >)nctl::StaticHashSet< K, Capacity, HashFunc >friend
~StaticHashSet() (defined in nctl::StaticHashSet< K, Capacity, HashFunc >)nctl::StaticHashSet< K, Capacity, HashFunc >inline
+ + + + diff --git a/master/classnctl_1_1_static_hash_set.html b/master/classnctl_1_1_static_hash_set.html new file mode 100644 index 0000000000..0c0eb50969 --- /dev/null +++ b/master/classnctl_1_1_static_hash_set.html @@ -0,0 +1,354 @@ + + + + + + + +nCine: nctl::StaticHashSet< K, Capacity, HashFunc > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::StaticHashSet< K, Capacity, HashFunc > Class Template Reference
+
+
+ +

A template based hashset implementation with open addressing and leapfrog probing (version with static allocation) + More...

+ +

#include <StaticHashSet.h>

+ + + + + + + + + + + + + + +

+Public Types

+using Iterator = StaticHashSetIterator< K, HashFunc, Capacity >
 Iterator type.
 
+using ConstIterator = StaticHashSetIterator< K, HashFunc, Capacity >
 Constant iterator type.
 
+using ReverseIterator = nctl::ReverseIterator< Iterator >
 Reverse iterator type.
 
+using ConstReverseIterator = nctl::ReverseIterator< ConstIterator >
 Reverse constant iterator type.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

StaticHashSet (const StaticHashSet &other)
 Copy constructor.
 
StaticHashSet (StaticHashSet &&other)
 Move constructor.
 
+StaticHashSetoperator= (const StaticHashSet &other)
 Aassignment operator.
 
+StaticHashSetoperator= (StaticHashSet &&other)
 Move aassignment operator.
 
+Iterator begin ()
 Returns an iterator to the first element.
 
+ReverseIterator rBegin ()
 Returns a reverse iterator to the last element.
 
+Iterator end ()
 Returns an iterator to past the last element.
 
+ReverseIterator rEnd ()
 Returns a reverse iterator to prior the first element.
 
+ConstIterator begin () const
 Returns a constant iterator to the first element.
 
+ConstReverseIterator rBegin () const
 Returns a constant reverse iterator to the last element.
 
+ConstIterator end () const
 Returns a constant iterator to past the last lement.
 
+ConstReverseIterator rEnd () const
 Returns a constant reverse iterator to prior the first element.
 
+ConstIterator cBegin () const
 Returns a constant iterator to the first element.
 
+ConstReverseIterator crBegin () const
 Returns a constant reverse iterator to the last element.
 
+ConstIterator cEnd () const
 Returns a constant iterator to past the last lement.
 
+ConstReverseIterator crEnd () const
 Returns a constant reverse iterator to prior the first element.
 
bool insert (const K &key)
 Inserts an element if not already in. More...
 
bool insert (K &&key)
 Moves an element if not already in. More...
 
+unsigned int capacity () const
 Returns the capacity of the hashset.
 
+bool isEmpty () const
 Returns true if the hashset is empty.
 
+unsigned int size () const
 Returns the number of elements in the hashset.
 
+float loadFactor () const
 Returns the ratio between used and total buckets.
 
+hash_t hash (const K &key) const
 Returns the hash of a given key.
 
+void clear ()
 Clears the hashset.
 
+bool contains (const K &key) const
 Checks whether an element is in the hashset or not.
 
K * find (const K &key)
 Checks whether an element is in the hashset or not. More...
 
const K * find (const K &key) const
 Checks whether an element is in the hashset or not (read-only) More...
 
bool remove (const K &key)
 Removes a key from the hashset, if it exists. More...
 
+ + + + + +

+Friends

+class StaticHashSetIterator< K, HashFunc, Capacity >
 
+struct StaticHashSetHelperTraits< K, HashFunc, Capacity >
 
+

Detailed Description

+

template<class K, unsigned int Capacity, class HashFunc = FNV1aHashFunc<K>>
+class nctl::StaticHashSet< K, Capacity, HashFunc >

+ +

A template based hashset implementation with open addressing and leapfrog probing (version with static allocation)

+

Member Function Documentation

+ +

◆ find() [1/2]

+ +
+
+
+template<class K , unsigned int Capacity, class HashFunc >
+ + + + + + + + +
K * nctl::StaticHashSet< K, Capacity, HashFunc >::find (const K & key)
+
+ +

Checks whether an element is in the hashset or not.

+
Note
Prefer this method if copying T is expensive, but always check the validity of returned pointer.
+ +
+
+ +

◆ find() [2/2]

+ +
+
+
+template<class K , unsigned int Capacity, class HashFunc >
+ + + + + + + + +
const K * nctl::StaticHashSet< K, Capacity, HashFunc >::find (const K & key) const
+
+ +

Checks whether an element is in the hashset or not (read-only)

+
Note
Prefer this method if copying T is expensive, but always check the validity of returned pointer.
+ +
+
+ +

◆ insert() [1/2]

+ +
+
+
+template<class K , unsigned int Capacity, class HashFunc >
+ + + + + + + + +
bool nctl::StaticHashSet< K, Capacity, HashFunc >::insert (const K & key)
+
+ +

Inserts an element if not already in.

+
Returns
True if the element has been inserted
+ +
+
+ +

◆ insert() [2/2]

+ +
+
+
+template<class K , unsigned int Capacity, class HashFunc >
+ + + + + + + + +
bool nctl::StaticHashSet< K, Capacity, HashFunc >::insert (K && key)
+
+ +

Moves an element if not already in.

+
Returns
True if the element has been inserted
+ +
+
+ +

◆ remove()

+ +
+
+
+template<class K , unsigned int Capacity, class HashFunc >
+ + + + + + + + +
bool nctl::StaticHashSet< K, Capacity, HashFunc >::remove (const K & key)
+
+ +

Removes a key from the hashset, if it exists.

+
Returns
True if the element has been found and removed
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classnctl_1_1_static_hash_set_iterator-members.html b/master/classnctl_1_1_static_hash_set_iterator-members.html new file mode 100644 index 0000000000..6003c8c94b --- /dev/null +++ b/master/classnctl_1_1_static_hash_set_iterator-members.html @@ -0,0 +1,97 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::StaticHashSetIterator< K, HashFunc, Capacity > Member List
+
+
+ +

This is the complete list of members for nctl::StaticHashSetIterator< K, HashFunc, Capacity >, including all inherited members.

+ + + + + + + + + + + + + + +
hash() constnctl::StaticHashSetIterator< K, HashFunc, Capacity >
key() constnctl::StaticHashSetIterator< K, HashFunc, Capacity >
operator!=(const StaticHashSetIterator &lhs, const StaticHashSetIterator &rhs)nctl::StaticHashSetIterator< K, HashFunc, Capacity >friend
operator*() constnctl::StaticHashSetIterator< K, HashFunc, Capacity >
operator++()nctl::StaticHashSetIterator< K, HashFunc, Capacity >
operator++(int)nctl::StaticHashSetIterator< K, HashFunc, Capacity >
operator--()nctl::StaticHashSetIterator< K, HashFunc, Capacity >
operator--(int)nctl::StaticHashSetIterator< K, HashFunc, Capacity >
operator==(const StaticHashSetIterator &lhs, const StaticHashSetIterator &rhs)nctl::StaticHashSetIterator< K, HashFunc, Capacity >friend
Reference typedefnctl::StaticHashSetIterator< K, HashFunc, Capacity >
SentinelTagInit enum namenctl::StaticHashSetIterator< K, HashFunc, Capacity >
StaticHashSetIterator(typename StaticHashSetHelperTraits< K, HashFunc, Capacity >::HashSetPtr hashSet, unsigned int bucketIndex) (defined in nctl::StaticHashSetIterator< K, HashFunc, Capacity >)nctl::StaticHashSetIterator< K, HashFunc, Capacity >inline
StaticHashSetIterator(typename StaticHashSetHelperTraits< K, HashFunc, Capacity >::HashSetPtr hashSet, SentinelTagInit tag) (defined in nctl::StaticHashSetIterator< K, HashFunc, Capacity >)nctl::StaticHashSetIterator< K, HashFunc, Capacity >
+ + + + diff --git a/master/classnctl_1_1_static_hash_set_iterator.html b/master/classnctl_1_1_static_hash_set_iterator.html new file mode 100644 index 0000000000..7b57173296 --- /dev/null +++ b/master/classnctl_1_1_static_hash_set_iterator.html @@ -0,0 +1,194 @@ + + + + + + + +nCine: nctl::StaticHashSetIterator< K, HashFunc, Capacity > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::StaticHashSetIterator< K, HashFunc, Capacity > Class Template Reference
+
+
+ +

A hashset iterator. + More...

+ +

#include <StaticHashSetIterator.h>

+ + + + + + + + +

+Public Types

enum class  SentinelTagInit { BEGINNING +, END + }
 Sentinel tags to initialize the iterator at the beginning and end. More...
 
+using Reference = typename IteratorTraits< StaticHashSetIterator >::Reference
 Reference type which respects iterator constness.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

StaticHashSetIterator (typename StaticHashSetHelperTraits< K, HashFunc, Capacity >::HashSetPtr hashSet, unsigned int bucketIndex)
 
StaticHashSetIterator (typename StaticHashSetHelperTraits< K, HashFunc, Capacity >::HashSetPtr hashSet, SentinelTagInit tag)
 
+Reference operator* () const
 Deferencing operator.
 
+StaticHashSetIteratoroperator++ ()
 Iterates to the next element (prefix)
 
+StaticHashSetIterator operator++ (int)
 Iterates to the next element (postfix)
 
+StaticHashSetIteratoroperator-- ()
 Iterates to the previous element (prefix)
 
+StaticHashSetIterator operator-- (int)
 Iterates to the previous element (postfix)
 
+const K & key () const
 Returns the key associated to the currently pointed node.
 
+hash_t hash () const
 Returns the hash associated to the currently pointed node.
 
+ + + + + + + +

+Friends

+bool operator== (const StaticHashSetIterator &lhs, const StaticHashSetIterator &rhs)
 Equality operator.
 
+bool operator!= (const StaticHashSetIterator &lhs, const StaticHashSetIterator &rhs)
 Inequality operator.
 
+

Detailed Description

+

template<class K, class HashFunc, unsigned int Capacity>
+class nctl::StaticHashSetIterator< K, HashFunc, Capacity >

+ +

A hashset iterator.

+

Member Enumeration Documentation

+ +

◆ SentinelTagInit

+ +
+
+
+template<class K , class HashFunc , unsigned int Capacity>
+ + + + + +
+ + + + +
enum nctl::StaticHashSetIterator::SentinelTagInit
+
+strong
+
+ +

Sentinel tags to initialize the iterator at the beginning and end.

+ + + +
Enumerator
BEGINNING 

Iterator at the beginning, next element is the first one.

+
END 

Iterator at the end, previous element is the last one.

+
+ +
+
+
The documentation for this class was generated from the following files: +
+ + + + diff --git a/master/classnctl_1_1_static_string-members.html b/master/classnctl_1_1_static_string-members.html new file mode 100644 index 0000000000..c4b0d4ca53 --- /dev/null +++ b/master/classnctl_1_1_static_string-members.html @@ -0,0 +1,179 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::StaticString< C > Member List
+
+
+ +

This is the complete list of members for nctl::StaticString< C >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
append(const StaticString &other)nctl::StaticString< C >
append(const StaticString< U > &other)nctl::StaticString< C >
append(const char *cString)nctl::StaticString< C >
assign(const StaticString &source, unsigned int srcChar, unsigned int numChar)nctl::StaticString< C >
assign(const StaticString< U > &source, unsigned int srcChar, unsigned int numChar)nctl::StaticString< C >
assign(const StaticString &source)nctl::StaticString< C >
assign(const StaticString< U > &source)nctl::StaticString< C >
assign(const char *source, unsigned int numChar)nctl::StaticString< C >
at(unsigned int index) constnctl::StaticString< C >
at(unsigned int index)nctl::StaticString< C >
begin()nctl::StaticString< C >inline
begin() constnctl::StaticString< C >inline
capacity() constnctl::StaticString< C >inline
cBegin() constnctl::StaticString< C >inline
cEnd() constnctl::StaticString< C >inline
clear()nctl::StaticString< C >
compare(const StaticString &other) constnctl::StaticString< C >
compare(const StaticString< U > &other) constnctl::StaticString< C >
compare(const char *cString) constnctl::StaticString< C >
ConstIterator typedefnctl::StaticString< C >
ConstReverseIterator typedefnctl::StaticString< C >
copy(char *dest, unsigned int srcChar, unsigned int numChar) constnctl::StaticString< C >
copy(char *dest) constnctl::StaticString< C >
crBegin() constnctl::StaticString< C >inline
crEnd() constnctl::StaticString< C >inline
data()nctl::StaticString< C >inline
data() constnctl::StaticString< C >inline
end()nctl::StaticString< C >inline
end() constnctl::StaticString< C >inline
find(const StaticString &other) constnctl::StaticString< C >
find(const StaticString< U > &other) constnctl::StaticString< C >
find(const char *cString) constnctl::StaticString< C >
findFirstChar(char c) constnctl::StaticString< C >
findFirstCharAfterIndex(char c, unsigned int index) constnctl::StaticString< C >
findLastChar(char c) constnctl::StaticString< C >
format(const char *fmt,...)nctl::StaticString< C >
formatAppend(const char *fmt,...)nctl::StaticString< C >
isEmpty() constnctl::StaticString< C >inline
Iterator typedefnctl::StaticString< C >
length() constnctl::StaticString< C >inline
MaxCStringLengthnctl::StaticString< C >static
operator!=(const StaticString &other) const (defined in nctl::StaticString< C >)nctl::StaticString< C >inline
operator!=(const StaticString< U > &other) const (defined in nctl::StaticString< C >)nctl::StaticString< C >inline
operator!=(const char *cString) const (defined in nctl::StaticString< C >)nctl::StaticString< C >inline
operator!= (defined in nctl::StaticString< C >)nctl::StaticString< C >friend
operator+(const StaticString &other) constnctl::StaticString< C >
operator+(const StaticString< U > &other) constnctl::StaticString< C >
operator+(const char *cString) constnctl::StaticString< C >
operator+(const char *cString, const StaticString< U > &string)nctl::StaticString< C >friend
operator+(const StaticString< U > &other) const (defined in nctl::StaticString< C >)nctl::StaticString< C >
operator+=(const StaticString &other)nctl::StaticString< C >
operator+=(const StaticString< U > &other)nctl::StaticString< C >
operator+=(const char *cString)nctl::StaticString< C >
operator+=(const StaticString< U > &other) (defined in nctl::StaticString< C >)nctl::StaticString< C >
operator<(const StaticString &other) const (defined in nctl::StaticString< C >)nctl::StaticString< C >inline
operator<(const StaticString< U > &other) const (defined in nctl::StaticString< C >)nctl::StaticString< C >inline
operator<(const char *cString) const (defined in nctl::StaticString< C >)nctl::StaticString< C >inline
operator< (defined in nctl::StaticString< C >)nctl::StaticString< C >friend
operator<=(const StaticString &other) const (defined in nctl::StaticString< C >)nctl::StaticString< C >inline
operator<=(const StaticString< U > &other) const (defined in nctl::StaticString< C >)nctl::StaticString< C >inline
operator<=(const char *cString) const (defined in nctl::StaticString< C >)nctl::StaticString< C >inline
operator<= (defined in nctl::StaticString< C >)nctl::StaticString< C >friend
operator=(const StaticString &other)nctl::StaticString< C >
operator=(const StaticString< U > &other)nctl::StaticString< C >
operator=(const char *cString)nctl::StaticString< C >
operator=(const StaticString< U > &other)nctl::StaticString< C >
operator==(const StaticString &other) const (defined in nctl::StaticString< C >)nctl::StaticString< C >inline
operator==(const StaticString< U > &other) const (defined in nctl::StaticString< C >)nctl::StaticString< C >inline
operator==(const char *cString) const (defined in nctl::StaticString< C >)nctl::StaticString< C >inline
operator== (defined in nctl::StaticString< C >)nctl::StaticString< C >friend
operator>(const StaticString &other) const (defined in nctl::StaticString< C >)nctl::StaticString< C >inline
operator>(const StaticString< U > &other) const (defined in nctl::StaticString< C >)nctl::StaticString< C >inline
operator>(const char *cString) const (defined in nctl::StaticString< C >)nctl::StaticString< C >inline
operator> (defined in nctl::StaticString< C >)nctl::StaticString< C >friend
operator>=(const StaticString &other) const (defined in nctl::StaticString< C >)nctl::StaticString< C >inline
operator>=(const StaticString< U > &other) const (defined in nctl::StaticString< C >)nctl::StaticString< C >inline
operator>=(const char *cString) const (defined in nctl::StaticString< C >)nctl::StaticString< C >inline
operator>= (defined in nctl::StaticString< C >)nctl::StaticString< C >friend
operator[](unsigned int index) constnctl::StaticString< C >
operator[](unsigned int index)nctl::StaticString< C >
rBegin()nctl::StaticString< C >inline
rBegin() constnctl::StaticString< C >inline
rEnd()nctl::StaticString< C >inline
rEnd() constnctl::StaticString< C >inline
replace(const StaticString &source, unsigned int srcChar, unsigned int numChar, unsigned int destChar)nctl::StaticString< C >
replace(const StaticString< U > &source, unsigned int srcChar, unsigned int numChar, unsigned int destChar)nctl::StaticString< C >
replace(const char *source, unsigned int numChar, unsigned int destChar)nctl::StaticString< C >
ReverseIterator typedefnctl::StaticString< C >
setLength(unsigned int newLength)nctl::StaticString< C >
StaticString()nctl::StaticString< C >
StaticString(const char *cString)nctl::StaticString< C >
StaticString(const StaticString &other)nctl::StaticString< C >
StaticString(const StaticString< U > &other)nctl::StaticString< C >
utf8ToCodePoint(unsigned int position, unsigned int &codePoint, unsigned int *codeUnits) constnctl::StaticString< C >
utf8ToCodePoint(unsigned int position, unsigned int &codePoint) constnctl::StaticString< C >
+ + + + diff --git a/master/classnctl_1_1_static_string.html b/master/classnctl_1_1_static_string.html new file mode 100644 index 0000000000..1b7ac74032 --- /dev/null +++ b/master/classnctl_1_1_static_string.html @@ -0,0 +1,731 @@ + + + + + + + +nCine: nctl::StaticString< C > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::StaticString< C > Class Template Reference
+
+
+ +

A basic string class made of chars stored on the stack. + More...

+ +

#include <StaticString.h>

+ + + + + + + + + + + + + + +

+Public Types

+using Iterator = StringIterator< false >
 Iterator type.
 
+using ConstIterator = StringIterator< true >
 Constant iterator type.
 
+using ReverseIterator = nctl::ReverseIterator< Iterator >
 Reverse iterator type.
 
+using ConstReverseIterator = nctl::ReverseIterator< ConstIterator >
 Reverse constant iterator type.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

StaticString ()
 Default constructor.
 
StaticString (const char *cString)
 Constructs a string object from a C string.
 
StaticString (const StaticString &other)
 Copy constructor.
 
+template<unsigned int U>
 StaticString (const StaticString< U > &other)
 Conversion constructor from a string of different capacity.
 
StaticStringoperator= (const StaticString &other)
 Assignment operator (it might extend or truncate the original text) More...
 
+template<unsigned int U>
StaticStringoperator= (const StaticString< U > &other)
 Assignment operator (it might extend or truncate the original text)
 
+StaticStringoperator= (const char *cString)
 Assigns a constant C string to the string object.
 
+Iterator begin ()
 Returns an iterator to the first character.
 
+ReverseIterator rBegin ()
 Returns a reverse iterator to the last character.
 
+Iterator end ()
 Returns an iterator to the termination character.
 
+ReverseIterator rEnd ()
 Returns a reverse iterator to the byte preceding the first character.
 
+ConstIterator begin () const
 Returns a constant iterator to the first character.
 
+ConstReverseIterator rBegin () const
 Returns a constant reverse iterator to the last character.
 
+ConstIterator end () const
 Returns a constant iterator to the termination character.
 
+ConstReverseIterator rEnd () const
 Returns a constant reverse iterator to the byte preceding the first character.
 
+ConstIterator cBegin () const
 Returns a constant iterator to the first character.
 
+ConstReverseIterator crBegin () const
 Returns a constant reverse iterator to the last character.
 
+ConstIterator cEnd () const
 Returns a constant iterator to the termination character.
 
+ConstReverseIterator crEnd () const
 Returns a constant reverse iterator to the byte preceding the first character.
 
+bool isEmpty () const
 Returns true if the string is empty.
 
+unsigned int length () const
 Returns the string length.
 
+unsigned int capacity () const
 Returns the string capacity.
 
unsigned int setLength (unsigned int newLength)
 Sets the string length. More...
 
void clear ()
 Clears the string. More...
 
+char * data ()
 Returns a pointer to the internal array.
 
+const char * data () const
 Returns a constant pointer to the internal array.
 
unsigned int replace (const StaticString &source, unsigned int srcChar, unsigned int numChar, unsigned int destChar)
 Replaces characters from somewhere in the other string to somewhere in this one (no truncation) More...
 
template<unsigned int U>
unsigned int replace (const StaticString< U > &source, unsigned int srcChar, unsigned int numChar, unsigned int destChar)
 Replaces characters from somewhere in the other string to somewhere in this one (no truncation) More...
 
+unsigned int replace (const char *source, unsigned int numChar, unsigned int destChar)
 Replaces characters from a C string to somewhere in this one (no truncation)
 
+unsigned int assign (const StaticString &source, unsigned int srcChar, unsigned int numChar)
 Copies characters from somewhere in the other string to the beginning of this one.
 
+template<unsigned int U>
unsigned int assign (const StaticString< U > &source, unsigned int srcChar, unsigned int numChar)
 Copies characters from somewhere in the other string to the beginning of this one.
 
+unsigned int assign (const StaticString &source)
 Copies all characters from the other string to the beginning of this one.
 
+template<unsigned int U>
unsigned int assign (const StaticString< U > &source)
 Copies all characters from the other string to the beginning of this one.
 
+unsigned int assign (const char *source, unsigned int numChar)
 Copies characters from a C string to the beginning of this one.
 
+unsigned int copy (char *dest, unsigned int srcChar, unsigned int numChar) const
 Copies characters from somewhere in this string to a C string.
 
+unsigned int copy (char *dest) const
 Copies all characters from this string to a C string.
 
+unsigned int append (const StaticString &other)
 Appends all the characters from the other string to the end of this one.
 
+template<unsigned int U>
unsigned int append (const StaticString< U > &other)
 Appends all the characters from the other string to the end of this one.
 
+unsigned int append (const char *cString)
 Appends all the characters from the C string to the end of this one.
 
+int compare (const StaticString &other) const
 Compares the string with another one in lexicographical order.
 
+template<unsigned int U>
int compare (const StaticString< U > &other) const
 Compares the string with another one in lexicographical order.
 
+int compare (const char *cString) const
 Compares the string with a constant C string in lexicographical order.
 
+int findFirstChar (char c) const
 Finds the first occurrence of a character.
 
+int findLastChar (char c) const
 Finds the last occurrence of a character.
 
+int findFirstCharAfterIndex (char c, unsigned int index) const
 Finds the first occurrence of a character after the character at the index.
 
+int find (const StaticString &other) const
 Finds the first occurrence of the given string.
 
+template<unsigned int U>
int find (const StaticString< U > &other) const
 Finds the first occurrence of the given string.
 
+int find (const char *cString) const
 Finds the first occurrence of the given constant C string.
 
+StaticStringformat (const char *fmt,...)
 Replaces the string with the formatted result.
 
+StaticStringformatAppend (const char *fmt,...)
 Append the formatted result to the string.
 
+StaticStringoperator+= (const StaticString &other)
 Appends another string to this one.
 
+template<unsigned int U>
StaticStringoperator+= (const StaticString< U > &other)
 Appends another string to this one.
 
+StaticStringoperator+= (const char *cString)
 Appends a constant C string to the string object.
 
+StaticString operator+ (const StaticString &other) const
 Concatenate two strings together to create a third one.
 
+template<unsigned int U>
StaticString operator+ (const StaticString< U > &other) const
 Concatenate two strings together to create a third one.
 
+StaticString operator+ (const char *cString) const
 Concatenates a string with a constant C string to create a third one.
 
+bool operator== (const StaticString &other) const
 
+bool operator!= (const StaticString &other) const
 
+bool operator> (const StaticString &other) const
 
+bool operator< (const StaticString &other) const
 
+bool operator>= (const StaticString &other) const
 
+bool operator<= (const StaticString &other) const
 
+template<unsigned int U>
bool operator== (const StaticString< U > &other) const
 
+template<unsigned int U>
bool operator!= (const StaticString< U > &other) const
 
+template<unsigned int U>
bool operator> (const StaticString< U > &other) const
 
+template<unsigned int U>
bool operator< (const StaticString< U > &other) const
 
+template<unsigned int U>
bool operator>= (const StaticString< U > &other) const
 
+template<unsigned int U>
bool operator<= (const StaticString< U > &other) const
 
+bool operator== (const char *cString) const
 
+bool operator!= (const char *cString) const
 
+bool operator> (const char *cString) const
 
+bool operator< (const char *cString) const
 
+bool operator>= (const char *cString) const
 
+bool operator<= (const char *cString) const
 
+const char & at (unsigned int index) const
 Read-only access to the specified element (with bounds checking)
 
+char & at (unsigned int index)
 Access to the specified element (with bounds checking)
 
+const char & operator[] (unsigned int index) const
 Read-only subscript operator.
 
+char & operator[] (unsigned int index)
 Subscript operator.
 
int utf8ToCodePoint (unsigned int position, unsigned int &codePoint, unsigned int *codeUnits) const
 Retrieves the Unicode code point and the UTF-8 code units from the UTF-8 substring starting at the specified position. More...
 
int utf8ToCodePoint (unsigned int position, unsigned int &codePoint) const
 Retrieves the Unicode code point from the UTF-8 substring starting at the specified position. More...
 
template<unsigned int U>
StaticString< C > & operator= (const StaticString< U > &other)
 
+template<unsigned int U>
StaticString< C > & operator+= (const StaticString< U > &other)
 
+template<unsigned int U>
StaticString< C > operator+ (const StaticString< U > &other) const
 
+ + + + +

+Static Public Attributes

+static const unsigned int MaxCStringLength = 512 - 1
 Maximum length when creating an object from C-style strings.
 
+ + + + + + + + + + + + + + + + + +

+Friends

+template<unsigned int U>
StaticString< U > operator+ (const char *cString, const StaticString< U > &string)
 Friend operator to concatenate a constant C string with a string to create a third one.
 
+bool operator== (const char *cString, StaticString string)
 
+bool operator!= (const char *cString, StaticString string)
 
+bool operator> (const char *cString, StaticString string)
 
+bool operator< (const char *cString, StaticString string)
 
+bool operator>= (const char *cString, StaticString string)
 
+bool operator<= (const char *cString, StaticString string)
 
+

Detailed Description

+

template<unsigned int C>
+class nctl::StaticString< C >

+ +

A basic string class made of chars stored on the stack.

+

Member Function Documentation

+ +

◆ clear()

+ +
+
+
+template<unsigned int C>
+ + + + +
void nctl::StaticString< C >::clear
+
+ +

Clears the string.

+

Length will be reset to zero but capacity remains unmodified.

+ +
+
+ +

◆ operator=() [1/2]

+ +
+
+
+template<unsigned int C>
+ + + + + + + + +
StaticString< C > & nctl::StaticString< C >::operator= (const StaticString< C > & other)
+
+ +

Assignment operator (it might extend or truncate the original text)

+
Note
Not implemented with the copy-and-swap idiom because it has to copy data.
+ +
+
+ +

◆ operator=() [2/2]

+ +
+
+
+template<unsigned int C>
+
+template<unsigned int U>
+ + + + + + + + +
StaticString<C>& nctl::StaticString< C >::operator= (const StaticString< U > & other)
+
+
Note
Not implemented with the copy-and-swap idiom because it has to copy data.
+ +
+
+ +

◆ replace() [1/2]

+ +
+
+
+template<unsigned int C>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
unsigned int nctl::StaticString< C >::replace (const StaticString< C > & source,
unsigned int srcChar,
unsigned int numChar,
unsigned int destChar 
)
+
+ +

Replaces characters from somewhere in the other string to somewhere in this one (no truncation)

+

The method returns the number of characters copied, to allow truncation.

+ +
+
+ +

◆ replace() [2/2]

+ +
+
+
+template<unsigned int C>
+
+template<unsigned int U>
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
unsigned int nctl::StaticString< C >::replace (const StaticString< U > & source,
unsigned int srcChar,
unsigned int numChar,
unsigned int destChar 
)
+
+ +

Replaces characters from somewhere in the other string to somewhere in this one (no truncation)

+

The method returns the number of characters copied, to allow truncation.

+ +
+
+ +

◆ setLength()

+ +
+
+
+template<unsigned int C>
+ + + + + + + + +
unsigned int nctl::StaticString< C >::setLength (unsigned int newLength)
+
+ +

Sets the string length.

+

The method is useful to update the string length after writing into it through the data() pointer.

+ +
+
+ +

◆ utf8ToCodePoint() [1/2]

+ +
+
+
+template<unsigned int C>
+ + + + + + + + + + + + + + + + + + +
int nctl::StaticString< C >::utf8ToCodePoint (unsigned int position,
unsigned int & codePoint 
) const
+
+ +

Retrieves the Unicode code point from the UTF-8 substring starting at the specified position.

+
Returns
The number of code units used by UTF-8 to encode the Unicode code point
+ +
+
+ +

◆ utf8ToCodePoint() [2/2]

+ +
+
+
+template<unsigned int C>
+ + + + + + + + + + + + + + + + + + + + + + + + +
int nctl::StaticString< C >::utf8ToCodePoint (unsigned int position,
unsigned int & codePoint,
unsigned int * codeUnits 
) const
+
+ +

Retrieves the Unicode code point and the UTF-8 code units from the UTF-8 substring starting at the specified position.

+
Returns
The number of code units used by UTF-8 to encode the Unicode code point
+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classnctl_1_1_string-members.html b/master/classnctl_1_1_string-members.html new file mode 100644 index 0000000000..d18f225ac7 --- /dev/null +++ b/master/classnctl_1_1_string-members.html @@ -0,0 +1,170 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::String Member List
+
+
+ +

This is the complete list of members for nctl::String, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
append(const String &other)nctl::String
append(const char *cString)nctl::String
assign(const String &source, unsigned int srcChar, unsigned int numChar)nctl::String
assign(const String &source)nctl::String
assign(const char *source, unsigned int numChar)nctl::String
at(unsigned int index) constnctl::String
at(unsigned int index)nctl::String
begin()nctl::Stringinline
begin() constnctl::Stringinline
capacity() constnctl::Stringinline
cBegin() constnctl::Stringinline
cEnd() constnctl::Stringinline
clear()nctl::String
compare(const String &other) constnctl::String
compare(const char *cString) constnctl::String
ConstIterator typedefnctl::String
ConstReverseIterator typedefnctl::String
copy(char *dest, unsigned int srcChar, unsigned int numChar) constnctl::String
copy(char *dest) constnctl::String
crBegin() constnctl::Stringinline
crEnd() constnctl::Stringinline
data()nctl::Stringinline
data() constnctl::Stringinline
end()nctl::Stringinline
end() constnctl::Stringinline
find(const String &other) constnctl::String
find(const char *cString) constnctl::String
findFirstChar(char c) constnctl::String
findFirstCharAfterIndex(char c, unsigned int index) constnctl::String
findLastChar(char c) constnctl::String
format(const char *fmt,...)nctl::String
formatAppend(const char *fmt,...)nctl::String
isEmpty() constnctl::Stringinline
Iterator typedefnctl::String
length() constnctl::Stringinline
MaxCStringLengthnctl::Stringstatic
operator!=(const String &other) const (defined in nctl::String)nctl::Stringinline
operator!=(const char *cString) const (defined in nctl::String)nctl::Stringinline
operator!= (defined in nctl::String)nctl::Stringfriend
operator+(const String &other) constnctl::String
operator+(const char *cString) constnctl::String
operator+(const char *cString, const String &string)nctl::Stringfriend
operator+=(const String &other)nctl::String
operator+=(const char *cString)nctl::String
operator<(const String &other) const (defined in nctl::String)nctl::Stringinline
operator<(const char *cString) const (defined in nctl::String)nctl::Stringinline
operator< (defined in nctl::String)nctl::Stringfriend
operator<=(const String &other) const (defined in nctl::String)nctl::Stringinline
operator<=(const char *cString) const (defined in nctl::String)nctl::Stringinline
operator<= (defined in nctl::String)nctl::Stringfriend
operator=(const String &other)nctl::String
operator=(String &&other)nctl::String
operator=(const char *cString)nctl::String
operator==(const String &other) const (defined in nctl::String)nctl::Stringinline
operator==(const char *cString) const (defined in nctl::String)nctl::Stringinline
operator== (defined in nctl::String)nctl::Stringfriend
operator>(const String &other) const (defined in nctl::String)nctl::Stringinline
operator>(const char *cString) const (defined in nctl::String)nctl::Stringinline
operator> (defined in nctl::String)nctl::Stringfriend
operator>=(const String &other) const (defined in nctl::String)nctl::Stringinline
operator>=(const char *cString) const (defined in nctl::String)nctl::Stringinline
operator>= (defined in nctl::String)nctl::Stringfriend
operator[](unsigned int index) constnctl::String
operator[](unsigned int index)nctl::String
rBegin()nctl::Stringinline
rBegin() constnctl::Stringinline
rEnd()nctl::Stringinline
rEnd() constnctl::Stringinline
replace(const String &source, unsigned int srcChar, unsigned int numChar, unsigned int destChar)nctl::String
replace(const char *source, unsigned int numChar, unsigned int destChar)nctl::String
ReverseIterator typedefnctl::String
setCapacity(unsigned int newCapacity)nctl::String
setLength(unsigned int newLength)nctl::String
shrinkToFit()nctl::String
String()nctl::String
String(unsigned int capacity)nctl::Stringinlineexplicit
String(StringMode mode)nctl::Stringinlineexplicit
String(unsigned int capacity, StringMode mode)nctl::String
String(const char *cString)nctl::Stringinline
String(const char *cString, StringMode mode)nctl::String
String(const String &other)nctl::String
String(String &&other)nctl::String
swap(String &first, String &second)nctl::Stringinline
utf8ToCodePoint(unsigned int position, unsigned int &codePoint, unsigned int *codeUnits) constnctl::String
utf8ToCodePoint(unsigned int position, unsigned int &codePoint) constnctl::String
~String() (defined in nctl::String)nctl::String
+ + + + diff --git a/master/classnctl_1_1_string.html b/master/classnctl_1_1_string.html new file mode 100644 index 0000000000..5030e8fcb7 --- /dev/null +++ b/master/classnctl_1_1_string.html @@ -0,0 +1,602 @@ + + + + + + + +nCine: nctl::String Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+ +
+ +

A basic string class made of chars. + More...

+ +

#include <String.h>

+ + + + + + + + + + + + + + +

+Public Types

+using Iterator = StringIterator< false >
 Iterator type.
 
+using ConstIterator = StringIterator< true >
 Constant iterator type.
 
+using ReverseIterator = nctl::ReverseIterator< Iterator >
 Reverse iterator type.
 
+using ConstReverseIterator = nctl::ReverseIterator< ConstIterator >
 Reverse constant iterator type.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

String ()
 Default constructor.
 
String (unsigned int capacity)
 Constructs an empty string with explicit size.
 
String (StringMode mode)
 Constructs an empty string with the option for it to be fixed.
 
String (unsigned int capacity, StringMode mode)
 Constructs an empty string with explicit size and the option for it to be fixed.
 
String (const char *cString)
 Constructs a string object from a C string.
 
String (const char *cString, StringMode mode)
 Constructs a string object from a C string with the option for it to be fixed.
 
String (const String &other)
 Copy constructor.
 
String (String &&other)
 Move constructor.
 
Stringoperator= (const String &other)
 Assignment operator (it might extend or truncate the original text) More...
 
+Stringoperator= (String &&other)
 Move assignment operator.
 
+Stringoperator= (const char *cString)
 Assigns a constant C string to the string object.
 
+void swap (String &first, String &second)
 Swaps two strings without copying their data.
 
+Iterator begin ()
 Returns an iterator to the first character.
 
+ReverseIterator rBegin ()
 Returns a reverse iterator to the last character.
 
+Iterator end ()
 Returns an iterator to the termination character.
 
+ReverseIterator rEnd ()
 Returns a reverse iterator to the byte preceding the first character.
 
+ConstIterator begin () const
 Returns a constant iterator to the first character.
 
+ConstReverseIterator rBegin () const
 Returns a constant reverse iterator to the last character.
 
+ConstIterator end () const
 Returns a constant iterator to the termination character.
 
+ConstReverseIterator rEnd () const
 Returns a constant reverse iterator to the byte preceding the first character.
 
+ConstIterator cBegin () const
 Returns a constant iterator to the first character.
 
+ConstReverseIterator crBegin () const
 Returns a constant reverse iterator to the last character.
 
+ConstIterator cEnd () const
 Returns a constant iterator to the termination character.
 
+ConstReverseIterator crEnd () const
 Returns a constant reverse iterator to the byte preceding the first character.
 
+bool isEmpty () const
 Returns true if the string is empty.
 
+unsigned int length () const
 Returns the string length.
 
+unsigned int capacity () const
 Returns the string capacity.
 
unsigned int setLength (unsigned int newLength)
 Sets the string length. More...
 
+void setCapacity (unsigned int newCapacity)
 Sets a new capacity for the string (can be bigger or smaller than the current one)
 
+void shrinkToFit ()
 Decreases the capacity to match the current length of the string.
 
void clear ()
 Clears the string. More...
 
+char * data ()
 Returns a pointer to the internal array.
 
+const char * data () const
 Returns a constant pointer to the internal array.
 
unsigned int replace (const String &source, unsigned int srcChar, unsigned int numChar, unsigned int destChar)
 Replaces characters from somewhere in the other string to somewhere in this one (no truncation) More...
 
+unsigned int replace (const char *source, unsigned int numChar, unsigned int destChar)
 Replaces characters from a C string to somewhere in this one (no truncation)
 
+unsigned int assign (const String &source, unsigned int srcChar, unsigned int numChar)
 Copies characters from somewhere in the other string to the beginning of this one.
 
+unsigned int assign (const String &source)
 Copies all characters from the other string to the beginning of this one.
 
+unsigned int assign (const char *source, unsigned int numChar)
 Copies characters from a C string to the beginning of this one.
 
+unsigned int copy (char *dest, unsigned int srcChar, unsigned int numChar) const
 Copies characters from somewhere in this string to a C string.
 
+unsigned int copy (char *dest) const
 Copies all characters from this string to a C string.
 
+unsigned int append (const String &other)
 Appends all the characters from the other string to the end of this one.
 
+unsigned int append (const char *cString)
 Appends all the characters from the C string to the end of this one.
 
+int compare (const String &other) const
 Compares the string with another one in lexicographical order.
 
+int compare (const char *cString) const
 Compares the string with a constant C string in lexicographical order.
 
+int findFirstChar (char c) const
 Finds the first occurrence of a character.
 
+int findLastChar (char c) const
 Finds the last occurrence of a character.
 
+int findFirstCharAfterIndex (char c, unsigned int index) const
 Finds the first occurrence of a character after the character at the index.
 
+int find (const String &other) const
 Finds the first occurrence of the given string.
 
+int find (const char *cString) const
 Finds the first occurrence of the given constant C string.
 
+Stringformat (const char *fmt,...)
 Replaces the string with the formatted result.
 
+StringformatAppend (const char *fmt,...)
 Append the formatted result to the string.
 
+Stringoperator+= (const String &other)
 Appends another string to this one.
 
+Stringoperator+= (const char *cString)
 Appends a constant C string to the string object.
 
+String operator+ (const String &other) const
 Concatenate two strings together to create a third one.
 
+String operator+ (const char *cString) const
 Concatenates a string with a constant C string to create a third one.
 
+bool operator== (const String &other) const
 
+bool operator!= (const String &other) const
 
+bool operator> (const String &other) const
 
+bool operator< (const String &other) const
 
+bool operator>= (const String &other) const
 
+bool operator<= (const String &other) const
 
+bool operator== (const char *cString) const
 
+bool operator!= (const char *cString) const
 
+bool operator> (const char *cString) const
 
+bool operator< (const char *cString) const
 
+bool operator>= (const char *cString) const
 
+bool operator<= (const char *cString) const
 
+const char & at (unsigned int index) const
 Read-only access to the specified element (with bounds checking)
 
+char & at (unsigned int index)
 Access to the specified element (with bounds checking)
 
+const char & operator[] (unsigned int index) const
 Read-only subscript operator.
 
+char & operator[] (unsigned int index)
 Subscript operator.
 
int utf8ToCodePoint (unsigned int position, unsigned int &codePoint, unsigned int *codeUnits) const
 Retrieves the Unicode code point and the UTF-8 code units from the UTF-8 substring starting at the specified position. More...
 
int utf8ToCodePoint (unsigned int position, unsigned int &codePoint) const
 Retrieves the Unicode code point from the UTF-8 substring starting at the specified position. More...
 
+ + + + +

+Static Public Attributes

+static const unsigned int MaxCStringLength = 512 - 1
 Maximum length when creating an object from C-style strings.
 
+ + + + + + + + + + + + + + + + +

+Friends

+DLL_PUBLIC String operator+ (const char *cString, const String &string)
 Friend operator to concatenate a constant C string with a string to create a third one.
 
+bool operator== (const char *cString, String string)
 
+bool operator!= (const char *cString, String string)
 
+bool operator> (const char *cString, String string)
 
+bool operator< (const char *cString, String string)
 
+bool operator>= (const char *cString, String string)
 
+bool operator<= (const char *cString, String string)
 
+

Detailed Description

+

A basic string class made of chars.

+

Member Function Documentation

+ +

◆ clear()

+ +
+
+ + + + + + + +
void nctl::String::clear ()
+
+ +

Clears the string.

+

Length will be reset to zero but capacity remains unmodified.

+ +
+
+ +

◆ operator=()

+ +
+
+ + + + + + + + +
String & nctl::String::operator= (const Stringother)
+
+ +

Assignment operator (it might extend or truncate the original text)

+
Note
Not implemented with the copy-and-swap idiom because it has to copy data.
+ +
+
+ +

◆ replace()

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
unsigned int nctl::String::replace (const Stringsource,
unsigned int srcChar,
unsigned int numChar,
unsigned int destChar 
)
+
+ +

Replaces characters from somewhere in the other string to somewhere in this one (no truncation)

+

The method returns the number of characters copied, to allow truncation.

+ +
+
+ +

◆ setLength()

+ +
+
+ + + + + + + + +
unsigned int nctl::String::setLength (unsigned int newLength)
+
+ +

Sets the string length.

+

The method is useful to update the string length after writing into it through the data() pointer.

+ +
+
+ +

◆ utf8ToCodePoint() [1/2]

+ +
+
+ + + + + + + + + + + + + + + + + + +
int nctl::String::utf8ToCodePoint (unsigned int position,
unsigned int & codePoint 
) const
+
+ +

Retrieves the Unicode code point from the UTF-8 substring starting at the specified position.

+
Returns
The number of code units used by UTF-8 to encode the Unicode code point
+ +
+
+ +

◆ utf8ToCodePoint() [2/2]

+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
int nctl::String::utf8ToCodePoint (unsigned int position,
unsigned int & codePoint,
unsigned int * codeUnits 
) const
+
+ +

Retrieves the Unicode code point and the UTF-8 code units from the UTF-8 substring starting at the specified position.

+
Returns
The number of code units used by UTF-8 to encode the Unicode code point
+ +
+
+
The documentation for this class was generated from the following files:
    +
  • include/nctl/String.h
  • +
  • src/base/String.cpp
  • +
+
+ + + + diff --git a/master/classnctl_1_1_string_iterator-members.html b/master/classnctl_1_1_string_iterator-members.html new file mode 100644 index 0000000000..926eed3762 --- /dev/null +++ b/master/classnctl_1_1_string_iterator-members.html @@ -0,0 +1,106 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::StringIterator< IsConst > Member List
+
+
+ +

This is the complete list of members for nctl::StringIterator< IsConst >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + +
operator!=(const StringIterator &lhs, const StringIterator &rhs)nctl::StringIterator< IsConst >friend
operator*() constnctl::StringIterator< IsConst >inline
operator+(int n) constnctl::StringIterator< IsConst >inline
operator++()nctl::StringIterator< IsConst >inline
operator++(int)nctl::StringIterator< IsConst >inline
operator+=(int n)nctl::StringIterator< IsConst >inline
operator-(int n) constnctl::StringIterator< IsConst >inline
operator-(const StringIterator &lhs, const StringIterator &rhs)nctl::StringIterator< IsConst >friend
operator--()nctl::StringIterator< IsConst >inline
operator--(int)nctl::StringIterator< IsConst >inline
operator-=(int n)nctl::StringIterator< IsConst >inline
operator<(const StringIterator &lhs, const StringIterator &rhs)nctl::StringIterator< IsConst >friend
operator<=(const StringIterator &lhs, const StringIterator &rhs)nctl::StringIterator< IsConst >friend
operator==(const StringIterator &lhs, const StringIterator &rhs)nctl::StringIterator< IsConst >friend
operator>(const StringIterator &lhs, const StringIterator &rhs)nctl::StringIterator< IsConst >friend
operator>=(const StringIterator &lhs, const StringIterator &rhs)nctl::StringIterator< IsConst >friend
operator[](int n) constnctl::StringIterator< IsConst >inline
Pointer typedefnctl::StringIterator< IsConst >
Reference typedefnctl::StringIterator< IsConst >
StringIterator(Pointer c) (defined in nctl::StringIterator< IsConst >)nctl::StringIterator< IsConst >inlineexplicit
StringIterator(const StringIterator< false > &it)nctl::StringIterator< IsConst >inline
StringIterator< true > classnctl::StringIterator< IsConst >friend
+ + + + diff --git a/master/classnctl_1_1_string_iterator.html b/master/classnctl_1_1_string_iterator.html new file mode 100644 index 0000000000..1d63cb7c61 --- /dev/null +++ b/master/classnctl_1_1_string_iterator.html @@ -0,0 +1,196 @@ + + + + + + + +nCine: nctl::StringIterator< IsConst > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::StringIterator< IsConst > Class Template Reference
+
+
+ +

A String iterator. + More...

+ +

#include <StringIterator.h>

+ + + + + + + + +

+Public Types

+using Pointer = typename IteratorTraits< StringIterator >::Pointer
 Pointer type which respects iterator constness.
 
+using Reference = typename IteratorTraits< StringIterator >::Reference
 Reference type which respects iterator constness.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

StringIterator (Pointer c)
 
StringIterator (const StringIterator< false > &it)
 Copy constructor to implicitly convert a non constant iterator to a constant one.
 
+Reference operator* () const
 Deferencing operator.
 
+StringIteratoroperator++ ()
 Iterates to the next element (prefix)
 
+StringIterator operator++ (int)
 Iterates to the next element (postfix)
 
+StringIteratoroperator-- ()
 Iterates to the previous element (prefix)
 
+StringIterator operator-- (int)
 Iterates to the previous element (postfix)
 
+StringIteratoroperator+= (int n)
 Compound addition operator.
 
+StringIteratoroperator-= (int n)
 Compound subtraction operator.
 
+StringIterator operator+ (int n) const
 Addition operator.
 
+StringIterator operator- (int n) const
 Subtraction operator.
 
+Reference operator[] (int n) const
 Subscript operator.
 
+ + + + + + + + + + + + + + + + + + + + + + + + + +

+Friends

+class StringIterator< true >
 For non constant to constant iterator implicit conversion.
 
+int operator- (const StringIterator &lhs, const StringIterator &rhs)
 Pointer subtraction operator.
 
+bool operator== (const StringIterator &lhs, const StringIterator &rhs)
 Equality operator.
 
+bool operator!= (const StringIterator &lhs, const StringIterator &rhs)
 Inequality operator.
 
+bool operator> (const StringIterator &lhs, const StringIterator &rhs)
 Greater than operator.
 
+bool operator< (const StringIterator &lhs, const StringIterator &rhs)
 Less than operator.
 
+bool operator>= (const StringIterator &lhs, const StringIterator &rhs)
 Greater than or equal to operator.
 
+bool operator<= (const StringIterator &lhs, const StringIterator &rhs)
 Less than or equal to operator.
 
+

Detailed Description

+

template<bool IsConst>
+class nctl::StringIterator< IsConst >

+ +

A String iterator.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classnctl_1_1_unique_ptr-members.html b/master/classnctl_1_1_unique_ptr-members.html new file mode 100644 index 0000000000..1c54ae2aec --- /dev/null +++ b/master/classnctl_1_1_unique_ptr-members.html @@ -0,0 +1,111 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::UniquePtr< T, Deleter > Member List
+
+
+ +

This is the complete list of members for nctl::UniquePtr< T, Deleter >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
get() (defined in nctl::UniquePtr< T, Deleter >)nctl::UniquePtr< T, Deleter >inline
get() const (defined in nctl::UniquePtr< T, Deleter >)nctl::UniquePtr< T, Deleter >inline
operator bool() const (defined in nctl::UniquePtr< T, Deleter >)nctl::UniquePtr< T, Deleter >inline
operator!= (defined in nctl::UniquePtr< T, Deleter >)nctl::UniquePtr< T, Deleter >friend
operator!= (defined in nctl::UniquePtr< T, Deleter >)nctl::UniquePtr< T, Deleter >friend
operator!= (defined in nctl::UniquePtr< T, Deleter >)nctl::UniquePtr< T, Deleter >friend
operator*() (defined in nctl::UniquePtr< T, Deleter >)nctl::UniquePtr< T, Deleter >inline
operator*() const (defined in nctl::UniquePtr< T, Deleter >)nctl::UniquePtr< T, Deleter >inline
operator->() (defined in nctl::UniquePtr< T, Deleter >)nctl::UniquePtr< T, Deleter >inline
operator->() const (defined in nctl::UniquePtr< T, Deleter >)nctl::UniquePtr< T, Deleter >inline
operator=(UniquePtr &&other) (defined in nctl::UniquePtr< T, Deleter >)nctl::UniquePtr< T, Deleter >
operator=(UniquePtr< U, Deleter2 > &&other) (defined in nctl::UniquePtr< T, Deleter >)nctl::UniquePtr< T, Deleter >
operator=(UniquePtr< U, Deleter2 > &&other) (defined in nctl::UniquePtr< T, Deleter >)nctl::UniquePtr< T, Deleter >
operator== (defined in nctl::UniquePtr< T, Deleter >)nctl::UniquePtr< T, Deleter >friend
operator== (defined in nctl::UniquePtr< T, Deleter >)nctl::UniquePtr< T, Deleter >friend
operator== (defined in nctl::UniquePtr< T, Deleter >)nctl::UniquePtr< T, Deleter >friend
release() (defined in nctl::UniquePtr< T, Deleter >)nctl::UniquePtr< T, Deleter >
reset(T *newPtr) (defined in nctl::UniquePtr< T, Deleter >)nctl::UniquePtr< T, Deleter >
reset(nullptr_t) (defined in nctl::UniquePtr< T, Deleter >)nctl::UniquePtr< T, Deleter >
UniquePtr() (defined in nctl::UniquePtr< T, Deleter >)nctl::UniquePtr< T, Deleter >inline
UniquePtr(T *ptr) (defined in nctl::UniquePtr< T, Deleter >)nctl::UniquePtr< T, Deleter >inlineexplicit
UniquePtr(T *ptr, Deleter del) (defined in nctl::UniquePtr< T, Deleter >)nctl::UniquePtr< T, Deleter >inline
UniquePtr(U *ptr) (defined in nctl::UniquePtr< T, Deleter >)nctl::UniquePtr< T, Deleter >inlineexplicit
UniquePtr(U *ptr, Deleter del) (defined in nctl::UniquePtr< T, Deleter >)nctl::UniquePtr< T, Deleter >inline
UniquePtr(UniquePtr &&other) (defined in nctl::UniquePtr< T, Deleter >)nctl::UniquePtr< T, Deleter >
UniquePtr(UniquePtr< U, Deleter2 > &&other) (defined in nctl::UniquePtr< T, Deleter >)nctl::UniquePtr< T, Deleter >
~UniquePtr() (defined in nctl::UniquePtr< T, Deleter >)nctl::UniquePtr< T, Deleter >inline
+ + + + diff --git a/master/classnctl_1_1_unique_ptr.html b/master/classnctl_1_1_unique_ptr.html new file mode 100644 index 0000000000..007374c424 --- /dev/null +++ b/master/classnctl_1_1_unique_ptr.html @@ -0,0 +1,185 @@ + + + + + + + +nCine: nctl::UniquePtr< T, Deleter > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::UniquePtr< T, Deleter > Class Template Reference
+
+
+ +

A unique pointer implementation. + More...

+ +

#include <UniquePtr.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

UniquePtr (T *ptr)
 
UniquePtr (T *ptr, Deleter del)
 
+template<class U >
 UniquePtr (U *ptr)
 
+template<class U >
 UniquePtr (U *ptr, Deleter del)
 
UniquePtr (UniquePtr &&other)
 
+template<class U , class Deleter2 >
 UniquePtr (UniquePtr< U, Deleter2 > &&other)
 
+UniquePtroperator= (UniquePtr &&other)
 
+template<class U , class Deleter2 >
UniquePtroperator= (UniquePtr< U, Deleter2 > &&other)
 
+T * release ()
 
+void reset (T *newPtr)
 
+void reset (nullptr_t)
 
+T * get ()
 
+const T * get () const
 
+T & operator* ()
 
+const T & operator* () const
 
+T * operator-> ()
 
+const T * operator-> () const
 
operator bool () const
 
+template<class U , class Deleter2 >
UniquePtr< T, Deleter > & operator= (UniquePtr< U, Deleter2 > &&other)
 
+ + + + + + + + + + + + + +

+Friends

+bool operator== (const UniquePtr &x, const UniquePtr &y)
 
+bool operator!= (const UniquePtr &x, const UniquePtr &y)
 
+bool operator== (const UniquePtr &x, nullptr_t)
 
+bool operator== (nullptr_t, const UniquePtr &y)
 
+bool operator!= (const UniquePtr &x, nullptr_t)
 
+bool operator!= (nullptr_t, const UniquePtr &y)
 
+

Detailed Description

+

template<class T, class Deleter = DefaultDelete<T>>
+class nctl::UniquePtr< T, Deleter >

+ +

A unique pointer implementation.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classnctl_1_1_unique_ptr_3_01_t_0f_0e_00_01_deleter_01_4-members.html b/master/classnctl_1_1_unique_ptr_3_01_t_0f_0e_00_01_deleter_01_4-members.html new file mode 100644 index 0000000000..4b745522a1 --- /dev/null +++ b/master/classnctl_1_1_unique_ptr_3_01_t_0f_0e_00_01_deleter_01_4-members.html @@ -0,0 +1,104 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl::UniquePtr< T[], Deleter > Member List
+
+
+ +

This is the complete list of members for nctl::UniquePtr< T[], Deleter >, including all inherited members.

+ + + + + + + + + + + + + + + + + + + + + +
get() (defined in nctl::UniquePtr< T[], Deleter >)nctl::UniquePtr< T[], Deleter >inline
get() const (defined in nctl::UniquePtr< T[], Deleter >)nctl::UniquePtr< T[], Deleter >inline
operator bool() const (defined in nctl::UniquePtr< T[], Deleter >)nctl::UniquePtr< T[], Deleter >inline
operator!= (defined in nctl::UniquePtr< T[], Deleter >)nctl::UniquePtr< T[], Deleter >friend
operator!= (defined in nctl::UniquePtr< T[], Deleter >)nctl::UniquePtr< T[], Deleter >friend
operator!= (defined in nctl::UniquePtr< T[], Deleter >)nctl::UniquePtr< T[], Deleter >friend
operator=(UniquePtr &&other) (defined in nctl::UniquePtr< T[], Deleter >)nctl::UniquePtr< T[], Deleter >
operator== (defined in nctl::UniquePtr< T[], Deleter >)nctl::UniquePtr< T[], Deleter >friend
operator== (defined in nctl::UniquePtr< T[], Deleter >)nctl::UniquePtr< T[], Deleter >friend
operator== (defined in nctl::UniquePtr< T[], Deleter >)nctl::UniquePtr< T[], Deleter >friend
operator[](size_t index) const (defined in nctl::UniquePtr< T[], Deleter >)nctl::UniquePtr< T[], Deleter >inline
operator[](size_t index) (defined in nctl::UniquePtr< T[], Deleter >)nctl::UniquePtr< T[], Deleter >inline
release() (defined in nctl::UniquePtr< T[], Deleter >)nctl::UniquePtr< T[], Deleter >
reset(T *newPtr) (defined in nctl::UniquePtr< T[], Deleter >)nctl::UniquePtr< T[], Deleter >
reset(nullptr_t) (defined in nctl::UniquePtr< T[], Deleter >)nctl::UniquePtr< T[], Deleter >
UniquePtr() (defined in nctl::UniquePtr< T[], Deleter >)nctl::UniquePtr< T[], Deleter >inline
UniquePtr(T *ptr) (defined in nctl::UniquePtr< T[], Deleter >)nctl::UniquePtr< T[], Deleter >inlineexplicit
UniquePtr(T *ptr, Deleter del) (defined in nctl::UniquePtr< T[], Deleter >)nctl::UniquePtr< T[], Deleter >inline
UniquePtr(UniquePtr &&other) (defined in nctl::UniquePtr< T[], Deleter >)nctl::UniquePtr< T[], Deleter >
~UniquePtr() (defined in nctl::UniquePtr< T[], Deleter >)nctl::UniquePtr< T[], Deleter >inline
+ + + + diff --git a/master/classnctl_1_1_unique_ptr_3_01_t_0f_0e_00_01_deleter_01_4.html b/master/classnctl_1_1_unique_ptr_3_01_t_0f_0e_00_01_deleter_01_4.html new file mode 100644 index 0000000000..17c7338d3a --- /dev/null +++ b/master/classnctl_1_1_unique_ptr_3_01_t_0f_0e_00_01_deleter_01_4.html @@ -0,0 +1,159 @@ + + + + + + + +nCine: nctl::UniquePtr< T[], Deleter > Class Template Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
nctl::UniquePtr< T[], Deleter > Class Template Reference
+
+
+ +

Array specialization of the unique pointer implementation. + More...

+ +

#include <UniquePtr.h>

+ + + + + + + + + + + + + + + + + + + + + + + + + + +

+Public Member Functions

UniquePtr (T *ptr)
 
UniquePtr (T *ptr, Deleter del)
 
UniquePtr (UniquePtr &&other)
 
+UniquePtroperator= (UniquePtr &&other)
 
+T * release ()
 
+void reset (T *newPtr)
 
+void reset (nullptr_t)
 
+T * get ()
 
+const T * get () const
 
+const T & operator[] (size_t index) const
 
+T & operator[] (size_t index)
 
operator bool () const
 
+ + + + + + + + + + + + + +

+Friends

+bool operator== (const UniquePtr &x, const UniquePtr &y)
 
+bool operator!= (const UniquePtr &x, const UniquePtr &y)
 
+bool operator== (const UniquePtr &x, nullptr_t)
 
+bool operator== (nullptr_t, const UniquePtr &y)
 
+bool operator!= (const UniquePtr &x, nullptr_t)
 
+bool operator!= (nullptr_t, const UniquePtr &y)
 
+

Detailed Description

+

template<class T, class Deleter>
+class nctl::UniquePtr< T[], Deleter >

+ +

Array specialization of the unique pointer implementation.

+

The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/classtracy_1_1_gpu_ctx_scope-members.html b/master/classtracy_1_1_gpu_ctx_scope-members.html new file mode 100644 index 0000000000..c6df45f2d2 --- /dev/null +++ b/master/classtracy_1_1_gpu_ctx_scope-members.html @@ -0,0 +1,86 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
tracy::GpuCtxScope Member List
+
+
+ +

This is the complete list of members for tracy::GpuCtxScope, including all inherited members.

+ + + +
GpuCtxScope(const SourceLocationData *, bool) (defined in tracy::GpuCtxScope)tracy::GpuCtxScopeinline
GpuCtxScope(const SourceLocationData *, int, bool) (defined in tracy::GpuCtxScope)tracy::GpuCtxScopeinline
+ + + + diff --git a/master/classtracy_1_1_gpu_ctx_scope.html b/master/classtracy_1_1_gpu_ctx_scope.html new file mode 100644 index 0000000000..daf1acf172 --- /dev/null +++ b/master/classtracy_1_1_gpu_ctx_scope.html @@ -0,0 +1,97 @@ + + + + + + + +nCine: tracy::GpuCtxScope Class Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
tracy::GpuCtxScope Class Reference
+
+
+ + + + + + +

+Public Member Functions

GpuCtxScope (const SourceLocationData *, bool)
 
GpuCtxScope (const SourceLocationData *, int, bool)
 
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/master/closed.png b/master/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..f26a8de630bcce07fe1fb4d0f538ef83273d7115 GIT binary patch literal 133 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VKAtX)Ar*{o=LYgRDDp7#=Oi+l za#Un(Xw*C55w}U#K*Z$j^}J|Rh8bTjswK=}tg)HFkj#7K)7zgPC&hE>FVdQ&MBb@01I|0*Z=?k literal 0 HcmV?d00001 diff --git a/master/common__constants_8h_source.html b/master/common__constants_8h_source.html new file mode 100644 index 0000000000..7c5129a0fb --- /dev/null +++ b/master/common__constants_8h_source.html @@ -0,0 +1,98 @@ + + + + + + + +nCine: include/ncine/common_constants.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
common_constants.h
+
+
+
1 #ifndef NCINE_COMMON_CONSTANTS
+
2 #define NCINE_COMMON_CONSTANTS
+
3 
+
4 #include <cmath>
+
5 
+
6 namespace ncine {
+
7 
+
8 const double Pi = 3.141592653589793;
+
9 const float fPi = 3.1415927f;
+
10 const double DegToRad = Pi / 180.0;
+
11 const float fDegToRad = fPi / 180.0f;
+
12 const double RadToDeg = 180.0 / Pi;
+
13 const float fRadToDeg = 180.0f / fPi;
+
14 
+
15 }
+
16 
+
17 #endif
+
+ + + + diff --git a/master/common__defines_8h_source.html b/master/common__defines_8h_source.html new file mode 100644 index 0000000000..a3d09f83f4 --- /dev/null +++ b/master/common__defines_8h_source.html @@ -0,0 +1,115 @@ + + + + + + + +nCine: include/ncine/common_defines.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
common_defines.h
+
+
+
1 #ifndef NCINE_COMMON_DEFINES
+
2 #define NCINE_COMMON_DEFINES
+
3 
+
4 #ifndef NCINE_STATIC
+
5  #if defined(_WIN32) || defined(__CYGWIN__)
+
6  #ifdef ncine_EXPORTS // automatically defined by CMake
+
7  #if defined(__GNUC__) || defined(__llvm__)
+
8  #define DLL_PUBLIC __attribute__((dllexport))
+
9  #else
+
10  #define DLL_PUBLIC __declspec(dllexport)
+
11  #endif
+
12  #else
+
13  #if defined(__GNUC__) || defined(__llvm__)
+
14  #define DLL_PUBLIC __attribute__((dllimport))
+
15  #else
+
16  #define DLL_PUBLIC __declspec(dllimport)
+
17  #endif
+
18  #endif
+
19  #define DLL_LOCAL
+
20  #else
+
21  #if __GNUC__ >= 4 || defined(__llvm__)
+
22  #define DLL_PUBLIC __attribute__((visibility("default")))
+
23  #define DLL_LOCAL __attribute__((visibility("hidden")))
+
24  #else
+
25  #define DLL_PUBLIC
+
26  #define DLL_LOCAL
+
27  #endif
+
28  #endif
+
29 #else
+
30  #define DLL_PUBLIC
+
31  #define DLL_LOCAL
+
32 #endif
+
33 
+
34 #endif
+
+ + + + diff --git a/master/common__macros_8h_source.html b/master/common__macros_8h_source.html new file mode 100644 index 0000000000..67054aa44e --- /dev/null +++ b/master/common__macros_8h_source.html @@ -0,0 +1,235 @@ + + + + + + + +nCine: include/ncine/common_macros.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
common_macros.h
+
+
+
1 #ifndef NCINE_COMMON_MACROS
+
2 #define NCINE_COMMON_MACROS
+
3 
+
4 #include <cstdlib> // for abort()
+
5 #include "ServiceLocator.h"
+
6 
+
7 #ifdef NCINE_DEBUG
+
8  #define NCINE_ASSERT_BREAK
+
9 #endif
+
10 
+
11 #ifdef __GNUC__
+
12  #define FUNCTION __PRETTY_FUNCTION__
+
13 #elif _MSC_VER
+
14  #define FUNCTION __FUNCTION__
+
15 #else
+
16  #define FUNCTION __func__
+
17 #endif
+
18 
+
19 #define LOGV_X(fmt, ...) ncine::theServiceLocator().logger().write(ncine::ILogger::LogLevel::VERBOSE, static_cast<const char *>("%s -> " fmt), FUNCTION, ##__VA_ARGS__)
+
20 #define LOGD_X(fmt, ...) ncine::theServiceLocator().logger().write(ncine::ILogger::LogLevel::DEBUG, static_cast<const char *>("%s -> " fmt), FUNCTION, ##__VA_ARGS__)
+
21 #define LOGI_X(fmt, ...) ncine::theServiceLocator().logger().write(ncine::ILogger::LogLevel::INFO, static_cast<const char *>("%s, -> " fmt), FUNCTION, ##__VA_ARGS__)
+
22 #define LOGW_X(fmt, ...) ncine::theServiceLocator().logger().write(ncine::ILogger::LogLevel::WARN, static_cast<const char *>("%s -> " fmt), FUNCTION, ##__VA_ARGS__)
+
23 #define LOGE_X(fmt, ...) ncine::theServiceLocator().logger().write(ncine::ILogger::LogLevel::ERROR, static_cast<const char *>("%s -> " fmt), FUNCTION, ##__VA_ARGS__)
+
24 #define LOGF_X(fmt, ...) ncine::theServiceLocator().logger().write(ncine::ILogger::LogLevel::FATAL, static_cast<const char *>("%s -> " fmt), FUNCTION, ##__VA_ARGS__)
+
25 #define LOG_X(logLevel, fmt, ...) ncine::theServiceLocator().logger().write(logLevel, static_cast<const char *>("%s -> " fmt), FUNCTION, ##__VA_ARGS__)
+
26 
+
27 #define LOGV(fmt) ncine::theServiceLocator().logger().write(ncine::ILogger::LogLevel::VERBOSE, static_cast<const char *>("%s -> " fmt), FUNCTION)
+
28 #define LOGD(fmt) ncine::theServiceLocator().logger().write(ncine::ILogger::LogLevel::DEBUG, static_cast<const char *>("%s -> " fmt), FUNCTION)
+
29 #define LOGI(fmt) ncine::theServiceLocator().logger().write(ncine::ILogger::LogLevel::INFO, static_cast<const char *>("%s, -> " fmt), FUNCTION)
+
30 #define LOGW(fmt) ncine::theServiceLocator().logger().write(ncine::ILogger::LogLevel::WARN, static_cast<const char *>("%s -> " fmt), FUNCTION)
+
31 #define LOGE(fmt) ncine::theServiceLocator().logger().write(ncine::ILogger::LogLevel::ERROR, static_cast<const char *>("%s -> " fmt), FUNCTION)
+
32 #define LOGF(fmt) ncine::theServiceLocator().logger().write(ncine::ILogger::LogLevel::FATAL, static_cast<const char *>("%s -> " fmt), FUNCTION)
+
33 #define LOG(logLevel, fmt) ncine::theServiceLocator().logger().write(logLevel, static_cast<const char *>("%s -> " fmt), FUNCTION)
+
34 
+
35 #ifdef NCINE_ASSERT_BREAK
+
36  #ifdef _MSC_VER
+
37  #define BREAK() __debugbreak()
+
38  #else
+
39  #ifndef __has_builtin
+
40  #define __has_builtin(x) 0
+
41  #endif
+
42 
+
43  #if __has_builtin(__builtin_trap)
+
44  #define BREAK() __builtin_trap()
+
45  #else
+
46  #define BREAK() ::abort()
+
47  #endif
+
48  #endif
+
49 #else
+
50  #define BREAK() ::exit(EXIT_FAILURE)
+
51 #endif
+
52 
+
53 // Fatal assert macros
+
54 #define FATAL_ASSERT_MSG_X(x, fmt, ...) \
+
55  do \
+
56  { \
+
57  if (!(x)) \
+
58  { \
+
59  LOGF_X(fmt, ##__VA_ARGS__); \
+
60  BREAK(); \
+
61  } \
+
62  } while (false)
+
63 
+
64 #define FATAL_ASSERT_MSG(x, fmt) \
+
65  do \
+
66  { \
+
67  if (!(x)) \
+
68  { \
+
69  LOGF(fmt); \
+
70  BREAK(); \
+
71  } \
+
72  } while (false)
+
73 
+
74 #define FATAL_ASSERT(x) \
+
75  do \
+
76  { \
+
77  if (!(x)) \
+
78  { \
+
79  LOGF("FATAL_ASSERT(" #x ")"); \
+
80  BREAK(); \
+
81  } \
+
82  } while (false)
+
83 
+
84 // Fatal macros
+
85 #define FATAL_MSG_X(fmt, ...) \
+
86  do \
+
87  { \
+
88  LOGF_X(fmt, ##__VA_ARGS__); \
+
89  BREAK(); \
+
90  } while (false)
+
91 
+
92 #define FATAL_MSG(fmt) \
+
93  do \
+
94  { \
+
95  LOGF(fmt); \
+
96  BREAK(); \
+
97  } while (false)
+
98 
+
99 #define FATAL() \
+
100  do \
+
101  { \
+
102  BREAK(); \
+
103  } while (false)
+
104 
+
105 // Non-fatal assert macros
+
106 #ifdef NCINE_ASSERT_BREAK
+
107  #define ASSERT_MSG_X(x, fmt, ...) \
+
108  do \
+
109  { \
+
110  if (!(x)) \
+
111  { \
+
112  LOGE_X(fmt, ##__VA_ARGS__); \
+
113  BREAK(); \
+
114  } \
+
115  } while (false)
+
116 
+
117  #define ASSERT_MSG(x, fmt) \
+
118  do \
+
119  { \
+
120  if (!(x)) \
+
121  { \
+
122  LOGE(fmt); \
+
123  BREAK(); \
+
124  } \
+
125  } while (false)
+
126 
+
127  #define ASSERT(x) \
+
128  do \
+
129  { \
+
130  if (!(x)) \
+
131  { \
+
132  LOGE("ASSERT(" #x ")"); \
+
133  BREAK(); \
+
134  } \
+
135  } while (false)
+
136 #else
+
137  #define ASSERT_MSG_X(x, fmt, ...) \
+
138  do \
+
139  { \
+
140  (void)sizeof(x); \
+
141  } while (false)
+
142  #define ASSERT_MSG(x, fmt) \
+
143  do \
+
144  { \
+
145  (void)sizeof(x); \
+
146  } while (false)
+
147  #define ASSERT(x) \
+
148  do \
+
149  { \
+
150  (void)sizeof(x); \
+
151  } while (false)
+
152 #endif
+
153 
+
154 #endif
+
+ + + + diff --git a/master/common__windefines_8h_source.html b/master/common__windefines_8h_source.html new file mode 100644 index 0000000000..4d9d668788 --- /dev/null +++ b/master/common__windefines_8h_source.html @@ -0,0 +1,100 @@ + + + + + + + +nCine: include/ncine/common_windefines.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
common_windefines.h
+
+
+
1 #ifndef NCINE_COMMON_WINDEFINES
+
2 #define NCINE_COMMON_WINDEFINES
+
3 
+
4 #if defined(_WIN32)
+
5  #if !defined(_X86_) && !defined(_AMD64_) && defined(_M_IX86)
+
6  #define _X86_
+
7  #endif
+
8 
+
9  #if !defined(_X86_) && !defined(_AMD64_) && defined(_M_AMD64)
+
10  #define _AMD64_
+
11  #endif
+
12 
+
13  #define WIN32_LEAN_AND_MEAN
+
14  #if !defined(NOMINMAX)
+
15  #define NOMINMAX
+
16  #endif
+
17 #endif
+
18 
+
19 #endif
+
+ + + + diff --git a/master/dir_0af1587c8378955de40f48b4bd1869f0.html b/master/dir_0af1587c8378955de40f48b4bd1869f0.html new file mode 100644 index 0000000000..0e752d49f9 --- /dev/null +++ b/master/dir_0af1587c8378955de40f48b4bd1869f0.html @@ -0,0 +1,81 @@ + + + + + + + +nCine: src/base Directory Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
base Directory Reference
+
+
+
+ + + + diff --git a/master/dir_560415a5d2bc4999842279f4fc1debef.html b/master/dir_560415a5d2bc4999842279f4fc1debef.html new file mode 100644 index 0000000000..1178c2496b --- /dev/null +++ b/master/dir_560415a5d2bc4999842279f4fc1debef.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: src/graphics Directory Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
graphics Directory Reference
+
+
+ + +

+Directories

+
+ + + + diff --git a/master/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/master/dir_68267d1309a1af8e8297ef4c3efbcdba.html new file mode 100644 index 0000000000..18ebcac74d --- /dev/null +++ b/master/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: src Directory Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
src Directory Reference
+
+
+ + +

+Directories

+
+ + + + diff --git a/master/dir_69e571e5afc36e9d039483e2298e1d8c.html b/master/dir_69e571e5afc36e9d039483e2298e1d8c.html new file mode 100644 index 0000000000..092d98dd4d --- /dev/null +++ b/master/dir_69e571e5afc36e9d039483e2298e1d8c.html @@ -0,0 +1,81 @@ + + + + + + + +nCine: src/graphics/opengl Directory Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
opengl Directory Reference
+
+
+
+ + + + diff --git a/master/dir_6bfbb9df9fcba3af2b352e911b967e82.html b/master/dir_6bfbb9df9fcba3af2b352e911b967e82.html new file mode 100644 index 0000000000..e33eef90b5 --- /dev/null +++ b/master/dir_6bfbb9df9fcba3af2b352e911b967e82.html @@ -0,0 +1,81 @@ + + + + + + + +nCine: include/ncine Directory Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
ncine Directory Reference
+
+
+
+ + + + diff --git a/master/dir_7e55306ba01a4f64bc8db2780859eb09.html b/master/dir_7e55306ba01a4f64bc8db2780859eb09.html new file mode 100644 index 0000000000..16ccb8dcac --- /dev/null +++ b/master/dir_7e55306ba01a4f64bc8db2780859eb09.html @@ -0,0 +1,81 @@ + + + + + + + +nCine: src/threading Directory Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
threading Directory Reference
+
+
+
+ + + + diff --git a/master/dir_a63dedf81f1e5ea1d42bb45ef831eb8c.html b/master/dir_a63dedf81f1e5ea1d42bb45ef831eb8c.html new file mode 100644 index 0000000000..0354adbb9c --- /dev/null +++ b/master/dir_a63dedf81f1e5ea1d42bb45ef831eb8c.html @@ -0,0 +1,81 @@ + + + + + + + +nCine: src/audio Directory Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
audio Directory Reference
+
+
+
+ + + + diff --git a/master/dir_b49f11675e92293ffa7ceeef744893f4.html b/master/dir_b49f11675e92293ffa7ceeef744893f4.html new file mode 100644 index 0000000000..d6acda66f9 --- /dev/null +++ b/master/dir_b49f11675e92293ffa7ceeef744893f4.html @@ -0,0 +1,81 @@ + + + + + + + +nCine: src/scripting Directory Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
scripting Directory Reference
+
+
+
+ + + + diff --git a/master/dir_b8d13aa7d06be3c2601985ee32750f86.html b/master/dir_b8d13aa7d06be3c2601985ee32750f86.html new file mode 100644 index 0000000000..2f450b9ac1 --- /dev/null +++ b/master/dir_b8d13aa7d06be3c2601985ee32750f86.html @@ -0,0 +1,81 @@ + + + + + + + +nCine: include/nctl Directory Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
nctl Directory Reference
+
+
+
+ + + + diff --git a/master/dir_d365e15d984c8d0205117ee0c40d6716.html b/master/dir_d365e15d984c8d0205117ee0c40d6716.html new file mode 100644 index 0000000000..a57cd80f3e --- /dev/null +++ b/master/dir_d365e15d984c8d0205117ee0c40d6716.html @@ -0,0 +1,81 @@ + + + + + + + +nCine: src/input Directory Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
input Directory Reference
+
+
+
+ + + + diff --git a/master/dir_d44c64559bbebec7f509842c48db8b23.html b/master/dir_d44c64559bbebec7f509842c48db8b23.html new file mode 100644 index 0000000000..7f87eeaae9 --- /dev/null +++ b/master/dir_d44c64559bbebec7f509842c48db8b23.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: include Directory Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
include Directory Reference
+
+
+ + +

+Directories

+
+ + + + diff --git a/master/dir_e6a0c564333ae2aa489c52fa70c1e9c9.html b/master/dir_e6a0c564333ae2aa489c52fa70c1e9c9.html new file mode 100644 index 0000000000..083798c6c8 --- /dev/null +++ b/master/dir_e6a0c564333ae2aa489c52fa70c1e9c9.html @@ -0,0 +1,81 @@ + + + + + + + +nCine: src/android Directory Reference + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
android Directory Reference
+
+
+
+ + + + diff --git a/master/doc.png b/master/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..5487431407f666437595ea1e03c7f442aa1e2a01 GIT binary patch literal 747 zcmV zjc;Q>Uh-%GTS^}k#(S?|A~S;v!@@%s( zQVV+A0lb2>a*mKcM$~9#YH1u@_hiI;6u=JK6zQ4^P1D7wi&4Yv^5Pf4lB&Hb0Ru0tZzPaZy2JFkO=w)tFp-LAvpb3MiS$z9#68WyB^d zN*s$U7t?h&F5UC%UMlfK$_1skXdD+BDt zQGqJ3_D7yveb) ziwt)Er&L@!Gb$9EqdwBE`Xk_t0NCQJKz!x(+sX&kP!-{nVtHA1u2{H(`IV34*B7|d zcSofUzz#SIC#7|K$SmVB0zP;^7um zA6Z!0a64z0X>I~ouuYLE0{nk>fVa=)352`=j+Ba3x=$w=xqT17f^C4F)R6Y@{t&=l d^Y8y<{s5{=!^(#TY(4-0002ovPDHLkV1g?CPM-h( literal 0 HcmV?d00001 diff --git a/master/doxygen.css b/master/doxygen.css new file mode 100644 index 0000000000..94a36289c9 --- /dev/null +++ b/master/doxygen.css @@ -0,0 +1,1793 @@ +/* The standard CSS for doxygen 1.9.1 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #B4CB87; + color: #647B35; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +th p.starttd, th p.intertd, th p.endtd { + font-size: 100%; + font-weight: 700; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +p.interli { +} + +p.interdd { +} + +p.intertd { +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.navtab { + border-right: 1px solid #C6D7A3; + padding-right: 15px; + text-align: right; + line-height: 110%; +} + +div.navtab table { + border-spacing: 0; +} + +td.navtab { + padding-right: 6px; + padding-left: 6px; +} +td.navtabHL { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + padding-right: 6px; + padding-left: 6px; +} + +td.navtabHL a, td.navtabHL a:visited { + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +a.navtab { + font-weight: bold; +} + +div.qindex{ + text-align: center; + width: 100%; + line-height: 140%; + font-size: 130%; + color: #A0A0A0; +} + +dt.alphachar{ + font-size: 180%; + font-weight: bold; +} + +.alphachar a{ + color: black; +} + +.alphachar a:hover, .alphachar a:visited{ + text-decoration: none; +} + +.classindex dl { + padding: 25px; + column-count:1 +} + +.classindex dd { + display:inline-block; + margin-left: 50px; + width: 90%; + line-height: 1.15em; +} + +.classindex dl.odd { + background-color: #FAFCF8; +} + +@media(min-width: 1120px) { + .classindex dl { + column-count:2 + } +} + +@media(min-width: 1320px) { + .classindex dl { + column-count:3 + } +} + + +/* @group Link Styling */ + +a { + color: #728C3D; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #83A246; +} + +a:hover { + text-decoration: underline; +} + +.contents a.qindexHL:visited { + color: #FFFFFF; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #83A246; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #83A246; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +ul { + overflow: hidden; /*Fixed: list item bullets overlap floating elements*/ +} + +#side-nav ul { + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ +} + +#main-nav ul { + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ +} + +.fragment { + text-align: left; + direction: ltr; + overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ + overflow-y: hidden; +} + +pre.fragment { + border: 1px solid #DAE5C4; + background-color: #FCFDFB; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ + margin: 4px 8px 4px 2px; + background-color: #FCFDFB; + border: 1px solid #DAE5C4; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #FFFFFF; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #F3F6EB; + font-weight: bold; + border: 1px solid #DAE5C4; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #F3F6EB; + border: 1px solid #DAE5C4; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #F4F7EE; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl, img.inline { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #FAFBF7; + border-left: 2px solid #C1D49C; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +blockquote.DocNodeRTL { + border-left: 0; + border-right: 2px solid #C1D49C; + margin: 0 4px 0 24px; + padding: 0 16px 0 12px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #C6D7A3; +} + +th.dirtab { + background: #F3F6EB; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #8AAA4A; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #FBFCF9; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #EAF0DE; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight, .memTemplItemRight { + width: 100%; +} + +.memTemplParams { + color: #83A246; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #C9D9A8; + border-left: 1px solid #C9D9A8; + border-right: 1px solid #C9D9A8; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #EDF2E2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #83A246; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #F3F6EB; + border: 1px solid #C6D7A3; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #C9D9A8; + border-left: 1px solid #C9D9A8; + border-right: 1px solid #C9D9A8; + padding: 6px 0px 6px 0px; + color: #455525; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #EBF1DF; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #C9D9A8; + border-left: 1px solid #C9D9A8; + border-right: 1px solid #C9D9A8; + padding: 6px 10px 2px 10px; + background-color: #FCFDFB; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype, .tparams .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir, .tparams .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #A7C172; + border-top:1px solid #94B453; + border-left:1px solid #94B453; + border-right:1px solid #DAE5C4; + border-bottom:1px solid #DAE5C4; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #C1D49C; + border-bottom: 1px solid #C1D49C; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #FAFBF7; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #728C3D; +} + +.arrow { + color: #C1D49C; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #A7C172; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #4F612A; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #54682D; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #677F37; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #C9D9A8; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #C9D9A8; + border-bottom: 1px solid #C9D9A8; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #C9D9A8; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #EDF2E2; + font-size: 90%; + color: #455525; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #C9D9A8; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#B6CC8A; + border:solid 1px #D9E4C2; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#657C36; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #4B5D28; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#A1BD68; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#657C36; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #FBFCF9; + margin: 0px; + border-bottom: 1px solid #DAE5C4; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +.PageDocRTL-title div.headertitle { + text-align: right; + direction: rtl; +} + +dl { + padding: 0 0 0 0; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ +dl.section { + margin-left: 0px; + padding-left: 0px; +} + +dl.section.DocNodeRTL { + margin-right: 0px; + padding-right: 0px; +} + +dl.note { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #D0C000; +} + +dl.note.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #FF0000; +} + +dl.warning.DocNodeRTL, dl.attention.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00D000; +} + +dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00D000; +} + +dl.deprecated { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #505050; +} + +dl.deprecated.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #505050; +} + +dl.todo { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #00C0E0; +} + +dl.todo.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #00C0E0; +} + +dl.test { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #3030E0; +} + +dl.test.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #3030E0; +} + +dl.bug { + margin-left: -7px; + padding-left: 3px; + border-left: 4px solid; + border-color: #C08050; +} + +dl.bug.DocNodeRTL { + margin-left: 0; + padding-left: 0; + border-left: 0; + margin-right: -7px; + padding-right: 3px; + border-right: 4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #94B453; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #BACE90; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#5F7533; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; +} + +dl.citelist dd { + margin:2px 0 2px 72px; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F8FAF4; + border: 1px solid #E7EED8; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +.PageDocRTL-title div.toc { + float: left !important; + text-align: right; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +.PageDocRTL-title div.toc li { + background-position-x: right !important; + padding-left: 0 !important; + padding-right: 10px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #83A246; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +span.emoji { + /* font family used at the site: https://unicode.org/emoji/charts/full-emoji-list.html + * font-family: "Noto Color Emoji", "Apple Color Emoji", "Segoe UI Emoji", Times, Symbola, Aegyptus, Code2000, Code2001, Code2002, Musica, serif, LastResort; + */ +} + +.PageDocRTL-title div.toc li.level1 { + margin-left: 0 !important; + margin-right: 0; +} + +.PageDocRTL-title div.toc li.level2 { + margin-left: 0 !important; + margin-right: 15px; +} + +.PageDocRTL-title div.toc li.level3 { + margin-left: 0 !important; + margin-right: 30px; +} + +.PageDocRTL-title div.toc li.level4 { + margin-left: 0 !important; + margin-right: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #FFFFFF; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #FFFFFF; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #54682D; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #677F37; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + +.DocNodeRTL { + text-align: right; + direction: rtl; +} + +.DocNodeLTR { + text-align: left; + direction: ltr; +} + +table.DocNodeRTL { + width: auto; + margin-right: 0; + margin-left: auto; +} + +table.DocNodeLTR { + width: auto; + margin-right: auto; + margin-left: 0; +} + +tt, code, kbd, samp +{ + display: inline-block; + direction:ltr; +} +/* @end */ + +u { + text-decoration: underline; +} + diff --git a/master/doxygen.svg b/master/doxygen.svg new file mode 100644 index 0000000000..da9742a3ad --- /dev/null +++ b/master/doxygen.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/master/dynsections.js b/master/dynsections.js new file mode 100644 index 0000000000..3174bd7beb --- /dev/null +++ b/master/dynsections.js @@ -0,0 +1,121 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +nCine: File List + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
File List
+
+
+
Here is a list of all documented files with brief descriptions:
+
[detail level 123]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
  include
  ncine
  nctl
  src
  input
+
+
+ + + + diff --git a/master/folderclosed.png b/master/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..7e9a6f4e2df2621535c7bce1f139ebc78e2a55c9 GIT binary patch literal 643 zcmV-}0(||6P)5u3^vImAT_3GT2Sz-jina#2Z(}8cdlH!QDhWF@GtlaT!=2joeLG} z$MXwO7YdO^Dw@)TxG2(OuJ68=nKzS(4F$7sF`2`iH*dJ-o^#)O*;+&d07HWf0K>%4 z2}S^*7azYqq{Y^20Ol@b_n}rgZUMkX(3gOd7c#ZT8w<_lH%tHk8-mr_wqU zdB<;KB((_u5=dBd@0mxn(g|ftV2@5j@R>|rKDEPlJkOCW`?T~JC#SE*Eb6O(tKwvq zrN1?aGy%t;Fjm9kzpeL#g1b*IQ?+<3w4h7bt(+4lNz{h2ZG8T=fKxNqVhR!jcNQ*D zIbRQ@8wHxkr%u?17=g5?@#BRgxIT#BBJJ9FAgqvoK|+q&|Kxt-9xS$A;dK4R`UJP1 zT%eL%lEjsEdtgqKIH@s^l!E5+JDi!lIk?H}KZ6N^O{G_gX*wqaU~ZdJ>HZ8PSZl8; zuY+a+Krd`7W%f#U3;@08L*U~}>t*B=(*8%sfi2N_j$1c701!jssE~(Tw(8D{N`6+9 z^GC$)+_b{j=wXS2LM{L?mOCWMxfwZM7keZsg*h?q&dIs`V%rwy!MY0M`Ewos{uTcJ df3%?!`~kmd7M+5ockuuK002ovPDHLkV1m4rEYtu1 literal 0 HcmV?d00001 diff --git a/master/folderopen.png b/master/folderopen.png new file mode 100644 index 0000000000000000000000000000000000000000..3754d4913963a4445cfe60d2f0db08c34981d913 GIT binary patch literal 641 zcmV-{0)G98P)X&9y}<5eg=hp15X}BC?c$&2;w*J6A0=>@Ghbv z1L8pt6pDH%sU@UF8Y`L|-Lv)xVfU=M?Hnu zf)M~nL$m!+HrC(4mp**|r-EzmN6nen0N_tCkbr}i^5e*6a?tgxdbiwoiBD^ZX7wAol&<8qHf9D>#4ZMogjv!Gq^l zWu-Kuw5A@}$|~5$1QA(C!u$AqzH}NyaC11p{bx(kHYZirgaL>x%D7hzfM~E>^l5ii zapCl>;RN@dUXhkLPQ4wTL9`xrRunh53!y~q&Kefa-2NTGWmz;_6-?{>lJxs&^YHol z?K2VFi4hFE$^8Ka1@EsYjc_2r>iT;C(O`Z14?N9h%l835Y$PrkU9jpN_qeE67DUZC zEOwUi&kEO?6;*4mvJ>SwQ5&0Ad#0<$#Eg4FOpeV7r#St1XayAf5&--y{QpM- bfT8#WYgP#azA)U+00000NkvXXu0mjfb`~a+ literal 0 HcmV?d00001 diff --git a/master/functions.html b/master/functions.html new file mode 100644 index 0000000000..7b79ad81f3 --- /dev/null +++ b/master/functions.html @@ -0,0 +1,361 @@ + + + + + + + +nCine: Class Members + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- a -

+
+ + + + diff --git a/master/functions_b.html b/master/functions_b.html new file mode 100644 index 0000000000..aaa953035a --- /dev/null +++ b/master/functions_b.html @@ -0,0 +1,189 @@ + + + + + + + +nCine: Class Members + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- b -

+
+ + + + diff --git a/master/functions_c.html b/master/functions_c.html new file mode 100644 index 0000000000..389da3493e --- /dev/null +++ b/master/functions_c.html @@ -0,0 +1,402 @@ + + + + + + + +nCine: Class Members + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- c -

+
+ + + + diff --git a/master/functions_d.html b/master/functions_d.html new file mode 100644 index 0000000000..ede845253f --- /dev/null +++ b/master/functions_d.html @@ -0,0 +1,214 @@ + + + + + + + +nCine: Class Members + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- d -

+
+ + + + diff --git a/master/functions_e.html b/master/functions_e.html new file mode 100644 index 0000000000..fed7507b47 --- /dev/null +++ b/master/functions_e.html @@ -0,0 +1,206 @@ + + + + + + + +nCine: Class Members + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- e -

+
+ + + + diff --git a/master/functions_enum.html b/master/functions_enum.html new file mode 100644 index 0000000000..e4c2114a9b --- /dev/null +++ b/master/functions_enum.html @@ -0,0 +1,212 @@ + + + + + + + +nCine: Class Members - Enumerations + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- a -

+ + +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- f -

+ + +

- g -

+ + +

- l -

+ + +

- m -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- w -

+
+ + + + diff --git a/master/functions_eval.html b/master/functions_eval.html new file mode 100644 index 0000000000..82968430a6 --- /dev/null +++ b/master/functions_eval.html @@ -0,0 +1,100 @@ + + + + + + + +nCine: Class Members - Enumerator + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + diff --git a/master/functions_f.html b/master/functions_f.html new file mode 100644 index 0000000000..6efb858131 --- /dev/null +++ b/master/functions_f.html @@ -0,0 +1,236 @@ + + + + + + + +nCine: Class Members + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- f -

+
+ + + + diff --git a/master/functions_func.html b/master/functions_func.html new file mode 100644 index 0000000000..d74ab3fedf --- /dev/null +++ b/master/functions_func.html @@ -0,0 +1,316 @@ + + + + + + + +nCine: Class Members - Functions + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- a -

+
+ + + + diff --git a/master/functions_func_b.html b/master/functions_func_b.html new file mode 100644 index 0000000000..04d6a27d46 --- /dev/null +++ b/master/functions_func_b.html @@ -0,0 +1,160 @@ + + + + + + + +nCine: Class Members - Functions + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- b -

+
+ + + + diff --git a/master/functions_func_c.html b/master/functions_func_c.html new file mode 100644 index 0000000000..08f447f0c7 --- /dev/null +++ b/master/functions_func_c.html @@ -0,0 +1,332 @@ + + + + + + + +nCine: Class Members - Functions + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- c -

+
+ + + + diff --git a/master/functions_func_d.html b/master/functions_func_d.html new file mode 100644 index 0000000000..e79201909f --- /dev/null +++ b/master/functions_func_d.html @@ -0,0 +1,172 @@ + + + + + + + +nCine: Class Members - Functions + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- d -

+
+ + + + diff --git a/master/functions_func_e.html b/master/functions_func_e.html new file mode 100644 index 0000000000..cbf38bcdfd --- /dev/null +++ b/master/functions_func_e.html @@ -0,0 +1,170 @@ + + + + + + + +nCine: Class Members - Functions + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- e -

+
+ + + + diff --git a/master/functions_func_f.html b/master/functions_func_f.html new file mode 100644 index 0000000000..e0f7fb7e52 --- /dev/null +++ b/master/functions_func_f.html @@ -0,0 +1,189 @@ + + + + + + + +nCine: Class Members - Functions + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- f -

+
+ + + + diff --git a/master/functions_func_g.html b/master/functions_func_g.html new file mode 100644 index 0000000000..9a60dad85a --- /dev/null +++ b/master/functions_func_g.html @@ -0,0 +1,129 @@ + + + + + + + +nCine: Class Members - Functions + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- g -

+
+ + + + diff --git a/master/functions_func_h.html b/master/functions_func_h.html new file mode 100644 index 0000000000..9f99940aa2 --- /dev/null +++ b/master/functions_func_h.html @@ -0,0 +1,152 @@ + + + + + + + +nCine: Class Members - Functions + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- h -

+
+ + + + diff --git a/master/functions_func_i.html b/master/functions_func_i.html new file mode 100644 index 0000000000..1626c8048d --- /dev/null +++ b/master/functions_func_i.html @@ -0,0 +1,329 @@ + + + + + + + +nCine: Class Members - Functions + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- i -

+
+ + + + diff --git a/master/functions_func_j.html b/master/functions_func_j.html new file mode 100644 index 0000000000..8f6acc6a6a --- /dev/null +++ b/master/functions_func_j.html @@ -0,0 +1,101 @@ + + + + + + + +nCine: Class Members - Functions + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- j -

+
+ + + + diff --git a/master/functions_func_k.html b/master/functions_func_k.html new file mode 100644 index 0000000000..5e65f22ff7 --- /dev/null +++ b/master/functions_func_k.html @@ -0,0 +1,91 @@ + + + + + + + +nCine: Class Members - Functions + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + diff --git a/master/functions_func_l.html b/master/functions_func_l.html new file mode 100644 index 0000000000..be4851f175 --- /dev/null +++ b/master/functions_func_l.html @@ -0,0 +1,184 @@ + + + + + + + +nCine: Class Members - Functions + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- l -

+
+ + + + diff --git a/master/functions_func_m.html b/master/functions_func_m.html new file mode 100644 index 0000000000..ff73faa506 --- /dev/null +++ b/master/functions_func_m.html @@ -0,0 +1,225 @@ + + + + + + + +nCine: Class Members - Functions + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- m -

+
+ + + + diff --git a/master/functions_func_n.html b/master/functions_func_n.html new file mode 100644 index 0000000000..cb4b6d7e45 --- /dev/null +++ b/master/functions_func_n.html @@ -0,0 +1,184 @@ + + + + + + + +nCine: Class Members - Functions + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- n -

+
+ + + + diff --git a/master/functions_func_o.html b/master/functions_func_o.html new file mode 100644 index 0000000000..d24e2dd8cb --- /dev/null +++ b/master/functions_func_o.html @@ -0,0 +1,328 @@ + + + + + + + +nCine: Class Members - Functions + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- o -

+
+ + + + diff --git a/master/functions_func_p.html b/master/functions_func_p.html new file mode 100644 index 0000000000..fb50bc330f --- /dev/null +++ b/master/functions_func_p.html @@ -0,0 +1,166 @@ + + + + + + + +nCine: Class Members - Functions + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- p -

+
+ + + + diff --git a/master/functions_func_q.html b/master/functions_func_q.html new file mode 100644 index 0000000000..35505e636e --- /dev/null +++ b/master/functions_func_q.html @@ -0,0 +1,80 @@ + + + + + + + +nCine: Class Members - Functions + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- q -

+
+ + + + diff --git a/master/functions_func_r.html b/master/functions_func_r.html new file mode 100644 index 0000000000..57d965ee76 --- /dev/null +++ b/master/functions_func_r.html @@ -0,0 +1,341 @@ + + + + + + + +nCine: Class Members - Functions + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- r -

+
+ + + + diff --git a/master/functions_func_s.html b/master/functions_func_s.html new file mode 100644 index 0000000000..2f9787b20f --- /dev/null +++ b/master/functions_func_s.html @@ -0,0 +1,687 @@ + + + + + + + +nCine: Class Members - Functions + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- s -

+
+ + + + diff --git a/master/functions_func_t.html b/master/functions_func_t.html new file mode 100644 index 0000000000..2a1c3aa097 --- /dev/null +++ b/master/functions_func_t.html @@ -0,0 +1,148 @@ + + + + + + + +nCine: Class Members - Functions + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- t -

+
+ + + + diff --git a/master/functions_func_u.html b/master/functions_func_u.html new file mode 100644 index 0000000000..4d7fab27e4 --- /dev/null +++ b/master/functions_func_u.html @@ -0,0 +1,166 @@ + + + + + + + +nCine: Class Members - Functions + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- u -

+
+ + + + diff --git a/master/functions_func_v.html b/master/functions_func_v.html new file mode 100644 index 0000000000..a079baa6de --- /dev/null +++ b/master/functions_func_v.html @@ -0,0 +1,121 @@ + + + + + + + +nCine: Class Members - Functions + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- v -

+
+ + + + diff --git a/master/functions_func_w.html b/master/functions_func_w.html new file mode 100644 index 0000000000..ec6c620082 --- /dev/null +++ b/master/functions_func_w.html @@ -0,0 +1,119 @@ + + + + + + + +nCine: Class Members - Functions + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- w -

+
+ + + + diff --git a/master/functions_func_~.html b/master/functions_func_~.html new file mode 100644 index 0000000000..687ff4cd23 --- /dev/null +++ b/master/functions_func_~.html @@ -0,0 +1,89 @@ + + + + + + + +nCine: Class Members - Functions + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- ~ -

+
+ + + + diff --git a/master/functions_g.html b/master/functions_g.html new file mode 100644 index 0000000000..40feae7ccd --- /dev/null +++ b/master/functions_g.html @@ -0,0 +1,149 @@ + + + + + + + +nCine: Class Members + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- g -

+
+ + + + diff --git a/master/functions_h.html b/master/functions_h.html new file mode 100644 index 0000000000..8beb94abd8 --- /dev/null +++ b/master/functions_h.html @@ -0,0 +1,169 @@ + + + + + + + +nCine: Class Members + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- h -

+
+ + + + diff --git a/master/functions_i.html b/master/functions_i.html new file mode 100644 index 0000000000..608480ff1a --- /dev/null +++ b/master/functions_i.html @@ -0,0 +1,368 @@ + + + + + + + +nCine: Class Members + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- i -

+
+ + + + diff --git a/master/functions_j.html b/master/functions_j.html new file mode 100644 index 0000000000..21b3390aa8 --- /dev/null +++ b/master/functions_j.html @@ -0,0 +1,109 @@ + + + + + + + +nCine: Class Members + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- j -

+
+ + + + diff --git a/master/functions_k.html b/master/functions_k.html new file mode 100644 index 0000000000..1ac3ab673c --- /dev/null +++ b/master/functions_k.html @@ -0,0 +1,91 @@ + + + + + + + +nCine: Class Members + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ + + + + + diff --git a/master/functions_l.html b/master/functions_l.html new file mode 100644 index 0000000000..d1aa61db04 --- /dev/null +++ b/master/functions_l.html @@ -0,0 +1,214 @@ + + + + + + + +nCine: Class Members + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- l -

+
+ + + + diff --git a/master/functions_m.html b/master/functions_m.html new file mode 100644 index 0000000000..6cb5d57c1d --- /dev/null +++ b/master/functions_m.html @@ -0,0 +1,257 @@ + + + + + + + +nCine: Class Members + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- m -

+
+ + + + diff --git a/master/functions_n.html b/master/functions_n.html new file mode 100644 index 0000000000..3c57851066 --- /dev/null +++ b/master/functions_n.html @@ -0,0 +1,206 @@ + + + + + + + +nCine: Class Members + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- n -

+
+ + + + diff --git a/master/functions_o.html b/master/functions_o.html new file mode 100644 index 0000000000..0467173fd1 --- /dev/null +++ b/master/functions_o.html @@ -0,0 +1,378 @@ + + + + + + + +nCine: Class Members + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- o -

+
+ + + + diff --git a/master/functions_p.html b/master/functions_p.html new file mode 100644 index 0000000000..a4de8475a5 --- /dev/null +++ b/master/functions_p.html @@ -0,0 +1,211 @@ + + + + + + + +nCine: Class Members + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- p -

+
+ + + + diff --git a/master/functions_q.html b/master/functions_q.html new file mode 100644 index 0000000000..8d0510f221 --- /dev/null +++ b/master/functions_q.html @@ -0,0 +1,80 @@ + + + + + + + +nCine: Class Members + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- q -

+
+ + + + diff --git a/master/functions_r.html b/master/functions_r.html new file mode 100644 index 0000000000..3f91d8fbb3 --- /dev/null +++ b/master/functions_r.html @@ -0,0 +1,414 @@ + + + + + + + +nCine: Class Members + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- r -

+
+ + + + diff --git a/master/functions_rela.html b/master/functions_rela.html new file mode 100644 index 0000000000..eda9c095ae --- /dev/null +++ b/master/functions_rela.html @@ -0,0 +1,183 @@ + + + + + + + +nCine: Class Members - Related Functions + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- a -

+ + +

- h -

+ + +

- l -

+ + +

- o -

+ + +

- s -

+ + +

- t -

+
+ + + + diff --git a/master/functions_s.html b/master/functions_s.html new file mode 100644 index 0000000000..f0561c2d8f --- /dev/null +++ b/master/functions_s.html @@ -0,0 +1,759 @@ + + + + + + + +nCine: Class Members + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- s -

+
+ + + + diff --git a/master/functions_t.html b/master/functions_t.html new file mode 100644 index 0000000000..8a1c0cf007 --- /dev/null +++ b/master/functions_t.html @@ -0,0 +1,175 @@ + + + + + + + +nCine: Class Members + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- t -

+
+ + + + diff --git a/master/functions_type.html b/master/functions_type.html new file mode 100644 index 0000000000..b8191e720f --- /dev/null +++ b/master/functions_type.html @@ -0,0 +1,220 @@ + + + + + + + +nCine: Class Members - Typedefs + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- c -

+ + +

- i -

+ + +

- p -

+ + +

- r -

+ + +

- v -

+
+ + + + diff --git a/master/functions_u.html b/master/functions_u.html new file mode 100644 index 0000000000..ee69e0c070 --- /dev/null +++ b/master/functions_u.html @@ -0,0 +1,172 @@ + + + + + + + +nCine: Class Members + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- u -

+
+ + + + diff --git a/master/functions_v.html b/master/functions_v.html new file mode 100644 index 0000000000..09cc83fcb1 --- /dev/null +++ b/master/functions_v.html @@ -0,0 +1,161 @@ + + + + + + + +nCine: Class Members + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- v -

+
+ + + + diff --git a/master/functions_vars.html b/master/functions_vars.html new file mode 100644 index 0000000000..09af1665bd --- /dev/null +++ b/master/functions_vars.html @@ -0,0 +1,682 @@ + + + + + + + +nCine: Class Members - Variables + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+  + +

- a -

+ + +

- b -

+ + +

- c -

+ + +

- d -

+ + +

- e -

+ + +

- f -

+ + +

- g -

+ + +

- h -

+ + +

- i -

+ + +

- j -

+ + +

- l -

+ + +

- m -

+ + +

- n -

+ + +

- o -

+ + +

- p -

+ + +

- r -

+ + +

- s -

+ + +

- t -

+ + +

- u -

+ + +

- v -

+ + +

- w -

+ + +

- x -

+ + +

- y -

+ + +

- z -

+
+ + + + diff --git a/master/functions_w.html b/master/functions_w.html new file mode 100644 index 0000000000..efb9d09e9d --- /dev/null +++ b/master/functions_w.html @@ -0,0 +1,169 @@ + + + + + + + +nCine: Class Members + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- w -

+
+ + + + diff --git a/master/functions_x.html b/master/functions_x.html new file mode 100644 index 0000000000..e98c46c348 --- /dev/null +++ b/master/functions_x.html @@ -0,0 +1,88 @@ + + + + + + + +nCine: Class Members + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- x -

+
+ + + + diff --git a/master/functions_y.html b/master/functions_y.html new file mode 100644 index 0000000000..2e07ee92b6 --- /dev/null +++ b/master/functions_y.html @@ -0,0 +1,88 @@ + + + + + + + +nCine: Class Members + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- y -

+
+ + + + diff --git a/master/functions_z.html b/master/functions_z.html new file mode 100644 index 0000000000..15663f9447 --- /dev/null +++ b/master/functions_z.html @@ -0,0 +1,88 @@ + + + + + + + +nCine: Class Members + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- z -

+
+ + + + diff --git a/master/functions_~.html b/master/functions_~.html new file mode 100644 index 0000000000..8a993dd192 --- /dev/null +++ b/master/functions_~.html @@ -0,0 +1,89 @@ + + + + + + + +nCine: Class Members + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
Here is a list of all documented class members with links to the class documentation for each member:
+ +

- ~ -

+
+ + + + diff --git a/master/graph_legend.html b/master/graph_legend.html new file mode 100644 index 0000000000..b4e1d63550 --- /dev/null +++ b/master/graph_legend.html @@ -0,0 +1,137 @@ + + + + + + + +nCine: Graph Legend + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Graph Legend
+
+
+

This page explains how to interpret the graphs that are generated by doxygen.

+

Consider the following example:

/*! Invisible class because of truncation */
+
class Invisible { };
+
+
/*! Truncated class, inheritance relation is hidden */
+
class Truncated : public Invisible { };
+
+
/* Class not documented with doxygen comments */
+
class Undocumented { };
+
+
/*! Class that is inherited using public inheritance */
+
class PublicBase : public Truncated { };
+
+
/*! A template class */
+
template<class T> class Templ { };
+
+
/*! Class that is inherited using protected inheritance */
+
class ProtectedBase { };
+
+
/*! Class that is inherited using private inheritance */
+
class PrivateBase { };
+
+
/*! Class that is used by the Inherited class */
+
class Used { };
+
+
/*! Super class that inherits a number of other classes */
+
class Inherited : public PublicBase,
+
protected ProtectedBase,
+
private PrivateBase,
+
public Undocumented,
+
public Templ<int>
+
{
+
private:
+
Used *m_usedClass;
+
};
+

This will result in the following graph:

+

The boxes in the above graph have the following meaning:

+
    +
  • +A filled gray box represents the struct or class for which the graph is generated.
  • +
  • +A box with a black border denotes a documented struct or class.
  • +
  • +A box with a gray border denotes an undocumented struct or class.
  • +
  • +A box with a red border denotes a documented struct or class forwhich not all inheritance/containment relations are shown. A graph is truncated if it does not fit within the specified boundaries.
  • +
+

The arrows have the following meaning:

+
    +
  • +A dark blue arrow is used to visualize a public inheritance relation between two classes.
  • +
  • +A dark green arrow is used for protected inheritance.
  • +
  • +A dark red arrow is used for private inheritance.
  • +
  • +A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible.
  • +
  • +A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance.
  • +
+
+ + + + diff --git a/master/graph_legend.md5 b/master/graph_legend.md5 new file mode 100644 index 0000000000..8fcdccd1b9 --- /dev/null +++ b/master/graph_legend.md5 @@ -0,0 +1 @@ +f51bf6e9a10430aafef59831b08dcbfe \ No newline at end of file diff --git a/master/graph_legend.png b/master/graph_legend.png new file mode 100644 index 0000000000000000000000000000000000000000..7e2cbcfb2d143e382be6ed65635a3d859e53bc36 GIT binary patch literal 20615 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 literal 0 HcmV?d00001 diff --git a/master/hierarchy.html b/master/hierarchy.html new file mode 100644 index 0000000000..62912416fe --- /dev/null +++ b/master/hierarchy.html @@ -0,0 +1,440 @@ + + + + + + + +nCine: Class Hierarchy + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class Hierarchy
+
+
+
+

Go to the graphical class hierarchy

+This inheritance list is sorted roughly, but not completely, alphabetically:
+
[detail level 123456]
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
 Cncine::IAudioDevice::ALExtensionsOpenAL queryable extensions
 Cnctl::detail::allocHelpers< value >A container for functions to allocate and construct objects and arrays of objects
 Cnctl::detail::allocHelpers< true >Specialization for trivially constructible and destructible types
 Cnctl::AllocManagerThe allocators manager
 Cnctl::AllocManagerInitializerAllocator manager initializer
 Cncine::AppConfigurationThe class storing initialization settings for an nCine application
 Cncine::ApplicationMain entry point and handler for nCine applications
 Cnctl::Array< T >A dynamic array based on templates that stores elements in the heap
 Cnctl::Array< float >
 Cnctl::Array< HashBucket >
 Cnctl::Array< ncine::ColorAffector::ColorStep >
 Cnctl::Array< ncine::LuaStateManager::StateToManager >
 Cnctl::Array< ncine::Particle * >
 Cnctl::Array< ncine::PositionAffector::PositionStep >
 Cnctl::Array< ncine::RectAnimation >
 Cnctl::Array< ncine::RotationAffector::RotationStep >
 Cnctl::Array< ncine::SceneNode * >
 Cnctl::Array< ncine::SizeAffector::SizeStep >
 Cnctl::Array< ncine::VelocityAffector::VelocityStep >
 Cnctl::Array< ncine::Viewport * >
 Cnctl::Array< nctl::UniquePtr< ncine::Particle > >
 Cnctl::Array< nctl::UniquePtr< ncine::ParticleAffector > >
 Cnctl::Array< Rect< int > >
 Cnctl::Array< unsigned short >
 Cnctl::Array< Vertex >
 Cnctl::ArrayIterator< T, IsConst >An Array iterator
 Cnctl::Atomic32An atomic int32_t class
 Cnctl::Atomic64An atomic int64_t class
 Cncine::IAudioDevice::AttributesAudio device attributes class
 Cncine::AudioEffectA class representing an OpenAL effect
 Cncine::AudioEffectPropertiesA class representing a set of OpenAL effect properties
 Cncine::AudioEffectSlotA class representing an OpenAL auxilary effect slot
 Cncine::AudioFilterA class representing an OpenAL filter
 Cncine::AudioStreamAudio stream class
 Cncine::AudioEffectProperties::AutoWahProperties
 Cnctl::BaseListNodeThe base list node used as sentinel
 Cnctl::BitSet< T >A sequence of bits to be manipulated with logical operators
 Cnctl::BitSet< uint8_t >
 Cnctl::FreeListAllocator::Block
 Cncine::CameraThe camera class that handles matrices for shaders
 Cncine::AudioEffectProperties::ChorusProperties
 Cncine::ColorA four channels unsigned char color
 Cncine::ColorfA four channels normalized float color
 Cncine::ColorHdrA three channels unclamped float color
 Cncine::ColorAffector::ColorStep
 Cncine::AudioEffectProperties::CompressorProperties
 Cnctl::detail::constructHelpers< value >A container for functions to construct objects and arrays of objects
 Cnctl::detail::constructHelpers< true >Specialization for trivially constructible types
 Cnctl::detail::copyHelpers< value >A container for functions to copy arrays of objects
 Cnctl::detail::copyHelpers< true >Specialization for trivially copyable types
 Cncine::LuaUtils::RunInfo::DebugInfo
 Cnctl::DefaultDelete< T >
 Cnctl::DefaultDelete< T[]>
 Cnctl::detail::destructHelpers< value >A container for functions to destruct objects and arrays of objects
 Cnctl::detail::destructHelpers< true >Specialization for trivially destructible types
 Cncine::FileSystem::DirectoryThe class that handles directory traversal
 Cncine::DisplayModeDisplay properties
 Cncine::IDebugOverlay::DisplaySettings
 Cncine::AudioEffectProperties::DistortionProperties
 Cncine::DropEventInformation about a drag'n'drop event
 Cncine::AudioEffectProperties::EaxReverbProperties
 Cncine::AudioEffectProperties::EchoProperties
 Cncine::EmscriptenLocalFileThe class dealing with opening and saving a local file on Emscripten
 Cncine::AudioEffectProperties::EqualizerProperties
 Cnctl::FastHashFunc< K >Fast-hash
 Cnctl::FastHashFunc< const char * >Fast-hash
 Cnctl::FastHashFunc< String >Fast-hash
 Cncine::FileSystem::FileDate
 Cncine::FileSystemFile system related methods
 Cnctl::FixedHashFunc< K >Hash function returning always the first hashmap bucket, for debug purposes
 Cncine::AudioEffectProperties::FlangerProperties
 Cnctl::FNV1aHashFunc< K >Fowler-Noll-Vo Hash (FNV-1a)
 Cnctl::FNV1aHashFunc< const char * >
 Cnctl::FNV1aHashFunc< String >Fowler-Noll-Vo Hash (FNV-1a)
 Cnctl::FNV1aHashFunc< unsigned short int >
 Cnctl::FNV1aHashFunc< void * >
 Cnctl::ForwardIteratorTagDispatching tag for iterators that can only move forward, one element at a time
 Cncine::AudioEffectProperties::FrequencyShifterProperties
 Cncine::IGfxCapabilities::GLArrayIntValuesOpenGL queryable runtime integer array values
 Cncine::IGfxDevice::GLContextInfoContains the attributes to create an OpenGL context
 Cncine::IGfxCapabilities::GLExtensionsOpenGL queryable extensions
 Cncine::IGfxCapabilities::GlInfoStringsOpenGL information strings
 Cncine::IGfxCapabilities::GLIntValuesOpenGL queryable runtime integer values
 Ctracy::GpuCtxScope
 Cncine::Application::GuiSettingsGUI settings (for ImGui and Nuklear) that can be changed at run-time
 Cncine::Hash64Utility methods to calculate a uint64_t hash from strings or files
 Cnctl::HashMap< K, T, HashFunc >A template based hashmap implementation with open addressing and leapfrog probing
 Cnctl::HashMap< unsigned short int, FontGlyph >
 Cnctl::HashMap< void *, LuaTypes::UserDataType >
 Cnctl::HashMapHelperTraits< K, T, HashFunc, IsConst >Base helper structure for type traits used in the hashmap iterator
 Cnctl::HashMapHelperTraits< K, T, HashFunc, false >Helper structure providing type traits used in the non constant hashmap iterator
 Cnctl::HashMapHelperTraits< K, T, HashFunc, true >Helper structure providing type traits used in the constant hashmap iterator
 Cnctl::HashMapIterator< K, T, HashFunc, IsConst >A hashmap iterator
 Cnctl::HashMapList< K, T, HashFunc >A template based hashmap implementation with separate chaining and list head cell
 Cnctl::HashMapListHelperTraits< K, T, HashFunc, IsConst >Base helper structure for type traits used in the hashmap iterator
 Cnctl::HashMapListHelperTraits< K, T, HashFunc, false >Helper structure providing type traits used in the non constant hashmap iterator
 Cnctl::HashMapListHelperTraits< K, T, HashFunc, true >Helper structure providing type traits used in the constant hashmap iterator
 Cnctl::HashMapListIterator< K, T, HashFunc, IsConst >A hashmap iterator
 Cnctl::HashSet< K, HashFunc >A template based hashset implementation with open addressing and leapfrog probing
 Cnctl::HashSetHelperTraits< K, HashFunc >Base helper structure for type traits used in the hashset iterator
 Cnctl::HashSetIterator< K, HashFunc >A hashset iterator
 Cnctl::HashSetList< K, HashFunc >A template based hashset implementation with separate chaining and list head cell
 Cnctl::HashSetListHelperTraits< K, HashFunc >Base helper structure for type traits used in the hashset iterator
 Cnctl::HashSetListIterator< K, HashFunc >A hashset iterator
 Cncine::HatStateA structure containing joystick hat values
 Cnctl::IAllocatorThe allocator interface
 Cncine::IAppEventHandlerThe interface class for handling nCine application events
 Cncine::IAudioDeviceAudio device interface class
 Cncine::IDebugOverlayInterface for debug overlays
 Cnctl::IdentityHashFunc< K >Hash function returning the key unchanged
 Cncine::IFileThe interface class dealing with file operations
 Cncine::IFrameTimerFrame interval and average FPS calculator interface class
 Cncine::IGfxCapabilitiesThe interface class to query runtime OpenGL device capabilities
 Cncine::IGfxDeviceIt represents the interface to the graphics device where everything is rendered
 Cncine::IIndexerThe Interface for every Object indexer
 Cncine::IInputEventHandlerThe interface class for handling input events from keyboard, screen touches, mouse, accelerometer and joystick
 Cncine::IInputManagerThe interface class for parsing and dispatching input events
 Cncine::ILoggerThe interface class for loggers
 Cnctl::MakeUniqueReturn< T[size], Deleter >::invalid
 Cnctl::isClass< T, typename >
 Cnctl::isClass< T, typename detail::voidType< int T::* >::type >
 Cnctl::isDestructible< T, typename >
 Cnctl::isDestructible< T, decltype(declVal< T & >().~T())>
 Cnctl::isEmpty< T >
 Cnctl::IsEqualTo< T >A function object returning true if its argument is equal to a reference value sets upon object construction
 Cnctl::IsGreaterThan< T >A function object returning true if its argument is greater than a reference value sets upon object construction
 Cnctl::isIntegral< T >
 Cnctl::isIntegral< bool >
 Cnctl::isIntegral< char >
 Cnctl::isIntegral< int >
 Cnctl::isIntegral< long >
 Cnctl::isIntegral< long long >
 Cnctl::isIntegral< short int >
 Cnctl::isIntegral< unsigned char >
 Cnctl::isIntegral< unsigned int >
 Cnctl::isIntegral< unsigned long >
 Cnctl::isIntegral< unsigned long long >
 Cnctl::isIntegral< unsigned short int >
 Cnctl::IsLessThan< T >A function object returning true if its argument is less than a reference value sets upon object construction
 Cnctl::isLValueReference< T >
 Cnctl::isLValueReference< T & >
 Cnctl::IsNotEqualTo< T >A function object returning true if its argument is not equal to a reference value sets upon object construction
 Cnctl::IsNotGreaterThan< T >A function object returning true if its argument is not greater than a reference value sets upon object construction
 Cnctl::IsNotLessThan< T >A function object returning true if its argument is not less than a reference value sets upon object construction
 Cnctl::isTriviallyConstructible< T >
 Cnctl::isTriviallyCopyable< T >
 Cnctl::isTriviallyDestructible< T >
 Cnctl::IteratorTraits< Iterator >Base iterator traits structure
 Cnctl::IteratorTraits< ArrayIterator >
 Cnctl::IteratorTraits< ArrayIterator< T, false > >Iterator traits structure specialization for ArrayIterator class
 Cnctl::IteratorTraits< ArrayIterator< T, true > >Iterator traits structure specialization for constant ArrayIterator class
 Cnctl::IteratorTraits< HashMapIterator< K, T, HashFunc, false > >Iterator traits structure specialization for HashMapIterator class
 Cnctl::IteratorTraits< HashMapIterator< K, T, HashFunc, true > >Iterator traits structure specialization for constant HashMapIterator class
 Cnctl::IteratorTraits< HashMapListIterator< K, T, HashFunc, false > >Iterator traits structure specialization for HashMapListIterator class
 Cnctl::IteratorTraits< HashMapListIterator< K, T, HashFunc, true > >Iterator traits structure specialization for constant HashMapListIterator class
 Cnctl::IteratorTraits< HashSetIterator< K, HashFunc > >Iterator traits structure specialization for HashSetIterator class
 Cnctl::IteratorTraits< HashSetListIterator< K, HashFunc > >Iterator traits structure specialization for HashSetListIterator class
 Cnctl::IteratorTraits< ListIterator< T, false > >Iterator traits structure specialization for ListIterator class
 Cnctl::IteratorTraits< ListIterator< T, true > >Iterator traits structure specialization for constant ListIterator class
 Cnctl::IteratorTraits< ReverseIterator< Iterator > >Iterator traits structure specialization for ReverseIterator class
 Cnctl::IteratorTraits< SparseSetIterator< T > >Iterator traits structure specialization for SparseSetIterator class
 Cnctl::IteratorTraits< StaticHashMapIterator< K, T, HashFunc, Capacity, false > >Iterator traits structure specialization for HashMapIterator class
 Cnctl::IteratorTraits< StaticHashMapIterator< K, T, HashFunc, Capacity, true > >Iterator traits structure specialization for constant HashMapIterator class
 Cnctl::IteratorTraits< StaticHashSetIterator< K, HashFunc, Capacity > >Iterator traits structure specialization for HashSetIterator class
 Cnctl::IteratorTraits< StringIterator >
 Cnctl::IteratorTraits< StringIterator< false > >Iterator traits structure specialization for StringIterator class
 Cnctl::IteratorTraits< StringIterator< true > >Iterator traits structure specialization for constant StringIterator class
 Cncine::ITextureSaverTexture saver interface class
 Cncine::IThreadCommandThread pool command interface
 Cncine::IThreadPoolThread pool interface class
 Cnctl::JenkinsHashFunc< K >Jenkins hash function
 Cnctl::JenkinsHashFunc< const char * >Jenkins hash function
 Cnctl::JenkinsHashFunc< String >Jenkins hash function
 Cncine::JoyAxisEventInformation about a joystick axis event
 Cncine::JoyButtonEventInformation about a joystick button event
 Cncine::JoyConnectionEventInformation about a joystick connection event
 Cncine::JoyHatEventInformation about a joystick hat event
 Cncine::JoyMappedAxisEventInformation about a joystick mapped axis event
 Cncine::JoyMappedButtonEventInformation about a joystick mapped button event
 Cncine::JoyMappedStateInformation about the mapped joystick state
 Cncine::JoystickStateInformation about the joystick state
 Cncine::KeyboardEventInformation about a keyboard event
 Cncine::KeyboardStateInformation about the keyboard state
 Cnctl::List< T >A double linked list based on templates
 Cnctl::List< Node >
 Cnctl::ListIterator< T, IsConst >A List iterator
 Cncine::LuaColorUtilsLua utilities for the Color class
 Cncine::LuaIAppEventHandlerWrapper around the IAppEventHandler class
 Cncine::LuaIInputEventHandlerWrapper around the IInputEventHandler class
 Cncine::LuaRectUtils< T >Lua utilities for the Rect template class
 Cncine::LuaStateManagerThe Lua scripting state manager
 Cncine::LuaUntrackedUserData< T >Common methods to retrieve an untracked C++ class in Lua
 Cncine::LuaVector2Utils< T >Lua utilities for the Vector2 template class
 Cncine::LuaVector3Utils< T >Lua utilities for the Vector3 template class
 Cncine::LuaVector4Utils< T >Lua utilities for the Vector4 template class
 Cnctl::MakeUniqueReturn< T, Deleter >
 Cnctl::MakeUniqueReturn< T[], Deleter >
 Cnctl::MakeUniqueReturn< T[size], Deleter >
 Cncine::Matrix4x4< T >A four by four matrix based on templates
 Cncine::Matrix4x4< float >
 Cnctl::ModuloHashFunc< K, Value >Hash function returning the modulo of the key, for debug purposes
 Cncine::IGfxDevice::MonitorA structure representing a connected monitor
 Cncine::MouseEventInformation about a mouse event
 Cncine::MouseStateInformation about the mouse state
 Cncine::NuklearContextThe class that stores Nuklear related variables
 Cncine::ObjectStatic RRTI and identification index
 Cncine::IFile::OpenModeOpen mode bitmask
 Cnctl::detail::PairImpl< T1, T2, value >Simple pair implementation for pointer and deleter
 Cnctl::detail::PairImpl< T *, DefaultDelete< T > >
 Cnctl::detail::PairImpl< T *, Deleter >
 Cnctl::detail::PairImpl< T1, T2, true >Specialization for empty second type
 Cncine::ParticleAffectorBase class for particle affectors
 Cncine::ParticleInitializerInitialization parameters for particles
 Cncine::AudioEffectProperties::PitchShifterProperties
 Cncine::TextureSaverPng::PngProperties
 Cncine::TouchEvent::Pointer
 Cncine::PositionAffector::PositionStep
 Cncine::Camera::ProjectionValues
 Cncine::AudioFilter::Properties
 Cncine::ITextureSaver::Properties
 CQOpenGLWidget
 Cncine::Quaternion< T >A quaternion class based on templates
 Cncine::RandomPCG32 random number generator
 Cncine::Rect< T >A template based rectangle in a two dimensional space
 Cncine::Rect< float >
 Cncine::Rect< int >
 Cncine::RectAnimationThe class containing data for a rectangles based animation
 Cnctl::removeExtent< T >
 Cnctl::removeExtent< T[]>
 Cnctl::removeExtent< T[N]>
 Cnctl::removeReference< T >
 Cnctl::removeReference< T & >
 Cnctl::removeReference< T && >
 Cncine::RenderDocCaptureA class for in-application integration of RenderDoc
 Cncine::Application::RenderingSettingsRendering settings that can be changed at run-time
 Cncine::AudioEffectProperties::ReverbProperties
 Cnctl::ReverseIterator< Iterator >A generic reverse iterator
 Cnctl::ReversionWrapper< T >
 Cncine::AudioEffectProperties::RingModulatorProperties
 Cncine::RotationAffector::RotationStep
 Cncine::LuaUtils::RunInfoA class that collects additional status information when running Lua scripts
 Cnctl::SaxHashFunc< K >Shift-Add-XOR hash function
 Cnctl::SaxHashFunc< const char * >Shift-Add-XOR hash function
 Cnctl::SaxHashFunc< String >Shift-Add-XOR hash function
 Cncine::ScrollEventInformation about a scroll event (mouse wheel, touchpad gesture, etc.)
 Cncine::ServiceLocatorProvides base services to requesting classes
 Cncine::ShaderStateShader state class for the user to use custom shaders
 Cnctl::SharedPtr< T >A shared pointer implementation
 Cncine::SizeAffector::SizeStep
 Cnctl::SparseSet< T >A template based sparse set implementation
 Cnctl::SparseSetIterator< T >A sparseset iterator
 Cncine::LuaStateManager::StateToManager
 Cnctl::StaticArray< T, C >A static array based on templates that stores elements in the stack
 Cnctl::StaticArray< unsigned int, NumBuffers >
 Cnctl::StaticHashMap< K, T, Capacity, HashFunc >A template based hashmap implementation with open addressing and leapfrog probing (version with static allocation)
 Cnctl::StaticHashMapHelperTraits< K, T, HashFunc, Capacity, IsConst >Base helper structure for type traits used in the hashmap iterator
 Cnctl::StaticHashMapHelperTraits< K, T, HashFunc, Capacity, false >Helper structure providing type traits used in the non constant hashmap iterator
 Cnctl::StaticHashMapHelperTraits< K, T, HashFunc, Capacity, true >Helper structure providing type traits used in the constant hashmap iterator
 Cnctl::StaticHashMapIterator< K, T, HashFunc, Capacity, IsConst >A hashmap iterator
 Cnctl::StaticHashSet< K, Capacity, HashFunc >A template based hashset implementation with open addressing and leapfrog probing (version with static allocation)
 Cnctl::StaticHashSetHelperTraits< K, HashFunc, Capacity >Base helper structure for type traits used in the hashset iterator
 Cnctl::StaticHashSetIterator< K, HashFunc, Capacity >A hashset iterator
 Cnctl::StaticString< C >A basic string class made of chars stored on the stack
 Cnctl::StaticString< MaxNameLength >
 Cncine::Hash64::StatisticsThe statistics about hashing requests
 Cnctl::StringA basic string class made of chars
 Cnctl::StringIterator< IsConst >A String iterator
 Cncine::TextInputEventInformation about a text input event
 Cncine::TimerBasic timer and synchronization class
 Cncine::TimeStampA class representing a point in time or a duration
 Cncine::Application::Timings
 Cncine::TouchEventInformation about a screen touch event
 Cdecltypedetail::tryAddLValueReference
 Cdecltypedetail::tryAddRValueReference
 Cnctl::detail::typeIdentity< T >
 Cnctl::UniquePtr< T, Deleter >A unique pointer implementation
 Cnctl::UniquePtr< char[]>
 Cnctl::UniquePtr< FontGlyph[]>
 Cnctl::UniquePtr< FrameTimer >
 Cnctl::UniquePtr< GLFramebufferObject >
 Cnctl::UniquePtr< GLShaderProgram >
 Cnctl::UniquePtr< GLTexture >
 Cnctl::UniquePtr< IAudioReader >
 Cnctl::UniquePtr< ncine::IAppEventHandler >
 Cnctl::UniquePtr< ncine::IAudioDevice >
 Cnctl::UniquePtr< ncine::IDebugOverlay >
 Cnctl::UniquePtr< ncine::IGfxCapabilities >
 Cnctl::UniquePtr< ncine::IGfxDevice >
 Cnctl::UniquePtr< ncine::IIndexer >
 Cnctl::UniquePtr< ncine::IInputManager >
 Cnctl::UniquePtr< ncine::ILogger >
 Cnctl::UniquePtr< ncine::IThreadPool >
 Cnctl::UniquePtr< ncine::SceneNode >
 Cnctl::UniquePtr< ncine::Texture >
 Cnctl::UniquePtr< RenderCommand >
 Cnctl::UniquePtr< RenderQueue >
 Cnctl::UniquePtr< ScreenViewport >
 Cnctl::UniquePtr< T[], Deleter >Array specialization of the unique pointer implementation
 Cncine::Vector2< T >A two component vector based on templates
 Cncine::Vector2< float >
 Cncine::Vector2< int >
 Cncine::Vector3< T >A three component vector based on templates
 Cncine::Vector3< float >
 Cncine::Vector4< T >A four component vector based on templates
 Cncine::VelocityAffector::VelocityStep
 Cncine::MeshSprite::VertexVertex data for the mesh
 Cncine::MeshSprite::VertexNoTextureVertex data for the mesh when no texture is specified
 Cncine::IGfxDevice::VideoModeA structure representing a video mode supported by a monitor
 Cncine::ViewportThe class handling a viewport and its corresponding render target texture
 Cncine::Camera::ViewValues
 Cncine::AudioEffectProperties::VocalMorpherProperties
 Cnctl::detail::voidType< class >
 Cncine::TextureSaverWebP::WebPProperties
 Cncine::IGfxDevice::WindowModeA structure used to initialize window properties
+
+
+ + + + diff --git a/master/icon72.png b/master/icon72.png new file mode 100644 index 0000000000000000000000000000000000000000..694ba3c500e38c5e3a3ab52378ad6ff55f39e262 GIT binary patch literal 3163 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 + + + + + + +nCine: Main Page + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
nCine Documentation
+
+
+

Linux macOS Windows MinGW Emscripten CodeQL

+

nCine

+

nCine is a cross-platform 2D game engine.
+ It is released under the MIT License, Copyright (c) 2011-2024 Angelo Theodorou.
+ For additional information: https://ncine.github.io

+

Information

+

Dependencies

+
    +
  • GLEW
  • +
  • GLFW 3.x
  • +
  • SDL 2
  • +
  • libpng
  • +
  • libwebp
  • +
  • OpenAL-soft
  • +
  • libogg, libvorbis, libvorbisfile
  • +
  • Lua 5.4
  • +
  • Dear ImGui
  • +
  • Nuklear
  • +
+

Supported Platforms and Compilers

+
    +
  • Windows (MSVC, MinGW-w64 on MSYS2)
  • +
  • macOS (Clang)
  • +
  • Linux (GCC, Clang)
  • +
  • Android (GCC, Clang)
  • +
  • Emscripten
  • +
+

Development Tools

+
    +
  • git
  • +
  • CMake
  • +
  • Qt Creator
  • +
  • Doxygen with GraphViz
  • +
  • Valgrind
  • +
  • Cppcheck
  • +
  • clang-format
  • +
  • Google Test and Gcovr
  • +
  • Tracy frame profiler
  • +
  • Google Benchmark
  • +
  • RenderDoc graphics debugger
  • +
+

Development

+

Conventions

+

Coding Conventions

+
    +
  • Indent with tabs (4 spaces) but use spaces for continuation line alignment
  • +
  • Allman brackets
      +
    • No brackets around one line conditional statements
    • +
    +
  • +
  • Padding space after parenthesis headers (if, do, while, for, switch)
  • +
  • Align pointer and reference operator to the variable or function name
  • +
  • inline keyword always before virtual and static
  • +
  • Mark an override method with the override specifier and remove virtual
  • +
  • Access specifiers order: public, protected, private
      +
    • One half indent for access specifiers (2 spaces)
    • +
    +
  • +
  • Declarations order: typedefs and enums, data members, constructors, destructors, methods
      +
    • Friends defined in the private section of a class, after everything else
    • +
    +
  • +
  • One space padding around operators
  • +
  • Use of the explicit keyword all the times it makes sense
  • +
+

Naming Conventions

+
    +
  • Pascal case for classes, enumerations, typedefs and constants
  • +
  • Camel case for variables, functions and parameters
  • +
  • All upper case for enumerators in an enumeration
  • +
+

Documenting Conventions

+
    +
  • Put Doxygen brief descriptions in header files and additional documentation in implementation ones
  • +
  • Use Qt style for Doxygen detailed descriptions (/*! */) and end them with a period
  • +
+
+
+ + + + diff --git a/master/inherit_graph_0.map b/master/inherit_graph_0.map new file mode 100644 index 0000000000..2f5a79560c --- /dev/null +++ b/master/inherit_graph_0.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_0.md5 b/master/inherit_graph_0.md5 new file mode 100644 index 0000000000..bca8e504fe --- /dev/null +++ b/master/inherit_graph_0.md5 @@ -0,0 +1 @@ +77ee67a154bb4cfa6d7fde4f00fd5648 \ No newline at end of file diff --git a/master/inherit_graph_0.png b/master/inherit_graph_0.png new file mode 100644 index 0000000000000000000000000000000000000000..f8b1ca7cfc404ad3c2483683b687fe9bc5b99c6b GIT binary patch literal 1927 zcmV;22YC32P)Lz^U%NmO%7SrEE6 zAsI%<3=Fbm^rk@?nbezFDu!t_^_{H@i4rO;EkavC=A8SZq^r5KEo0k#UR=2Baep4K z&VLW*^Xi=6{hf2Z=j`jb=iUtw48s5fLWZcd7693JK+`}-15E=V4KxjeG%@~_zP`R2 zH*Tzz6v(=zva&KeJDaHfYp1bTES;U5t1bz$uIcRTv{)?uk(j`wj*gDi(gWE5APBM` z0?#xM(m>NdNCQm+Aq_N5#PE8(rKP1b8g0*>J!`FHWm$34h(w~s#>SN%Wj&zR>-+lp zY&P4cPoD+{2RCinw3?%@<~pyqY5M#7Pn|lo5?0|1bfmG$S(pJfUQPgYjey?ghF>dLKiARG1ei>grlTR}P0GHa2!SVm1tzA3B|G zK_n0!7g+Teg&ymCen~VHhS93L6?4!Z)0q zovo;-;BvVP216#3nM@`;e)a0rl$4afGKOJKo;=CO$e5p>XS3PE!^8gC)M|B3P7a+; zPft&O_3BlaxX=77L$A zK|w)IPL9D~a5x-Vt+uPH3kxt!(1r?yLMoLSjYg-_dG6e~^z?ME*NcTUO<`f-{rmSZ z4AW>dDwWD#TYP-{ix)4PPG?O`OA+006Vu95}@2=qLbSY-|j#4i66l0463TLd^mTVVaSV5yB-HhCP4&d@-icXf#15 ze)HzdqM{3jA@hYFs$Ah6}5lX7fW~0$)OeQl>Lm0SRE>Z62=*Y;(pwVauf}A~jmY7Z` zBBeYG5jzN@DC+fkahsDOIXO8hD#~uR`+NE5(W9aAeLi1fW23=fAd-7}dhXu6OC;bf z#4#F;+qZ8I6&DBuD2leWwg!%pl$7N0c+6%qUj6p%8y+M(I}V34H#cXu+lg_BOH?YA z_{^rJrugwvm#Kg9?Hoabt--ANMj~qGD+uQs3^JkGr#AGs+N+pBA!1p2$i8nVFQ76q!tR{P=NPFaV&ow$^U9b2uEiTz>4>v7l{H6uoxsno_BZ zi;JtQtn^PifByW_r%$O=sz@XX95EuwL*jo^SmZ%?J(HG}hCfv;GQP^__4@eu__bC+ z4iIn<4)S{%NMzCJbTKh8hYlSw8jV#|RmH`{YprOxY}7Zx8;FAk4|a5PBqt}!kfG!29_&@>Rz`~#Oes57{rjA8%) N002ovPDHLkV1h%Yrsn_v literal 0 HcmV?d00001 diff --git a/master/inherit_graph_1.map b/master/inherit_graph_1.map new file mode 100644 index 0000000000..3ef5a1df50 --- /dev/null +++ b/master/inherit_graph_1.map @@ -0,0 +1,5 @@ + + + + + diff --git a/master/inherit_graph_1.md5 b/master/inherit_graph_1.md5 new file mode 100644 index 0000000000..6b279794cd --- /dev/null +++ b/master/inherit_graph_1.md5 @@ -0,0 +1 @@ +dd9942796253bf469dee8f2f67593ac0 \ No newline at end of file diff --git a/master/inherit_graph_1.png b/master/inherit_graph_1.png new file mode 100644 index 0000000000000000000000000000000000000000..dc8c9cfc39fc9efb94c50ecd5a87c79e8c416e4b GIT binary patch literal 3939 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 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_10.map b/master/inherit_graph_10.map new file mode 100644 index 0000000000..0cfb414d1f --- /dev/null +++ b/master/inherit_graph_10.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_10.md5 b/master/inherit_graph_10.md5 new file mode 100644 index 0000000000..03299e9286 --- /dev/null +++ b/master/inherit_graph_10.md5 @@ -0,0 +1 @@ +d47a5b4d04b033f0fa9db1c55bff608d \ No newline at end of file diff --git a/master/inherit_graph_10.png b/master/inherit_graph_10.png new file mode 100644 index 0000000000000000000000000000000000000000..2aa9f88da0d50f692aee2e5ae9a7a323d11fb726 GIT binary patch literal 2444 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 xX)HSj1(mgXE$d{idtk0_{@)ST literal 0 HcmV?d00001 diff --git a/master/inherit_graph_100.map b/master/inherit_graph_100.map new file mode 100644 index 0000000000..f9ce369c69 --- /dev/null +++ b/master/inherit_graph_100.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/inherit_graph_100.md5 b/master/inherit_graph_100.md5 new file mode 100644 index 0000000000..056bc57c3f --- /dev/null +++ b/master/inherit_graph_100.md5 @@ -0,0 +1 @@ +20e3a1fc5a61be3a71b36e2730b8c7db \ No newline at end of file diff --git a/master/inherit_graph_100.png b/master/inherit_graph_100.png new file mode 100644 index 0000000000000000000000000000000000000000..60368bd527a4eb3ea81b0512ff5cae01ff173917 GIT binary patch literal 2746 zcmZWrc{r4N8-CG=*P~kkN|+2ps%fI>6^Wp<8NfqEAsb?SI$rbSIm1X z9TpC81mLfO-?HEocMwYBcP zzD;#?=Hd{s%S7!OqLq~u9>1{sp~kGXx_YR;zoMZ*PylT6y|b68>BtIJb@_mWUzcq^ zc-OOFYBQxCv~OH!X_7U0*094@V<{yoi(5TxjrlbZQmPpo92^*UT`3M*#UM6k*@Zyj zx*QRy^yz8W(lp&7=8qp5Tp(C{VyZ8_SFy*#KQAxuf9l|Pu82aVrKK^JmYnhU^DypY zg;90i@3@B#<-$82`uMc_?;stt3=HDn=V&w<*qXAWk<`{`u_2`M+qe7v{`+-x3SeQ& zR1)bV3>Klb#X9&y2$??|7#N5yNb11(`uXKv_Bam6$;komr@eQRlauv=_I}()SNm{n zY-~hSumalLXP21mmV0XhnIfU$PkIM%_4OG8C!`d^X}yQc4_D@H?|T~<7`!^GE$g?y zg;rHiNJ&fUo+qxZuKKJ@$g8RGs_(okh>8mPy!f`r&CLy)m%#bF`p9Q(s;oF(Tqi<< z>&`!+ENM^WZ4Y48y?Ak6T3X+t$!i&dNX1%M+$kOJ>x-Mn%)aiAl9jzFMe6G5Axt$v zshLl+v!`ZeW=2NDQw^?PyM`jnRAMTUgWTQSH8n$RkT*?CObiUdAcb}*B$BbpRSAh> z)0n(#kG_2QQg{Dd$?Y0D9zH$}z}dw`OH0e^+3TL3ci(;_CMIrf5(leH0s>lda%}N< zypB#6+2sRQ^9+2d$(=SlyuLZ#4?)L%z3AOeWWDKnoRFM+e)pjDPR}88j|l;AepuH% z0S5o{Wp+S9Qj+}Yl_dt_?c=l0VvT+H@N8m4Pj1oinmBW>y{Rd~SM@)o1lqlh57w)Z>+rQT3n$)f7G+9yZ{v!l@-4MC#dQ#uh4Nv6_}HYwzvu9tvSBEUeE^MbW}g zsQdD`OtHCsv3cw&;GVAYWc=sPpL%u{794=EurMezoM#9X5VX=V$Q#`#je!xNZ|mzd zrA>cg_rCX>8LqR+e6X!1c=4o6D>gW-fp>WbN>6WSY;=)!siIMM5`4{NyE*tpz8^*N zojI)@v@$n$jz2aj0tRJgR?+-s$Vx*gl7>mr{pqsjBM_+u$aKX_qjO|X8cN^HZNwl> zKRHk8rL?rL0ha^~>x*)8b8l5(*npU*@$qpWq_i;J!8bhT{@0CaS8kjZ3A#2B4^MO<9N&|Zr4abf~u+tS=zz(<&AttFGah{REm z#~bhrw0$1&=x|n4gnkR59LX+z%$eL5a~ON_XsEyC&X+Fyi3A2NE^AGU$z+<9S#}ai zR08(5Wp+hwity=a{Ty{tQde&$oxgdUlk-VJg1qpF{wI*|J1qKf@a;Cp+m{5lSOI9? zpL<@Ovsj9!bTsX4)vYp1?XZFlaSDZ^eHI!`s|7{p0t_6!lF5gwbmdSDT;azDsLAPR zYF%Ajb2F_5WL7s*^nXE4_M_kFt&B>V_A4e%GOQ!epoxa9(VjV0iEiH{iBEi;5 zOU=txR#$CpY~teLxc)VmGn1w40`eKgtpmyY$Atu4zxkU&_^&dyeL8K0oj_jY%cP^hyk@UM7#qn`BC*VcaCVl@(GrG79? z6eA#yI(mEWA0Du-ohJ0B$?(S>yA>H7?J`}Ss~#K#@)gj)U<4iF^(5E$=bcy++6eZKjWyNsG1#k z2~#rv^`*`RnT_S6*aBt8&l?#&mNZPWp?K;`@VidDgsZCViq`0IgUiE7i5|rx3UXn4 zeKs#CNscqe?@?`QtCjkZ7<18VXLV90_~5MqXHE*#kn7Fm#3aI?0}x_*!LlqqCqD=u z5gA!rQsOq-Hr?F~!c>x + + diff --git a/master/inherit_graph_101.md5 b/master/inherit_graph_101.md5 new file mode 100644 index 0000000000..80228a61b6 --- /dev/null +++ b/master/inherit_graph_101.md5 @@ -0,0 +1 @@ +b798d43ea2b097aff147cee0e0d635dd \ No newline at end of file diff --git a/master/inherit_graph_101.png b/master/inherit_graph_101.png new file mode 100644 index 0000000000000000000000000000000000000000..74ed3610bbda00d1366d02b3d5fc56702909e7d0 GIT binary patch literal 1830 zcmV+>2if?EP)=?&NQ>xvRc9J?(^dE?77c$ z_qmSwr=Ih9bqStgSy)cx1Kf}-e+8#kt15@a^wa5&oA+sTo*@q=1gTBb`6WcIRo z^X9M!Jg-3L0=)vE3-k(vF3>9wx=guOGBYzTU%oumSD8Kh!SznLR~!z<&Ye4BKCRtu z&&|!{a=C0aTP~M3G&Dp#)v8siu3WhiD`8VqFPWb|e=;T_E^dOi+8FX%{tdcw=g!)- zYqPSloKC05<1reIMx(K!qGG0X#h73)`0(LFola*qo5}IHbLZlJvuV?&9Xoaq?LZ(9 zHbY5C$(}uX!oDVn9-KsTb8}c^LS!;od3m`)p-4zbSh#TE{rmTcxXFf+vm@psn;Qd)9EZNEftAG z2!fQAmG$=aM!FYduZ+j(bnf53Umy@jrP328PW1HjL>f6BjYgxetvd#c2`%|=;&x|ZSAdFxA1XZnJ}@Spg^fq_V)Jre7=&BlJxX+ z48!mUUg_%U0suH14zi>`AP^rPPh2RHS3)CSzI-W_O0QkJMnvRtd3}9-Xh0+}GMP*u z5ZLYZKp;R-3%TB$oSeM8yn%rMx7)2yDDv|1sMld=Xvku*q^GCPn>VkxxcKSQr$n3r zYOjP!zIX55)~#C;5)!hrvukT>$qN#Rn0ckTx|(QvygU5R%%JT}J&nFseHX8uo_xoKg7mLM8OG}$ z7cU+>crc22Vs^Gg5Cp?8;$fN;si~<j404Ham3NhKGlV261#acI?>T;9xKqv{)>mlOU7%&mvHZVK5l<>sqj2K_C!tyWK?h z{rmSskRl~HIr+eW1Fv4adh+B6m&@IzJ2TS`K(s!?c29$Cg$ho>vXzz@813R@#FdP z=LH1?zkdA!0GvI0mUtY=Z3csJ{``5X)q4E+aTG~_1YRx664#MvMU>gwwJe*evzH@myLD=I1^5=nIP z5XADG`RdiH%a$$6&CQiaBrjgPP$(2M6B`>F7cE+(R4Vy={=R+tbUNLfIddq+tJUh( z)>gaSzGTUg`Sa&%wc1OUE*&~_i1^fOHjj*q2!%qmTD@`OMk0tHNL5u;QBe_>%Qcxy zp*R5G@ZrOE@7`sz*_oM{QHY_Sxw)Cc;VfUiTrQUjg~Goo#0iJRYyEuCA)8>d~V| zGp*$hXKKF{o*q;x6^3Cmt>Vw;x8GMF(+2bkgf7r45V}CGK + + diff --git a/master/inherit_graph_102.md5 b/master/inherit_graph_102.md5 new file mode 100644 index 0000000000..68a1696b4e --- /dev/null +++ b/master/inherit_graph_102.md5 @@ -0,0 +1 @@ +313bcb0f4a8a7cdee592cbed7861e1da \ No newline at end of file diff --git a/master/inherit_graph_102.png b/master/inherit_graph_102.png new file mode 100644 index 0000000000000000000000000000000000000000..1c1be6c21797d10e17ea50da9c4614c24521b32c GIT binary patch literal 1371 zcmV-h1*H0kP)Q5d200006VoOIv0RI60 z0RN!9r;`8x1rSL@K~!jg?V4XGdv6@apJ(LDtl`2W!f6Dce#e4$YL0r^lKkPqbn`A{DGi$}&`jgpf|BM@L7Gjg5Wm_+QL- zy%&kaVuB#_dVN(@l~5?$-`^*@qWAM24`O3uo12?6GBTJwp?O-;@H{XO{oUi7CxgTWvci-UuMy}i9L3_CwRM|wv`M_5?c>$Vj-onBj83nARw z+d~S5VGu$ZjTRCT($>~yeKY^3)M~XF!!Rb385tQlGc#iyS*z8Sl$5YoEI&WLva+(9 zn;Yvm5{V==HI>0&L`FugudjD?b+OrOFE6j^>S~L{@{a5I&UGM@$vQeZG#ZUiC=>_; z=u`y)!S?p{;^LxGsf>@0Us+jkFigCuC88OTtq}fdC)r{?qd?(Xg^8ckACQf6l6;o;%#?(XL1=KTD;t&2`T*f23M@j`i%n3$NZt}fI@ z6GWv_p~-uEeEj0z#Kgq@{(d`wIF17VE-x>UZZ?~lOy=(HuAKt1va+o8yScfc>;9VF z-d;YRZzuK1$q4}9`uZB_%gf6E0G&>!P$&QZN~IF%XpvoAU7>NLQYq3`R#qT{27>{0 zOG`@|8yo*}?FfR$SzxVUh+TxSE7N+kdwARqv3 zvo0i(@bt5JIt7tWv4$q*kd^o}Qjo z-C8`3+9<~FfgD{Cm zzrTNBVZp(`yu7^f^75mjBcsu{v9Xb#pa1ai036tp0RZ0K-VF^6?d|Q4kB=sk$zrj1 zd3m|Hxyj}7?(S~;skvNkN=iyyU7b#+J3T#ZYHC7yXlQ6!T3T&wty-Fn$*E-q#=nG%VlprGKdu@e&$27`gi9O56Fk|fP5$q$cOTP zd?*jd=Z*iiOioUIeH}jsl}g2Cvu%|(JmB;BUscZ!g~#LBb|LjtOghwlKt7ZQ1nIZrH literal 0 HcmV?d00001 diff --git a/master/inherit_graph_103.map b/master/inherit_graph_103.map new file mode 100644 index 0000000000..a40f65ebb6 --- /dev/null +++ b/master/inherit_graph_103.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_103.md5 b/master/inherit_graph_103.md5 new file mode 100644 index 0000000000..f29c0243d7 --- /dev/null +++ b/master/inherit_graph_103.md5 @@ -0,0 +1 @@ +fb9c71a7891733e4c3a2e8bda2fdf0fc \ No newline at end of file diff --git a/master/inherit_graph_103.png b/master/inherit_graph_103.png new file mode 100644 index 0000000000000000000000000000000000000000..a65151dd333ca3ed6a4303b306fb67c0366de4ab GIT binary patch literal 1632 zcmV-m2A}zfP)HpWB9JxE}N1Qp4VT`^SS$c?tRbuo_p^017jElAozh`s|6r74`eovKxXp@WHyfwu{*=V!)Ft_L2EXT zKxXp@WHygLX0H>9qH1ev#bPmrVHk#O+qP}16|K&On_W;)(B0j=(MQ>Q>~_1u;qZFB z48u5`&aIZii48Z~;c%QfbtQ!dv0!Se}Dh_>Kr_H@b2Ba>&qP-9aX7R zQmJ%(=?T%WR{qu7czu06!!Yyn^QTXruCA`0n3zcTA%el+ix)3+I-S{Uj@;_=`I3{9 z6Mj%O4Gj(F&Yc?`9!^+AhK0>$3yVZ$|Ni~W&CP1HS}Ydt*|X=_vu7~w_xp`TBaY)T zne5D&GrxZQVi-oHQdzCm_=$^)i$2M->^FBPe+va&KX2r89|eS#Ac6HQG`nVFe5j$gWTX?l7(Yy?V6OGCMrFJE># zoyp0`aMRbXU#qIB($do8a(Q)i^^YGv*eMu>;W&Qn+O=RX$S_PC4N%7U^XGT%+ND$~ zTUuINF4wBoumJ$rY_`85><)Lc6$-`3$jH*t()H`t<#IWcUS3{aR8;it-8-Mp*VWba z`0-;V!tAJt6%`d)t#*2P+VA%_G&JPp<smX{n>5LnIPSPENv2u}VeNmY<*B z+uIvDuP*5mQ0)#{Rx z5_T3vQKO@yN~N;DzaK`zG(>uPH5ImVnAwqu@FTt1*;yE;X<8zYjE|4U5unj%LK7k>DamfP!+5Mx zv9yH^bWKeS06?eHEiNvuItWqCcDY;tfSH*Y7=QcrEdb#2=g(oe?d|QAm6cI7#Nqq* z?`36W@Ls}Y|46gfxn|4da@a^oNdW)^0s*(%Effl~v$NNlI5RT?0LaM5fX`e)q44L= zpKiB1ejPZozkT~wR#w*1(n8ZT9ObB`IBGMS&24RMV`F1kSy^Y#o*fz*V%GRG9+D(Q zA`y<`u&Y!mVGsZ?Ffef7z=71%R1CxF>+8K7mGc(g*Fc1VWHa0diG^E$-WilB@Jz*rwY=uH`?AWo|+S(5v zKKT89tJP|^+c_qdmzV2wy2;7O<>h6k(^*kb@%#600KlzVx8URmYqOEbWQ~oDH*VZm zSy_oyDwekN^z`xZ@zA)3*t>VH*=+WBJXWifBuTisae*L+!-o$W42HS6Ig%ueMx$1% zO;1k`1OmZeP%4!sB_%l=4vWPSN{OWb0MOIZ69@zzJ$f`XHFfpsRe~Tm%7{fGU%l?% zzrSzaK8;305X9@(uhnWb$HczAzMPyKtyU|S%j@dubUNLd-fHUV>Xw(6dwYB1l!~hD z;>C+ko;*oONhv5Oh%74*2#y{-dhg!7rluzDVr({BYHDh3Zf<^lenv({Utb>p0LSs$ zw{KTfRY@cglgV`a`0>#GaWu5Hwsv-Q9y)Z0`_Wf{eaGYYfQI-d0Ev1)L;Q;%vv~wE zn@1qCc?2?>M + + diff --git a/master/inherit_graph_104.md5 b/master/inherit_graph_104.md5 new file mode 100644 index 0000000000..4c39c783a6 --- /dev/null +++ b/master/inherit_graph_104.md5 @@ -0,0 +1 @@ +35f59eea1b3cd5bba0f8d61ce852e774 \ No newline at end of file diff --git a/master/inherit_graph_104.png b/master/inherit_graph_104.png new file mode 100644 index 0000000000000000000000000000000000000000..a6eb7f67066be4d6aa346fbdc14a61775524cbbe GIT binary patch literal 1312 zcmV+*1>gFKP)NOScLMYC{jzI<^nfnM2oeS z5ekV?+l4uYOk*Vos5 zCFo6%iHV7AZEZO@ITQ*dCMITaaS^NE-`|TwA|{g=6cohg^Pirc!22o4UBk!6N0CUx zU@)juYJPtH+1VLZmq;X0QBkhjZv+Mg3IqZKL3Vd{JxjTID=jTmsZjZWo1A>Kv7XqbaZrQXQx)H{YnBK;N=}D zm&+v*$>rrGm&+|HE5mN~va+(Rt*!a_d7Vy|oSeM8yo|FUm&?^?G%G7Bdc8h2HkQNT z*ladDHq2)8z`y{4ASo#+SjC-`tGCI?$+xL*V`BpVaCLRn*VmVnl$4c~Wipv2CML96 zZC6(plgaergt+QE5*HWO+uM77e%{~Te|&tLn3$NEnK?W>Y%-bf4EzHe=UJRv8HEU~YcHEy&xQ+`?E34JIxVTteUXG%u(P$hR z8fs{0z}ce{K6}`Sh={OSttTfZUv0=>Fi0fQ?d`4O^@UxYpAsA#JTfwJa&j^{I_g2n zoi`Hc-S9&~Lh9=3wzs!eS63+%N@-~+ilVKpt)E_1?r_p~ZBPTA1{?k^?JQbCNmfe z*oxx??(_iwqobo1i)D6pR-@6hx3{Ax>RlIa`10q6LZM)>SZp>MMNySXm7Sf9v!Prr zkByDZ%gdwDXhNZo$KwSA1mN#iC={B_=CQFc4^kg`Yiw*>SXdyF$*xb8000t+l$)D7 zK0e;m)P&!RBOdg-ySoPm2QxA + + diff --git a/master/inherit_graph_105.md5 b/master/inherit_graph_105.md5 new file mode 100644 index 0000000000..20a2fdfdce --- /dev/null +++ b/master/inherit_graph_105.md5 @@ -0,0 +1 @@ +5d0d97057d010d08f8dd30bb63f19b34 \ No newline at end of file diff --git a/master/inherit_graph_105.png b/master/inherit_graph_105.png new file mode 100644 index 0000000000000000000000000000000000000000..b597e73e1d2fd794be1d4d4bf067843e9e36b893 GIT binary patch literal 1473 zcmV;y1wQ(TP)BU$VDPgoc6$w2_6Oy2y2rO`c3FVD* zsUamYDyg6%3Iundbx{;eSxH6Cx-$YHDi9Px6MGO^K5jt|B4#x!n!o>*qul1U({#oE z_kshSbJ+Ly{T)7>hk2$5Aq0{XyB1xdJCOceGCY!IGCY!IGCY!I3ubQU=;)xnzCIDX zNPn@GmX@GxL1!M1$HU#bcju)c>F?+Ddc)=+=*%-MRMMpXAD7F;{{8zy?vwXCl4deI zl4deIl4deIl4c1HPi}554Gj&6ZbQ-_;o<4*?4-QBeBQ>}wQCoOqM#@Wsi~=K*sy_H zw{FF)eojsf*RNmy<2v8IeGBv%YFV%#?1S>WNqBe?!Dh1|gkW@Zl!FHkVzF3w@#4k2 z_AoUy#lwdWv0AOz?e?Jkixw?H2oYEc3kxYLD+{du{P{Cv-DAg&arp3IIyyS$dJ6Fg zPj+@TXU?2q$BrH7^?KHGu&YwTe zz`#J<>i;TkXP%~}CTeSIdH3!e7K?@A;$o&>6)G++rn|eF`}glNI5>#OWa81IN1AF` zEEe2uH;*4bW@Kc9tgI{w3JRE-nu@t+pU=nT%a>6Ug`Aw6!1hREgqzQuJ9jXdOgNoR zgb;Lgb^`GJ{d+E6yvU|ao7lE(8{^~S+`fIAfq?;PYHG;L%#6ABaMrF}%Y_RU@Or&m zx^#&*Z{Codoz2#*Te)`a8sp>RaT^OULvwSp2(fuq8#itgb#--t^|7%r0SK?xD~5-M z1t8pRcgW9f-n>~j9FC}Jc|0Bgh_`Rw2KM{?excXvMQ?9!RK4cqeQ*2 zK08YuTyZ<|q@|?={!U3r0bp`+lA)m?l9G~GxpL(n*BTrg1Rx_LBXHxGl$6B8!~{b_ zLs8eCzUTSy;R9x~nRDmP;rIIiB95VDK6bmE`uci$dU`M#jT}03i1zmOz}a*z`2Bv` z+S({7DM3|L#>U3Ddi5&R)zxtuW6p1wSFBip-|wftzyFVG8I4ACIvt~7xjE)z5l&-cBa@Sp+`D%Vx7*Fx zvu9CNHE#8PH7}3qH*el#{rdIf<>jHODqUS&Y~Q|JQ>~_^CbF`!*u8r>EWcmuo)zkp5D$y%!WVJmG$;BT3VOzG0T6D9LY_CGBK*B+X=aB+X=a bB+dQU-N00000NkvXXu0mjfCNteC literal 0 HcmV?d00001 diff --git a/master/inherit_graph_106.map b/master/inherit_graph_106.map new file mode 100644 index 0000000000..f055f9680f --- /dev/null +++ b/master/inherit_graph_106.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_106.md5 b/master/inherit_graph_106.md5 new file mode 100644 index 0000000000..115e9fbd62 --- /dev/null +++ b/master/inherit_graph_106.md5 @@ -0,0 +1 @@ +1d2640fcd03a9225d95141cc62dce272 \ No newline at end of file diff --git a/master/inherit_graph_106.png b/master/inherit_graph_106.png new file mode 100644 index 0000000000000000000000000000000000000000..5cfeea155b0fc352708a56bdf43983fe696bf1ae GIT binary patch literal 1519 zcmV+AEmdY<2Te!qR6v+sGHv$HXTF$T)vCS|_`Q1%~c0tz(&g_?i@0IA~6+qZ9f zdwcgw3MFZ@wY8O%m4&L1QY0VI-AY*r(b2i_;a&M>UqN=oK9y%UryMc6*4EZ@=gy_4r=L1? z%H?w1xpPOO(I^y(rluyI=gF|Dswx0L2(c{N+1V)w0>(I6jJWdm@89d{>Xb^QN~JQH zOslJ_@m0kKq*@6a4o6p4*YfhR$z(Dbjij{EX#DWu!?S14yk4(XtDT&jOfb=8GR@A; zzIpRzety2Nu&}14Mi7KVWQ0PYyLay*gwCElOCqsKMQeNT;6Zo=cDY<6-D~_1Srly`gefsFpBQj=UVgh6Q`}gn1 zj~|bWjNHF}9{{!$6Xx>e%fVo9dU|?lYKr4HqtUo4RXZbgMB*z!PfrhN|M>9(0Q`Rc zw{PD7V0LykVsON@5}imMVJ<8zkT}ot3WdV$cE=GAz9#?xhGEEQ#Tdsb6-!&hHoUN~ zkei#kxw(lk4g>-@IXR(FD30>z+4c7JlJ?}}BtnR+g&5;2SFT*Yem#030|NuKwYA%d z30Iz*n*#u^*Gu9aj|Tu27Z>BGiVsM&5~x%v(vZvL0I zG#Z2uLP#c)t*x#3e7^W~$ab)@vQk}Lee>o`p6AJ#+O|}J+U#~a$8ik9AcV5BvlkZ^ z$yE_cd2|J(Qb`(VX=z7~9!*bA4|l`k$HvA=N=h;^G7v%*i^cEv$5+L1Txx16%d(_< z;=~COOkCBDNOoh$vMkT@#J0QQ`0?W@DJg+KKgq&tl}e?}W}BOvv)k=)O2yKa zlJfWT1wpXcY#%><3@5&R{W@Yt*gIr*zj5Qn($bP32z`BhTU%SvV#MU;=5B3m&Ck!1 z?$@thNl-#nl9?bcFYm&I3k?kopFVvG27^OGLlYAd2_{~=c(J~|{>zsyp-|}EyLUA; zH5(fn0MOOdMT{TO7L%2gb?w@IL>S~8w>`uS}ma} zDL*2Pj*b=;73uZ*{QUg)@84HcR3w<_a5xGJ3k?Q?N~LOPX{oQTKXT+q;;-A%(h>@V zhKGmal-gEXdwctf7cb;;xlX6ETCE0yL0pz$nDgh)OZ!=oW!diT?z*}r?N81hK75#b9h7}!8xx4X+ol`_5T^f6aOk1;1Qcol3N--*s0k + + diff --git a/master/inherit_graph_107.md5 b/master/inherit_graph_107.md5 new file mode 100644 index 0000000000..221195599e --- /dev/null +++ b/master/inherit_graph_107.md5 @@ -0,0 +1 @@ +71ea5418185e1f9935d4b35b19c74dcc \ No newline at end of file diff --git a/master/inherit_graph_107.png b/master/inherit_graph_107.png new file mode 100644 index 0000000000000000000000000000000000000000..30a7f9bad74a37f4ea414a522ef179914bdf6ebc GIT binary patch literal 1955 zcmV;U2VD4xP))B_cZf)u2UvJm?t{@vUk|812^+bG@6@4@-~_Pfos z-&(i)`s2JF-TOH^@AE$A^SS39bx1%60R}@8LCb9b^M3`dCk&n7dcx2Nt|ttggivoZ z8qL+KSC`8QW+jr6l2Tk;?7sbBe=-`44<0=D>y|Jp6|GjQ(P*fVkfk4LZEgKqelRPW zy?gh1MDY0uLnpYNFm!_J2}38ip8m_!)D%GwR;zWnjjUk)cs(U2C)d^0{pnFK{}BFo zJ!!StLx&F0tC^9JK@bE%5Np<~iHnO_VVS+-Me?Q z*=#hg%F0TI!x4Z^Vq)T*J9h%M@jI;4_gzs@5roicwH`ivSfNn7d-ra6o!D%)&d$!L zsHl{blt+&q1)%fz@#ECg)QuZAzIgG%YPB{tHri~qwzf9f4gXmnh34jFkBC>|-6+=ltl=k)9DNj4sL90^ey$Xp(iFLva+&RES5+lx_eP-MJD5ynQ&SVw2_i2qkIUt{TrLRV^z^h`F6VGKk&%%Kh2rDKk3U-| zm&-+x4qrM}2=-j@2`@)3_v$M1N_wQe7>A-;lX0v&4a1a2n zZ{I$f&DPh~*W24`G#Ybqa?od%F4VxlfL^axC=_0&+1}m`AzWBkc=+()-Me?2nws2A zH8nNm<>e-mNhXu++_}?YvE09ZKOrGOsZ>G;wOXz31*Fa;;4J(AwYdD>pRQcFg04S( z`UC(lnM~v3;{br+;bD&td+bk3JEAAXY&N5~)9DNg3+wOi_hBGCJ>Bg;G&B?~H~i1T z=T*w<&?6%w0D$S~X%v6<>=^*SVzKzvId|?H)rrUcG&D2>0O;xI866!30O)i&6o32n zEdXF*V#4b}b#-+C01O6$k69zCtE*))nR`7;OH18NB9Z9Uty>U6cRe9|>`(5w1ds(t zCh&VY3&HDISma_3PJ}nHh9DHa6yuC4wM) zSW>IiJRUD5CMG&MdU0{lU@)LK+6$wjqrEPaNF*XjvZ0}2sUSLpojG%6a&pq;a#dAT zEiNv)TTvaj{quM{06||EHy&v9Pc(I5=2RQle6+u3fuE5QIP=NKH*Wdi3bz z36it@Tp1VP-qd9%L0{^ZG%!^6XNyZ!z9_hn^eEiEk$hr{J^g@=cS zhK6dj+N!E5>bNyEHQn9ab8~Z-FJCs9Oj4;701y=w)!*OmF1yW}H!GFO+1c6g@$nNU zPW);XehE5%U(nFduxZn#^z?LrK=AtY>$J2qKRc>as@T}r%*@Ql$jE|%g52EPRjXF{ zKW;%mf!%IbDwP39H8(fU&(8~mLa|s(Jr4V?Q(aw65Cn_G%E-u=n3&LLG$^S^oXKRy z#l!`@@G1$;ruVHd`*2hlhttBodM&FI~DMm&?P#!itNF z_w3n29X&rkzpSim-MV#ZwYsCD1HCs(N=iCAI~fc{a&j^Npt7>kYPE8?T(MZ}(Vfa~ zX5rsZ_cuS!Kd%u2*$GNHflxbad?)GyFrFuuvo&ZgcH5dZ%t41M79 p6NXN3Jz?ks*As?La6Mt@6 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_108.map b/master/inherit_graph_108.map new file mode 100644 index 0000000000..eb0f6257f0 --- /dev/null +++ b/master/inherit_graph_108.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_108.md5 b/master/inherit_graph_108.md5 new file mode 100644 index 0000000000..7fd160993a --- /dev/null +++ b/master/inherit_graph_108.md5 @@ -0,0 +1 @@ +0ad4ce19b112af2f77069e5ce83cd55f \ No newline at end of file diff --git a/master/inherit_graph_108.png b/master/inherit_graph_108.png new file mode 100644 index 0000000000000000000000000000000000000000..cdaecf50fcc5c66a10d3ca5a6add21b13e72c7da GIT binary patch literal 2255 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 z77QziQD`` + + diff --git a/master/inherit_graph_109.md5 b/master/inherit_graph_109.md5 new file mode 100644 index 0000000000..1455f347af --- /dev/null +++ b/master/inherit_graph_109.md5 @@ -0,0 +1 @@ +8f2570d8bbfb9de1d9595606131d201a \ No newline at end of file diff --git a/master/inherit_graph_109.png b/master/inherit_graph_109.png new file mode 100644 index 0000000000000000000000000000000000000000..6b6ad9deac603270f5fe1fd4b9a30705d3f6fa45 GIT binary patch literal 1418 zcmV;51$Fv~P)|Pp%VE{r|=zm)PuV`-6sthJH#94L^N-p<|ELZ0kJ>>0 z{wFCZsi&vsefb~f+x?@^SWuB~_s?K3R8>`d?K!u%w*>+Lf*`)WzI;A^VPWBG&rc*L zCx`Zysi~`F+Dw<$z(=EL`+Uj;_<7iD}_Q4931TH>swu2eRFdI-p-$n8eU&tD-;S2 zhvVbplb4sbx3`DKRVr0jSeRY;`1p8tcek#tE-*0A+uJ)cGjn`=+=+nL*w}`KhSbzl zZ*Om%PIq#0Qd(MyAc()ee|dTN`T04C5$Njbii?YTt(r_G27_TXo1NtHVeTT4Xmxc} zDwWb`w4|gY5=uzke_E|prBWRo9Z4h-u~>}1L==m~Yin!cnkfOD2j^3ViM_>m6dI6ZLP1b<5i7DlbV{!<#L_p@;-N+PRHZ%`uh4X3^N!E zB$NQ+%%Ion?IIr%6BE(^?v;uo6HXtX;xF)>lCRy%2kq9_1he}5m3KR-V+ znaqui4JQJuR;x@V3kwT#cXv-tP97NFEgoxVyVEo6QUcBQ!Mhvkgrq699n4V&SU;27_^Rb%oDGj$pA^U0q#9 zqw(zQtgNi8sHkXeZqA7SHk*wXP!x4@bHi^G002HABEmHa4cwXhb3rZV8E8 z==49b;LH4Dv)Orhd6kuwTU%Q;n@z1&kByDF*s!3WprWE;dwcu#_I7!BSs)NRJUjpg z>zDog{rvp=>FMc6d_F%QAb>=^ zbUIxkk#u%;j*gC2R#yHt7e@pH1Z-?zAX0Su9pfO-*ZSYiMXFo6T0M)qQ<^_?q4o0eZdO z%gZY|I-1Ahu~;mvR{L9d9UUFS{om_$O)8bn&(8-32PY&Xkjn)CP+wm^F)`uk=}B(= zNy7-=pA8NUmXwrW@Qbv675x1X@dY0x_wSHbpnuc``bTY`f7Ay0M{S^g)CT%TZ9e#Z zaBy(&=XF3_!D_Vz1_lx%ANW^NQu0%JAfHAk6cVd6_-_lPfzLl`1O1~m&_8Me{i8Pj Y0eM`a3H2j+NdN!<07*qoM6N<$f?5NczyJUM literal 0 HcmV?d00001 diff --git a/master/inherit_graph_11.map b/master/inherit_graph_11.map new file mode 100644 index 0000000000..a6a0c253be --- /dev/null +++ b/master/inherit_graph_11.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_11.md5 b/master/inherit_graph_11.md5 new file mode 100644 index 0000000000..6835226072 --- /dev/null +++ b/master/inherit_graph_11.md5 @@ -0,0 +1 @@ +a5fdd629adf4823d8ceb6c9d2fbae036 \ No newline at end of file diff --git a/master/inherit_graph_11.png b/master/inherit_graph_11.png new file mode 100644 index 0000000000000000000000000000000000000000..de2eb17a3e1b0b7826ce0e5eda40b9edb9536bed GIT binary patch literal 3144 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 UsV4p}@M{2Bn%bC@8@b2+2bZWKvH$=8 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_110.map b/master/inherit_graph_110.map new file mode 100644 index 0000000000..dbfae4ab85 --- /dev/null +++ b/master/inherit_graph_110.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_110.md5 b/master/inherit_graph_110.md5 new file mode 100644 index 0000000000..8456ab2731 --- /dev/null +++ b/master/inherit_graph_110.md5 @@ -0,0 +1 @@ +d1b139479ec3859ac3484f091ade125d \ No newline at end of file diff --git a/master/inherit_graph_110.png b/master/inherit_graph_110.png new file mode 100644 index 0000000000000000000000000000000000000000..db60a97a6dfb85597d1468ff0c2d8d550ec1396a GIT binary patch literal 1528 zcmVFCXTHHqSCYNx`TZ{rjPu{i zY3sif|NTB!zw_)o-}5|YU!L=Gju8kU!2I0^cDn$~?t@K$!6v|96JP)!iF+_QI(q;9 z{oN`BvtyV{ru_W;;Nia}0Zr3AJv}>K5@tu~>FJ?qnj1+9KdHOBd#CEb>;eQqghcS3 z0E10{!6v`}HUS29zyx`Dd5<4I{?k`U2z#j1#PY{Y;B-1KU%s4J&AGWbjYdO~WLjF9 zTCINl`gKBNf4kK4=g(ieb}b<_gpiYyW3^iUgff>s`8c?6;etpc8Xq6`dc7u-$!s?7 zc13#}#KCU2heRTxP$;fnzg|>SbnxK8ep+kqRT)DEbv4Id$ zsZrlyvZlz2QIHh$;M9l2Z{vR+R3qJn~glP6CGQ$BwDC=dwTZg)tj5qpWIUtC;lG#W#SSy@@Bsi`@9_%KP5I-PEH zb(KfCq@)A@2!fy}>ej7W48tIVs;a7jZ<9);;?d+b*xA|1|MmfZ-EQYbesdDoY&Nsm zyu7@u)9JKYEi0|nYRAXN2L=Y*ZnsjY93CEyF;S<}xm>Q1krA)go0XNN(P$WkiFRp{ zB##|CcJt;PVWaCz=wXm>|qNtFoMC>K5 zIx8zH1A)NgzP`SvPoH*nb^^fj=g*Z&WqW%&LdfZK z@@R4!tgfz(R#H^Bj);8{w6wIa>rbCP0f5ivo1dQt0GG=Za&pKd2v1}`!dzHbVB_1{ z+hVbJYHEt70H4pN*XuJgGxzP=m!F^C+uMr};?Yqk6t{2R4yIRDRvHWjgb>3p>FMbm z9UUR1M(l-0KYS8=`0xP$*a3qOnx38pfW^hdXm^QATU%RIRTaAqnt(?$yg_~-QImiq zNp_Kvk^%smo0}ewM<^7^MR##WEcKl^8an*U`$dRqBEw9(h z9=?D7o()D+W}oyoZroT}T4ETcwY7C?Ym0qJAQ1dgGrYlgNtg*_GFfS9X?=bD?CfkH z5U^M*4u>Pg#Pag;+S=N=xw)@jzrKC@R-@5;|Nb2S%w{v|ckX&&VWF(7Y;bUJZEYImHW&U1MFJ7diq~zu00YEg({|a}w#keuV>}eoT8$-%i + + diff --git a/master/inherit_graph_111.md5 b/master/inherit_graph_111.md5 new file mode 100644 index 0000000000..9a5165cdbb --- /dev/null +++ b/master/inherit_graph_111.md5 @@ -0,0 +1 @@ +ef8266443146bd707aa616939a284eb9 \ No newline at end of file diff --git a/master/inherit_graph_111.png b/master/inherit_graph_111.png new file mode 100644 index 0000000000000000000000000000000000000000..76c70efd276dd8e765352d06405d1538c84ade23 GIT binary patch literal 1505 zcmV<71s?i|P)yI#_B7`8;R9X>3 zf{=&^ECYj}h~6Y*L0RA%Szv^{aMr7W2nvFb8Igeyf!bO*%jHN`+6cCNdl4O}x7{}9 zN&TJ=4BS0?p8MYI%b1=gkt76R{`HhBbOPc3LzGQ0jVPO78c{aEH2=-q5DW%!?b@}4 z$RhkhdU|?hZJYJUHZn4TyLa!J5=i*>L?V%l{h9U2_M2Wa1;I!l5P;9;(;XAv*#y&w zvI(XUWfM#z$~MEMO`Fiw)m60h#>U1VNfKhQSkcz}TP=9ms;a7R^XAQkjv<&}!OPay z*N3A=kD9i>!NEazyDE*JfNf6i-t`}U1ZO-+<#nH3ck^msfB zhr`G612US7@( z8#b`Ly`2C!K0cmPey7vPbLY-+*REZ(SS-AL{d(5SKA(>Ow1>;(GR&E2j#0K;Wa&?! zXl0XSna`g;=hV~`TUuIZv)QzRtE;QyjvYJr`t@s0OiZw&ql5SF-zTYGwrp#8y-H*aPtl_HtFZ0U5GYuB#jzJ2=`3Xj|iS|cMP1i;bJQEfbxO3`Yy za$sN}r>v1kgpG}jbT}Mbv}h5xZQI6s_wMDie?2#D+@R0rBS{Vq4-){R(Wo~5`0-<{ zY`NrjI-P83X~`>dwzBEv)SFX`b4z9~ThYF=*=#oL=d!Xg06-#A~ug-9d<;MaA*rAwDioB!u==bB%Z<-9Y`lr5*8Vw_te^ZpBh zq9{nEQh59J?VQ(Iy?QlDN=gum#Xxe}qqep-@Aa%!D;gUcp(qM^dwUIEAB{#)Utf<4 z7cSt_r%y4`26{^HYXGc<(*%Wq`WehluUmcjdJSEDfYS5 zGw)@SWf?U!H8^tQ2;RJTgLpg+zu%7s4;~b>R$W~k8X6ifI5>#!-@oIEz4-Ct z2LPb8wG|GBL!0yG^U={!)YjJG$&)9Tn3zC39!Ez<2g2bnTrQX4{u7A=(&;oRDk`ve z@nZD#^`Wh;O&eEL72CIO$B7dsFg`wxP$-16XV2!9f2LeAuUxqj0|NtEnT&Gk%_$^X zzD)VkM^{%DHg4RAJ$v?G&6+iM`SK;ItE&rI>-O#2SigQf+-^5)HXBZ!Jc)*e1}s^! z#Bi?NZpZQC$8q`cWvHqOS(f4V`_b9iiQT(*8_ri01y`F(~v{wlyl~sxt`lxNaXaptA78B z2*piTLIJY$N8DW{m`9XNFpVgiU>Z?2!8D?5f@wtA1k;GJ38u+-D_5YgR}chYo`@?5f_X&Q1k;GJ38oQc6HN0H*=~t|sI&vU00000NkvXX Hu0mjf8++j- literal 0 HcmV?d00001 diff --git a/master/inherit_graph_112.map b/master/inherit_graph_112.map new file mode 100644 index 0000000000..611acb3c52 --- /dev/null +++ b/master/inherit_graph_112.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_112.md5 b/master/inherit_graph_112.md5 new file mode 100644 index 0000000000..699f9e36a9 --- /dev/null +++ b/master/inherit_graph_112.md5 @@ -0,0 +1 @@ +a6f5bca8026ff0968f6d32554a8aaa27 \ No newline at end of file diff --git a/master/inherit_graph_112.png b/master/inherit_graph_112.png new file mode 100644 index 0000000000000000000000000000000000000000..f0f6a51b8ac121dff29b99979fd2bb72fe2d532d GIT binary patch literal 2020 zcmV_P8nNENrW>8v^2TDuwKxs)HQt&$+9UT`g zT$rg;D5i^4Dy^=r4($FhFHsb|d-ra_Q=*6li^bB>(Sf(5gdTL~&YeW%LlHe?Wo1DY z>V8QcC@skYr6qZwwEPP`pRcmAGBY!C_3G6C0F%kY;cyTH>FVm5>C}RWyOt7(q`tmB z-cjNg%WO7VEEbo`_4e)C-@kuXRaF@b1_)tZUS4bi{X22j(qggf+qW;aKKuIm$-=_I%*@OcD^@&u^a!(iyNI2=w^R#tIwvBTlO>}SrL;q&=H+e1S`0Dw1d-h?I=h}F{45_Foa zt*r!sAcW1$&AGX`6B83mCbPG<7c&+Y7f)F<7K=sTEwm0wr7|#9EEYouKY#wbYuB!Y z3l}mNjPmmGuV23gN_67HiH#dK(rC1sH*XTCpin3j3I*O0<-9Z+jasdCXlSUsyj-PH zK?nf=DwWD=wLW<8z;3sTM51TUo<%sYyu93Iv$eIgIh{^{Kp>aP{eFMA&$|zQy#Nz+qS?N*3{JG=H^Ny65>EQo$k<~LuqMgYPI^xl`ELhY&NUa>H`N3 zV6HklJJZwCA%rfMi@;lG9d6yaB@&4m8X6#k7K;S{uw%y#uh-k%-QCsIg`%iRr3xf} z_3G8rr%!+T_HF0RozqhVFKp!V^8ESp*!J-7FaW^ia`pH30|0C`ThPHl^D=ZGilP7j zx7&@`CnqQAbb3!u4?zMhmrJcy=j7z1rlv}zQj^IP8VjSbv2oe5WrKr*5JG}LZnvAw zX8-#23qt7ecor{SJU%{-9X6$w1m42cA)qCM@Z-mi006t)j_vmL_5uI~1_rPa)z;P$ zoO^(n%}WM@fo)`DWB>qu{P^K;IFgf-`F#F#2iom+004`{LJ$N&kmTg#(a}+d!$IJL z#bRB$bjfD3c|4xoyLXqBm9@3Cg&y|!@#CXMk2W_qFIuz+06-APU@)L4nwFM^AjpCR z3kC)Tu*;f&aNZ)R1B#+4DJfho7u(Ir$-#`+E{DS*4jqn|t$ny$?&RbocEwGLrAwD4 zB_(-09{eR%T3Q;(SUR1qR;#&O?yFa?g8tOq-Mwee9+Sx=5D16^`ThR-`ucb8-UW=U zt*wEN+3BVot`12_|1UM0&Gz|xPNx&w{qW%fX2f=*UR%XXOAd!qQc_Y`S^56`d#~54 z*Xzw@bA$u8Z{J=~QPJ1eH$Fbz+1V+V%O@r#003I87Q1Hg+ithJw6yf;)2AaNBVMmp zr_(tc4zXB__u1dyUs6(X`SRub{QSQLdid}m0ASUsRe>W53JQ9Ad$Etc>82g74ooJq zr>Do~^8o;OJYGRTfm*E|92`VZRHMh~$bC`ghRJ@t(TE@J+6_0+|YytlYD#CZ`@gOnnt#A%Qds5;0 zSwf-k`0?W#Hf+eu%v`^IeS3R*yejfHV)kx5F~q#R70zL3Pl}*BR##Vd>eMNh%cWE* zi;9ZAeEAapN<;=;*cqIc;fQ&AE1W}oPl{kTHZKD~SFT*C)9K=N_C(CFc?sgs-ipK_ zaT|`u;{}f7@pxEYdNwfIwG0rG_7;Idd{2saIHoklr%#`jELjqd^NoVpqGe**TLcdA zJt=}V8~~uMuI~Bs=VN1I=gysTxmZn{(WMH?d|OXfgmL%1zX348!i+I zj~zRfpPx^o(blb7_u|Ei1QjTR(EH_V(Q>XJ6bi3jzdqAhKsXoIJ`|BdX-OWY_$@63 z0o~o*Go3 + + diff --git a/master/inherit_graph_113.md5 b/master/inherit_graph_113.md5 new file mode 100644 index 0000000000..34e578bac3 --- /dev/null +++ b/master/inherit_graph_113.md5 @@ -0,0 +1 @@ +f1136f3c5de60ea0dd1e548b1c2b64b8 \ No newline at end of file diff --git a/master/inherit_graph_113.png b/master/inherit_graph_113.png new file mode 100644 index 0000000000000000000000000000000000000000..0cd9f29d8d5a787927b6522e68d6249b9640bb6c GIT binary patch literal 1476 zcmV;#1v~nQP)FmTvhJB2vWx&EoRo!`aF@3`D? zZd144uinqqc^}^AeZJ3o9^dnv!;nFeBw+q}n5hlB00V&Q0E57FfB^tV3m@3+ z_Ivm4rAi7WnN(C%w6?ZV!{5#Wuh%;=GLm#jm}KK{IP7+NxFs!e((v$bvh-k5LqkKu z77OkVFaWp?FbG@+7yw)c7{tEUfkYyC^ytxkN5SlpeXj$D!*S`-rM+5hb#;|NM_L-q zi%%3zoH$`No2lXH)29sv!(NHpF2okiuU@^{zi{#LKYK2ur>B$ua_-!@=H_N}y|J;8 zYH2&8*XzkJPMtcHYDJqQQU@ZDsI9H7y1JUf;T$`5?8S>0$Q}p;^m=_kK|ywQ_LVDF ze*E|WzdskYbNv4OyI!y7^Z8j>S#r7DBJm1=TwQmfT67z~L-5@U8Ek?7W~Ta}fS91f?nwDjG(cgW7;@uRm>ZWfC*H#Zk$PiW=E7%mD4o(C3-rK6)`etuq~(WupG^dknf zTK(a}2b<02cDu{U%ErgXV|3JLG%lCx?c2AXKYuPRE>mGF_g}kq z&FOSnEEb#1HaIxQVzGvXhRVvy`uh4vl5{v6F^U9$-rnB3ckdDe(b(8{_Uu`o&$peP z9YY{4T)5zLI;W(fa(Q{V$z+P+==FL5;LDdU$Q}#^IULUP^z@E0sOLiT74F=*bM)xZ%*@Q! zuU}KX)UF|9G8uJf(~3m)n>TM#F2|1_fB5hrNs?SH_vOo%$cU6IFE7)E*s}9JpN}NT z^XJcBzkZ!0$xtZ7=ku*rYxIn^leZ;Ybd*Y^QmG8LBzPX=mX0G*975`BfMSFd_J90 z*hNA_e{k^NK>*Ndwf+75>+9=p-n{Yq{q^k0DV^F_}zbV`DKo z*45QDH8su5%>4ZM^Zonx3WZ{AZ4F}X6Qiuq-rnx@dMy^qz`%gPVEFj)BXY^j&7Gc} zj`uC2x3_mm8Ewi)%#9YS)mlR|uWK~sFjE)wIrMS5G%$YMeIXNvYElo{L z2M!#FD>Us2Y%Z)F + + diff --git a/master/inherit_graph_114.md5 b/master/inherit_graph_114.md5 new file mode 100644 index 0000000000..d837c6d979 --- /dev/null +++ b/master/inherit_graph_114.md5 @@ -0,0 +1 @@ +eac85c0c6133fe950374664cd404843d \ No newline at end of file diff --git a/master/inherit_graph_114.png b/master/inherit_graph_114.png new file mode 100644 index 0000000000000000000000000000000000000000..c171ce5db8abab5689df9f05e6c8b43a0d4eb89b GIT binary patch literal 2671 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 dKwp6n| literal 0 HcmV?d00001 diff --git a/master/inherit_graph_115.map b/master/inherit_graph_115.map new file mode 100644 index 0000000000..8f042c72b1 --- /dev/null +++ b/master/inherit_graph_115.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_115.md5 b/master/inherit_graph_115.md5 new file mode 100644 index 0000000000..784f200e6a --- /dev/null +++ b/master/inherit_graph_115.md5 @@ -0,0 +1 @@ +f3e24438342db3347c966ee3ccc4da7b \ No newline at end of file diff --git a/master/inherit_graph_115.png b/master/inherit_graph_115.png new file mode 100644 index 0000000000000000000000000000000000000000..68e4b01dc587adef616038a71f5da17ec47e9d98 GIT binary patch literal 2725 zcmYjT2{@E%8~z$=!;o#V%+cXcvJMKTG?;8-H-ySQA;r(w#$Hlm8AR6XLK*vraI$oc zt?YCBI6C&RCQOkn%l~$+>s;6Web@KB@AWP3a^LrJKTn*6nE?VW3Wp#Ffiu*_gSHD? zmpEbI-jH@*3^eSn#s<33$&a(J^;Iea!EfPob*zJP*K<8h1cth7tTM=k&!a7 zc;>r`sTs=tiF!kQ=`5ZyxIFr~b}P@rqaZJD>Ili*Lwu;6%(`gK@o=v~d;jsz0%_)) zDmp(pEM1A+-Q9heN+(o{GhBQ=KAQ;%+^$=h`#357srCm>%MubuS!_`)jb=&fc0Mpm zPf!0Xo`Y5!my~2vuCsQ5^?6}9Hu-e#Kb?a{Un23MoLr99QOM8*C8ZiM_5bvflsK=s zOmE?21UIJMX396zIJLW$qtO;$3d^GqVrpp_8P9}n7#JAbxg(YO;nL;H2m~Tx=d;Mo z-jRzkGIq^=(zKg)cCjvYrlyF=-0W->6_xVp>ijA%Lqkp!?n+)8k}Vd2WnpZfeTa3{gR&lYe)v zbZkBN!sw}u^z(bxw^%pfWo0#T^nLfi@uA3JXuH)obL5q|z2f-TSkOeB8;U1JxN>sR ze*TuVytzT?AH&1R&!3CX>j(llo;9FsQht07Fblo3?R z$;-<_RO#5(I0gm=N=t68ub1Mf5fKrh-8#w%V`Da4TwGb&D$gt1+K&65tLkD-v%-{= zltdF>n!%yrv9Tovqr(|JIXNjRDw?MM?04sd#l?ujJLZ=5jKT0gXE<4Pbab*ys~z43ZA|`3vqOoA zi6N0YK&Lkm-?(StldWO4RDJ2e!NE*LhewON=P(e|>8jiU16xZE+S%TgmzDi<*g}f` z6vWQK;nHeyo`4osP*6}M>r8H5lFP+JfT>c(k|I0o0*kVOqgV=g@jKHZ~fKR*Mo4NX^erVl>$+Ha0XU$jOaV)(EpF zF{GuXmzI_^l9m@1P#V5a&zI!nWDZ_&!&1C#`oZD8{{a4iS?9=p+EUDHU95EAWpV!yf zpjtcmCh-zHH8nNW_jsIt08XV+0j$;4)d11gzjmIu5D2OSC3)o9r_l-^Is$S{usNz z_%1Oq@zu+h&Nn@Oig(G{A*u)`)Yo6Sdi5=tOioEj`RQsn~r8+=Yb&px3y#IKak_k;U|Nb*0Xq4+;nf z-~YO}*p~^GGSe2pa;v82vdkS14~nj&_*2sIVBYl@p4N!(NHtn*?Ojh#3A0)X#TbW+ zvzA@o+|-IZ+^Y-~L7}*LdCzjPG8ha%J&1|TwY9D7ZQ!85uZ)47>+hym$n*~lT_}+e zG{R!BE-t`NcmdNMn(?cwY-|o~;S+Q^5iA6P)YTioQhIxhnu7n74_yD)037$}IW5PQ zU`u(VfxiAd|Lpq5{kv>#ZfH3^cA-l#%#Dhe#}Q8<6ED(xdj9S03uD!j{pe| z)X!#OT=42yQr1R+C3P4uxbQxuuC8u(bH=I3_tX`a zZCIB%`PRXW0J37D$fr+2t&+_9Bp)B8NiT12Hi#R6pstyPam7D-Kt}JES*@(DDl03~ zyGK=Pl9z1hh%0LDWfd1%BqdYczk3IT&Oi{ejoZArccZ?suF=UIR+)w=wJG9e&9Fw)%?`ymVD*;9S?io3n( zawEI8w&uZll~q+Bo&JhOLsmr<6m^59QSPBU|J zbJE5cWrB3+P-QJoX6Z`0a>w-a^!T{Cf`T`QV=4a9SFd8o=~Hy;}tv$VAQ4RM + + diff --git a/master/inherit_graph_116.md5 b/master/inherit_graph_116.md5 new file mode 100644 index 0000000000..5082a4015a --- /dev/null +++ b/master/inherit_graph_116.md5 @@ -0,0 +1 @@ +aa768f733cf5bda97403c16b1ec8ab07 \ No newline at end of file diff --git a/master/inherit_graph_116.png b/master/inherit_graph_116.png new file mode 100644 index 0000000000000000000000000000000000000000..e6b87d948ae1fd1e4c7973cdc1dff20cae4d6d55 GIT binary patch literal 954 zcmV;r14aCaP)00006VoOIv0RI60 z0RN!9r;`8x18+%0K~!jg?U_wTGC>^1XWStBvLf=5XkU;7q0k{a1QkRC5=a{cp-4fU zLhuwsw+JsvccX)JC@VTtmo9eG=;PoeNWHR~N*8U?T zQ?*(>KR@5!-!G9!+S=Oo_xDLX7K@q9=BB2m+S=Ob>FI}u2lReDel##1kDJYAg+ftN zQ=`>tudc30-Dwzsz*9v<3kHknLTU0ppjHTClHl3QA> zR?p4N_4f8wRaLF6t>u-Ez2M5>J*Gi>Qr_;Ut=I^k*y}h)w6pcnT8qL7K!1?*P&*wWnKHk~c+1lD7 z$K;S+Sy@?JT)exx8yg$TPnhGezP_GT$%;y)ve|5;eS3S05DJIGhxb#*x$ zjvNC+p%6kS5{Zy{DwUE*BtD<-QycuXpH<6lx0ANp?Zz0#<8jg*A0MBco#i+#hqOwi zT3A^4)C0$HEX%Si%dZHWr&6huG{}yTNF;*6Aj2>%EiL&D3v9U3gN?l%FetOkQL!nTJ zM53FUo4UF>C^I0^7-M0l1>5)Ka=BKkotT(7J3G6-zjrtsySuwz95_5YY%-ZHE-oG) zACHcXbUNMh^E1kSj}qYdBkAt|c`voPy4umvF*rEb+}wO}a?;n=_r-xur&Fm^4h;=S zrP7(18I#FWT3QNdtiaNk<9#=ExmCJKLX3L{4S + + diff --git a/master/inherit_graph_117.md5 b/master/inherit_graph_117.md5 new file mode 100644 index 0000000000..abed670f03 --- /dev/null +++ b/master/inherit_graph_117.md5 @@ -0,0 +1 @@ +64f5b749836b61063320298b59c3792b \ No newline at end of file diff --git a/master/inherit_graph_117.png b/master/inherit_graph_117.png new file mode 100644 index 0000000000000000000000000000000000000000..ce7cf28bbed7d9cbedfd0223380754ad06e47969 GIT binary patch literal 1575 zcmV+?2H5$DP)8wQK~#90?c85T)88M*@#kiLwARdv2DRb;$bwK@;JWalNJ7zINh}e? zGAxi7EQtP45OraZTF`~Ez_Oy!tcx5$5E>CKN{QV>4s+@xB`Gv(M!EC5a(w+WGq=zD z73TqieLiPZMK~{kvpyNs5upB`HQWm!z0wGk0`!bWl@M zvlLmRzgTl~^Q?WdX0CyO0UkVf5RpLA-_Psy2JM$wGuM>4I#H5lYHDi2VzJCQCf8h& zVq|kkijmDFDMmJzq?jddE|bZ`_3PJ{I!3_%Tb{q!k~f#r>EzI%Ly8|~VqyZ7N)`07 zY}vAi<>~J3#%wmD)9Hwdiz7ETmlrQy1je^*+s2I>Hx$hf2}|BwkrEvpjSwPmDJ(3c zyu3WH{p;7Sh-Jyk%R{5l(ACvNe}6wVn~kcfs)!vwQo_<)85tRzIdg`cJ9nbhYT2}D z6HlK$4UCVCjbXJ~NlHp0E-sG4hY$1Z+c#kL%h2y?jgOCGwOUC?NMP;SwdCjL)7RG* z7_X|TA~iKN==Sf-mB(hYk)555Mx$ZNmMy$`^@{51Y77Pgv9YmKR8-*i`xlgPczBqe zo*s@JJBGnvV9lB}3&0LL*jZ{@tF*GzpX=y1XB_)9e zUs6&+S63GfhlAeUUW`T~ZEbCfs#RKAirej`y}h0O{(jQZ(lDFN(@t8rJ$m$rD_5>C zG&F?CWFjXghxhN_<8rxp^X3hYA3vt0r6q9t`7-KsIyP?H$hmXpa5|k#OiWBW*1dc8 zFdB_CG&CTD!0B`X(AwIH5Q3jSfAa9*LvG%@$=$nmL&^zIS69dR^XKt;y;v+3^78Wd z^yyQ0PMnzG{{8!6j@|Q0Pfr)s)zyLR&!0aFKzO}g(bv}}0O5AK=e%!LR+g~a?F*_k zFfbqhF*rCF7@wS+6k4rTxLmG3%3N4jD9X#r7nG-_rY5l6*48FeDwP-?9}ny+E-n@) zPMi=zhy`WzdcC5uvQng`ri$gumy7M&w~LmRmcZ?eMx$tGXqY$u)vH&9#bQ}>&Z+yH zJb7|j-OZafi~9Qdd5`^H^Ylwo*k&%BP8YZy6B7e~&*#JA@emaiMM_Fa$hCTVdjZhv z^?`+WR8$mWV`F$co-jO$xvg8bE^s|MI+|6hRS_CYJ|Dn>GV1kuu3fu^+wEp# zWQ5}4V)pIZM|*pF&s~-Q9fu{+-vaUt>0#`SIfi5c+~XRKLqOI5^R6J>$!l zFN}_kQeR(>$KxR@D+_@2>(}FQxdP4O^ZD@m{lvz`vSP&woK7dTwY6c%TUS@d^XJd` z`t>W9FJH#%^Fn%e$BrF~s@2%oNLpGNxw*OM zbUKb6JxWSQjLf#=p|_;*<6xhf_@WK`uDwk`&QBVa^{j0Bb!T7jBGARF|xTN z#ROf@H#IdyGKch+>gebQIu^9Kg8eU=BrTLm2>JV5k|N~qb4kjP%_S*DHkYIr*<6xh Z{s))sh$2T~6GH$1002ovPDHLkV1jV)4!{5a literal 0 HcmV?d00001 diff --git a/master/inherit_graph_118.map b/master/inherit_graph_118.map new file mode 100644 index 0000000000..ea9a277996 --- /dev/null +++ b/master/inherit_graph_118.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_118.md5 b/master/inherit_graph_118.md5 new file mode 100644 index 0000000000..72b3614b6e --- /dev/null +++ b/master/inherit_graph_118.md5 @@ -0,0 +1 @@ +0c95b057674ebe6c996b0340471cdbe9 \ No newline at end of file diff --git a/master/inherit_graph_118.png b/master/inherit_graph_118.png new file mode 100644 index 0000000000000000000000000000000000000000..14c728cfd79a35be80b7c2446c3ccc763e9970ef GIT binary patch literal 1309 zcmV+&1>*XNP)g5x+qkQVB13qX7d`crdwHA z`NHvYb91#?ZDf5(wthxON8|rcQ&ZF0+6s?fUS7U+UX@CP`%qe1`mNK2P9**b1cJW4 zzLJs>CX<<&nYpyI1mib1H!77XEiElBF0Q@3{qF7#yj?#7b-ca3RjE{5E;lwdRxB1D z9UZ~ATCL8=$asJJ9+%72*x1Nou@Vy#o12?2FE3%7!{KOBh%%XMcXxMTVZmmz35CM7wY3mC%H?v4#j?J>?r=Exe7-~?d3}8iOHW;0 z-Szdg(P-S>-o`LYCX)p}Kaf;Hd4x1IHJQz3qtOVPTCKLIs3IGfF0US5WAIMLPBRUoN^ z@^Bn4FE97IXy@nWIF8rV)pd1s;W+;K`pV^U^?JQ`7Q%D_jqmmEL!?rvR4Vn2MELx% zSS)zJU@!mx4-XG^yPZa(rKhKd+tFsT0RY%+HY^QjG}_J04P1yq1j8^ooeuAP003NO z;dLY=h}8G;VAF5^OGron04SBp@$vEJ=jYYcRkzz+U0n?T2%b)$@gwHT%C^+hRFB7F zwOWJhQiO21Tq>37a=GH;<0G3oIXU^|<;CG}q@<((01giiVGsboU@*Mb$mMcB9S~jJ%Nzx7aosSSXkK6(Q$fuieXq+S65|aWl~ZS06-uRXfztP z+kJF&)Z5$pNvVENsZ_aKK0G`;J3HIb((++Cfk;Y9GMP+~mC#@L{-D?Ev$C?v%gcE@ z-pQug(4~{Dy*p|CnsZKV*dR3BNPhRY_?9PgYo|U z{)>wXHk&OLi{bhfnbe`7A>a2u@9UaUsodDuNJ~r0%gc*6ot~ba#l=MigAqafNx^+e ztf{G~`ucht{Uhza3jBWL`+<*S@9zjdkbmR``A2S$f8+-FM{baR + + diff --git a/master/inherit_graph_119.md5 b/master/inherit_graph_119.md5 new file mode 100644 index 0000000000..3d0d945a8f --- /dev/null +++ b/master/inherit_graph_119.md5 @@ -0,0 +1 @@ +e022517e2e25f79993ac54743552da9e \ No newline at end of file diff --git a/master/inherit_graph_119.png b/master/inherit_graph_119.png new file mode 100644 index 0000000000000000000000000000000000000000..180bdbe38fe12d3f24082d6e398b9c253f724bea GIT binary patch literal 1667 zcmV-}27LL6P)ig!xNSTHNH3nQo~cjbvvL=iEwqn=G;M$Yv|3-$aiUfS=pKgYA} zOx@}IT%Gf9&ig*k`TD-+-TOU=F$@C`qC>LR2_WJE(p8)wUBwB~Rh-D!CnF;x?d|P* zl?oyj3JVKw+_>RC{cF6^H2wJT<6Tb)5i2A~j*N`3BeLL&9zA-rTlpY_;o`-M0TJ|m z6(>knae{OeCrH=-(Q37JyM3>-5Qezxs@Lm#dwb*E3nGBH>q?U3)vH&9YHed<0}F*r z7Ghy96z9&J3+V3Et5*WHf8xZ6{{DUe8w3eA4<{uhF@Lyl;lh`B?y9H zapugKxONvi(deqxYMYyzOG`@?3PoOC-isG6VBF{P5d@Kwlard7T3=uP>pb$mkYx%uh$zcRRF-u%uH~4A?fb!E+{DQpHdVhl}hL5=Q+v=S-#0+8XXGk@Es^%cd@oKZ#T3T8@fBtN-Sj=WKG;z&l^VrzfvuDpJiqh$HZ{ED&d85T*nVp>- z9v)s?T+GkUudJ-x-rkNVpQ@^=wY9bJ@$vWX-_ta0Hk-Mx50`4l^g>coQ!_n1Jw84T zPy74(i;IiZYBhH`!RT0-DL#D?tOj%i3z(ZSESz#Eas;a7~sfl5j?d@%qN@cg( z{k?=NCtUk}U8BZmG#ZUYb|lL2s#GfBfm|*J0IaXC&(F_GrP3oujzoGRMNt3%9LM33 zL@Jf~d_Fj#@r0&nnM?-93IG63T=4mZgd^49^x$d0`}NSFLjVA))%xJUgWtb@zkdDN z>-C;Le;xq9T~4_61xK)Dq*|@s+S;0%n~U^)pi-$M5{bv-NlQzMuIsF}&wQ$B!Rj5C9;T%l*&J`6 z!CFF678sd3lMMXtzZS98-AAbJ)`R?7j%F4=LzkUJUD~R0O+|#E| zH#9UXFE7(H-PF`nUS6J&kpTeEYPEfReO|A3VPWCcty?js8h}J1u~;l!U0qL}JgKXz z+p(N*WMpJaOicKf^n1B(3W?or*Jw0lWo5a!xuc__B_$<1Z?xHL`T6gAH^7{4b zwY9Ye4jhQ6>w$rR>t;?CfO!e)a#{ zv|6oBr!yxf=j6$gQI~V`=FR8NpUdTPxE>Y+jA1SL9zJ|nU0uzfFBB6E=+m(c)&$#^ zK=1_VDo&8D;sog`PDHEgKkg4EjIMsOEF~qSsHn*4baG$M#~+M`LAFmw7+t}i%{;f; zt<&i$Dk}W@M~Gk&NmqzMp=fPw{r2q}{9-noL${+p7;KPn_-nUs-!3jLPDx2|I2?OW zbL1qRt^x3L==d099RAw<`}gnOz3cUQO(xUs)fNMB{Cp%%_C-2t z(@9ZOW@aV;psTA(qtPrcFT>4YHUvSyt-fp5uHCtFXK85($8q)rE|+U?aM0~`!=~=t zyO)}pIyE(=(P#hwjg5^(MMb+*p%5g}c!is^nVFey-@bkN^l5r}I)8_5M}v&pUxQ9j z0+C4Ll^}?Yjt+K&!=d8?+aTli*Dwr=KJUFCk;ZE<91a~H*ale?{@Q*fv2_LE9XdV) z7-X^Ah5HBO(}@A()BP(TUBwB~Rh%GQ#R<|?oFHAr3DQ-ZgxE(6{^ufyeGW;I0pA|~ zHD0r_vW!OK?xutg0KHycSXju8U}$$ql%V&kI6=CK6Qrv+LAr{Q{{Vm_pGWZ^QcVB= N002ovPDHLkV1fZbK<5Ae literal 0 HcmV?d00001 diff --git a/master/inherit_graph_12.map b/master/inherit_graph_12.map new file mode 100644 index 0000000000..28e34a128d --- /dev/null +++ b/master/inherit_graph_12.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_12.md5 b/master/inherit_graph_12.md5 new file mode 100644 index 0000000000..25e8ef963e --- /dev/null +++ b/master/inherit_graph_12.md5 @@ -0,0 +1 @@ +e187a08bcb62b8019c19a7679f4c5750 \ No newline at end of file diff --git a/master/inherit_graph_12.png b/master/inherit_graph_12.png new file mode 100644 index 0000000000000000000000000000000000000000..bffb395e3c8f82ad4561a0ec30078b5b0aec0aa6 GIT binary patch literal 2462 zcmZXWc{rQd7sp?j(jY2QYg$8TEr|qC8d9MnB_V2U#1KV`s-;!?HlejvY5h7nf>Lx; zi!^FUky?vUw5YK&B(=4cQM9)5duRUpJ-_FD?t7o-yzjZ^x%YhT_ncJQ3lIQZvz{QBtw01$Pckj^u;YCyae8jtX-g}>d*muGCu^O<>pg2=`q_~;5 zsWM<1pQ3}XRaUtRkxqdYyWjp|&0tJUHiS!@6850EzPfQjN5?j3*TP&nt=-GZ%MUB+ z5%z0VR%*NF>_dr9kKA|>m9!|hw^)(~3bUXfa2!{Y}jWLwsejS+K)vI&~)?B-ZNzjYik@EAD^d*iHWY*VJBFIz~7*O!?BGuA`lvyo11fT za%4taby1%CQUFkBTRP$S+@;DDtF57d5B>D3sWSccqP>Gd*6Xn8W+9+?YwJ}_jsB7j zk=Pg{FyG`Nn0gE*(l+wgkC|+tyx$ZR6_uBl7Z#o%7AVQd9k%XlZ`aq?zeuBn zg@;#-E=ej87x4Gr&vUul;laU;&CSTj$nzE!-Lp46g&^_Md)w*43YX~Xo#j;W1i_*8PS#`5n`k`6*yThW6OG_-H{^R`o zZ};#2z4>|A%i8zKpGVLkMzOxWqQ5w7wt_6Tw*G|5LNNz2Gc(6_x@W(Dda?Rf6WYkh z$q60ibL?1dU7cY>MMOt$l&W?Cc5!&84NKTU%QoG^3-VJ3BiI3k%!Z zk$@?UCcDQ*Uvj#5Q3wcI8Y$$!5r~1YF)^;XY}!RS9j~j~KRzBk`&MQozU#`$ICphv zw5qtcn89H9`ucvt$-~UaWb)0MU#6!Y)3q*8C^I+f*ladBII%;gv;H&TyC3Uz^j` zH?4z$*4T^&@R$`~=9e#Drqi=Cen`7>hsWc+a>cT!#PAi@m>3?vCdCL6AJ;vL;?kX+ zgYd_i4jly3DjAzqEwCgizV7S zIzHJtI)RqCN?6fqP)Wzu$83MeJ#*dP-yZ^jJlxE}UORg9s2&ana+7ZyO>=f$Tw0_!FpEo-RS?W*c&zCf_PvFKn{Mi=1(f`%c5 zf9p_^SU>{h!^DLDRZ(;c52upWj>2LMs>KpSdeCrdq^fr5t`(ICKiFM0S+bedjwtiX z14VAKfm>S}R-^U#RzX3*muRpYh3srB)<|<6X2&Q)F#122`AzUpFJbXrhl)BbIYYB^ zaxAT_H#asyLPDsPmN_g|{IUsi|Kkn(*RNm4x!0NBRuuh@D<~NLvWI6;!-9eggZPKE z{;=(snj#Vi(NR(LZ1xeL*|QRd!+l--%SI*B(#onv!l#nHxVYHT(gLp1*w|P=jJ>st zV`=H@{|R1*mX`QVL5n9;rb<2uRNefuk%%^(tw85Uzaj6L{qMW^`S~D+ptH5LHF~4w zgbvGeP%c2<7x}qw0|neJpTDDZ`!Vksi?5AF`c+rUxcZixsbT?_Z!*pzLgn3;XoG&$ zP%-x4=e`uH=RF*iZsqc1Q%8#zIj8ymLFtwMfrF|YO^H&ZZ9J#!c0)LuPMKbCsv2Ch zk6!${lQr@jB@0{5{U=7=l=T|NvnQK${^2>`^B2x7`r&{3gi_d&l4sFB(Y#0rc5#sZ z=^v8X-p;fo54#<1?b%jUwSP94oh@%hIhQS|tE-DT$P-U0K2VeMIP}=(|6E%RfVwL< Vvg8p|7T9nBl=Bxz?4R6k{TH^jh}{4H literal 0 HcmV?d00001 diff --git a/master/inherit_graph_120.map b/master/inherit_graph_120.map new file mode 100644 index 0000000000..a350c23523 --- /dev/null +++ b/master/inherit_graph_120.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_120.md5 b/master/inherit_graph_120.md5 new file mode 100644 index 0000000000..10e0512fd6 --- /dev/null +++ b/master/inherit_graph_120.md5 @@ -0,0 +1 @@ +975ad385a96d93592a1b4389dda50ea7 \ No newline at end of file diff --git a/master/inherit_graph_120.png b/master/inherit_graph_120.png new file mode 100644 index 0000000000000000000000000000000000000000..41bc3712370a7cd7b9df1c4f9b8b349da4243e51 GIT binary patch literal 1852 zcmV-C2gCS@P)3fWk=7^v72G#}O;T46c2Wkc9@|1S>z{nyYP4-QT_2FdWAL0`W7_)>;5!eSnODAO$iCf)vOo2vSgDJ7Z&G z-QC@5B?a+U(c0Q75D22(A3jl>PN%_O_~Vige;o#c!Rd6yMkw)vhK7dzlpe%i3Wi~X z2&z#Kq(DYNkOCP6K?-D)H6RoUH8nL+sZSdDCOnlw{G3~-A7qp z3=a=mEEbo`h2yx@YF%qNr10F6c~EG(4CWPZPYr5OMKer*ZA#`?STNTpJP!LYcv z7>(F$Hlxwl+}!*Jj;>a#l}e@4=^PmuF_}!KPoGXWEE0)4fBsw|k!UoU_*cDNZ)RrZ zZ`G+(DrGX+*x1;rWyE99>-B_4LU!%i)zQ%*6bh+S>b7m$o<4mF<368Hp-`~dY&xCZ z+}!-_+czA?`Fy@kr%OFC5C|v~3Kok+qtQenk=<^G@vg3}($Z2wI~)$PSgf9&o~Ry` zN+l2oQsjvjR$E&e-2pzIkK_2~&!3MSJH}uzm`r9vL&MjvU!$7a+S)2BE3>k)?%%&3 zyARi|U*EcQD`9h9zkYr0+_|EnA~u`d*48#VJ4+ZK5{aURZf|e5TCJIxnee4#8sHQR z!`N(gXJ=<562WmiehCB_EiEni`T1Nf_u|EiGcz+keOqGz0O<6H2eCsi~-_c=P6s*X!-;>wEn8F&<}>gcHSLaaC2-?Ch-1=Tj<`JRUC` z4&zCTg5&t5OP6-;+zH#u%gYP~>gIFvUi^Z`0>C-2zR?Fk@a&mH{QmM&gf=f$?TrQVNrLY}qlw=wp zp-^aie4NYW-n(}XMhHuYClm@jdGe&bzMe{@R#a5<_4RqZ-W21bteR1-UAqR`3kwSX z0GG@4;ll?2fX!wj3?>*Qej~_0hJRA;ZXJ=1MO{EavcDpGQip65Vas0u92Xs1p zX=y20o@ByecX?)J1^_TOHwU|~UcCYUeEj$kYF4Y&@fv!1dUA4drl+T2x3RGi03eY_ z0)apZ<&cC%NueQ@8#iv$*4D-^AvN>!^M?){f}dez#>X4w7i$zIlL;FeH*N#~1cO1l z-JYJFURqkZ(us3(a{z$C!a{hjn4X^Q_xtU3dx|7mwrmlJME(8!0D%7f{`&g*O`A3) z%R@$()9Iv8C~P(xcDYljTV!EG_N7wHFr` zhe9ET!vVX~)6*~ryM!-3y1Ke9U%os#I?ChmqQShpyt8M|PE1S~jmGTk?7F%-4u{jx z(UIEmu_V&~3zzff&wD(cNF<`wYD1w={1OPfefzexwY8|ING_LiIGoAJNwe83l}hP! zI!QeQR?R3Z7VF@_gH26M@7}%h`FuK^Zg_Z@m{{8#!-@jX}RCaj>KU}|a#ZaRm<*|%?>TrT%`JWi)m zp-@y+RTUHz#H(#@Z}08xHJMC1cI-&FoU*bqjYi{eICMIl)9Hj)b222;5DW$*kqC`O z%gD&ESS(ttHaaDC2?TE6z8wq(A3l6&v)L|OxWM6XNXke`?D;(-HXEPfXER_DQ`w;6K48!z#{n4XGqmlLZzzwk` zAfq5ifsBG61u_bP6v!wDQXr!sNP&!kAVq?|YYYw!{&^jUznla{iT$Ai0s+C$b65l! qP>q5h1u_bP6v!wDQXr!sNbwKc;rfDlz>s?Y0000 + + diff --git a/master/inherit_graph_121.md5 b/master/inherit_graph_121.md5 new file mode 100644 index 0000000000..2bc250ed22 --- /dev/null +++ b/master/inherit_graph_121.md5 @@ -0,0 +1 @@ +b8d08e14121f4fa10d5156d879223c3f \ No newline at end of file diff --git a/master/inherit_graph_121.png b/master/inherit_graph_121.png new file mode 100644 index 0000000000000000000000000000000000000000..effe0bbdf9d87178d4df5cb51d48269e36692ecc GIT binary patch literal 1656 zcmV-;28a2HP)ugyUjz6{Bw&5r9R5~Rg2(1j#}z@}x4K2#sn z5#>m8l#>J%q8i#hXki~xS5y+zYJDomq>v3mBSNt^XzJEZ>xD|2FNv_@c|P2*=XB1t zj$_TIr~CKmzAx_Uy8q|ee>?YHn22E*!2I2aS6TpO<-sPvU=v`l2`~U4VNZsJhB`Vr zR!RycX4Kc$t5mAM^ru$>ilS^bTg)Y4Vv5aXqbQ0Uk?!otGKmoNYBUH&ZoYd!hxCKw(bK79Ca6btU%ySK8kk`q*`)yIw< zTUMQI+qPZ1c5S)4+wJyUyLKffC(GsXnwpxKnVIEQ0AW3eOkQOCdA9?-UT?G6zJLE7 zh&Y{2yWL)0T^)nnO(v7kXrw5rzrWw%aMab+1zonZwDkD#W1UWCHk+fa!Duwr)YJ?O z4MnXY!@_E{aw0+5x^-(yON&~qPE1V9$;o;6@F9x(d_IH0pin5JQfYN{_1xSX!!QK} z1s01XeB$ivtifO)2qHN-xvZ?r?RKMhTU%RJRu*SW(=QlJq-;FDwQfs9lo&r z`}YSrP*707FwE!ApAQ~9n3|d@lgTP8E5CjF7SP<()KpwtoRE-k^X5%C+Pv6Tf`O*Z_dl zYW*p~o(MMqK@d-$KAoSRHDsZ`Q5&4e%k!!T#goXN|}L*vE8#njZ)t5>gvsS{LKettg6LKGJl zmzI`#ym3dU zy0oAO=?O<3AHUz<*Vk83QIVLKSX5Nh-Q7JsJsoC!fT)?Ey}cccr>3R=;Qjme@7}!w z0H@Q*S_({QP{VI-!KI zyF4*50RS$S3r%0VcmV((K72r$O(qjxLuY4aN=nN3_&AzYRaF6iPN$oloeiU0U{4qU zCJ6B5%a=WS_5eV0bF+~3d=o@?CXmTwXb>MC4*&}b3vRbNE-o%BD{HxlE|&`c(`f+mG$)W063U5y1E(~8U*ghA!-Lhg+f8oGsPink+s91*XylT>&VE+ zz`y`H5{9Z1N|;#u@3n8(u)**5dpsUA9UmV@K{Vxj*xuIG*4o-SFfgE0Dg(iF>(-q( zabjd-#BR4IB_$m=aDXJqmX?!ng@ zgnLDn#)lw?-Me=mI&|pGn>Rk6&tkFMzkgp~VtIMFPN#eO_U(@!Kb}2%rqyZ}7Z(BG z+_`h;Ny!-lKuJl-+O=!xw5dZ zaQE(Ar_*`r)G3lABikZCG~XiLxN##dFR!Gege1x5&!4N+YJrKpy}g?@ZPI8oGMTKd zu1=@Zty;Aze2Q2sK62!U%jIIfGYnNHsIZeKPd<3?AU;06u&@vStX6A6Lc*3UTk`Ys z<#Ks%Z!dq-xw*O4)>eO%r+qZAWUI%6c z31R~Fm)V%V0TF}$pWv?tp9wJ71Q=`r3}6#r0N@`0$qm^tpdi=)0000 + + diff --git a/master/inherit_graph_122.md5 b/master/inherit_graph_122.md5 new file mode 100644 index 0000000000..f7acebb9b6 --- /dev/null +++ b/master/inherit_graph_122.md5 @@ -0,0 +1 @@ +cea97795588229b2cee84cd5dc6e3cf7 \ No newline at end of file diff --git a/master/inherit_graph_122.png b/master/inherit_graph_122.png new file mode 100644 index 0000000000000000000000000000000000000000..cfc51724278d6da3671136c80f44d0255d9bb914 GIT binary patch literal 1877 zcmV-b2demqP)!B$zJ$ zG}27Us9;48|!4QPZqY&+o+#FRg8E<#ZQ1 z9~kU>5BIs>@7c3+&b_-65JCtj6yI}4=<5t9lnJOADZGK2k-{6O87aKM|Mx&sQxhsG zDtwU(DN<=3EM8s?^rjV)yRdPW$Md zk-{6O87aJhnvudAs2M4|!RKa-i;Kh6t5Fi5&B)Eooso0x+_@8(nVC-e z5)u+{;J|??>91S24mWPxn34tnm`o-lB_(0*+_{iQB*@Rt$Kc@Llr+D8{|Txn>P`N=gd4ySusm($Z2aTei$;J1Hp%3l}cL&6_vv^4Ds$h>MFuOiYYh zeOI+)WMrVFr3HKU?u9@gKwMlL0N~T7PuR0(4}yb(5fT!DtgI~b_4V1+t5&PAdGlt> znKK7^y&exAKE$?d+aMB&5ET`Lyu3U-efret*uQ%93dfHhhg2#>Zf-6l5((1N(>?$2 z+>o7}jevjv?Ao;p%aC>mt+1cqe{a^9g%ve)XgVNGceE9GInVFeTC={4@R8pZ( z;Khp;FnCGcyxrvl&mGJb}$-Lu6zm($dl}K0fX?N1;%N+}vE~ zbUH5f^XE@gS66ehqC0(8wdnPF$Ye59RaJoyg68IC06=~1IOJ_InGhQr%e6m#{D=z|E@182wTO?8M}L1mZr{F*&dyGp zJ$n`r5fN_3!c(H6qHzBFdGz%3;PU0muvjdJjg7^oO`D+AY8_UYDM5b2U@#CT;YnG& zdNnC8FX!5QeSHJ~>FMbq-QC>;05O}*PLEx`em&9YbRKE3EK2~8-rioWe{5`wh(sdN z-rnv}uD!jz#NXeaG&eUBLI~08^+YTdli}fExBBjCk;!DFs;Y`>cXV_R0K{swaOy(J|jF7v&3@gkW&e?GBTEL&b}kr8xtb-~Zi4@;LWowAnIY6SpD zBoc1p?dRu*!NEavb#-~9y=c)QY~Q{eTCEnq|4Xz&p}?$Jv)tamVWrGmj=Kx=C&>g(&dCEA_7yIO=o`{7)&WC=z`M`5$sxR}La;rb>J2m}sV z=gysjMx#M}eLdE!S!3515)y(#hYq2&wG}3l2_lgQ85tR17zQU!obdRI=?Sl2zsBLi zhp~9^ViXh2UAf zy}#1hv1136N+sUDeT#43zTw%kXGlv+!;c?708D-XGeKfvA{H!I0J&U_4I4HfIy%}T zeRs8lhK8cOy`8%Px4jw#+|8`va%8l4GoBj zikfsxqNAfxR#pa^%?6!L2bN`FFc|)LY+Z5f+BJ-fjNtCwyD*#0ICbh27>4nh{;$l) zt({x9Zei7`RY*)s1j8_BX=y=1Lc(8Z)zs7=GBOg$$;k)~4n|>NA(Tob0s;a&)({GX z$ji%v)oOLPo#Re_vRaNFJ&Fep9v~rAdyH=Q&ZzIx1pgS zXfztwY&NV|v4Yz!1O^7Wt!eAlt*EZ9#<63^JRS>ol$V#|%9ShFxN)P`G+iMezil)o z9`TvZ{RidWWfFhUe+N?d12rRsH&8QDcmp*fg*Q+$Qg{P3BZW6mGg5ei%O@&pYinmR z56VBnWY0yqG^4Bkwo)k5g~Kl}6pD|azraxV12rRsH&8QDcmp*fg*W^MOqS!GiIo`# P00000NkvXXu0mjf1!;g| literal 0 HcmV?d00001 diff --git a/master/inherit_graph_123.map b/master/inherit_graph_123.map new file mode 100644 index 0000000000..8e2ad994aa --- /dev/null +++ b/master/inherit_graph_123.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_123.md5 b/master/inherit_graph_123.md5 new file mode 100644 index 0000000000..db33983733 --- /dev/null +++ b/master/inherit_graph_123.md5 @@ -0,0 +1 @@ +ab85b8216ae6fc1c6903eb742bd95455 \ No newline at end of file diff --git a/master/inherit_graph_123.png b/master/inherit_graph_123.png new file mode 100644 index 0000000000000000000000000000000000000000..b4bded0b8ea0d9e3633d5f4d822ad6fc0c71c822 GIT binary patch literal 1906 zcmV-&2aWiNP)o@W!oaU38J%RyOd0f_YhG75qe$S4R>Afq5i5ku_s_4PG2 zHm;Qv#6Lx4Wu;gw4s`$XiQ;rRJ3Bl7x+KIuM`vfJ)9EBeVnPRXbaebJJ&1o448wvV z=!}9O1u_bP6v!wDQXr$O0bZ}StgMViqhT0^VOU&T+*&JIo;lJ{+jN|R;xQZJAeNC z8Hm_yww|7z^78V(Fnd!|)6t_xZ8lqffB)RvTv1U`*kOLZ|JAEkDwRsF*N473Jv|*8 z8~aCfR#jD=47prxx7%U->eZ{Msi{G2pU=nR@owI{ z8PHQ*T`d-iqtpo%R#;dV*a4A9gyZzx#IWxaU2g_LXeEJXU}pt9HCHn>C&Z)C8Jl&(-HBofJo4%G@3*rX>M+wo}P{}KESFOrJ06 zcmTlS;-cMdr&6h@si`YX92*-003;mX=wofw6wG+ zmCB79H%6*MMwrv-jERZi^ZBqV6bfMwc6mG=aj;6I^85W06B81NWbfX+3kwSX0KHz{ z*w|>bT2oR|Dk>^^dwcN}{&X;khK`PoUAuNABqU%McIM0(m&--6rqAbl`SN9HX{kUU zn3|fpb?a7jb@hr=1z5GiET7N!`F!wgu_97ZQYaM4_wV0{{)P6Bf?BOMnM{L&gWcWT z@E9AZP9$Lz%Kz8Cb?a8I*XwXNV0U&lRt}c>^3WY+YQhomX zd0}C}VzK1s=PxZS0RXODy9VD_L2Up)Zf@?TO`DD!IU*K|)6&wS)QKdF%jFIY4Z%$p z2n74~?bB#9larH9r&Fud%49Mwmm4J2=kpa56j-g+U%!5hkB`^Y)p0nS?c28#$E2mD z>GgVt!(lWUolYmbnv)@thQ-B2zu(VbFg9%1U^bf#216i)xP&0?+_|&3xcK<-W1G!Z zS63$x2uR9^#A@Ci-@ku9Jv}`)H&-AK^!N8mrBafKZEbBkcI=SJWNbG3^y$+om1^0$ zM+${<;>3xuu`%LZailt7g`Gct{@Jr<@$vE5+1UU9lgX5jkdTp)k(HH|l$6xg))qP` zl}c4Al@%2giHV6~v3O=?rn|d4tW*kxvVZ^nd-v|u)YOpNgh(3reE#+8*Ncmb>2!K! zW#!?+hXdn-mO!MTp`od%Y0sWL + + diff --git a/master/inherit_graph_124.md5 b/master/inherit_graph_124.md5 new file mode 100644 index 0000000000..ecd27148e6 --- /dev/null +++ b/master/inherit_graph_124.md5 @@ -0,0 +1 @@ +7de4747cca679b9b55a75e6808a6a9d1 \ No newline at end of file diff --git a/master/inherit_graph_124.png b/master/inherit_graph_124.png new file mode 100644 index 0000000000000000000000000000000000000000..0c1b42c26fb17d7524aa6b461402e6c7e6684fea GIT binary patch literal 1878 zcmV-c2dVgpP)0bT&cA)16 z2lhPop6lHAvulUvya|Yiz+h}XkA<6^0fVs!Gb4jHFf%fE12ZFoH~22^Xm4*vO-;>a zMUWL!ZNu(QG!Oxw&~m5@P&&SS%Ko{&F}nF5=9&4903{YHEU7t#%q?Yeoid zU}j|S24+SEZ(wF*@PBqMzprJqM)E)lQLUMZEY=%9Xkf2(TL8@PE1WrAv-(U z?U;py1-yCl1{#e9RaI3EaX&vl5D~YjR4U}>=W}hF&E{0MxVRW+&z?nld;6Ny<`!Cp z!C)XK-EP^pZy%MHmy=Sdq`<&H+P!->y?XVEi;s_wlTN22nM_8(!NF8eP(V{tQ$$3R zkdQ!nz20lB$;nC5>2xHON@?4+ZIqs#PD4XOT>Sd=>l7Io>9lRP+es>w(yd#!mgHYj zQbG!a!Yh4OwW!r<0>Etv2?<0*^y9}5I&tCzi9{k2i^Y_in@hic|6WpWSy>q+Cnr-t zKma{__|Rc~pFVv`etv#V=f1bMmr6@ZDLg!!WHK3*m6g%Jz<{ftibJJRQGR~D$M5y_ z_R@t57br9|l%k@d=<3z0)ZgFlahxmM_^WBn%qW#g>HYinG(9~{m6eqw7K>?NVS$K< zGBYzNDJh9QefmUWV`EfTS4YpDJtHFLW^|{Om6b)Qsi`zDFhJwu<5XN+OmT5>WVhRi z$h{efh^}3`MlmrlTzh_goz(7h$N}{^DIvN`r^IC&wgUnc6UCp&eM@I<&Su7SZnM?$L zj7Fo=vChosO3Q3E69BSWtz6u0w^LA15cTx*c$KTwY9(J^U+U=SAR?kij~-EQa4=0z zPkYq&RLgQR_V@P_02&+|SGxV&P(Wd3gkY zG#U*}PELAN_i|Qh#=rUb^Cx9wWDo$la^=d3#=0}(nynedVlnsG-`^hqFgrVop`ju8 z`1l|)GIG^ggM)(rfUvMIZsG0Y*dkJ?)M2bfqrt+$0!Btgkd%~!g9i^{W@ZKeP*qih znwlDPcXuNqA_9elg=lMQ1Fhpj`*yn>uV24LUS1yLaydpvM{)c1ZIqOhtl2)+{RBoP zlfiDcqrbm@)mjk|5fBQ6`1R}8lEpX?AtNKhYaOjt3xmOcuC6Y$w6t(1E}rx~)glxw zoz7jmcEM(|VR(3$>+9?5<6?^l1Olge0)YS$i3DY3WiXjc+}IsEcHrX0i|Fd=LThU) zf`WpOot+K2T#oYca3gb0B9Wk{r-wT;mCNNgbm$O@ii+^< z+c%iaX6SS}q^71qB9S<)(Qdcn`0?ZD?(W9i+#F0M6Dley5E>eaJ$v>zd_Oum8dX(Q z7#<#mUayDQY=*&LSn=Gt;_ltMn4O))lP6DLG#XJ+Q31JJzGnJ=vmuvu9z1w}n3x!( zq@+MDm!q?@6H2A>e`z%~He&DIy+}<>g;*@c`Sa(Y(P*$`%NDOSghCKR!9j=1 zIiB?0)pGgrWxROt0{;H~NK8xw02mAg1Ox;iHZ~UV@$m=?3qxaLqs!cUe0-3TlY_#- zLWG2bK%r1zVqyXo0^(7 zG7rW-g1hG;U7FF=yR8hydf{*fhQZh**c})Ke_&>0@CIf^25(?yWblUn04KNp?{Chq QhyVZp07*qoM6N<$f&fQ=E&u=k literal 0 HcmV?d00001 diff --git a/master/inherit_graph_125.map b/master/inherit_graph_125.map new file mode 100644 index 0000000000..3864bb48c3 --- /dev/null +++ b/master/inherit_graph_125.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_125.md5 b/master/inherit_graph_125.md5 new file mode 100644 index 0000000000..7bee252351 --- /dev/null +++ b/master/inherit_graph_125.md5 @@ -0,0 +1 @@ +dbe08e1a4d4ee84defb3d88368e2a125 \ No newline at end of file diff --git a/master/inherit_graph_125.png b/master/inherit_graph_125.png new file mode 100644 index 0000000000000000000000000000000000000000..0c5162dfbdc3ac44a501482ec030605ab0ba4052 GIT binary patch literal 1837 zcmV+|2h#Y7P)Ff%d)12ZE-FfcPR1Vg~ojMmmx zl$Vz;L|qvF5Dg6t)AFX>899zaV`JmIREY8KF*rEr)?d@^jFY%>E`u>s>g(%~m6heP zjP)5Af`OTlAsCn$8G?bCks%ls+>8o^0yl2lSmb zgD%UIN+pgTKRzS<&6_vl_U+p<()b-BLQ+x^L?RJPCew_xe*O9dkx1lr2?%ieVrAY~ za5K&)TCEn1jg9#B?VD46cXv0Mo11au$dLuAnQN|HyM~~kAfL9Kn3%xRr%$2LXi!>O zI<0)sqD3Ggeo?7Z$ji&)({{VvrEXDC5sn=@hSt{B8O7oYvtq_gn>OL%#f#XnV+TS) zLa=`QdNegP@#UkVqbMva#F{m0uypBCXti3{Y&HPXAJg8ne*E}>!oosGrBZ~3h9WI3 z4FdxMeEF3tSFm>NT9@fvyLKTgEDU$=-gT;fO-&6H3I*cg;=Jm+izPcd8}04wICSU` zL?RIs3Izb*^XJdlzkff(Vll$Q!=YBIVYOPF;w>&N#`f*o5gZ(hy1F_5z`J+vP+3`t zii!%4ZQt41iSy^rLn@UbKR+Llk&)Q9Z=aVl<~zB$xd;pl#NNGov2NWul$4a9x3_oJ z^qrt77z_q-k?oO<8#j_fBB7TrUy{vcBb`o1VzHPeCMJl8C?g|-5)%`tv$KGAP#3JVLPTeoicr0*$~`1p8UXOg6(BuY(9C5y#EX0w@;N+qSHraHyD zV#Nx2@!|#9?RFv}vfJ&HkdQzR9z39-p&*Mp@ym>w4Gpf~U0zev#hQ5FQ?o-@T`BO9g&X+G=C_O!$08nvp@gME$$&9nsXB3OY{Q6`+ zXKZW?{r&y$_xDG1bo7k1`uh3+0FjZAe8=10-yfr+qv-GN_ep!@%9Yr?dpBxoY5@HI zh|bB$!Q#b>z3TsIEF8xnARquyQBi!}WS4>CI6hAzk?`wXU0tZEszPODrCZ(7(o&R{ zm&0T-K`NEv=+UESX=wq?;iP?s!-1xzCaBeF$Ye5DtyWyWejR7doSC&_%=rK&Dk=&N zhXXx5Ju}vlN~Q4g^TXG#U!6MRM1=J8bf0y!S}hC)1B^x^o;`cU4_v(IdyB=-&$&5Q zuU-wi-43(a%;$ah@PRLzL?jaN>#twGhQ(rmSS*G}Btk?)1OPxTm-8n+JUkqyPMw0$ zXhd^!GeSZ_ke!_knM{TY7cTgGVfsQ>R~Js7K8;nYR-vGv05X{jCX)#*EiKS$wFnIj zowZ}lxfvxA3DVNikei!}w{PEKWMl+-y&jJqJ^CxHjEoFuG#b2r{~kYo{=}#P=KMK zA#farlP6CiB_)M7*;Ec3IN)><3=Itd0E|W>u3o)5ZTpy*7?hTl!fZA}uh)a)I2a6u zKW1!A!nCr+GzMx#MsV4%+$etv#9eE2Z>`ue85&he)2DVDQm&*Jgp z#|R1v;z!d4g8@sHEJ0jc9OC2S5g8eY+S=N`irrgGJ9qBHojZ4M?%cUq(=972LseB3 zwr<@zYntv5(UgwHUtk!*ftisZ7?>Fuf`OTl bAsGGxk-=3N7p%o|00000NkvXXu0mjf`u%hF literal 0 HcmV?d00001 diff --git a/master/inherit_graph_126.map b/master/inherit_graph_126.map new file mode 100644 index 0000000000..38245e74f4 --- /dev/null +++ b/master/inherit_graph_126.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_126.md5 b/master/inherit_graph_126.md5 new file mode 100644 index 0000000000..547afbc643 --- /dev/null +++ b/master/inherit_graph_126.md5 @@ -0,0 +1 @@ +699109d126b7fd98896ad49e93377491 \ No newline at end of file diff --git a/master/inherit_graph_126.png b/master/inherit_graph_126.png new file mode 100644 index 0000000000000000000000000000000000000000..745ee9bb14e1f1a4d4b2ba1f311ec6c4d6841c18 GIT binary patch literal 2542 zcmV*P)RSh={;oOnmaij?RF=7%iBY8G?bCnIRaMnHhpXV&3rL#S5H1 zecBPZFc`ea&(9ywHehBp7z`*VD6mUH42G>3jmAO!Ibde)!;}(JbmMmE^<~i5{ zhnrci*CRPO*)I3mxN##A5)v%-MMOkk_wLh?=ybXP{Y_0xaCLPxxpsDThDao`XPRRVnUR;5M;4lg zM4?d7;lqb1A|ir3Jw0jm?Adhx{(Y{$rKN>ZQ&TA@D2Tkhy=mvpo%HkPPa+~xsZ^Ae zmBl+&TU#5YrlyiiCZoxdCsR~Z6xGz!aQ(-RAE)5pV2jtiy}cxp$>_|PGbZ_`rKM3= zSQxMP=J|gA{++gN-AaCbek7GjDIp<&8X6jG)*cfRLjbs!N~NOn=g-r;dGkzit*oph zCnqP9obKGYLyH$Lrmn6o^7r?rii!%ZFDfd^B(C`@ARvI3?!k0e%A3!)C=?1hbm$PR zSh0dUJUr<7_3OlkA^drB)Mn<~++1X2WZ>JkZ%9Z;Kzw{W=>Jmb`1p8~mzU%A?c1oX zu7*;nL~(KPuwo@7B%rFQ3XdK=LTzm=LPJBLR;%&n&mXHfip63iCnqB-D~oIE?(W8w zD_6K#+1B`5wroL5OAB7VevPuSG8ha7#K*^T{d~3GxN!qYr4pAfUj`9Duh%0kE)KP| zwRraI8TUS&PKVX2S7YYPnI>&}_wI#@iwm?`EiPQR!1Was6+x@jLZi`uh(JUrEiHws zt1E~IMx&9J?!k0e%A3!)0Klb7mvHRZF*G+fBQ`eH>hrUT4bC4Fg+f86PMzYe8yg!5 z02z%&`uzDb0idd?DvRH1X=WZQmcd{k09033$MyI2_L7&E7rlA&hF7k2b#)|>NJy{O z6A{sk8#l(F0iZ8mzSyi?sZ`SC%a={wqt$9D zE-sFUh&nqvY3kIeR9IMOq9-sgkh;6OiHNAazMiH}pHA)V?Itla8Vz?{T3Sl3uCCm* zHQm;9nCES6T!{WY=k)Y+i}8lSE;F-KD&@X*b8`a#baZr}rltl?PEH684jyr=>gs9$ zKtMnML?RJHA`zUNoY30Zikg}lUa_Z7pN^=gC~o$;aNz>te|B~@3QBl#bVr|&40f~u;sI06+dwV-dOG}|vtI^ff1pvs% z$lzuHOVTOJ)6-+po|2M+6DLmK`Sa%{M|t<|-2?E~@cju74@X5s1u7~kMrB;B z=`hdR+PI7rb~&26cI_JG&!3MqYt}$6m*eHjmxzdn7*?#@++2i)h9WXD5>lxYd-m)> zVq&7n(UUdAVlj5?*n#Tm>H)`bw#LuP%Y%o92No4ckkYX zo0}V!E?vsCtJP|V#bQK6M3{Uqbvhj)BO?dIadC0M%9SfE9@7nmHQht$u#~s8aTybA zSYR_8L}zCw`S|$oKE4t%cG&=H`Y?n>IN*opH^e#rcf!fxEjqyuH0~ z>Cz=`^+oAV@O{vDCA&vJz^w8d9kg zQ>IKoWMm|sK7Bf(m_kF4W)@f-<#oIjxu zTB)beXe6yxOCcd44QZ9{Z)G#)*AWHBCJjdHo%(}Gq!-r^UYC=m(3v@ai zYHDhrQmHJ)nwOVb+4H?etr}e7e_yS{NVbV zo0};mC4~Y51Ifq7hcp_^pntSmQc^;pp`j#^NVt;+BBJi@Zkjf28m(Npa)6Gaq9R(o zdNoa%GKIXnyhy23(v>S$hKy-Vqe7ve0|yS!vSrK2!^49XE?h`Yo;(?1)E&=IYvu`S zW+7tlQcs0KL07L{wadLmi+^$hIMEN#Rq)!aCNm3odGX6A8%BT7AAzkY4^dyXY+ znZXbY%*+hIz|71L49v_7!7%6sFgiNgo_R1Bycnu(WWdZE7#N7nn>UYXLJY=mnK5I= zp#BsQ{r|sW8H|ZdK3g+01OqcOLohHiGXw)OGea=^2Mq2$7EufJ&Hw-a07*qoM6N<$ Ef{TpU#Q*>R literal 0 HcmV?d00001 diff --git a/master/inherit_graph_127.map b/master/inherit_graph_127.map new file mode 100644 index 0000000000..c06f9dc998 --- /dev/null +++ b/master/inherit_graph_127.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_127.md5 b/master/inherit_graph_127.md5 new file mode 100644 index 0000000000..06f2603241 --- /dev/null +++ b/master/inherit_graph_127.md5 @@ -0,0 +1 @@ +8601b9ad58ed5a8790ced627faa9b6fb \ No newline at end of file diff --git a/master/inherit_graph_127.png b/master/inherit_graph_127.png new file mode 100644 index 0000000000000000000000000000000000000000..28feffe57c40e36a59dabb49af9d412fc94ac208 GIT binary patch literal 1489 zcmV;?1upuDP)DB4Q*^}5EhHYGC4U}TU&dARRs!v^hi%nZ*6VO z%gbXjnTd&sV`F2;?sB>6>+3IFx^(W`IfX*8wY3GmZy@_QZfskPL#%jx{wk7K>$KVq#@wB`GOMB9ZLv?d@AJjdthG9hFLjy4%~^y}i9&7l+rd zd3kw@i;F8OD*&L==`LTstkdaGTO<-O82@hI-QC@7ZEbeDy}G)(xVZS+w{HMYRaND5 zIu{le-oAZnv)N=a8IkMd%a;!yKHS*Yz;T?<=f8UO3deDOHc#9Qtyb${@k&}++LI?w zP#et=yWNgvpT%PF7<}#8HI+)`!_j850f58dK=$3;T_%%hHk*AE;BYt?42H>M!f||H zV1UhLZ*6UPr1KFrGc&WNr^o4ZvRJI1o*t=GisQIQBY6J%d1HjLpKbM!6>2!L0 zeEeY@tyU`lL`Ftp7=~dOolbYTT+7SLK7w$$-0Rn`E0szBP%4!&nJgqE#AA$)uwt=T zr_&h>2BA<`TwJWz>o+$yjYgwbEGFD}Jf3?S%^L=T5f>MSjA-*jsslhwOpNabKOg}+ z&*S3ac6WEtBsvtav9UB7ZEbDMeVUY(miqQmC=^<)c7A@|U@&;ytbBwOi^Y1qetdj9 zKR^HC#fw}n_t~>&VPRp($;pH}k`uACv=kK;6&)SDv$KOXIsjN)Tm*pV=xEf%FpL;a zqxt_<1ExnzOiW2h$?e;>-@kwFbUIZk)yT-m0UgWA%H(qShYufq{P;05Gb52me*O9d z`<&;9f`Wqc=g(JER0xH_t5>fcDr{C(mdoYRXf$X+h{fVZj~=-%4gl!x?w*{S{Qmv> zN-8QU;&3<*9z2lC`7W2sLyy|p+Lo3UE|=Ti-#Nih0aB^dy^G=0 r|3AnCb$*ZwN)K{D=|L_iJ;=pB9K*-cBI3e#00000NkvXXu0mjf7UA8X literal 0 HcmV?d00001 diff --git a/master/inherit_graph_128.map b/master/inherit_graph_128.map new file mode 100644 index 0000000000..805ced539e --- /dev/null +++ b/master/inherit_graph_128.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/inherit_graph_128.md5 b/master/inherit_graph_128.md5 new file mode 100644 index 0000000000..79119c5c9f --- /dev/null +++ b/master/inherit_graph_128.md5 @@ -0,0 +1 @@ +08ef79556c3e9ef1fddf2a7d670d26ae \ No newline at end of file diff --git a/master/inherit_graph_128.png b/master/inherit_graph_128.png new file mode 100644 index 0000000000000000000000000000000000000000..0ccf6d7b92d5d582bdfa6737b3a3731530a2f7f9 GIT binary patch literal 4426 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 + + + diff --git a/master/inherit_graph_129.md5 b/master/inherit_graph_129.md5 new file mode 100644 index 0000000000..5144aa75d3 --- /dev/null +++ b/master/inherit_graph_129.md5 @@ -0,0 +1 @@ +16e67e5212fd79191091702f822ea598 \ No newline at end of file diff --git a/master/inherit_graph_129.png b/master/inherit_graph_129.png new file mode 100644 index 0000000000000000000000000000000000000000..35a8ab2d82320fc82e85512a43bf69ffb566f66f GIT binary patch literal 4092 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 + + diff --git a/master/inherit_graph_13.md5 b/master/inherit_graph_13.md5 new file mode 100644 index 0000000000..1ef350ea96 --- /dev/null +++ b/master/inherit_graph_13.md5 @@ -0,0 +1 @@ +504035e48cca725077fad73c61e17344 \ No newline at end of file diff --git a/master/inherit_graph_13.png b/master/inherit_graph_13.png new file mode 100644 index 0000000000000000000000000000000000000000..969246d87685d19f2f4a90019de4b184643d6669 GIT binary patch literal 2761 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 wV`C#k^|Cvd`x + + diff --git a/master/inherit_graph_130.md5 b/master/inherit_graph_130.md5 new file mode 100644 index 0000000000..14a664fff6 --- /dev/null +++ b/master/inherit_graph_130.md5 @@ -0,0 +1 @@ +2ae6abd651fcd066c4475377daf7b85b \ No newline at end of file diff --git a/master/inherit_graph_130.png b/master/inherit_graph_130.png new file mode 100644 index 0000000000000000000000000000000000000000..d181dfb3d6e89555fb68441ed303f28429e2c2ac GIT binary patch literal 1651 zcmV-(28{WMP)Jz? zR-lpCNTdjP-{Vhq#9R_466|(+Utb^F!e8xVwOV7P2NO9bPoDI%;O8ZG zz`5iOIG5ZZ*162d$!TqEjmqhN7>aw~y5tTUp3AJPtOpMsL~vqVT^)qbY&J(*5jb+> z2!xPb(+-CNLMRXjqCQqE`A6%LqNujEwsYssnM|gQh_6s6nwy)MZgX?9LZR4*fnrG{ zx!kvJ-?eMkR4SEFDBQh!cW-Ymvd_-W8jZ%()YOE8go=ua`T6;xqN0I;fiq{$KnQbk za{S`d*Vm_~r>|}U0D5|Qwr$(i)YRm5yN8E|*Oc__+qcuFPm9Ik9XocEmX`kb@gtZd zWG^Tv@cDdi-@XL^%+1YpbaYfyRImeTwOR-vkHsGB+`{m0QCVp*g?STUawrttb+1VLJHvT8Vx-^^3 z_4V~%zkV$#DKQufNV>sb7#tkz>gsa4-AbkM_3PK2ot;Xh^8Wq%G)>#>_VDAIOr}eh zE)fJ#Sy_4a?%g&0Pn|k7Gc)u4{rmp@ev%{&1_QFMmW1p)99K%31*)AX-jzn(pN_VD4uj*gDda}VaP*Xu&MMMdFXF#rIdSy(I)o z;^N}y=xAJATv}RMWC7WkVqsDLI`18T-@yJ?C9tyI_kGVgiqA=J~EkXWn~4G$ZrGi);9!2QLU}5A3l6w zZnu{&Uxr?0larH|mzT%J#!&b3=g-I(OcKL|3m2X~eR}@a=B1LDwXnhJfF|UuBv0lj-jJ|V!|hCxlBn( z(Q374&z}AG@#DCdq=H^yaRZUGzxm>QRSFbYH>iF^FWo2cbK7CqPSa|pDU14G2($Z4sQPw1y z?JukUMC@;|Sf;0^)6&uk3JTDd z4T2y50A{l}BO^nj(TK(3s;a88va(H^Hie@t6znn&bMJ$RjIOS(goK1>MO(f13Gn?A z6Gbc*3!l$FeE6`-<+^g^%DP`O*26#gyANkLbm)-PYL!Z*TCG;4QZ+O*Y}{D5E;p9# z+qbXx=bMPZb;%uYF1Z8FC3nEN2&Nar1AeRxdMJ(atEAC?tpX29dItW!+$(koA~$w7i|Cl002ovPDHLkV1ilNHevt( literal 0 HcmV?d00001 diff --git a/master/inherit_graph_131.map b/master/inherit_graph_131.map new file mode 100644 index 0000000000..94c0b5741a --- /dev/null +++ b/master/inherit_graph_131.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_131.md5 b/master/inherit_graph_131.md5 new file mode 100644 index 0000000000..b52b85a8e2 --- /dev/null +++ b/master/inherit_graph_131.md5 @@ -0,0 +1 @@ +810fddce6186cd75e0cb2f6a4c10af36 \ No newline at end of file diff --git a/master/inherit_graph_131.png b/master/inherit_graph_131.png new file mode 100644 index 0000000000000000000000000000000000000000..ef815fffc33cad09088987502280d4e288c52265 GIT binary patch literal 2080 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 G>3;*2ck1N; literal 0 HcmV?d00001 diff --git a/master/inherit_graph_132.map b/master/inherit_graph_132.map new file mode 100644 index 0000000000..b25961b333 --- /dev/null +++ b/master/inherit_graph_132.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_132.md5 b/master/inherit_graph_132.md5 new file mode 100644 index 0000000000..fafa4a30db --- /dev/null +++ b/master/inherit_graph_132.md5 @@ -0,0 +1 @@ +3d841f1bb2080fd71102397a08c24a36 \ No newline at end of file diff --git a/master/inherit_graph_132.png b/master/inherit_graph_132.png new file mode 100644 index 0000000000000000000000000000000000000000..9e023e7c64a4462a3123890cfe22f754a6444c82 GIT binary patch literal 1893 zcmV-r2b%baP)dZHWEvL%JOqHstDkLN%*v!e- zd@_hEWb?^L#&2o9$jC^PmX=B_W6m*~%}7Z}fv2Y@1VMlx2$(;AzSOd2jo;FI ze=Bu$b!cj8g3)LMNi;V%OD$1R!oIm5L;(QmI%{QX;NDckUcRLPG40N%HpX+YAp6 z=lAd584wUay;>?8RhgG#aL+ zri$Z<=8K7mVO(4sySuyD)zw9{TFtn)IIB9gw3D`bZ4a~A%=-Fz?%lhWo}QkJii)C6 zr{mz@phN4&m=p8m=jV&#fq?-6pwVdLhYueJfbH$=HrG00zJH^;yPH8lLHzOK2TAht z=g(ZabSb}m`!-IaR;#trJuxhAQmMqizyOMii*fw;@n1TQpPBU=4uwL2(a}+KbadDj;Ph(}EEWq&OH0w#)&`Q| zcK`l;T)K2=++0Brtk(Y=>+9=7VqzjrojQfy-dJ>6FG7uOT2#rPqrBaF3)>bq$G$1uK6+S*b)6#E?SvOyB za4@!R-HMcy6uf@@8bd=vC@CpHU0odjARr(BFJ8PD*QAM@KYw2QlusPj*VhC1zbSqu zIyxG9y&ihK-eIjKlL;1!1>WA?aCLP>Q&STP3k$90rKP1IFE0;Io;<;U0|)HZ3kwTF zZf-8Ry1GzOQUZg)V0AWj6s1y$=;&x@G#d2w_QGH=AU!=Dv9YlT2ncXUyCc0WD=UM^ zWI}CiE!x}Lar*RWD3!`-Y5q6np)iVYh!OzE+ULZLujULFz?6XE6Mg^Y|0?A*E2YTk|= zJK*Hx1hrZ{?n7Y@CnqOt+_(`}uUauVltVemhi_Qf9=XhhHO3=$&k$_ zBN?*!WF*7x4M$Z~)m-Y3`9qoPy+FI>v-iK2GBPuTK+3<*CnE{+@AJt>hipC>$&k$_ fBN?*!WF+H%-4OxumgEH400000NkvXXu0mjfg!Gf~ literal 0 HcmV?d00001 diff --git a/master/inherit_graph_133.map b/master/inherit_graph_133.map new file mode 100644 index 0000000000..59f6c5449e --- /dev/null +++ b/master/inherit_graph_133.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_133.md5 b/master/inherit_graph_133.md5 new file mode 100644 index 0000000000..0119f828c1 --- /dev/null +++ b/master/inherit_graph_133.md5 @@ -0,0 +1 @@ +2c99a8041d834c0ab325224c3b61a7fe \ No newline at end of file diff --git a/master/inherit_graph_133.png b/master/inherit_graph_133.png new file mode 100644 index 0000000000000000000000000000000000000000..4c7dedfc8f7d4ef8edada5a875e40da0b246adfb GIT binary patch literal 2446 zcmY*bc{o&i7#`bLX3$6sicFR<7e#K=jERh0Vw&tGF(R^zB@9wrB763my++qs?xjZA zT_($=$(AsL#FQBOFmz9U-RC~%Iq&a0=Q-zh-uL~!?|n{^jkT$$h^z<*1QInj!{LE- z2so96zyN+Gw!8rru)C!x4)o*aQQGn>3j`82GRGMb!V6cXBh9X^DhRIaI9k@<{ypAR z{fnI~t~^I)xlR&w%iU1}99v#sA+bhP1xBw}(KZBTKt>+ZI+P#xss>+9=#Pg@S9;P6BZ=a=y8{k^@p*^amaDLy)RR!{6w*%9}8`2No7 z1M6pB^EMt2=LJ(wL&MiMj}=)zC@egF`@;*Kf`S6R6KV3mjbH5R3^emjX=#y5yOwh< zm4RSoPoD5Svo5+sph{`1lKf5BQ0TB}e)5%AK_%qCu zY*0D7TeYbvDbR2Vh1KYM^(tSPP2%1jC5~2IRrSJmTr;uT{q__M2Ds%=?;amo8hHJD@S@vTjU(mYy#JJ*OKViY%$TqYdF10q3k&Ka7gtyFXTvZU z<2}{#*7vCLq38#sQ#S4ylkH8mw=WX#9wT<7;Y3-8?n;gOQy z&)NkkbMy0}eW~3JuCABk1jQ>JJ{0i@2zb`lXYnvOdHAbfu*ax=!r-8FRZWeOs;Vl! zk`N^acuyb_2Lq}{eRvH3ML5#k=9cDW_AdA5 zot6Yx0rgg`wX?+ae0iwm>gr0cvorA>ucO}RN?=Si1*@Gso0ZPM-&`-F4Lwplf4*SG z-^T|5ddl$rqqVgdWOMm)D&uvo(v<*NSy^xHE_-vHE{;I>+`j#^-h+;Jc79Auv7o*` z`MuavpGu`N`f`5ZtSl{gJNWbeHwbb4((U*buqn|Hw=! zJ0rvGor#eV-}Q=7A9E!M_PG1y^^hI*ys3z=up+1-Y?WBe`rWb^8@Wgh4gLJ%PGBGi z)bQ%nle#*wIIw8vZ^B3SSOhRIfu(lUH@v(A)8@|vEtmoQ3-%f;WS|G9r>9H(hqQAn z;$_a>Y-ccF$LWS;HU>`^Yx_^i%Wd%Z*efMiLn_`7DTz>0`fa8pKR+=$TM`q#1_GM* zv2K8gv2i?;jtai39}p7LOVUpE$Tm|#qEMaNE0dq*=i?F+g)mXOHqTot>sc~!cGcZL zmCEd@VKCSYTW)R&Acd|)dV2(CYP#Y1oY=w(qBS+KAyPldk3YX|Yj5wxXnHg3(?|LSm!^E5~AOI;`utE{YCVzK7Z3oeABNZK+%!NEY_@HDxk zb;Jp7?3<>_#@9N(nmat$r%|?0I0VeD)=2;$5WT-Wp#yvUmr_qg#t~qsJ^@IR0!#@6=!+qY(VXteXRcm;QR zfgBcQ8W?y6fk3Q%n>ZWASr>40bkvJE#DLre^0mS@mok~NJ0$;((wZ7*`;htcG{BC% z%l5$B<$joRn4Fv}8(yAWSl~ya(NoP4M*%CqbYo*aNZFLnJs>L{tG z%x!%gf7{m=>r{J=Cg)WB3J&B@z1NU@b2yu~sHo_jPh->xUl@$VVg>GP-U^S1V1EX} zU5`A+kBvD@0fP10R8!W>_)qQ92oVTG3)ps-!}-+pKs+!kj1EMXVqQO+%L#61Z2UA> zgcgE8x^`A)cpT2z1D*Sh$xM6y9zQZNauSP`$5)Q9d|%<()UQcPO12LVALZfU$*`c( zB6l>oTrLQNzVod;9wI$EJL?uC&|Nq%V8t&WAd@{gG0`zIGgIa1D=sdsq^zun!5l|q z3QfNB>-y8PADRY%K;jHe-YY37>8L8v;=K<_meT0#%~IV``CWsOOzwyk2)uL0#Kz`G zg1AE3$Ou7FTDptDV9W(SrBc}nkAda^l9Z!0T5#Xic)B7gg!HBhWSIrp`(;F!4C zKnxHm8Oh0zW5 + + diff --git a/master/inherit_graph_134.md5 b/master/inherit_graph_134.md5 new file mode 100644 index 0000000000..1dfb6e527d --- /dev/null +++ b/master/inherit_graph_134.md5 @@ -0,0 +1 @@ +5459ffb72d408fb3d80b2eac4b6645ea \ No newline at end of file diff --git a/master/inherit_graph_134.png b/master/inherit_graph_134.png new file mode 100644 index 0000000000000000000000000000000000000000..6e947a2e5be8b4c0afa77fa554b25e256c484910 GIT binary patch literal 2783 zcmYjTcRXC%7CsjlT}bpEhMTL78YPUIAj*X3LqrfEN+J?wlp#S#LbRw8ozct04TB-L zdX%_&uY+6?Z7`W3cqi|@`+jeq-`RVe{l_|MueHDLTd!}K-C$=CWB~wx-PlOq5?sf? zSCxqloI|PMgWv*jHNBw^oc(Jr)Jsz^ou)pYBd02~h zUzv=>yyIs7MM+Se&cPrl&<0wd8WFMAE-4MQEG&4<$ivlau#{R_dMSo4@G(QFwC%ZB z2~j;O3l<0B8DH{2D`A!hue=jQYo5VolY(-tYR_X&3i#tmKzJTKWF8_8QM^p!tPOvA z{&%6D#8SH53S4aFmLtxUl0?}(9oh?yMEm~S9fd4nCscE57v$)^E}?LJiAIO zzL{x@L{25d+uPgoM`vrJKQHiVMr>|w;&4!66?K+oYNuN`oROQ`irR8$blmPWmX(o# zUU-d=emaGV#GXPIS3f1AcNTQKC*-7)HBsNDX6t=Bjuh{<;EIak1XQ|5M^!X6Y2apm zntVlBnf(WM_Gp*<{Cszkn}-J@1mfUC4?LPDuC1*FtaQF!UtcdSmR=ddVzDY7pZ(G3 z)+cK*_DWh>f*mkOq>}qUMrEa3DR2MaV77)|fhR+e<;Lpj!S=j%ffP%W>oH~P^z_u& z*jSjuV`HSKm83?cc}zO=;P18;7ZuTtk3#|j^>5tB#HwCyW9H`J!Hy?Na56PGZYTe0 z-V%D8mYUk-{vpm#GM-dZQ{&>|!V-0@V!UsS>^)h%tf3pQITjH?XLUFKRz`X{BmVo& zq8KNqb5IYFy97lXP@+I$oYv zl$Vb>tgypF03+zz>S~4K;D>3LG?C?(#S;^@$i>OY9yetnLBTN3?$+4*FGA$=+XDW{;2 zqkKOmGgBzq#naPMFb*?>&Zc2n2QTf+r{6gYhp_EiF0c-$Ejh z8JU@~Nk&=O*)Au&Ns^#DNAQsL_MhC8)8%h>f7wTG%^2t~R|cJ!{x~@iU^5H}(e{&q z>F`7{G)al2_s7M@n;{Sw8o3CpTYtZ-tSmi1rBYQ@RWr!XnKq&eo129JPGMmmFJ4j6 zg{hz8!7T96$yZg-UM?**)-)g>z|4$e?~#c~UpPIZC_D@iOsDM9&VWS}Tb7Z@k+a*NMz4zCr#_3Gy=&3iLm;-?UZ0eRyvn0Qk!QEz{!I&@qN5_w5UX?T7 zA(ytcbbO}X8z)PDa{B{*kbFa?p}eY!hb2mmmlepft+sT{b zvNgy7_YWXe3?zml8P7X^oDZ#$q##SV%u{5#Dy&TauFrwLK@m#kIV? z4mrR1Xs$u&eqYMMf|Hn7Zg;ogl+Wo88jj^%dXAM^fE))haLE2TdzsY)fU>AdG_=pZ1pwvcfLToy@b^2mTXBPEHP}JL4Pv)6>%k>3y)KICUYmXs{HivUbF#rk7Ds zpVppK*_zIbupL9ie*3;XPY;w@%kEY2Tsb za;e=-xybUjgr1Otzmu?vgaAjF+9lt`mczqCH6dD8>`$D6>}gq+GW2C~auSZA!ZbCf zJ32a0oR!15tCFeLT=-Gs)lWZu{MeeUmrd>4-hLEyEeVSaI^49;%@q?BRY*0NotYW) z3h?qOH-eJ)_AbR67qS11U+Q}o_Bw{`O@YfnbWvTMnzVFrK>;YPoBmpjjte6r65K3< zn3^h5-{4?XW#zZcO|8J)Ji|h+SWu8xzkK<6cmzVd$g&Z=`3tPU1WGAQCS*M6`m)t8WBUPLq!b z;?-^RNXw}AaeCs<8JV7Oz%-<6UbS9K!7$D6-)g7RZ!N>)(LZnx*8bak{jUp4^wCI@ zvtJ3+=8R0twbg~gTN@fQh=||Wd{$Og23j2NX&fn^)=^+e*y6ea+Ux9 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_135.map b/master/inherit_graph_135.map new file mode 100644 index 0000000000..c518d948ec --- /dev/null +++ b/master/inherit_graph_135.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_135.md5 b/master/inherit_graph_135.md5 new file mode 100644 index 0000000000..e8d229c060 --- /dev/null +++ b/master/inherit_graph_135.md5 @@ -0,0 +1 @@ +7d552e036286e44ccc0ffab657bd9c37 \ No newline at end of file diff --git a/master/inherit_graph_135.png b/master/inherit_graph_135.png new file mode 100644 index 0000000000000000000000000000000000000000..f0b02cca751d80778350d98e2fd00c448bd0e685 GIT binary patch literal 3496 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 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_136.map b/master/inherit_graph_136.map new file mode 100644 index 0000000000..b2b37cdafc --- /dev/null +++ b/master/inherit_graph_136.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_136.md5 b/master/inherit_graph_136.md5 new file mode 100644 index 0000000000..aeb582eb9c --- /dev/null +++ b/master/inherit_graph_136.md5 @@ -0,0 +1 @@ +e52caf714225451ac2d5f7137e5045f6 \ No newline at end of file diff --git a/master/inherit_graph_136.png b/master/inherit_graph_136.png new file mode 100644 index 0000000000000000000000000000000000000000..c3b6e2bd9778bf717f7c7be954dc55a84d5fd032 GIT binary patch literal 2195 zcmV;E2yFL>P)PKuy{fLb%HqqSNTu@M8 ztx!lzAtE9oD=SNv{Ac_r6pEUf8jFWSVk$D3thu=vn`5hAsJgn^Qt^;1j6;VG;d02& zKVn1bM{G#_h>fN7V=|dyvDm_mu42gXw=7ufFux_M@Q3W zw5?mWHa0e*`Qzi`JRZ--$7lWe_37#9larGP2?=d&ZO4xvhaiZ_Wa6%K?bF(}6fBrn3PESiq^YHLEeE9HEdJX=aKj*6W`}c1ik4LA| zot&K5Y&I?=Q$aA?zkeT>V~`y?c6fPtwY0QMPEPXqd{+0$d1PKidEh{V2)eR317l}mZ@ztwWeSLlPj}ZhpaNxk5J9iKS;q&>KnVHz8 zH*Vbc=FOYg*;)N0%IxfHdwaW|pWnTE_Yee`n3$l^Xs=(tM$cwvXUE3IqQ^r+Lqef2 zI5^nZ**QHu{ne{iXh)XbYiu{?s>tPXSu9p>Z?8(F%FfOX4i466G{*0Ie0+R-d^|R1 zk^1H5=cC7?qoV)-rBaDLK61GnSJ;Stb1^tL=;`S>Gc$uA$jHcuySw|;)ReAibYK}w zVks;vJaXg+dVKQa$)uzt1VN^!r(IlJYHMrJ{N&_h000cb6B85W?KMt6{fY{O0st^L zIEdzJG#VO>*4f!gtLfI5;=}0Mu%Ae}BJ?jg7Cb@8T|qMIwsR!_LhYAv|6oLEbi{^);(g+o;@omDbW>xAP8Gtm;CYK21K?CdOhDj*;rJUqO-yu7HW2!`P`Yu2FoZfj40pHf`$c?9|;#EC$yvPoF*o00aaC=!)&$y}PTctE;QacmQg(TC3HrTer^6&Q2zi z357!J*^G>gyu7@(Z{HeR)^FdwT_6w)3=D`wB85VM9qxnwn~D zZRK*gfByV2v0WYJe1Eum_ikWdU`$L5gTZKPYm17C0sx#nd-lnbCk_q{`s+`F6c-n> zSS)Ogot<5Dbo9J065ih4d3kw>iHS5CEh{T4E-nsxmdoW*D3qwEDC{a12Zch}w{KrX zMa8*u=S&F|#bB>Zp|Y~l-`}6bV!67yW@cu>Fl=vcZ+g4`2RnXET)z;J>FH@_XJ@HY zYVAOlgxS_F!~#K(n>TMdI5-?Uc+lFhm>C29?doIg+OAkZu~=+lV}mP`l9FO?Zyy&Iw`I$g%a+2B&`TO_p!-o$m zDk`K>sqR#1Y3Y?KSH{N15R9`SlgV&bIC}JGdwcui$B+B^`a(lPU%YsMD{$=CF}Ym+ z^5x5cfdPMie=e7+)oO8NbUUl)46h&Owr$&lLZMQrym8}3Pft%!P|&VjyGlw*#>U2$ zdJ9Yk`!a9&{g;@S7rhBR4m0 z>%YJAc)aV^uj`Vi4OCN8vv==aM@PrP!osSmD&1M^JT{jzrSo*=+Nwsqo8jSM7Z(@f zv2EVG*~mM|hYugbVzE>zb#!!0N=oYJ=wL7y#xH1gR?7NChjAMS%UsUXyq=D^yc>x` zqE@SGYis3l`K3#jEH55df$JCJHV_sg&eXh~j#<2${QUgew{J&AMlQ6X8G#VYHwGR& zcz`YztQZi95zyZsVSgaD;>I7zf*|!HHl%*UhSZPPkoplDQa@rt>PKu0?4RlX$pOg< zK_-*oHY@%af1aM6@$vDN4T)p{FqzDVhzM*BMDDf_8uIgx*pT`W8&W@FL+VFt{s;F& V@| + + diff --git a/master/inherit_graph_137.md5 b/master/inherit_graph_137.md5 new file mode 100644 index 0000000000..16b85bc012 --- /dev/null +++ b/master/inherit_graph_137.md5 @@ -0,0 +1 @@ +7dd65661fe26219adc5df29694da205a \ No newline at end of file diff --git a/master/inherit_graph_137.png b/master/inherit_graph_137.png new file mode 100644 index 0000000000000000000000000000000000000000..88e80723c717ac19f80c70d6e296e46ff2644210 GIT binary patch literal 3607 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 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_138.map b/master/inherit_graph_138.map new file mode 100644 index 0000000000..510f52051c --- /dev/null +++ b/master/inherit_graph_138.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_138.md5 b/master/inherit_graph_138.md5 new file mode 100644 index 0000000000..348dc7c9e3 --- /dev/null +++ b/master/inherit_graph_138.md5 @@ -0,0 +1 @@ +b9c36740ff43d7f284700e80853beca9 \ No newline at end of file diff --git a/master/inherit_graph_138.png b/master/inherit_graph_138.png new file mode 100644 index 0000000000000000000000000000000000000000..6b745573e183be2cce0d52c0f7fdadf237bd2038 GIT binary patch literal 2486 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 A0RR91 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_139.map b/master/inherit_graph_139.map new file mode 100644 index 0000000000..52ef5e0449 --- /dev/null +++ b/master/inherit_graph_139.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_139.md5 b/master/inherit_graph_139.md5 new file mode 100644 index 0000000000..54c3b96cc1 --- /dev/null +++ b/master/inherit_graph_139.md5 @@ -0,0 +1 @@ +f38fec1284aace541944ab3fac31ee3e \ No newline at end of file diff --git a/master/inherit_graph_139.png b/master/inherit_graph_139.png new file mode 100644 index 0000000000000000000000000000000000000000..0824658ce08cf6328d42b851565141bf974422e4 GIT binary patch literal 3532 zcmX|E2RM}RA3vMR-s2RKm5j5)S?4H`RW{wB#6=`zrR*~=BGIx{)*;L?p|MNcg{+{=}_rA~f-p}}ce(~mJMl4W4CwI=;@~1?fE#Dv!-#hJRU*`+iha!cogY+SaRRbpBA>qmNTrr zOfRX*N^Fi#YVod{mrzz!#q_+?PL7Lq<+X5dc$Zli=$`h~P2GP!)rorQSs3ZJU*2IK zkzk53&Vs>a_m7X(@agGp3Ms@}(-lJhFQ<66jhBZfnm~XX#Wtf|Z{`oHzn^p7kGSZF zJ%9au)A8SsmG5Ou#9#?Y{^ zjX@iiH$_DZD=RC(imStwG*@;0Dr;$L`>y}ei@eRm!~}k6W@ctvcUKe&g(@t3k&%{e zesa#FdU0iO@o_@JDLLo*V!l8lBZdz?Ka*2a*|8%8Iz2tT;Rj$#g5`~lGY_vM@LqriUqNm! zSM~I({R}lgBI)Sp(w{yp;G3?0urm2gcBA7jm8y~Y%*9ToXK~24!9n+m z_vbK5Mh_qAT(GT(@E-qUh(sC~7;N_%u=TaJMqN(?9S8d^6)tQZ%)PR*wB!tt#T$D} zwgq%k74c+w8JRCHwL^MGM{xk|`i*uW4-bzUjW{y8%UAij&DE=H5D_UUM&=e! zNnKOZ)!(1Hp`n3y$mhZULXVx1*8JVz{OYPIEMnl{DZRYD*YDpm3kwU2i0$r-`7};0 zl{bFBn2F|Z*bFRk`Wz}CEiE0i*086bpa4liMNUm&imhdKa{wD)VtB@*y)~mtmzeqo z1|}C5J7;@dX!4DHxYP3S-rU{InM*)D;*ydEQrwt1$_uM-C2~@pN>o%-)7P&|01|sw z6w>|-%t2`dbBdJ}rLRw|>NAnpcycTRjiv^aD=sf*fY8#@PyIRAviB*LE0kc2WjjNE z*N8T-%J28(>YAE2rKRL4+ozY$DGRdH*Vi{qZ}fiq76n>t*n%r5Rfg<&{{gg>$Q0t0 zcTUXB72Dp~c~f1@4bQr==IJFp+uk?&>3g|L3IN$ZAOM5GP?O1I_Jp>&2V1l0Q&qG? z*|5-~m0DYZ8xzLWRg@e0PwB0#tq{mW=$7f9!=>`Ofq`llg;b)gWego1bDS@xbhIoE zzALq-=U}8AZU|Acw6tuR+rnpOCjjL+uW41)M}+WZtL&)UnYBHa5P;=kp4=a9^tA6}9DLESJySwe5!;Y#Y=wY*ytvAnI zF6i$Q{ZVz-B`-j?z!JSROJ3jJZk=jNpn}}Lf1i<+mA*wm{oZV1*NmUW=-8O=(e9o4d3gp7bQ_K*AgRM**bwVAROW8;cCI@svcM#B3W)yt zpd!!tCvV^b?rnGjvs&5gFKtc?DZN4MvDTS-Nnh7AgfmHj<4Q_%cp-p)5V{U9nCrja{%;u3xkogwdH zrsgw|-_)cFbn3b#;i|j~tXeErGx^E#G8W3pDj_c~Z(r*zytBJY*pUK;MWIMM($$@q znAjfmD(?gCoU}XeB)nmZqFL=ZD6_e~{(5oIGvSBI>@$lcEEgBoFfmY`Kc?@K%}52B zh8s#}@8IA&+buwHgXb3(QbSlzYsHaB#@5!>5pjUzw7)0~>>QK3D`WeUv1iQf?BYSS zG8iUmHQG#^UxpZc9r`qIly}JiZz6 z5bNz7lbtOT7Z*l)m5~usRwkFD?n@mO7RGq$RHUtJ3@VQb0$Ru|D4^3h`J)sZ9Lz2t z5I^0KBD7L;?(b-=&l$ww{MkQ8YmLTcW*?5p)x77^HQa$^>U2feE9R~u?xlZqLoF%a zVt~gMtO!;uLNdm(ub?TLuB8p6{%`?;qp4)TiQvxOo{^oMz$YTn!r7S>Vq0;8%36l! z@bGYW>-b>qj4E4it(YB#0e;Jckndz=>*@oK*62#9QN3VtH7u7X#Mw&A2~VWX=!L^Qop*9C=`^VBaE7chHBmcFI!2IRV8oNUnY%p z_krI!sQg~2G8k@mgs@L&;k{o)ASfs*KEmOk5M5JK7A-BU3jYO5Bnl-aC1vbIzC46; zix(zw9zFROV2U;gN&9a%r6>L63y($nch6s4)i?O@nF6zFiVCk|$8j_S0!P7?%AcRsr&n2`~|a)YWBh^QHutgDazDhPE5nE{X2z3?#rWs@M1CC<4p1mHgcwwZF8qEUeW2 zES#VB_$MGRtxFqF{hnQc_aBwagAii97Nmi!KHN3t+)W;Rsm%Z{&F)gTooH+PhL;~!2ZCntVE!7nEA z4N-h9p&XKCISRvt1w!?JDy4q-8pVr2iW~=If85tDBf9~8lQcsVXHv2%F zK_=p68V!;U@ro@TN&QGSVxZ`%P-1gGi?f8G#@Famd4+hb8~AN8yj2vJPeI3uOjm@7=y^d$;IUh(r#j6qV5}WU74r<5{ej}bb~p= zdmW6b$7zyRF<2}!2!PVS?OQRG&FUa{y|I?Du(62+#!!E9d=zYhibb~tmYMdxNa7sN z!UGLhfCRw7!NSaJ?&k*w*Z9UpojX73@MX>ooiBg(_UeLpHZwK#g|dh^nBjV^87Q|A zq=m!base?24*;TO?A + + diff --git a/master/inherit_graph_14.md5 b/master/inherit_graph_14.md5 new file mode 100644 index 0000000000..587240c09b --- /dev/null +++ b/master/inherit_graph_14.md5 @@ -0,0 +1 @@ +adf47783034f6436bfa18e3c8f7afea1 \ No newline at end of file diff --git a/master/inherit_graph_14.png b/master/inherit_graph_14.png new file mode 100644 index 0000000000000000000000000000000000000000..9723d22cc81e5ea69357e20d19eb0ed33322182a GIT binary patch literal 2783 zcmYLL3pkT)A0O{XE3#S06fHF8QzK%c%{ewLO~~dnOcBabmcuJUsyVOaTn-r#)mzS) zUWZ~TbI2h|MQG%d9KNUTy1wgsp6hw;>$-w_E>;7{dIP5^_rw}TB9wEgETXe>ebHPxI{lh$NOkV@SbvSRZsB1dj(DH$jTo z6)3Xe;P_j%mXKhf@zm7R*PdJs>NH9#`L7*PU@(~c>^cscU_~I2j?QZkNQwyw36KO) zFYjWn@`3_#!%|^2UK-q|UMOI~@5h8;AufM{s#jxef@!o9(%4GZ?c#f_t*wKDB=Pu~ z&?*7ah{4Wq+X4T83C=4?l`?CwnasZ!^BadGjL z*`f5@+|;77=H~4|4U^cLLtIl+v(ojLiyt07wLmv9FEuljZZQ7Ny z6BI+#XwP;Ol)F{*`%|euMxGmLYSI*6I5;};+_jG$l?U;MhD@T@BS?j{wc*2cf$OEP z?YFu14<;ArP$+b6Zq5gp_5R}=%^SP4ylj4XmW0Pk$G7Gfhm6%yd&yTKBO|S>L=)RC zhK4dzQr-m|K_%Fz&ma(xW(tX0pDnb#8BNXBT_<6xb95QxY4VKbQ`ry}{H65|~do=`XdB8jh zT$!DbQ5UrwWSX0opC97r?&URJY;(Kn?33hHvX@?0NJB+ zjRrM^SY&xcg{HRl=E@xB*|SJr-}|l=s;~_rq#j-0+Sm!gYh-#gGsHme z`}?Pff+Xg;BxS^w4yl464ATd}L%~YvWgZQQ6tb%a<HU^Z=MN4BP^mT>4ND?Ed!cSxvJKTw zo``_}f})L$-QC^8pO3JNf`fuYLDfUSU`uIm&C{n_%iqrc42-=qI~$x}Wm()O4Zau_ z78Dp5>vhlvm1%$M*fB0G-d+O^K_C!PiGPIvlCf*oL}kzW+0UP`{M;HSI{*nf?(eS_ zr(9K46*Arwz4WbbcBq!}yuQ9(eK_jM6-rSY#imH;%^T5C$vrMmXvG_nPCcr!s^G5T`Kz54(~s3-~zYFwW9Iz-0;`l{F*LR zRn@^+KyN+_4D5JRgWkGl63*D(N*y&aGMY)b6dsOHRNPpZLo_5DppPcjtwZw_-(%X3r(_B&_?&R!{rPbNlIXyG8zP|jOb;yP+rjuPC zHr3U5b@g&Y#1SJSpeTu6lDfLOn0zHArSak6hj&+gp-xB&Yk z>zj-_NC(D0Pfcl`twX7(@VdJzii(gZR0r<{P{w0pV-yNSOO^)Qq`toXU=0)F=H>=W zt-%yh)ubgpn)H;PDt#Y>=Dd+j!UEOFn*jtm)w*pe42NW4k@_e%jm)>xOYJFgKj~&h zoLmkkB^vzIez(tuT#Ah^ADg&GiLt&^URgN@q@DOAQ+@bVd%No4!}Tv-j5S5qmz8x4 z4Y7}_?w82WM^Tn%`lY0#fZc2T-*k0!{1f>juV?-PQOLR+wm;yMJa1rNRZ!_JQ`xQ; zqaI#xQosGb9ZtT3Uy}2lc>46oI!G}k%m$lQx`NN?`Ft4*>42|UIZ4?7ShVNo{e9zx zQ=RqpnWR=SmsC^4=;Ye+f! zkixZ0ZzPf>VJQu?8fRzcHCd%BUAM;o(l}*lJ@)HgKfhXB-%`w~AU*^%#*qD5Y?rJ@ z10DK%A;!Ac&e3s6C=3k^l}^Iyof7G?b8n|DK`VSyl0^RgZvr98XAn27V&lyhu zR-OOww1&hTs-*(8wZ9~)CCJXsE;csSQSDuC?~gYe zka0d=IlXgnak09qm96ru&vGiI`uk62Ut9--D%HB!wW3hh zJBgw_PPJm1&h5>^vPm z$SGa7?rV3tp*E6DviBoBaT(a*&BX}NIXIla2IATx~KrN1<%~rNE(lzoN0ePI2edGFgQs6+yR}G z*#`+X#Fcy@NGmFO;PD?PCJw@qz@nB>QR`TmZy)IbHXGd8l%kt~#4wj;2Xuz!f h-vOd*?kkIJi%k6M;6QM?g998Z$PVX(t+FD={Rb2dGkE|2 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_140.map b/master/inherit_graph_140.map new file mode 100644 index 0000000000..b2b37cdafc --- /dev/null +++ b/master/inherit_graph_140.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_140.md5 b/master/inherit_graph_140.md5 new file mode 100644 index 0000000000..b504c95a25 --- /dev/null +++ b/master/inherit_graph_140.md5 @@ -0,0 +1 @@ +d22d462fd0d5de33593a8d312b9c7eaa \ No newline at end of file diff --git a/master/inherit_graph_140.png b/master/inherit_graph_140.png new file mode 100644 index 0000000000000000000000000000000000000000..c09a431d75511981fc0134abe72e4427d78967e2 GIT binary patch literal 2610 zcmY+G2{e@L`^O)<=#>{CvdfmGMy5nUlXdJ{DvQ87mYnjMCmaJn4 zSw@D0tjSWgvC9^I&-*|BbAIP{J?FXa^PF>^>s;sgey`7UW6e$V|Kbqh007`GLj#y4 zxTk~fHFidDJ^O-g1#Ya)#`-Ye^xx+na$za}ocU!4(?LATqGx%+c})afAUS<4irC-1 zBt9A!`imovo8hh`j7g2fibY4te2|$ToqaRomEMrty@+P40IE&W07%|v!shX;+eV37 z3^FTpewegStjqIg`kr)L^_Iw97Xz+#KioK?I0TCw4QAM$>+GZ-W3*x1P3eIREn#s2f4aRD=U}h<~r@I zO>r}`u(G12WHmH0O$%2t7=YT^+Qh^}>+(m*2GU};!#dvnMBfmGKB=s$Q&CYFEr#IX z?2+uuk%fh_IO<(XmxF_Y>FMc35!;6km6VhyVaKm_3mO^@zL8wk*49Gy)-I*?Ow{@0 z7*@2cQ*!3iE{ckpnwbTHfkrz*@V3eqIO22j@^p>!aOsz=8ygzPLEG-GuF=$m6a(o5 zJ*IXv0)arI(SCm0t*t-~t)jdfgk+PpfAJ(GM^YdMNeYdKSwAYD!&75)@6U|Tn`%xJq3j-aP;)#1k4rE>2x|jKmRo$ui)z)mNqtW zsXe8orQ+)H&yB@gPx%$Q4|h-u&l*r;fCr7*B$xQwd2{L=O>8b^$-IQJwu zL;#qXo!vS)4)K>GE!t5gDdA$k%)&xUaZGe{=>7&++&Ny2e-H|4LZAN}Y?qam!Xz#1 z?L~j1z~6GP{mX$IObmQLaqi?0O_EJFVquJc%e0&BE$xoK#(>p6fi@9|ZvOr?EiHsj z=i@&IL)uMp)d$Du?Vlz-KIO99V!xz^XV87S!Njop-0b8_9;5QR3P)zNX&cNNw>all7aQ5`^`W zMAbU(F_X#A=-Js>(E3*e&+=gXXIdGcnOFak@RaM=lcgMe} z-Hi)kXx~_%;=ogNUK76ypX1$j=6z1Je)eat%*>#V51;xkY>jT@yv(tD|7S>9Fz&Qt z{a4!J+8Rc@h(b9v({Sc~_NPx+>Qe=g7}M#TY*4_$$$v#K{ueDrn8t4ewiB}s2$G_X z@83^nJLB}!6mV3NRHZMSFE=NegQ~N$?Oa^)5elEXySw}Qp#&vGQ&ZE}b7J>PhGi=6 zArNWl>APUd0NSAa!LRbEzP`S%UlC<~;nkgr9cJrLBQrA^PQ?MDs%mFv2YUXx*Eqt; zDr#}jq&^-8$Lnpye0B$^2a0cJ9TE}}xHf4hnVglK&CAQ1Jmm^#TU!gH_DJ(!?d|RF z-Md$GQXnr1%_Il!E*BIOjE~z!Xq%gxJ32Y#5>wOCT)n)=Pgh1R8E0gv`@JhG^SYU@ z$@S@NxHOMPPs*i2vmAab%*Dm!oAKu6CI}ccH8mb=2aUGAIoAceh>ngP85xl^BN!0B zfC`ap6chBK76k+ZkVqs5L0M_(j;^luE1IO1goMvy)yV3qDoku_ZS#1`^CsQg$0$_r z(eE<2Ok7fu{yd39f;Yxtcq2vsc$ zXtn$2x22_uf|%n!f0Q591MOF;sEWx3ukUwbP)KBJuNS$H#dnIEPMtf}Z$t2*OJ6Pltur%@hK7c4 zINZ)oBtm<@r2d~CzEY4MB0ZTaG7gQ6jWPplfHrqpYAUa&C?P8=UZL9+Vr*=D?%cV8 zSAY7ct`MT7y3e%cSB~Y04tt5pu_pkKQnaQJE>3k!>zn_ECYKvMu6 zghig^dyM}OcYJNw(&FOF`1sP25@A6>b2+|HEee@@OI%#r=c8M34>-ef_}W8qjz2?-WW!MMYT|eSdS#stO_x&UPbWRdI1~ zZSC&Y_g2+{nvTu8oOt+josU>jSN`B*5Pysj+H!o}ll6bcr=syFNGJF6o7sevlt^U= z191NQd9Ye7Ev>MyFjvThTUj<17FRVj;rWAa;O@G*AJa5z%CKV zKlVDYkV{)!d_2?`t;)j4#1s`7S;@ox-Rr97#$L|UIGEbyQZ*m IUB}4(0K9Dsz5oCK literal 0 HcmV?d00001 diff --git a/master/inherit_graph_141.map b/master/inherit_graph_141.map new file mode 100644 index 0000000000..4063a1b91e --- /dev/null +++ b/master/inherit_graph_141.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_141.md5 b/master/inherit_graph_141.md5 new file mode 100644 index 0000000000..dbc7c41010 --- /dev/null +++ b/master/inherit_graph_141.md5 @@ -0,0 +1 @@ +0cb2d169e3a40544ce0e008bd13e1bb9 \ No newline at end of file diff --git a/master/inherit_graph_141.png b/master/inherit_graph_141.png new file mode 100644 index 0000000000000000000000000000000000000000..76597de9a06854a76dae56e4e076c7904d6b2133 GIT binary patch literal 2856 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 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_142.map b/master/inherit_graph_142.map new file mode 100644 index 0000000000..03209d865c --- /dev/null +++ b/master/inherit_graph_142.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_142.md5 b/master/inherit_graph_142.md5 new file mode 100644 index 0000000000..0607b1a46a --- /dev/null +++ b/master/inherit_graph_142.md5 @@ -0,0 +1 @@ +4cf6c2d5f87b1d8537bbf543e7f6e4f0 \ No newline at end of file diff --git a/master/inherit_graph_142.png b/master/inherit_graph_142.png new file mode 100644 index 0000000000000000000000000000000000000000..31a603f9f691c2b657a9dd07e3666bcbaa60da7e GIT binary patch literal 3673 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 O2)b!xZum?ejr$L&W&vRU literal 0 HcmV?d00001 diff --git a/master/inherit_graph_143.map b/master/inherit_graph_143.map new file mode 100644 index 0000000000..b2b37cdafc --- /dev/null +++ b/master/inherit_graph_143.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_143.md5 b/master/inherit_graph_143.md5 new file mode 100644 index 0000000000..7b54660da5 --- /dev/null +++ b/master/inherit_graph_143.md5 @@ -0,0 +1 @@ +3062e3a743bf5e9a06ad361f702fa510 \ No newline at end of file diff --git a/master/inherit_graph_143.png b/master/inherit_graph_143.png new file mode 100644 index 0000000000000000000000000000000000000000..ce807562e9866c1123f668d0d216408b608184fe GIT binary patch literal 2614 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 OATuLtM4h3>gZ}`O$rJbh literal 0 HcmV?d00001 diff --git a/master/inherit_graph_144.map b/master/inherit_graph_144.map new file mode 100644 index 0000000000..f2e8eb4cc6 --- /dev/null +++ b/master/inherit_graph_144.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_144.md5 b/master/inherit_graph_144.md5 new file mode 100644 index 0000000000..e8d6782ccc --- /dev/null +++ b/master/inherit_graph_144.md5 @@ -0,0 +1 @@ +00c25ffe4516c18b57524889e85b5876 \ No newline at end of file diff --git a/master/inherit_graph_144.png b/master/inherit_graph_144.png new file mode 100644 index 0000000000000000000000000000000000000000..12c68510006c26923efc82501511bd8ad12911d5 GIT binary patch literal 2650 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 C5drW3 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_145.map b/master/inherit_graph_145.map new file mode 100644 index 0000000000..025ca28c35 --- /dev/null +++ b/master/inherit_graph_145.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_145.md5 b/master/inherit_graph_145.md5 new file mode 100644 index 0000000000..5db84ec8f9 --- /dev/null +++ b/master/inherit_graph_145.md5 @@ -0,0 +1 @@ +c6909716f44356f6a85961fb5aa9d434 \ No newline at end of file diff --git a/master/inherit_graph_145.png b/master/inherit_graph_145.png new file mode 100644 index 0000000000000000000000000000000000000000..7285b80e42409ade80e5b1fb29f9068df35836cd GIT binary patch literal 3518 zcmYjUc|278_n%}RvNOh(+eE)fV_rC7ub6@A)d+z6R&ilO2IRr}!Lv~g;D+B^zH#S0Afw>!8 z`pk@ARDo^Af{D@9)DQ_dIX&OD6r_MR1B{Wnw;sP;9p*@P&kG!43qY5#Z9lbEtJce*>W1ilym2E9ej>YDJseM^PBt0YU?lTn)d;3o= zJ$$HgB^ce^);1UBXa*=woHJ}9YI)gH_-Y`9zg7uW6dJ{z z9=DWBP02b5y_1GvGvLQ5PpJniu(`Uqu@6^VK2^bwV2joHpWc_Lt(A{f?Ra^4N5B82 z&as_)4@lZvdagedMSRuzjYt&J_DQa&tgQTm5q=gQub?vN(DnlB4(nWKb(Q@S&dv&j zR(OqEoSUB?`!1{i1lZ$4G-cl39gQCUF5JmmVN_n?)B+d79*9dwN{Vw6Hg*PY%nsz4 zh96B&pC1?;LgyQ|-87|Ggx(~u|}PDYb4 zG8_AgWo>QkV7a)gZ(tzGzRrg_Rv&SKy>>#|_QPOWse=XVX*I6ucf=R;F0%JEc{8L{Xxn zTH4u}Fg{DD^!z5r9p4eSyL=liD40`Hg4o*GkxIC(k3{zO_g7<&LO+z1$)uVXgoK0y z9@9c3B!E3~-@TJ4-F$B)JHNQNP0oI@C&<9SU><6Q-1!l&IM9_ML%?5bST}_=MI!a}^`*E8g&#gV^G#1q*3DG)T}Wzb zY`h>N6E|F9s}D@^_v_bYq@z8d_4u(hGFe1&@kB75p?fhqqE~Excb5xdC6_uhJbWEe zn3L1$;w&y!DSP$mRm#_|NupZeMo45!OG|Yi)v7UgJu5B2*48%k(MlTC|6t?pvxJ2C zBx`GHS#j~Fc>LNF=|;SOV*b{aKM_k#6rqot^H*nQXJ^U!T(4QXBl-DpIqKn;A5?1B z$?Du3Jp?8qV<^&yPSwzI}V%v?WzECML%60m~gzZ5sl($Ohhxe}Y7Fa4Qu)ch-b!gX9!6y4Cs z2o8TRGT)uPxjW+QRWq+VsJK z43ADt1b@7EN>_Qnq6KaHt2PV<)4^i3f`ST*i+LWdEG=CCq2%D`IJ2~bfAtDJH#fIbV`^;N+KOY^B#TA3?5|CvB-Xih zu!1C`T6_5+L29E-rCyY?$R)MJvt-OE6*LB|oO+0et?iyfXOen4o=22w$^>NGzQb?-JS*#*gr1=x zQ(Idbr-(>`M(~Z@h9urWeX}%Qa{7#j5jsW7!$ZmQ?DSIrf6Z2a4WVyF%loq7CxShpnL#pHz5Sab+ z^z72|vYwR{H#ZND44+_UXXg)sOqPzDn`Cdcw(p+8P4EZ~hi?Elz5^%_7Z=A92v4u) zDv#~&PzRZzQ2m=Xx$w-FFJBIysBj~1Pz$o(kw{_~3}$I^U6OI*a? zYZ|ZBFm!+X@rRwa^sfZG^zJ&c=jDl6FGu7(V(b3?et{y1W>xlYcekmjgpXO2#d`%= z--i#SAVU)qU+T(AO2FOVARtsCkr;Tmb&u$jW624zD!N6R5)lyzKN=l{5s(s%A=}bi zT;AWS34k03`1>v{kplw*l#Y&=#>PfGrTpi_^O7l>%5X;(Vns#t!Drrl+GVbZQ`35Q z+CNp_u4|{^OE%bvINVuL&CvIEjyGoX)vjLkOf{F*9Wf}n<=X$wz;5+RazR~nH3Sm= zHP*O|$43ZWGB!br(!RMTuoUW6HQ+K~g+a9~SvFyglN^hqZ zm9j_9C~$Wwp^wvEWh(=iauetQN!r~5ENfYG>$#DXH9TOf@*c=@{dU)`sH%F^VEp|D zSgQ%%M@L6@(df9zNhbxW7T1GSZ9(Vqa~vGG`T2~=$;sgp?v=rgMWj;q!-exhV);sQ zisJS{kSC;<-)&raX$qIM-B41fN2}jsQe5tPFcU$8hMZ5Jsz_Kod7c z28Nl2#jMW&D~VZIqJOHY&bI7N4tiFF?t1d_@#O#rczb)>J#(r+{k61oALMWv&{QA1 zF8a~2DK;YmcJ1+o&U1D>_w`1Ub(-%QDxao&n}yU@%HEircR>c6NYG?zdq$=e*DVS08J2ln^)@#9fYfLv>*9Dc<{rnYjjLiri>&j-k%np;|Qkv2^X z*2UjO8vNX~3$^)@FAw^YQT&78O0UDvB;HmIv60 z9&rj|2eHxyRcv;3{y=&if6(dl0A3?1qF?ajdg>9YHt7T4eROa?9sUBP_L7dle073 zdUk7bGpDifD$!?UxRl;yARW{wTu13AY6=PoV5tp_jRV7__C+-{sbXjceLhZ39UmW` z9Z(z%Y-}iXbar|sfZBwBFKlYc{4qQGpzFmSb5yD^I0EBd3YX; zM&krMd?p$Ve495JL&CzW{rr@k&^F0KLqk#&nL(DKz&LYTtLz3eS167AA`x+T^X@9qNOF{yF?|Dmbr}g~Hsi~=14Qc~Ao!|TGb#_w?jNL*Wkesgegu5nG z&ySv{9LrCWlcFGNgpbuVVVHFU981mV<-DkHYEyt(rQ&Mme4!RLrZduvnN zKRMaUgaq8|teRNF#1?UKq{_<5YH4Lf2aGEvB{dD;5XCzUOgR;TC_|)~Nc(`*`Kb7U zzi({#z0c2oS5?Ks8bkNs!2|rWXHiK>Nz;dX{QRzgfxPqc^Y`!H|70lkMC!mj+hQst zNpSz+b}Wd~(i*&vqo=1F7mNKg$GLL@#3#RvB$E5y8N?gOr4BR%EFSziKE|3D8;fge zYage7ij9i{hyWE6h%?IMWL5-xcx=oVWQ4hy8C}yfL{4-xJr;eTKf)_*Gme|B+wI{O zm4aJjwobFpV2ovO`L7ZAuZ#G9-O2xi(%)jg?6F(0#n$vg(}Grp&DC)dIOXjAlqMw@ v8&0VK^dP+deOER^_`%7Kt%L&9JBSf;gtvU`gWDsKm3*<*Vm#F^(D{i() literal 0 HcmV?d00001 diff --git a/master/inherit_graph_146.map b/master/inherit_graph_146.map new file mode 100644 index 0000000000..1725c5a47b --- /dev/null +++ b/master/inherit_graph_146.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_146.md5 b/master/inherit_graph_146.md5 new file mode 100644 index 0000000000..4e2189e35b --- /dev/null +++ b/master/inherit_graph_146.md5 @@ -0,0 +1 @@ +0a3f3c44c156f6eb0a46c52fa0967c37 \ No newline at end of file diff --git a/master/inherit_graph_146.png b/master/inherit_graph_146.png new file mode 100644 index 0000000000000000000000000000000000000000..95541f780eafa7fde966208948b078d050b72510 GIT binary patch literal 2203 zcmV;M2xRw(P)eTP z4=gxm<{Y0r`(<`!I4DO%1csS=MS}URfcbZ@ura)0VPkm1!p88%P`lyHn>R>HOPh~c zm_?+hs7R+x=gijL-j3qpVqOYj7N3rejxqD2b7uQZUoshHB99(DLP$u6-hJ$vjo}Ro z8^aqGHikEUW!OACJRp6(Uj~~a8BS-M@<42w<{befkPQ|Q*&Bet9=g*&qx3@Qh zLLoM6*nsl#a`pa!fdNP)5;!3~8(9jSa}PGBV)o?5r_vV`C!>4Gq!O)}~W;U0of{oH+wKJ3B;2N5k6M8ix-b zp46P0nwlamE)E>Wp|-YG-Tvdp4@e{u*xA{^!omXn{{9-jdnR)|lX@qGv=kN=lAh*q zZQZ(+Y;A4n?c29BG&Dp~sg$g&tVpF&5fM>fU?6#VdQx3o9rg9~QD$Z)J%0R{h=|f;g;63ExrSH1o9>sLxoPbXJb zSF*IUq?ni(dinCDdM?J} zzn>Bk63Ernm6S>)5lwxrXHu^|g_w3 zuuY`1vy*IWY-n_Jl!%CWdU|N>+O;%1JgiZpR4Ub}Tf0r$_3PIuBqT(=9Tyiz;o;## zL^LuoLd%ygr;?Hq_5R4nNCH4&v6u!22Pgd=h<=3)fcj-*WJIN zv(et(4kIHYa2$sfD^{SZs|$sNg&N1%+S=;$)ov>)D#EsH+hAs929Dz(kx03=A+ZFo4$9)@jZ4OzWMBIln=$x3`B?%dHhmg6{`{(rW8`}PfCVPUv%;R3#V`2v+n zh4l1vC=?3yF`G7Rg1fsra&vQ$k&ywhSd1l0mZzt_f%0hd4yUy8mJQfxfNK8z`<;#~bIywqlTU!JM20|^-SxX2rrL59z1veXJ=>l`1n915}~T93SM4b0Dz>VBs_WY1STdXW8RI9 zCo?k>etv#B?M6mM@b>ne(qj;NdwZm$q#!IT3__t0r%s(haB#5BaX~>r5C{bD^77KT zE7nIK5MbZFeYkh;9!{S=J?VM?AU-}G!^6YK$;kl#U6+_{stz6;%=KeK6njgGe*YO+h7qN1W;Y;26+ z;9#s@zaEz^T|#qn^Q7vTN#6x;3J>KLB<&R>6D^0*w=!ZZ3Wb8o%E~ArB7)4#&B@c# zlQJ_isjshZPW%4N*h5_{5{U#mcI<$usVQP(W6|B+jjpb)DUV}dU;rNYtwM>}<&8a+H*mVArl) zQyPCJeHS_wHZ4g>Nr;Y)#?6~I;pXOs%F0TeV^UL7r#=2m`Yv>fK5W`ysjjZp*j~DH zsm2oM-Me?AzP_H9+Ws~Ftr;SCEL!<#XmvmH8g zh|fBhMdHstRiRDi%w}U_gM$YT&S^o+; + + diff --git a/master/inherit_graph_147.md5 b/master/inherit_graph_147.md5 new file mode 100644 index 0000000000..59b9ed0dae --- /dev/null +++ b/master/inherit_graph_147.md5 @@ -0,0 +1 @@ +cff38c9883ca3d70dc3adfaed291ee5d \ No newline at end of file diff --git a/master/inherit_graph_147.png b/master/inherit_graph_147.png new file mode 100644 index 0000000000000000000000000000000000000000..48d9de2668e00894a121b753c8525d49d310c181 GIT binary patch literal 1526 zcmVzQ-2u8e`n6wM3=5GEt`5&1W~LMG?7RVDzHLbUO;iF zFr0`qMFnpV1D&A57wYC**^ScaD+NvQh2r&v7qaDx;ib09(3BG0h2 zm(3%c&#UKo&hPS^eb2MsvyCATLO?@F7{{Fe&7RQOP#0Po>OyNnU6^ENVq&79q2ahv zp}BhXs#q*0+@I=3r_*(Hb=f^78UO&8oSdAPm>@@(mV?x4wY~D8`Ja3D?wLjC^M<<6 z+E5o-8|q?jZK9&0+S=Oeyy*#rt{dv|$F+%wh-hzbw_&10B0&)3>C>l2ozbB&8jXlG zm`p2O?h!)Ky1_6^rBdbO3G$arRq*5t4e(KaI_#es1$vHVWxNS0-%vLBW zDiVoAW*<{*#ujZZUAk0RSs51>$Kh~-f`SGH2Jraz@81gx3;q23+}+)ULgDuIc3N86 z^z`)o`}Yw9iHeFcTc@_RHXtCt(gpy$e*K!uFI$GhKGkge*Bo28yOj?R4Q@1rl!W<-`~=P z5Z=9e_t~>&5JHJWQczGp-rCdCb8KwPWHMR0#N#|OGZPRH@Z!Y_2;tV&7Kg(b9UaB5 z78MoUym=G1S65eMGTG(Jm$_W7P$(Q38NqL4AINpH7bcUbzrQ~-Gt<@8H6|uTp-^mY zZtgz?LdfUy`FuV(Vxu) zub)4EerIQg*cvYgt1g+w#>UjtRNT(b&(FxnfDjsu#xrNmba!{-@vN*Y0DwRs*xK6q zq#&wYA%~Zvz0z%gcW`*isuC&l?X958Pn0*#H28!LYKj;^5%m@9+OxRSWgwwH z`t_??t!6Tr`0E7#kV>Tu4GnX1b3Q&kd3kwwZT)`!ySuvs0|QxEStyEbY;4Ho^5WuR z8`e3pUclGacXxMpadFXn1IFRDz%Z<>txcoR5RcE`;9zTOD=`2;5b}7!{qp5YdU|?Q zRn_OupD_%R$z;S?9UL4S85!B$-Y%ER1pU>J7# z^l280H90vclgY?eMIupMUETQjcy4a4<=l{v5UEu9;ll@|QmNDF$YpvcR4SFhVCe4d z)@rrY)zv79+O`hPQTEW!pFa-`4ZU&W28yE7)6=oBu>gRQl9Il@J~o?e*{4}Wp-|kq zb&DKfu~>0&aldS)eSLlF>gv+d(>WZDSS(ITN+MrPOiW}j7_qUjm>;+CDMx&9-<-UCR^0*V(lOyW|P8JZtrluw~ zo1L7TeB8Mlf + + diff --git a/master/inherit_graph_148.md5 b/master/inherit_graph_148.md5 new file mode 100644 index 0000000000..2a57f28f39 --- /dev/null +++ b/master/inherit_graph_148.md5 @@ -0,0 +1 @@ +9b3bd0088c4d73c861a65ed4d283a614 \ No newline at end of file diff --git a/master/inherit_graph_148.png b/master/inherit_graph_148.png new file mode 100644 index 0000000000000000000000000000000000000000..df296dee8b9943674e9e3ddd06d1e4db4cb7ea0f GIT binary patch literal 2516 zcmYk8cUTkI8pcOJLPA2#q67@t2v@{V1vHVR8Kg=_K#E4H^l%};LJJZs2vR~Zph!^x z1p>;#^#VbPG*QZ~1O!oOA&7K0pt5J5`_G+uzB$h`Gw00t&iB5*IX4{bEl~&z0)ilv zwH4VJv`<0kONf9gy!A#zhO-_bB!zdQWR<@{~FsJWSb0C zL`z<;F!f4jUT4VcX@=|8DtICH{erZzK+2NwC66DgAa9t8kZhA0$jb8~Y{ zt~9J-Z7n*WE2Ru0rFKXf8ER)HU5mQuB+8L2w z6`EE)8GALoTO$gCr7;)`wW5OD+-o>13gu(8Ww{LogL&D};dUTZ`OLyqoWia3wY7`` zC-PXViUIr3&`_eXy^YPyVUo|U1PfSWV`ILS&)V7=KBt#$7+zIV!<+?k*VWb4$DBTQ z&IFIY5D}rJqf^J>tS$_dNidERiPq0^ii*Ml0@T>zkWu{hD3?3^=TooA$w?KHgicy< zK|xdKJ1rld$?R;oO2Vx!bD3+VxVOR2%F9)QD}w?9$H&I3&Mqu0;N)(!w6u&_jgOBH z7M}>BP-L-K`v;CvSR?flAxDok1iiV}9+Q}8!ocO^fg=C$Y8U*TwLS{ zoj z=lH>(^D!~5?X%!<0QiU&JtRa!OAD-py{g;;^+k~4*RLi z!ZkHDp(IlrD5jH(i=WPZ+oF7(nc3OZI3r*pF|+jaba8R<64PHnhGTtWVV5omx4ukR ztI9EOK*K+N{HQb1)2lBn{Umr-J3Bi|#%H|_>{!dq&E448n41ffl)NQ>$ev5|gYW70 zMPY8A@%FwtH=qb?RaaLBN^e#Ca(>-fH9IRyc3_wv(}kkZ>7tN28o|IxFdkP{o_28f z21fe!O|YB2x6n=si7X%C@6+~O;`6gmcDA;*I2rCnPfw3F>}6m>byd|=YrFs?ySxlUoB5l~ z1INIiAT{l6Pzh?Nf`WpW2qi2Gxg*oS3j;Q5ZYEkAwS@)g=ADLtMIn=g-UUzIbs3;3PD(`V%B3lI%h7{XL?X z$vk!P;vbB_R z$l=+uXZ|1d&1AD!UH*C;H9$;XU*EQ?$>6@->C-3#0^pFt;Upv^jFq*vwu*_gkBrFg zoWbu+HXQ?YpL{`|otgtG;&5~ksV^^Z$}#y}9UUhf95Q?T0sVvg{c~BYEGyMY5`YcJ z5h?EXp*8+3H2U_fABbJLc50?4mBo5KdobEboAPnfx$t&{YZsdu`@lgUCEjV z+CAax*iRw;6iPdnThi3z@kesc{Oadd+uPeV0()AqdeCnBxTwVtAXv!7i^83qYEs^= z)7i5&s&c!+c@?dE_MJO2`}aS7dHyHjKyYZNfX|<7{!h=x`YIW03pA> z>#E_Vj^5hbZ1<8nMs=)ojYA89kJR;>#BYNixRgnsoT_l1CH>c9A?828Pk^X2TBD=7QS2f*r&r&=fc5k+r~d|-Z=0K+e@I3`bZEc|u0i5_%#L^nj@x#!*BIw+ol%1;k(ouPP|Jkrileozs_CW9UNQr@fnxvv|(XEI2eje2 + + diff --git a/master/inherit_graph_149.md5 b/master/inherit_graph_149.md5 new file mode 100644 index 0000000000..bdc029ab5a --- /dev/null +++ b/master/inherit_graph_149.md5 @@ -0,0 +1 @@ +8480ef7e8cbb7644a3e011b56bab078d \ No newline at end of file diff --git a/master/inherit_graph_149.png b/master/inherit_graph_149.png new file mode 100644 index 0000000000000000000000000000000000000000..a089a28e29a912b7e14374ebe7999bd5e7973fac GIT binary patch literal 1901 zcmV-z2a@=SP)#CK~#90?VNu|Q{NlM&($^1oDQ>1P3M>^M2ygaIgm>Ksn90k9~NW| z3s+m&(m`O7l!IE4qaaeJW=7fCgrEpZEDTE{NYQEF(6qTMGJj2-%68B9kHhzJKiiys z#qaF<^}PN%=eg%O&vTyp-u3Y^MnDJwW^?1W(FtHS9xMV376Ar}00RJE&?g-o9TgQ7 z8M~ zPr4XWQ&Z2KJGaUm)?5c4@RvRbNRq6rtvz+>R8>`#FN3zWwo0W^jYi{gNhXsSjmD{| zDav9to7>vj3JMB*mL5fMaj{%3@95}Qw;dr3yZ_v-n~m%R4SENEQS!;Y_`I} zLLQG75)zW0o=)vd&y8MiR0oe0KH!S4-0*=dJ*t=yicD#&CSiJ)oKohgUT(DNK#T#`uh4NCnu|_ zs$RT!0U_MGckhD-4=CSNiXbyH6V*bkR-ZqAo*p_pJp99l52!RQQ-s6e`10k8P$+!- z_%VdgX0rtc2e-GkqpQWm#fJ|cM&qA9e`>Yb#KgqV&`_C7_Wu2QbP$hRyLN5&?%im- zxVX4|`*w7$tgNgfM~(~)4NXr^7Z(>NCMG(aPWRkg>ad(wOG^uj#p>_xfB5hrm&+X+ z8(S_Phr`j_+?<=6%VM!oQc|j_swO8Vms?C{-9&Kv_H8ttn3wA0Lm5jGUjJr$VdMYI-L0DV;la?&Rd;ps_-sIC0_xgm7VD zVcWKCO-)V6o|l&g0FX+hHk)n5Q(LW827}Sr*$E+h`t&KA&7PZ^L+@X$Rx4WLbUK5B zgL`^<+;gMX!HXA!u&k_X=gyrh7OS;h0O0cF%d1)ME`l}o1RM?r z4FUoJ004HoeRz1--`_trHg;_r(y6VjwOA}nCX*nDu&}TnKYk!}B6vI=eKCD%Fc^}O zl7fPQ2!gn9;lk+XD6-4ta--4s=g%L5!N6cJP{{xQ8jYr+qN2OIJ0>RP?Af#EX|Y^Z zk&%(<>FL$g)c}C%>gwFw+`z!VZ{NNF0Cw!yK@bE%5dQxDGcz;8!^0j^rSR@`=FFLq zk&(p2#I&?DFI93nop0W}$;-91eEjvqgM<;s<@u`!Y)wOXyi;Xs$-gqhE(cj-+R8$ld6{S!p1Oh>K zcXxYxyG$lyv)QY!Go5u40guPa$jHdg&;R=M>-6-rPN#eM@+ANuA|j%vr-!;9bZ*?Z zAruN-#?8&m0D$=Tcxu`H{rh`+dwY9(y(eI|+ewlP2?=2`nVp@TTCJ9TRW6s`ym|BE z$B(B^pLX|6NJ!9VG~d5}*XeW?i-rE+p>ycap|G&9?Cfl@Se%fMfKDxuNTgEfz`(%# z{QT$7pR=;E78e)Yed%@Z;-yxrEfz~dL&K9NPn1ff$z*chsU#pJgSFf3;NPvl)YOz*E{~3mMt#=o>@0+^y}dmyE{?%qtn$ADi9{lk z$y_2zBoc)};S$GLw^&l}aUwh*(-$3J(uYOG{hvbly>`)c}C{`g+PT zGc%)7sRRPS)~#DbBGL2b&pqbmQU{M-Z{NOUu~;UP3AvP)m&e7$p)#%`U|kx+|3wxS z7D7Wq8yg!pI+2aXT?BvW%cAuKLU`}qy?}s#?Ck7~&gE~!!%yMjsKL;4^U=d)j2ryU#7~runeD>^_@AJTHARa_O{}KRZGeAK6`vjXF n+!J812ryU#7=T590Ra39+sA@mUM8D_00000NkvXXu0mjf#`&o( literal 0 HcmV?d00001 diff --git a/master/inherit_graph_15.map b/master/inherit_graph_15.map new file mode 100644 index 0000000000..30671943a6 --- /dev/null +++ b/master/inherit_graph_15.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_15.md5 b/master/inherit_graph_15.md5 new file mode 100644 index 0000000000..baee0d4095 --- /dev/null +++ b/master/inherit_graph_15.md5 @@ -0,0 +1 @@ +43802ce16717b55671c7c1a8e9d372e8 \ No newline at end of file diff --git a/master/inherit_graph_15.png b/master/inherit_graph_15.png new file mode 100644 index 0000000000000000000000000000000000000000..50937c0a84fe67cfb059e8929c51487006f56d1f GIT binary patch literal 3038 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 + + diff --git a/master/inherit_graph_150.md5 b/master/inherit_graph_150.md5 new file mode 100644 index 0000000000..e1f00db166 --- /dev/null +++ b/master/inherit_graph_150.md5 @@ -0,0 +1 @@ +07ac33b2ae95bdd9d9588412993569dc \ No newline at end of file diff --git a/master/inherit_graph_150.png b/master/inherit_graph_150.png new file mode 100644 index 0000000000000000000000000000000000000000..d4cccfe63e12de1a9dc86931d12bccf493ed0037 GIT binary patch literal 2395 zcmV-h38eOkP)hyq%SGiDL|V|c`+wM^|Fv6c z!2;Ibex7D#XU;jpcXoGnP6GtPFu*ZPj5a#}oVA0CXTad%88Enb1`GjR5eNh&B_*2` z3eIoI$;ml*@Sv*t%bh2YNE#a(H#{U9ooH-qlt?7#76P_YLqo$x#e=g7AP7=x!QXiX z3@)AlgNtXtY_xd({{B@}RU7Q|Uj@JO448En&)3(ty1IG|1B;4^APB0dsnK^t|0g6Q zBs)7BDX%$Bjp*0fO8ljFo>Hmga=9rfDHRnJn;pyF%UZFSTu3e+k>DV#=prxgS zOeWvFd2@JpxUa7d?Yf|#;PBzY78Vu{A3jv8hJ}Se5M*Rzt5yO=QD0xL)}j#xgW=@l)X~wgxVTtUR79arlu9KG!x0e?0RaI*p>S?)uA-u% zxw#pJVILo#yLa!Z#`^jBRaRCa<*Qe(y1Kez%PMdcMpc)qN1YA%uKXvTU*;# zuU^UJa%>erE|fD+?*B#TgY9 z#bU9BhKAf$!{u@% z5{ap)DFi`QR#p=e6UeGUaB^}&cSctm8X689IACsW4na^>R@T_q7}B1ep5EBlI5RWT z(9l325W>U5wFfXfJPZJ^x3`BN2!bGEW8-h%zKx8G=eEg+L zmnJ7Cl}cr4X{lT;M=p7Ic=-AGRaaM+mzT5IY!ed`tY37T&d$z8Mn==q)97Wcl3W*$ zXlss+j&iwNEEXfxfq?;}QR8%0h2F$-a&ig_3rkK;{_x?${QP`nW#yA6PXGXRc6L2I zJ*ruu(YRsZ@pu3L4-XGjHzt$W+uMsgZL}bh$&^av_U+qEO-*0FeqCBxioTkjo?cvB z+}_@P^5jX4!_jd%IXOi{M6lWHPoF+XrP4QV-b6)3EiW(Y?h$Q`Mx!yA%#4hT$;nBH zL~{D{X%>rRXJ@BuG6&M%@062H<+|#E|i9{lHx2che ziV7Bsg>Er5H4O?1`t3IZl}arxE{>0nCy_`wIXOp;96?`=ii$EaG71a~MDJ=~QQ=5RRZ_N`mDs&>86(a|X>DM(r47rpNAcswSPxqJ8S z_V)Ja>FEa#9?Z|rH#ax`*(7u#H#avuJzXFWY=AES*7-ZHudna?`ST7A4pb^NKROup-@hoI59Ib zgS0akjKadgz`#HY3yVE__O!ILtYkknHdghg^Yin=&Nn+d+t${WPN!eFa%FIEP?s6$ z2+&Jb;kSJL{JFHW)Z5#eOeUwMroMdn63H29VGZJa{P@wt#Dvf1%VaWvK#-T02g9&X zCw-d|Xl-pxOiZNFXtT4k<>lphd3k>_)0J2k@oa2t&YU^( z?%lf=FJ6#Hq`0^^8jV(1Sg1;g>5K62a2}7>+1VKs6vSjQrBbQ8yE~Oit*x!acGjMn z(a}E8n&j&5@6XA}ad2?R$jG44Xx-i2d_F%lHPzD6@{i`Z0_(fm+_!HZhrb?X+F%e`>nf=DEiN~J=fu%Mve z(W6JJP0eVu540w^xLmGGCTnVH5{X2YFJGq7Xu8jLEuf#Fo0wI=zVl9^I z2&{O2@4<9`fB$BO@VA4XZ5lARcm@nEo&kf4XTad%88Enb28@PJg`-E0ZhRa#Yv7kV z&(YB_CMIUHLc!5aOiYa0Nh}28|FY3w!QXiX3@)AlgNtXt;NlrD{{sY^ikB){FCzc| N002ovPDHLkV1k>kbc6r^ literal 0 HcmV?d00001 diff --git a/master/inherit_graph_151.map b/master/inherit_graph_151.map new file mode 100644 index 0000000000..01c710dc0f --- /dev/null +++ b/master/inherit_graph_151.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_151.md5 b/master/inherit_graph_151.md5 new file mode 100644 index 0000000000..fd27309294 --- /dev/null +++ b/master/inherit_graph_151.md5 @@ -0,0 +1 @@ +7588dac803cb30bbd597162d55263336 \ No newline at end of file diff --git a/master/inherit_graph_151.png b/master/inherit_graph_151.png new file mode 100644 index 0000000000000000000000000000000000000000..d77c3e802385024292328c95d5fc04f0e686890d GIT binary patch literal 1521 zcmVO;c zmodzI8S_V)uh;9*(a{lY8Gk*0r1_hf&2-{M-TY(6j-jioD=c$0G&F$YICOV+N3_mL z*zI`GJ7}oIZUTJ9qAcMx()%D_1Z(I~z8w zQ8zza1Ofqcc6OqytPCcTDcW+@#QppCQB+if@$qqtjEunN^WogNb3(qMp#j&fT?5ba zc>Ve{1_uXm_3G8|37`-x77K}lS0pPdi*DY$N%{Htw0-+_%E-u|SFc_Pd9T+?)z#Ic z)oN+iu3c1FSxG*hj|>I_0T5m}IXOf`l#`P~?d|Qt_@<^NN>5Lh+$JJ={`@%|J$jTD z78XdYR+Gcw5OPv=zI^#Y=g*%fl}bfPNl8>%T1wx(eGBTVrly8+b8{&^KAsL7I6!v0 zoo?U0O&X1ccI?Du-8I+cm!e}&t{&`fuXf)#8yLagC@5kiiBy>6*Y&IKudwZeN>0maSK}4|I z?f<*J$z(!JO$`(Z1*)p5(AL%_C>lp^yrbKE~(x_@pwGw>gvMTvu7pe8Wnkp02&`37agn9>Bww02gO2H&uUChPg6=t z3jO@~lZc4Ee*H>&_Uxg#xjD%?6B82zfF>s=g_y(PAOPg?c!a)MT3Up>&1NHxckfbSVj?-6&NUp7f7y_gpOlm&ypM~E z0|3m=&*RglPl$<$L3(<6xJoUfv$GRC&qJY5fa5sq-n|(6LL$aR4U=UQmMqYZQBqZA0HH(pPv`4v6kL1Uc87vAOMfYgWTL)oH%g;b8~Y+ z``o*C5B2r+c>DHkSdU}GZ}_xYE&P5zCMG7t1#I~}34uTW9UUEb|NcFQNO-+@^Csxh zA6h3RB?XI%iuS{mj{Q#0f)mOS|=?n4S9KasH&>M=g*(P^E|4nt5H~32(?-r@!tJ@ zKZ=WsF*-VmA3uJ;<#OTHty@S=PR9QI`vCwqZrs3w2M;hfIEX`s4uwV2f7y_)dObZo zIDGgp3JMC4mX?N*krCwQ=K}z0Yisf1#S6s6#X+yvuX}Ej$%Mkf!ew!VLV=SfPYPfA z#Ohcq79=DjATu))I-L$0jYjl0g5N=^_n4R%7>!0;zI+*piHSIV{5WQ3XJND1uyyNJ z_nJ;6Q`7(x?FJqYb zGKQHiVw literal 0 HcmV?d00001 diff --git a/master/inherit_graph_152.map b/master/inherit_graph_152.map new file mode 100644 index 0000000000..a163286f13 --- /dev/null +++ b/master/inherit_graph_152.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_152.md5 b/master/inherit_graph_152.md5 new file mode 100644 index 0000000000..c5c926d32b --- /dev/null +++ b/master/inherit_graph_152.md5 @@ -0,0 +1 @@ +870810435a923fb7961e41e982e92985 \ No newline at end of file diff --git a/master/inherit_graph_152.png b/master/inherit_graph_152.png new file mode 100644 index 0000000000000000000000000000000000000000..54413024b21c40655c7f8e306b6715fb1ab90823 GIT binary patch literal 1513 zcmVBvZT1{&!@6JNz>;;R@-ObaYfv&zO}zL%f-yvGDMCJg{1=aedk~U&UzR zs~Amu74uh$Z?Ra=($bRdH2(MemEtdC7ShB`yZBqSY{Av5SCi70-EM~<2xxC_PidS) z_*G0Mx!k)555l9Cd1b#=v@LlWDzZG#{P7#J8xTCQmqKUqvqPouT9 z6*VgsBK`t&KPu7-vNmY0{)U@&mqx^?vVd~9lJVnIOx7cXASW5g7DjE|3_y1E)Rn+^Q; zRRNpLhQ7W&+`W4jBO@aaMG@WI-MD`JIz&-KTU#4Q!sqk-c6_JPiH3#-=yW>N*4E<6 zl`FDODbD`=`w_l^OGsefqVX;`SYu7HkeEAZCgM;w< z{kVPmHg4X$shF2i?LU6}z>_CWke8Q-4I4JVU@&0o)~$H-=#ktu5{cmO;lpq^99X(^ z>2HsXB6FB2ije;;6a`_b0%)?iE97w;R6A1#fla5`~Cd#$ zyYh`jqr5+JeVUw{#G5y7uxQaD6c-mKD^v`vt*wwG2|Aq)f*>F-FArm5V{p6OiftrG zLS|+r%x1G}TfKUmoEMCILwul-|(5uW<(+p3=a>-PaxyZQkb5eMoUWz zo;`a8lJfTO;lrq({@HN~3kxwdHHCNY-pRJtuV2f)WRR$KyrlzFiH!qKR*REZ|#*G`Xd-rY>6&0bkw-=R_l>mU#r%&VFy?fB>^{`khbMD*e zbfT)ND#otU>9AwR4*9V!UL3dEjhvhul$4Y}6h#yi6vX|H;7>?YdtF@}PMkP_ef#!d z*|KHudcE*^y-AyVKV=R#2pS8JdAZ@!Sa@jSs~Amu6{Cr-Vl?qpj3&N{(Zp9Vimz^a zJf8W?LnB4>^z + + + diff --git a/master/inherit_graph_153.md5 b/master/inherit_graph_153.md5 new file mode 100644 index 0000000000..11973b4e16 --- /dev/null +++ b/master/inherit_graph_153.md5 @@ -0,0 +1 @@ +45866488b3cf1c201ada24222056e813 \ No newline at end of file diff --git a/master/inherit_graph_153.png b/master/inherit_graph_153.png new file mode 100644 index 0000000000000000000000000000000000000000..1ad91b314fc7bd10ce26e3d599b1fc0937aaccc7 GIT binary patch literal 2921 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 Co3vp7 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_154.map b/master/inherit_graph_154.map new file mode 100644 index 0000000000..8a7fd0aa07 --- /dev/null +++ b/master/inherit_graph_154.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_154.md5 b/master/inherit_graph_154.md5 new file mode 100644 index 0000000000..3ae4612fbf --- /dev/null +++ b/master/inherit_graph_154.md5 @@ -0,0 +1 @@ +90893d6cdedea16463dc092155f0441f \ No newline at end of file diff --git a/master/inherit_graph_154.png b/master/inherit_graph_154.png new file mode 100644 index 0000000000000000000000000000000000000000..364f5132715f73856ef3a4be20955c21865d5323 GIT binary patch literal 1530 zcmVckIF=EKCq zgxPHVU73VMCJS#KZ)%2953X>eZ`*iU$%Og+jrq zf%%CaK%Mvj)QKM)v`&SEg-@S8J>WtA1MqA={cmOd*L6C3_H1`|_nu5HUAlxI2!bFe zisCrl+S(e8M(HM!BxH*enTdtd;7a5#*_14ZMUocEDG zbU*3!dWxdL;c!n+&!b0=Iy*aeG`W2F^08ybrlzL6Ua!GmFdB{jB!Fl%Ix;e%R;x`W z6SMxvkt5U(Dk>^&+_*uPx3;!e9vT}P8yXr|pFy1AqElX8UTbUXg$oxj3_E@L^ziU7 zT^|ev^?H4Jdb&_3)M~X~zI>^ws(SnO?e*)|5d85$a*O*S?*^m;vx<4H+LWo2da^YgLh z%t7D3e}C)NEgZ+|>grNbQYtGeIZP1%K%>zdK79D<)vH-qS$FQ-nVp^G=7)yketQ1= zxzT9+{Q0v=rK+i^p)av&YHFsYriO-w=H})k63OW3Xm4+?L?Y?x>Y^x$B+0#wvbD8E zlH}y%WN~pZtBK`VBobw1W!=7gn2>OIxmcaIr-Mc+m0B#8U;Dp!@gg(A z>gwvv&COVImS?};uhZ!=GcykzI#g6tWVKo;it_n<0Dy&s1-efp62UOc;c*Vfho z0Mu&r`uh5gGeE<9@9oIa(o%VOIRK!!xp~LVa=BbCmosZP?kAB*L>Ceh69E9BP{`x) zBqStcWMpu2$b!yKkx0btcKdujjYhMhNlHpedwaXfy%*^08USD5tx7(@xxap2WBE!SOwY9YbL9DE-JbwJRsi}#B zpM5(=q@|_N)5;z|zZntZ- z+N7i;4&L@nr_|Kcva&LbM)UFG$F;RJi^VcHI0yhpPEK|>9I?kCu#0m9MNuA)r?AVw$r&4-O8Nl#~dCLJY$s63Me?&**N!V6dsFi6DrhM~_OS(t&}2 zxaJ(#Q-0bLvH1z17;oXezCNW=Nx^?0{ch-c4dw;YANrjOVF7jG2T&(|0CnOAP$zx> zb>at5Cw>s;cB`+i@8IKrF!B5SVzHQ66GtbdQh8AEK>ilFT+Vz%;I9w70Olut0CnOA gP$zx>b>au#0m;{uE^Wo#C;$Ke07*qoM6N<$f-N@v&Hw-a literal 0 HcmV?d00001 diff --git a/master/inherit_graph_155.map b/master/inherit_graph_155.map new file mode 100644 index 0000000000..540b29a2ac --- /dev/null +++ b/master/inherit_graph_155.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_155.md5 b/master/inherit_graph_155.md5 new file mode 100644 index 0000000000..b0e41eeb05 --- /dev/null +++ b/master/inherit_graph_155.md5 @@ -0,0 +1 @@ +1f442b26b28f24fc3fedede77cf05b3a \ No newline at end of file diff --git a/master/inherit_graph_155.png b/master/inherit_graph_155.png new file mode 100644 index 0000000000000000000000000000000000000000..1a22f762d4fb8cc2c791a4af191a4997566728e0 GIT binary patch literal 2007 zcmV;|2PpW7P)kk%@p=AaVVkPR3 zNYc_YK`0}95$TI8#KJPMKOkyJy|5P*l9A!UQn5dROP$*kwV~5lS~{=i&EtMKcTO|+ zWbJo<;DGnpeXi?!o%_3c_u1J|Ktu!v_wV1Ivv1DKtk>)D;K766B8b75F9w5w)1Px@<{9icpTSscs;jFJ z7Z+#uHMVAExD3q943~kKnc*`0k!Ieybt`V&y0zFc7=Iamq?!KVPcKp=oXAb^L52P6^+&YwSz>FH@}AGKPIW5?|@e zGC)L_n3zCCMFonAicnToHm?}__wR?dw>O%bo1xR`kd>8%{QP{UYn`5+MqOPUR4Nq; z3JRPae?FW%c@jFE4sYMSg~4EeTrNjcR1_>0i&NsCIdcZ7si|meY;;OIUdV>3sw%Rx zn-{rUPPw_cw0rk%TDEK%ZP>7Zo;-PCeSKtPgwoT~Nh+0+kB<)>KYpCX#>OZvE{*_L zH>FZZL_|uZl1fWUt;b)wbcq5313B9f5fPM;kughCcz8Iar>9%nKgP6|x4*xi08mRy z3um2XvzgM<(yE$svD#f09b2boT67>gwv^%qJF$ z>DjYq*0x@+Cjc}&JZ$$o@r?tQzKt6iYn23ag1kk@fl}<=VKy!059zTAJ z?(S|V6bd|l{v4H+l~5=YC@(Ju5kak1FIdOa)D+ZeHJX~55Ed3@w~xKNB9RE|*RMxj zULMqHH6|t|<{X!pmC+tw{G2nYyJ_gap2N-=+GflRaL=YFkp0a6eT4k*uH%`#9}dT9!JM+ z)22TEZ4V6%5dbn6 z4Aj%pLjXvl(bzp!p-@nHdHJk;wlmJph=_=oHA?`X`1p95oSfv0X)mwAV4$?LGztm| zq9sd~(6(*csHUcdi2gS#_V)H#`&%p)5(vU9Sd8N0VrVoP7>!26$HyZ! zHWu~u_2};Iw)UC1*mQSy$LQ!Nv|24^%z}af6c!euwY3!zi3BH3oIpcEgY{F(*>H^m z7vbUI5Q#+S>+6HrY(_>#26pV&fxf;zr|Pm;EO`3#DUygk`iQRXFDy& ze|`Zdl}fD!vn#;Oxf0ym+#r+5aOB7lJbd_&w;vxup%7_lX^={#c=hTPBoYbS+}vO^ z8bL&}w&>_+&X}uLuSRBOCR$or@Z!Y_2!%o%K71H5nGCtPxx8-#PfyQTMjRX*{7Lov z*y=MHjd=a~HBOy61wTJOczb&zGcyz4zkhe=g3Xb!`}pxAva+(^@9&Sav^2gwt+JUon%krCXuaRXYd z7D}ZO0RaIxc<>-pDiu09I`H-DS2Q&>AtojU-@biwsFskB5EK*?K&R88w6qj@y&hFn zRh$|_LqkzsUJjGVgr1%rR+bSZ^|gwXZt*MGWZ<{Jll`rf^JN0E_{B8US3|LP$*{A#D}x%bp*aOvw&#! z;%(+9cEldqX8eKh_>(=I&2Sx + + diff --git a/master/inherit_graph_156.md5 b/master/inherit_graph_156.md5 new file mode 100644 index 0000000000..795d99e9af --- /dev/null +++ b/master/inherit_graph_156.md5 @@ -0,0 +1 @@ +449f1fb2829a41e877d0cae2b8e0587f \ No newline at end of file diff --git a/master/inherit_graph_156.png b/master/inherit_graph_156.png new file mode 100644 index 0000000000000000000000000000000000000000..7c9724a781a0ef8fe1aec6e6537017d0a1615d6c GIT binary patch literal 1735 zcmV;&1~~bNP)!Q*9W>?=x*{wX`=9*>W#d3Jn?>Y<{p0^}#-@z*=cc zw`Ib}h-FCy6+sv|B+ZbhW>`vTYHzRztf&tI2dfy;3%Y#W5z@f6Wvy7-{d~BeXPoD3 zPCduBJ=^_CM!bJ39n~5MVGY;4HKNOx%M#gkcNz5QZ(-Lm0LsQa8G~ zx@u}_7D@^xUdYMGIez?jc=KP^A-CJz(a|yQk}&av-EQyd>Y~mhMh3OFx6hXzO#HEL z-#*$5?uRgJ!5+e}1$zj?mihLON~LOOXqb!4fj~g7*RNQyLN1pxSU&5*=59|H8&P`d zIOWNcCk}^$B+2CD!5=Ob|k^*Zb_*v((hooSd9Tj~>Nd z;`MrYJl^8bGk1hSp_eaT8Vm-r*-V{Zx^yZ0hrN6E9y)XgjsN`lL(6dD#EG)9GTLJv z#xU`aLZLW!?%ek6+mn)#GBPqcJ3G<5&*w9lOj4c<>-W z5Gs|5mZz$!YQu&Nk>fC2E;l11qq@3Ur_&uhdKA5;GBGh>GMU6;@yeAe)oS(7&=3GX ztyb69*Wb8tgCK~rXV0P;f*?2?j#MhGtgH;b;vy1>Uc7jL#w1A+1mW>`s6}IFp1vL$ zQDY(tO_}P$hYzPupB9V7rKP1pp>Y5H{ZoEfQ7I`Y;qiET_UzfXapQ#x7yA4AndLz+ zybd)rHC0trefjc5r_&V|7o($DTwMI_-MgnxpAHNRWM^l;diAQcwKY3CyRoqmLTIZd;lqb_?%Zi1du(4=p}wOk|NrOb}!=FOXHYimi8tgo;C{Q0v&p~%h6y?OH{?R1(hkiz}@_h~ax*|KHJ<;$1R zczk>u06>x?I%!-k7cDq^m=H>((qgg1&Yzc;hwdF=dV6~T05+S=?REnIMn*=^d@vYH zN=oYP?uHPCJrqe@U0p#z0U8U1!spMQqcO_%?b|n+Fq&p&dcp}~#83;x2-EBJ004u* z@csMu*oQ6*^M^ zNJvOePiK}eHt6`SUAuN*U;qFh6bezdn2?a*^Z5n`2P2oXx3_0yWeEfVf*?#L6G@T_ zrDvL&V}zN_=9-!sr_(7Giw_?@Y_r+mY`lFM3IGkB%+wb1JD-ww|ZQ8`=^En*O*x1;bHEUwTkB*KWIB=k&qhrU8 z9Rh)%uCA`NwH1BD=kxu3KN^pXjYVBPrREvw5sSr>#ZU{y2un#xDK9TCFE4-p{(W-AbJ7OT|?07y+u?e6Z5{AmED(NhNkfu5e8lP6C$H8owmdX*rEw6wI{ zyLTH5hTh)ZpFe*(9FF|_{NKNS(-!*u{!l2CoSe+%a_x3|ZEbD%BZWfI*x2atc!q|C zPMtaxbzdga%uG*=7;2&Eq>{_!X0v&Cc-UgGxZQ5ldobYEty_M-|G|R?E|=^4`SWZH z1OU^1sJXcrjnO%c+8~d|Q&v{Ce*OB@t5+M1#)*ju2%*hp%goG7OiWZNmGIwf$E8b` z($mu;$9Z{qNE?sGlSm|5t=8digsb~}zKV(pnM}5P`EsRF`S|f;G*9b?s;jG0Qc}2F zu1cjkcI+6c4k7I8>&wl}UAAnQTrR(M?HY*I579I;(?d--Sq!bvWMK@LQ9m>zBKsi% zQtqs6ZEdLcWaUcCe;V}e2lWM^Mf!{p6GvbVVc3E_gkcNz5QZ(-Lm0MT4`JAXJ%nLP zl>a)~+S=w{2PR%1Nm3*dQD>rfsGy)=zVu+?5{*Vf-6Zf+X$(tnKZIcm_7H|G*h3h$ dU=Lx~@)v@tGEM^00_^|*002ovPDHLkV1l#9NQeLc literal 0 HcmV?d00001 diff --git a/master/inherit_graph_157.map b/master/inherit_graph_157.map new file mode 100644 index 0000000000..80be9e6b0a --- /dev/null +++ b/master/inherit_graph_157.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_157.md5 b/master/inherit_graph_157.md5 new file mode 100644 index 0000000000..f33c6804d5 --- /dev/null +++ b/master/inherit_graph_157.md5 @@ -0,0 +1 @@ +cae9d141f90e692d20409afa9862d79b \ No newline at end of file diff --git a/master/inherit_graph_157.png b/master/inherit_graph_157.png new file mode 100644 index 0000000000000000000000000000000000000000..1771dcdefa61aa48ce29302aed15e965b66ecc87 GIT binary patch literal 1811 zcmV+u2kiKXP)_I3Dxw_r1B|=6+gXxO`X)r|zW|m2* zV@0DRr4sL++pZAOaNR?&*Jo&SsbXWX_q z*Sg!>^?qKRo%=h#-}m_4***7OF9IP14D^DPY5@$?!B)kI|W`Fu@HO*|g2sHiB8;gkzY+)NiG!bT}gxqtuu$jFGx zP5(@87@I)zt+HNhA^op+q9l>2yT= zxpU|8^Yg>oGMS9{BL-0_l_-h^0s#o&w{PECT3Uocp+F$0s;aWv?GVDMs;Xe26DLjt zdk_S{Fzoc{)5KT^A&R1pA3rAA#5MbuFJH*Q!ZpXCCuF7(W5Nq9lqxy^fPsMla!;Hq zRj=1~c6NUL{JF8Qv7w=XNZruT@cQ-Z2M-=hPEMATlstXXU?1f02qx% z2%*pCyL};aJ;cx%|Ua!|~x3k&o{QUg*5=MuZ@aom8CnqNX z04RzQI~O*a{q^ftyWJi>WN>h>xVV_hw~)i-Nt_&6_uKb8`y{3OF1Ni^ZCqon5tRRh0OdnVI_fdV|5RZQC|3m#fuk z`}_NeLmUpr>-7@t+1c5M!xz>3S9(Mu(LyogLQ%s07Rq+NLZPs_x>~7JzJLGTU3l+S>Gb{l$wH5d;wmh1<7pS11(Y z zS_DCOJYGdb#ivi7EEbDgE+-D@_4>lX!ph3Z?Ck8rhYu?hitsBL48zW!KVM&8&*$^i zYIRLbP4JLLqnVqVLs7K4x|-ZiCS3DB>RBizq);rWVuE~vjd7#Iu%rM~ZIl?6GK{G- zgfW$dFs9Owrb6JH8C+kRpum(;GqxBJ$uTN4u#XV0EpyLK&AB{po>(9_f7a=9*Dy7b}02eDYZWy_W; zSFX6-ZmLQohqU=0rS|srzP>(%Lh<6oi-c}%*le~;CX>lzb8~Y_rBbC*IUEk+8Ev|d zHY-)5(R6orTdh`+NObVvL9^Km6Z5*X-|v6)=uuNs6OQBa^YfQ4Up{v1SRx7~ja0iZmLH!{N~BbWW#}cnCoW*REajdcAk<+_BkgCr_Tlah$5mNhWR1 zsUfgfEU8o~l}ahh+11rWVYU>KuBOJqvVAQx{eFJ`k;=+S@@+!$ySlW2&MP&XkX_Z# z&`^qmB$j2jQkMgasWgN!m4+~;(h$Z}8WLgmyL0Ex + + diff --git a/master/inherit_graph_158.md5 b/master/inherit_graph_158.md5 new file mode 100644 index 0000000000..13c3e653ce --- /dev/null +++ b/master/inherit_graph_158.md5 @@ -0,0 +1 @@ +ed1ae5ff90827ea53b2625720d0c8049 \ No newline at end of file diff --git a/master/inherit_graph_158.png b/master/inherit_graph_158.png new file mode 100644 index 0000000000000000000000000000000000000000..c1261c3cca3a182dd46963aa55fcb3f2d0c0533a GIT binary patch literal 2491 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 tu#eK@8IJ*6>pV6`LM?H?|0JLsg9>7b + + diff --git a/master/inherit_graph_159.md5 b/master/inherit_graph_159.md5 new file mode 100644 index 0000000000..20f6664977 --- /dev/null +++ b/master/inherit_graph_159.md5 @@ -0,0 +1 @@ +63e75c2117ff0a4b73f0014f12ae55e8 \ No newline at end of file diff --git a/master/inherit_graph_159.png b/master/inherit_graph_159.png new file mode 100644 index 0000000000000000000000000000000000000000..7f163968557ce394dbf269e03d0b5b4184891234 GIT binary patch literal 2578 zcmZXWc{o(<8^@0&G`5j#UQ23B$nMP&%4Cpbh(t}YHfbyw#+2RI2cbx$B*s==%91TF zCQVdi>1`}o-)v(i`&NEW|NVZ~@0{zL=UnGH*Yn)ZeSf~+`y|?2Fy)6yz#s_XH#al3 z1tT3?nmkU)5m2` zw#c!w6RFfu6ov7alF88EC}P6Ojcqd>zO|Mm6K{yCq*at@zFvKB>25N|fuxB}}#%}Vceppu*`QhRwtwIYi;DQEVlel&3aYA0T7C1M%k30NJF8Q4WCG?74_s#N zEX$ej3+=I2Y@@(P$RT2e9`^ysrby-LPJ9*)@Q%Ul^=X(aI5phSmzo%zL-JT zEqzlSHr?ebK+TuKBOXl42=HxjSpUI3oqIM^+n-F1&!Mia`jc)4=&t0#%6V8BsM z^7Zvy7;V~H=9NHkjqHoGySj<3VT)`RhTjNNC=@skXV#zYFyd(Ar`DmNAt4zV!Ae}R z2EOf>oE+B}J;Kz(LqSnd5iTlvi0bz5;^IrKgO(U>4bOj2IUQD3R;izE{GLJEN5aCw zLbLB+b5U}9V&eFbL|0#5!N-%CTzwk0A%b-wZU?+bFWvz<9}W@YA! zY|NT@ku6GI9zWU`j5r&j34_5>)6&=~aeUXVUEAK?&a0~W=S6r={I{RnFSGcCO_PgF*(Ws~>o6=rAt%n&IQSfMxtAgrk z5mr|YqX_$G*S=tBT_?iNPknH3(8k_Aj?n$gu*43jtel)Q|JNIhnbK_4s;a7rz-8wO z<)qY9xUzF2LPbS|i=`jBsVpFM8p^OZBq%6|l9NNC(K5N{h_>&H_|6c%b0Ic3oLM#B zeCxI5bp$v^l)=lrQ)cfZ$3Xa8upjfY(g- z&f>q(I~f)y&L<<-2m}Igq5GjliJgSq+V*x39HR-c;OsceY%oVXaPCm>i)L1~#^SV(^LN|o8$>nZN~1$`JpgM$Kp_;6q5 zjYb@%rAa)|xT2!s?Q`qg5b1@;Na&@+lkDuuupR$}!5Utm3jl_hwY4b-hF<+d=^*y7 zaL>1IiEVA?iI%F5$d%1rL>?;BN;1Oo7k3=WeSd7C1svoiTfczb83 zrN3VsP1#ourZ=4WcRKep33=nsKR}!pot#o?Yqf6>2nA(je2_YE`1J4EEl2eS{+Jmb zkJcqmyN)#6@$mGF!qCpy+CFI8e58Ce`r}74CX@Lu*hA3n`bl;Ujvs3*>z5LGdU|=6 zOMi?-9JI8z!vOmra2+rDhUbzmCDEAO#l_`)TU&lf$zhA4BP0@OWozq0J!xXM?9Fk6 zt&YzPclYnW5Vm(WlIWak&{r=JC=`R6 zpR=Okc*QZuw7mR$_BB>FH+1V;)uH}!m-v*FlrERh-TaCQIIxMBq$FOj<97^();JKd z-<>;gbUIo}N~(hLGsO7(`RkJ((;T!;>+4VS(2Q`+VYzy?@@ic~kCY=aV9h z%Pua0SSf2sOdXj6QeYS$+QCvmG;+PFk~8!cVAfxBVLd{Bp-Am81SFBNZRDQ{o{T=d|pcRNc z3Zl_ysb(lp_IPK!3a$bIj<2AkWJDyYVvLO5un?A>S8FRP4NXnC>xP?5h8}K?>-dhk zPPC=KVQ~p5DRIU~LwkGCqXuCKSy>1GjpWsr5rWRybbTU`Xl7+)g2&5Ny?#xzQ@n`7 zy;xfl6BFYR6f`}5p34G@6_S?jYy}HsS`>l46J=2ZmgJ}-nKA=n+TifWt zL5IS^!u61z*e!&HY5sa%aWNG-1}d^FsvowkPP%;?b@}q;_d`S3C=?2=rlzJkO73#G za>W!>=;Mov1qs>NlDedEP92tfZ0hD_z=NzTGt`m8l{GadfH6+CXDD&d(-~6XWC|7D zd3Y(8?uAX># + + diff --git a/master/inherit_graph_16.md5 b/master/inherit_graph_16.md5 new file mode 100644 index 0000000000..7611541ae6 --- /dev/null +++ b/master/inherit_graph_16.md5 @@ -0,0 +1 @@ +bea802f230fee30bcd0027c29ca001b7 \ No newline at end of file diff --git a/master/inherit_graph_16.png b/master/inherit_graph_16.png new file mode 100644 index 0000000000000000000000000000000000000000..e8a285fbdf6c861f120e2cb2eccb5dc1d162d2df GIT binary patch literal 2607 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 + + diff --git a/master/inherit_graph_160.md5 b/master/inherit_graph_160.md5 new file mode 100644 index 0000000000..e9f98808d2 --- /dev/null +++ b/master/inherit_graph_160.md5 @@ -0,0 +1 @@ +c4a03675241baa02f3ab89bf14b2513d \ No newline at end of file diff --git a/master/inherit_graph_160.png b/master/inherit_graph_160.png new file mode 100644 index 0000000000000000000000000000000000000000..47b6a5b31e92b43de7c00641153bce1cb592081f GIT binary patch literal 2323 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 + + diff --git a/master/inherit_graph_161.md5 b/master/inherit_graph_161.md5 new file mode 100644 index 0000000000..e400b9c5ad --- /dev/null +++ b/master/inherit_graph_161.md5 @@ -0,0 +1 @@ +685fda53e671c389a0dc40344a472e73 \ No newline at end of file diff --git a/master/inherit_graph_161.png b/master/inherit_graph_161.png new file mode 100644 index 0000000000000000000000000000000000000000..3202957481e366708a2592d91360a036c204be10 GIT binary patch literal 2435 zcmZWrc|4SB8-7ibhU`g-gRx9fw#G6fWg3wj*|U^vF>)HskZh6BB&Io%vXgD>!_gcx zWeg(AFp{mZCEGNX5Q8M=J>T#5egAy-^LyXt{^Nb_=e_Uyx~}I*u(h!e6+R*i0D$NP zON>1@kAjaL3ME@&c_#`%^RenAiG%`a$wOz`UXl`tQr@;8O+O1TP9-}-2@I}f|E01q*>soApj++b*GL1Fw6mU zE7_6^_1)yenH$LY|5smWH;pux4K_}JiX^8O-C+F1LdPP~;vl70bh4*aM zH@oRsW2vofT=Aqn=;LbBL0<5JBKtCbPPPyX)-<&;KU@u(#r#nO0wph&fO$cularF3=jQsI%%IU| zy1KeB;=8XQ6#Pjfa=7Yh#oe)qiC#~g<*=V`DRLDR6;6vK#l_&tWXr#6Yp?6bGMP*O zSUe^xB1ly7^Yc@c`ue4fTs~@YH!0|@ANKVgK=#OyPxV31!SCYY&V_`mak-_F>C>~b zPb^jC#pdScM}~%q`#m+DW#;BCef!3`F<8F3N;rD7#J@K;e@snEh^S;=79ub?c-|kV z4Z^v(WmZ>fD&urf-QC@>u>vyWg9i_i#y3k#OY7?D zUcE9-ww#`sSzn!DgMqcRt6N&oRQr$b-+NDgmXwrqc6NrueqNbs=k+3F$b*A}>%75= z#zxaScQzhBmLQ??Pn+MoNwY7@&dH&bl`&#=qg`D;wnPnt?gJzg6iiJ`Idk79n2|?i z$b|(3BCSPqI#NxIT2wSWQXk~%>RPI1>_hlA&Sa-)U!>Y2QUV%Ie;2Lh05=TTy}hhk zlSGVi!o!Cjn2{UH%YRKaYD@*_W!ACwo0SPBwfC3y36ao@(8VJW6s?0&3D6yG$nDz! zdd}veZSCzPd3jAupCPdTpo2m^l}8%gpc3Sz5vY_bgS>WW_VlP#|jOhtoCd`)IgW{5guA!~tOvv5Kn>h2-bw3oy?! z73AcQCmUj8V?WiSR8-FCKji@B7IEnOqT=Fm!O_3G-q76ZMb?}QJ)W~32ms4rChM7d ztDf@td@iZBRv$QvNLgQ7OV7%B&0uK$arWN~;@_0Ly)3FOl>h)xh=7>{)U3Ow2ZUlo zM8w|~rInRMeOLnn0~qlZN*;tJfDC!1B167h=`zXVCCc>eWAa9wPa#yL$|@@tHdm&` z$H!}GY7|YQ-WleQ$!y3%pHTc8J61E;6)bZ_KsBY4H!PLVdh6P=mABi0>E@Ar_}jOi zv1hn$tNl>F?^!LKodMv^SS(Can1o&GdWKbSGDzz{{pZoCOpx_2Z`3L_~@vazvwuw5=!-9NGQ0$UJ*$9w6>f|>mG+iz1- zQ+xOBt*xyE01JzDK0h?4>)qCa$=TVunAJRPih$$a2(u>gwtpeSLNl9ipP50RaJ!SkKTzh%(2wA}8E^|n+lBTllQ;BW?bD?JW z;^S5%^vchzV1ull8A94f>TdADhnjQoV)}-L+VyaD!m-5F{*p^2HaW^t37}jl5^ z4As8OR{bHy`@)5UP`SI|c;nz+5#N}@o}j+;M1mzW`T6<6!op79Rd8Pr zj8;}%KO1(kbm4Z!D3tu^h_#*V4G>;nt2=$4bWVe%n|FK*9*MNd${T@!27L=YIGjg5^& zBBaLU5zb9d2Z{8laRI5UudfeQ8%s?N$NwPoKI;7SDsrRB8c|VIwZ!9fb#&PF*6YIu z&b-{^=Mox2LPH^diHXU;ar%oF^78U0PMqL|MA+LuNlFrTt8Oe=SX$z*uU};ls3j$H zJz0hVfRB%l6_w!at*oX-vPMkZLMbXfw@6aZtg-k2#V#I`q<(5FFDQVFF|_;lLA?`| zU@cQC1FUppTe~52>Z~1FXP>khH2D7=?k0sZ&WubO7lUEiE*+=R>A@~89|#!`-QQbU sTJ(PX5R9EOl&BQg_%BNT2iM&_W@&0QGfmq+!CMt@!Q2K@h4v)=0~@-W3jhEB literal 0 HcmV?d00001 diff --git a/master/inherit_graph_162.map b/master/inherit_graph_162.map new file mode 100644 index 0000000000..19dcc05ecb --- /dev/null +++ b/master/inherit_graph_162.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_162.md5 b/master/inherit_graph_162.md5 new file mode 100644 index 0000000000..4a28cf6294 --- /dev/null +++ b/master/inherit_graph_162.md5 @@ -0,0 +1 @@ +98856ab193b388d278bd12eff66dcaca \ No newline at end of file diff --git a/master/inherit_graph_162.png b/master/inherit_graph_162.png new file mode 100644 index 0000000000000000000000000000000000000000..b0c371d37a8e6f304051f0ad62b987a765efd4a1 GIT binary patch literal 2687 zcmYLL2{cquAAi=+kjdKELZ;Q45HV=%`$X0lL)Ii&Lu47-l%Z)tc4N&aijXBHWyvy4 z_BAB?ZfHV$@B7ZToO|B=pLfoC|9kKM|66XNxv3r}2aE#%08RsaBnpfz;G@XK3eMx% zOCn%k#Te-!f#ZLTyyg-D0B|T8Ahj$*vevR6>090rY|r)X$Ben^)OtKi*5M}>k=gDF zA&V9IOEp`&n?F9|R2V$05G=}@&#N`H@AOHnPpTI88AhDp7;@w+2l zpt7&IFWuWeLQc-VPkrIWLNmpoFXNyOqK9N=Z9D3G;Nimp(e)l-CKd{MvY3T~pre zg27%2x`y8bb7Vo%b?$yCoqpqy!ra5_aga07-otOUc8Nq{LUM9kNy+(8+G3QH(aY%$ zyjZ%juV{|O<0Ks%f7DME`oV$yY9u8`T~N^@WpSmTK%#WetMk`Gh>#K_BO@bv??+3d zUO<2%F9(Z*gG1i!atm{F04RVBcwJLTj){q3x}mQA)_YiHpzr9u$7p|w+uL+N)4+h8 z|B4M@ZEa0k>OV0vGjrkcWuDJrJM+D4Y-~>)Wa29;W!HbSoC3Zr1qjMxVl|CSO}ShZ z&LG^qQ+KKQmTZJXLtgFp`f6EaddPvWP6Ss!pfw5^Crt$psGmF z`UE?PnlL?$HqO-$DJm*rV`tZLcFu1NU}tAfSGdc;%Yik470trq(q+64)FKX5f;Og} zZEruM@9#^%;jATQx$SAPPF21?KEl;c*;ihb!;iDKKj4l2SQ1 zIM{$+b8|NLRu&fYy1Kfe6^Mp9iHV7~pJiue8Uc&_C1&BH&xDlO0OHG+&&lYs0Bxr2 z#K$RDg;WQb5&>Dq1h3NW{G0I?R8(v%Nz$*1FwfJ{^neQpM6PVupKU3IJiHjYL$H~B69=0$PwsDy-<()POI;^IgoZDm+?d9YmIuAAF-hiSGd5wHorH(vWJq4Rb9 zV0QHj8Snj_t*!h!jX_(xq0Kp2Sy}Y`_Omk!GMMOk|0kE>N3OPPfR}EMM zWMwOhVTMnr921$w@^` zE#{{RQcthVLs2Qwtt?#-!rJMo5E2rydG}hkR1CQ_?IO`oORWgiwSr4Z`UG}u^H;Zk ztE;OfoFIPTg8qYW5a$W{o91Pf;g4N@!i&4dj##;bI}yKWG_c*5hAQmiHqwtYwbYmmfMtaoq=chj!R}Sw`_&8XEg@rf&>@0+y zZ*1odycWJsW8Ybzbb#3`EG?OU$aMc3EYfhW#waau*Fna_zlAaTBVy+p--)6&wa58b^a zsva8KML6$rNZ+FW*(ovchmuBn5f7#{L3SgN$Z1ePN=r*MF&GJ%I}Oah;&7#yV^fH@ z=asTvQd*iod$I@)kNRZ(khj z_3PJYrA%sbSa87d0K2WNZ2}%&=Q)J}VN_swNj~B*)a5*x0L^rRpCRcmSjg|i&W&krv(Gcbq(84m7dW_dY@@A7TU^1%ZCg+BgkAZE}T zQ_bm!NDWXCka$sbZZR=D zjTQiARrb=@t#XcO^^l~~>EFt3m7K%>*WDGUN z*K>HfDdI0oNcn!OcD|;o>p75%a>45kxQ?VEU3Ox4x`Iu%9j+$s*Cbr{dU@CU~n(CgE@wH8gT`@uDW`VS9z3J$;*O4DPz8 zq&zZ&3M$3pPwlRar-43UHaIwlM9$66>kd~sE#S+#LJs$LFGHc8iZBicX-*>0h&&G@5IT_TWx%V^;OEs6O_jh*!4 zgT3D3TFiW9cCpbpp9pVMWJP{W&5P*hXg1(Wd;6FoK9W5sewcN3cJ{&Mv=&&(oB8JG zrSC=c!5cZ#_71fuHIq7VSf(KafD_n<-`u$w5~A|LQ0nW~uX+7T+&nz}9&5)6t8i

SE(vHHfw zv1GKSo!zU&t)W79reoh|P(Upl9h0M@8Sjl$MOAtmFK@hc=`gpl!uIqSgKmc&ul4Dn z524#&iB#bC`lO_pG?d}GS|2emv7+}@M|&?NkUcI=Oit?jb=csNjd4C- lrPc&F`2VkN5pk2-Vt=at(Yi{jK!7(&z(B_o`9>QZ{ZDPzE literal 0 HcmV?d00001 diff --git a/master/inherit_graph_163.map b/master/inherit_graph_163.map new file mode 100644 index 0000000000..6edbb151bd --- /dev/null +++ b/master/inherit_graph_163.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_163.md5 b/master/inherit_graph_163.md5 new file mode 100644 index 0000000000..3ac464a4aa --- /dev/null +++ b/master/inherit_graph_163.md5 @@ -0,0 +1 @@ +e5940e2cd4d105ab970778d7257ce18d \ No newline at end of file diff --git a/master/inherit_graph_163.png b/master/inherit_graph_163.png new file mode 100644 index 0000000000000000000000000000000000000000..94f862b7b6680fe60749591d2230265c34e6e259 GIT binary patch literal 2788 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 + + diff --git a/master/inherit_graph_164.md5 b/master/inherit_graph_164.md5 new file mode 100644 index 0000000000..99bce1bae2 --- /dev/null +++ b/master/inherit_graph_164.md5 @@ -0,0 +1 @@ +cda1656b19db1b37610c58b26127caa4 \ No newline at end of file diff --git a/master/inherit_graph_164.png b/master/inherit_graph_164.png new file mode 100644 index 0000000000000000000000000000000000000000..8cd973e34f73f6b6651ce45f89435305efd9fb6b GIT binary patch literal 2174 zcmZWrc{tST7yqWo7G)_UTPkY}qO3JWBg+g4sWdWF*A|yCj4(~Y)l8O)hA`JijU{UM zMU36G8%sA@EI(#Ul2IAP&19Lm-=5#^`Tg@d@AJOrJnwU!bIxL^(_PB z%M~Sx`MPw+!|EtjP8}kOvpbONA|s2)bG?svQfcpZ*Wg^nW2nVOr@j4!jvA7gqVA3i zq>hEUv{HTw{nqu%9?Sua$ zMeI;Wll-Ke;*Jr)KSO>B=zgj2@bF!`cHvx-tRw;g0tyNWx;ez}?HmrLFH3vMPpSKY zhY4(%~{+X|M*CCn+Lw?KfwaU#%%%(zbTX%M8MN?B#US58Cd;8F#LyT*!&z?P# zm60(#e!RyNRq0(AVh4pr^pN+rwziHIpFT|F9?{odUt4RrvmGBCY@nlKe@tZwXY=gA z#zwqcmx`(?&F=OppVKus=(-eG=X?&2Z$Rl)Ra6MSf1S!WXc<{9+0{-Ii|WJPmz9;x zak&{x(ccscgB+Xcni~Ef#n^z{+tZ_I6>0z6r>GctfA5|>WxZkYY9t;nv{fsaAJ=lV zA%gRDV88_c$fZJmm-FYdW-x(oBOwy-sHj>QE*K_ox3<=7OJP=PJoIlq-xOdky=TO= z`&8XLQQ+t2=dF4pVzy0FRn;jbJok4xhwqR2hw^1Pg+`X!>3o*muH93 z1O5HZyon(e>oDp7+8E2W(=xHOEi!EkpL$hVs;eA5FqhF2R`}s3UB+fnHfaqFmNSvj z(K~@)i^8O&9YH}sL?UrXPN~FT5MwI6nbIi|-2s3HJq`*GxI$3S0*H4|?OE#NxHqL8P;DW8BJIfB${=axa5@NF>rH<$7xR=g*&edwcQAGmZ$vmzmat zfPhYnQ2L%ixTU3K#<}DM8UOaS96batDd?c$6VU!5^TvuKw|-yIJdMF%I3IC!bK72> zXRWQ_qN1V*gwp_~>o<9@0Ft>K?9}%5b}@+V^Tl?RK2;ZuF2=^53J|k9la)wMo0~yb zobAo^z*-?V1md9<>KX3kSL;LHg4QUmbce^nN^DVoa74t&z`)|yuYPFscxZj2+!$vk zAWXay60$fxKF(&dnb8Z?*Ial^(^o$6`&3lgZVP^ijs5;Hz0kIA$KE1B*5kV-|ZtPdNe zh8??xgqyxuo(&BR z(T?rC4#uWp9h`(<)F8G(BiRZkTEsQwoA|pPQDUMa&bME=az)>r`g-$d>GipiAM1-_ z<${ILmlI#=>MT?q#0dETtvh`3-3z>g4+{&yET}6hzr4xHW96GDo2+Xnu7;g4U-B2B z&pA2mmv!{;c+GoTH8wT|X0U2(FLNPGJ9$lkqKe$BD__wVPZhypAAHp!$A4Gj$efP^?GRON zz~I`6B;V(~{``ecpM2H-qNNV=7$T34*xR7BpdkIC;WKx(;*iMQzYMT?X?gAi{z3@w zI<(%+%?&h#hT^f^6iD!r)p89W`fabF>rVxqFvGVgFyV>i>@!L{M z44v;g-}%GunEdZm{eMBOh4@62iU$ u24_$0k + + diff --git a/master/inherit_graph_165.md5 b/master/inherit_graph_165.md5 new file mode 100644 index 0000000000..3de9954676 --- /dev/null +++ b/master/inherit_graph_165.md5 @@ -0,0 +1 @@ +1eeabcd0cf4ff6e7d19355fb955b5c72 \ No newline at end of file diff --git a/master/inherit_graph_165.png b/master/inherit_graph_165.png new file mode 100644 index 0000000000000000000000000000000000000000..3b8a8c7c925daf8c19d3ed7c31a4d1c9b8c22b6a GIT binary patch literal 2284 zcmZXWc{tSj9>>R0O^l3X5Q!|2eXBH#b!=m@jIC_LWEoVJI9W!+bcZx&h_T#aEHO8- zB_uK_b7UJ0F(k)!OGvitam@MkJonyz?sxtC^?g2{_w)L^pKpeXlbwi=tPltU5^=Cc zVt|_qY$Gr~aOS|jZ2;F%oTD8Q#QQZ%nNMgS5V*_%Y3Uwcv|JR1mhhAA4xKqp=@L@- z2VRq5qb!u>ZSRe{-*ZgN4Xp@PMV%ALeks+UlX5>=7{)-|vvjrOe|}tF>@nX(aR~J& zQd~6^^Flwxrt&%!H?hM~NuFN}IcF+gy0f$Ret zAD;#UPv*qas;Y*((<#XfMBW|d>8L}2nd3d?pyHGRftifjjjS#lB7W`7k9B2bWj#n1 zm0D|m@eEz(%v(vNQ-|y;GhqE*+Gm-3M2Ng^UWMIO&P_j5w#Z)qz%?@fDM=E8%4QMCw zrVe}&>uKxWsd@X@u&^*Er}sTQ;H+*(G#a@Yjl#or}7*8OyQz#Vl*`&jROWP9Z-JiEMH`|kTZbn57ayYthxOe%GOj~7r{aASO zty{O^;^MLt%C+EO`lx__nOdKg!R_5$ zV?j$Wsg$USKp+zD##N_v1{qN9-)GAd^aeo%shOFN3l_FZUDVUk(iFizx0mHU)q7TF zAaS9gPs)U~Zm;~Ak(G5ZmbqZ?CFWA9g~irCkDKf1K__!u?Nu;tZW5ntwVl!ED=%}z z#Kh8W8=9E-g!V0X2MUNnAncx=!IOVJ5AJ6s?XcNh_bT3EnaS#@?%q|?*W&&yJgN_!jgS+LnFXOuNGzRmR)D3}qzqN1WA zB6K?aysR07)%K#gx*El>nt)@4u?~hxTNaI%rIjC|FPKYfPT|`(f`@)^CMF75vtU6| zU0q#?IZ+A*-zfnY444uVLUv}BM{3=OZ~G^@utOf z9ZgLm0Q?39ABKlFcGo`>%%;c3uX4y)Ssbd|MR9TQdq`YjVj>#-J9n1t`0hR3WO8y6 z@Fj$)sfxHmTwHTu;RKc?P3Z!_Q4!Bz%?2=Z2&$KXJkw9e_x1I8cic$^Y|+}9^{F{R zyC_0qYL7ocf3?HI%d7lJoF;@XUp^M@ry?$I8b26vdg!O-^;Cu3zfPv8De^$^xQfG* z0cx?au`}9y--*H?$q}tn|Fv9+{XTQ5?Z(fo2(uDhDa!ij526zt9`~h3j43U#ESS{W zp^JT8WO6&xs;r`-;(>j|%a_JXz9UDD0M0Pxx4pG>2@ZeEL0pE#2I_k_1Uty*S|~>S z_FHB~#&}cMFhENj=jZoSSTV7@yu2lHIz&&VtgH;h_|Z#Ki)lRoigDNQi2RZ&aICGZ zEf#wm@M6Ht2n0eY85VmLb8K#PRX5unDtJy^{XuU~ESx?NGTlK`7?^>b*w$|(Z+Z3K ztEf-`lXeM*fbU|Db$4~qjiarqx#32#LS&4mXNd7Tcgunyl!jq5I>bd?a$)1Jrbes( zvF`;f@4vV)mReHtb8~UAu`cSltaQ`I2Qou%g)Yfv|hWc(~Kd!yu7@& zwsuuj)ym2W<)x$}4R{#N&(Hq{ZhdAZz}0nVa1fgKVUYFqZEE-Dx%v4qF88<~f75U$ zNyjbEJ%7XiLD+R+V7Q~B+nbv~p`q6zth~%Vnh)gNJ}lG)po0qT?eAYR0a}FF-dKy zJ6MVW6Bj2fr@kFN0m@9-Pyjhw9P+IRe)&)Eg=iNR<08R= + + diff --git a/master/inherit_graph_166.md5 b/master/inherit_graph_166.md5 new file mode 100644 index 0000000000..bdaa97c157 --- /dev/null +++ b/master/inherit_graph_166.md5 @@ -0,0 +1 @@ +6030318446ba1b7ce26fbd9f360f7e1c \ No newline at end of file diff --git a/master/inherit_graph_166.png b/master/inherit_graph_166.png new file mode 100644 index 0000000000000000000000000000000000000000..c64b295588d487b9a3cb0066c941208cda558ee1 GIT binary patch literal 2970 zcmZ8jX*iT^8-5hiFqTO6B}?`_Yp-oI+1H5att4a1nyd{*StDZzk?dv6+hoXjs&$<}i$|!$Cjrq-uOy zPpT}9l_Ot}64TYFd5y_7up{bJpSw$0B9lo5pZj33S?55$UUWuOcei0dVd40i&+ghd zS(TBelQ=oaogKVQ>-nuwJZ)pV+8OivkfOYbffEM9Jyi3pOOYs-d-sqi6tz7Dvo+U& zaPF~Jg(JgEa?R}~>paqw+}H}Pi5D5a2$QsVv)mWp=Z7q}7Lt=Yo3BUE#bPhpw&3s) z5!6;THkk1$M*wMIVWGP^(-fp4Vv_E#y??N?WG<1CU|0yJr6mG*%32T>n`2!%yRkvA z$k#=dSml+J&_c$pU>7(oBO?Q+r$;$Ci5xl$F(@Z<8~cO;{Hm&|FVoZb*jT#K5J^@# z2L}f`QXJ>z?k=gsvY0+tjFrxPs-AgZU|@55TSs3X?m5$p4>{UJiX;&`JI{dZMeF7d zR39w9^g7GS%TQt!ySaIPs==@4yT+x@Lg;>LE31g<4*~hLwdV~C4A2d}C2t-}-ELqF z*!b2_Xq3A7z3Utbg(4qPR#p90SOo&sz#LE0)qPjEGLb%GKSba#TcXjWEM%x~U&`d7euPEE}a8JUur z8okkS!l&LZq^Zg0v($GrDCmRT-sQ3!Dpq#(q(uAbh{(u+=8z-b&bPKrf>8U8x{{I- zGxYlHTNPJsW@cn$WF*!xF)=YYJKHO91N{FfZ4VERhAOwwH_VW$msj!PqSGmDX=&+( zosf_a;S|G?y1J2qsK?(I7q0~eHyYqaTtoz8V`2nq|29FPGBY!4Jf|;j@9q|jj98b3 zL`OziI5`z{9oCLII6JS#zrE99%F}6KW=41;B`=>?=RTh2TR5C0qEaE}onf{&4pFf9oW@bh~_8OGfpthrA`IdYQic%ct1r(FK^tfCvVa`d-MqU zNukVc&3BS$>c>O@uVyK$qgVt2kHT`2*8AZ-wLfv0aWLtiP z-5V?t5D|erc+WFDJe;QHBLdlhkn4jF6ogq~x`say#bji3&CHlU!E&r55|fh)0-9gF zf)k0vv`fy6q)9kXgsO#6y2WCYR z2!!edxhS~l>iF^Ds_b+;BPLWxHx0+QsqSToH9Dzbi$R@we=Gi?(Q|TN=3mysmX?;` zpFZhF!_q5j_;Y_EayyvE21TMyF(Q=ly5TdSC%h6VbT@9?fGugLtN--(kwRBMB_$;d z7>w+D0-r{#$7J1XcIYt`1guj?S(y!JjBWMn`UEI+`$A8uyyui^@UN{-)zIU{4nJRi z|CMh8G5E8GnUO*h)KD;G*altedR{_8qHM&0P+kk?bKl#T>3lAIlMIZtrbco9;9#~# zwuQC8GsQ3xxZNKby_>;Z0UV;Eqa&}Zxcc4p^z=+qaHQK^pMF|UAY69)gLP`5oybn2WgwnKp{|@kJU{tUPDFcnF>n-x`2FNN>w9q6q z1VCD+r+Igl`a8dOB~@ZN8Jnbo;;U-ekYVLO5J!6(dO(_*M{AdSeSOL8G3Q*|-P=Jn znK?MbBDkT$AgHzt5oBO&j50Dp0K9aUYV>0;ro zoQM#gn4G-#t??oCBLxKoRJGqe26G>)pxRrXZUco#NJx0J_brGiCMHJT$moi;_M@|J zpkFE{%-b3Rz}0~3Yyz?C2qw06bkNA!Hnyh8W2CA^i#jsYd|-g4YQRquUcM~d+o5KO zLCM;FJx4(K|1PRnRMm=7%1Dc_Y#JlkEhp<0s#~*=A@2u~8_L zvF4Bu9YlLV`7m03(N}CYuD`YnT^R<%;j|rWY)nse0s6kaZc0T(m7JEQ4+@SQ1<(UU zCNK46Qj>~{MX&1WevL%1`!3;o$ALPGK(_#0PZx|fHMrl{*toc%%+O!^@>lir20tYV zi7P55GxA<`@b9y>wKWAkr)b{}zpbJ3gMZnrVikXn^Rq5I!sVPj#i6rYVQs?hLJI#KF#jD4sS(PsE5hgs zc@9Bh7@l~RHp%GZDVsEl<(cp;Q#((sGGxE<-H+5#x9Y#-{+T$>zc6-Ez|s3B$Z^m| jn}1yV?DI%~^ + + diff --git a/master/inherit_graph_167.md5 b/master/inherit_graph_167.md5 new file mode 100644 index 0000000000..b3b7c2d23a --- /dev/null +++ b/master/inherit_graph_167.md5 @@ -0,0 +1 @@ +8a5b3f5c533a9decbd41e442cf216bb2 \ No newline at end of file diff --git a/master/inherit_graph_167.png b/master/inherit_graph_167.png new file mode 100644 index 0000000000000000000000000000000000000000..a3a05d837aa6e42a4bcb265e5b7c85af198aad44 GIT binary patch literal 2610 zcmV-23eEM2P)fK~#90?VWv06vrQjp9K{taMrZdsHebT6>S>`m_RicHEFQTL4w+X zLGc7)Us8M38lw{1q@oe6piTdvLW{*(MQSxcV>C9_ga!=K5YpNp6h)2*VhnGVR^{gR z&yNcScW@jlx0ZR5OKxX&=KI~rhuxW-PdG&gA&^KsPl=bOGmuF7kYbc*1}R2~W{_f( zXod*`3(CvO$;rv_L@ttXL`g}>pt3=C#-^qwe*E#rF-b@={;*gqPW3hD&e(?|^qM#@Wfq{W6TC|9( zSFfrTd&Pf&6~%iOP6f*ot>SS&1OPELYOjT3h%!AE)O3*Bsn>ms;VkBY}kOJD8$6X zIP8DlzJ1J@Gso%i-Me=&8ja|5Iu&DcVjl22?`40`RAX z2cyx5q9}NIc@Yv4LRMB5{oQuMJt~LGxj#Ccj_mAgy1Ke3FE1Z)?1+d6GBYz-x^yXl zfq|Snd2&#Uh=>TbY}rC=Y%Bo*0W4UsfNR&Taq!?l^m;v$Cr@VM#*J95R=YMkckU!M zHWr;uM`UCqzyA8G(`z0rs@)ljii+5`Zyzl!Eu^NVvTofv+W@Xxw~pU_`;GJG&vWb6 zEux~LxN_wRCr_RvDk_S?!a{@)R8&;B6+0;@3144d>g($%EiE1N$W2X6rLL}yUw-+8 zJ9q9778XWgVj@0|x8JgN?_S#5 z+euDNc6iR2GiNw-=nyR}EyTpc@WvZ&P+MC|O-&8guV1IMv~j8H#ghrdwY9@PNx$! zH8oCi7|7wnhec9SlG7YVlCuy(#Kpx4v)L?!5Tc`_LwxknMRX~efRV81E8m;hugPr(;GX0L+{@)3#vn z_V%W;vy9K2LFc=0Mt33{VJoN=kaBwiay}kVP z*I$kk@ETnTdcB^94SCNddp1U+k+ifl{`~V#IyySY&(G)FxpM$apFW+MnwlX8d#J@gXlN*l7cb_+4?m=> zt&N6;26pV&VHZCkApw)g#Lb&G`TOs`sjRFdF)@*U|NYlt4m~|RSglqjPoB)ANt39k zs312tcSP4ck_AkE)QGJnd3kwUy?T|dt}ed#;tMPm3yFz|PbJovyxRHx`|o+}wbzJ? zi^E_rP*qjMvSrHv*tTsO7cN}D&(F{4YI-<|i;L;*?j|%e6r<5dYHF%oeNj;nVPRps z`R1EUojR3Gn>JxGneg%PahOAJa4`G#?`O@LHRyCYwrttL%9SfeHwZ4`$=HtAxN#$y znVHO(F@xjBk8}R~dArBGs*GTQDH&&khlh(}$BwDm=a?*DB$Cl0#VFAXPMzKoNp*Gg zn8uTL#xdf*>a#$fXZdtziTfO}J{4f{{tX;d7 z>({T3=2C`53)Z@^MpI(6TCM#2^Us(}CbF}$2i5!f`r7TFtXj2-^z?Mwv7;B~M~@z5 z*REYWdh`f@s;Vjy5)$a`?R7b?zMYbejt(wdxWM%3(|P^%*Ew_MjQbbsAwK!!6F&Ih z1Io+GJ)O!RG$F=6{`iCK+qV-G6huZw1~X^QgsZgsBOf`WMe{r4#=E3QmzT%Zty^6j0rm0N zOYdpZrm=bRW;So$%;>3xhq@<9MkwI{9uxj!2dcCUe`Hmkyj$W^4 z?%cWf`T61H<;A^w_juuj7lv)yXKNek{DHPMSK7evRyJCOwvong#y8)5Lr+f+r%#`zuC9*HKKo1)LIj>|*N!W5#^HGHz4ye1 z4I7-+$Hm17KmfwW$43MQ2aA-H6j51OX?I>{XQ$Y@b*nHK48q^vUqnYoi?e6X+Uf^d z^oKjYtgK9gg@uU;6DEl0=xCSPJPntP+6*;ke5S>y2J`377mbaLo=#)jFq9a_y;0)E zjT@d$LGphzF=v!WK#EbKA*2{3nn8+Dq8X$ZC7MBsQKA`~zS?>F?YGA=56L)TsDF(z z=*~E6)+|=9Uj0-Pl8j&Udc9M9DMHAf_?2h^`4hhq?I6V{(F{_I63rmRDA5f60|q5* Uwb*Xj$N&HU07*qoM6N<$f~x){Z~y=R literal 0 HcmV?d00001 diff --git a/master/inherit_graph_168.map b/master/inherit_graph_168.map new file mode 100644 index 0000000000..7341ccce2b --- /dev/null +++ b/master/inherit_graph_168.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_168.md5 b/master/inherit_graph_168.md5 new file mode 100644 index 0000000000..5abc1de8f5 --- /dev/null +++ b/master/inherit_graph_168.md5 @@ -0,0 +1 @@ +ee4846086c8d8c51f74ba8c77aea4802 \ No newline at end of file diff --git a/master/inherit_graph_168.png b/master/inherit_graph_168.png new file mode 100644 index 0000000000000000000000000000000000000000..e477cd75c64c4b1b2cdf1e8b0df8bda59dee8605 GIT binary patch literal 2595 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 + + diff --git a/master/inherit_graph_169.md5 b/master/inherit_graph_169.md5 new file mode 100644 index 0000000000..0befa95dfd --- /dev/null +++ b/master/inherit_graph_169.md5 @@ -0,0 +1 @@ +d6c3f7e5e332769c6d05838324225a6a \ No newline at end of file diff --git a/master/inherit_graph_169.png b/master/inherit_graph_169.png new file mode 100644 index 0000000000000000000000000000000000000000..92cb02f557c047b0cefb6b5d198514e1c85e7316 GIT binary patch literal 2734 zcmZ8jXH-+!7LLGV6r_j)BPB)=0mVWBgdzdyAU%X$l+J{XG*JiwN(m83=tTqsM21d4 znlvGX76Fl-fHaX3DTWSn=dJbLkGJkR_xw0(oxRWg%HDCthT5F$g6tp=h*MWb0|o2_ zz>+x)2L6lOv5$cb?5L-$0Xq5jd)-n@1cBI{bTw4bA=zs=Sp6@*pkyet{7kIyzIOFI zuRNw?Og@j(yvfxYOzM4ZK9kMnZY`FRuZIu!)D=4h87!7p-tFO~KsjuMOafe4E%=>G z)7oY!3YW8UA_i}-A05rz@xB;*sQ6;;CDo~EO_{N?bQF%HGmwm}y=E20Xb^!%?a~$L z1#s|ky>}n?)&~LG@8e@DG2}my?p8o zs}4r%i88Ian=>)pq+sypR~w%y_d${5dsn%U+dO7wX3YJ80mJQ3WKvR6Upg#``I?bO;)1YLUIi!Ru2LR&FJ!nT=m7ql3!<5-Il<`?JU!b7aUwaBy(J z=*k&xZnypIbx^mR&aZ$W7( zZen8M9Qmue%>4X(rSGg-WK@(w==NLFvv@7_pdf^GS?XWIMKB+l(m>7~GOgvYNeMbS zI=a%eU(gegrJf~63t=rY$Dv9@5r|YM_Ry~lmdKxIC!nXNH{S42+{?@BO<`e`|H8ck zwsPAB0)W=D;bNoVp&>O}TVYvQSz%;oGEk&=9PXT&v4zEw`D$|VA1o{^?ifsdetySt zYF28hmXp&JI`#x=N6yoY+ePUf5f|r-qvN;6Sdc+js~}41@H-%~ ze!C8o7IX)X}3@la8@|vtu*uE3IZo4rX z18tOby$t>}3Ip(P8_53a);Bk2kBwOt8Ds%k0f>ErAE!-X&|9IpgmhUC{-uGOxi2NA z(a)bZ@;zp*j;nV!?a&^t(OFqo(iH=*tE#GUxge29F0U^b(r{JrQeGnLew&7d#^=dN zy@wBLJWhod5MQH8-iIC3bw;&PoU5_i+}va;HBm^;`%<*;uF_VY^ex%i`udtDd;YZW z1F!P?tuOjr3tqpDI5|G>L0caT*GDX`uNRewo0BXd@9JnAMGU|h&*71^>i90?$n zt}j;SHMz)xr4X*ZDK37vx9M_xxMdW+zbsB5688=mt#+92%ggPqHRpJFJCd)NzAY^U z(t4mVcag%fXsC2=*ot+&J{&!rLn!o>M`p3V$O@&TA7&rp&`^_Uq+{?5wfc< zLz>dlBZ5Riuvl!Gpooab7|G+$-n84=C1^rUPXAD$p0?bXPG=>jCdd9vSwP-W9$#;~ z5LW0|9xjG>?_6|Y<4%VY6VlT!Y%CY&hSnNY+<4&ZtcCm6B^}!IeFQT0_d_eXi4_UT z1Jjv#bL{^*aTGOkqoVb=nvwo~f9fIiBv);L7*a zRbe8`D5$$X0g;9GX+28a-VWH@+|2#~P(wIKFZHHP_dB!FRdU$vw;UWCfc#BNVEMb9 zYbtVbX$Dz{!HJ1`W@dZTCHgwvyqgSn0&Wy;Z?Jp2?V=tIMvgaxgRsTvsI zhoxtXmGse~Q&LjGd}0(l)WyQe3i0P+=;sI-Hriru**EI|P3w9}yv6-6 zK9aQoki8rAmCM=$Nk3OPOk)nhX@9@1FIOeExml^)zU3a^0%c`ofX?t%&9g<`oEnCP zT;Qmu(ryEQXCuEI9~~a*=;_TxaVyV!j62U&?+%2N5#$8S9v}+PVr}X?t42A+?aEbv z-UkDGPFN*8ySrP9_Gk%G9Bo|zi~Kv@&t<&Y#c|}Fnc;$_rY4K;en3FL>C4d}dkblr zT3XL-j)DUN8&)Ujbb9!J?|$o(y=ss~KtQeOG=Q^r>m-VTJ4o`&9*f9eEmY%cAmGIm6)^%q3#JR(*p4CMR`oFR3KLe90q9B2K zDa)kW?ZVHIfi0>E!vF#&Mz=GkbIKET=vWmha%U=?osiM|7X9wj(bY4srzkh)b=UdU h-INW;|IKkHpdzx?{8K;DBrt%2bTth%%GDl3{sYkAX2k#i literal 0 HcmV?d00001 diff --git a/master/inherit_graph_17.map b/master/inherit_graph_17.map new file mode 100644 index 0000000000..76d0cfd48a --- /dev/null +++ b/master/inherit_graph_17.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_17.md5 b/master/inherit_graph_17.md5 new file mode 100644 index 0000000000..1ec9611379 --- /dev/null +++ b/master/inherit_graph_17.md5 @@ -0,0 +1 @@ +266f918046f33c718fcff404343370d8 \ No newline at end of file diff --git a/master/inherit_graph_17.png b/master/inherit_graph_17.png new file mode 100644 index 0000000000000000000000000000000000000000..08e05115b57dac65307a31d0683e0dbf381c49f2 GIT binary patch literal 2741 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 + + diff --git a/master/inherit_graph_170.md5 b/master/inherit_graph_170.md5 new file mode 100644 index 0000000000..7f4406eb0f --- /dev/null +++ b/master/inherit_graph_170.md5 @@ -0,0 +1 @@ +7fade15477badd5c0dd76d8a66809b51 \ No newline at end of file diff --git a/master/inherit_graph_170.png b/master/inherit_graph_170.png new file mode 100644 index 0000000000000000000000000000000000000000..f3c25773d1078c162b9a7ed159b66329318b3056 GIT binary patch literal 2110 zcmV-E2*LM>P)eq00006VoOIv0RI60 z0RN!9r;`8x2lGipK~#90?cIAwQ*j#y@b9LjRxB$rN@+Ta%o0Tdr7$oGD`qf-rr>3% zBx$j-sLU?V1yoWCie^?`x|mM;Cnb=g1WO?-5h`dlZzt4dVqVfH_j~_%aj%;@b8e?? zz5YHh@SL-Ae$VrqJ?>nb;}Jp#D2lQ-CEwl=P!#oFv>7SNLC|KTC2dKX1p^_G1j>hMOmk+stQu6 z)aWvL&PY)Xf;J;XISAT}6y+csvKhm|!f@x#9gElR>+1uL$HTzD0EbbTW^K%lz#es@ z{>LGk@n7)&(0ukl>&DLR&A4UD7L=Bj{&O)jH#Z|SHPxnLT5I?2-8g#msLjSRmZM?a zY*mMei3#v{Jl2P^GwY27o3VQ{QWO`oS}k6@cmbJAhTPoT8OvQ=T|o%ZJz`>Fkdl(3 zoBs3XkJ0TOKYkqP>FH={YWmwLaMO%IK|wfo?i_aP*a3k+fDIcqpuWCdw|sbb7;?EB zK0ZEJwrm;F($X+CHip>PShTdX;J|?c;PH3}3kx&4{hXW}tXsE^b-K5=7hgoaj))>TMF?c*4_ww@GYAh4hd>}eaBwhQzkY32p2k>Hx2bs8 z_B&f$r`OHWI!yQB!v~x`eHucc5UHuD@bvV={{8z|bDpc@#hZ|jfOqfSp{}kD9UUDA2?@c=moM@7 z@neL9grKCP1cVSYH#b`}wp1#GtE(&8+uQN<>C+j9J&B2lP^naS_39P6ySw4%=Ld;I z0)pceh@16%`d>*REX<3Wd6P z3WWlfE?ok{Fpx^6*t>TxG#bsUd2(I1DQx@QoPBF)9s2wGaqZeQ1P2FW`}XY^8XCf* zM~|RZt8wMZ75Mo0%zdY@*tBUA3JVLtFbr($?0-8iS$h*RK<)RLUCT zTw-P$Gb1B|#K*@ILI|0dm>?@wtROWtHM-@2fq^6|D@$*kjT<+TqM{Gh5tT+Dju{t_B005qz zp1PBDCnqNi4-ccWvy*kZN~IFP!NFLvWC?gY9^`U47>4;PIZR1UPe*liHNJoU4y95F zXJ=m}VGe&UtcGH@5w5joIpuo12S*f&#R*wn8Wr;?SW(Xl!iMJB{Gl z+6w}lmwATgu%fU3* z?b|oqyy?gELZJ|RJ|6=E19~U$gb>{hHjJUazaMdNaX5eeJbHV3q19?pSXjte zi*4Js;qc+Z&}cMJtJTQL%F-Ku-@bj2$z=Ha`7?h0{E4@3-$Ejh;McETMq?NsABR?} z#nPoqv2fu+G&eV+u&{7WdCzvyi7oH+^mOFq<>AenH%4!rC=?1bG&EpjWCT~QUIoK2 zkVqtEx0uUJ)36V&ImX;PoL_`1pPM$o8XV0F&&CQMVYU*q% zD=RTNItpK3Ux>wGBqk>6EiW%Gho7Gx_UzdM4-XFhzPyropSKtL1brVW6hd1c=+%k>gwvSa^*_1 z@-$>^-7L+Ki#izM^ZD4hb0^Bm%5dt`DYN1;M}B@jZr!?tty{NpwoO)ZIKiZBU}9o| zEMLByR8&;VSQZ!C0wNWJYW$mqze-%AUr6>nMn~|a% z1Z_r&auBo`Dat{xUcjlUs + + diff --git a/master/inherit_graph_171.md5 b/master/inherit_graph_171.md5 new file mode 100644 index 0000000000..412ba23082 --- /dev/null +++ b/master/inherit_graph_171.md5 @@ -0,0 +1 @@ +11f7ba1d7ec37590b383b4ae31673929 \ No newline at end of file diff --git a/master/inherit_graph_171.png b/master/inherit_graph_171.png new file mode 100644 index 0000000000000000000000000000000000000000..dfad80cf6ed3853e09eb0af635478d061e25164f GIT binary patch literal 2350 zcmV+}3DNe6P)$jt+D*h# z;MeXU|YHG^K$yqK} zP?nUGl$71OcO$pI&3Lg`Tv1VBbeB+;oQjGHu~@8X!D$vMFE2NiKPW~5gTbg-&}Y1f zf(mbWNHm6b)MQZ=s!1_tPKI)OlNcXzL>tVGIBO-&^yCzHu!TU%Q?o&NRfR{(%! z6LdNqgTY|2SPF%5n8_wJpZPFMts zobiQ)g;`lyQmK^1VlkOaxO16IW@~F}U0q#YU!RYU&+FH(pFDZuX7MFe>K`0=i;uC}%|_*Nhg?Ay1`+1VKY5D^hEK0e;o*7ot^N3mGUWHJ{Xf*LU~ zF(Q!&5j8(Q|GdWf}n_qh@_+>2!fPKC7DbvE-r>3sHdj~0MOUh z2bbyS=l}qG|NdRIPF*1&HLEW5iHV6ZF)A)^;#m4 zEW8u`h`}~@&d$yXg#w-szcqmUyC$5RoTjIzhlYmW+uq(@_<~F(W3kxb;bGNb3wM)h z6N7_;(b3VDFJB%Q7*Hyexw*NE-aQ>Wc+kqqs_2Nlz#IEd~>Q%a$#4I-SGebai!& zkB=7=6x7z%0stHx9oyU6wf4T&U6re=>z+M(PM&dtsJqvyKzm{=^9#bV{<RK#%H{H=rl!=?R9!}`%+Jq1d-jaU zWUgJiHXtA%KRQ4k(QQ5BodvSoij5tk*`7^{Bg!hrBX99v+C;ViHQj~W9#SVr&>~>P!tsv5eS6o z>1q8&n9k15bLY-&+O&yErCz;ywWp`YP{A4;ugsA;#?=d0b(=dBgP + + diff --git a/master/inherit_graph_172.md5 b/master/inherit_graph_172.md5 new file mode 100644 index 0000000000..68885c3826 --- /dev/null +++ b/master/inherit_graph_172.md5 @@ -0,0 +1 @@ +f351a249361171c12776016195eeab5e \ No newline at end of file diff --git a/master/inherit_graph_172.png b/master/inherit_graph_172.png new file mode 100644 index 0000000000000000000000000000000000000000..ef9bf1ae90e8928ed369d2092103d9fd81049be0 GIT binary patch literal 2109 zcmV-D2*US?P)(i6GWXtcWo@P>D49Bq;_|3V^&Ybz4W_DNCTC;!V!u}^kP!t6;l)!7L8=&zRw3gI?){;8VT2coe`yI7fU0Ykb zRISjEB{4Cvyu94D``dY`)9G&Byt(Kt(YS*~qfx8X_9H%yL2Yeqi`5T}`|Q}U12aP3 zFR25qC3T>+qz;R%C7;i)udiR^qMm}wT(B~y}`0HBoc)Z5OMp9o92n2{7 z0)b#56$Ju8Sy`EV0H4o4bLI@GoWv}!VNbD4&&$%%QuJTCy1JISoj`A;$xE z3X{pafB!z**6Z~Mf*6fPQnUBR<}tW=US7R=wYs``a&mI--o0Y67*2s$Ebi;;yL0Ex z=;&yCeEh?Q4_jJV;^X5R8X8a()o3*C)dB!?c6OpDIzK;u`}XZCSFSWSHv<6PzI`i| zN}HORK7amPQ&R&6$yRhdGr@tA#l_hpofoy^#*G`85vOoCob%_;!|j=w832G@uOA;D z2LKEY4`YIDGYd&bNKh)3#QD?H)9pKKZ*RB%^umP;yLRnDQFLTv#NXe4U|@i_A|@N8 zva-^#?jJKdJ#f5+BO)StdU{~6PNxF^%+Ah|ojn3XB9TZWvLA8tybKKug&Pb80{~z$ zna0M(yuH2Gty||_LJan|pY7YXx3#s!#l-~#1Rw}fT3V{t>j3~P7OT0r`RLK3JRVOX zk-U8Q(v@r|iY6o^*ghhg+3~=gHcWhUe`)qS_UscA6JxPh-o1N=E#S4#5+6T)%*)F= zefqS)V6a-P3WdUKHp7pyva-6mx}H6ImX?;5oSgjQ#}85!$z~=6gTb&VJvB8&9E>-6 zr0|%QQBhGsp->``ym|BH%a<=orLwcL695n%9zHNIV4EX*TzvL1nM_uzb>+&HzP`R1 zjYgqR!111*o|7j}YPH(=`FV@Q0>g+aE-*7GxLj^SLxa(193LM)e*8FbFy8Eu!ju1# zG&MDC-n=+AY&Ef++FMES>nXVPkxB;ytb)dDR4*zQ{m$`>UmjAVu6oXP)y5X;R5WQYs zSXj7J)xlrV(rUFnc<`X0pg=B{|Bd|1jmE~tii(O~zkUG#dV71bv$HK03nu2skt4;$ z#hAAsJ&T9692^`xapFXDbaY{1VMIj4&Ye3QW1N~hQ&UsBckd1j4Gjwm%g@h;i_QSw zAtLK`;WhIWq(Y(CvSrJvRjZ1MiXK0HY_(eP zg0r);lai7K2M1?oXY1sOQlj6jB!Z*Sk!59+gHqHb6;OyY;5fH>(_0~ ztX;eI$&)8$vl)}Wy}dmpC56dk9yoAdYHAAa*v)2hS67!uwi8QM}{;#|VQ&MMXI#DJUqY zs;cty^8*0zc)X5|4##UO#A2~@cX#LK=d;=DnVFeOmo7=AQsU-a$1_@ng@qkHeE7wS z7mpr23JMC!&CO-A*{4pO8XFtKL^?HhA|oTsX7j|v1l-kXwQ!K2A}P0vl%qsogaH5$ z1i||vlgT7_UG(+q*X8BqOeV9Wq=e08_xJa!RH~w)qTt|QSGsZq4?p{C+O$b7mrqPg zD3wZ`P6sdA_Bb_n*lc!ka&k#YiNRpd>2!w<9m>ea2oDd(t3uZ8BIPLI8DR_L^5x4W zlj+v2Tf@V{m6erjHrpd-PPU6h@=5xVShnG7>&0egFO)MNxynkei#kdiClx zYu4=9vuApG8U}MXoNL#v!EJZ}93CG2`SYh-E{~0kWiS{V4#)NqiAtr~xN)P8k558E zf-6OxCPz`Urluw=EX>!}m(S;ym6h4D*~c$Aj`vI2^ZKtsdtOwA){;8VT2cpEOX@&t zNgZe{sROMgb#U@KB91>$L9-0eXfzmW@3-?ZGBQ#m5-n~^G;YG@^Ai&j?MD!Lm4`CW n_e<(PYe^kwEvW;oC3W}*FJfdh>ZU5%00000NkvXXu0mjfkP+;R literal 0 HcmV?d00001 diff --git a/master/inherit_graph_173.map b/master/inherit_graph_173.map new file mode 100644 index 0000000000..50d80b8f43 --- /dev/null +++ b/master/inherit_graph_173.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_173.md5 b/master/inherit_graph_173.md5 new file mode 100644 index 0000000000..71f63e7527 --- /dev/null +++ b/master/inherit_graph_173.md5 @@ -0,0 +1 @@ +d6974774dd6c4d15df00f91330bfb96d \ No newline at end of file diff --git a/master/inherit_graph_173.png b/master/inherit_graph_173.png new file mode 100644 index 0000000000000000000000000000000000000000..498b620e2ac5f59e7d937f9e97a2eed78cb2897e GIT binary patch literal 1651 zcmV-(28{WMP)ZLtUWJBG#=t z&JnEg!D?EK{uwdI1-k4>$qEaMXcj#%YRr6KET+NCBn#0@+rTtYD|A6_*Mp;RzuR{1 z{Mu|kzOP5$`+h(7`M3AozB_IhMNt5OfIzU;2_O<4q#*<>NJ9u%kcJSjtY;p$-R|b* z=Cw)%ktpomz1wIsh7SL8AM$#=j~+dWdrF8zqPMr#?RGO~)`uH)bacckA4KAD=+Gh7 z4B8JNU_lx}z=AY{fF<4V%*!V?kO{A18lg%T7Z+73RepZ{G|*9zZ(n&iA0i~p03yH7Zw&OD=R%7Pfbk? zhG7bYg5{^Nu~90OhL6KhsZiXE=_B8|ZYpjT<+XmzQtZvgOK^D`R70%XVoQCge_Qh$HHR4ToH|2{=g!^6W#Nl7l3%kTHQ-R}DOdfJQ?G2EM6 zE^laPSb^tgg-1+SBocLXb@0nq zO-xJx07gbeSjHS0iUvuNOqD-*@`SnC($Z2brOEmNgFX_3Kx)S`7d=fBt+d_Td^@ z;eIG1BZD3Yg+c&;-|rtEA78g_U0z<^${ey_Ue*T>9_;Ao*tv6ON=gcbVFrW2=koyo zBofJk2MBPPsUUF_YnSS-!W%>x4iIXOAU zj~{orTomVfr&_I6r_&V|7kfM&?i>PvfYa%$uC68sVs>`+)~#Fh_4VARL}S(V)VaC2 zfk5En$B*m)0@x5!Q&Uw{RhKSZnw*>r27^|sb!lmdUQ(;o4u|9Q>(`~FrF-}8U0ht` z6_KxJUI>N4kiw>?r@4)zbuTkB^VF$RZ{ED=>FL37yt1;AAczYWE{uS8jWJHxVE;IAc%p10hi0A*Xz^L()d;QhgH*1c6PQ(rPAqi zA3l8e_U)U^W_$YdDF7fVD{F9YF!b3liE&Tu_xppv;HFKRHf-3?+uLikTIu<&uC8FHLh)o!<^q@?hQ$k#J3EEdbm%#27RQmIrS&m2VT9t(j$uy5bKd-v`wD@v2e)Y#al zR;xQZJ6TIjO-(m%-YhIEjJ+0aFy{BG-EOBhm8<0)@&AK<_k;O@&_DW&5s^S34IyAb z8bZK=G=zW!X$S!e(hvd`q#*<>5&j!wx7*{N2O?4M`Fvurm^l+cLlqSj@yZ90kZ3d- x<{^fjN+Tda`ym7@NJ9u%kcJSjAPpg4`3-N-)|zTccXa>&002ovPDHLkV1ghxEjIuF literal 0 HcmV?d00001 diff --git a/master/inherit_graph_174.map b/master/inherit_graph_174.map new file mode 100644 index 0000000000..382d5c8f76 --- /dev/null +++ b/master/inherit_graph_174.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_174.md5 b/master/inherit_graph_174.md5 new file mode 100644 index 0000000000..51db3a1019 --- /dev/null +++ b/master/inherit_graph_174.md5 @@ -0,0 +1 @@ +22a6366b26c76476bd4c71bc0a36fea0 \ No newline at end of file diff --git a/master/inherit_graph_174.png b/master/inherit_graph_174.png new file mode 100644 index 0000000000000000000000000000000000000000..6a3d148ebbfaf89541aaa0c74e87918b53c7b890 GIT binary patch literal 2078 zcmV+(2;ujMP)tXa(s(X21JNMpU}B$sHe)siG%aFLoXmGMF0JRi>UuoED1 zkbur}exJ^{&c$_I_x<0^eK^-q0t7(-2NMMOy8s-ofoq8!a4oR|t|fK|MxJzccUMPZjwD9?SnM`Io{cT;2jg38c@WAIK;dp{ptL^UYMp}X$otm4QeN_*R=VWAL*je!X z5N;0OTq!bnwA{}@<-sQ`eQN?u43JdlY0lF>=3JReAP^;DcE@ycHpW-o1NuIvoJOb;gxMhWYsMqvODx z5)l#c^yyRh*l08o2!z?$SyZ#PZ1Hw@xGwMCzh7BdX)>9P966GmoefVxc6PQ-r)z6# z`~3NHY;5eaXU`fN8)IW*>+9;NW0U zQBgxf!?$nWu3ftZ8_{NTKeCH~qs7hHLmd}Fpi-&qEKcEYI8{|u@bUEYGyuS8G>(jn z008uQy`8gdW?|yvQq^GAhH#hIxxsya95eS5Wf&!z_2moL*nM$Sd+_`gcadCNh zd2ipobtf7GLGkhNwo7OuI}Y4w!LCR5hi1=f_dW~;!(y=v4Gq~R2wG{1uV24rWo2Eu zbm_~NFIKBnp-?O?F2a}6($dswbx%)EQc}{sefxg>`h_YZ+Q_IN5{WjYCnhFbJ1;eR zsPLMWk&%%?p)fBm@56@=b8~Zbb#<++tpI?H8#fLN4A|xfiJSL6X0zF9wXRvSCL|<8 ztJNwL3fSJ!(NS7j`svfBg@px+#R9vz&bY$JsNizB_4W0$v$G>3BPAszuAP^fJydw} zH%UW7!}jgllarHKELLxCZ(?F10HCuh|uV!UsQ79CdOm^td zA=sXfkPsFYmYSMMrBW3NMN?A~i9|w`5p85t$mQ~>sVO?0E))uFkzL?)_E1595O-ot zO-=CTk2VU9?}2+>$OdJAJ}bcS09;G#fNO~za4oUJ|3b^Zx@qb@f0>qpgM$YT9;DG| zR4O$!HTBi2SFqi6XHBcs=I7`8s6_t}a9UceR*goJo0}__%N?&CIBC4*Ao;`c&)G50+83PF9gGx7_t^Xn3y?a+uQW6mn!C){-OG^y~gPnuPWC8&6 z_4V1=Gcz-7!->#w zMq_GfDw#~)x^-(!O$`8Ga&pqK!otGB@bGXpn|_@6UqUI6hnVzm_JGNuf~e z*s){n+O-miIXJ?biC_`=g?wPM$p3+1Uv# z{Sc8(r{BDJQ?J)gO-&s>d^jT`lA19GW>({S`?JO3{MZp$} zrM=hBIf*^!4?F@RyI65 z?BY`t3PmcFG8l}mt}fuL&qW{*+^>O7r~mxhJIG?Cg|CBw=A;?&tb*_+LvK+qP|!%jKh^qjhz4V`F3R7e12l@$s~@G>t|xGcz+c zH&-FX3<*t{n z?{V_CLH;EuC`cd>2m}JhOLRK@#EBDfx%|zWHx`Q}CMKr7z8>~0E-uc`&%bfwMr>@X zXD=41RI200k4HyG)9LhM$By;%^n`?j*!fgdRe2EEcOW-U|NbTk9NOC2s8p)It5^od zd!K+?m;OSfQUwPG@87@QU@(-Fl!(P*e^-Q>0NOA8i$EY~Zf=f>iV_NiNl8h8{&ngM zd|m#_x^?Rs8yo#y#fre!C3e8I#16QY*a6oPJ2<)bar_4rI01-OtF?Op__uYrY11Z= zNaWj+a6E*^ + + diff --git a/master/inherit_graph_175.md5 b/master/inherit_graph_175.md5 new file mode 100644 index 0000000000..72d0c4f8d5 --- /dev/null +++ b/master/inherit_graph_175.md5 @@ -0,0 +1 @@ +3c1f19d66c23dad882e14f37e7fd862f \ No newline at end of file diff --git a/master/inherit_graph_175.png b/master/inherit_graph_175.png new file mode 100644 index 0000000000000000000000000000000000000000..ac97c19faf8131fab220b463b73b41f064a82f24 GIT binary patch literal 2042 zcmVyNw^q5&;&@PL`V^M z0BR)xQBy=jykZO{RE453(TIvP6$C^d03{$n5)6$7M1m4&EtggSsffr$gYBG$iOrn0 z^b`(*N6!A9X4YP__S$Ry>{*>m5gf+>1VRC{-<<$t%>uOrp$e!i2vtCBL8xLK`J}V6 zv!tZtcclXP(+Lg^&dJF!oc?X!QmfSu9z0m}lpt#Xxm@1a*-5snGj*!1tzE5rAZv$& zgajiC?6)9P0ks983aBjzRjjtQf`Wo>-MY2PlNuNs8$%F8tJSV-ST2_}2>(S>Q`7HGXZftoLiBolYip}OAP|ei z7TmO2ZA3)G_wV1^+uPmT+>Az#9zB|sm1Xpf>ff*&ZE?BWGiT03Mn}*m}Qdd{kzJ2=;1PKZXGKy1FROIF5WqNED!!z;Y$B(YA zu7>_*|Ni|E5fM6_Zf0giBoeV$EGH)?48w+phY5$#(NPS;P!!#~d2?M|ot10EFbqKu z8jZ$gvkMCg4PPQ%y?T|+X4C2P(9qEC?rwwsyLazQ3t|=~llk=NQ{q^o(I5yiH8lm6 zQdM%aH*enL=jXFntn~DB27|G8@7~4c9UL4C2?_D?@_PLEF^Zz54nm>O&dx4AKHl5g z`~3OyDwWErN-fSZ_bsVZT2xdtHa3=;nwpZ5LXfez%jNQanJdA@jT`UXyO))f)!*MQl}Z~M8>_0SY;0^&Q&SZR#j|J6Mn*<_ ze0<{K;`Dkw03b0jasB%BN~N;CzTWz$b3;P|j^hgp3lASYtf;7{s;UA23=9n9=H|*| zvd^DCU%GUOFj^?cQn9kC0D$rF@zT;#KR>^)u&}AAsmjVql}dHt!UZ;)Z8maWUte%= zaBOU>OeV9nwKeOrWy=584KN(9N6320|4gd=ZA)dY;0^iJw2Bf&(>?vV&y`}SYK7K zSX@$4($mw!VzCY!IMC72fm_@u1p z&CRuZ$zrTnFYn>uq0{N!zkhE$0d3`fF6j08w6rt~!xRd|ojZ2`04x@ZMx$x9TC!Gn zJRXzDoSmKh^yw3Ep_M(v`1p8oa`M@;XGcdz^?JQTBKi6ACo#n1@tT^NUc7h_85tQC z7B)9Gx76hA?d=W9GbFYci&fRt)%D1cBd=b)YHx2xQ8XzjiNoQXK7D#+S6|+#51W>gCB478a`2YN=FOSy`E#o!!^h=kD$v z8yhPS2nGfQ=H}*JzI+)M7x&}G4^L0e9Xoa$I&^4aVnU@-oj7sAn)vhc^Lo90!-fsE zwzhJ)Tq2PW_Li2GlP6CqmCA*M1)WYuxLKLA0WOzYUS2*mH8ngueEj%v%g&2c)xg%R zTg77W$jC@pS(#d`Cc2u%C@d_@&(DvFifV0bH66Wu`}X|&d|h3gLZK)qDBy57OI?}~ zE4iu2WU_7BwnarnaX6f=uC9oP2mnA{Ufz=@PwegOO@AjYkG8h9%a3rqm&1n-3j_i?J39bCb#?X3%#5d}Cx&6Esj1dX;o;$N z@#4kgRx{SZe-au~@6sG8haD!wiuv zV7978&}g*XyLVSqRQ#h@^YinIii&tVUVVMN(NJ-5@%8K1LqbBVUyEfB@^iYTriN%* zS1LN>{{!)j4fzAD|LD6@$Ql4@3qlo8TM(*%+JaC8)E0y)ptc}X0ks983N!y9tEs73 z{X8IlIvS0J$z+l(X0(- + + diff --git a/master/inherit_graph_176.md5 b/master/inherit_graph_176.md5 new file mode 100644 index 0000000000..8876f96c5f --- /dev/null +++ b/master/inherit_graph_176.md5 @@ -0,0 +1 @@ +43c76b451db9f86615fc03968ecc524a \ No newline at end of file diff --git a/master/inherit_graph_176.png b/master/inherit_graph_176.png new file mode 100644 index 0000000000000000000000000000000000000000..a58527d5409bb4703fc3a99ae545373b7172abc9 GIT binary patch literal 2706 zcmV;D3T^d?P)P0y>Q@$eYq44jD2hYo=|V zeOS1$w7s{5Lg{jT$xXcH+~+(`@A-3bZtuTxL_}aP7C%isp00qwa26(3hS$Kv%J3SP zSQ%b}-^_;2&Q2USaKIC_Fc>^dO-(j!HY=-Mug9@t#}=d@24f}$gTbNxY*yB3>?xbU zm~R>z8?k-+cDsFS&&u!`m{=KJ0~0I5Ygm+GRVWmwsj2aF8D2|tbTn#fYdu|t+gX%i zWiagFaj|aPxDkgA9h%b^$;rv!IL_)wPENMzZ*6V0$^H4~p9284ZQF*OJ9pY0KQS>8 zg@uIxfWpE;K8K&5!!J_=Yb`D=wrN)=6!`e#k6j*bHi+G?#frzp>Mn|kianl6^g+gI>{POa0L`6k8Ja-1AQi(fv?m(y0+3inGPR6QLt8nDV5v%rt z2MroDm% zzPGp6;d}@okx1~_{$MJu}vz=>q;I@_Z+i$-`d3iZ*-n@yOJ9i>0D~rFm zSy@@=>FL1_Km359p&`V^#^TheQ>d@6M{H~?bUGb~2wh!W?kdNIhaY|zpMLr&N=r*| z_wHSrejgtn}Uxn7}h zu3o*0l9CeC*4E;WKmI^PMTJccq4}6AvzcqRKr?7)XdpYyg2?4^s;sQ!&nG4(2ml!j z2D*OzIsu@*zCOFLv9YnF)9I|*;^N{+tJON4KPf4R09YNzj~}<{SF6=zu~_KYXP>3g z(o#NmMMVXF-N?uY`T6-#S63Gi5!Kh%Q*dxFO-)VN2NG zpsK10CX>mf8l4#@EiDZ#EiE{A?i@C6-i%F~HsSBT|8^;lJ^cOstwcRGHs*A!*j&$* zc~?qALOxgjmCN;sjnm%V zjt@Tg0R8>_xPSjX%w{tmGgqRcqoLF3FgZDi>({U2z4zX8I#z71=gNXCYqhntc;=aB zkd%}JnM{W6?rtO|CISH7efM4b_~Vc8_xE@BZGgLpii$#BULGbUCT#kAe0=ccn{Q%h zXvprWT2oU4j^mJ)mIkxg%zsZgK0c1f$Vhzl*=NYi%tTO75cclfi}dt#m+KQ7Cm|sL z!NI}UvSkZatXP4nswy-#HXiX({gAy9WU1?(W9cty>-1Bj0)F9pvZd zqqDPfAgLFT=d7(!%qk~j;S;k5Mn^|OtybfO7hXVMU?A%2>#cGtl}g0K#2_ap z2d%BG&}y})si}dludm%&b8>R9bm>y0r>Enor=G$mpL~MB!9j=j-D9}mdYKn)-n>aw zRaLZM!v=cv(ML(8Qqh?+XUJl)h{kT+x|QPNrlzQ@tc*fJLdasVP;YN9J@n8+)X~vF zMx&8BJ3FbQq=b*P=M;0LHlf@PVltVir>BRaqN3>N(W6$iKmPdR^z+X@lgVVVoB#On znQ1eW z%jHy7R^~9jPNyTaT21}^{j_V>F8bw{Unn&-)uFKMaqHGCN=r*40Hju{osOF;3t|zR zEgFpm2M!#-g$oz3X3ZMp<>jHHqeJv{uaF&0uh+xR&kvE2k$l^<@kOuK^KFi-Zq8Wn zW?P$BZooO4VMIiP!?Bf0CCbXmuypBC0RKG@Ha9mr+y+czHk;Ab)`sltY{+CXOiWDR z>#x5?NlA(D2VNjNF4oY{P`v&2+cw~OYw+-A`8Xs~;&kR44X zlVQ`QO(-ZR!06~G^m;wsdh0E0*|G(zSFaYWL(GCFW^0^_RnA>DLs$6bn{Qw=8u8tC z-=VLs5BvA;hfF4$*POG$g+0TfV{&qm^7Hd4JUpC#IJZt<~lxtxw1Il`YCjYfW-`OiQ9kVd1SsHiCN_xC5cTyFIx{4Zc) zWq1uttPHP#iIw3sFtIYc1}0X9*TBTe@ERQc2cxgP`szZ~!C(M@jR)dEY*yCr@Nm5H z$}96)5QE_eiA3U1e>QKh7>q>pF literal 0 HcmV?d00001 diff --git a/master/inherit_graph_177.map b/master/inherit_graph_177.map new file mode 100644 index 0000000000..dbd6f15e3c --- /dev/null +++ b/master/inherit_graph_177.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_177.md5 b/master/inherit_graph_177.md5 new file mode 100644 index 0000000000..b903896433 --- /dev/null +++ b/master/inherit_graph_177.md5 @@ -0,0 +1 @@ +7359f67603df950d62c2f69dfe3bcc53 \ No newline at end of file diff --git a/master/inherit_graph_177.png b/master/inherit_graph_177.png new file mode 100644 index 0000000000000000000000000000000000000000..a1adc993affd815e700d01d765f5f4ab9367918d GIT binary patch literal 1988 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 W3jx3fn_n&f0000 + + diff --git a/master/inherit_graph_178.md5 b/master/inherit_graph_178.md5 new file mode 100644 index 0000000000..20d385bdc7 --- /dev/null +++ b/master/inherit_graph_178.md5 @@ -0,0 +1 @@ +e4374093e113cc77d4992d01ca21c9ee \ No newline at end of file diff --git a/master/inherit_graph_178.png b/master/inherit_graph_178.png new file mode 100644 index 0000000000000000000000000000000000000000..b92160847386f9df4a1970917688f686a03601e2 GIT binary patch literal 2648 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 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_179.map b/master/inherit_graph_179.map new file mode 100644 index 0000000000..f82362754f --- /dev/null +++ b/master/inherit_graph_179.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_179.md5 b/master/inherit_graph_179.md5 new file mode 100644 index 0000000000..054c8ed437 --- /dev/null +++ b/master/inherit_graph_179.md5 @@ -0,0 +1 @@ +1aa0181da00cf85eb778188529645f52 \ No newline at end of file diff --git a/master/inherit_graph_179.png b/master/inherit_graph_179.png new file mode 100644 index 0000000000000000000000000000000000000000..957cab858bfdc228048caaf83e58d60c817efebc GIT binary patch literal 2721 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 + + diff --git a/master/inherit_graph_18.md5 b/master/inherit_graph_18.md5 new file mode 100644 index 0000000000..0bf11c4ca9 --- /dev/null +++ b/master/inherit_graph_18.md5 @@ -0,0 +1 @@ +a5069795fd9c08dd581130a2ea74d953 \ No newline at end of file diff --git a/master/inherit_graph_18.png b/master/inherit_graph_18.png new file mode 100644 index 0000000000000000000000000000000000000000..e78f3cb26d002b32e899b2c578ee2d73a1b4b511 GIT binary patch literal 3076 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 L4E@s3`O$v?zmvpu literal 0 HcmV?d00001 diff --git a/master/inherit_graph_180.map b/master/inherit_graph_180.map new file mode 100644 index 0000000000..9a61b609b6 --- /dev/null +++ b/master/inherit_graph_180.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_180.md5 b/master/inherit_graph_180.md5 new file mode 100644 index 0000000000..9e457140a3 --- /dev/null +++ b/master/inherit_graph_180.md5 @@ -0,0 +1 @@ +1042689ca96e0388d63361176c5dd70c \ No newline at end of file diff --git a/master/inherit_graph_180.png b/master/inherit_graph_180.png new file mode 100644 index 0000000000000000000000000000000000000000..ba7266fb318a7ed9010ab6e9ceffb3bb2544d5d4 GIT binary patch literal 2606 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 + + + + diff --git a/master/inherit_graph_181.md5 b/master/inherit_graph_181.md5 new file mode 100644 index 0000000000..f1779365bd --- /dev/null +++ b/master/inherit_graph_181.md5 @@ -0,0 +1 @@ +dd54bc0b1b49f957a118cfe1857bc3db \ No newline at end of file diff --git a/master/inherit_graph_181.png b/master/inherit_graph_181.png new file mode 100644 index 0000000000000000000000000000000000000000..7d71d191107e2a464d87747a4b229d0f00093013 GIT binary patch literal 3982 zcmZ`+XH*jj*N(UX5|jYaBUOr&(3>5f>JuMJ03rX$!bWSp{K{CIkpU zq=mASAPF@T>1_#wPNclUzUO@B`}5wJGk4~kIWxCB_qq2bSeP4JW8!53fk4-c4E5k3 z5M2*&FUm*D{+Vtple z=}{#ctgUUBj+Vj74f_*M=hK>Kdlw3}_0`C9XAR@w3TYbtdpuFsCIn%$>1st6I#Gkc z47-tI3GII+g#vn5Be>yrDJwHgT{Uc!|4|;jAM6-aJy1105N(kSHT<#kMMhT)MakjcRSbFcw6A84SMA+|1I_7ur=0x~ZX%`}y zUGSYzE2);FKZmD);uZ87d? zHUWWvykSpaZSAP;l$)KKJj}^$LE+(htE>;=I*N`zrcz5sjz-EGn83v&BW5KLj`wrT zwAG<0+1WOMfi?COVo{{=@uTHG0u;6?2`V%}EB{je;8%-?Yb>cYR;OC(#{}cz$xaqO zNbS{c6%~FK7DLp9?qtNIZ&qfeE4Q_k)ssrP<)aAseM=G|D(b8)nqj~xM!&Ycel$YS z&)7IIIyyQ5<#xJ1)>7-`VE!J74GFj*)K4JbGgJMY^|Z5$pCAw!77~lQ$Li|p%P?f6 zT=-6R_j%-8d%&lMsxB=N_scq2-#NHI%+M%zcU|E$-{~f0HMOJSY-fd#M-MH^N7xcP z$n}2iHK7}$70a;h{(c1)&*xq4$2&`SJpSoeC8nX_@bK__?NdSgL0Vec$w`EOfPjHP zcf(BB(})O78JP+!R$WR8+)-U!EeF>rE-sFWiXxHg=ouJP17`jKWPX09i!Wg68_EUI zU+IK%cX#KMwypLdilI=bKfg9Ma(7f$R>II02n2g-H$pOtQ7Fw2?Z%yi-=R`(-@g4F z8n_wtS9$r?6jp>S;h)XT%XD<+@9*eW#NDZ@si^@Bl9iQZU|>iyB$3G`WJSMAq?tXQ zfZ$+djGWVDONkr0MQ^#kXS+nHFN7#9?fi_pehTGx7QVrMMB9)$q$CTYKYx~9)l$w_ z%IKKW)6@HGk6CY+jS{i1n@t_!5Zd%JB$QM#t|73$H89T=X(==*+TO?p;CE+6>z1#WLCPp_Z0?)-Q$yzk`gMFnx4+)<>iI3PhJRx!{Htt9^v6X zx3{ZprL{vS(3Ax!n@Y{Fy;9HFp`jrWgA_=^A!S+$!dTj{03>L4*NCMlY#&)aEQA^v8NuP{zXcc< ze@_|%HnygwCVuUR z#$Q(kIi##hEhUkJCMLoC5<;jlfRx5S0FnKd-^9lonwaoGp#X*)F~}@WJ?6UIXDfrz zA_g#gcQzKg`C}J6Jv9^ZE4k=+WeKw@i}G=$_#H^g6d(`?h1@sY3nQbW@Q|_pOQKoB z^VsbnejYky#mUIQvc(0p{PYWXz0hb}?2lZZ!ffn)c_M(rZEf#OmA#LcpCx6km)#sp zFX8tT1D_uqh3e~HiR)NfT^)kGJSfhpzvaY^76Q%8%#2mJ2;96m@b};L)vou<%?H1R zAKtlh$I;2@DH5rq{MqH(*?7%kwUq44%*CZ8pGhAUIzJJ=kASQ40W-}mQO8f7KZlED zaByVzn{m1pP!v}`ngAvW@jHt88d+oZ57 zhIBsghbm^5x=Ya6z*f7~ERT^K$<4=A{QO(tVU)e?&;r_D$X8%6Vp&l{Ui3S_d~7R=$^W*}~fTL7l3Sk}J20ipqnjfu5eD)eouhWTu#QB5@ZWRkakB zYuB(i+(T2-A8O{|5O2O<{igErq`oD#iP1v8&Xw_qBAB#iXmU(#tzuwDR~NmIlDhhf zp9g*_f5<=>Jx7JEuJIXH-SsssAET~gOa#p#U?9&F6QTlb*x;5rFo#= z>ItXyEm;E%*&y4vI5#&}OG}FseV1G+HJp%;ApS64T2hjimzRl&>2Cso<@)slDz!*O z0s3|2d5Z z7u?tsya5!|^z<|fzvk-V;$AygRuD~3Pd`i~Zmh361BCS{MFn%{z3QvvcY57xA|fM+ zL}F56qM^>PqORe_1c{@lrKQEkY7ojVxomWAiMt*tzYv+sdWKKpvaz;i`h_k*?@Q#*gS8UFv0rli!;DDC;3rR> zgolUUy$kvdcX7GMSAW0hBoOf)$Xe%x=wa+5=Q|TtS64McDC3ip!z#$F{V4*MWVDPl zfMdg3e-93FCgCX*3NVHF`}+&0^$ZMDU@!p1!*!vsFulDR^J^QP>5LQ+yP|y5#g1m!*_7+lgN-B)Qy(6@BfcCDan9-PD`t|E+EkV1y zvNB%>)p7v)e|cG1;o|4d2j;CukJ{vf+4%SdJN1695x1_hq@vCvH+nOYznw{X)!G@0 z4wNMon>ewtXKxTU-!Oy;_A$DkU)|kaFRx;oohps2f1CS3B&6^6?X7R9Z)Ihnhm>0=lnr{Q`Gv1m zNCSkv-|NK-^;kDw6%8dN(!|7ZX97FPZ!ZCoP|0Z4u;UYBaBfs2ACgXRcPqC(rcBfp zVS-aFX@j)=K0n`OH|{P^hoSDmJ-3fsD?oh$yz#*xbx=^hNvx-z?k*$=fA#9sNg04+ zfMJv)32)f_-=MCKl;4Cx0Uw|@Z?Ztufa&qEmzM$A@Gm5#pX(a)*d3f%gqh0Vk(=T+ zR1I}@^1F2({rY+(%k>mnyP7QHeSx#Ldk19s2e)lf!$3oE`Mn0` zKPQ9M$1)$9Yqx~foRZ3xV`I;|1M`k7&0J=q9v9RMS+Rh+KCDEv$(c%KwVcs5-f@CY zFWa^L_z1rp*YRR0%LbTmw1EWH)zwYx9n2^3%eJi6Jk4I6#87}qelTAY6~+ewyNxfB z$8AMLD-4b8soQg%$Gbo&j-69e{qJWny`13jXlZSCuZ#!i50Kv8x#!s4-d_YM#5AGImI@^njk_YO(B z0~%sqWY2j3tTI@WP~FFmMbHA8>~cpMvHyPl#{XRPs;e(vc-eNsaHamY$1g)}`CdF5 M>6`0S>bk!E5B7Z0(*OVf literal 0 HcmV?d00001 diff --git a/master/inherit_graph_182.map b/master/inherit_graph_182.map new file mode 100644 index 0000000000..e5d3a3ca08 --- /dev/null +++ b/master/inherit_graph_182.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_182.md5 b/master/inherit_graph_182.md5 new file mode 100644 index 0000000000..f03eb60eb3 --- /dev/null +++ b/master/inherit_graph_182.md5 @@ -0,0 +1 @@ +a86709310697d6c7eaae8eba7c0fd564 \ No newline at end of file diff --git a/master/inherit_graph_182.png b/master/inherit_graph_182.png new file mode 100644 index 0000000000000000000000000000000000000000..c2e5cd10adb96b4575a427bb54c91a8234bb42e7 GIT binary patch literal 1966 zcmV;f2T}NmP)PlN% z+pSx-7D@^tnq*{Tl$4YNR{yyk5Crk?;lrp)LPQ%J$J^T4s1Z)^PK}L?(b9uh7!Dph zNQk5&6}S;e-7gl6B8zr zNh+1b#l@XEb?VozUj+pP9UUFVj~~Y{OsQ1T@|ex$O`A3aFEb5#<;s;^yLPQvv&P|Y z{QUXTWHO1x;@H^O+}zyHpFhLhnBpO!-WMt=Dx^{=kH^c*%BJf2679^JoxpGgK&PFjf~D=tZ)zP_Fo35i@Tzj^Z}T!v;G z7#M)xyx!hk+RlMht*o0zp?- z7gHSOq~2?2Vm^KP#N+Yco?*lf4i1V$qQ8Itk|a4cHkOc(;C8!%&nvL}@#9ATfYa%O z@$T+!0Km}D5L2zFl$VzuK72S>22)O2iNd4P>2x|BH8R8Nflw%f3o$V<0D#HKNtesT zX0tbL+&Hs@G^n51{{8!5FexbsE;yY|06=15BAiIF+3bml375;o6rXZ9sZ?55S9jsU zg|xIZqtW>G?c0#M+3j|MAh=vEhGFa1uOAv3g5Mk_2!h~nI1-5juEHB1K@d!}YHV!W zzI{8N&&M##WHJp53`{>KtwfPBXY)jfMB?-Lpj-bLfHh}BU>F7$#9}dv#TpwMqdGb- zFOMlco#c6Wc`Yq1uU@@UtJNx%%I$X3#QXjJ%F4?3@81V9x3;#1zcq+NBCprm-`@{c z`}+D|Fl4R1eEFi+>#ttDIy^k=_xmjti`VOgo2W9Fa?(l^DRcHAB_$>0=H?oW#t$Dp zjE|4oY_{g+W&l8Ze0*0|SKySWL^MyNjkS00-lC$So}M1J+uh#Yo}Zup=g%Le_>>7- zTU#$*zTDT>=ka)aKHuczB%D=H#lxR1TefTo9HmmJy1TpKl{q9bnM|cp6&Du|4-XRr zapue!tyUW!A0M(-aL~1D*K)aB9LFsdOCS$b22;*ymX3+J{M}enQC>l+ii%dPS`{V^04Ognr#_aT z&i1pivSMRnwOValT%5&XX=rHR^Z7LKR;yL3)lxNZxm>kc9sUPoeSJNj&)>Ffn?j*T zOiTvO;|@<4$90YHCeQ&7A95a8{@f5Hyyv4+8yb4u>Nai%UyO zr_*a#nJi}?fd8IP|Ni~EwzjsSqQY*sFSMdX%5w0*l+PtO9L~<2J9q5Z5wcSpQENDW z+wI=BZ{MChduZ_`%5w0*lz6>f9LL+++cPsWgSST18itIFjAUhHB_t#~e*Bon<3;H- z<`rs7W}1EHr2?&gee~#2kH-Ty&A2rzm&-3*x+IlK&1Q2HPi2mov%d3E0nQI#bB`bh zqtQs)A=1_`0HCU>YW3>X#l^+*tUanMb00uhES5|r)9dw3O--~-5w(UPX0tgZC1v;S z-QT}|pKs++V>$R>%6TG5k}j9a;c&?1a@wYdTEp-V4u|vL!Go<^w`ON&kB*Mc_t`~< z<=}%bz+N+(%}!5G7Yc>7wY9~sA^-pY07*qoM6N<$g6~?l ALI3~& literal 0 HcmV?d00001 diff --git a/master/inherit_graph_183.map b/master/inherit_graph_183.map new file mode 100644 index 0000000000..7a001c0972 --- /dev/null +++ b/master/inherit_graph_183.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_183.md5 b/master/inherit_graph_183.md5 new file mode 100644 index 0000000000..4aae52ae25 --- /dev/null +++ b/master/inherit_graph_183.md5 @@ -0,0 +1 @@ +a61a8365a032dc0320a09543d3a72f58 \ No newline at end of file diff --git a/master/inherit_graph_183.png b/master/inherit_graph_183.png new file mode 100644 index 0000000000000000000000000000000000000000..b7c6b0a47d5bbc14c81d4885a298b0360ca6978b GIT binary patch literal 2119 zcmV-N2)Or&P)E+H*;0tAZ&p*?;fw8t-m_V~pCebCm{mY<)$ zSg8;!G(kZ@X=!PO!~e~DjYd;lU2XT22<(AEp=fJsL-#nC8dX(Q*()Cc`*HB#L8Bhx zeve-W?ePntJ$|vb_AC~wxVYGE;h0ROOeV8ixa9>g@A1omYab90@ZiA%n_j}@a!;N- ziSA*sSeGwf#xN@`mkU7<`V;8w+qVz|Q79A)qgYPBaE_CclRO@8=gysjgM(&`r>CbO zb2vDd`I=@u_?`DYK0XqO#BeB)NPK*JF!Zn2>swk{5)%_eB9R5Nk&%(m(9r4W>DJa( zS65fFHmg>xg8${ffdj{m9Yfl`e*OBB4CkXglgYez@nTq57?n!hx^-()Qxnqv*eKT+O`aj$AchmG4*)uAY zYR&0m$UNu$!-o%Zb929Z`EumQk@)y{`}>!a zl)x~oP$)3TxUQ}ahT)l+nI})4l$Mst<#GVP$B!S=)6-=#+34u#jT<+RP7A3507xWK zQc}{LJ9hv8Wo2b-Hrw6Z{kMS-ii(P^UcIW-YGYzzcJJOjJUk2l7#bQXC@Apr^W$(h zI-Rb(yj-bNUb}XUPN$nak)EEOprD|=d-uv@GDk;8OfHUXz$hL+er(iZ7GGcAyu3W5 zJvKH50MKf+YPA{w(AU>zWNgqLAuupdDwSIH9}y8@nrC))wy9-dVPQ;63=G3crIJi0 zcXxMNlPVG-D=TYgXvo>wd31Et$H%9kp`o_6mP{s_P00`l@p=CIdBc#mxA)zHPpkb)0s>;vLk3yk95F``|wOTCzfKI2&V7&+qE$^6>CDapJ_w zmoH(9zllmrOcV$NAt50h9UZn`Aq>E5t>@|KIXgT1>C-3U033i+)2$4IP*haZ+S)okK7RA&O|4eDfB$~; z==SZ~MIzDX&!44IsYatg?xb^(larH?kr5FQ(bCd_^jN>_ou9n{EGMN*Cfl)NM?^#f zgTd(N=m-rB1pu5qd$ysW!O6+Vbe%sBJUu*N=r-6ojYea zRz^lfZf-80&#$em1puhkY7U2EeX6$F{|EZEYUNrF=lJ^imX(z)oPTd`Z?#&DxxMLH z?~gWy2o{3g-rfbZH-O)LJpy9h+e}wi*J7uD4S(~zCknWh`J1&Tu*{Ov-fjh416(c_ zL+8tgC8xc8K<^nhHa0Fqh|{M}r>3SF{VaM(vCOo`s(@>Xo15G7=g*P0R;z^|NT<^Q zTME`j4g~_i%9SglqN28J*>dH|6{S*%)kVOHWu`q=1zel3vS4lWs%_i0iN#{AR(t#Q z?f(9LCX>l#v+v!zhrFeh1n7;PrLeDOp8_u0`O~LQVHl>-XwA*dh_Oba0RVja_H8aF za}}&DFg!fW=koyoSy@@OTo25^tcJUw*r9-n4zX|FKFj(1Nx^z{cDAXhDIp<&!C;Jy zjTIFYnbwUKi{-SpgVa^4tEVPRoKMFld%=kxh|zFw~{FE8hCID>hK z$+?r0li{85_3Ky5#)g8mg#ub{Z*OsNv0N^vP$-8FAMWbvLRbBl0!wk;&jscMTr^B3 zv!tX%r_-s`>fcu0<|O-)~4Uv_r(QWG95FYOn!fGZM-Mn*p`K+T#~Od;DT%PuKJhnF#&@6bgmWBNG3c_nS6tijI!9Z%PDqg2iG5 x1qGpdAYvB}w-EPx{6c7tUkL5-3!y!J`3IVh+s$K=GV}ld002ovPDHLkV1nK<5?TNN literal 0 HcmV?d00001 diff --git a/master/inherit_graph_184.map b/master/inherit_graph_184.map new file mode 100644 index 0000000000..ce43bcf680 --- /dev/null +++ b/master/inherit_graph_184.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_184.md5 b/master/inherit_graph_184.md5 new file mode 100644 index 0000000000..8c5eaff325 --- /dev/null +++ b/master/inherit_graph_184.md5 @@ -0,0 +1 @@ +bb2615964c347960aab982ea2232edcc \ No newline at end of file diff --git a/master/inherit_graph_184.png b/master/inherit_graph_184.png new file mode 100644 index 0000000000000000000000000000000000000000..c1bb1727407dacd4393da79c40aa9f30d1d7c24a GIT binary patch literal 3075 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 + + diff --git a/master/inherit_graph_185.md5 b/master/inherit_graph_185.md5 new file mode 100644 index 0000000000..982ba0a2a3 --- /dev/null +++ b/master/inherit_graph_185.md5 @@ -0,0 +1 @@ +b2445085192cb1e30e91cac17c83eb56 \ No newline at end of file diff --git a/master/inherit_graph_185.png b/master/inherit_graph_185.png new file mode 100644 index 0000000000000000000000000000000000000000..fb3f2f030ba3562f17027fd1a4e3702beae49fa7 GIT binary patch literal 3306 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 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_186.map b/master/inherit_graph_186.map new file mode 100644 index 0000000000..d3b6af43ee --- /dev/null +++ b/master/inherit_graph_186.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_186.md5 b/master/inherit_graph_186.md5 new file mode 100644 index 0000000000..348a863db3 --- /dev/null +++ b/master/inherit_graph_186.md5 @@ -0,0 +1 @@ +b12b02a6df7af967b2af1c26c29d731c \ No newline at end of file diff --git a/master/inherit_graph_186.png b/master/inherit_graph_186.png new file mode 100644 index 0000000000000000000000000000000000000000..270d492072f063139a221b3c21aa4ee9b7d0265d GIT binary patch literal 2732 zcmZ8jc{o&W8y>PuwAh*~iENRr3`U4B_KC4(DSI>4R0fkJL%%6wNk|%%VeB;ssbt@? z%OEpji5SW;G3_*ye%6BD{{R{CVoLy8=N+y@lV z2lGDUpAh%|^}A|2XYW1Zn$lHd)9pJU=$YGTw6|0m5r)fCSB3jqo9*w0P**e>?d?6AQqM(n5P?7~>(|#(h*X@| z$%n2SgMI>C!q30Ug+)X(-DWc%z2Dl|S(|B=nwk6dEoyh`rfSr}@^Z2?_>P}p%oa{M zv8m|~2BWe1M)%I%4*ub}ID?)wj`ZH%-o!-kird{qEv5Y#V*lXaT5pzeZ`$RGD^)c$ zPfg>B+sUTM!*R6t;md1N^;OFR0)ZBB7&MTP()~s9LKNmpS8A|!^gxc5ZLWSRJ#KeP zP*}Kq_69`VLj{s-Zf0g|V)F9k%g9waUOEv7l5$_a)>Kwjp3~C0bLS2?;gyTZk^7lB zIWJV4-ebSZ+;9I#rG`aDR+g37^}@8Zg|2dgf~OnmDl1v5jJF`%?Ck9BZcLR6qFW%X z+uF+NR%9f)hW6mWgG$fl;xC))>o*XHl%k@d^z?KR$ul}y&(7>QDm?bKelA>w_R9Ni ze0(eL9?N5M+@q$2yLEB~>fr^t@|w?js%vVfBO_5!Q4wpCVi3r^Itd8G*};LmKHEM% z?tJ=m$#Hd$$);FFPtVt`R0+i-XJ_X?lr=shLrBE5yStk;RUf%LUJhUbU3748h>3{- znEJ()l;k5P@J>S=lcg1Yr%LikzGuwfNFZ zQ|!~x)#rMV+Avsi%yxA_K|7tUd-g0cA1Tmjq2=(S5g@N8^E59nuZf9?Zhf&Q5t{=s&^|uojmN2}mry8$TE@gV>&usqkDIDx*U*Cd-FI;h1B;h}LPOIoSzy-Aj5)#5@4!GCdDnju&B@zg&(O>80 z$PMAY)~=eHo5#k+avAyf`1omvfpG1!^NWj8`q*I_%~ejQF>XJ%&1qLP{-S`G*m(^N zV}zi+iRcxz<8kE;MT4sVZy;P*nbMn+Bv|Nlnv@}(PEU*%)^hmeM2sbT26j#c@8ekV z&p70dvNPpj--2gTjGb1?2(#WaG?eu~QV+Psr>4r0iiP%Nw?dX#EKfJLoy}E7sst!dy|2^~OG`_VVcbb6sqDUmC!&&Xr>3UtL{ihzN&^1s zs(?aSSsWsv2cM<)_{GP^k2xRL+V@ra1I`qeo8LyuB=sU* z(N-oVCi3#6DN|G`^}`1XX#o|F2A4Bg({*8JT|EzxduL^2W#xr>HWvEW8yhDLV%}lC zj#wT;q0#Q{?)+SwzP?{#e{UYd8%s(`l10lI&#Xnk~i{7-le`nXPJI(u;x3~a#t`}ZY8MJMQV`^3E-d6OFo zzp1y^KN~qYWg!%xnwrl-JT?88D2*8T{-vc-5{Y#8u1RDhtn3x4RvGFnTiEgG)8*t| z%d+zF@S8WcqoIfVVLc*zo$SRSys>vwlrG-I)032){R!|Kz&;TOgvGT#^Yml8G`oNR zB`WjYy?dGy$EYbl&H!Z~DT#0O#h6XT*r!jY<>Xx4+|1zcCpkISXPT})_X`SI-uby) zPNAH<5Y>UIsr7lTKz|`9ZVH*Fz#2L_;9`4W(^+goFg=a<{CEjFFKMW5J&yEulG=!l7?UO3cq>>FVgHxK_heAk9%f zt@4qj!c6w|^z?M!W7Xv3#^Q9C2mkmkka2BBl}&6310s zkRBce+S<-`c7jq;X#^UB0a#bVZ8pl!Pfkl~Y+^!`P4wq9wF5*|VoUP*b36 z>`b?3Po5~MsvhR&hn_uqBP^`1zrUj`|DbemmyL2yTYEbP$T)u;P$=RaZAx+AqvSDvA)`xw*MxV`J1R>()b~;Mq&T zv}!zEs{9lDl3Rs|xZs|fEC_c+EpB7p5{uQz?ptNChCY0dh6o@C0rIr!Ykfyf=&S=J zv$|SC`>CY3c<;ikv=isagV9_@gCxUdz%oKZLvx(^=*G)h##q1%vy`@eE?*Ax4%f27 ziaa?>6O^^&YsA-`CQDD=6?qA_X?dYhS-^uTAO2UmPAAtBv{@IPk)Cgi6I5=L2?} z-Itn_WZx9ee%R& zQmj?~qruj8*c+?Z;NW07gF(#PSAGID;%IBzPt$P@^!N92{8Q;=!-MBI`r%Z{fy_f~ zI%j*N|1Xep7j12Ag|c}4j<89@{>jN0#+#6u1wOy)uR<8wVPRo0{0VJwreJT;cMAXQ e=Kj~#?H;heG2qsdsXIXX39>Y`fmaxNCHx1upgh + + diff --git a/master/inherit_graph_187.md5 b/master/inherit_graph_187.md5 new file mode 100644 index 0000000000..a6db4ec1db --- /dev/null +++ b/master/inherit_graph_187.md5 @@ -0,0 +1 @@ +5cd8c15adbd786f54a55d1c91f33b220 \ No newline at end of file diff --git a/master/inherit_graph_187.png b/master/inherit_graph_187.png new file mode 100644 index 0000000000000000000000000000000000000000..b976900d6507ad97e16e4287d2fd853b5be65ed2 GIT binary patch literal 3212 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 NvM{kVt~W$I{tpC_9S#5h literal 0 HcmV?d00001 diff --git a/master/inherit_graph_188.map b/master/inherit_graph_188.map new file mode 100644 index 0000000000..f3216fc3ff --- /dev/null +++ b/master/inherit_graph_188.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_188.md5 b/master/inherit_graph_188.md5 new file mode 100644 index 0000000000..fdce7f3b10 --- /dev/null +++ b/master/inherit_graph_188.md5 @@ -0,0 +1 @@ +192375f9584a556e419aa815e9c3a12c \ No newline at end of file diff --git a/master/inherit_graph_188.png b/master/inherit_graph_188.png new file mode 100644 index 0000000000000000000000000000000000000000..fbdc567cafab43f3b3247a6e2473247a6d762f8f GIT binary patch literal 2517 zcmZ9Oc{H0@8^GToCAQMm8hbj3ZEA_CPWx5VzC@&URVG6jqNa959fGPz?Zp^W?W%TZ zLt9jAkqT8LrPkV)T7s&yzIWz)e|_hkd+&4Zx%ZyuKFja94>4#nA$}M?002T3=EhiX zrh^>`bwC)M=!>ASS`HU9!O~Z~5b)aPCJGuE zH1sQE|10=6$gi!h-?(wZNlmQ3Mp0S0m&I~9*tw?e;^E@R933QD=_oFZ_jbZE3~z> zS?ySaex&8)=c7a$ZwW+#A}cE^Bq(SvDdBIZ1sA0pn`k{FUQa1$Xu#B& zD3Zx!RaMoM{r-L^UWlLomWDBm{ZU%FN7+mM!- zN*n>m&>v**`A~lTwm;{LVq;G@oM>0qzwm+Uo15+~E-WTkDeU0kGqPA2nZYpcUtggx`Ct*tGC!B}5k z_xJO=h(wl^mzQjgjg9T>?6|wTH#av22M1S4<+rf#WP3FdiKHY2RnpaMCX>UWqdA~i z&pxD1Oypilp-?DkX~JoJ>nkgHfBkju_~3bc{TDFIwjW0@J|CaGeg!TC`f0b8Rx;#m ziV(ds^QN$SPAi{YQK1|j9u9P_j#jFxskOAW?sWX((E0xT?#EVt6bcn``6>uE217U? zJUCcaOKW>~R|ko-wz7))#$LrvN1TBe@d*n{Kq1l>@ev@KA|sF5Lf6GZ@(K$4y}cI~ z7rni_LN=J%a%q+2<%#+?R`R`O%2UmG4(?Y6I5rZs21q9-GHz~@pqo1e_ky@SwC+4G z?EjasWkX~IXIEF(AD0>G0yhVezwYH2#h&^H!Oc@9Nn_pCHa2%DQ?kE?u@4W`k&ZT9 zO?XR1siLAHzmPf+HPK6hN#BV0`}f~eR3!B+D54vA%Zc_NJ=qbr|i|C;hzXqY?q1+VnIvZQvPGZ(`b? zJtOwu8d)14R!h8VG>D{gn& zw_~B}oTI&EZ1o2!wXCfTrf0fuaP2+^vt*pFV<{DsqG}+N_I4NoQ{>{|wLCbBhcu{+4*>&op@alTtsmCC>O_o(WIFjeDjba-ia#eSA(5M%{TT#~t1CYs zLhPxltNYBYIWC8(6}3d8Ng21IoaPCN7<_S7>^4De#-gmAila&l6&^+eq{hY;_RD?*Di;VF@E_WFO} zRK3<|nM)0vNJB^M6PE!xozD6G{h#m5TIbBn44p1G8E-z<0Z+gPPGzAGyy8*`L7o}^ b6Mp=JbyBE=jPgc-|1`kD1Z`Yr + + diff --git a/master/inherit_graph_189.md5 b/master/inherit_graph_189.md5 new file mode 100644 index 0000000000..30224cc5dd --- /dev/null +++ b/master/inherit_graph_189.md5 @@ -0,0 +1 @@ +8089fa5fa317b91a57dc305db54b2968 \ No newline at end of file diff --git a/master/inherit_graph_189.png b/master/inherit_graph_189.png new file mode 100644 index 0000000000000000000000000000000000000000..dce172a7bf2e52fdfa28a546f35e7f61c27548cd GIT binary patch literal 3049 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 ba|lY}2y)|AdYb_B?jUnhYm*w3bM$`!Q8n&x literal 0 HcmV?d00001 diff --git a/master/inherit_graph_19.map b/master/inherit_graph_19.map new file mode 100644 index 0000000000..495303aa59 --- /dev/null +++ b/master/inherit_graph_19.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_19.md5 b/master/inherit_graph_19.md5 new file mode 100644 index 0000000000..79a84f0679 --- /dev/null +++ b/master/inherit_graph_19.md5 @@ -0,0 +1 @@ +5599c3c4261a115b4187040dac10aa3d \ No newline at end of file diff --git a/master/inherit_graph_19.png b/master/inherit_graph_19.png new file mode 100644 index 0000000000000000000000000000000000000000..b6570421a54e4fd1e5b6c8fb293ff99356e45ee0 GIT binary patch literal 3089 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 Y%WpCluFAhW26}wJ%G@4aY3dpOKh{+RmH+?% literal 0 HcmV?d00001 diff --git a/master/inherit_graph_190.map b/master/inherit_graph_190.map new file mode 100644 index 0000000000..1c8296f3d7 --- /dev/null +++ b/master/inherit_graph_190.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_190.md5 b/master/inherit_graph_190.md5 new file mode 100644 index 0000000000..0824547387 --- /dev/null +++ b/master/inherit_graph_190.md5 @@ -0,0 +1 @@ +b81f82b5735d32dfbabdce582801fd7b \ No newline at end of file diff --git a/master/inherit_graph_190.png b/master/inherit_graph_190.png new file mode 100644 index 0000000000000000000000000000000000000000..dc7303fc1bcb89a2fff9d069902f7ffb225b006a GIT binary patch literal 2179 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 + + diff --git a/master/inherit_graph_191.md5 b/master/inherit_graph_191.md5 new file mode 100644 index 0000000000..1e2a976832 --- /dev/null +++ b/master/inherit_graph_191.md5 @@ -0,0 +1 @@ +d84935bb591355c4f0d793888ec5eae2 \ No newline at end of file diff --git a/master/inherit_graph_191.png b/master/inherit_graph_191.png new file mode 100644 index 0000000000000000000000000000000000000000..ec57d52d749f5a983419914a3241720f74210c85 GIT binary patch literal 3126 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 + + diff --git a/master/inherit_graph_192.md5 b/master/inherit_graph_192.md5 new file mode 100644 index 0000000000..21dd1268eb --- /dev/null +++ b/master/inherit_graph_192.md5 @@ -0,0 +1 @@ +a91a2883f44d4c09c804300a2e8d101b \ No newline at end of file diff --git a/master/inherit_graph_192.png b/master/inherit_graph_192.png new file mode 100644 index 0000000000000000000000000000000000000000..6a0bf0cc46329e0c75ba96345c03b541d4da1aae GIT binary patch literal 3291 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 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_193.map b/master/inherit_graph_193.map new file mode 100644 index 0000000000..bb7e2fb1be --- /dev/null +++ b/master/inherit_graph_193.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_193.md5 b/master/inherit_graph_193.md5 new file mode 100644 index 0000000000..a0016b0c86 --- /dev/null +++ b/master/inherit_graph_193.md5 @@ -0,0 +1 @@ +ae06a8f645a09bc9aa78eadce79d30b4 \ No newline at end of file diff --git a/master/inherit_graph_193.png b/master/inherit_graph_193.png new file mode 100644 index 0000000000000000000000000000000000000000..4b41a62e286d31f38fe81a94e9c48e01010bf1b2 GIT binary patch literal 2858 zcmZ8jc{G&m8y;mCLS&m^D+KNpSPctg^GsV(lavV zydX)a;B9N@1Z`Q6sG=F&35j z=H}d9pPMA*%ou65c0mbLZNcf*@VH^O=)ywL=H}+7hQgfWwStK zYT<_(y?uQ=aCq|Sc+EWUKZJ`5*-3cE0|MGGH#hhE{)PicCom9IZ-XF(hDzS6O)n@& zO%cA>jz@{Bs|(F{rF6ud7L{1&&&n#} z-O~qg*G-z3Nbxf10C{iYqN1XVTwPsDJoREZ#9%O3@%Z>Re`e6C$LFSiJi_b1@8^bx zhoiaCy}iBh<>k^ryPHK{;RvBKyu3y(E|T9SYQ_KT{t#z_K>iU_aFDn=SRh$YP|$n{ zIfA|Iz0mtOrR(?Vc-k7{*gb;Iebc-~Z3VawkgKYy zij4Fm64ma)txd5@IEu6&XLlksNN>V@{uwShK(oBRJ*uWg;dihm7Ki)s``ZoDpPyg= zbG7^HaL`lRmtMr(O)>B5d4!YY4GjWYTU*Njyi@h}qT1WhrDbI{JC3h>!GILolLQqu z|L%B?jE>&Ml@^b>>q6Q-{A>LE16E8^Qv?hK?{0q=Zt!HV)J-P$^jtBriT-)!MmP#! zI}Z;JQ&ii7rNP3IvN9GxbOz4O5@82>bXfP}jFw*s2KWJCtgZ0fv*P&1ul1Q38Bq}@ zS<&Smb*WY*6%`P1!&GLFyyF`!cg-laZA-%F&gU*dKHBY&Al0 zz|rPx$LzvF%=71p{wpJFm6eq}eSLm=J5kvBTk%Ordca_4y1$WHVwg6!|L528r&o0W zN7eSP$)r{*3yTkKTt&_B%5WVQz zd1d>Eaf{~6wm6U*2T<;{ZK90xWOACQHU^D8vA@5s7_yBA2#xE_l#L`TEG$4#cxdp> zddexm3p$mSO*&L0nbAd$NlQCj?a<;L>W#_;rg{~H!ZhI>#T(g|*y&0*^Fd~m#xE?K z1mKRH>r7bwSbiFXpLjr{DPQ06Wu@Kg0%*VX=@qZ8t}cX=(;y%~6|mS?;4^-zo=xs? z;>951!c1^evC$V+gaf}ZW0P18z`gGH_1%VBRI*O3=w*HLX48Yc_q^B zW&}VvUXX;6(r`5iK3hXPAuTBhz8tuwLm(&}H}U?u-KXZD8^66n0g6vd+~N?`f*TkZ z3_N=xa%rLwuWFL5s9PUq&6p{jC|Y}gXVS5^7rEg01}N24hiWwsSjZJKvn5jcw0%z* z44Ax$21x?5hX;RUWMm!y&Szr6G2*UjRpWrT`80v@7Imy(nOoSjKMpKH9@zRv6A&c>qJ z`LjOMls7KjVb}hpd*xUT{8e}A8{2#M>9)EON(o0zyS{dgR)JeqGMyHsPtjt+ZI$c zP?F`%n{5n+aBz#mke2hQLQc~P6xP!QE%dL=vj*?!)cSfPhcL>-qS{NZ9lYpxtu^c* z{++Y0Ey*}`45LB1=yRCEN-xw1nj71F!a+^(OW*3Y1TJ!s|B2I0#X?3o;{QXn)~Rfb zAlmr=bD1M%(ow!nh6*n2tfu0<52ddB`bGPc-Q8WEZ9%>GjD8q;i|NmsO Z+Qs@pbY5{c7vS;>GBPmLuSVaA{2!fePAUKZ literal 0 HcmV?d00001 diff --git a/master/inherit_graph_194.map b/master/inherit_graph_194.map new file mode 100644 index 0000000000..b14ef67a64 --- /dev/null +++ b/master/inherit_graph_194.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_194.md5 b/master/inherit_graph_194.md5 new file mode 100644 index 0000000000..c5d2adc9aa --- /dev/null +++ b/master/inherit_graph_194.md5 @@ -0,0 +1 @@ +1766c19ec70b30a701261ca1f58d058e \ No newline at end of file diff --git a/master/inherit_graph_194.png b/master/inherit_graph_194.png new file mode 100644 index 0000000000000000000000000000000000000000..8ef2628391ed56e92ceb13fff94442a3093f75ce GIT binary patch literal 3112 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 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_195.map b/master/inherit_graph_195.map new file mode 100644 index 0000000000..2c9bd4ae54 --- /dev/null +++ b/master/inherit_graph_195.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_195.md5 b/master/inherit_graph_195.md5 new file mode 100644 index 0000000000..1d2e89511b --- /dev/null +++ b/master/inherit_graph_195.md5 @@ -0,0 +1 @@ +7f0c2faacf49788fa0190400089f7519 \ No newline at end of file diff --git a/master/inherit_graph_195.png b/master/inherit_graph_195.png new file mode 100644 index 0000000000000000000000000000000000000000..1f27beef74208d7c55fd32a75a254e425461d0ec GIT binary patch literal 2015 zcmV<52O#)~P)JkR;w!?|~N2!>$*0-*@BKOF!BvJ9YJAyfkD6+$JTULjOs9r3_q zGF4Pm{HahN5ND#Jqg5)^!r{Nx*O8HthYufmJtPRkH7zYICXJbU(RVqzkSqMJ5ts;{rd`)6imlu9L!#|sJy%FoZAot@3e$!TqEJ#gRv zf*?^*Q4W5}%E|-+fpeQ2sZ@#}2#rSL@pz@Br3>FfUcGvi$K(0?`|sMdtF5hV!M?k@ z+ac8P@$tUCKDAoSX0rnW19$J<{p86L-1z(V?@FbT%jGf{45?H)G&BSNAjzV$v$MFk zn9JoJJa~}BV(s0#*In2H0|PNJF#>_$>C>kuiY_J7wX1+T*lhOm=g;xB*=$A-WNK;( zEN8|Y94ZtFKR>^WjEwN`@Cz3%^!N9#CUF1&zz95e@W7$RCEK@e=WsZ$U%#H6oh>ab zWipv|yB))@)YR12*x1g_&dJHi%F4>Rx;hNQcJAD%*XtLqjf{-c>2!Ge;>C+$VPVc~ zu~0Fscl-MK8jVJ))oL=Cii(OzLbcoN;o;$F zX=x^t$!fI{-KM9fOC*y1{{HFdX|-A{5{Ya!n{yVQKY!M0wIY#d2mWrKq>J*TI-XukH|w#m@JY z!))PPxpE~tI~&8W{{DV{fB%k-j-`Z(VVK!$E-Wk*2n4>qzR}UqwY9a_?-?2$9mVZ! zHXDkfxKD>H^78Tk0CKtf+qZAzx!~!bC>j_T_~FBcMUA~y0f!+TJ$i(Z>UHTePQur( zUu7~G0O0iL(@U{;*6RxQuS_NrZ_w#<0D#qM9UL6=@$m@@3tO2(2b@=zg;O;(H9L0f z2nYy35Jag|n$2ba0FTGJfB*jR|B?zg43Um4D{E3N)8#itg6%{S94i0$ic`GzD)Mm5w z_4PRpK=b4y-T3%;Zf@?mbLYm!#_V>xR;!(#pT|$hWHN)n@aD~%#Kgq7xVX8wxurNn zQM9nIFf=r@xw)Ck<S}P*9MRl+@hZ{8v?g2%Sz}Q1h2BU&xK!%{Y;+t}c~I#b&b$3k&&tetUbn z(P+%i&u1_g%Z&}kV`AcPI8v!pp-_DM_;GrATBp-Je*72!5E2s7(b2I`Qz9#P-m+S) zcDsGUh7If2uWxB-(Q37Le?vpVsZ*yuefsq4*DssRhMT!_GCDdclgSzz8z(0xr>CbY zD=P;F2O}dRIUG)EYN}i=@9F88o11(4_HBB4`p=&~NwV0wb*o0B86F2xC_Blw2O z9i^qE#l^*9vAD6Zaamb=yaMhJ3Wa*TerjrJXlUr<$&=*9?q;0Gty{OOR%>l-ZEtUH zNl6Kx&tGmx4tR3$tE#Hnwr!hOEavn1t*xyI2?+pz6DLkQd-jY@r#rtNSOKA-p_eXQ z%FWG1QBww>gs@i0C!GUELK55fkvYV3k&0LI69q9 zuh%ChCj$WP-o3kd^Ja-e!ela!962JF%l-WP7R`c2qa`ON-??*V(K#+IE-ou8lgVUt zb#(xMp`oF;xH#`uz#STm#$vIsSS+bjy5N}vmorYJyuAGS_3JS)G0Tm_9SCvbRb5?; zZ{9uS9YW5QEn5r*1Bb);(}Db@;NKGxKX7&N{VT+4bai$8=@2N!|Md4Q2t|Q^c2^a6Ps;jHL9|r{DjM;2vv)RNR7kbUk&h}P35Xd5AW@Zu( x5%_BsghIgmD}+iwy+Wu2)GLHaK)ph!#6L`~`By$sNL~N{002ovPDHLkV1m{1@G<}Z literal 0 HcmV?d00001 diff --git a/master/inherit_graph_196.map b/master/inherit_graph_196.map new file mode 100644 index 0000000000..14837d8fc8 --- /dev/null +++ b/master/inherit_graph_196.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_196.md5 b/master/inherit_graph_196.md5 new file mode 100644 index 0000000000..7f13b8083b --- /dev/null +++ b/master/inherit_graph_196.md5 @@ -0,0 +1 @@ +6253ab4c3b5da260a55429a5ed87a74e \ No newline at end of file diff --git a/master/inherit_graph_196.png b/master/inherit_graph_196.png new file mode 100644 index 0000000000000000000000000000000000000000..dca057913c22f20f6e6a9e35fc4e4ba85229e2ca GIT binary patch literal 2512 zcmZ8jc|2R&8V$umO*hTuzEtrjB1Mg9Ohv_zXh|a}*F3}!QbSEeP3`42RaaBds+y-# zLs5;X$fag#ETYw?6jfs>!6SXUf4+Cl@9h1Z-#Po7Z+&~MwKolKV<{>O7luF}qF5^o z0rXwq(h=kZ?JGvWY0wFHT3ccuKYpJ1tNn^bFyEY($} zh5VE=ytZA+mus*b8NsP<5u0pZ-ucS*Z6D?=t+JQ1cV-oP$y$OCmQd@v2*_4Ef0;5Q zHzAsLPUvS)Y1ZcF=hr(p=&WWB3HU|e&M&gE=i?9Zj?3HIe{`ito!fxASII+Za5(&d z_9`q1hr?a#mu1Z;ArOMPC*ImZ40(3>Sf}tH_S_R$`e9;XVroiC zRyHp;w{1qIe4sn^wD*sNUb=#^O?E<0d;AaA>r--8EzyO9^2g`h_P&2V3#A!Etd&(( z{;{mAtlZ?R{^T-BTRY{izjAYP#e{??RH|Xz5jxQ%e|!aDw6d}i5fO3Ei|U{%nP@UH zKCY17N1;%*E1WrKY2)7j9Rp#Y9EJ!^0KNo^^0^%*xD^)(CA-n#i3y^4 zUp)6f8I5*OO2?jsDkv09PF@Rl&gdf(%5~J$0iyzs4|hcbit6i$O6j{Cj+umxh6ZHd zysD}M4dbAU6c!QJWXO3%hK0Sp`K{3T6Tlc68mc*|udmg>YRb=_`_L2$GNaS!c^6|lf`7d&2c42)r%9`|K7(Po;L<3s(OJh#Ybt+X- zQnIYU}DeYaIX>x3*hPGBYIv`2dk5_fsg@}_`)g}!^YiniSDvD%(*W!K zt&4_kBvM9p_6Igw&)B%VrUsHyPSDcOVEMePsHo`a?p9J#x)B-*Ks!4-S5{UY9UY;i zZ7eN&1_uXw(qxa1kK>OIlg=c0$`Dmd>FMcqPEH28y5XD+mvZ9Q&CM5F$Mw2Dc>l?; z5PAa{9x_9~HfCEM15O|q-Q5=A;^Kn0-{u+rSQDgvp0{q@ zGBJS|ZUU+J`+r?n@bdBLUfxMbNl8sjC8_+2Zl$TIX(%%cO4Z+wlau(oxEK``Whwzg zw>dXA2i^}1j63{J5&P52-94WId(Oy5M{SdFxcvn+IV`FtQ>Z&K*qe%Pl@+Lkd8|41*+^CN;n6`Tf$;Fv zt8gL_M#Jbwe=kG!ZES2D|A+IQ&2Ei5&ayhI-t}edv^&v*LOIx5ce<&XffM5E*xyGN zV>`uh9%OQHVxp;uNkVJu@$TxBBD9ad>n0Xfn46rOTvu1;r<3*c>HGct{hj4u@NDSm zg+6i};Q-j6z@1Oa%gQj}3)JZv%&K)z!e~cXmZ)(VsU>oAY3Bf_+rXgZ<;!$j2_XE( z_IO!!yBtVVXy~hrG)oM|MB>e-U|@J$#2{IVhA9L_>E!e@>(D-*N5FgjU4^~YllvHX z5{dM8NAUUn>FG?Q;&XVM#&0q*$$65`ii^wIg)PIrbJ1x%1A~K93Z<6GycqtK=;D$i zvXhtF`3YlT(cIE<0fl-_@oYNnj#m>;W54tj zPwQD-T|Fhp2Sl>9`~o>PHumu0!_3P*;o-W5MRBK^rJdpKMAH(&&h~b9Pftut%z5X= z1hvZNpZ?JYe8Jb(*V@_|*tx$yvQEL)a-?fn4LE|Ut84HHAruyi?e6XdCQ?>*cgTmc zx7Xa%L?K&$oY6#~EQ&^Xd3on5LLwtMOG`dr!A(p|1gs30YX5uT8(LZn%mW@#TU)yw zU_=s3>iGPbtdy>2WON1wW6x3TFuo!pa6-?_p(V1DM_&+a{QuwJ@~`u%qs|TaodR1l2-e&NQ+>(( G_J09yM#E76 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_197.map b/master/inherit_graph_197.map new file mode 100644 index 0000000000..1f88e998fe --- /dev/null +++ b/master/inherit_graph_197.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_197.md5 b/master/inherit_graph_197.md5 new file mode 100644 index 0000000000..07cfe636f8 --- /dev/null +++ b/master/inherit_graph_197.md5 @@ -0,0 +1 @@ +98452aa22638d2fb62adbf5be5fab293 \ No newline at end of file diff --git a/master/inherit_graph_197.png b/master/inherit_graph_197.png new file mode 100644 index 0000000000000000000000000000000000000000..3e03ee55a34379b1af7d2b4ab56666eb1111a056 GIT binary patch literal 2743 zcmY+Gc{r5o8^=dv8L~_@mL~g_2;mqVyRoJza>^M?lAXy63dz2WeM+*^kUiVU(6NnW zFbGX?jBN%ZD%(kD?7z3)f9HCy_kHf`xt{k~?)!Ux?kDLM()f$!#$A{)?fx?VR&fKGlruR1C+K_IZ7CBn!qq+q=u%=-4qg#i+mYMlKwR)tS; zJTyp5RWc{aBL<#rYn&u#LsiUDrdl?Et&>{4`G&th`&5qA6FKGPV3PZZ+9l6NxQ(0) zSH?~MehC#ybew&q@ll^-02RBWqGw1LV9;*{Kt{vpD_iMbzwh8D_iz~*i59ZPXtW9ng~I3NCbhTg-mKU` zGNIUn`1pmlWBR>AS(l}tDc_F|Hks2z-)3gLb4Sdbns~=6i6oLi^TWAhI^FrrJ(9SV zmKNE+WVLB){ybzPnO+bLaH4_jMEm7S80pWo}EBJrW2p%UOMnSHKU6xYEcojm4{ zzn7QdNRE1Jb#-+miNtWfSkRZ0ltf^$LVVEZvX?KR$!Te2EEdaX2MhItCr}-dX2_vS z6rq_2PfrCl$;?3nXKXa+mXlMViG%)PP`quGEQnv*d=WOE@83yywEB;bkj;Y!GB@&n zOB2@(QCrl42<2MK4^b$u@OZ(ztL|VGr`8w1zHm5-mnH-REJ~bmP=-QM`kF&Zg%l)6 z1Onkje*S6`=k6oSxe5XSSnT%gO!V4MMx+90du>XCj)kcgz~>&1TzY2V7kR*9fk5v) zH1hKE)xAH;a&U3AU4CKGgi^tIeSnIJ>Ubf&y)X6j_DVsLy09>y-&+1G$nZ)wb8YG^ zYx~p9Mz=x8>xv3y3nPL_Gy~zS%HR=)@NeI~eV|gK(=KRB%gLQ49d7aF<>mPW!qeFY zusNFE5a*63@ypB0Hubsn_j0ZK+xXMf#L{wfL$Aif#P~g6&;G-#lz<-2u= zpdiit{e3gob!DiGj0`(4O=Wepv5SjjdwV;uH}xg<*LP~z{;i2Ug6T)FMKRwAO?2yz zzWMX*2L>Yph~tcXczDNpPAPoDWj0GHa}bZmM{REh9ey8>`118DFdf?!r&bP7j!vNb zuRvA8ci%A+D1N{7`Vbd8e$so#t8QZtcF{{KD>Lc$ND&tgcGpe9!}aLxq3kJru5YoX zzP^{oeYBL6ls-&M!~4ztGcIqGQuhv^wS@o<= z)`w1ZNAOFKWNKqe;o$gFR4SE1p%^+iTu3#OdAu>plVug3tKr%DX3Q%W|LLW3{XkDV zFTqZUa7z)8K`f1C59%t?3&ZSu`vVXuyu%@w3pfhvTTMMaFAv;kpZfm2wXA}|O!@$s z+%+~P01)i>_?R*_W^QT8gOGl9onc#bZl)O>i>xrgVAR~Mih{x5TlV(2KWgr;~7k_nxu8_SMX8%l1 zCIXC8c5W9zqtT^X>RpIt8o-yShzU{J;^Lyb>~33(3)!29vazvYOEY6HL=Fs>mzJ_O zHa4L>^y0Ix(B%zc|=^NflN(JDZ|6PKUT&XLw|VqO*ajq4Ic8XgaIX>vbMJG z^KdqGd^`?^<32q6F~)!NzSuxwZ*Na6*ZTiiyt*m`g(d)lmcbKTn6DN7WPNLT63Y53bsVxDhFpB5EK#^H&+w3%X{CF34 z`0i{5E^vSQE3G3;dtilU-o6x9oX#j2~$%+5M4EiD;V*_D)(^!%nj?U_pV&~;dI z{N>o59^;_k;9eIsmrZ&{JKBk;I34(H{8G+{$BV2iLR}p{mwq*lhGC;m{kJ z&d$#EM4znMzEo8}mV!x$TQw7kSFR+WY7@F$415{Sg}fy?g~=3H06g-9+SA*$@a@y5~XGc5wGVZreLD>}muUfC&8XJ%4f zyf_Eb2_P>xdNN~NID{)V`G9PZiS3^Mswtu?vXNk+=7|j6Vts#bv!V;bE>2o@Q!D5u z4+<(<7w~oW{Kr6&tgI|8b1AwaCpHOTXGZZFD*$C1JVx@cH*nn|l9G~LRrG{*JK$!= iy;cV1TlnwqC+w*=L_}m)x_p6~D9F+jiKsJniTNKXqgdPk literal 0 HcmV?d00001 diff --git a/master/inherit_graph_198.map b/master/inherit_graph_198.map new file mode 100644 index 0000000000..cffab18bb8 --- /dev/null +++ b/master/inherit_graph_198.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_198.md5 b/master/inherit_graph_198.md5 new file mode 100644 index 0000000000..ab36e5083c --- /dev/null +++ b/master/inherit_graph_198.md5 @@ -0,0 +1 @@ +e7b17b2de1572daf236495c04fe16f01 \ No newline at end of file diff --git a/master/inherit_graph_198.png b/master/inherit_graph_198.png new file mode 100644 index 0000000000000000000000000000000000000000..ad48828c51eb5d21381480f98e25ddb0830696e0 GIT binary patch literal 2202 zcmV;L2xa$)P)(rTb!NW2t-kOq*8J_t%cB18?121J4wDYrriqLrHp7;N`EY|^YP z?P*IX=j_?v({^_DKmVC;r#qc*0YVT25a0sRdK)0H8$>Me0})I7K*SP1{Du9{+1XiC zRJ2}J2&{$8W@l$->p%W6FUQBn>+9eMN035&(La^;F0T@4HjBqStIC=^dm&$zg_moHzMuW!%`V}}3$g+h^;nQ6I* z-T9x+%YFOyk;&xl?(VU%vFz+@u~@v`j(|?5Yiny02m}&|#5M(6V##DOFI~D66%_@; z@YbzcTUuJs^7;9Bkw`?R(>*;sj~+ex^XJc$l$5Tnt|Lc|KoG=Yu?%#?VzIx!zwxno zcsw2iK_n81PNx?X6zFqyw{G2{)9G$*ZsFnK-QC^#`ky|1GO#)|H8nIel#`R=?d|RE z?!I^L-lnD|wDON1KSUxCjYjkE@Zj-yDwPTVV7?c6u-~!9X3U6u`0ybwFONo}WoBkl zsni1p4p=e{#@IM7D=RC-V)5tCpVQOR)6&w=0ZmIw>+bGuYHAu883_&!e(~Z(O-)U3 zaBz8fIf5Vxg~GPB3}|d@L=a?odHK$n)z#GifPsO5+}vEbT>kCbx0^R_qJ^fc zQYe&wfPkx4uPPLZrKKgTczSxeQmJfjZyy^Q3k(cQNJ!A>bk_D_MKi`CQ&UsL#l=BE zK^zWec6PR^s%m(6`1+uC6|F=1fRPh)^he|Ngxhs{jBhm0DU_s#Gd98qJ|Y zhmw<%+uPemMn=$65ClOGd)YQwDFHcTR>U27(RQmh(Z}b$O&u?ySe)Hx{ zR8$m)!&z8ZutX4s;jFAIUtizXuV2$>G!luV(P*%@5ueYup%*KfF%a3jdGqPhr{BGM z*U`}d!*EJU3WLG8c=4hQcMpo)2HMBRhsWayg~E>?KhDj~$z-y|#zp{umzP&>Z?AsD zvDmQoSzKJy>2#YmZE|*YRwxuwsT3`5ZEZb&{`}zJ;PUdaR;xv;nG%_pnBepIZEbBc zGc$8@b9e9F9UUDF4Gs12@rjR*7YGCc0|N^S3vb`PO-M-i_3M}UUKnG_j46>FJ9bDU zlCiNdnM^i5K8`-=Y`~tAMlP4{+_{s>S|^MXgR*V zzBg{%NKH+JVK_TGJ25d4EsuzZ@bK`6i;MI0^pr}awY9ZmGTD>}l}bH!?3hF%@$>WZ z@$r$#WaZ`MF)=X!fXd3sz`($`xHt-ha`NO!fk5Em;<92dN=ix~41IlldVN!7%nt>L zM2d-tsi>$pckY~Rg9Bl|qibtx(WQiKS_F;+&3R!Hl>gJc0$f7G5VnjV3ZOa%pL) zqoc#i%gbTyngY8`*xcN_7ER>j7)FB=-QFvn+b)%NY%rBbO{tu8Gs9UL5FGMVAw;rH&{LvIoL zgWX5AFz00zTrL-eVRv`;zP>)oFERFM-<+306OSK1Mi7KbrM9-VqLtD7*UZd}DG^gS zJ~Mp%`W4-&zi{D#FMb^ckblo=2|!oRm-};&3>Vlam`aZnR3=)zwuW=`UZtn6IqQ@tH~Q z^!N9dm6cUjSCh%)!-o&|^z<+o467_zh2z$-1qB6pd3jtex2>%WEwTI^A3b)-d6|OA zWR{ng&(6-ORH}bWR+!51VYz?*{^H_dLqmg7sm#yMU(-MW2k#Z+<>iURVm_b$e*d^y>3W-Fb(P*etDv!t0E1O}(93Pg#!ou6PZ-<42S?k0`u#cs+So@e^ z+qP{gmC9kw;SA%ok0YL!rs(hQU&q$*2eBWEABb4u2O^gEfrur3AYzFhh*;u>6@HT# z|APvGe<2Em!r(pIKj!6@EnAY3k{oM^z(!as7Msn+mi+OqGr@lv;(3W5h*;tWB9{1p ch$Vjb8w!V{dnncZ8~^|S07*qoM6N<$f|#d2L;wH) literal 0 HcmV?d00001 diff --git a/master/inherit_graph_199.map b/master/inherit_graph_199.map new file mode 100644 index 0000000000..2f6b7f6391 --- /dev/null +++ b/master/inherit_graph_199.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_199.md5 b/master/inherit_graph_199.md5 new file mode 100644 index 0000000000..93a71b8342 --- /dev/null +++ b/master/inherit_graph_199.md5 @@ -0,0 +1 @@ +b679ee01bd852790a894bf106f811366 \ No newline at end of file diff --git a/master/inherit_graph_199.png b/master/inherit_graph_199.png new file mode 100644 index 0000000000000000000000000000000000000000..f5892bd3ad701a61271652bc715062e4300fc653 GIT binary patch literal 2575 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 + + diff --git a/master/inherit_graph_2.md5 b/master/inherit_graph_2.md5 new file mode 100644 index 0000000000..c03c23e091 --- /dev/null +++ b/master/inherit_graph_2.md5 @@ -0,0 +1 @@ +da8716ea65693348bfbd3e4c61197111 \ No newline at end of file diff --git a/master/inherit_graph_2.png b/master/inherit_graph_2.png new file mode 100644 index 0000000000000000000000000000000000000000..93e91550b76cdc6090846a76481b1779b4f84b2b GIT binary patch literal 2436 zcmY*bc{tQtAOD4z>=X+=bXPk_rsw4maGWK{Z z5gfC?W&#lbd+Ef5v)~|p(E*1A_Wr5)t?Uc{IDoXrqFt{)Sa=ZXs4%Y79SHoEPP8r% zx64;lM7TiY^^Yq^lw{FC*(x3&cC0mmne-~+_qZqsM*Y|+sthZ+}IvYMo5b)mv&kU_W5le zt=cY7Goa3h_h~kt_zN{NGjn}?hS6s8a!}0ISCE;hIQA)Q?F?M8EoLoX9MdtVD4RO` z_N`XfiTCbhB_#nZpI;9Co6E)Tm)h9In7Qu`%4DOit?fNTN!}u!KmTM2el4(XE%ouf z_kR-_YWh4MqGVGeS3Y-^FF#;143>jyu2n`<5Kz4)6*Fl8S3ilhK7bl-p%V@y5&A@ zc4A4K&d$!SU&#^@5>ir9s`Qh_#>xDenwq@4JhSY5K+xsO6Lq0(E-nWj4eb5=@sx5| zMMWhcAwf*!Pgm{ z>9yA9&vRKU)62>V3cs71^M{6vEiC5d=2VrG^s-KmNVJoUE4^D%IG>&=|7{R2L=Xky<8bxC@tL{w5F6W z*4@o6D#AKp3J4G&(cQrA`~3X8m`FiGgPRj@v6|oCzxb}w7a{GS1NHPAFD}*{(;XTf z_BZ`7F_Gg~qS`{a{_NS4Httz>cRYKT@yviKnUIo_0stS^gtuEOE9HR1>gp3DOu@GZ z$ie@XRVDRlO$Ht-si&t000u@zQeq+)4CdIeV^`Exg%kjQK}68M0VUY749&|cgD_TQ@>6mSF7pwhagI+r4;N(PSvyW+{NuUu(qz7F>tbhK!SscDZ<0aqpoVQKk1ddcTUl*}(vMvxt`ZQlY-bg+@t8n>($cy>p?JX+^>lSz z%3Rgd)SOamF()JU+AmhiYFKW)^QAI+zE)IJBqjnfYUf;C8=ISnWv<$coSYnGHMN$= zX=hRv(-CB7R>Q~e#`bpWF*|K5tKHFZ&-(iMN}tw?HDjZrqjL+Y8@I69Q{TSX;cyC& zo0*xJ%gf;&Q)*^cdGFq_a&llxk5*mX+`g=AVNzvdVq(zpwX~Lz7YyGz6AD$B0Wy** zTrK_QBjd3n4X?ppd42FPeI#1T>KJlj-u{nqKaKJ zh=Z{_2UMaYE!COLVzK08WJX3ts@)BW^zQeyChS<;?fkj1;OXO|p>23YbUgC~%Pg$- zVaPM%$L(nOn|u!gr7d5RYf{O6k&(ZPp{2!dSi_DWBZ}(ll>mT&U*A|59~vU!a5#~q zbQbHBi3v|2sJz1O>FG(8(>!Tv+8X;~j>qHi`O0bCpUYJ3Bk~v$Jbg|5h6ZeS2CSl5A@W3a)=yS((?rqQOZ-#Iw3O(r7P- zQ~3Nj1&n_(S;x@uN}*@9`w>;upCGgdw?~k2C5z2V=^(QsbqSt3!zV7Rq zitw+5B9TZaO)MFvO4qA=$4!LItWNcTYtGKj8yg$Cy1HO4K%>!#Ax@{!^DaksN*^~j z$3{hs_VnoM=!gl?2V_%EC2Tj|y0t&+bX{$&0UUmP=clPgnjll_rzW=&u_v+<#JW&3 z21?<0R1^JIDs_Bw{z`sx^Ls9L<`qo=G&wjp7)*?@(sp}-0RoOdAb{$7 + + diff --git a/master/inherit_graph_20.md5 b/master/inherit_graph_20.md5 new file mode 100644 index 0000000000..728d2dec1b --- /dev/null +++ b/master/inherit_graph_20.md5 @@ -0,0 +1 @@ +7cf0c372bee4b6d9313e57025bac5d41 \ No newline at end of file diff --git a/master/inherit_graph_20.png b/master/inherit_graph_20.png new file mode 100644 index 0000000000000000000000000000000000000000..f03d041f5d8b6c86da03bb89276f0106f35ae697 GIT binary patch literal 1927 zcmV;22YC32P)|Hs!PUkYqsC)aQm7M0P28G&E~w$#9&Bw|A> zQdmvuLlN{P2+|J)fnS!&Li*4wKV@%dBt$sSR=6V2sdJmAxm+vLEcJRmJdcNG?$tH5 z1NRRO?A+Hm*UNqXz1;5Ya7094FvQ1$n6=J;!H5(lUWRC4;$?^yCSHbUiCa3*)zyVt zw{ERPE(}IM9z1y9Gv?EI9S#Q`K76<;2{9O?S7<#Mfv|GBw2R903ZB_##BcI^THw6?ZFDwTrc zIP~=NtVrBo2%`#`}g?$`!}kqtI^cd z1R_FSUS8BnKNfrJ?{1E*THcdnwy)W?t8g49X@;*9LM<_9UUD20JGT) zrBaEsv@`(!Zf8zTPU6s^Ls7{$FE0;w@80zq>+9=7Sy>q*5(zeL+z6FQg;%d$MK#8s zvgYDl3l$1*Rd#0x7&@x#6;m*x7&^Q_;_#}w_^Dm zIdTNa$;mLA&9K|;xOnj*YHMp(EM7#=5{yP8`56vMZf-7Jy?T`j3kxYFC55(c-%ih; zKNsvCkB4+R9m!-e+OS~*ojrS&rlzKdh)AhaQbR*S*uK7h|4urcj-*m4rKP1&ad9!( zY&OAu?w@O!%#7e0-cvo;*pLHfVa-dRH7GAH_wuJyDrszNi~!Kvw{QLCwA>o~#R!)mdTfbW=WT9o zMr~~^#>U2=(P*Gnt3m($R9LN6!)!L=@#DuB8XAH^p}@bJIkuIyu2Li)~$opYQ>{Rk3#-CJaOU# zJRT3;y?ckAo*p%4({Eq1_>krBZ@KR-{Ysj1Z4+Z$G{BO@b}nVCtye*GdM zBA3fWn>TN!>FH_VnqZyRYPAvo8Xq4Q>>V8)0Xy%&zyJZDp`jt+dW*$E0BCe{l!*TA zyztXi7yW6qTB@q567KKr?xw`VM4$Wu%}b~?P$(2+Fc`eXoK7ccwOY!~&ZhYIc-p^z zKee{D3ijpJ=r2Y%tV-vVNF>7Rq@*MOz|71HY&IKWV`Cwg%m3Kd(9jS7faiJPLrrXK zEWUmF2AjsG|X#K7fp`7Cs4X=%v&7Zw)K*w}~9PD?{DFwzgLIt6zHl?AbE_z|NgJz5Esw6u@G!z+$lg z0QTFJBg}mCNNgaNq#WojZq#i3to24&us{D*@T{ zEk1qv1c$=`olXapN`;J!jAhS3B=Zt#4Kgw^(A(RKxw$z2z{to5N=r-e;>8QN-EMe1 z9_aOY*lac^mCA@}TpA-9tjbo|y?ghtd-rY>6%`>XD+_Plyg^}MVMM-~o12l7lLM7X z1&Kt0^XJc_qN2iUD=83qy&fu+%4a+wApr*u9u&6C>gwv?a=F0sJW5JRaO~JIuj`FQ zBc`UNAeYNgQc?nqMiVry(P%_+ax(Vp*#m__0iNf5_LpzpzU{NmyPSQ|Q1cRO4K7`} zgr`rRA}J{e`T62gKoC8$r-vEhg^8CTT9|klqJ@c + + diff --git a/master/inherit_graph_200.md5 b/master/inherit_graph_200.md5 new file mode 100644 index 0000000000..37ae8b34f7 --- /dev/null +++ b/master/inherit_graph_200.md5 @@ -0,0 +1 @@ +1d6d85007dcf470218d23c508719efab \ No newline at end of file diff --git a/master/inherit_graph_200.png b/master/inherit_graph_200.png new file mode 100644 index 0000000000000000000000000000000000000000..14a01cca9c1c432366a0b06d78f4ceea4c684b03 GIT binary patch literal 2563 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 + + + + + + + + diff --git a/master/inherit_graph_201.md5 b/master/inherit_graph_201.md5 new file mode 100644 index 0000000000..33a6c11c4c --- /dev/null +++ b/master/inherit_graph_201.md5 @@ -0,0 +1 @@ +91a1e1045d45a35468be7969bd117cfa \ No newline at end of file diff --git a/master/inherit_graph_201.png b/master/inherit_graph_201.png new file mode 100644 index 0000000000000000000000000000000000000000..c9fd26f9a4218b560ccb64f1585e12326ec442d4 GIT binary patch literal 19872 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 + + diff --git a/master/inherit_graph_202.md5 b/master/inherit_graph_202.md5 new file mode 100644 index 0000000000..2f02ca0225 --- /dev/null +++ b/master/inherit_graph_202.md5 @@ -0,0 +1 @@ +09c7e44ab2acafd8644ccafffedb2e43 \ No newline at end of file diff --git a/master/inherit_graph_202.png b/master/inherit_graph_202.png new file mode 100644 index 0000000000000000000000000000000000000000..036f47042e84901e251dc12a0eb0f612b0723c85 GIT binary patch literal 2126 zcmV-U2(kBxP)cE5=|#F;FxTQB;;RBAfmJDglX-pfnl~32LOZY&C!sL}U%N^ZuCMoAlRZ zSRP>C<9_~{Ip_AA@4ffTojcP(a2y8^hzUUZ(*hun{{d?eVk*E|gqRAj79pmBx%NqO zb8}8k&YzM3S#5ZEd8MSJkf;B*F81~HRaRE6xFpDGL@JdwH#cir%=H^pR8*{#9?0tD z;K74B7Pw!8m3Q$oy~X`@U|;}25S2=`w31dH9*-xHNdB}6 zlVg>xi~r=3fGiWsUW@MT?nOmK3;Ib=P|%4JCze%)R4PqKNHFM{zba2p&ns81ETPDt zpddtxprD{7489;4WKSn2Cov4$wQE;@fB$mlU8U=y$s!aA@xQ69tzD)p8jYr*p@Glm zi$o%dW-67+-`{_Fdb+W((az3J$9wA3sidSNop*%)gvHb%kH@=o=~6&I0E(j9wr#7c zt0U}VV`D<0ki+5F*w`c{CQeLDL`6llw6q*Pd>BCxPft&sIGLH5j*gD{$J+Gw_hT4_ zqNua8b5&IpX&)aS7Yc=JHk-jMfZ(?g+6Uj})P)^X+M=exMLkXd9hnYp<+8Jq$P z!w>|a(P$hFCnF<+{1Wfx&6^w!$I8me$H%9&wUuoD<;xfS0W=7U#d`7L1#zrYDiH)3 z9UV2+Q($Now4;6e_%SUljm>5!BqT7I%tMC`8Oz(%)#dH&?da(E?AbFEMfDp91OiJ- z%kc2)GTscEGa3;%*-4Z7>J9Di;ayXhCVhnwzakO>C>lOU0rT& zZZBWHeDvs%o10rcGtF`Z>adB}nne5f8SG~QxPEJl? zVPP7L#+Wt=89J_*n3&$)-q){R6W%*_?(EyQkIiP!sk5f02FLN)+1baB9~T!FmzI_S z06IH6Q&UqV63OuJ@b&B02_wY-E|huB0svrea4DohVPRpg&Gzlv#bU8isl0XTmRv69@pwKyK6mflB`%f4fNN1! zR;FVy$j+TRv$L~_*qiCME{Q@#*R5jT<*sRaKFy^hYl} zJzZb_jT<*2BO`GfS11%#R#t?tIR{Wb#givba2#hcnf3McL}Q}kKYsi$7R1;r#K*@2 z0Qh|VuV25Y2cM9EqUied>pMC+=4?zdG&B?v5&{6YaN)vy+DAl0L_|brTNb%4+S=L@ z2Xs0e05CN*)!p4~W@hH#;IO!W22m=NR#sMIE;4vmR~G<)$z&3Hd^0n%v9Yo4?rvk+ z7L+t8DXFrua(H;SqN2jw+?*I+0`1Klj^iF49;BC^7+?gD|}!-o%Kdt)NCQ|#ZrpIYktXF((q<>chFwY9O??4w7IHZ?Wjlq)fx z&ld;;etv!}EiKd<)M|BIU0r;9JeSKI85zmX&reNFrT&RAmh9QZ-rioVR)78aRW|`` z@hMm=*2Kib_wV0{Q*uYbX0vHDno6b8t_(T75Yj?3BE*~7!5sHiAEKcCO%uUWHZ zPMw2;gVE8^moH!L@9)=WG-9#%_wV0?D^#r<0XR z4uvs{&BCTln@*lQ`TqU;#>PezMWdpkxLoeVixz8XC&y^E*2`CnqQ0y?YlH z7B(|8Lm`hshQ2E)DJd%}>&=@tnm6eT;k2^RxU>Ft`7f0GlN=lrZoPvXcZEbCjA3x6L z^DQkcDdJGb(07G}h0$m)wzghC=K%l!h(sclO2uR{F$^OkQ($lwbfD2_d-v`wE-s$4xYN?oGBYzn zLPDymt94x2+1a;m-}d(Qo_}AcLA3V`<>lqXrhBQP|4W&fnc2K~b6#FvR8-WT*7Bc) z_-0J|14a0*TNfP1^YZfObozk<2mZ8{)rEm?X;(Sx)~#bO7!Mvin9oxSWC?+_sLMj% z0YR1uc#npd3a}O-rUI-*h^YW;5n?JBcy=i-FJE~bkky7#sbsNO+7<(~7#SJ4QhFe( znuv%9?NbE)%K|YG;C>NeD!^KVm + + diff --git a/master/inherit_graph_203.md5 b/master/inherit_graph_203.md5 new file mode 100644 index 0000000000..b011f03b5b --- /dev/null +++ b/master/inherit_graph_203.md5 @@ -0,0 +1 @@ +1348eefb75bda5d2c0b6d9e88c244c95 \ No newline at end of file diff --git a/master/inherit_graph_203.png b/master/inherit_graph_203.png new file mode 100644 index 0000000000000000000000000000000000000000..12c723866de6b61d359bda64a25946369577f9c2 GIT binary patch literal 2394 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 + + diff --git a/master/inherit_graph_204.md5 b/master/inherit_graph_204.md5 new file mode 100644 index 0000000000..91831967d0 --- /dev/null +++ b/master/inherit_graph_204.md5 @@ -0,0 +1 @@ +db43360cf7bfad98344430c30dca1bd7 \ No newline at end of file diff --git a/master/inherit_graph_204.png b/master/inherit_graph_204.png new file mode 100644 index 0000000000000000000000000000000000000000..fcb7ff067b96acd96d7c612f793866eba137df26 GIT binary patch literal 3925 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 TOpM|5oD8|4V}z*ELdX0MHKd1+ literal 0 HcmV?d00001 diff --git a/master/inherit_graph_205.map b/master/inherit_graph_205.map new file mode 100644 index 0000000000..e19b4a36ba --- /dev/null +++ b/master/inherit_graph_205.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_205.md5 b/master/inherit_graph_205.md5 new file mode 100644 index 0000000000..8d1d037388 --- /dev/null +++ b/master/inherit_graph_205.md5 @@ -0,0 +1 @@ +1a3d7185606ac60cd631b040a88ce705 \ No newline at end of file diff --git a/master/inherit_graph_205.png b/master/inherit_graph_205.png new file mode 100644 index 0000000000000000000000000000000000000000..039479c17127362874876f81969a5bc0ec573616 GIT binary patch literal 3992 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 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_206.map b/master/inherit_graph_206.map new file mode 100644 index 0000000000..ec279c3181 --- /dev/null +++ b/master/inherit_graph_206.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_206.md5 b/master/inherit_graph_206.md5 new file mode 100644 index 0000000000..14d597221f --- /dev/null +++ b/master/inherit_graph_206.md5 @@ -0,0 +1 @@ +324af463609aeec12bae474e8afd2590 \ No newline at end of file diff --git a/master/inherit_graph_206.png b/master/inherit_graph_206.png new file mode 100644 index 0000000000000000000000000000000000000000..2a038b85a0fd84c778c044ce9477586c3d26c9ac GIT binary patch literal 2744 zcmZ9Oc|26_9>>Qz!q{Vw)Re7|=_ke#(qtRENg?Z4BFXk+hG?-HO=RE7dP@uq*~Xwr zxXO~BHA{<;b!LpUv35`Y-Fwe@o%8(noacL<&-?v-Qf#eFA^bA@AP@**Zici6#zNrH zZd+&he_(C??GWrKo(_=JQKEh_7wU8697;+2{-*&^}L2-X0-K?`u0>zn%bmAsGp?EJBDj-}|PueaX2f%#Spkuco8~?(6Hr z?(e9Tm6eG|OIPjB!Oonqb8{o$r7q0vZZ5JmH?P{+iCVuffEXGYdi(f1O15=&o?6y_ zU0qFzJ&c-PSSTwk<=Ee0T#b$G=#E9@s8XwM)UoFK#6d=Av_wEaKrpQbLb<;yR&M$< z@s@g$WA!E3u9+f&ydmLo^iBzhBnn)TVfDRaA8&7uU(8wC>M=fH;a&=ElXY|$U4D09 z;EVd_dqp~7iD~GvYag+f6e3@`ZQ${QW ziFR`GhbNMB%q#6JEG+)1-rU-%0E$`p$Otiv+4Ii*JJX`_tUKuK|a}E*S_U7=w&ZC;>ML_R-19Q67_TJa_ngB;DQJ=NA_-U5Su9O@A>j zFE1AB$5s5{%E}4|1f;Ncb8(0R^!)jA@&NMb$;&JtO%&|<`vs_*o15J8r1o(uSOzp} zETHj<9xAK}toY)|lz_av{B2Dc{pcObHQj2tNAHfJv(nQ=;^X6us>kL=s~qwSVsyV! za9lvqO?Le|r*z!<|MTpl~=Gd%%Vl6cnWA=cforsRQN_KAHCM zqs80C#{3gq|M32}QR~*8N_1(STON7IUZ;UIWgyPZ&S`Fu2kdn&o9Ft}o+q*ynVE5M zVByC!1QwWAQ&WOJfpctZjJ?Bi5LUu#LuL?Bz*xBdJFcOK@t$hWq(LJec}7Y2(3Qjm}9>o4{f zToM4i389(XB8ML{F8w?oG%DlUpU0uCtVae?23oVexc zDhh=rPt>`WS5zR^Q2*}hqb?1Xi%Ljv3kwVXp%Yj!fk2SNgoj(JsHgyBbLn5cEPCQZ z8bHo;%&a5PIpM*z8LuPoe5Bl3sFsI`A)RrK z_rd=-)58nH>XBDy8XtF@oxOv3AS5K$1|CT2PV&4=Nwoqtd2f5wR$0Q#+#HVh+7@|F zB!hWDRaNj)?uChLwb^&xc}k~GbA*J1D66O}=ddZsjNx+ANeb>SN_#tCM1E{kl-F?C zHCM4ud54N;&T!FspHAGl;o!gp27`+eOcXOcSI3Ep3`7oHJ15YQN~Hqod`Nlbbi8 zYVI8~E0djiu!6!u^Rr@hAt9t%_0y*xadL6}?Nf!eU^1C#G#Y7TWtCM_WC_biURhmD zNj6i@b+EM+85DG4RS&+ zUUPAgb?vyH4=A&5Y%CiHrim%xM5)aS1E==!PR!u;u#cBZQ=l}*sRZLI0|NtEPdqOG zx+6L@B<85QS|E``B5}0N-B34@S;TD7(X%$CYcB*k_8@}4gA$UGR=aIbsF7@ZYHBhK zvA6LPUmMi-OyMnV(-&6%LSYH;hJ=`yF-RE>Cv_cKQt{nOk@oiX={Y%xsj2+f=xEIL z%9ygcI78 zO7qR$!CrrT6f*v%hZ;C6_hs5IX=bnR<<*IYNAgy|ImngOpfQ4(OZc#1Xo z%;Ea=<8w3`5H*tTfQ;E$F(3maEiF)>@dk&5HR!w`y!*uKInxpXz(ECo$N)S=ChGz{ zq-SBh-zg0=vQya7f}qc~NkuYe;CqtKRP?O<7}|`Ta)X$?KP^F7P3>A#6nR_xH;+rG zZUh|)=qs2xqcb`>>ajRj%XZBisxi=rG z!_CRzJ5b<*u34ZXib>ztY_EU9|)bLBDkksGi>=7&&9MZZV5 hC|$wl|9r(3ZjC61A=jenfTJkL{F*hg*4X3me*m$nNHPEb literal 0 HcmV?d00001 diff --git a/master/inherit_graph_207.map b/master/inherit_graph_207.map new file mode 100644 index 0000000000..d2a9467ddc --- /dev/null +++ b/master/inherit_graph_207.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_207.md5 b/master/inherit_graph_207.md5 new file mode 100644 index 0000000000..59876c46a9 --- /dev/null +++ b/master/inherit_graph_207.md5 @@ -0,0 +1 @@ +c2ad54346bc5348a627905a5d93eef87 \ No newline at end of file diff --git a/master/inherit_graph_207.png b/master/inherit_graph_207.png new file mode 100644 index 0000000000000000000000000000000000000000..789de8a2a340c42a3f084838f578af847e36d9ba GIT binary patch literal 1639 zcmV-t2AKJYP)HpIeih(`&P`UqjtlM3Pu0XyFP)m_Z6En2_OI z=4k#QO)b+Rh#(hjQV?ydA4Y{Z=U*y{DWa^VlC=a2T`g<-BN7#zc7xpR`^Uk3uWi}9 zEzRp*e|?_kKF{;K@80*^^E`t=7={4`dcj(20Sv*1F_nferqU3`R2sr27fdFTTCH9y zDGZcRC=`beA0~=F%~YGsW-u65T@ph;7z_rR%|@4bd2X8SmC1ed>YrusugMFmD8Gc$9ol(^mQ-rin`M50tG$@QV3 zp@h8r{QNU#&fxLV(vn9Hm6erpx!hzj1xpeYQx6+uhxb*U!(- zS5#C8g+e}`FO$g@7Z(c)3r9vqN=ix~2ue*&_2{R*zJB-a-QF?z^Lyvc9idRj<#I(L z(d*Z*e=AI(P>4jL@bK{X`1qlrA(cuc5C}GH+Ei9n=61V@wA$KQkw^r?a8gpzix)2d z03K2`8cjk%0@1U@Vqvq{pFe*l4>vY8R#Q_G6BAQfTDoi3u7ZLB3J((iAeBltZrqrc zm$zrno@>{xS*=!T{rnI4eQ$1V_NehmVq#)+bo9{B(Bk6a_3PK8qN3bxH-=$3IXP)* zX=7t!v$L~Wt+uVL4a2ZQhYme@^oVGil9Hm+>G1f*jT>=sao#bJGd?~Z5)xuG8c`HA znM_qxRd|9}EcTeGgs|Ay*jKM!IUJ6Xl9Gssh_h$UPESuyOiXOwzFn`^6KQ-tzpt-v zZf>r=z8;3*Z{NOoNOd?IFbo@wM!Z;AS(%lUg~wmNer;%IIC$`2WMrgFCL0(Sz;AyU z$TRg^i%0S@rv3^d$7;25x!lpwQI7<%SnTm?PEAeW!qjRtp3~RY2SL!n!UA4Ab?Q`2 zO%0*{(xpp8Z~OM`(`vQeQp?NBi;9Xc40Af2n>TN6ZEeNti;If^01}DB;czT}BLx1K zN-#Awm7Sdp0H~|0^C#ciREleAR8$lma5x+Q0E(iMlam`ZY>11Cqt>BMghF9cQ&V+y zb#ijDR4RS@_APPAW2SD|vIVc-x^*iagocKOg@tjsT%w4gDA6225OQp{+r3AZ%jE`x zVS0MHrKN?tVEId|?HKAQu-S(nSz-Q8VWT#O*d%*>2Nqp7N@ zqSjT=HcGLvu`ZYE~tE+2xcsL^?)oK+8 z1i(vbe0+RLN=jp6qei2VNF*U4A$a|^ZQIVDKmX>#LpuD^sK@hXqY&05WG8vD@qt;>2OpT6?K5^oNR4RS{{{7tCoKB}}Z*K~?!@ zZmv(Ma=HBG&6_V@zVvy-+P{ClQmOp%<%>?Iv)OF;;zfZ64<4W>+S=M`u~@ENy-NOy zP$QT}nx{{nCL|Y1{P=M`pWo2X zpx5ie!^81Qw{PDjAO2Q)zAP&%tE;QqxpU{UXU{r1I`EISx76I+To#L!o}TXg!V$1o ztjx^J$B!Rhym)b?H;AKBsqWpocjU+sYR!E>UYY#dD6MxA6BD02dE!r|)9H+ijBILZ z`qPpE0R(HK^e=#6*xkE#IUG)Ye*Ri(Ss8!)C#&^KSXda3$9wqjA+beTFZ_$9n$2c^ z(#S`k^#$|!r6G)|G=wpghA^hm5FZ;Qy2 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_208.map b/master/inherit_graph_208.map new file mode 100644 index 0000000000..713d7dd531 --- /dev/null +++ b/master/inherit_graph_208.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_208.md5 b/master/inherit_graph_208.md5 new file mode 100644 index 0000000000..66821c7261 --- /dev/null +++ b/master/inherit_graph_208.md5 @@ -0,0 +1 @@ +8408d8ba68590009a345691c1edb987e \ No newline at end of file diff --git a/master/inherit_graph_208.png b/master/inherit_graph_208.png new file mode 100644 index 0000000000000000000000000000000000000000..66eb3b98712a01346b2d9773db8859234743f789 GIT binary patch literal 1672 zcmV;326y?1P)af$pJL8dBmKHotm0@@7}#x-LhlHjzfnIP49qB=Gn7n z|CD7Y{`~oag+eF{@d`8VVZ&je&TOO6$OMp?nHljWVq#+0_&ay*+_Ps7EKf{Kgmb&! z?|=UMc~Mc3*=*((_Q;VV`}gl}Z*PxOkGP1fQmM|KJ)4n{A(cv3uU_5K(gN*2e*7>R zjW~|S#l;mD7mtmN<>%*jc6RRGy&J=@w6wIKIAvvJD_5?ZS`OsewQD$zi^byf^z^Q- zuIUqVxm+YkN~O{@Yu4PjaRbA!;o)HbfLtzTr#?;77>0Q~9smGIk{E^w1Ogn#FJ8PD z=C{2=LqofE?TU|&Pe@46>-8feBS8-D-@iX`;zV+C^4`6BWinY_US2q1r(!S|mMmG4 zo1438)v5~@E;yY|ZgE&R&g`0+nzFL8uV23w78dGsI{27$I$c*+*W<^JdwYA;YW0g3 zFCIL2pjNA^s;U@<>FDT~Z7ZKXeJU+2t*x#7_U+r1D_833>ZbSCYPB&jF%F00(W6J< z>>bU`%?!hgkB>im_^`UVddB#Wyu7^8(NVkI{`&Q6ilTHn9kdS)4qm-_H6j3~oMMXb<{+zypQ^SUX+wIQD$pHYIK7BeIe*l2ZW(%}%oZ0d5 z@vtBgi2wjzueYzSZ_%PfN~Mxpz>wfLURPIl^ytyl)Kr7P@b>Ln_EONEy=>Vsnx@5K zF`HO8nKU#sq@<)sBoYk6j7B3((=*;eQIt?9R45d%3b!6OfXrrdMMZ_(Zck25-nVaG zTU#3wiC+Qve7=^J7QJ3i5X8vH$gNwqN=r+*g^Jh#O`%Zud_FkvCp94WrzUc8a-KeY z`s&rIjEoG8M)Ujk@4tD<xE_3VQ_G;prGK~xpOX;%kTGF zES7LiUP(zw6B82y0|T%Mmy@KVBmh7{Lc-z0hu^$;^YZ0OsZ^SupHC3PnKNhl`uaF@ z902g)!v~YeB$vxeN=gWVu-olzZEeNH#j&xm+yX{S>=i3kkR)j^7(RadI669NwOX5- zn*jiciHY6a-65ajj0d#V*49&}PB|Qo@$qq=&*$}e{eJ)75>P6YTeogKaNvO3?RGky zCr_SaFR4_js;VlF$J5{6fBg7yXoS(0E?v5K@#2n-4vWPSPB#gH&}cLzB_%GGi=wE5 z2M=avXD22m2Kua9x6W)f4-5=gtyYSn;O5AIyLaz;z22s#rkv1OC(>t zYHMrPuV0^)l|>LlXJ_a3?b`tW$BrF)^5ls~B$|2}pOJ0bw#CNAW@l%|#l=}Hmiqd7 zi9`Y~RaRC8zNEtAn9XMU_3M{XsU%6Vu&|JgV>X+Ihlgb{8A+14xw+7&P$({6zFbgH zAeBl@CKGF)5u42>kw`Xd*q~OcWinY!O-)EQfk2R%nOR+3%?_{GQeIwu^XAPhTefh! zJp_R}Uzi891%b=u0{5&r>yYr6;9 S5!yTe0000 + + diff --git a/master/inherit_graph_209.md5 b/master/inherit_graph_209.md5 new file mode 100644 index 0000000000..7a48149a97 --- /dev/null +++ b/master/inherit_graph_209.md5 @@ -0,0 +1 @@ +5831bcd1283840a1ee799a330cb83c2d \ No newline at end of file diff --git a/master/inherit_graph_209.png b/master/inherit_graph_209.png new file mode 100644 index 0000000000000000000000000000000000000000..459c78de6c477278e24c8e68b1f7ad096967a5ad GIT binary patch literal 1965 zcmV;e2U7TnP)Ihtu7Bovz;Z z_kqFA*?!OY{y2NsIcFD+hzJbBJmR@J0mJ+$STit;5o-p9F=EZYFh)yeuFz;SC@Ly) zMHYrxG>;xVnze4$J41heKOR4RyeNSfX0Z(n3|M`A&w6K=VySZ&=5MD~tC5_XZ1FL6 z&cHB6tQi=_h&2Pl82ypW5D^i9TeohxI>uisG&B_D<>ju9@z?nyn}K0m!R5^m9v+U{ zw{Op@#-2TUaO~JIho9fr*a(?S27y2T4-XFn2M6QOp+o5E>Y7&$d*(aWpFe+s<2b9g zB}=Sc9CW$AA-l_)VX;+KRw6n&8X}Phb#-+Z85zOz=g$!l5rK;rFSFK6rolfVnYzBh?FJ8QWTrNjJLBXuY|84f{>}+IaWT1*DV`F1bDwPn6#qjgdBzl9Ga^rY0OXZ~z>~AtEBe zV*SgPFC!=@$m;S;*REZISS*H@mlvX=qtV>l3;-Y^WM*bUp-`Zxs0bk;A@KC{L{Lx= z6bc2(%F4{ojZ5J$HxZ`A3ns7A3vZ}Dj^gK;p^**xVSj<_V${_#Kpyd<2dkm zJcz|&KpRb=4!8|r5uiEZ*RA{KWyck+NQ1jIbB;@8%~`%1))%gg9i`7-`^j5 z_wIElqazdw1>D`;A(P3lZrwUuxNrg8-Q7;BZ-!>5sHh+dt8Ln}X%htm1kmf(uW5XI zobvPYNgxoA!C)XFqJ)G5ii(P&wzf7J85yDC;$nLG^eGV$ZP~Jg%F4>j>TTV+l}buV zOv{%pU82CiKKv9Y97Dv5}wy}g~5E?r9X_4TCHYDuHfP)<$`5fQbuwGjZ)XfzJZ zY4z&W^y<|s(&=)r<(QI`ltk(2=@zrw+8_3E+8h7n%NJ6qR1_8#Mk`jVpp1+Rs;jG;Ro@nC z*{#v(bW~MUMf>;fCm$alii(P&;^JZ&85wc729eFzx7umVP*_-KS{@!ACIB=rFhIS% zy##7Pm!2boJ_0N={C;I#)+(&df2Lt!A*cKOD(vZ+u!>8UY}= zTu$G=f45lEp1C%|bYH)IrTF-G0zi3rd2XuSS-ea2M>^&n~U)9a3~ZCynFW!0I+i9N&vv%;GpUG`}XYv5uv80W>&3$ zfB@6|PoF*k0Q~*^O(%VBZf+PG8$(Y|4}jlaVcEQSGrYaM!EqdvN+kvc2CQavq~^>V zj92a52L=m-t17z+4Oons;jG!mX-#IM1tYrVcfiV z6FE6KPTR(UpFoR5BIxyceEj&)asZz5BgDtYqpGS3Z{EB?OiT>6Z{LoIi3zMkcbc;ACIA-A*80J;@r7&`26`Z3i+>;rQ|6c>DG(YHMr3=kt-0k^+fDf-`5%m^Jczy?_56Sy@?FyLK&( z9617sM1q!<7Sz|*BO@aNzP`Rr+tz|NLqI?P;^N|!v~Cxj-sTb1kav50|2a9 zvj(lLtu}YYTuz{CYHD!$^l5Z;b>Y{qU(oCI&}y|X7!2Sz4%e?=M`>v(a&vRh(b0j) z$w>?i4WYKS*6utK5)vSn%hA!%fr*I;G&VLOF)PS-k)Wxm3A=Xf0sx#iaRQZp^ZCfi%7RQLGaGMduC{6}1V?iI8$2El zyLa!#ojZ4M^5jV;B>k + + diff --git a/master/inherit_graph_21.md5 b/master/inherit_graph_21.md5 new file mode 100644 index 0000000000..61af64e78d --- /dev/null +++ b/master/inherit_graph_21.md5 @@ -0,0 +1 @@ +7716041eaced779243ac8ddbdc527bcf \ No newline at end of file diff --git a/master/inherit_graph_21.png b/master/inherit_graph_21.png new file mode 100644 index 0000000000000000000000000000000000000000..f9c57d43115e9f3f62388e64a24d1d25079b5771 GIT binary patch literal 1458 zcmV;j1x@;iP)1nnlCkl2B9Vpp%EdpUQA#sRbmqg zNuw=z&>HNaMT$3(c(BJpnpjKlkfbd=)Y10EmP^nz0Y08T&w*v5!=GWpHrt*|TTo z6$&C2B_$<~9zCL}hxQpk5O3bRNqR^KCVW2M;NT$Ll6t(+>({T76%XQMs;jGySkUu~ zeIU))2hxmv{EeC|FE3*l77B&V%As1Vb~>GB~Y_{d) zWwY6AGMV5@IFrdVJUsm2!w0|LuTrV{`}^bUXf~TCCnpC62IlAI<#KstWo0B1VGh7< zw>LF4akmws0-@bh#2*PACo#^%m zZns;dQgwB8ktFH!`Iu9C`SN93TU$6BHX4nI4MWoKcsxfeQBf!q9UUF83>RY{5P&Oa za&q!W@ z@J~Xau(!7tmZ9gLKYvb5O#uK_R#u=LZp2_PNDps%dKv)W_xoX+v9U1#z~bT}Ns{H| z<@6bQ_wL=1yy#_0Gb(_nsVNkS*4EY&r5y*j}c=F}t-Nt}L;aAtRqyu7@Fg9Er) z6GAGLayXn&C`4aMw{G2v)jkr5IGxUki3zH4Z*MPkJo0$Fot+(6UR_;<1(8U!wY5c6 zXJ%%OyA_MY`}_Oz^YgF@x29MuPBa}3=f5dsP7TAbM4kUL#Ob;nM$rIQ>CX?srKKf;AQ~GR zbvj*6PEMlpkdu=$Iy$<)zt5c7?{JoP{qFAWYuB!omzNh56buaw-Mo1-&Wn| zbUJ}R@bKY7i^Ye=J*T)1$dsHjM#QVE5^)BW;${P^+5j~{tF9=taulv;q}WK9FYY18K%SkY?-yX~sUHd@JYmdXpaqA{K!_ zKqL~;Em1Tx7!1jZ2N4%~y`Emh(0@Hx2YQ~d52P9UK$@`+q#6781)fBEe$;hASpWb4 M07*qoM6N<$f~GmZhyVZp literal 0 HcmV?d00001 diff --git a/master/inherit_graph_210.map b/master/inherit_graph_210.map new file mode 100644 index 0000000000..03f0acd598 --- /dev/null +++ b/master/inherit_graph_210.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_210.md5 b/master/inherit_graph_210.md5 new file mode 100644 index 0000000000..73edd13b3c --- /dev/null +++ b/master/inherit_graph_210.md5 @@ -0,0 +1 @@ +b8a5e04d6414700b66fc851dea949a9d \ No newline at end of file diff --git a/master/inherit_graph_210.png b/master/inherit_graph_210.png new file mode 100644 index 0000000000000000000000000000000000000000..e4a449e66c9a74e80906bfd2a6311e84ec547d8e GIT binary patch literal 1961 zcmV;a2UhrrP)QtXMY63aOekj% zt|3W@t<*AG7YHGZbX0$&tf)lEIs2<5F(eE{D>O4SN}cAmtSOq;5p8>Ze>^bOZa!as zes$kEufNXu@Hyx6J`eAmb9P|}j^h9VSqREX3xNDLfJT9k0vZKE3TPAvDLkz^?d|R5 z<>f0S1>#oZ<>f_3M_anT?I;?JroO&@*(E{Tj{5p~jYeY~@w87;sZ`6Q2jZq62x1d~ zcN7RIpiv;CfJT9kV!4eH6%}>w-o0fm`tPym<%EWYR##WApn!jhJMJidn3?_z{&k~7 zMn*n-`0yVM>FDUl%F1$)aPZ*4GiS~$d0mJL+;Kcb+udi=xY;0Fo7fCVpb!TU1rBW%I&8E?4 z0)gPmmoLO{oleK+^HCJtwr$&;J9iKS86O`frj^NL`}gnn^Yg2%trZ9a2!c>36b^?| zTwLt>w;8>?y%#QAV6)j-Sy@ab^T?4S4%7Pj`eI{aQ4|di4{vL0BZ7Lp{^-%83Fc{j~+Y1T`h=kDAQza!OD2nR!dK|~&x>oh4fX08lEGzeTJ&85Zv8hXZ8m-gmh_1DQa-{K4$$D5m*t&KwL9QNG0bt^qR-F`WlnVA3pu~;CywJ|V`C{PDF6VOOtxS$?#L*MyrVD}45H!V z;{yON7!1S1!yX(;F!(l89O9>rp@ENzua6&@Z=rBV?DkxHdnt=3*fX=!PB zd3kqtH=E5qdGcgyYb);Zgt9J&VVG8{)o3)Ho}R(M!9q1q+UH$dX-VgM))jCKKWP-wIIvuM#OKDUFSdZ{EB~OiYZ6i<_UH zCppl%E}PA!P$=W$cl#~=ElQ}y(OI%6-05%7?<@=8B-@j*MWL&v&Wps4ZY&Of~ za--2`U(w&+|Lobb@7}#@X=y=GR3s8%7rQzXWhYAV%T1p271_lKM8I8t~kr5&| zFfafB2nq^v7I(4yzP`S^yu84`z?_^M48yv+yIWgZv$L~lG@6T1E?6?7uvjdCKp>Gw zK7RZ-H8rJBD4sog1^@^M2C-$OFCZYmS=@z&`}gk~42CC9p7i(kU%h(OX0u!bOZoP=y1IJDjvdL# z$ry%pc6KHtBme-;pFjWn`Ews1ANzMb3lbk6PovRzJRY4+m&@gKb#+uKmE>5Px>Z$G zTefWB@puddBR4l!EEaovdjkNJO689qKe$}(p+kobA3h8K@bdDqnJPFq_{NPJ85tQU zist3zrKP2j5kR3(l9G}hJ$h7FSm-d}#EBC!nQY_6jWsnj4Gj(J*RLn^P^r|NJ9kDz zL@=4ms;Vj?*;(8fWo2b|@7~?JcP|;Kq_EzNNnU3ER2mu@=ydu@t8fc|-DTFn?@|6L zluD(ir{{qK2h?hHVPT<2BwA@jZpz>O$!tgtwX2gJ>BV3hRq^ySw9adQwH v{yz$Y1n`amAq6xFgcQ&y5K=&+KuGaF;C7O`!6IzF00000NkvXXu0mjfJ))z{ literal 0 HcmV?d00001 diff --git a/master/inherit_graph_211.map b/master/inherit_graph_211.map new file mode 100644 index 0000000000..b5820f918b --- /dev/null +++ b/master/inherit_graph_211.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_211.md5 b/master/inherit_graph_211.md5 new file mode 100644 index 0000000000..963b5efec0 --- /dev/null +++ b/master/inherit_graph_211.md5 @@ -0,0 +1 @@ +e648fb1b31f44819bd3f7f12cd3ddf13 \ No newline at end of file diff --git a/master/inherit_graph_211.png b/master/inherit_graph_211.png new file mode 100644 index 0000000000000000000000000000000000000000..4f668cde1c39fbe89eabd79fa1b726f28b4bb2de GIT binary patch literal 1758 zcmV<41|j*0P)HpPQzL^V%v_vDn;gQAClJl$QM(lC3sDp`3q& zYY3x4R@1Vw9}q$+uNDTid7PCULfrTxv)g1kpXqq~r-R}Fx!MN_W zbzi?r_s!?^*WKgip7;BCc;9o+ZbO75NdSTT4&HPdfc!szL4j}r1_i zl)SvW>({UUt4lgNJFBXy;uLJ#w(Y=y0}0oK#3311l)r;;INZ_Eq0{NiX7kjm*VNSP z+qcio;%SoRyVz=gu9qT8$tGkH?eA zWDN}s@qe4q+uM8O$PuYjT2)mg7K?Z7+QqJ6&lT0)*Vo6M*jVZell1=edVP9&dRbZ7 z;>C+kpFWM_cpSr=AZgg`c1BB7R<2wrkw~6Bdp15k-q6q>5{bg$FiDanB_)N0g}uGK z!^6W(O-=Xi-6KhI_3G8vu3d{iAPABq*RNl%)oQoCR zQHeTNvBnZhJ*r7Mp-`x;t!?-2-C0>#g@uJpO-;kY!?7&U0RY(T_Fr1)C)|T#u~?|% zp`jrFz`(!&b&q;H9!7DTpu{3lgX4H+W~STiW)v`j!ZyRurQSyS{eJ3{AP5vi-EOzX zL z|LWB%j%FAI@87=%0Eoq61VIo4Nl8f=9Ub+0y?(!+&*#sZH;*dAFpPecL?VeCI~G;M8d&!0b6DwP{IZk(8y z;CLZjS1OhAc)Y>ELHaGC(P+eC@z~fHwJ8ArFdpQQ?>oMH`BG6)aq{HJPoF-8!(pq{ z8VZHjiu32sKX~xq%a<=7KYom&s8*}RFzop8<6f_qQ5kElq7q-7{iO`W>({SMCexxt zi}vr|k6~C(Pmj~-G#Cs5fq;uBn}h{LB9W-oYQ0|n=FOXtkrA8CcK`l;0Kme93*Bya z)R~R7nT_!1(W7I>j=g*L?&r^+1VIFY!EiXt(GOi$B9WAol<0K2w{PE0Oia9Z@uIY} z^v91M3WcJeprE?CIuHopIDYi#(WqTfy0d4`PD@Mc?Ci8!t?{LoFJEppn?HX1XtUXT zJ|Fc!rxReMO5VmS#C`SG~9xp~Ek6~)EH7>0Fqb#2+Q z1psjP@ZpCKA7*4^us`+umQ9;B2?PR_N+lEutyXJGOADXR=Xfnc_vX!;OP4NHsZ=77 zsJgmZr_-gUrvm`&cKf$)-{f-njvYI8?%W9gNJ~p&bd{Z*eeT@3ii!#pMNKACSy>qu z13VtDsHo`1jT?1!b?m=JovWx!PTgX$T)K2=-MV#Lia9}FjX7>+|5hG6cpwxCr`ttR z09c#ZD8EOUQP}PF)YR0iTespkURPJA)oQ2PQIay#-^>;j6*(LZsZ^>~tCdQn#bTLm zM@h;|Us2}Hoy&Nq35m)~Ur`_&fkA + + diff --git a/master/inherit_graph_212.md5 b/master/inherit_graph_212.md5 new file mode 100644 index 0000000000..eec8fca66e --- /dev/null +++ b/master/inherit_graph_212.md5 @@ -0,0 +1 @@ +525de28734e4c3f42b1df0c18e6a4918 \ No newline at end of file diff --git a/master/inherit_graph_212.png b/master/inherit_graph_212.png new file mode 100644 index 0000000000000000000000000000000000000000..87ead3a5cf241330563173c658d216807ab8f4b9 GIT binary patch literal 1726 zcmV;v20{6WP)$yS@7tehXh zHH1+it7%!;3xrS$=BPfDtmuUz=ju~MV)&t0Y!#XfENXdMZKIcorl}*^-R;ALal3cT zwQLhTzfb2Lo^zi6bN%15XD^5l1OXt^9#*OaKqdvy2M_?D4`va#~wk6$%A{AS@P3EEYF4HO2n2 zzPGpc(4j*jk*KDoMj#OE*s+5dL#;8+5~ygk+RV(%ii(N_3l^L_c@o307<%G@pkTFH zX){q-wrrVDD17?#>FDTaQ&SV4&ku*g1VNOQl@%8k_xAP<4i2`owA{UWmmr9hD_35* zawW2M_3G6Yi-jDYI(14Skub-Rm^W|U%$PC5Znp=6L5IUpUtdoKl$Mt2_4?RiXnD)a z%jI%8hG9cPLv?j^`T6-cjuQm2cI{fVTK)Cw*S@~KRjXD300Mykx$V4p^PW6;5(RC@E~O=dZtKYuox&H4HHvu4fG>2!}DKPHt#g}N}#5}1TSq4xInojZ5t zxIBsZ=TzbtXX{m`o;eJTNc-0Py*ITG@9?(;FU2M!bz6lk^DmoHz&DTWsC{{4FZfIuKX5ClPxw6wJ0 z;bD)*n5uU|hlHWueXYF?2@#A31f`}?U+fKsUx2m~V|BVvTFUmz!X&#FjA;3WW-VLaWuje*JoA zXvku*+`D%V05E_4e3#1=^~U|FPmJ*J;lm?Gj=X#K?&r^+IF1K{!EiVnrygovp-@;> zR;JNt-oAZ1Ha7PB`SbGf@*h8bNTt%EqN3W`+CU(HVc6lrhof#q=AAinW=2Ma)9Eyu z&9PH2S+c}vG=BW}(PFW9y zw7l1^UthFnkz6k4^ZB*4wHl2kGcywaV6|GmefuVnNVaX;Mt%#Ik&!{$DlaeZ%$YM) zRaG1g$6zp2R8+(xfW=~!l$2b%cCDeI;V)|ba|u*TCewur7uKvX_UzWy)>NxVJ=6U>fRI2RKmdR~fRI2RKmdr^C$_b + + diff --git a/master/inherit_graph_213.md5 b/master/inherit_graph_213.md5 new file mode 100644 index 0000000000..a472d6f470 --- /dev/null +++ b/master/inherit_graph_213.md5 @@ -0,0 +1 @@ +7b64b682e42020d351889258e77df169 \ No newline at end of file diff --git a/master/inherit_graph_213.png b/master/inherit_graph_213.png new file mode 100644 index 0000000000000000000000000000000000000000..c8ba85453c04999023928e770a09c07ebc3f31bd GIT binary patch literal 1857 zcmV-H2fp};P) zhA>KOH7zT9fDmfI9MvBsD=H~+&i<-M4F4z=vqH0lMNQ}0T$U3}Q%AIi-yavo+QZ$g zpE>(_UVoi)_?+{3pTql}bGBWE_-Dpx2Qo)N5G1Gt z-ccZgfJT830vZKEh}kwuc6Rpl>(^&F>EGjzr}NLP!(7}^{<%e*5BznbWMyUDx^?Tf zx^#ASR#a5r1nk_o^YG!rGoBZM!(7}^{u_9`-j0qAsZ^>`sb)WWb#?W@g9nX9<4g_s zCq~(@VZ-Uur+GXcg+f`ma%FpaJJvoiF`-Z>*laeHN|npyQ&Ur7vAC2yIYVOhU^J%hn`@#4kQ)Kqgwu@j0}&*k9Y zGfYWX0z2mC=L-Y^hr?mB*$N5@1Ofs6)FNpP#qD;twYBZrw=X3nB{w&>v9WP%Y%G$b zKmY(bo$i;GzzT7rsMTt$jM;y1a1eV&&1Q2@Fpg0o;g7LcEXm2qCX*>BAjl}8VuJEw z-$pwe4y@|&cqkN#$z(E{&4H`j(a{lT6l~`R<2w4^5Cn;f zi<_93uv)DShl5NeFIln#3qw&fuor{D@R#*^{l<+O$z(EuAPR+IaBwhGhDxPsXlUr^ z>0vUN2M!!C7z{oFZx7n-_W1aC7K?>dvGdpeJ4@))@HGeF@p#(X+a(eSilU>Vqt~uo ztEs7pDk&^8c9~_dSRRiDdp>?iK>EK@h(w~cwziiqU-Edoyu7^W>1l!;1M@POOcIGS zGBOhQh=@cYI-Nc_Iq5&(gAQ{4?;T&iel0IAKXc~H(9n?A>(yv9Znrx$V_I6;kt0W5 zzkdDn=~D`YA{L8L6g_q7l+|j*(Ybv2a<|)Uv)Qm}Utb^A7%3iKv!8eG-YJ#JWy_XT zR#u`Y+SAixFc{==d1`7Zju;$f%qR>7Lnsu=WU}|~-;a-vYqi>k4<7;m($mvTCR5mz zjdYpy^W@2slP6F1_4WPy`P1X^xLhu;*Go`OU|t4;QCwUsl}bN;{5U;5{p!`Ll9G}i zKYnnz+?<@8s;Vld(`m6-PMkOqb|@_G!i5VH5)wK)J2e^&e(E)A)~Hk}o6V-xYVCGA zcA!TBMbW&xyvoYTp`jtW-G1oMAwHjfJ+*!MJZBbDXilSXzT?GXN0Dxo1jy-<-I4LP9^ixk%^7HdkQ&ahTK9x$s;WvVl_n-80swS6-M4SwI2_KdUAuPg-VFdqNJt18 zip64Gym+y^yqrRzD3!|6(o!Mf<C-b zo10^;;`fM&=J~#(KnMbj0wDx63WN~QC=fz~xy-h-w9LK^$Q&n(QOe57W?u(nj)VB% v|D!+%0PiReLO`QH2my@(Ap|rEgb@D&*c^d8wo~sz00000NkvXXu0mjfPSl4= literal 0 HcmV?d00001 diff --git a/master/inherit_graph_214.map b/master/inherit_graph_214.map new file mode 100644 index 0000000000..acd070b7cd --- /dev/null +++ b/master/inherit_graph_214.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_214.md5 b/master/inherit_graph_214.md5 new file mode 100644 index 0000000000..5abf8a35e8 --- /dev/null +++ b/master/inherit_graph_214.md5 @@ -0,0 +1 @@ +31e46f17200df795fbbd995d4fc550dc \ No newline at end of file diff --git a/master/inherit_graph_214.png b/master/inherit_graph_214.png new file mode 100644 index 0000000000000000000000000000000000000000..7c651fb4f60cffca21419dcaf14ed108fac2a380 GIT binary patch literal 2037 zcmV31v0SF+|Xo>rE$aL7P_0Wfr#SNU?>G zb8D>`WtNrIAFZ0!kg~R#*o%yXMD-VDv$<+(lT{kos!b3HFf+~JOR^>}zd!DNj6e~T z7vtW~U+12kbDr-x&wcJW-scKrx7z^Vx$3d5b5)70|Wp{VCb4{dsBe`52EIlZ}W8c1gE;Z7$R*gmr_pFFEiFMd8aNg`o#n6&%Q5bk!@3}Wfcri>JNvi!_#F+=mA?o2{#>i^t%-Zr!?d zot>R<{p92%pU)?g$#^{e(4j-WfB$B)**!fy2M->EAc#hzxr|d^U!Rti=3aJw<~KDp zk;&xP*w~z$oZjAEFU7dqot~cN^Z6taDLy`)$z*=}_6_bnG&Hn(_ih{xw|@Qln>TMl z5HvP61`k_TSGRrp_LVDFwzah}nM??RFc=J(OulsKlIO(t=g*%{pFT|@kt!=I2?Rn( zNr~t6{Q2|e{{8zC5)u*<6S-XO`1rWzb)HYNuPid|#bR-Nef^IgKg!F?IUEkW790+z zx3{;wy?tV#eEG7it&K{h-oJm}ZnrCyN?)z?_xIP-)JP@ zRwxv9yM1die06R;#^y`7)VI_B_p!l9Gvu z36)Cq{{4G{!NB2gJWS2AX5X+oA(P2mYUU&(BSRn%z-9O*H5!d@B&pSEm&Ohsz--yF zMI;h=9^cVMtJTKF#`g8~xirYn&*$^`9>loVH5d#4fT5uw_|j^%;&8aWzCN{D4FDJ& z9fj+=y1E>f85tRHe7kew#*Na_Qupa_xm*AMkH?#un({nB=Z*sd0|0=*!9lqG)2B}W zfbZYG&o?y>nmxl}u~;mYbIl^-J|Q6iF2uyd007Kpvrearh=@o{O3J z9i8oxNF)pfGd4EneAgEi77_@A>FH_5W~tR`okxHm2ri6_jFgp?UAS;zczD=mvk8Sl zi^bw@F)=am`0?W(K74rn`ZW%RW3$;53gz6nb2^>QgH9rmXt7xIdOdup(P-ex`PzHd z>=S%_!_NF-7y6aavvq@=#SzBw0bzO$Z#7cX9%J$qK8(ag@y zTCG;I*$i*e-r#IEIXQXn-n~2?ufM;4W@hHyyLUxJMSuSMNlQzk)9F=JRimS$TCMiX znKN?^1>22_i;IeiQYw`~q0qDGjT<*MG&Jb-dXY$EFc{#SbUr8)N^WlMkt0WjhldRY z!_lKh3knL7l9J|Y@1AGfjvWAiQ>RXKbaceT#JHdH z7i8PEZSnE(1qB6oJYFaiK6>;Bi^Y1`*Tt?_EKW~PFDNKTNJyxvs^al@(b3TW0GUi? zGMQ3SQ}^uI182ITqM}@eN=Zq%di82qSs4z8tFEptE-v;)00x7}%gbwRZLO`X_1sb> zlVP#g&6_tspuW)`0dU@6hSK8a#@pycwRrrSYn%&QObL8(4g-j-k zjEvm5bEj6Tt*xzPv)Q3mv@rhCjP&<O zL@O#PqNAgWi;LH;U3>B3#ihJST|R`N?*ow%-LPSUP$)DSjkj*y(r7f9nVC5`InB+@ zCX*>hvkC;xFM9sn_j*B2iH?qr78Vu)0P5=M0yHDPs9VyY~=4Ok<;(bcAsi|pdYHGfe=-s<_&1UnHCr`F+-5N0M!6w|E`5-VUQGq~k z`}XZ{ay$r|xOe^#bj_MIbAC&yQmGu}6)RTQ|No$hNF;W2bin0j&z|A&cpMHFNU_U> zF!B9T_!rZ-ejyB>`M&Zmrg8lO8u$NX8rLtNagSV3-y;{)_s9kHJ#v}jtmpoNOekT1 zQmJ(L7m2^(o=7CJSghbmLJ1Ny8qMXy6UdJKhB{I~_j}}m`X0HUzDF*o?~%)Yd7rRz TS29cg00000NkvXXu0mjf1E}~N literal 0 HcmV?d00001 diff --git a/master/inherit_graph_215.map b/master/inherit_graph_215.map new file mode 100644 index 0000000000..9616a57f1a --- /dev/null +++ b/master/inherit_graph_215.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_215.md5 b/master/inherit_graph_215.md5 new file mode 100644 index 0000000000..2032838fa6 --- /dev/null +++ b/master/inherit_graph_215.md5 @@ -0,0 +1 @@ +fa21f82de4c1d791d78ab754df23cec5 \ No newline at end of file diff --git a/master/inherit_graph_215.png b/master/inherit_graph_215.png new file mode 100644 index 0000000000000000000000000000000000000000..6a401975c84f6917f01cb708b2fc6aac75a7f3e4 GIT binary patch literal 2068 zcmV+v2fXJ3f7L~;R_EvE+i9?4$Bv^%kIs4A|2nft`Cpt5+yj%zR99Cg5{V=diL15znVI+? zJUsl|xpT?M$#gn>)v8sswY9K*e0*Fi7IQe9fPjF4f`ZA(Nuf~K*w}dBzyS=yVq#)Q zgbI2=Dezxeq0rluwb#aPFkn3xcY#cVd)-``Pbdm6?WHZ zwW+D8bUJ;_nl;z1UBfVJcz75Nd*;lUZQHgjUc6YLPzVG948tfC3WvifD=V{qSl`;( zdh+B+Hk+NFpU-46ckkY9-DbMH+S}W$Z>&zI+q-u!gTV+449v~V9T^!h=WZ5>VVIp; z{bvXZlu9M3#wHs#Ze+1oZ{NP1oSZBxD`PMiCXFO=Q0ua}O?!L$f&~le>+AJ;eM3V-Nl6K8z~k}6 zVzGTOq_`Ow8GJq;$MLbTvEt(5h=>TI(MS+PTwI(`DAeh6U0q$#(a`{ap`jr-?1~jD z-n@BZFc{2(7z~D{rlzp4um=wwSf?{MI4G4$BO)S}E?rtsQ1JToYpBGU>GGN`m&C-x z)YMe1R@>X#o0OE4nwn~EZz++6G0SVu<(sj(d& zOozD*j^loQel0C6qy{7(Sc@UW)o3*E(TA5tqmfRhx3si$baa^i@B~5B)zw-006zED zT)A>(&z?Qj>E!0-0surJ(T^WL>?b%~UN&>->goajba!{d`cI!e0RZ~@`>jRJ#s@Rp zA21jUSn&1r1pw&v`ktO1FE6jq(9oF;XcG>HQ&UrO{P^*xsHnWWypJD0Iw*$Jpu4*p z0KjB2F$}{n%*)Gbe0;p8r$?*R(rC2h%a_AuTrStL7mLL*msKj&rcIk@G#Z9sVzIcd zug_YBL?WrItZZ&>X0zD`4<4+quP3HiKJ4UWor^}Jp;D}VO6&1O?5l;PoF%O@Z$Ese=! zPE1U|4FLcE$8pOMFbso*Z{NOUXJ?;3e|}(Kz+^H>rBZ{zU>z|qF!0#1V;??zc=hTP zolX}DgyjVU@-Ld_QK1~&Q4fK5(#E^tLMxIEEY>35ai|MwY9a4 zjg84BcVqAy>*OifL_fB!xsBje}KpJ8EPv9Ym*g@r>yLpY9~I(5qCP%!S2B}=@$z13>9 zR4TO}dfmEp5{aa@w^t^UX*3$R+RivHE|;5-kZ}0$;emkxjYf0i$PqrD9~2a1Kjpt= zE`K*xS68oJzn;hAak<>a#>S+iBmlsP6DOWOf9~t+JA+MZVq&7dzdxVP4+sd5N~I4U zKBUoT4)!I*mCNO;SFh&t`3wf5u&_`h68ZS}005Lq<>=^WXlUrpojc(voVT|(X{eBp zkV}^?WoKv8>GYzaqRh-pM+8tPl$4Z|`}gmcmX^*kFQrmRqtP~O*bo^R$z(F+a=9ZZ z{~eZ7rGxuKcjei$X8{2Lu2$g;toMmFzCZ9Nlu9L)O5MJFJC5U}rKLil(AA1ugQvew zOi4*msZ?w>TObf5Cnr}_RJdA^Yw+~>VA--|3WdVeDqN4J&j$#IJNp2gUptOF`{0k~ z*T5r>r)}ct`vW@^7Z>aG`kb7c*w|QCYngZ4c|NdQ7aTmEwj?hv&&S6nGc$AL%9R%` zTp+!5b~D`B2PEWjd3kyH;Nal?{rhuratMM@C=}*1I<;C&YQJ{vTB%gp*VlLb`t{Dv z&hYT?`1ttSw{MS*j=Dtuyy8JV5R1jp(b0<*Ejo1QkWQ!T@9%e{mzS3pkH?eC + + diff --git a/master/inherit_graph_216.md5 b/master/inherit_graph_216.md5 new file mode 100644 index 0000000000..d7b9b13269 --- /dev/null +++ b/master/inherit_graph_216.md5 @@ -0,0 +1 @@ +d45422d896591f3f49fe1e2f0cf2f6f7 \ No newline at end of file diff --git a/master/inherit_graph_216.png b/master/inherit_graph_216.png new file mode 100644 index 0000000000000000000000000000000000000000..1da69ec7a617949444f2e2a2e496fac54b20da10 GIT binary patch literal 1710 zcmV;f22uHmP)BLuC(kQa~TD0+Dd%U zBywZb9EFyZ{n?sZ(T1#gQI1-FW=q6gRm<6YQKMls&Dg9Jd83f^2d8N&wYc2p#ofbm zyATf%Vs-E5)wyTC^ZR|z{c`R(Tm>Qs0&s&($bQ2Ni5?+OG}H#P(R$cD zn?bNV&#FJ8R($dMy*xg3V!xpU{XwY8D`!^6XRyrwT4_BIS+r=8SS)_{@Zsp_XkA^MP$&!rg9Jeo6&2;@=lAsV z3=R%9G&J12d6OWBrAwDyx^yWtcKPz<7K?>!pEz+sDwT$}LoqL2yqGj;lHG3i`~41w zqq@493@9ut)a&)p#n9>&7Z)oO3Jk-BhK8!Ds`008Lg z>m%2S%jKd4M=|?HgkmrZ%gD%ZI-Rrtn%UuEXm!cAhF-6iyu@)FhGD1E>2kS3?h*vi z-ri0%n_R)+oIZWJw6rvQI_2f%0050f^ZE1V=o1VPi`gN3KA%dZ0sz$3*2WSaZg!k| zwooV}8|mrk006(=?{>RWQc|Q+>90IyXh({UE+qW+#Cr7K*K7IN$MlrO2*RNj# z07N1Yc@#=XNf{m3Yr@z0S`Y~6jR3edRWMqWg zqyYf5O)>Ot`NM|~Wo2bYj~;#Z?p-h#G@H%ghbaKSj2Scb?%n(3$&-8c?!hpuR;y7I zJ$(4E+wG2H;sAhW&z>0!hS{@c@7}!|MbYl=ZoA#C)9LtpetZcNX0})?Rw|WRt@ioz z=R-q77K`Q9ty=(qS+iz2oz94N=SK&$5O?q1J#^^Mt5>hSefx&vxZm#&27@u`q1F|P z#YII$8ja@V%a>zgV~-y{E-o(q`t_?!Cd)5elv + + diff --git a/master/inherit_graph_217.md5 b/master/inherit_graph_217.md5 new file mode 100644 index 0000000000..cacbacf45a --- /dev/null +++ b/master/inherit_graph_217.md5 @@ -0,0 +1 @@ +d220cc502e4d87a6514d20accdc8b231 \ No newline at end of file diff --git a/master/inherit_graph_217.png b/master/inherit_graph_217.png new file mode 100644 index 0000000000000000000000000000000000000000..736c968e88c40c936c015e294a58caf1e8ca434f GIT binary patch literal 2204 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 + + diff --git a/master/inherit_graph_218.md5 b/master/inherit_graph_218.md5 new file mode 100644 index 0000000000..df37f7fada --- /dev/null +++ b/master/inherit_graph_218.md5 @@ -0,0 +1 @@ +66ec417af153811d10b2919c56ba0952 \ No newline at end of file diff --git a/master/inherit_graph_218.png b/master/inherit_graph_218.png new file mode 100644 index 0000000000000000000000000000000000000000..65016c1653af6412d441abaf3f6ee7759fbf466e GIT binary patch literal 2144 zcmV-m2%qG-X=WFZmUR>~s|l%V z2vQ^~we0>!2)Rf{7wDp4Nuf*qtD?~SqcF5WTY^bBm*&hX-cm>8cD{cceuv{Z+wuI= zn>`mtVScY0sWLOP4M!DJek^1cqS_ha(n?v$M15 zdyN_!8_%CVFA|ATQc?s0!I2|JsB`@M{NBEOi;c}@GYrFngM&1+wOa>bp=c7ZYtT_a zIy*ZN1i|c-mzUF|ISD8My(`}HDRqp``TqU;qD70UtE(** zOHEBpW@aWfL7`A+G#dI~NPc5uW22&?OeWLN&`?H3Mqpr|)oMjiG%PGksZ{p#^t80J z1P2F05Y*e-ihA8wu48-Z)Pyy~GnTKfFE;S>^n@VDVzIQgwsN^# zsZ=^OgLV;%#l^+NXV0Du3JOxI)nC7UWf%-;!q1;SAqWx(1TYN4FwEt0hlht-TU$Fi zI(R(Z%9SgzX%dNqxJoD#;^WfN(yd#!@_0NLhBX?E*=(kUq19^h^70G@gGeMgapFXE zbu~Jr?p$g*lh%Pg5voB)1u>h=US3}K{OR1y89TfO1O!;E)|QqQvIEYvTtr7lzj^cK z)2B}n5fQs~?HU^!W4Ms$S0oZ~IGnz|KH^&{Iyzb)5R8nB;LmAHCKJ&D{`*&VcXvWU z!qux+J3BjVHk(eT8y_F1dR(bQTd9*hJw5R^ zKu=H4r0LMtfj$u`jtb)E=Qlb!ipMjl9U5j#SVEx?K@hcC-PF`HG&Gc-pa1gZO9+D2 ztXb30&|vpYI6A!JR904Aym--QH2(Yd&uX<=EEb#1#xNeDU!hPK6BDCSseb(UF*Y{# z`Sa)4*x0{+|H@>t(9qDdw6xydUX#gm;lc&GrZB(DmMwF4cdxCj)#-Hft~YJkq}6JF z{rZ)kpWoizjvX*a$mR0F!otD9!M3)xtgI}0gOk>QVInw=3L=$C!@|N&ojS$P4h=K; zxZ&y3r<*r#Rwxt_iKMQsZtvc`5Cok&ckcD;*Pfo9)Nh58vU~S#Z*T9Ys3;#FADvG3 z{P}YpkH>H=$!}3n(fal4qoSgGeSOo?(o`yyhld9QL3+J@aBxs6l^#5J@bKZo5Cplq zyOT@>1O(i;aU&rifzRisr>Doo#W4wh!{J0mMm~A+#IA0%T5VrnpFki$5M)w=OzOZS z5h64N85tRoN~H*bBqb#=$<#i?&5+^YeZKPQ)hiz#A7@7~1I&IR5asZ0rypxUq1Wr( z+}!r<+h;PFva+(2N~N!dWY~m5M6FhPczDFc#jRbt_S&^;)A<=>J^_S9rl_bWCnu+?t1BrfDKRk- zMbVOy61-QUwzifuf8)lDI-SmJHs8H_*Jw1#bR6`4#Xtk3c0&6{k8>dF9Nk(sm!$1YZ@wW6XTIXPJ( zk@WZX-@ku9Gc%LLC|w?KcxMDn^Ut?$-wFx}ii?YRJl?Tm#|#DosU2!z0))i~ya~t6 zja;!uj~-bpmh$rQ9Xob7B{tUtd=xT*ruio~H}~GXdq7nrz>WnGzvvkZ27J7D@nZCU zy~SZ+VNFdRsg~RumTVkfE9qS0IUFn1z-grEC4G2VF6gd&T}m6uhIa3 z=`dl(^7r?TkB@g&D1f<3e0;pWzd!K`jDmkF2Venk#saVc5Eg(HfUp3p0E7i#h5rDk WAJ?J?l6OP^0000 + + diff --git a/master/inherit_graph_219.md5 b/master/inherit_graph_219.md5 new file mode 100644 index 0000000000..8f259fbd42 --- /dev/null +++ b/master/inherit_graph_219.md5 @@ -0,0 +1 @@ +d3026a1fc0bb945bdc70bd0d0a57cd61 \ No newline at end of file diff --git a/master/inherit_graph_219.png b/master/inherit_graph_219.png new file mode 100644 index 0000000000000000000000000000000000000000..00571508c7d4cee499c6b2c733197bbb82ddf792 GIT binary patch literal 2322 zcmV+t3GMcYP)eGg{vQti!`kJz%;Tmz zzfbRZea>?`&)&Vh=Mf>DP6u#s78`=K9l%+c;Dv>Q33y@QU;0 zwSBPy3n?rPhjZ=PwXm=-5{a~NdU$?nYDy>+GMP*=nVgoEHak1Z=kr@zTTh-m z2|-X`V4#7Xyu3VLUti;~{t91MSjc2DU0q#6LPFZw+AMU&*zU~Cj8G_KFc|Lc?mQl^ zx3?F*y}!Tz@ZrNG5^3}1&3EqHLADee4ksrkXaD~FYu2o(tgPhmcn|~;2m~gRnVXx7 z-fPs+(Q)b0B?g0$nwmii@Zj0AXF8qE-`~Hqv=q5__wL=r#l`UW=FOXIHrsfN$bA3)ebuT}O-)TI zm8!Y9IV&p*7Kn(55DJCp&KTH@j*jMXxpKLDa&j^=Gt~)6?_q+qY`98d0KFtJ~Vze0_bNJb7Xq&fwsnSSTM@PfS9kQX3i?;4yq=Jw85eE*x`t(6^2fh{^nzOGrpa$kC%mhlYk^GFd=C0HOyS z0Dwdy`C~@^!t%n(&(DX)V`F3RXAUm;&dyE)VU)r$2O=Yv%UxYv+uPd>1Pltx*ck)6 z@RRHB?}sln8V!j=YHx4v?CjJ}Tw`OS{_}uWCSz{jz8xPQZyZi?axwrwAP`JXPooE@ zLoF=haLnZav5p>yu|jhRk;!BLfT5uwcphF;7gksc++$HF6nNm`;sO9rsZ>2ZJq`{I zY&Lsg3QfXfGAk-7E?l?}5D<`(lJfcUXA7M%5a{mi1^`g0R0x6~2y$?6n3|gE>FMe3 z?({S`#aJws{#|rB9T`_uRqfollSm{&5F``|l}e?t8zPaYprAl1l`RWf zH8trL)SYV_&b)a*55!oZxr8W{N>^7`ME+l%=Av!heSCa08ckPMm!Sc|KbeS(jC}d> z<@@*V!@|NsLqq50<}AEX-!6l}AP@+nqoevCsmRDkDwR4jGlQJd$mMc<4aobip`oFK zgoNwYuMZ3iXti3gSgcm7jV*e3c$`0f{?n&VuV23=kw|<#pT%Nby?V8$r^i^>#l;2r z01OWg&l?VU9?%0Z##}Oo;K zj~mL%%eQUY77-D_VzF9VTMryK006jn@nT(For{Z$@o$CmvTxr$cXxL#mrEv-#bWW( zr%#DQqJ{Sw*exq7+q7vDm&>J4DCz0x0)fEU*%<&Jkw_*cCfIEDkt0Wr9Xkd9aB^}o zQ03#}bL-ZvgoFeViIkC%5fc+*i30=zAv`?%@#DuP>qaCJjgF2|sZ<`1H?KlV@?c3I z`k*9aW@d)XX7hNwq@*NEA~lWvVrb#!eWmjJ`ExRvY;7+Vfu#=w7;WB7^kdl-5{bmo z(edEHgL1h%J3E`t=UdyO1!8M~*!#(QczAeKRTYE5;PH52VPX0C`PTMmf!JCg_P%1R zTeq&VveMdKECRL`h&`@Yw%io3Vz9@;!dU|F!otA>d*5SWL1t#AN~KCnOw|87JA1?4 zSFGXT;p4}TQz#S<50B*JWcW2LFyC!rt~*7al#~=_XXluhm<<~?+_-V$UtWwXU+lfG z;^N{aCnu#+>Bo;B6$(XSVj}XRva+(gyu87|!K9?5#Kc7S7%)CQ-p$RetE;QFwzj;y z+@#JeTegVBVx>}f_wHSpOvd4GLPA1{ii+TlD|TGEgWKj*gB#K0fdz{1zPfQ*q;N z6ZGyB12h^8XFtCfB$|~Ru(pK*dlhld8g56YPGtruMcj$g4^6^G@3bi zq&o$!EpwZvuV25Gl$2CdR1k^86DLkcrBd_~T#?vyVX;`O(9qD+r%x9Z6{*$gvuDq8 zxm+(VFLUxpcS>Pl;q>&hxvr9j4-C1*ev*p^>^4>cZ$t|uUI&k zfEN}HCg6pIg9&(H;b4M^%{zSVhlBGk{IO!uXtdbaSZle0vwVq-jWu}33hD5FD~E#t s_#O)f6Y#>q!34apa4-QcEF4Vu4_ItP%@nTzBme*a07*qoM6N<$f{1Qt{r~^~ literal 0 HcmV?d00001 diff --git a/master/inherit_graph_22.map b/master/inherit_graph_22.map new file mode 100644 index 0000000000..4638284faa --- /dev/null +++ b/master/inherit_graph_22.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_22.md5 b/master/inherit_graph_22.md5 new file mode 100644 index 0000000000..ac9f4dc5aa --- /dev/null +++ b/master/inherit_graph_22.md5 @@ -0,0 +1 @@ +28f0094193eed13f91d8512052739cf5 \ No newline at end of file diff --git a/master/inherit_graph_22.png b/master/inherit_graph_22.png new file mode 100644 index 0000000000000000000000000000000000000000..301d451f747c1daee89c9f3805d03cc399e8875a GIT binary patch literal 2046 zcmV1)a*w0@81uVKO}RrXU`sw z8uEEYJjk384>D)OuzX7;(&$z+0Icyx3Wf*^~0mX(e_yPY&P4zef#Ki zdO||N{{8!Z{P=-0310Wcf`Wq1&dvh|4!|%h5D0KWLhJ&CSjJOgqXv z*O^+auBxiCTCIhJg$jiNh;RypqN}T`wYAk?F!1^O*RNmu*|D&&u)n|m&6_tvLqqB5 z=`xwj?RMikpi-%hA3q))9bHmVa`WcRIUUZ=&tJZLxlX5h^5luHy=(8@y$*+?ySw|t zhYv=hQK3-GY1V`0=4L*h-_X#2Ac$70#SiV)ty|~MpC26^Ehs1mY#0QCMx*hl@d}sA zy>#gkD1)2PWHNy}sK3A8qw(g=n`>)paXK1}MhJq;W;3XFxm+|Ft*564#{sk1%wn;A z|Nf02h}~{yFc?!)Q{YcbCbO-r4U~c9pFe-cK)B85zO4_x0;n2!ad- z18CFR+Y3R^@bEB#AR>_nJ7bR?J@SYPTSjw+I^Z=lE|*(bSvluaBM2gw%jI%8wq~B| zj83P60);|>Ajs)-4h#%LMnC>lvcFfDmD=I4L>+74EntK2Ky-X(i_3Ibp z;|v0hZ5bIEs0E==*xTC+b~7H2*U-=~IyyQyIC$pF8PFgtEp6-8tw)a@9T^$X>-A-2 zWwYJja5zGtu%x8KVzC&F#?sPKu~?j#m>B3hBqk>I^z=+mPveKS5Q2HuZ)|MbuwjEp zB;s&5ot>RKcI@!8qgt&_Pfr(%#dJFT*s)_pMMcY&E%Vh_rBaE-Vr)%xbaYNm4mk8z zS6AEZb|#Z4kw|v$-i@}=XfzWO6KQE_5{aa+u+XbzjYbn28@qAiMn0dbFzp4MvkU1kBWX^~OnKR-+ z=FF2Y7muJY$r&nkP^r`{Teh^fw}*0c5A|g6#G_yl7CD3deK}+{oB4cxUS1yh&Vpn% zA>#1vZ=A)YNq9)TzwO z%;MtWj~_nlqj__EN})>d9#uG8uM{Q2W@xtvbtoL@o&mvGq|{Q*ZSIehqVMMVXJ z!MJ<(Zfk4nnl)=6zjY7~^#qGo3){ABi;IgBi^cKr@mH=~X=!PRjg4K@z&*h}+?MJL zvOu_8?wvb#mfDNOB7DyvB>qF@jCh30xp5(McXuzf3n7JEXT*cd8Sx-b%7 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_220.map b/master/inherit_graph_220.map new file mode 100644 index 0000000000..a4ea22bf01 --- /dev/null +++ b/master/inherit_graph_220.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_220.md5 b/master/inherit_graph_220.md5 new file mode 100644 index 0000000000..e5a324c83a --- /dev/null +++ b/master/inherit_graph_220.md5 @@ -0,0 +1 @@ +59d00ae22c0e17e622d33658c0f223f8 \ No newline at end of file diff --git a/master/inherit_graph_220.png b/master/inherit_graph_220.png new file mode 100644 index 0000000000000000000000000000000000000000..7829d71af84efb4b908561baf25b51a22e6ef50e GIT binary patch literal 2312 zcmV+j3HSDiP)b)#@gj z{e61R>wBKtdG`AFo@a zra+c7+1c5lp`qH#zjiE{Ojc7tv*5si182^hS#-Ti4zq!>A@;aqIR3{t zu-gX)1`ZxPNTEJ>JY%jF1yOioVX#MWpWbOVLsh*5#20x~!_ zh@vPar?$2h$4xV6bP$WhdNW4Zwrv}oPJj3A-R$gaK|ukPN>!`X8jU74Hg@;!-JPAC z6B85v{rBIqXU{YmO;Au!Sy`F(-km#lmXwrW;~O__u-RW4ITrO8Cl}=4f<>cf91_r8BDvd@H78b_i@kT~Qy1Tn~ z?AQSS7#$tO#I9Yt_U+rZN~KaOM5$D^wY3EV1Uz~2#L%6gp&^k-6c`w|YSpUD%*;1$ z-e8s(g+`+_G&Epi?96&%V#1U=rsANh9mf%)@i7&U@bK`%hYt@A4@)GH;NW1b9DD!( zVzKzI8QlxZ6RW7G2pf-&k7J)XEakhpy7U&~B$g?(Yot=CySsZwM~B`5y~Hv!Mo%yH zdrNE$7~$%9WfMWDj;&X+}+(>yM7^0bJ2=-e}8|KO4Z%nt*?NzAQdq&F)v@f zeESZt(Bob+CY)tnf6%!LfqtRw&X0+!tQmIr|g7*E_@bGYQ za`M%yR|f|N)oQg!BvLAsh8n%Sz0aOK`{~oC*RNkwC=?!#$6~QAU%uSi+iSSk&CN~w z0T>w>G3yR~9Pk}6#8g0heSK$VXSMd2m4m~gB^I4dM^Q9AJ^kCaZ&OoKB_$;Y_wRs!fY8v;tgNij(NU>Xdhy~#qoOdq9v&VpE-o!CEh3Q!U-jnAn}tGQ ze}8{TNr_A*!wL*NI2=w{S=r>|WM5xjUS1x)K(leM&=D=B0>Wmq!@|N&ojPTq92^$& zxS^t=V#}5-(b3T?7OSF^y0D$x7&%b!_!p+Ui@UKF%?Af!&)6WDD=r(_3C%zG1@#E|*KCQnRwM_IdTL5;Ns$< zC(7U7|K`n`$;rtS3MD%`J3c<%5(7viQdCsb(P$`&niXhC94v7} z7o331%*?RaY!pRPQ&TPR)Hu4Ep@qe}qw@Uub1yG1TU)URSlQoX&s)6&wg*RH^H_lT)(6Kl#(PfvGsb&ZdYU$<`E_3PIc@*>54 zaJ0lqOiY}bnrd%v|M>BvOeRZ7NzwkOyu7@yuyAN-C^a=TB_#zr)=NrC^6>EJ?(VLu ztE;G}u!;Oln>L9=BDq|C_wHSZM8e^4!o$NKJa~Y0Xf0KAPfM5R$-B0D1bYSE)6;{^ zfBEtS0PyqYPmPK05u9!lYs%MSbaXT(CI$eIpP#>gs8|)SSZy=*iA*MQc6Rpn_s1@= zx7ymTej9d=;CGu?S-wi8s;{q4OG{(1SmWd4_wV1&&CRvYaXZAJig!OhKc!OH-`|h5 zQekatetv$Y)@!>>uxD?!xFJaX*RNkoOG_&&E6HT?v17;D+uO~ixc%c$I~I$@iin6f zdGh4o;Gj$@iDdjU%O2RlK=4GLxn<7TU*=J)phOKH3!Hl;9!Xb01%7C zWHNc{)~!K7K{Ohzyu94(`hV&+AwqspQPI77_jc{tW!}9dgl@sLM2q*ug6M7&hiS_( z1i-c#J&5i$vA1p(tKn$B3jYIxz0000 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_221.map b/master/inherit_graph_221.map new file mode 100644 index 0000000000..4592718575 --- /dev/null +++ b/master/inherit_graph_221.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_221.md5 b/master/inherit_graph_221.md5 new file mode 100644 index 0000000000..024dc086c5 --- /dev/null +++ b/master/inherit_graph_221.md5 @@ -0,0 +1 @@ +e7c96cde1b94e4c87171114502fa4f79 \ No newline at end of file diff --git a/master/inherit_graph_221.png b/master/inherit_graph_221.png new file mode 100644 index 0000000000000000000000000000000000000000..491037683f3cab05138fba7922bf88c8eaaeb6d1 GIT binary patch literal 2356 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 a3I74lBSgcYjE(^S0000 + + diff --git a/master/inherit_graph_222.md5 b/master/inherit_graph_222.md5 new file mode 100644 index 0000000000..c3d03328a0 --- /dev/null +++ b/master/inherit_graph_222.md5 @@ -0,0 +1 @@ +9a15e185b08146885065f24f5c3a7936 \ No newline at end of file diff --git a/master/inherit_graph_222.png b/master/inherit_graph_222.png new file mode 100644 index 0000000000000000000000000000000000000000..b9a8b92106bad1bd16ead95a0e3788cd01674cea GIT binary patch literal 1676 zcmV;726Op|P)#86zx+n(g1-_nBVBk4BzvuVt_+^~8Nr;HRFyhlLO>_qg6Dt;8MzmOX8PQ_lWkhS<_bJ7sQMB?#yc=I^rn>Q$2(ivv1S*=!7R8)k0j~(+e zqQ%0?h!zVkBU=Atcnb;&aQX7(M7J?#a&vRh+S;1vHbm#23@^h(BjMrA&(FuTYu9E} zWBc~)IB?)V+_#;nU%!4qB9ZXE=FQ{1*pqN#=sn@#{Xbi{a3P2&^eQheM@>ylXxZoU zC9JnVAb^JtA3~?o!DKQ`c|X?P>+0&Tckf=8iXfQA^5LMk+=M3uW>*L*j z8jS`Li3C!q6e^Vp4Gj$#|0HXq{XbrBZ!eA>Jqo2#iQT(*BO@aNJ9g}tR~SVO9%TyLK&QW@ggUr%!2gbd(wz8c3l~P#_Q> zBBGL#5-Kb#q~6|M8X6j+mX;Q}d-pC85v^apo~~ZKI-%Z%4I9W}v4ob-o;^$1+1b3y z#l^*BG#ZJBsIRY&=Fgu`Hk*ySUN710cB-$h54-JTrKP2$R;$VBbkgwfFxA!7QC?mi z`Tc&ux{>A#Dladmnwpwv@4q0Q&qv+e-ISA)LpN{UjC%Z+FJH)PHd9_+9xYk2gbW4) zJ%0RnN_`=Gz4P(;eALm=K|6Quq(zGsQDI>rwY0R*(9lrSHHZZBXpLKV8yg!#%Y%c1 z1b{pq4-E_q5CH1$?+-gRn(#(4K9EkQlTuSt$>DHB+;%*-+f4xI)2C0Nb$-8}WHK2! z91g*{k>(5%3NPRO3#YlcnJOwOq8?veT}=Q;r_<4oA3p?poNn*Y`1b7^X|-AcK*x_C zpVnBR@W$zw29?LXkZTlMSKtwUN`8YB`4j7B3o z9#7QcO(qkXnwrql(*vbai9LJvz-F^eIP{1&zu%9}&Q4TUSA*j?3=R(B(xpqNudk2W z9J7AHmX(zSzu%Ad@85@SKpOuRv|24XIy&&|*)tRs6=Cz{%@`XS6C9&dDj}6h@%{Vv z2`4H<1g%yZv2HALM&s+(uc)f3!l_fI@cHv+1Ofq=&E{#H>@8io6bBC;#ETa%@aWMa z$Ye59R#t-JIGi|f0xp+p#(f68e*GG?wY6Bjd^z^*+Xs&0(9_cco6QD;!2r2j9=Ew> zJ-nHjnb2r7(ChVh^X3hPhlgRYSa9#&JpjP6Wy|1jI0XM0(>Y;#@ZbTC9Xp11@803h zpFi;X{qTCd2m}HV`z$FbfljBx+qZ8qHa3Rm&!3~Tv=qO8{}!wp>zvUD)>*uGF%~RX zfG1C$z-%_hTyOR2)i9Y%`1tW7EEWsgZa3Q6+GgBm(3LA!;PrZO=guAU_xI!U>C@mi zE^hV5o0Cgrt*xzCvt|v7i;KZ=9J;!?uyyNJ0KnnHhjIV@eWawM@Lp}0jxAfZKrWX< ztyUvFJsoDV8CI(mX=!PpZJL{#r(Cyu_39OF+_-^Nt5!j+RzsmsVE_L8(CKtYPEHoA z8_k@t%F4>Z`Sa&dRaFI(i-ngFEf!uzv{-l< z(c*og*lM-TWgiR^me6y-yy4~htvtj0E2i9GV;GTOci0&5V&P>(i-ngFEf!uzwEhCe WM7W^A-w7T70000 + + diff --git a/master/inherit_graph_223.md5 b/master/inherit_graph_223.md5 new file mode 100644 index 0000000000..cb570ae98e --- /dev/null +++ b/master/inherit_graph_223.md5 @@ -0,0 +1 @@ +e708a0ea30cf0e85484ea36a804fafb5 \ No newline at end of file diff --git a/master/inherit_graph_223.png b/master/inherit_graph_223.png new file mode 100644 index 0000000000000000000000000000000000000000..7aa05cd815c6f344dd923c22b105d48f6fcd1d2b GIT binary patch literal 2377 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 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_224.map b/master/inherit_graph_224.map new file mode 100644 index 0000000000..151e0ab5f1 --- /dev/null +++ b/master/inherit_graph_224.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_224.md5 b/master/inherit_graph_224.md5 new file mode 100644 index 0000000000..f616af6c2a --- /dev/null +++ b/master/inherit_graph_224.md5 @@ -0,0 +1 @@ +9e390fbab02071cd8f479bfce1ebdfb0 \ No newline at end of file diff --git a/master/inherit_graph_224.png b/master/inherit_graph_224.png new file mode 100644 index 0000000000000000000000000000000000000000..bab2ad9fda62bed570e6f2e957e6dbf0d6e8afc7 GIT binary patch literal 2083 zcmY*ac{tSX7XKz`B8+V;Me;KfvSg{qE?MHnSei*DE}<-u(O420TdHXqV~8@=((s6( zK^RLEG9ntwPu9Uu_Anv3U-!AseeQkV=Y7xl<9*I^KJPi7&q;B-WGyTxCkOz5u&s@y z6KF@k1BdW|x2@k@1JDR~*;!ixfA)4Rvxp1;2M28}&0Qj1EIbdeml%e%@g(_H)!<@} z(;eMTr#|Qb4teqkYOA*9PvoVErakm5uql2(g!t=uz7|juD5&y0fTU(U`+CDHURhaB zTtUg-BGNfu(aZd%lseXw#bjbXp)Wc#8?^0gzxBIQ${3j6_3NgNsN(Zg?wi>NOovMY zaZupSq2qr!W=&Q)00a_=gy0n+le4q4TyFTE-5vP(+S*!td^`q& zLFH4Wrnh-Z5V5K%enW%H36FnHhl&X%uCK4l5k7h%X)aw|UCAQyZg~n9l*At9lgZ?{ zxw&YQ*p4e9QBi-7j>aTDqzeiO329xcheG(h=rX|`mA=ATrjs0wsDjZ0M(pnIn`slR zDH7ICj%xp%^j5|$ti!jmJKIoNR@U~VQ+41_Z%@ztAwOSVOC>RKM;I0>A(&WMS!twD z#$@g^#qEdS6A}_+rd3r`2H)Q7n>@2?60@^)2SJ{jnv#UU`oDZJM?1Ka z!)PvY;^LEBZW{=LKhIIc9-*tHMO=Pq;^5HD?auKIVz?0$A&8aWv4#{&C4qSJf-g1h zi_6R9$lQVgZ!0SSykhWZeY1MPad*w?!osPIg<%MOYGx*@o#k7J4GqODew&+|bi!bQ z-gmK9&T`d98}8kmVaW=_lhV_ziu!m2LjKyN7r>6(6(;QVCC9`vKV%KJo zk&&BaI?(srpRQ``&I~PUE34?}XfJPXX&7u-#I1DWBjE@H&wt=RCIqP>DJv^$kq5o- zrM}*%FLUYJJM8AF55cO1vtnP9X|Rjfk~?;+5x3xGW@Z)B4&|q@rxjYPppj=$x(S7buzNXQ%E1;80OCD(S14hxSR{-G8 zkgJ1&z(|$m88Xey%{rN^u$cJnrl$L3vU7NNHEDlxOY>r(z{igt1A~Gn7vT@{*=)9+ zTo4Y|uTor7qpz)f`?hS@IVPPh7C?ORgb!$l-o&2*NHA4`1B)kAX5oBjHbcBT=iP$RWqe%L@Pu3=Hhf zolxFe;~KEf843yt=$7W@eL!yCTvAd}U|`^xTikwFJE6REiLS~e<$7QbsJY07bRPD}VLs6-YN4?ND6`kw`oNhi99{?zSY0f}9plxxV5r4~&nG zgV@VAT3h-1Jx|F<3i^bGipPq1OWfZV9?k>RYj=0IqC!Xae0tbw<}VKsm_!#l>3|=D)wcYcuoq<_uN(ZEtPOaJlPI z%u7YOZXl=-{eXct1R_yXSolL#nRYA+g)%fWeCec0vVrU$3aoP19Jry^($WGJ`^<~a zRO7q+eCENyWtU5W0sxzod;i{mcBFP`T7}eF* zmX-i;Df`^|+MM&jgUKJdId&D^Z6b06n7sVL%nX8L;~x-^ot;f5K790OW%#DCv9Y8e z+}QYDNJvk)@zlb?z3ESs!a`*=N*0A8B`s||_z0~|eet5OZ_Zs)ddV4yoZxUIz*rL# zq|8iJC + + diff --git a/master/inherit_graph_225.md5 b/master/inherit_graph_225.md5 new file mode 100644 index 0000000000..49aa1b12d3 --- /dev/null +++ b/master/inherit_graph_225.md5 @@ -0,0 +1 @@ +c8635056fdf3c00f9e8e23fa112f19a3 \ No newline at end of file diff --git a/master/inherit_graph_225.png b/master/inherit_graph_225.png new file mode 100644 index 0000000000000000000000000000000000000000..421e919e8fcbdbebd196b2f17be2cee1cc125788 GIT binary patch literal 2054 zcmV+h2>JJkP)>Ip^$rK4*URc%ElNh7dwPQUAVrm&MM2qJ9@z?3B}>#ZEa5TI`h5a9!BY+S-cp z^76&Vg`ym$zP{e1&E(9kR;zLM?%mJfqfMx(J@@y5^mViDk1TeI`V|(v*u%raar^e|pPC~s zE)E9|9<+HZ!!UUAG^#=d>~(AwH+cTV&PO-)66dpq{**#m}Q5D^h!cK*`RQiOzrSUg_n^5x6m z@p$m?@IYi_Bsw}ejQX>(vM@P037Jf0agLFZ5$xW*8@|52@bmLSW@aYF#>N1^=DZgg z92|sDCL{|>>J%7$O3Y?oS130YV+pJL?V%}$75q-1OU-! zG^D@3p8z1;-Q8xND-Z~XOeQmG+q!itsjRHDIeu(xED?!Bgb+ehDi!hY@E~1XT^7d{ z7Z($Q!9ccb*+NQ6O4vNg%E|~Kg!J_E5CEjNx0ik1n>TL=0P^Y6CyRN<#>Nr=CJ(Jv zOO#3_0YHX_huQJX&CP5-A%t+bT+-Ck#P+MzY65_K`SQi=S}H0kNJ>fydu-`-OG-*2 zIXO8tuPrk(lK>!DSy|-k*RN({|CjkO?WNUfNkT#b0YHk2i|u-@mHJgU?9A@#>&yP^ z?(Pl%(CKvO>+8dkB})(-9PFr2R`GZ|)YjIbsHh0x;o->6&c^H4uT91=3F7>kq8=%#;!SRS({iaMtONTIy*ZN7#N7WyganDwEWPP$yR#39*vES$jr#_2}v8F`s~o<5NgTNWkOAkMZKg3q(gpBPuEi-@bh_ z8MkA{4#dU9p}4r%sD0I{RhXTf#lXM-+on`1*}fmiJ0Ktc)6>%!85v>Q7Vb^m-QA(n z>Dc4>V~2-_k(QQ*Q>RX0aBvU?g8@>h)b5K-Th`|1=Z8aw4&l|SS9t#XIXD~+Qd3jG z=ksy$j_mf`fyx zefxIo-@hMPtrjYk3dfHhHyRTf8VZ?AhVk)n^!NAU=+UEW-`pCOFJF$OOP8XptqoGC z)TY?;*|N6zHf-1cu~>|OfdN!jRzj^-LoS!w9oLduw{AhF)8XE|d+6@&#_7|i!RPZG zHvfFT<DesDk z3X^-xa~Gm=xg1kdQwRj8nE{KVVK~+_i(VOsRNhA_nyLJuRwrz9RoR% + + diff --git a/master/inherit_graph_226.md5 b/master/inherit_graph_226.md5 new file mode 100644 index 0000000000..7488526ca0 --- /dev/null +++ b/master/inherit_graph_226.md5 @@ -0,0 +1 @@ +542f75494835e88b1fa3171f2b4cd970 \ No newline at end of file diff --git a/master/inherit_graph_226.png b/master/inherit_graph_226.png new file mode 100644 index 0000000000000000000000000000000000000000..c2e024192657bc7ca70aed11d662280730d196cd GIT binary patch literal 2074 zcmZWqdpMNq7XL_{aT{}DyI-QvRslJM(&20BxaAvt&Fz2 z7>$TBMl~+E%y!h|@?fi-IFrk`CgOaZ=bXRJdY|`Q>yP(Y@4MFet>4OV!#c{#sLKEV zAn)vi^Z@lZxb-2D;AwYf@;s;x5nUXS!2XX_-dRltfWHZxk@j8*rHjRQjN(O&-cVT? zshaX;JIi%D`TI3Wy3{`VZ0X;W4jaj+%0E??hCPmU3qmQTkJMF;$TGar^pMcR%0n6V zA>A!#yVqW??0JRMn$#2r{nn{v;!Klo+to~NwrF6tF{DaxW@l zyCDJVL)e)()JU%DWf=W1(vET;dDNm^T=uVb)YItjT=I?k*>xqOB@$+p@{_f+Q4|SL7sZ=V)fIfA`%*+hw z=*aPD5DJB2vDh(B8-+xc!sAI2v{Lx+@bLWpcymzi-uIp6){(H?q>2#Ec0b)vFW*YRG9He@y`P_-A0EaIJaal$Tw2;tQ^Uq? zuP=-)O+8nW%VIKd-rmBoF;yVNO`2NK-ri1Ze%8`rW@$Ob=VuOlqVkCY8RxWJjTofK z)}g7X&Z?@p$+pPDIT`)Ii3tf1sWdPfL4lH~fIUn-w_wDoc}PF^09!LUhK0Z=1s zHk(S7aao!hDq*1Yg|^9iWCEc)7Otynua{qbd}4Hz6F&Z=wbeYmyWFEzMppKeghy>l zN5{nEMvQ_l5gQ+ z9mH*~<4PjbWGaCn#$5y2M(DT;^1pQ5dVJ#l5Tvw>gymqntZQuKs>n4k35R8@_Nja^(?YK7iISB7wIj#gdd^ZCbz zX<)k?0OX)hVt!LV*CBxXbtToUf3(_F0`PmRESheQp+v=GWn>WG^3)3JGAK~~Uew&! zA6zlIAiQ*?JzC$!X6jp=^FPH#%HfG4iQUd`LurCHZzO?iq~4c94`gG+6`6vE2tz}| z1HkVd3nuB0JHtNT%dfBJSNo&|UX&q4*-N~n^O67gvX z2??K|s3;ilr$|K8n$^R$*1?fgi%y}46FJDeU0UvPC+1fu-Q*_V} z*QRDd?*|#>c}K^6Ob8Z>#p5+PU;!H?m?}^j8csqfXUxsxKKA6keCYt6^JRysDATT* z7O^813?(MI3Y@T5Qg}F7`~gKKlQEdV^>wqo_cb*&VAX5AepM51ZCR-2{>Ug%z~9^3 z%RmbouM7~I`vN9(A!%ptV+?XH?5uv0-7^56*4EM*8XP>A^liPbFMB-P`?yl!sEz-1 zuvOlWb=@Dzo0v2`a?InBx1Us2W@4*DgM*_iOFgTxzN9ChW#{-QDL|^-5oOv8Hwk|FG|S6K$CeBMR>a~35FG88E^^#863O=F zYH)J$ex42jB&%-1FC{}6szn%YPtWv48vuY(6crWeOs0jYDF_3oj_u&*wInhb!Z-qn zUYvNky1H6XQ87I|T~t&wGBQ$FSU7HcN?#v!?C{3sCf3!pt*s4g)8WBE!bXEnGjV(M z)2~ncSZ+QZD}J0xL2_<#8uB}{0pEr-pkI6HSLsnZy1?cXY5m4zYRF~nY%OnXY?N8W zWWAalvry=9;EvYT)%kVZPI7RNq`X>~pU3 zVnyE8W!h?L+!qRM_h8j;vx`;-E4W2s_JSJ zZ<~Ai7ybOyxisGX)l@gB1pf@TgYziJrIh~}Uv;k4wM39_Nu`6s9&kosk&O<7w0{Hm Cf%cLB literal 0 HcmV?d00001 diff --git a/master/inherit_graph_227.map b/master/inherit_graph_227.map new file mode 100644 index 0000000000..155b67826e --- /dev/null +++ b/master/inherit_graph_227.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_227.md5 b/master/inherit_graph_227.md5 new file mode 100644 index 0000000000..f7e130ba4b --- /dev/null +++ b/master/inherit_graph_227.md5 @@ -0,0 +1 @@ +2b297a2a6d727fe6de0c7f61abc1db4d \ No newline at end of file diff --git a/master/inherit_graph_227.png b/master/inherit_graph_227.png new file mode 100644 index 0000000000000000000000000000000000000000..e998ded41371b604aa2d7b35416ca9021002b4d7 GIT binary patch literal 1830 zcmV+>2if?EP){(7_C}<&R)) ztw2m_wX~wOf~auWTt-l|!W<)YR(~0l5fuoIN?Yp}xwWm`nb{A~Wvlf5_izvl!vF+A5|p_X0QpY=>j^?8u$~}f0_zDvCh?(- z?(Xh}hK9M40-2AjU%y_dR0f;>n4eG-y?OKItV@E-SIlN}cXxNFC4RC~dwctA>4D5| zwr}4aW`XM`2${fof{+QUCkUC$c0J|fcyQ02 zJz?8OF%wHY@pwG7TAi1dN2Ae}FJIo-*@@e|Uavx-;BYu8DJhkel|O&}EGsMP>FL?I zb0>lzIXO9Daq8;oGBPqIUx#wx!UYb8lboEKo15F)+Z(jYWHPVU+tk!FxyzR?Uv})+ z!C){_Q&Xi<>Cn&+03foGAfuzB3Wb8jV$tbzkx2CMC``Ex}@g+wC3M?oTy^!E1NxpT+qbn^N9M~@!0wzl&5{HCTR z48zQ3bF^9d`ub{WYK%tX_wV29>+4%uT7tI{6BEyzIipsqM@L7)dXuUxq@JUkprI4p#=wze<}A#2vG(Q38$HU9K_JRbZ}w%Kf9&cS~XXWhDWdc8h! z{QUfUg+hU0n8V>nPENL3t&<&8Dpep5Si5$uTCK*j)YsQz81~`A2LOQ6>BK!>y?O-z z`1I-1WF^5YK~NM00QC3w<4wQcPovSSRx6>5skGsQzG83)2Q92uV`F1!X=!ACsZns+F#bR-&CC2%Q!C>GQNl8fn0H4q2a=GH- z;+8I58e2d@I2=w(OG|BSZFY9HTrPk4@@42<1VOY~tyZh;@9z&9Q521jk7u*lcoTnz z;)OCTPNx$9z+^Jck%jFIY4PCx`xu&KjhB&0H$JuPQ-|xq# zhkqoX{9h>w3k&bvyZ7|z)4aSqfj}@eHWqq!PT<)=B$6PK~wApdqzJ04yD$~=`tE;QIT&~4p>FVmLtgNKd=`lnj zt)7-FSt1gN1i_KD7V1N({<;s;BjmGVE>-BmRMe(&t z3|zZ*&FAyox^>HDvz<6`g3IN`76*sS{Q{%WxN6m^{QP__m)q0Rvw8Do0KlO`hwk3J zo0OCk;j3yYHf`EOr_+T(VMH)YYq3^Z9%x zlW8y*aQkE>jg5_=do!))RzGU_C*|1lALTOkh1h$b{f@mC0n9eI1bb zh{xkePfriE5Y$s?Y3Xd~fy{fvVsU5_fxF=l5`pU{2${fof{+QUCkUCqdV-M2U&77* Uq@sPKP5=M^07*qoM6N<$f-w=9;{X5v literal 0 HcmV?d00001 diff --git a/master/inherit_graph_228.map b/master/inherit_graph_228.map new file mode 100644 index 0000000000..44de3d614e --- /dev/null +++ b/master/inherit_graph_228.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_228.md5 b/master/inherit_graph_228.md5 new file mode 100644 index 0000000000..72bda388e6 --- /dev/null +++ b/master/inherit_graph_228.md5 @@ -0,0 +1 @@ +6c54fc45904afaeefd98e4d44cafb3ac \ No newline at end of file diff --git a/master/inherit_graph_228.png b/master/inherit_graph_228.png new file mode 100644 index 0000000000000000000000000000000000000000..9afad778867373441f3950af13cc81137c183ef2 GIT binary patch literal 2715 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 Vd`}u#JIw$9002ovPDHLkV1lw3UiJV0 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_229.map b/master/inherit_graph_229.map new file mode 100644 index 0000000000..00d8d640d3 --- /dev/null +++ b/master/inherit_graph_229.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_229.md5 b/master/inherit_graph_229.md5 new file mode 100644 index 0000000000..dd7528e3c9 --- /dev/null +++ b/master/inherit_graph_229.md5 @@ -0,0 +1 @@ +c552b25e692e118353cf3e7695ae7e97 \ No newline at end of file diff --git a/master/inherit_graph_229.png b/master/inherit_graph_229.png new file mode 100644 index 0000000000000000000000000000000000000000..a0b15c15301d5dfc390374a7875be4790d3655b7 GIT binary patch literal 2351 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 + + diff --git a/master/inherit_graph_23.md5 b/master/inherit_graph_23.md5 new file mode 100644 index 0000000000..3cac7268dd --- /dev/null +++ b/master/inherit_graph_23.md5 @@ -0,0 +1 @@ +1433a9ad2946948b7b3542b890f68ce7 \ No newline at end of file diff --git a/master/inherit_graph_23.png b/master/inherit_graph_23.png new file mode 100644 index 0000000000000000000000000000000000000000..111e58575d852980834c0ac397806187f0a04f84 GIT binary patch literal 1771 zcmV;P)001Qj0ssI2O3-x?00006VoOIv0RI60 z0RN!9r;`8x2B1kqK~#90?VEi_Q(qXz&sAHl%~_Cxb=$f)3k`a~1)CIxQN-E|7Ss~i zklqMZ3-?EFL=Z{MC@t`xHElHlTWbBGyAyXV|{_kutO0Rw$W`_ln1q!vbCn!^Z8a~OeXPDX6!`Sa&B zH8p=K6o#Z=Fc^x8im2|tDj3J{=H})(4~ZdZG&eWnI38=snCjHj)HGM|FeDiSK_*$4 zYcS1W1g1HRz%=LoC~z+4g!$}jUD5AXL$xxjY2ec!%) zshGK{stQ36tJV5DlguQ%o}M0+O2y~%7cE*Om&>0%eM;Kbty_2f`t{#geGd3rk7$A* z8X6k*?%iuLnNq#hwr$(ETyA%Fx7X`67z{?EG1V(36BvWdW}9S*%bGQ7PMtbcQc{wY zm9=8Uibszgk@j#ntk>%?3|qKx;ei7OMn^{>gi@*0Y&K6n@XMDkdc9sG5@ly+D-;Tk z$3xoBpFb}ai>J0Bg!k{?FDxt^A0HP81Wu=uvZE;4-ri2O$w&U-;b912AP`U}6j@nW z1qB6lb#(xMp`oEk;SCNBmX(#|<#HPv8xtj^P$&QZ2!dc3cJ}O9f*`2PsjRHruwes-!zm~zu-okyFJ44Z zl*i-k-@iW^js8>@2q6H#X0ydwezAhBR;$ry3w{A%!5{tzG zA++1=r19FdYv<0L8yOkdy?b|}q}tlrAcQ}D{J3-H&W#&48XFs_Iq%-Rd-?L^U@$0? z$+m3S^6uR`hr`j;)z#YC+S1bU(;VXytM<$*_|m0IWc$;nPXGX)&)47I4*+nvT$7w9 zRq)h-WS#l_e$pO|MtMA*!{L}F0KeZa6biq8{|+Gxg+fb~EEyXcBVUSJ!M(k`0D!^4 zLDK&C@nbNhg5SS?4*+nx-K3Ax=>z}-0s#o2&*#(Wba{Ds^XAPfDk^GeX(4?mfvN1O zs;Xj_{%KNIu3S;8)zt8sni{g*(b0h*2zdlT2+PaMj~_oi&4y5bWK}Sq&nFvfHX8sC zi9|dePkMT~SS+6HK)2fs06BO?RDFtVGMmq!}O*y`%)TrO8A6e=$--??*VXJ=>Jg+w9| z*_bA&rlzLC!a^>Wiy+96BS(BbA2mEDCx>igW@au}uz3&S6W({$e$pH`uh4eZ{ASO?d|Qm|En(F=vbSRWpbr_<>$414zM82}(HZSw9>9|b2$ioDF9 zK7D#%V1OWq+S=NQiHTWk*6c}|z#@@IsZ{RSv*+#Gx8ZQuY&N&Gwaswg_U+p%Dk^$< zdd9}aUc7jrQmMwr#{mFFqmitn*!IJR4*>uxSFWUHC@wB`I-TU9x_0eai^VcBGSc7Q zf9%*X(m^a1uV26Z(4j*^LqmOieJ4(wm>NcIZfhGkxHci0D(Z@a5&;Blqji4Btj5Gc6K(4#j@M&wY9ag+2da! znU6^~Z{A$BYSq@QTXS=BU%q@fR4RAu*g^T&Y_`$SQL$L8R4TPvZQPk{HXE1AUA=m> zL?S^^lzhTQQS{)!gVoj5VzF2x5}D0ri^Z~e^JW0R(W6HnJb1unvt=^b43okz?81c$ zWo2bN9?xJf#73AZV$YBn-efWSX93B&$zu3hU<9T)jKDO95t!yM0@EBuV4A}SOmpJ= zZ1(o;+jAcWLyCwaaO^jo41YTaWd0vaYnW>=&0z$lIgG$GhY^_O`~xfVtCOklGD`pe N002ovPDHLkV1gFJXp8^= literal 0 HcmV?d00001 diff --git a/master/inherit_graph_230.map b/master/inherit_graph_230.map new file mode 100644 index 0000000000..76331c1b9d --- /dev/null +++ b/master/inherit_graph_230.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_230.md5 b/master/inherit_graph_230.md5 new file mode 100644 index 0000000000..aeb6777f59 --- /dev/null +++ b/master/inherit_graph_230.md5 @@ -0,0 +1 @@ +5f10a5c60bc6ef1715844f1e2bab9c81 \ No newline at end of file diff --git a/master/inherit_graph_230.png b/master/inherit_graph_230.png new file mode 100644 index 0000000000000000000000000000000000000000..60777e32b39c038f8ceaa5efee04b7fd4c45d3b9 GIT binary patch literal 2284 zcmY*bX*iT^8y*bCmPwKp+gKXQNHN(nG#E2uU-MQ}nk4(yL}F;h7T%$uvS*87vSds0 zCS*txB9iUZ*!O+!d;0Mm$M+r2aXU=6h8`1m!pejp2WG(*~0Rh8Kv$LOszf+-WTcQSf6|m6ui+szeh?ZOkOn$PQ}u7**kE zY%C@KH?C-0ir#x?KI+|k{6j5k|C0GsR_J6n;mhaDdW5U1I0Xc{3~uP*1VtEdW4t3i za3-I2EsyxcBd*d`BIWGtd_i5^5z7x+PM1?q2q6;T28XN;eLcOa_V(5D$)E`NoRSg` zBGIY3&8hcQWu<>TfD*^U6J<^32>rjmb!PrtTwJ`rG;(dy#5%8J^EYmXGq>B_DA%fL zL@n~*wBzFF(jb|r_GIPqho-a323bED30N{>>_m>;k#ZW#vytv#A)pB1HQvH+F!y10%19v@5qr${=XnL zhdXOiSlk}3YMQ{u{<}g94c((qc=8{GguLiv+rUMYmFWWm13shg&p-cM zQ&TfN?JmeOvAD>XJc~pIb*3U--0qtqSXdk(8=cqG+*)7v^zr#Ft0*tuIy5xY(^FYm zil33u)V#m7IE<}2JbWZ8n@1vXR69%u>hMH;xLF~}&z|k0?}qbyo?4TTkf2E!!>B+e z#>R3=5@KUx8ymwyLUiI=u^0^M%%g){S|>Z1>BdPy74_0;-P>Lb`gm|8WAaUtBxP!G zaw38}vNY@oEwIN>GJ~ONX=$k^ximk&zrPdEMGRs(tS$~WsNebWH}luCXW}rbxQNKh zqOJ9R#(nYT=24N6HQvJ^JFB-VoSuA15_zh8AIOl0$83>hwv&p3o15GPB9%&ASXc-O z3OYDAP*qj6%)W$BRu1sPwXpOBD#;PlslfoCsB4ueo|LSo{`y9d34gM*!&I3?OhQ@D$Ym`g)& zf>G}DjK2Q-&w6!bWgLw9YjSdPW24($!_tzadw)@SO-!hqpUq}_Af5gE{X5#*Q5`8M zDNwMPoQRuIJQ{|)b(;mNtFLEIP0ek+eseUwb#ihtGc(h<%P!l`!os3Gjy?!b*uFCH z>4vxiT-5Et6}afEV{&Gu#Hmvyck`SRlai8RVj^x3y}iAM-v;&d^RxxXUx;1ESL8W4bOvtU_e^zum5-- z7JB`9R!M^Dpqikmv9Tevg-~^eK+tHgRxY``iEC?Xaf&PAndtrfr zfo5jRBq@U|y$3KF77&t#my)tF03V^E0#K9INyEtPl3QC_?d|Q&@pwB2hf}9d%ihX4 zE~nl9+GTWfRM-$o#h?>yfoQ$Gy+BxjBx}bA>{lTU8rB{`Z)M;vf(`W~ |d<>f`; z6{K{7OY7@TUXN>$n)?Yn5JP6(3DR1gS zySk2jj1~rxG&46h$7UmSb?KcpYen1;USUZMb#;1K*>MOMuW;;nLdlcFL<*UF?Hv)I zD~X>BQ&yf!`_wC;8w@ba2j;w#%_3AemN^%6R_5nFM#H>@Y7+1Yw<-o!R{Z)3xSt<) zzV&Thvk&B_m4R2d+>vb%Zo)rJ0hzggE1d8!s@>~ZYNOvo+p)72?;flb78mm+eNump zSE7X+?mv**u>RWDM|<`R1Ec;sF;Q&iVQOj`5D?($sX{`brhJ*nL;d}!7DWMC8Gz{) z7Z>mE@BjGW42ksg^wiPStuBmba1|s2>VV2P8#<1=J zT$-Jf;+3X zr>6jR0O0HC=@}jU4QK@D3LSxps;a@hz7Pncyr#wigK@1IEG#SpppN?JN%}l|n1PY& znF+N20H=&icjqZ8DyCobQc_ebrqhSYZ$$kun-`DDo#qb@_TuB>o~C$JxVgFg1WIyg zq;cB&d*ti{fy9di34R2qz4x5~M7(xaCL%l{br!XAj+Zk2SFQKBZ{66~7_Fc4D^uz> z|2OF?jUh-93J!;V4R{JJ)sn97&Ut9dv7OE_B=Wz#UAmrwCq9+ywy|;R>Kq7^dIrG+ zEavUL4$#qgxuSlvgw(A5$@=dk@aMF^pW$Ft>XIAZLj8ux0WiLR%#1D23?tXb{{RwW BRhIw& literal 0 HcmV?d00001 diff --git a/master/inherit_graph_231.map b/master/inherit_graph_231.map new file mode 100644 index 0000000000..a8b966f300 --- /dev/null +++ b/master/inherit_graph_231.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_231.md5 b/master/inherit_graph_231.md5 new file mode 100644 index 0000000000..504fe71602 --- /dev/null +++ b/master/inherit_graph_231.md5 @@ -0,0 +1 @@ +2f8a3abc2570d4f0ccfe90ee65fbee9f \ No newline at end of file diff --git a/master/inherit_graph_231.png b/master/inherit_graph_231.png new file mode 100644 index 0000000000000000000000000000000000000000..209b5690c71078574e6bbbc29b1181aa22038a55 GIT binary patch literal 2290 zcmVnvj5L}UK|l#=5P`%*qXgoErV4661kuP{%0&evfKb4;`#ntlo4UPN z`c+`R|Nfq4W@pYhGiPS^bPfSQQ52966SMU;fW&x6=Mfmvc?5=Z9)Y2#S6W+JOG``F z%M_A7l9!jad-rav`rFBq$z%-;4Qp-^i9s|pG{|H!^%ja|r~3N(wX%m~6(9(LYazdR z1cr1TfgznoVAk4s!NI|mm6dC(^uG#u^8O-!d#C<&=LH1?RaaN9YDiR6RBmpr(Zfw> z%+k^lq74c~OO&ojTU*=FqeqQXZ3yJa)5qq`o6-M~n3$NEnF-4Zg<`!;1Hd@v?b@~L z%$YM05fL;RZTt4^&CSiQeQs_}BoeXNY&$zUfk3dZu#l3H(%#;F>}zkKikaJwj15Ffj1;?c3N`E|*(TQ31;rFJAQY^wcazMn;N6B3Q-^Pe@4M@pyxSgR`@< z`T6<&{{Bj(5}M@f?ELcOONBy#byg@89UUEBUS9X^-P0;9EG#TKI(lquY-D64JUl!) zIvSgxrZn}FXP`Ru$*QaV{Q0wmg@sfqmCNO=t*r$G1%F&~6h#35b#-;WwWwDNcixpN zS6~_L*3r>XcnJFX`f#1~I8PV4oChz5#>U2ARjE|cXtb`bE@%?m@|s+|dNnyYSyS4; zzyJVXXlMvlySuvq0ORB1x}@QpXNWpo&Kn#Yw6?Z}mK%eAfZ-4zPO$jAt+_V@S0Mw~QV7@|(sL;wJBadAyeO>f@3iHL{@4GmpfTr_Ao za59Y;qZKBT85vnFEH&-g}Zm}?%1&-GBT3G;k386 zhlhs)08XAf`Sj^iD=RC_XwwjI!)t14yuH17JRXC=$j;8@^ZA=LZNd#Y zG#V{0FK_?;{ko*p)zwj{)SWwb1_lPYy1LfX)EHr*9(B4V5*8Llr_*^no}HbYL?U_c z-~p9NHA1y90Sn2x08ACIkZc4<=Mfmvc?5=Z9)Tg9M_|^@d1A2`K@j7@aRb>nxumth zG|p40RL`D0`FW@eU`mzzW*;mFU=&&tYbZEZEBQ1#ypM*PnE@ZrO$ zQ>WbA+*mADVPWCm;GouSPo6vp2nbkSUUqSD>F(~v+Wq|e3JVLv!osLjYHe*Tt{M{) z0{}n}gvDZAxNrgHE^geo;p^**N$BnEH8(dO9v(*3ZnTq=ld%bMxm*-Q=jZ2ha&nkV zrmd}QOiT>yuW5i*jhfQnm6)TWBZI*>eE9J6^t4uKxP{8i&2@Hm_VV&NfByWyz`&~3 z88uZ_0Y%ZTU%yHu5`TYxdwY9Ph2zA=tkHcL8!6jb|Nws8UWi>Q3OixeO*Vj`h6fCizi;a^@QYw|r&CTiQ=^PH{ z$B!RnWn~2g1^SKGgOSd2a&kI;{P??f@18$@PNUIMQc^e^&gs*qu@%8ksZ^Dfl|4N@ z*nVkgX}NjxCe{I$d@&@|;^X7P<#Ma5tINvD_&+P^!4>EE-oG!8L6nKkjZ4~M+(x^)C2(V@$tc0LPJBl zySw4rMi2T^Em>JvB_$=VUcJKpJPXH0%OzD+RmtV@#>U3JzP@wk&T%*#{rwF>eKY=z ztU`Qzyg(q(Y!nKGD2n>|`N2R2f~#J>eA&s#$rHy1{Fkd>7cXJ_Y#hzNDD z>fb!6RO;>RO`%ZWsJXehf`S4LhhuGR&E;|*K76<;jW}r&6B8*ZDGm+}j*gCLX=#&_ zlUk*j7GSD?W!+g?TC%sd$A#nnZ8V)n$m=l_MXz7KZe?Yan3%ZUwyY-x{pIgQW6PE; zbUOXkty@|{mH!_I={&hyzTPHm2nhMwB!Q65BQT`%2n^{w0;45hIdI^>+S@^51izg; zcX#)sq@?vSg+xC|NlDlZDg;5vf7wV_$ZsBjA)QBHNaqn4(s=~t9}9&je{_Ne)&Kwi M07*qoM6N<$f_oNnYXATM literal 0 HcmV?d00001 diff --git a/master/inherit_graph_232.map b/master/inherit_graph_232.map new file mode 100644 index 0000000000..516a86007a --- /dev/null +++ b/master/inherit_graph_232.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_232.md5 b/master/inherit_graph_232.md5 new file mode 100644 index 0000000000..07feec5c29 --- /dev/null +++ b/master/inherit_graph_232.md5 @@ -0,0 +1 @@ +7f8f282380ed1fe645ed5991347ce2e1 \ No newline at end of file diff --git a/master/inherit_graph_232.png b/master/inherit_graph_232.png new file mode 100644 index 0000000000000000000000000000000000000000..baf78d03f43e133dc4ad1244cef24ee0463df97d GIT binary patch literal 2530 zcmYjTc{o)2A3oVGlQoPbFP*<6$Dqen@gZ9#jGF_<5j_*61OVmiBJhN<1UAkb zNel(Rns%0q{qxWA%8I{=C;%i;#>U2CSqC?0Cw(y_O9wkU#)|R@;8!V?Y9fDX(H)*) zzP!8~kS_q#0^)a;-8v*ijQx!h*(~|s7=Z5jnQi~z;2a$8vP4PPKS@S93vFwkD{)lE zsH@jdsj|ctDT8PY1%;cvv(6fYg@qC>5+WJ7jWQWy>l#-^ZWYxrl+Ud z+uM^!BqEW>U@$azV`5_Z4x0)46?u7iAI{(L`qm!*>+9iduH+m3{_lM2z~7AfnwpyY zQWrb}1Alzq@zyQk>#EJl%1TZ)b#j6tlpXdCSl_;QcV{s_h1=Nlk;!Bx)2?jpepUx{ z5jIm3{bpD%WG?*HEe&n$nfCa2d;8H-agfuT92R&y-Qym1W_EUSW5e+FcMTn#{QUgO zw9%WI5=k&A{_gH>T6J|$U?2)EVi#FJ$7iUPgz5Gtp!ouRsQb&ie zVM(@hUxWZ3A0Gs=zP>IgBZIcF+1=jGu`a_|J2^RhnQP6nlqWOHWbyv~p`oFKy)_ax zBrYzlv$K<(ojo=-_W1Z1e4pS$5W0pa99@ecP?@9Y#t;I5@Z!Y_FGka|XXh?mie;Xk zhZzexxVg1ZIO9!T8P{BI&yp^!vyG28x>y(y9^NBSsf=+fM_~5kCOSF*0wUiUukB`I zbMoP-ixJA9OK*v#7TE{_YiH>X4&?0Y>>55GK!pRDoSaW(GudM7F9u^#s zO0ZxU7c_B|jec4?k#C&}vs8tC+uK`PU%zEXU}!?0w2e!gbyiu@@%xClt+p2$^CPno2hx%*W71p`nO z3JMB-gO7H;e$BXdkM-lQj=&=JX9VSLY;Klel`pEPaZ~E51ix?ba+z9K`1$y7{7Okp zNufA1hML;rer9B3v_$WG7#_|+DGGCQOg!fLGVuPrlPqa(fBy-sxVRWs`bf`FkcYNz z4&#RK@X#wNjzAF^8zpfPzo75u@lV#?Ubv~LDGs-`u~FqA#&A*1>qVhZ;HsZLf97OM z#D<_0N5{ttx|cvrfaPINv*qOEbai(RAT0U6rnitDK76>lIusQdIXElh5?{JcyOrOt1t?e<}=bs1voLpp4{wW(=ha#9}-PqU>d zDJg|Ddw?2hK6h|%ps%lQXJ@A^sivc&qpFI^ZyXuH%E^_^zKn_?5T+(3M8w3@&zkBi zI?Se(l$6lvcnl^7EOKKQTt!7oQ`604jR<5e99Ps;RqgH|oJE$W z+QQ{a|8XUDNcdGvBO@7MVei1ejrH}4w;M7!_CnZYpyw^PVM$5JBNpol3RPd+xBlE* z3kOy!ZwyEIPv^{Mvd`8>KiZAru{*bd$y(}jpulHJe+`w{ZU0t1{ga{P+w!8ae z>g(mZ?zD2rvNGi(@LTjcP;&~8$6HxhMMOlX1fx=JisIber<=o8#d*z5Op=I1zT?9lNt-^mKI( zc6Njysovh+6(gfP;sW)up)bi~aqgrhkFAd%KT_X<^fxp#goTB1CuL@422M8w5eSm4 z@=9)UeTzwM}zFDH>;87ov?7FtMH4wwS zJv}bkXksQQKX>}3pWo`rimslXmUw2K5}LYOh**04+Jt2Jw5CR&t2Qdcve zzCIf?+BrYl{O!7{b)uV_+hfDnqfr_XpH{f=U{V_VJk|Y(&n`x-W$?hqhaw#rbGVO;3ZF z(-<;8xU@q?`GPP71qFe2MW@rfM2MN`wN+PgD=PycBO|Y0zaAIYW-0#~O@xEs3vz(- zd#bgywN+PFuZ5WFl#kbfZngaJ)JXUu$h5iqW* zrnbMo-`d)0kHxyELL>3P!GrJKAz(1z3$&dJ+(1NR z!p=-T1T-TMFenu2-WW{G%956rc3KbOfj>i{A6*bSeYz5-+{opauiwB0dg8#~U}R`0 z6-(dR+Co1zK=L^dGaC||eDa<~fDzq4FkoYCU0>W&Q5P`&Y;NvakRKxw4qZE9jitkS zHm4iu4*t>6O$}kL5g@WJijy9=#&fp(Z`T)$)|hWw%CpiZj?cfpo|y5*D~JZT{FyMr z|DXQj1SbThW36j-S3u?(%K!k%RLMw?4mnxb`g{l=C?u4~a~cEvvBU)=1SaVGw+mv2 dfPKs{d!SKa|6R-XC%~o+u)1t(_RPdH>0g+^v(o?o literal 0 HcmV?d00001 diff --git a/master/inherit_graph_233.map b/master/inherit_graph_233.map new file mode 100644 index 0000000000..3d3aa010a6 --- /dev/null +++ b/master/inherit_graph_233.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_233.md5 b/master/inherit_graph_233.md5 new file mode 100644 index 0000000000..0d611467bc --- /dev/null +++ b/master/inherit_graph_233.md5 @@ -0,0 +1 @@ +9f35097ed67ed8776d20c81a1c4e429a \ No newline at end of file diff --git a/master/inherit_graph_233.png b/master/inherit_graph_233.png new file mode 100644 index 0000000000000000000000000000000000000000..3ef422b194be7dd6d6f64d541cb5fb4c62e8a3ae GIT binary patch literal 2610 zcmYk8cT`i^7RDn(2|{X(kT{T`-6QMaWP@rGzFviXhF~M@{<-Vyz4rZm-`UCbw&uJLaR>+m;@bU%*yo! zSCyBSQz(*G&H8w5I5}D87{{y+Q&TTOFE2!$GZ8XTXG>xmM1mah|HQ299uNqG^Y?|e z>_GbiJ>Z{jnv;4;@G9tfJsdLy=_n&3Gd@0EUt*N@F(oZ6>#S+HX!uD?O?mmR`ug-M zG@8IGjY1FRNWoS#!ra`S(Z=iR2QM57eE{*WQ9nF7lDZPCsH&RsuS&Js-R;%YoMKWE z5;-V>1mC-%Axl+Zet!OURH}}Sj=a2lmW8ZQY5EwB^>aI(M`Vc+u|?~NK2^^}(eLXN z+loNqFI~D6k@vc}d8*z;%WtyYDo>p|-b^qV>*@JsF#rn_yDpMAHOXLf{WdJj8MnB! zl$DX8sj2C1U(^Rq@#Qm%G+(w65fTc}li=b?1RABQt?ja{WNqp$l&5irnj-pkbToay z<7&j7Pk8uE`E01@*KPvIKihuh&DPH9Fc5#?9vR-YwB#N) z3jLa2Q=>q+Bq<5ho2lb}(#iv?-&tt55zWb4@H$$|zxOl3;O+`&@H9!w8uBNL?YHe*L5I8zI{iYgj5Yd@K zSh8V(H6IvkVPo@qU0uH)5JVzTMO8Hzhx3FLaBy&t9?os7uS2VO;|R=8(=#(Obo!W2 zOM#a6&H<~t+mNGj9EUvbFe2f%X30o`mjH08s5UftAh8GzsZJ z?9Rf%LL$FZ22oYmO2fs$q3J#yW^QgSm@J!%GB7aMo^evX5O21K^7*uL? zPmdJ2snM0h*MXAB%%IlTl`btU@ktrY(rA^m^_8HGlb25>saTk{cUCNk`hlhucPf|<_sv_Z77&wd+#>)vova_;o_e33kW0114 zvWj&5%>>}lCoCq@D^6-O-&wWsMsoSUdX06kOQBE}7Z)+=q^2e)94-`F7J0NkM~Ntc^Bm@x%W z`(Ir&G&G)=^tx+acXUL`jHQTaX*wDj8V2ET%S%f>@LLfP5l&7y&<6nep~1nJ&fs+b zd;qP{lB<64iSi?2t`-&+U_hK;c3WH9pbpmiT$Qx6G<1H6M~3_7$1%^+Fzf;x8F)~IrfG*__K<~aRtUe%$Wy&sFX6jxE;BjxCKnSi zpVxzbY|foeM(FG7Q`z6Yf8X|ifyQ81Ys?de6lAi`Z@yw;VuH!+yKR5AgVTqkRz0k& ztk7uTq7Oh(ph}%w8Q1arQf0x%}N+j#2gL)npJ3EjMKd^N4gEuxesea9hC~$NZ-iOAC8$(D~f0~*~bSlMq zd#A7GBKwyed-Aihvr9`)ztXjIipaP%TWlUo9)m_#U$6c8^{a*K_-qHRtE($B#k@Di ztH3cyF4LmnHu>;ickS6T2qeCukp`t=Zxp%+5sbY@WOQkPy=4>k{O;Wo6clX7Z1(n= z0Dr;Ds~Y-2n7gRA5EC322ncADR%7>NV*>#A{(aTF;j7_W(ouJ>6gRZAv=9i$(j%as zHMYg$JnpFG5v8{~`}@r8aPN;Vl$4c$#wS-|%;=3l=td5LO=fK`K_6>#3L_F@UL-!tw+1-ctG z_HUWXmj^tcQJQjc90_-gjg42V<6_pCtE(OD?bCGn_5rJ<1umIh)3dj`X6NiY_3D*o z%dNfR3bXR9ot+AM#liZ%zP^zWYxTS@3k$u=+YNVm9%dp_+Db}Frl+R?c0U&BY8V+& z8XHH;bX0ohH8!W4E<>T`G?D|kJv&=lL;l*B*x%nbGBQ%ID|vci&?Sn0Q>AI-ooDGC z9Q>J1KUf;TXMY>K<2{rm2i)b^-v;iSDaCt{akh%?qUx%uRo80)0JFah-&q5$=j?C& zZ@0g%R*=b8i*1b~4_o>ic^2kZ=ZBHU+~+h0Kp|H^6`-JhPBWSTp?#-uk3jCTzCJ#^ z-LO*zWe^MV^ze|Ml + + diff --git a/master/inherit_graph_234.md5 b/master/inherit_graph_234.md5 new file mode 100644 index 0000000000..8bb9b65b98 --- /dev/null +++ b/master/inherit_graph_234.md5 @@ -0,0 +1 @@ +747ce7964d854795ff5158a865781ef1 \ No newline at end of file diff --git a/master/inherit_graph_234.png b/master/inherit_graph_234.png new file mode 100644 index 0000000000000000000000000000000000000000..9c5a06c9d7cffd411f68a8558cde48129a3d8a7a GIT binary patch literal 3465 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 TD!(PLTY=!Jy0B7Z>$m>_BIw_% literal 0 HcmV?d00001 diff --git a/master/inherit_graph_235.map b/master/inherit_graph_235.map new file mode 100644 index 0000000000..daf160e4eb --- /dev/null +++ b/master/inherit_graph_235.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_235.md5 b/master/inherit_graph_235.md5 new file mode 100644 index 0000000000..856fd0d326 --- /dev/null +++ b/master/inherit_graph_235.md5 @@ -0,0 +1 @@ +06d22b2c1ca625d65921cf00551eda7f \ No newline at end of file diff --git a/master/inherit_graph_235.png b/master/inherit_graph_235.png new file mode 100644 index 0000000000000000000000000000000000000000..1d0e64ed0984af3d804fe939ba07271aeff6b207 GIT binary patch literal 3450 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 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_236.map b/master/inherit_graph_236.map new file mode 100644 index 0000000000..f148f4c672 --- /dev/null +++ b/master/inherit_graph_236.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_236.md5 b/master/inherit_graph_236.md5 new file mode 100644 index 0000000000..69128b0a63 --- /dev/null +++ b/master/inherit_graph_236.md5 @@ -0,0 +1 @@ +cf01a0e52297ade0f61267c14800a8ea \ No newline at end of file diff --git a/master/inherit_graph_236.png b/master/inherit_graph_236.png new file mode 100644 index 0000000000000000000000000000000000000000..03ac6843a30faa74778db736dae413bab231ce68 GIT binary patch literal 3505 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 wZZbx;+bOO_g_ZqJ55qKFHC!wJj + + diff --git a/master/inherit_graph_237.md5 b/master/inherit_graph_237.md5 new file mode 100644 index 0000000000..fdeadad0a9 --- /dev/null +++ b/master/inherit_graph_237.md5 @@ -0,0 +1 @@ +5707464808b43d46029eb5254f6854f1 \ No newline at end of file diff --git a/master/inherit_graph_237.png b/master/inherit_graph_237.png new file mode 100644 index 0000000000000000000000000000000000000000..460e9a4698b6c080d301ef3610d60fd94936ad7c GIT binary patch literal 3428 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 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_238.map b/master/inherit_graph_238.map new file mode 100644 index 0000000000..a3d9ea7eb8 --- /dev/null +++ b/master/inherit_graph_238.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_238.md5 b/master/inherit_graph_238.md5 new file mode 100644 index 0000000000..aad1f227ec --- /dev/null +++ b/master/inherit_graph_238.md5 @@ -0,0 +1 @@ +c4d5aa72e0971a9be3699de7cf1e32cd \ No newline at end of file diff --git a/master/inherit_graph_238.png b/master/inherit_graph_238.png new file mode 100644 index 0000000000000000000000000000000000000000..9cb66c3d43d5550fb857103f624ab8929b3a27d7 GIT binary patch literal 3378 zcmZvfc{r5)8pnrhS+Zs)CY2>?jBSk42qnBIN{lUJ&5~u1nD@1>MaiBPCI*vbFvgN) z?E99bXwnGTw=i{n&ULPHoj=YsGtcwPbv@7h`^|lS@6Y|6I5QIi4pw1S2n51mWQa5e zXFT{^Wnlux5&v%!;Kby3!vG2SbNnhG6+MGM*r`UyE0)1IKXW6DM|aMU^T~?($!vG8 z#2#tkb7+vZN6qwl-{%CW43c$gD(CuYScHxEBD0bPGuslQ3WVMG zVHqgD7-=2`#v&rZ2@FnFZ4B>+)KeP7>uA`eja2Vnfj6~WiX(aaP zsW;navhgZowv@OpX>cB2Og`XLRad9XwP4tW*f0*MgM((yE-vngHxH$r_bg~UKH6_k zYquA?apMMCR(5t#lIfvT-q%UIlm8SK#zD5Lt4oXgN$r0FTEC6Gs;6gWZvJ7=OGzW@ zR(z&%=xRIX6GnlJEH#hyA4U0D8E0WI{?OeOyqk%W5}_YwLujUKY&Wi~Y$M>q$14S{ zOgiAj>zbny_U&9YzP3w1cRVN^Nt2D?M0BX5qvI=^Zw&n0zV`MKpTo9pmf8~e=_4U2 z@J*Kf9L?9iX^V@}&MHDjM@Mr@OYyndL5`lD>@qSkZeCvPHD1$TEiN9O!b=f$cH&1g z+K%@hfpE<~v^`X(v&#Pdesg;}FGH~rN+$6+%wj++8GlP6l|^>K(MK+tJe~VXVuhBU%h(u()i0CwOPZw1tFTR%E_%U zoUH=`oF*nFES#JMHa6Lx#Wm<2{B`G!kyf;;l!U~S1`_E9H9z7V9A@Ix%5DB9Zt`pVkN8gvr-Yxk)1G!@EDHlcuatrc-1S zBKgJ(g)|aLM-2vhYL0#L{kuzdfB$)f)bw2zZ_i8}yPlpiG&LnR zH$%#7iP4`w+gVy!y{@X_E4ht}N=RU{3!Z0eBa=mPwJ%&?784Ug6F6R(Nk82DW|W?u z-V9O)3VgV?X5i|2VQPAM?2xoQe1nCJ4THnst~KCr^5Bda{ZnWk{ z{EkaYV4j6J&0FK9Ws9p*I+6T!$aY7y&mfPn5@4%C;}`yii6Ul2H+~(?D^x z;fFQ-q9Ap$8LWG=L1#ooMF)q6qdtE8D74J-j~)_AF+?;(d8eLdg+6!Il$;_)7T2)q2;Zaaf z;7VwJ_~?vSM>YPpZk>jCO))s4qFk(nEN&ZnWh-T`*gq6M z@5n@TfVw=)3)O3jjEt04R75Sp1pV7|Bpo|u`=S!8r>|-18yd2F4x#3T{FnyCWP_5TD=b#tv)XwpwD{cM<24F}5}T4@U}l!uu}yrNd5OEkQWkXRRoM)v zu5LtGxAot(wHiQtRn^t62n2zbFJE@{^w=!clqP@58EI*`g4EZaAII6axw%zzzDa@c z3;2eHYWw;5%~2>AG3~(SkrCbj_*UYl5RN-s9G}<}ZR_8R$f7A7907rWP&qlap6BwI z%F0V1M2tm|3D(K=gRijDg@t;ZfEsEQktpKe;IO{8NB%KVB+13X-qFkIWi#zrnmJL9 zD*E_QkCm0R@NlguKX7%%NcU(RGZnANI|b{OK|;AnwB6~Ejz|Aq)%8RCdrR57ct=LB z$%;rYZ;Y^(CM6F#JFq=ZyB>uW*HKlqw6bPqXJzE%dWr>|23^~$Vq+~VEKWj<-kKi( zfEvdq#l=ZNv{3a(c>AlXF>WL8ZX%JRV`KV&y#ezd8FLSr7#Id4PcV;814=VI;bUdw z=9b}O?e6T900jI%AQXWSsO9^Wft$N)!H@oOczF2IepiuR^g@q-!SW=%prGI4>tNuB-we%T>pzD>Ybds3_*KrdzHa5DsyQ_3}JV?w<_t-V_ zACO5Qw}LvQ*b)OJwX}q9-n_|_Jh+12PnvZ~(TP4f3ftb@Ev&5-^s5ui$jES6PzC!X z+f7bPFaxF>9H7}bIh~xH8T9q_7k~VSG?e;J>>d!i|ADu+0uUS*FE0k%xl=2tjWcpX zp?be(O^POx@N&}95@7Rw4<8l)98Xoca>gM6n(D(3VGC61v!*6pO)V|+%axE9u#^Aj zfz_dDhDZRa>Vv(cq@*gph3g+GD=qfk&>91NI!TuYeu+-TG-?4jr9XYD#|dAD=_(#7WX1OfTy9xX+=LhSwy(D4)gjlRssfS7+1i);DCFCwDtMb|tz zIT?cO8~pnjw1&URRoKJBgG!1iExq`rsA%~JbJ1VO*QW%c5(@GRbcKU{{z(s9oNtnM$B zlt0{F{L9kP60+aKjnLK>Sy))uUoLMlGczmrJ+@VO^Eo(o}*vgR>!!H2aQIX+uG)81$N_MaJZ+^-dKs1nhURMYhSjy5j2ep zGDYzD($LBA6bY-&7Per-`D`B;A`&eECq_ijJHl~Y(&71)?4{) ztQB>2&zNKRfD7Sb{Rdd8iQu~qv74KIE3-raWo2bS5s|BYek!L#H46Mu;gk-0lTx*o zd!Fq5&HQ}MGu8j~{r~?W<+G5s#cz8Fj512<+_{?~*)XRfGwJmaQ{6rr3-)N4;E)hW zRaHwT&#YJ>_Oh0;IH8=FxXhN2%vhlu@~LKJOsKNp?cP5Su|idQ!GimH;7<_5NZ$lm Ire`1ZFIT#WBLDyZ literal 0 HcmV?d00001 diff --git a/master/inherit_graph_239.map b/master/inherit_graph_239.map new file mode 100644 index 0000000000..d04adcd5fc --- /dev/null +++ b/master/inherit_graph_239.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_239.md5 b/master/inherit_graph_239.md5 new file mode 100644 index 0000000000..aa3aa94b77 --- /dev/null +++ b/master/inherit_graph_239.md5 @@ -0,0 +1 @@ +ab14acd2888513ca0eb4d9f88b291050 \ No newline at end of file diff --git a/master/inherit_graph_239.png b/master/inherit_graph_239.png new file mode 100644 index 0000000000000000000000000000000000000000..90ca60bc11d5766a17ba1b73bab2b6d78c84e2a0 GIT binary patch literal 3320 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 PuMEiC*b-W8=oa^HAUu;L literal 0 HcmV?d00001 diff --git a/master/inherit_graph_24.map b/master/inherit_graph_24.map new file mode 100644 index 0000000000..8fc5e33ea1 --- /dev/null +++ b/master/inherit_graph_24.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_24.md5 b/master/inherit_graph_24.md5 new file mode 100644 index 0000000000..0e34fb0841 --- /dev/null +++ b/master/inherit_graph_24.md5 @@ -0,0 +1 @@ +0614ba685c1ac276a6837fd77c90c23c \ No newline at end of file diff --git a/master/inherit_graph_24.png b/master/inherit_graph_24.png new file mode 100644 index 0000000000000000000000000000000000000000..217ccd1765d3e638f8f346620bc3c0715f4baf33 GIT binary patch literal 1296 zcmV+r1@HQaP)PFPkiMzP4tG0_aX{%ibQHZEfBc)&~@h=ET-n(kJ+9bx> zBzWgM5Xd=a&X;%Q$z)DoMj}ZF)QB}D*$D*6L&#S#LcWR-@>R?~$2;tHJNon3|eONFYJ{@pwEDeg1al|03KsMR5L56a@_p4PnQ`HDARD`6@=p zS204qib=Zs($Z3ljEp2ZhAK(Ae22q<=H}*ve&*-TpK<&4ZRF(SAU!=DB_$^}=SeB|BbX;W1vne$6o5Q85~g zeEj$^D=I3Om6gS-SFiHTn>V3xuh&b9#X?z@nVp@@*49?;?d_2yZ{EDg;o;$!Ywhmt z(qgetuh&zn)v~6hhHkezH2&<_GZqvSglz|dLCUhswzjsY`%_a>LjaT{iLxy7>C>kS z27^a3wzs#ltgMU~85uMf40Jdg?CtGkUS1wG8Vy@oS{MifV$N+e8u{?yL*BY|i_X0wqD zFF#tX`uciSS66doWrbd^mz|xRyng+9=s-u4?{qo|fOfk*rv38!{rvj%D+>z?IWaMD zB%>_LoSmKJ?(Qz{-Mh!EtSq*)wD8A|A9T4~%+1ZEq9~y`C*?L8jm*u><%bU+==b|$ z$`K0*k>A(X7i$0f`I7+X@p!nlwnhM4T3QM_H=O)PwKg_32!NZLo1yVQAV7^q!}-#zI{tcl0v^`BzgDlU3PVKkz`D{jYcE8 zySq=7BNn2`|7+KLolX~epO%&e0Py*IaJ$_|O-)5XLBW}8t*)*D0P^zkAW0G=NkVFB zDt2~u;C8!Dtb6(LWdOkD=4RCGtX3;-+_-_v%uGm%Xv`+`rFWds5NEH5vgxmJFDK2lOru(h=Xl1E;3b#*7sHy8|% zWf|k+;}N&{{{1`5W;32Vd4g}>z9AS4VqjnZe!oBNxg|-8YmVc@UA|tgM{R8_nwpxh zxVQ+f*NfrdVN6d?|4}WI$%MwnMz~xq92^|r%a<>xudm19;UNIv`Sa%}EG!Jo`EOg2 zBn%D?VsvyAU0q#RT3W)v!2z63Cmua|1VvHc^Z5`A2BFnzapA%RI2;ZP3=Ew47@U;* zIPu7FoP_+<8y_FXwQJW)$HKw_N=r+Tlam9p*$k~#i@Lfx$g+%{o*tOZW@t1TbaZs!&Ye4d zl=UpRPtGuVRFJ6(i)U7$IN9M7(udQItgH5X1?) z-5zl)qWnnrdJFzPNThf^U!{oW^VN)yuVRFJ6(i)Un12EN9pGT-fAI+b0000 + + diff --git a/master/inherit_graph_240.md5 b/master/inherit_graph_240.md5 new file mode 100644 index 0000000000..030caa18b1 --- /dev/null +++ b/master/inherit_graph_240.md5 @@ -0,0 +1 @@ +fa5860b84c840e2e044680baf59776cc \ No newline at end of file diff --git a/master/inherit_graph_240.png b/master/inherit_graph_240.png new file mode 100644 index 0000000000000000000000000000000000000000..3a2b3f34a79a4905121f0a30179425d9cf47c173 GIT binary patch literal 1864 zcmV-O2eWXFDf(Lpv^RWV>oovtgzJ} za%1HRLuxJivo*J(maJaosMV}iq-|}r1+Kh#WWHzWyo;BYmv{a8^{AR`*|Mdsu8wr`ISl6a z@87gwFc?90=|nm^J8Noc$hnRLxbniWc=2NNKele&x_9qhEbZ}lVjUU)QIq0wkksWiaO*|TRe zGc$>4Kg8z0e*MyFwL+ng!{Nx~^3R_?`$KAIXxO}Yb4p6eojZ5raygAgqtoePvAD6Z z5xe#xTKoR}`_7#^xm+%f$5SemV`F1Mtpy!{8QlTgW0UCm(xppcv6#tZZrZe|yStl& z3IG6r;xL=d0VP4n&dwGH1TS8^n4Fw!Y;5Fmxjvr{MbYx|^8Eb#zP`Tk@$u&7<_8ZR zpeUM~n|tlrHGf-)L}D_Tu=JTTXEHJ}i0P7&60KH?r30E*R8+`hGMmjdF)>kJU!Rkc zBz{4-EJ=`Dk?24^>>hH z4ZrdtbcgRO-t~tM9~LcIWU*M>ZnxEH)$8>$jyZ~=006VuJgo$uiCnx37cO9FY_<*$ z4`Yj)o4-XTq zIUEiKgCP=$uq^h__8%VNtpz1ocX-5N@$K8U4R#tPo6yKbUJ-LpV4Ua?=SGy z($mvD9*^B_$Fc(h16W~zwNOOjE>uSV0A*!m?d|O^U%o6ZE-ol2n3|f3XgC6Fl4uhY zfj}Ua%hhW2`}glBCMHZK)5C`k0RU-fX}!I@LHje~h9#i6Kp-eDFITBlA3uJanwom` z>QzNW#h*Wa0-CtpZlBM$WXY1m#Kg|dPNUHn)Ea^y1qB7QwY5&C)8TL&Ja|whlclAl zMceT(?m~6s@#DwGjvX5q82J15uh;9vEJW)U%TN+UAwlVqy#~buCA`4q9Opm zkt0VQJ$jU!oJ`zpMnXXImX?;RtSp&K#^rJk95|p-sgjbC0-A_KqI2iYRaaND*=(Io zS6NvZ%9`11X0cf7)~(CU&E@m?EiEl1A`Ig$R7VO63ppH)OeRZBO*I;gckkY1u~;Nr zli9F9Vgi_}4GSb5fZ|aYC?17@;!zkV9)*ct@#5!VC~k?Rcs`%+$&)84mC9f+#4rpJ z)YsSV-@o5#wZ=A#*ofEH*LU>jQK3*+Q&Yp|^S5u`9;R{}UJR+#>ZGKk%F4=Bt5%&p zecEQT&BrLs4E{^se1A#*`t_^PXw1pUS-NzoMx%N5>=|~K6qNY97{cT6c-q_BckkYv zl9H02pWocvJU%{7YG5J)%*mAyX_QJO06?Wu{rvfJ#>(+|F%*>1(NXMtyrH2XlKSKz zinpMTO@qPE)YR0|(<2lL_wCzfu~^XPf7%&87eijJx1*y&sZ=5eGB!4L`SNAGULS3D zX2XJt$K&x19Xj;-_3NikpR(C(g+hTK$noRH{X-v$c)J*S_wJoer(3ylWo>OOf*?IT zJr;{aqtS3UoG6E6R>Wq*vS!U1gTY|8+f62u!{NXl*I|gai=nGmue#mtd-v}3_xGPV zbqYZcGNUki@bfpWZWZwFJd4GWm6gR{FeDNQilQ!;ORv`>2*PACB@)T~`}eVG+1c4Q zZrt!&IDh^;kHmMvSheEITSyLOF^js~?Bb3kl2ERfki z6fb^HSRgY3#iKA#JPHHFqcBiB3IoNXFi<=S6XbVh+qP|6_&6XWn6~oL)6=V}s$vxi zBs^7BRsKU)3>pgmvXQdDcOHd-;!zkV9)*G8QJ8 + + diff --git a/master/inherit_graph_241.md5 b/master/inherit_graph_241.md5 new file mode 100644 index 0000000000..ef538d14cc --- /dev/null +++ b/master/inherit_graph_241.md5 @@ -0,0 +1 @@ +30f0c626c1ce1fff2df9d35b9aa5e389 \ No newline at end of file diff --git a/master/inherit_graph_241.png b/master/inherit_graph_241.png new file mode 100644 index 0000000000000000000000000000000000000000..d4e3825525aa536b457cdf3182e38dd0705d78da GIT binary patch literal 2230 zcmV;n2ub&eP)h@c$M-nzcIP&y z=V!hjf8E{Q@AvC=V&wx^M!+yk zI0Dvu0LB2~126^;)ZLwIG zPR$!|M|@khY&mo0Oj=qRhr`*hVM9|>6MB4NVnU@-iA181kPwAJF*!MzmzUSp)>cqZ z0K;%%Vj^Ljix)3OMMaUfG05Hj{{5>`sf0oym&=t(rGtZmSW4yP-}KqP8*eXup2_+P7~XkH-rQ4VB4cqobn^M{`(#Im1D?%Pu+ewQJWz zB2hp~?!rR#s9{ zQg?Uv*w|Qgb@j7n&+K-4e0==v+qbd4VzIcUrUu=x>N!cmqOG`^mPM(^Ya;hBOg~!Av5D27FX<=dE=g*(V$H!}GYMwuT4na^@SXgIgr^D}K z&KnLwcY#2Vm6auz%fEj8IyE)b+S;0(ojpB0P3U4an{75*aB#4npI=K$i$C=6EeKRvNR;v{q!PU54fF~cd z+`D&g)22=7>FEf9w6(RRrlvv=bn@iM7cXA0*=+LNt}_t2*VfiXM@LH}5+09t^ypE! zT<-7hPv{a65pn6#rTqMS4u?}xQj(LCLp7RKs|^ec+`M^ne0)5g&#$embt6NXa8xIf zl9IyZawQT;NJxlAqp7Q_3k(c&BlLeA*pB=6T3uZox>#l~A%M36!?0GX-Lq#8b_6_R z1~3K?AAm7{_yCLn#JA*_nVFHvWI;heF)=YT&Ah-e!;JX6pl}Pv)2B~cTU&>QhCY4z z#B?qT%Yus!?~lU3dyO1IFd!`*la))j=g8{l=n#v=!NI``l-1I~1LCvUY_DFulFQ|4 zwR--e{THFCfP0Rt@$qr;!^;Jtw6yfdkt5B`%^q*;4D%9ScX#)xQ>TPNVNp>LpU=lX z!l4I$*(IBcXpC4(&1B_v1*niprPr@tudc3!VYs5A0zKl;uZ72S}9bEz>N$Rn02nM?*jkX$bR^XJc;jp@ZlWiE13d`y|FT&e)dJjF-OoW6!Mm7!r| zWCS&8l$V#!nWsyQ?Vhq!snzPLs;Z8T4xvzZ`0!z!PG@)bjoduVMNFBjJXnD_nKN^T zHKeZ$0jt&8)YK%C$q)n?9UZ-K<3?Fo8C56uSKpQePu9udU{GqO4hAgr&KBt1nKDL(CKsv zg@ViFlB2lP*cs+^!x0k`qgJa82189vjnQaCui7p_WiFyIVl63?)qE;Ih0}4ckUd5AT-Ii)YvKTzYHhWd@hlmo=%9^)zyWqSEi?@)oOKA zR1}-dj*X3d{P;22OQ+LCM@O?*EU{Q@pS|WId^9mJQC3!lAV@$!fLJVk^5hBHEH*aw z?%lgs8ka9$4h;?U^YcqgOe`)gM*EUSGnq_zd3mc>uU@le&HnxSM@B{*j^+mBHQ%8_ zhYAV`$SnzLKB~;;tRYopm;&<14F|v@Y}~kUaBz_6EEW&4_?-IlGhiX;>FHrQ1%?5} z0svzG@c|eEh!4ORKzsnk0OA8M1`r>BF&sQ<*}Z%B;^zTahRmAz!o$OJb90$W1>oJ} z=H_BA%28(hX&eApOu(8Cz!*S$0LB2~126^ + + diff --git a/master/inherit_graph_242.md5 b/master/inherit_graph_242.md5 new file mode 100644 index 0000000000..670e8ecb8e --- /dev/null +++ b/master/inherit_graph_242.md5 @@ -0,0 +1 @@ +e6522ef99d151dc3b39cf388db2aa7af \ No newline at end of file diff --git a/master/inherit_graph_242.png b/master/inherit_graph_242.png new file mode 100644 index 0000000000000000000000000000000000000000..14d2e96a08d675a03c39355bfb72b54cbdda3112 GIT binary patch literal 2337 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 + + diff --git a/master/inherit_graph_243.md5 b/master/inherit_graph_243.md5 new file mode 100644 index 0000000000..ab88a5c0e8 --- /dev/null +++ b/master/inherit_graph_243.md5 @@ -0,0 +1 @@ +cc2ba3669a64647f2e0879077a49b6b1 \ No newline at end of file diff --git a/master/inherit_graph_243.png b/master/inherit_graph_243.png new file mode 100644 index 0000000000000000000000000000000000000000..994998aa56ef2df411dd59546b06407a889d4d4e GIT binary patch literal 2463 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 Vo)zyA9AM%CS^Q~(tugjY{5OrzwG99O literal 0 HcmV?d00001 diff --git a/master/inherit_graph_244.map b/master/inherit_graph_244.map new file mode 100644 index 0000000000..699597d397 --- /dev/null +++ b/master/inherit_graph_244.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_244.md5 b/master/inherit_graph_244.md5 new file mode 100644 index 0000000000..c270df3a82 --- /dev/null +++ b/master/inherit_graph_244.md5 @@ -0,0 +1 @@ +a6eb3989de481580872f4913d048762f \ No newline at end of file diff --git a/master/inherit_graph_244.png b/master/inherit_graph_244.png new file mode 100644 index 0000000000000000000000000000000000000000..6df968747568e32196f28866fb67fdf9b13923a7 GIT binary patch literal 2623 zcmZ8jcQo8v9v7KaCfXBG69i90X9&^8AbOA?V|dDt1Yr;n;b{|fB5IT%k!aCHd3qT} zhQW$DqP~bOdNBHw{pFlJyLs|1uSYb=pUBpRaQug#UV zw})2lN0`emE-sSo=hy!CsDuD2D=4y{pg@TOEYO5M^yP`bpb5$whfN-%1r@f{Z&e?D zEx-Tx@nc@jCRb$)jgrs*d1wfK%oHTS-Jf(#Q}&X!$%{>q-;$D&X6SW3-&(h4o1&KT z^RNG9{Z14K$IxiB-eeKZOPBQTJv-W(ZfI!83qzrFCAe#+(HieR z{nmO#K)@v53XMijp`RlVydzl)xWmIk@2Q%IE>uuZkc6Zp?PQOTrxpcKM5}`iC_UJr z;bHf>X?c11fj4qqK0b}}^5$Ii{HA7RhxTlrm-e#ESL@t|!>MN(85un&MHRtBL`7m! z5(fuI`1z4H2Gfa@?Fc!pLR7G`urxnidF6vfp-?U^*VT3WR}-qM6=>>OS`HH25f5++ zN=iz4`Bu^y(i#7xo*y5ahBnxUt~^6?`X$O4(%x3XVeUM^!>_2s>0reWds-z^Yj<`?2qa7Dm4=1}7!>KhHuT%9 zB}%pu$`o~hBPS<^3v{o{MmhV-#KgqpE;Kw87 zY>k2a{r#9reDE?GaEustTx)CV&p94&%=`D(;(HiN=GUvOq<+q^xdKX1%HrRg~9nBZPyBS=sA%um70=3c+b{^}9FDxj~Rfy5M z!0g-+YS$S~jk|m!I3z?>@UD+fl~3D?!`1C=Z50)X%z>_($S~l2hwTD{^e04l5G*q9hO=MKv8?sv(%z0m~E!`_F=;^N{>-m^zEYDf{>4v9oMIwp$tB?v&A zaKVp$zF}*lj|dGtR4yzmOiNAG38$Q#AMf%hICXb-Q>f>*zAsIS#ynJfe0+c;a>q%i zsZHjoabW90Pxr^i$LHppV)SYQcb)RB)E^Mp{1tLUb80XB`EwrT=H?a>a^8udk9(^A zMEU$37opmTY4KYkQce#D1j6mB7S`6*9v)JWqRgDa?HGDTTH57sx)(T@5FZ~;rBI^v zu19rE)wx^3;bZAHt;w-9$VvbQRnDElcSgx%a)Z~T-~qzk-n0nLCyV6b;+kJyw{vhn z!(u@T3693b#w>}3m%%a5G_=*!nkp+3OpENff*Ey3UBl@J0GA>n)iIqfqY^lDF)>$8 zx^{D~KV;nG)RU~CiT-y3(9ZGRQg2okKT{N}gcPHlQMfrXqOP(a{kOhg(>1bf}4mMVc1fQd0wP14O#Dwe{LaC37!@@WTa7yUUln{k;?V z`|o#lGhY)G2ZDlXcKtDSIyFfMS+XV+SbTpjjwRlE)a0+Eo2HZ6LSp1!=YQj3&z zcVC;IpD!+!L_yTmn}Ls#Oj}=FZ45s2%r-a7iGrPx z=7fSW)^>J=P>PM{>3!;XVAPy>F6P?Q86-%AG&WXjnLD)d)bhQ?*U?dzFJlf5w11xQ znQiPItPQucw1nzlHpa{P`}>ncpcD7wgas4bCMxZ`CMqAJ(Kcl^Q}V*eMkOQ>ozPMn z>AJeQdpz5lo20|V26JS8ni4e?7QhSRAdWi(D}UN6W`=~(0=On~<#9lH557}tYi(s> zW{&S!q|w4F_%~}TsJ}}}im{}or>m%|t5^Ej+S+=0N@or@*kg8G2x)_0rJ2aZV z@J_DljtlO>x}m%K4fQbUnQEk{wzhVVuiGFLpMFN#JKVI*+fWZCmj)z$Dx?qe_qRM* z(DU-DNKPKEa%{sFlCo+`O4a}h1PBX&cq35#&CSh5$-)ux9N0q0(i3&vMuWUZVNSHvvzoOXA4e`Nqr4M68VecE2`Pn%jBV@bp^pEr5! z&?b4xD=KWO985|`_jrDZ+VgEekF~uZET@Q5>$95~riaJJ7|Mx~2Q+Xe2aCl>Q8RH8fOS%Z#| zZ2=o0ARzGWmbYLOGR2Q^+!;pX`$ZjkGZpxW3B+G|`b5qr)PLKf|M(>SDa<_Gs3xg^>ROG(^_g*y- literal 0 HcmV?d00001 diff --git a/master/inherit_graph_245.map b/master/inherit_graph_245.map new file mode 100644 index 0000000000..d161d45541 --- /dev/null +++ b/master/inherit_graph_245.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_245.md5 b/master/inherit_graph_245.md5 new file mode 100644 index 0000000000..7079b6a8e0 --- /dev/null +++ b/master/inherit_graph_245.md5 @@ -0,0 +1 @@ +b77c70bcbe103420fcc687001f01ce43 \ No newline at end of file diff --git a/master/inherit_graph_245.png b/master/inherit_graph_245.png new file mode 100644 index 0000000000000000000000000000000000000000..c9c99f6c659adbda0f6982e0795caf434f4369e1 GIT binary patch literal 3912 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 KSi1s^4f`Jk3b!}_ literal 0 HcmV?d00001 diff --git a/master/inherit_graph_246.map b/master/inherit_graph_246.map new file mode 100644 index 0000000000..5e43d6ea80 --- /dev/null +++ b/master/inherit_graph_246.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_246.md5 b/master/inherit_graph_246.md5 new file mode 100644 index 0000000000..6b0db48f77 --- /dev/null +++ b/master/inherit_graph_246.md5 @@ -0,0 +1 @@ +6e0b06927c74948a3bc11383bcc74516 \ No newline at end of file diff --git a/master/inherit_graph_246.png b/master/inherit_graph_246.png new file mode 100644 index 0000000000000000000000000000000000000000..bec0006ed2fe90fe3429582e72eed2e361ba463c GIT binary patch literal 3802 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 Wuc_U!5(1i4kcEkjaiyVa^nU;WFPdHe literal 0 HcmV?d00001 diff --git a/master/inherit_graph_247.map b/master/inherit_graph_247.map new file mode 100644 index 0000000000..db87434d38 --- /dev/null +++ b/master/inherit_graph_247.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_247.md5 b/master/inherit_graph_247.md5 new file mode 100644 index 0000000000..3c9ddd601a --- /dev/null +++ b/master/inherit_graph_247.md5 @@ -0,0 +1 @@ +a516c439ad32906c78dd4d15b21149dc \ No newline at end of file diff --git a/master/inherit_graph_247.png b/master/inherit_graph_247.png new file mode 100644 index 0000000000000000000000000000000000000000..7cce0a7a573bcdf4787917b3cdb1943a8c98c786 GIT binary patch literal 4050 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 Wl~XMjl^=p39b%+siYV7{2>(AJk=)b( literal 0 HcmV?d00001 diff --git a/master/inherit_graph_248.map b/master/inherit_graph_248.map new file mode 100644 index 0000000000..2eed61cb5c --- /dev/null +++ b/master/inherit_graph_248.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_248.md5 b/master/inherit_graph_248.md5 new file mode 100644 index 0000000000..7ade9aab92 --- /dev/null +++ b/master/inherit_graph_248.md5 @@ -0,0 +1 @@ +55581819113704519d7df31e23bf1262 \ No newline at end of file diff --git a/master/inherit_graph_248.png b/master/inherit_graph_248.png new file mode 100644 index 0000000000000000000000000000000000000000..8bcb0dff51715947f39c42dc855949a2030ddb1a GIT binary patch literal 2409 zcmV-v36}PWP)T6ndj7CMqJtwh=*y3WY*MArx;Q znh6}e*AP52&R*TJ22Y~TMVES1%n10p`rk{0#haX5Jl9G~= zr3wYZ9C$olMn;D5aN7J+sZSvQz|*3Dw;$K`UbU%$S{PXC9&=HFjr5pLGMu3tbvz^z-i=G7%UJUl%;-Qw;G z7|hR~KXInO<4vsF(MYAzW52$iYv$H@T`18d;R+Lj z{L!OFAPD;V``^5I)7Y28;Z#&qK;=u9E_r)YYh$z7_wL;@X)QQ7I3glKqtPgp%8-zdh=>T| z0MXXq^Uq9o@WH}efBEvo&d#p6xml~#N+go3tgJb&IYex1Y;0^Syv9QPii?Y(GIYio*n=I zdV71J!}sss0|4;t+qaplA@noH-Aww)<#IQkmMvQd1Og6+6N|-a zwHj?rrBdPXcm{(39YRlU=oUd(Gs%42!C^9)RaI4|PMrz}2uMy&e)sO(?Cob^!PYMf z21BpcLpSv_2R47?0^XfYr`y=r3=IvzZ@{RiDCjH>hl2{=zkg3iNH}-yTwhq2bM&H=&`SK|w)NQ&VPL z4zyXzx}l-bXaa#CIXU_B=g*^~qZJhu_4V}t0C;$Kbar-{9MYWY7esd&jTRjpos^W+ z)zvjMHTCxG+nAV`U%!4Kx@fgpgTdhB-CU@`TB)e$lnil@7~?Gabs9m7>mVf zZEXz+2>}4$^y$-2o;-1Ia6qp=%>mK9va-_0$A{17Qz(?w)YPP;q!lYxAi6LZjLVlV zCnO}0NTiI6jJBY}&NR-`}4~rB+r}S`gtZ?q(WDaB#4*vooL1CzHvg zrKL4BH3R~|0@nZl;6T{-XEil7(7V?%TNr;ED1QV`@L|8-ts6`~>ju-$y213bZkDNj zSenpG{p*Il;lf1OlO|stUgI>+9>A zmzNh35<(;r*REar^yyQmUaeO1`FtXgxPJZmva&J&00svKLD=>;+ROO(cv@N-jYe~F za*B+MR45ci7jW;9k&yrZ;BYtwgK_cVMJT(1wg&B-xw^ViD3rs85C8b_!=yFD6-!S~ zcXxMZv)LCeT0V3zdK9@9!@yE%o#BTeWIcN=nMhmoK3aqA?f@Yu2pUvuBS) zBGGEK@KcDq1R^7Y(9dMLYTLGLLZNVAV4$a`XY1CjX#LP$mN5MUN2k*@G&CGKbcjeK z1_lO}mzR%>jLdP-K@eOh{Sp%s0RTu!N*W&@pR=)Atrm$yY&P4@&W^|9)z#HO^=SRz z85x9r=ya7#CNl~Kf?!iq)13M(ZTiV1gM)+6{(Ek2t~u=&CVx~|SXfe0($UdDr_+xg zKi=Hj49>jeMx|1(UcD-l$%cl84jecT7Z>;Z`E!#kXGz(h(^VRchCm>=xVS*|EEa3d zu$NEzNw3#8HZ~?ECbC$p;o;$H*REw{Wz8ACNi5ON&CTuP$&>Bv?Jr)uAdyHyp^(L5 z<>loWuZ2lSB$7xZVlWsjEiHhlywaR08#q)dbz)*-XlMvJl*{ENn=QBW)2C0LGBPqe zJv~Jt5sSs@=;&x}Zca%_advh#f9%r+XjwOi4I4HT78WX%%8H5#l}ZIYe&J{|ny9F# zrlzKmk&)5S(em;GkSCKXc}c$!5zf{dD8T4XsvN zS63&K$ z&Ye5PUWoUf@sw7p1^)X=L#b4Thldl1L?0iYqM{-I07geg!RhZmgqN|gv8=2t7K`QR z=*Z!49zJ}Cb^(H5QBjebo14A8J(tT(Pfv&XqOJAy^$CSS7Z(>-SJ#6F4;o*_2x|+- z!mMAGA&(zFCX>la9mQVX%0Jg z?yRk?rPJvGfgm(Aw79rSB05JWm9ZWy#2Gh^FF|mF@ z|H%QyGC?YpB0i&?Hvhc5ykcWx7dIq~dBEjzc|0DxX4?0=7*+@N{ + + diff --git a/master/inherit_graph_249.md5 b/master/inherit_graph_249.md5 new file mode 100644 index 0000000000..b2ae349199 --- /dev/null +++ b/master/inherit_graph_249.md5 @@ -0,0 +1 @@ +482d7435a904af48175f86260d087d65 \ No newline at end of file diff --git a/master/inherit_graph_249.png b/master/inherit_graph_249.png new file mode 100644 index 0000000000000000000000000000000000000000..18ec213ccc3ca1d9458945bdae16e9930a400a65 GIT binary patch literal 3096 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 NWMXIz|ETXA`5!1X1t9 + + diff --git a/master/inherit_graph_25.md5 b/master/inherit_graph_25.md5 new file mode 100644 index 0000000000..c1716e562e --- /dev/null +++ b/master/inherit_graph_25.md5 @@ -0,0 +1 @@ +fca60978945ef24a6d34652d0b78edb7 \ No newline at end of file diff --git a/master/inherit_graph_25.png b/master/inherit_graph_25.png new file mode 100644 index 0000000000000000000000000000000000000000..d677c421b50c9b0a2a193e6fd9bd354f47b7ea08 GIT binary patch literal 2227 zcmV;k2u$~hP)HpJz%nH+7L3y40y93aQZoCzzrTQ=FD%n#6`k zDp4s(Kg6Pcin3pt{S#;0R&>HVcA*$Vs(OygueX*S#3}(oXjFpU zu@H=ajD=tXWGnHGKZwpPS2WS3dE zVugi;ojrRtCML$&**P#U@afa1c)3=q&CSgf2n0MHFFQMXdU_heu<-Ek^73-}hEr2h zxw*MMK0dClt_cYVYPA|KzjWzRKtO=evB6*v2n2@@A2zEkAt3<(03j3z1n1A6Hy8{= z=;OzaM@B|+IGo_%V1+_)?bF)0C9v&VtnQUTW0&hZ|Ln?))lb@EBM%?A_ z@NlDksA5swBYMD6tyoo6RYgTbV`F17nM^8`;$2In((dl=$B!SYR4SoR*w)r&VMCcr zrc^51+uMhRhJu2El9Q7S1_M>--riodS}l{w%wBD7ZpJWdZf@@3!-tiXl{Gar#HB}% z9^JTcV{B|pBogh~wd?ce&pkaoU0q#GO-&CTJizPFD7kz0?!}82CnqNl95_G|WucI} zO-)VJYPIj)z3b}g(r7eNsnoPSl|s|WudS^m9)${p!l)mbSZ43hf+4%i@)hg)_3QZY zj~_n(0K>z>gM)(r0HsoCRM}|7GHr-|3K$s~!OQh}y^D)WPfrh3^!E040Km}D(EsWz zEiFw;OCv%T7Z>BlZEbB3LVQ8RFzn#Lg9QZz7>3a(2@4CmaN)xLMxlaOvG8@p+1Yt) zY|NR~sHyU-T(P$hU9R&gbe!6+{X1tKx36(+%C!c^mmgzmRuv;=q_VO+e2=sbA{!>^G zzP`RJ7HfQbob30+#6+t4!NI`-fuOp&+Vm3s-f-^RxzW*4gTYWzQZhe3zf?+y&td-- z1z)kIr>7MPMQm&=QBHL0?d?53KR+}ygrD~J_v3|@D5RQv7R&towItReSu$h!`1nX9 zlFZD^-rioVR$E?P-rU@5VZ)@Pq>PM=zP>)4PWSrt>*VC*-@ktY0E&u=@E;TT7(#gK z)~!2t?i3UhD3wZ`PWSQS$1`Wn)Ya9^&dwSP23J?tHEY%=6pE6Pl7$X|N(mX7C}ss) zh`+yoR8-WFBS%I@M>QHvZfoXh2ghK34-LO!2gRaIrV zLbH>9>eQ(xPoA*ZY>`Ox53v>nc~MDuHP$;adthBWXI>74KAhjz-M@I(+2K@c~ zZ7pPBAY(0Soc)(8Z*pac~ z;^N%h-S6GIN0gM6m5D^6(9lqcL;@jXu~>e7e)v~m)8?BtZF=_X8GbxGJPaYkJvu!- zotKyA>+8$o@gx!n{yi7~aP#I(KR-VXhqH6%&hGAR=Et|Zup?u!Sgb>b4waXeix&PXze+^Cwjv%a<=-I2;a5^3N&**!j-8mzP&U zLPA+t833THtV}AEIypIke@cVFp~_?N^Yg2zsX2M_ZChI#{v5P04TjBT6PZaw#yU-=O=4nVOH0eESFd7YW22&?bUK~2hPW)S zJ7bB(VmCLpef#!BL_}=ex)so-!I0UuZCgb}#pLAV;Nalt)2H!5syvp~*4Dzp!v6mL zxw$#LUXO>c-XNC&c4sUWig% z6r=yphiIQ2!35|X3&9A;SO`Wy#zHUxG8Tdn{sR(0uESqXbd~@B002ovPDHLkV1jNO BKY#!L literal 0 HcmV?d00001 diff --git a/master/inherit_graph_250.map b/master/inherit_graph_250.map new file mode 100644 index 0000000000..77c2950921 --- /dev/null +++ b/master/inherit_graph_250.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_250.md5 b/master/inherit_graph_250.md5 new file mode 100644 index 0000000000..077d39d996 --- /dev/null +++ b/master/inherit_graph_250.md5 @@ -0,0 +1 @@ +7feef9a11c0ccd6c47f45e567b1223ce \ No newline at end of file diff --git a/master/inherit_graph_250.png b/master/inherit_graph_250.png new file mode 100644 index 0000000000000000000000000000000000000000..f09e2d5a2aa8043f0c08c65ed6ba623eee48d9bb GIT binary patch literal 2716 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 + + diff --git a/master/inherit_graph_251.md5 b/master/inherit_graph_251.md5 new file mode 100644 index 0000000000..128b26e34d --- /dev/null +++ b/master/inherit_graph_251.md5 @@ -0,0 +1 @@ +d4ce78c91944a928eb1c8f3c3cf6c74e \ No newline at end of file diff --git a/master/inherit_graph_251.png b/master/inherit_graph_251.png new file mode 100644 index 0000000000000000000000000000000000000000..bc7324011ff7b458bf357330a50334c5eb7cccab GIT binary patch literal 2684 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 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_252.map b/master/inherit_graph_252.map new file mode 100644 index 0000000000..78332d1019 --- /dev/null +++ b/master/inherit_graph_252.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_252.md5 b/master/inherit_graph_252.md5 new file mode 100644 index 0000000000..da1864cb9c --- /dev/null +++ b/master/inherit_graph_252.md5 @@ -0,0 +1 @@ +cc6e1dc0b3f866db1c72914d473165d4 \ No newline at end of file diff --git a/master/inherit_graph_252.png b/master/inherit_graph_252.png new file mode 100644 index 0000000000000000000000000000000000000000..b78024b038df9630695f37f3ef8952190f242d3e GIT binary patch literal 1980 zcmV;t2SfOYP)i?!I0YTkLZ!`8mOuVb z*AT2ER%U5g8DX#$I*Xual_@K0_5;dFG$}!G6)qDia<-{ksAX!FTVeCQf86&S_uY@H z?p3cZJDaTLbD3KqjF60AvE{4?rfK_=C>Q z&Z?>^vZMgqftZ+>qM{<};lI{DgTZk3?%idV1aKGBYISF4C%(ti-l(CWVY&1G+>2ei zcG>iR{U3l#K>Y#81k@jZOqRR;I2_K^t5=uKKby@~DwRv;|G%)3wULFptba>g_W;*e z^7@O4in?**#)5_WHK3n+1S_^kH`D< z>sMP_TVPIx8!ytE+4G?%gm9b2uCuKT@eQBqYSXjpygjpAw0L!C?6L`SJPu!NEad z4OUDh(~ccGwr}4)Jv|Nm`~K@}?1c*#m`tXRk561&oJOOWPb&C)J`BSY3WdpJR#a42 zKW200>f^_c1e)>C>GWsMo?&gH(FnuvCnzy}f()uC%n2!C>U)=hJAkjEoFt zarJtAY;0^uNXU~XPY?vLHxP@(-rnBn>FFCbY&d=Tv`(j+PokXR;`&!tS0|N9M@B|+ zb8~ZYa-GA`$jIlC-h zp`p;w(6qF)+1XhF4HzRMBU~Mn^}htE(d-BI4uYCnqOw-MXdI>CT)v z!(=iYdhYG*jfsg#O-)rQm0n(64sAAV+9a3DjYi|eix>O*``K)ETwL6hD_5|e$AUp| z+_`hdrpFgC`zNzT3T8#V=NC76BEvyI7@zBULFKNB9Z9Fj~|37|9hqg zf~;P>y0^D?PGc)yzkU@61P}z3m6gqDEEEcbLLt7##q}>BAOLGnsZ9A|fJueSKjVmPjNhA7lFc^FH?rm>xM+sM4kw_#Ki@98GS63IY28+eg+}xa(m&anU#>dAm zU%p&iTueN~A&d6>5gZ(Bu~U3*mmmAJ5g?UH!^6Y3ZQC|6 zF|nX<0)e2Zsp-|LR|yFT@$vB{lZn`VbaXU3JNx9xlf%Qqv$L~ux%|(cKd!m5hf1Yd ztMkj3FT}>qlD~HC+JgrVzIpSet*s3~kgTjM7K?TK_;KrR*ajGetE;Q`?Aeo;nAp+L z;n3#&`}ajfMRYp7u&|KDVs&?Sx3{+!6cqUR`7LaQ5Ckn^{RIUD@%enQSp4C`hwtCN zD-?>x#zqK&0s{kkdU~uE2G5+&A3;Gusi~kE|*hb446%`ewrKL$pNv*A|_GhnM zyJj|<@7=qn)oRPj%ULYeLZ^mjG2g!^mCEq&@T8<97K_!@)y3oSAP72gUE4C=`W4fvr8*J#kLBT&|y=UrI`f zzrVj+E?22kzP`T1LxO{Y&z?P-ot=#!NKsKydV0FcuI!P?WMgAvG#ZW1=UY7!;4t|% zP$-nGTesHM*3MbbrKP1(sZ<~kJbLuV=2T^6<)urPVq;_HKNkXE{DwfKQeivjMRDyi z91cey5R{dbkt+kR=wRPp;Xm+OS?`}w6n**frADJ!&|(Sr|Ki~LQxeI@$mr>TN*8LaYZh-m&kO`=MR-iwfs5&?tsx~q|@p6 z9tZW8nVGp + + diff --git a/master/inherit_graph_253.md5 b/master/inherit_graph_253.md5 new file mode 100644 index 0000000000..92eb8325b6 --- /dev/null +++ b/master/inherit_graph_253.md5 @@ -0,0 +1 @@ +81ee4f5b92049af28368a3262195af7d \ No newline at end of file diff --git a/master/inherit_graph_253.png b/master/inherit_graph_253.png new file mode 100644 index 0000000000000000000000000000000000000000..12de5eb3074dc77bd4f9ba9c1cd1ff1998d6dc20 GIT binary patch literal 2617 zcmYjT2Q*w;8yzLeAPmAF2^nP&LKtBpQS!tXi8j2^dkLbGAc=_HqmP;)YDOL+dXL_P zj6Mv)AnGGe7v9ak*1y&}cb$9Ay6dd(u5X|H?QcivYNJ@dykHOr#DdmP!vJeJFcA!N z!23+raUWRdY#yQ1Ko`HC+~(qB5QuRbt)^<=m%Ww!QbXSz+S6)^P4{*RGj~|WrK%>{ z7mPkc4E$xxld5TiO-k+Tzm+uCrd*R(Fu)&{dL^7-E)cy5GZvc}x}}yl;GbpZG_57< z_40M#nMc947mnz^{_9K7R#V#QDgJO{H;}LaZ4}u}{CnU&E5IvB-CA zYi^$_D{jEiLWr?4~4JN{>n1M9p}FyG{=|&@A?% zqR}6&l^H7gWZ0)99_hVewbUI~1L+L<{@tdtt82PIN`Hoin);LPjzw1ILY}GsTNQF; zFoP&rp%^kZG_b}a$_ZvmTr7s8ikm;h6b3D()GBwxX9?}c4Dzkg%?GWftH$+I5rk~iHXaK+~n`*;zB#(NwOle3ZmYsh^Myq^)UkBP-t{i z*v%P8z1ig;70`QK27*C!N($#0e#lv@n^fzLjH|uBy}e!Mz4~^s8T&CzMc_-Cl%+!4 z+}JFMI;*s4b@*KfhM?x^Dv6V_e4CyQ?dXb&ic&?R8OtnN-|p>s9UUJpZqGH=c`Q<& zot-7%@t0u_JUuJ4sw6C1t~yuq9v>fnC@Be!k7tF!V7ZeU$RDnSH8os8K|#WI zW-uHM|JY+`ViGNBS|cDRNRy)!&>loXpOBH^w4YvP-be>)FSl&q4Cx^eVxVRR% zy0fF>AX{P?aip|SNwgEo>xbITSv#n3c)@@JHGkFIn{Ylzz_&ph`k}; zwC26*#=fhgn-?xv)s@^A}OmD1|y=rDvm7@M5*l~(ifQ&@eSqAA=R#}{E->F^#H z`kCz=9f?_4F{t?KHxv}0vJQhP`uZHJ2mDH}RD668&v(dihdc9sluruE$z73@l)MvT z4Mw4Q?uc9*?Fz2e;8t2Hed_)1-@7M}Hc;U_F5cw-lg_gB^+OXA-rqM2g5LEJ1<;>% zfX&zrv1CO=(64;WiJzJ>O2Ogs2n5D>er0tvHQLwbXMM)CAt5xwIm+=BwmmRW(cTjD z={tbPf=DFK4!OAlph_~38$*6D(H;WWtTouGb z9rWezli7Ojzjt?4jf|kcpFUZ4&~_1^GHmo6n%R?5cl%0;`8 zo18=^ovS&yxYUP-hY=2g(7RsC3{<%d4R@25X6ifzS$JeZo0^-Q=34@QJ3S~)BcN=y zkvo=8$ul!1np#?gj2t2(Z>VTQm6Y(?^Q}5Bn#nGT%@#UE z@FSdnvhuu(A}cFvOhA?<|6c?`kcLouu4)J~MJ8j=CJ+RajK{`=npX~%8{Kmx7pd*7bujl z_Vx#$BBDZ|&gIWsQEI{b%CB=o*bo4dxy$e7S)=XZXF1cSkB z{QRuk+-b@a9rWiWKhKA!Ds10l2)cj%8CF$=FfcR}ym@oLaV|5HH#8zbP)drGg@xtl zWdEjiwn7jflz#*(q#?AQ?j9U;r-|@Sy z2bn}kA_R5`KUEwas22BJ?r%Dl^i!Nhy z$gK7CJ2P|hEy<3u^hWE`Vk{Z24YaGPSFcLHJaBPD@CpeF-w+q?Cx3n+anXrSlL`$D z6@bI(fhM0YKw-Fi*};@X_ETyt{cVp06|*{zHnNN#jp=_a&Hr4|WAZ0S4R`$Ru_+PPt0 + + diff --git a/master/inherit_graph_254.md5 b/master/inherit_graph_254.md5 new file mode 100644 index 0000000000..7f8bdc97d1 --- /dev/null +++ b/master/inherit_graph_254.md5 @@ -0,0 +1 @@ +47d9b08979f459926a4190a1ff5759df \ No newline at end of file diff --git a/master/inherit_graph_254.png b/master/inherit_graph_254.png new file mode 100644 index 0000000000000000000000000000000000000000..c6e591fd1babfd3886284ab4b1f187b7167fba75 GIT binary patch literal 1685 zcmV;G25R|?=uCJ$(RHanKpN3B)v+LvKJRgFb6ZR4=Ta7 z(-6e0R;InJ5d?+9rWHZa3TsF@(@zzZ6%`0dr7e2{w>I0EY0gB~bVQz==fe$$we6X@ z_ROcl`F%R)I`_G*>sFhbIV#K4o@-rlCB zrlm@SVNul9)^6UsnL7QgBXJz>?CgwtN(_spv$GS&@jy#r=%71y?!+q}hA2T0B*?<7 zku-r3k|r=h(u8;mSx``L{rdGd2aN+`V`B({OiWBHRRVuaN78i$#ESo1$o%~Ln>TMR z>Xzc-;zNfH1sVJL`YJ0cV;d+iB7z`~9z6>5cK-bN=)5fne@#dJA%4IA>C>kehUxYC zumhGYTUK9RPY^_W@;P$k$i991dV70g?qJRXfk zBNPhL($cD`s%B`a`}_Cq-HRYdK|w)~pN58poSdA{~?#EXI}_WcBIKo+S}X3 zVsT4L3rUiFeSLqJD`aSBsIIQAwYBy8_wS93jcsjh0D#ay-@bjjaN)v+4I3m9$<)-; z?c2BQcKg}0XN5vxShvZ^$>+|U)9G|xuQ%vYSy|ci^t8oddHwn|j^hf20@};V%afCn zZ8qE8yLSWM>Pn^3YPCLp{@m$w=H}*>mX`Yc{ve;LSFdhvZg#m`moHzo*=%`vd4+|A z*REZgnwpBTE@S{^vpL8Tmi6n`8w>_`45z2d<%09hYPALprs@mXv}u#kXpHP%DwS$9 znjj-}qup+2v)O}#gOLNNR4M=fhG9Q`{FwKNq*AF?tM&W+8#iv$>2%OrV`C#plAk|+ z1^_r54mk4NyLSM9uV25~Y&JMup#8~{CjbDq+YLWC8yOjac7h-{98PGqLAc%Sl9Cbt zfL5!WH(Qb<0RU#RInWYiNAh?)c#x8k0s!#&e8a=T2?+@zktoUuwP1uoVOv{UeSLj? ze!g0*e*5-q*kO9TzNx9nVzCGWg6it(o}M0ZzTZM12x2f83GutcCxdx34(z0_qPD7*zc!GN=hC+eE9O^%c7zpi9|9xI~y7(Jw5&K z;lppy6gFa3R#s+a z=FH5@`1m-qQ;VEHAYidr6B84G?ER~daA0bxLj^@ zHHlf3moHx~m&?^^^`}ptrl+TkM&rGE_W%GH85x6vgL89pp|>n*vqSOt@#B*xPugs@ zU%!441mW}f;0p9_f!3^9qu1-5PN&gm#Bm%h9}&>&_3iELu(1FDD2hrXlA4;D(a}*H z#}6JnD3i%DGBQLW(blb7_wV2DcDwC%`-u}Ls5W1NdG-jzvRztRTi32#E0s!76z%Wt-?3u{0O07+qYoZD zNJ&Wv-L*#G;>C+d0Po+wr!H;ZzMaeE%4D*%w6x~t=8lez)YQ~@1F=}FojZ5lx^?T= zv15@#=j7y6S65S8QviV3Y)(y0UAJzXSS;rA`6iQzvU|N=kw_$$%auwcHQr=0<>uzf zWHKI)ci_MQ48xL=l7gZb42COLu58(|W#KiMhrl<$0yjGhOAd(DW{2Vb1|uX*V1%Rz zjF2>e5t1e_Led0ANSYAl=a3y89r4eD;SUKTWO;dc{PSS=LlBbre + + diff --git a/master/inherit_graph_255.md5 b/master/inherit_graph_255.md5 new file mode 100644 index 0000000000..4e3a2f40a2 --- /dev/null +++ b/master/inherit_graph_255.md5 @@ -0,0 +1 @@ +26fe78e01acb47100f286a7516ad7a15 \ No newline at end of file diff --git a/master/inherit_graph_255.png b/master/inherit_graph_255.png new file mode 100644 index 0000000000000000000000000000000000000000..7f6b804bd0c6845c1b978a297082f91b343c712e GIT binary patch literal 1211 zcmV;s1VsCZP)VvtJm;&rlvsvNt3PyO9@&Oc}MwQlogo*xt-$)WVA~ z^Cy2&N^OZDMMnN4e};ENlcZK#YK;6TW5)J^WDPOJ?0K<%x_{f^_uS8ZyPt>q^Xi;y z=f1A%e0RFexzCMrI2-`O=lG$Wz&8cc9UU;;(E-yP9RlDTwOZZV+ly8zUz^O#Op!?R z-u>5lHFcA>Xw+&o+!EkEXklT&SNVJwN=iyxELeR<2TXT#z;s6kU+Yex zP)0{beH`=;Qji$1)(z}5G0MF0QI8Ouw zcsS{Kk-uiW|0Zv5ZyOsMJRVOfmBQ^me*AF!Lve9&MMZ_P{rdXq;-S92zPh^FfdWjzXch z_>o8?adC0(ZI8g~%)r0^iA2KV@l+~xXJ-ch@Ij!%!^7t0=IH3?%F4>f$jH*tQUp^5 z0Py+zz`($wqN4ct_|DEwgTa8zj}wIJeQIh-B9UBOU6qxUaX1|3B|eA4+1c4ySy?$h zKPQvPo12?+b8}=ed3=1_;c#d)n%_zEos*Lju~&(oI!C>g>>LQUy$l@j@Cdy-n=GCR8&+!K>?r7KR!ObyStOi<;%;<0Dy>yi2eP2 z_u~Qh#eMai_4W0ZmX_1g)0dYQyWMWH+1}pXJ_wYQlq8i(FE20Ua=FQ5a@JA=jE#-i zY__GPCB0tX(a`}x5Hdebytx>sr>B#XlNk&K1VLJ@HYX=u_yzlSd2jmDz;s6kOm}p^bVmnFcXYsXM+Z!I zbntMyuTUs_pU2n6Y&H{#M7YI+?kpC|SNVJ+m`o@5HQ002ovPDHLkV1fYoTcQ8} literal 0 HcmV?d00001 diff --git a/master/inherit_graph_256.map b/master/inherit_graph_256.map new file mode 100644 index 0000000000..82ae0f0f93 --- /dev/null +++ b/master/inherit_graph_256.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_256.md5 b/master/inherit_graph_256.md5 new file mode 100644 index 0000000000..8f1125913e --- /dev/null +++ b/master/inherit_graph_256.md5 @@ -0,0 +1 @@ +8c4348a4cd7299149af7e3192e83629b \ No newline at end of file diff --git a/master/inherit_graph_256.png b/master/inherit_graph_256.png new file mode 100644 index 0000000000000000000000000000000000000000..4620d7fc4338dc84e0c54b52847ed7f9842b478b GIT binary patch literal 2130 zcmV-Y2(9;tP)Z|L)H0GX=Lps)=k3`wDcAt{tFB!z~}D3!{}%F2}* z%0Es~QPI||TP@k&o*0cr)6~@D^dV7zrluy1MuRP(;TttJHacrO6#oZ;AgdB;jUg$N zFeHT%hNL)Kn7FvO>({S4+3DZNU-QKLYl<$rFflPPH*eltRF@q)b`%yCS{1gnwH-Qi z$bLsyBTE>A{f?H2zvhYg*I0@$n>TMhbLLD^QWAr~*tl_HYilc7K07-rkw`ckj<>gW zUS8hZ++0>xR%d5tPEHO4L2+?$R(394yvXHp@oAf2Uu9RWT;Xsy?(Xi}wr%U`>H+`| zIKo%``0+y`k%WYVczJmVg~HL%QOmr_%F4EH-|p$@dGFpmp->1xkc*28hr_9;s6fw0 z@YcS5{knJWUKWex=jSI9iKeHgZCYFORW@Ug%jH%jHsSGjY&N^Sy?t(OuA-uX#bTLE zCbQX`mX^ln^ZWYxW@cuptE-!vo6Tl(baeEM8#gR{V`F1$YHHB*g$ox#LqqZD6@9f}x=ytyWuHTpSe@Wi%Sm zdHMVMzkK=9U@%x38w`f7t}ZT@d;9ino7NH%5>ir9#>dCiYIR~_VoFMipSg3Z`3%;n3M(KLF4jE#+<_nk_mvT95q%t8vTF|N7$;6kPsIam#L{K z?CqJFnu^w1Vpd`_EjT#XU@)lFYBW1AFn|_XSz7`Q zyJ~DUTPPIf=H|YC|6Z%r*3{HIeE1Lm5D*a1)6-*_6_!OU{uZ7*c~V+hIxsNs>(?)% z(Wuw!O(qkuBWx9$%}z^86N|+kKYrBdbgy5(PESvtpP#qtf|^~oZr$qDtJ~VzWHOme zYY2kG$Hx~G6iiG^Xf&E*$BqdEf`EVkdnQ7RBX8&W`ud27h~(sC1VK7GI};NV0RSgY zo_zG^5uHxQ@5%_Ms;Yu8^!D~zsuB_syu7>w0)e-;w@fB$XlU^8@E~?%RaIA47Zw&K z5C~W-*3qL!#bWWAHEXQ8z%YF2(xvR|YzBi-R8+KU*RF-E$>nkn50A*m$mrN z0a($|(Xn&qPG4VNH#fJ)$VjPFs@LlsHEibu`SCbj7?a8L^yyQvSS*!FvE^&muC?q1 zckkYP@Zdo-ZS#}Rep*^u;^X7juV4S_)vKwgsXKS>Xtmnr=H@?}gk2OD7auutM5$CR zi*@YY`47KidV70MojMg16a>R?X=&-u(9l9HvBD68jYU>fRlzXq=H|xd^E*2`&1SR7 zWP)KhKR@4QUo@=3WHMPS)`0^DzJ2?Kmh*VL^78V;#6(X|&kY+kJbwImA^Vw`nU)I` z8ykzCZ((7fzrR11%RPVo{NUiAJu|Wia7c97iqD@v%Ve^ss3;#FpS--h7cX9*rvL;j zK^U9S{=U9G0Dw}dwAq&+Adf$`u=6wlkHKJQX=&NNf4`@vC!f!+uCAV$nXzYTSe8W? zkw^pp5R1j%zkj#0%MygK8SQ`e>=^(+tybeZ5(nh*#};;;CJ-<=If({C%gV~^X^#aj zj04sfsZ?57S=rs)9TF0fpP#Q#D9p?7$51w-{Y)kk05Cp2j&DyKkjEceEcrCSXf(FA zwu(d|1VN^!r>|YRR#H;(Co@HHfG~c3e#eg=fAi+e^XJbQ3`SN~7J?w<<>i(`4o88H z_J@au!!TT5UypB09FVuuJ|H|z=p)}Qvd(} literal 0 HcmV?d00001 diff --git a/master/inherit_graph_257.map b/master/inherit_graph_257.map new file mode 100644 index 0000000000..9b4f387f1d --- /dev/null +++ b/master/inherit_graph_257.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_257.md5 b/master/inherit_graph_257.md5 new file mode 100644 index 0000000000..99b66e2ecc --- /dev/null +++ b/master/inherit_graph_257.md5 @@ -0,0 +1 @@ +9417493108e61a50c1fe5dcef6efec2a \ No newline at end of file diff --git a/master/inherit_graph_257.png b/master/inherit_graph_257.png new file mode 100644 index 0000000000000000000000000000000000000000..d327d460e87e153fa800df57e5ebf0685145f951 GIT binary patch literal 2559 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 + + diff --git a/master/inherit_graph_258.md5 b/master/inherit_graph_258.md5 new file mode 100644 index 0000000000..d4b6acccc5 --- /dev/null +++ b/master/inherit_graph_258.md5 @@ -0,0 +1 @@ +9ad02051d6ae0569ca31962f702d0372 \ No newline at end of file diff --git a/master/inherit_graph_258.png b/master/inherit_graph_258.png new file mode 100644 index 0000000000000000000000000000000000000000..c3e50f678dc6301bfddbec97dd452ae7f9178d76 GIT binary patch literal 2653 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 I7(9siFC>8-Qvd(} literal 0 HcmV?d00001 diff --git a/master/inherit_graph_259.map b/master/inherit_graph_259.map new file mode 100644 index 0000000000..ccfc7d2dec --- /dev/null +++ b/master/inherit_graph_259.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_259.md5 b/master/inherit_graph_259.md5 new file mode 100644 index 0000000000..f492e4bfc4 --- /dev/null +++ b/master/inherit_graph_259.md5 @@ -0,0 +1 @@ +1fc6cd520bef6fcb52877001c0eedf5a \ No newline at end of file diff --git a/master/inherit_graph_259.png b/master/inherit_graph_259.png new file mode 100644 index 0000000000000000000000000000000000000000..0b0bc3eafd9eb44dfafa546a025fe8b836bd341d GIT binary patch literal 2880 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 CrH*d^ literal 0 HcmV?d00001 diff --git a/master/inherit_graph_26.map b/master/inherit_graph_26.map new file mode 100644 index 0000000000..112fa10351 --- /dev/null +++ b/master/inherit_graph_26.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_26.md5 b/master/inherit_graph_26.md5 new file mode 100644 index 0000000000..58d18a3b19 --- /dev/null +++ b/master/inherit_graph_26.md5 @@ -0,0 +1 @@ +11e2b98d81cff31d7c8bd9bdeba60c77 \ No newline at end of file diff --git a/master/inherit_graph_26.png b/master/inherit_graph_26.png new file mode 100644 index 0000000000000000000000000000000000000000..3172d1fd739e47dd326313fb074ed929c0bd7ccc GIT binary patch literal 1883 zcmV-h2c-CkP)(5B2jH^t#|W(>fGGiTwh-w<&q%3GZ==Aj*j~FM6Vpw+uKW(9?0*{ zkt0X^df@#WgleGYAXEcA2ca71xjzx1P>n zxDP!&J$^j_5eNj0jg8sa+3VM@Pf1C6{P;1^Z@1fPYHCmvjgOD7s;XLATEcOB-@bh+ zm5O}gmoHyxYHD~q9-GaU$z*1;ndrZK`EpWHl3&~7@t`Pr{P^*J+GH{r002P{6h$vw zxZv@4ys1y0J}nlD84L!W&&M$A>eZ`UE|IflgVUiG@4*p z0t$A!-8>%e`t|Exk#%)-B9Vw_`>s#G?0tQGDJdz$fX2o~0Km-5436U%hOth6P z_`!7gCgpOuI-QPa&&|yN06u^IOtKX1?d>Rv(&==uSUf&H9@rv2$mMdmT<+WRlXb4U zySu5WX<=cZw6wIOqy)!t06JhlhtP7E5Ys zYEe;<$Kwf>dUA5oY&NgFnh*>O4B$AvyuAG2!Go@@E{#Ux-SzO{!?w1zg@py7P$-p3 z-@JJdu6Jtn}+`4t^(xpp_i;G8(9wo`L5*m$GQBk2%sff+*-@kWt zbpD=RuWnk0T$IztgNH8oXNSEp91KYsk! z($W%E!2jZFz|ia5wQJXi_NPyu00362b#`_Z0AMs4{RaEhxs?-%b8CKnp6GYG-7FSs zVqzj#_Tk}S0D#3}Syg9ydwX$lu{U*VYb((<7z_x45M>z0@ngr1)z{bK|2fM8DiH_- z7cX91HA^t&=jWrNqcIG_as1xBd-3t{U%!4Oc6rx_Bzt;#dS_>+-EL>I*`1x8MA^v7 z%JSAWlK262u3G1UiFy0>ErY=z`E*tiu{xKKkU%uz;^F`RE|<$}Hb+H8B_$<=JJDn^ z0RXsME`lHkf<#3{IUEkN*&HmwrcIlO8j*bohKu1SMNl6KvPWKx_l3gN^==FMo!5|We z4jeczG&Hodv@|+8Dv?OYrulQmOp$ z<42^FAPDmRWT~#M?&;}y@#2NSUD&4$!b7Ep*TU*=4jT`xV zK1uu#b;iZTc^~;deE6`cn1X_W!NI|?v9X+-oQ#YNr_&ko0{>0KJjdhl^7He{%gZMx zC+&8-N~IbY7zlCV!Gj0O%F3purkqaa)2C01ii*B{`vw4LYHHfCV+S$J+eQ%N#*G`D zot^dd^+u!7>2$t&_3GTYb6Ty|<#KsE9yXi3ZrwTz!<0&8xQ7r-i7zBs0tzO`&CTU- zIEN1(7KubVckT=;yI3rCI2?EG+#w2^L?UTvY4H}hVDUp-jorI<-@bi&adB~WcJ}Pq zv*coQI$c9U!}Rnt@$5pR2y2l+WZ#vj)#|jgwA|d>?c2AHkB?_(XNNekySqCzH8n3U zFCih}(P)*Gl_ryk@hJhVzD?jHa0CS4FDjON*xY|pXXM_4^d}x zbF + + diff --git a/master/inherit_graph_260.md5 b/master/inherit_graph_260.md5 new file mode 100644 index 0000000000..62d5de9de4 --- /dev/null +++ b/master/inherit_graph_260.md5 @@ -0,0 +1 @@ +398cb2728b2b16c6f1eb30882ac29f2b \ No newline at end of file diff --git a/master/inherit_graph_260.png b/master/inherit_graph_260.png new file mode 100644 index 0000000000000000000000000000000000000000..4bf67ef19b07834edab77320b6c43fd764af0ab3 GIT binary patch literal 3559 zcmYk92T)UA8pWSdq=cS7f^HB2d+HV*${D3{l?1y0P zpa^3s`!=(zKqh-SH6?bYG%fkIVrh^&4EDYwNs2wqX(g33dl`xd$iQ76LoZd(G zk4n$dtKzb3P75M54d+n%s;KCaZVI=IjuXE6WYqjFy-0Y%fTXDQC)XaD zrIi(q$|%*slyBe6Uhf-Aiq)GDp^Kk(R-|;UqSVv?8d_SO^5hW0MD#tj8>tR$2s#L^ zV`OAA_2(p|v9a;e(vomSTT6@gjfLJ`9RVRBg7od=yPx@R5;e88(bd(r1_uWl?rZW) z?mln{9wpE^J3B8eFArw?Szhj%oScL+sf3}m_!%{LGxT?sa|1Mlp$o_RgkE}sExa}{ zQk942(IMYNl_PCLM1+`K164>!NZld>k7^8D;Brde)7P)BBi4UJ&(GiM?(Ux3{WAoI z!vUOxO|5I};DNN1)b>o!mvR&xK$xtKw-D*6{&YqIuwA>R5f-KZ&MO)(P~!!M&jrfQ z?I7im+q~lnSX~{RntM1(tn(*s91aH#egZC)H5B{wDH-|YOWm%uvnzKWgpK|BMHj6G zfK{~po8@nR zKYHEpA4bNGie%l^Od;cfZlS`+C!L+@;Ffr+$k}N^-@bjzE0Q3yyE}9%?Yi!>ey87` zq6z_CW=ssa$My1KaJ{$6lfQo#LZQ(93<^rh7wzrJ6Quaq*i<4h_}lcf0jrpe8mM;N zNEAxX&re(->P)$|vGF_dtk$g$9vs{-gFM)n){zn1MI%-WgcQN=mA) zZ)^;Fe`ih27Zcd(uzR#pD7rttzAh#wXc$x~f2Fdrk{npw*vR-^U0p2%z@wt>@Wn97 z$;mz3S4)5FEessr?&iHVEr85$;AxmkyZ%k;>|FkE5aPFM0OZM|n;VFAS? zB$$azPUp`K4CoyM`1tq$9eBL3|L>1<($dn%hzP!5nH_?ZNlF%J1@LdJut%Vl^x9spWeTL)xOo}Qk_!)?BcKLcuNYB~-N zTg(dG+}vs!8Y~h*6IO#t!4`@JAH@OXx144;({VmYM4?bWRWGu`&VmY z*&8$XC!KP21qB7!+1YCL_PJ|-{4pKhjT;mh85u}IWpjr_(zl)2StsAAI*OCOTe_j4 za)LrasTmouQRgJB?%ped5_|u?FvbC+v4T)p}ORB3oI6$;2PE1TZEY5byGMpI;J6>fm>P4$%*^^{rdn=RaMmzzF+YI zUyAd*uB06pC_%*sH!v^{iwq8irlqCX)VN#%cWm^>4>T4lRuaCvyeup#ihFUxpvLp_ zHRAq$Ck{sj@<4H6adC8JCMh+Q>GWVa0G*W7edqj?41nwFYv}1wSG;>CsjQqdGGeqo z)5?-~^_Gr{3ojuo_gQnZoK=+rCUiFJ3W-GW4hZP`h&owX+dhf}RSdR0qiZc&#NW*f zE;p8DetLR(ur^$gX1s)~Y;Ogf<)oRpL+?Uuq=&7YT|$XL7QdJn#L3C2CGtpW0&7bK z{HXV0xbNe0&(E*&V44H9u)2ydzC(iAH~B_?_@IK=noUmTkgLEB%?Ccu%8GCFndBD` zAP0%l)6=uPv!jkg%ID?fJ%9N!;qVYSoGZrw)P(JMf~a;mKO+Sq5ElNHIicEwG@nHr9nac&cdvtwf{5ZvQ0EA2$p9romj@i--DXk-rd!3aNvA&P73|d z{pOia&x8_(L^fVXNNDF*=x;t%RqmXe9R0pZEOx12&F^OewVs|{-Q-JdtIvp1?v*>p zZJ@ESF)$=V+r)&iqM{;+>*YlI$z~f|PjB@2^PSw$HvIYNo^kv6*~#3)R=AN-Ty8Fh zY``pbQnjwWzH@QM#m6UcZqCJ_^`SPx_jq?1B);X*O(~C%?^%X6T$!1fHVxiP^gODN zA`|rZxW&}6`Siz-+WnF7coF+*ehdbaEf>Ho>pz2DDU9Ogi8`%)LE%c{SCGfS@&Wy^ zx%p}#>VW<9^pugA`2w$biXk)`8yoV$ct)ghf$IB9z->9X>*C^cB_$;-pFIAQ zM*chm>0G%U5)q*U;yGi=_8(I(1DKeYfHHSVaA+ut#t&N$YQ8r`MfY@kc7waRy3lX| zGm!v)e?g!hYyz8o6%^-1HF>WGCx+tA&K@x{F{uO3K@+I_66L@)ZkLyngL$o+Qe0k6 z?Et%~6uQ|BPJ`^KNTu{?f|foTv86&zPR=VS$rN?E6W<%OwzgIiy5;215_ky)g8>kq z3`=b0g&_lv0q!Lp~joBU#^-?S_;ENuRabaDt<)%R;Bp3>oA@_*LX zlN{R+_a>_xTON@VFFcing^ZS#w!62NUqOK#r0Fr924G}jibkWUK&xCBFE^*6rd9{x z>Fev8z9uUp!v}-WTUuIzy_uR}Z0m7ye7rqwZoDck8^_K5!uzL$Fp*E2AN{&o}Pl6Gp$cSw+u!g zii?Xi0ydo6kxV?1+n4O@?Il%JpJ6c6IgU0=wKfotqBAoNScg`#&1@LLUajr()Zw8# zsDN0Nh=W%xEo@U$Q!Z>egbP8gDXMB4<;h2nj+$CnSrwO*Q1GCLsdk;Y<2qIzI8J&E zO-)k^i#OH``xTb&=H})eZ*K?6D=PAX+VL96Gd%*zD=KIl9Ual2CmwAigUi+0Bt3u5 zm@LVygn)pl=;~@vjrNC&$LFXB}dS*+s%x*`}9$*3VY1)jtZ8 z=0K(o`veu8w^Du>`%gk<6^7lqeS_`uz(8l6$I#Nq79Rf?gv+KI(@M7>~YCev*Jp5IsARRsCbeo6&~|vC=1uy zOL_C=O+0~s`_&dYkH@3wIAr^o1(-BUEG%L`t1FQm9v-goost5HTm1h0OUqAwetw5w za(Qri_&{Dkp>ukggPol{oNL-4KEX*BtkDn-SF^Qc@9pi~CjI^G28K>p{ncFZx;5mu zdlgh9{OR^jpX$!RK^iaw3X6$p-MyQ%p4=%LjaB?15LDtFmoN(i%5#Fz&)v&wai%rs zp#et|wfpx@!5mR-X$vAHKOf(vJ0v0tn6NT$Im1LJ1;MGF`pf#G5W_kBocgciRnWon z{~cDICj9?7LtWcgQsFKBreOR}XCsx(^RJm2lH{hQrurWG#_l(msUIEv$?9W;#=61_ zPzSapw_*ClWhTpt!G`~xcIDzABylAW(Q5}C + + diff --git a/master/inherit_graph_261.md5 b/master/inherit_graph_261.md5 new file mode 100644 index 0000000000..691f2cff0f --- /dev/null +++ b/master/inherit_graph_261.md5 @@ -0,0 +1 @@ +03fd71a37fd7c5c38fed8ceded15a454 \ No newline at end of file diff --git a/master/inherit_graph_261.png b/master/inherit_graph_261.png new file mode 100644 index 0000000000000000000000000000000000000000..e4423c345d10e575f78f690674d060175d495323 GIT binary patch literal 2524 zcmZ9Oc|4TcAIBf=l$o)OZ7f6NYI4VtEyiBRlI4mKWgC*UP{}qVj3sLbqf8@|WNQ#2 zlrdSx5*oRdvixj=axo-#_&vYB?(6kC&+DA?&pGG&d7kt6zQ4}{dpiq$xD*@!0Ddb= zGY4>f4R$RkH#k1uIn@JB$GxpB%z&f+JtgfGc>n;*u`)Z4i!9zC2iSq1%sF0~x~U0ZRl_=Aj%y4=WTA7!-8Iz161*htQtu&G|iOyn5t2YXIR*ZK#l!|DLmh!ZFr=>=qRP2WRav=_^)NLR%128T54N`EP4=p-tsN^artg5;UuC9&;$jHhgkB%5v^C@9ivKNg;i{2-t1)NYVO!p!s zCMI@v#@X3r?cPaHa<2V(aFEyMqy1!NV&WzH=oh=nYc<0g;1J z_Gk;|2SR^*HPn8xv9@L%mipj1Er;hsYETUlR+0AY9UewZmJKmzZZL%!+h=>Y(T!}%m|rY=67OS-2L z7ieqC-$*NbV`^&J9b-c$?n{hs3>0Z57kPHXL=8VR#AclTIEZ5`SPV& zUV{@`M-Tut68($j`Q}zvVLFxy!T>%d=3QIc)X0dsoE$!oD^oy7QnH9ddWplZS*MWc zj{zoolWxvRG+eE?2KUHk0Q9 zz?&2o7ne1R4r8;J-0`yuJ=xvc38=|YNdao?!R|Mt#hKnPX51t)UrWli<}z)~#t%rT z6wJxZb@1?bT3lSc*FV$KWAWU9y}R4xj#dBp^QZEadb3L0y`w{!$qVv1y9nV2JC3jTiPJf9+RI&pEperxL|G`O(5_s?*MkQ%!I65ZAt!$*_?OR=a{Vz=B;^N|Yg01afU*2hbJw5d4)6BrLVVbi2 z55FzhbmKTR*Y#xe)6>!t5)!b|0%W@oe}AZ;AP*p|AHKf7y{sVIxB17yk-dY%Jd4%u zqXGJ$633cpi+Hm;GBR@iKA>8N5*M#v4-XFJGZt|ea4@&9a1|Tl(~{cwXMdYYrHaBA zL849eqI818A|kRgGK!7k?s<58rKJc~YzotJiyuhTbTSbknMhTPP#izL6`7yfDfTZP z2hL zc{TpfI2@BYK0aPut!!-E$vN0_to%$ONjN@rcXto^QhQxZ0(5?vy`rzTxtUpHWaM;P z#GgTZ!^3_cpwVME-Y2P*zB?-`{-8@K6iQp0ejy{t7HtUO{!pxYr?jlBP}Ti0nQR+V z5gdW=yg2a>{gDlt!C>&hU{_w_&pSAbPBn*|mCF3XPavfsYTNhBnYxS&KFwgW`i6$Y zgoN4M?rvgA3J+DJ%AryUg_7j^2uggGH1XstlQ2!aX5r&gZmA$8DcRTC3x&ZhRWZ#i zoGWomCez?V$k%sKAiIy2DRFoRikr{F=C49Ikf>ZhjL{Lu=gzxJp;%G)b#NKQD7Ieh zo~I`zFVE54T_$Tm@Pt8VM1(UYKiX&#sT~|IH*4=UX zg{ut2B&&%MV`nsO-?;BmU^Ualt2&f>uRi_g14PRhv0h`}#JL^NOWdvldDPf!2( zGg6OigvCZKeB`HfkT*`gqAh6>3&3`*C+kurPAU^E3V-vh1~C_k-9&LevtL*E4Mk;p(5aaFfXur`K=`%+z2S69vbQiq1@z|u57FAT;u-X&U_B$?zC z6){N_k0gpmQ}Q=qhzZZXxr)$}h+3a+C+w{+$G;W{^M%UFQrz3Z|H6oMuQvpJQEm5h?hf7g iA%uW@lKQ{RhsRDgqSS6sH6h^d8enz7&aBo1pYUI9)VrYo literal 0 HcmV?d00001 diff --git a/master/inherit_graph_262.map b/master/inherit_graph_262.map new file mode 100644 index 0000000000..752629680f --- /dev/null +++ b/master/inherit_graph_262.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_262.md5 b/master/inherit_graph_262.md5 new file mode 100644 index 0000000000..86cad6436d --- /dev/null +++ b/master/inherit_graph_262.md5 @@ -0,0 +1 @@ +10f8e072a44b52440c38cc7e2f3cce5e \ No newline at end of file diff --git a/master/inherit_graph_262.png b/master/inherit_graph_262.png new file mode 100644 index 0000000000000000000000000000000000000000..488d998fe95abb2c254f810d556ebb26723a6987 GIT binary patch literal 2067 zcmV+u2<-QXP)nyB|CvA}|b7ZnfAEFwCEVB?H6gv1DKvJ(dg%qh~X{psubC z`T6;a5evgCnDX-S8D%rx8B{729z1xkAOSJVLhI}6GkJc`cxRYmEOQvWrtn8mQ@$*^hDCKMGFEp`}x zgk8IKfyd*`Se`$BZdUvGm`h9b`ThHMqx&|s*w~nSu(@CsJsB873WWkhWUz#WhAwtk zbJFQ_sH&=hOeRBaZtjeFJ3BjreTs{VLsC)_x2@4=jP{$Jo{nS3j-jruZoYTHGRffQ z=ZCXr&mtrw1Wry)ShHpgDl03w`q9x*C=?2Kd3j;kvSmn4PR7K<1QHSw(9qBTxm*q& zkB5MO0Hgh1ym%3-SFbj??dRu*tgI{q1qFf6=i~nU`xqY|heDx%NF;)@voj(iBhk~- zW6&loEe+eYZG)quBi5~3hx+<@9{tZK7GR8y?Y@L2p|*+ zA(cv@R;vL3*REZIL?SVWyQ`}U*4EbO?(PPFIb)j5z`y{6LLo{^OS!V7q$C6f2ScmX znw(2>=E2mlGw1lUw6q{IGZP|_2nP=ygqxci;^X7Z+9z`)CMLqx))uj`vGDQn!TIy& z(b?H)vHlIvG-YLFWTbdjzP`TX;o(8`_4PC{F+n*wIV2DWNT<^g5m9t>GzA6*QcFt< z4G#}fK|ujMe*Bn-i2VKi>CT-y2K{Z>vV{r@3%TtJ7cP*ux3|e{UteExadDwnuU?Tx zqah-qn3xy}4-co#&Q2N`8KLy_bdpFUq}6Jh0~N;NW12h=?E}BDGpgwzjs^*x1Ou{@l59 z6cQ4`ZO;``SXdY-6bh5`{Os8?;`8~`+S*FR#l<8P3Tbd~kgGQ~m*&jFY{$-6pC3Pd zq|28tlSCq+<;#~-a&j`geEE`VV~)7EI7&)NGW+!!jfS2+eMBGc%Kjh&nnt2mp0;b#e7? z-@YXPG%zqgL`3oN@sygHN<>6DosL8z5tWvfnjKSESQr7Au?!6jac#1*v&qNDhxmLx zRaI3P%)|7#G*fv2Y@S3h;Brc$W@0CKq;ckkZC z&!0c>;>8Pm{rVNLv9Z4tld*e-6)RS7^+%2zK~GN)BoYZiLPBPp6LZHjb?i*Z&CNxA zem}rKQ2$-5n_@DG-arXliOgZEY=* zlat}>>};{I<~B(~0OND{Z|A|><6~uIh0xGY z6c-oc^y$-P^=*#4ygXdLejQu4ZnapSrtoOmh2GRxT<7!pk6{+eEax}-cMOJ^!jgeu z^jI=5j2=q{hS6imz%Y6&85l;7B?H6gnfyhCQmI_XI2dL@%=WtolgVJ}zhxNa|J967 xpc&>rihTmjFjH7EFpM5c28PjN$-ppre*vZ(Y4QGy8pHqq002ovPDHLkV1kn&=6nDE literal 0 HcmV?d00001 diff --git a/master/inherit_graph_263.map b/master/inherit_graph_263.map new file mode 100644 index 0000000000..b7adc5b4f6 --- /dev/null +++ b/master/inherit_graph_263.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_263.md5 b/master/inherit_graph_263.md5 new file mode 100644 index 0000000000..baa15dfd96 --- /dev/null +++ b/master/inherit_graph_263.md5 @@ -0,0 +1 @@ +e27bda51f7ee25b444926ca2b55fd6f2 \ No newline at end of file diff --git a/master/inherit_graph_263.png b/master/inherit_graph_263.png new file mode 100644 index 0000000000000000000000000000000000000000..5cec6dfaebd496b99ee28dfd193d1c86595b8ca1 GIT binary patch literal 2012 zcmV<22P622P)rKL0C>kYYiMMs-@pyOc-0^bIB?vxWv5CiZ-MV#aMMZ_Dqj-VcyLThM)6~@D zr2GOqzQF4EeEko|<#N=9q@<+9ZqXlcMOQADd+yx1#Kgp)prEyD*ETjbLi_aev|KJ{ zv)LXJ&O2!ilW{qQ-%jKRqb0#4nfkL4?eE4u? zW=1ZTGnvfb;9!wRG&(wJEta339~T!#CX?5%U*Fl;Sz1~e78bUA`SQbu4_ho2SZs1~ za^JpvR4SE5qh)1f>GgU5Kv`K?bab?}CBwtRL?UryWCQ^4r*L!f;ll?SjaF4v1+&@N z*?d0VY&JV~+(|DS2h;hu%?sNLu%@QQ&N3%aQBe#AqqDPfc6L^wP*ABOP3-dA{^6EQBffwA+KJ& zGMP*$il(Nf3WY+AMl&@vRZvh69UW~pn_)2)i}mKsn{VH~Nu^Q>g>vZ7p)X&)^!N9N zgoM=A)BXFbX;4C+RN+qjF$YOz?DOlDP8mGf`{fxvD`eEReW7Ar0; zj*N_?P$S|0D#r2SHlE}L|V3NSzutGHET2)0RTFk&d<+}#bQA_ zyw$@|mP(}$9z6K<>(`4HFAN4lT3Xt_hO?Wmt5&Uo_9I7*jE;^*M@J_nCeGO%=WZPb zbAh7==G-544Hk=KHk*frhOCcC2!Y_rrGp>{OfZ>D0)a3&Ik|G>N*DZuhliU?CaqQr zFOvR+dO4YHx49ckiA|CWCg{j=SL2 zwQ>8W`a&w(!eB5&B9Tlcd;k9Z)YMdYd3k+(JpdpyG_F@9V{{8#w*RNAkQ-A*aInP#cIGp(S_}tvwiHQlFPM4RLClm@pLqh=o1Onl}fde;g z+<5ZjiB$|2!YLFAold7xsj921Pn$Vd~oM`PE}RarcIj!0s)7^ z>FVm@^Z5XP!otFahK7KE02kMF0H{=|b?ep%g+eNodi?ltiA3V>??3$dN&6%`dNEiG5BT&b(83k(cQNJuCw zEKE;NpPij`?D&7}#RA6-L2b?>*4EbU-MbgXPbm5t@H?ID2UdJv0-NBvViR0fY=Y~G zO_rRlEEWqv5H6Psvq?!w2!fEwQw?h4@@+_vxU z1x}wnU0GQvkw{*?eCg4Z4v|O{2m}Iw;PdCtGMOwVCr7K*DijLOMRYs9G+#?fN|Z{a zTCHX>nMaQvZEI`u(3Yp!Y;J69%*x8*a5#Fs{^re_r%s*nL?F-MOS;l%w38=Kc6WET zwzdWZ1!ZPtayXo`XU|$cWG;QY_&=;*LJX8hZH4G#|&i^bk;5{?_-@pyJ` u;Rt>T9FySBS8RgoicN4`u?em#Hu(!;&OPV<+zUkj0000 + + diff --git a/master/inherit_graph_264.md5 b/master/inherit_graph_264.md5 new file mode 100644 index 0000000000..2f39b86ac8 --- /dev/null +++ b/master/inherit_graph_264.md5 @@ -0,0 +1 @@ +e9f907449f930ce211f3724f219f344b \ No newline at end of file diff --git a/master/inherit_graph_264.png b/master/inherit_graph_264.png new file mode 100644 index 0000000000000000000000000000000000000000..0fef71bf39c2e3fdfafc0c31db8372e9d1592316 GIT binary patch literal 2137 zcmV-f2&VUmP)mI-D;*k$3=!auB4+A#6b<&Ol*G!YDy62;QM%e+jJj7-gCh1>J}B$6VUl+FDy%wJlcqPBk?(mdXcbWr&H1(Xrt7 zS8RgoicN4`v5BR1_4D()d-tw|gZ_iy>lK@@N$&+fe8oEtRP98aO zghHWEsnq!R_^GKW06=kZvA4IkCX=C|AtI4DJUk2lSS*}DK7Ra2rBchw%V9MkA%Vl; zs8lNbfg2fx{$v`Tw`HMy0ajI2=~xWHVzFp6T6=rDQmM?#%cD>zYPA|g(a6ZifPjFW zo}RB?zuvxm``NQ+D2n>{_>`8GYTEAGw@)gS!t%9i*E~Et^vf(3%gM><_3PIQ3kxWU zMny&Ocs#jWJ~K0uk&)r;?X6O&pc{k1c>DJ4w{PEsLLr$5Q?+*_TA0Hnd9UbLxIN{;pD2h%^O<7x8cXoC{pG%i6g@lB_@?zn*T&~V~g}i+E zl1wJ|_Vzw_@PJCCPE1TdyUxIkjKbh#>NGbFpU>y>`Pvo}b(KgYunaH%v9U3D0rvOz z>o^@TkH8mj!GB-B|t4EI>&C1F` zQFL%{5H3e(fA{VkTx2MU#>U2`q@~wseE$3yy5;8PdU<(~ z$>heyMuP)4J_`NG)Soxw=<90Y{gpzYz=Dm94FF(%etvj(m`EggczBrBp$;?}4Hkxm zh5!IAE-vseR@{h_|_3k&*97JF{e={7PlQXmlY z_4R%K{{79HH&IbhKY#vQW>!olGbku1IXQV^VnU%%q@<+qcsyrkX8-_!Ksa{n*sWW) zo;-P?5yOOVd3kvXg+eBiRa8`*J$v^3`}feUJ#Z7cH8O9@VI|*l%FD}l?b^lVa+yqK zM@I*T!vO$fW@gsa)!EqCnD|@=fJ`Rawrv}a$D>dvXU?1v2n5#F*2`~RRaIqYXSaLz zZXX{X7Z(?qOs4rKp-|Y|-0be|zIX55<%GL=^QQLuYgt)YQ&UrZetu0&jjgS1aBy&D zW@b!Gj8du8ANZe+!pwO?P_6Tb)z#I94jn@A6N>8%xKF3O!HR#Ez$Un^*aX)Vo8Y=) z6YT5CU@#B_VYAuGaSja)MG(Z!&Th4{T5YhP>yIBl5JOm5{qL(wU0q#QR~Ib9?Y0*$ zUTB*8`ugVQ=fiSCLxax2zIDoa(p9ZiH#Rm31Ol;GtZgTeNSbeZ2M-=hNJxO?#a`+i z9Uae~Kd(}$mW-H@k#YL;>Gi1e`p~tfrza~bi%zE>KYrZB#U(a2)|}o10>SL;Y-wrf zlAa=w$lBUEIy&0R%j@#x%W}EgoVb=`P3!vU)2E`MqCI=|1O)|6Pfu4=RLJG>D_5?# zyStmyEr~?Bdi82fPR`uioN><`J9ZQn7LJXL6&Du|3=FW@?7+alJ9q9(PfweZfCX67 zx?Z?&AuTP9#bS+&jFgm=1O^6b_5;l1@ZrNW8tul78_RJf5{X2&YfG4G**u_tt*vEO-oDb?CflAZnn3#kBf_AGMN`IUexSdnnOT9Kv-ByZOxan<>d-v|m&(A-8{J6irKQ}j*$z-lbTnn&b`|1{eKp=#MhOXc#Ku=H4 zq@<*xqN2qdBofI=#j-H#N!R7D + + diff --git a/master/inherit_graph_265.md5 b/master/inherit_graph_265.md5 new file mode 100644 index 0000000000..24cba005b1 --- /dev/null +++ b/master/inherit_graph_265.md5 @@ -0,0 +1 @@ +0da7864d9a044db2ed6adfa8ad8b9fc4 \ No newline at end of file diff --git a/master/inherit_graph_265.png b/master/inherit_graph_265.png new file mode 100644 index 0000000000000000000000000000000000000000..6c3976a023704413fa7e7dd502e96939b1005ab3 GIT binary patch literal 2254 zcmYjTc|6o>7avTwA!!n0&DgtHhin;pb8X=jgRxAEkbNmr$~t5uV@qg0lCqOTOhQN# zvhNhezK*5rkumqzeLwH#z32Hn%U{nq&-s4O_dM~I7DlHz1UWz;&}kE6loha3fT;pu z1=cIHjTm72!}Y2W3dH<9UNjV?fk2QL6O=wWK8295NBL3@60 ze~)}C2QDvf>%L&qjJkzW8t5U!OF5Z>2Ohd8eQTu*kFf+)G!(OARQ%L!@swG%;$SYW zu<#OooWTgftu5`mEBqF*8g{I?zj?X$Ue9J|ulD}r?UND^Ru+&@)UQEykeT3%Ga#5A z93&T|1HxdIMXGCRGM_v-DnWw^qner`Ei97ue&}w;IVnVL&9}cR0wZ`eH8sb^$MN#8 zLyKg%?qqowsPHc{vo66?m`G3s=n&+>vcvMxwSISIX~_=86+(zNQy$lq6gm$vpnSC}(vyh8=9Rr(GyP)ANjyVKCU+w{Q75iHV7)liP&g@X@-3`FSuH zZ22e8-MjleJrtPN+n3NnzzL%vKcHMh2V@l`gxX8<`~;Hm!6((V{7{f5w_65OZr0GAN`0^ z&*vjXFZX@@`o8t8f*h=~y}hKW>UL02Wkp4bVV;+YAXr~qTs#SYWNM1JK3)U3;#0gX z3YndovvzcR^?G%6)zQW#HY0#mw?L~MQqTU$FZ z;S>-MKygT{yNpCOh3;?s+W*cFVMn=!GzkwduEa={8((F&XOKNu3M1+ikP6u3laxv9YmenU->K?)ZU$ zf$H$K<%a}@YS>qGj%f4X-&S4TVjTXk#kHFBJSi!~8>Aew3n1 z)|I6*u?A;FL?Rf6c!~pKP{yHx#<})}K=pSqC04la*Yx!CcvJ4XxuNPwdd)MWR8dZ< zC!yJ8I#46lpz>y~h{UXhre-O+G(Mhv2aeFvA_i+&o2?CQ=rC z{rq0NdWFSeeZ0M`tgTOXLC3q7kIRv3S;8vVcWcKj?d|bxbL_F7nwy&eHk6i@W@Nx1 z(Za&Q_d`Pg@FUU_M~Zwt8KO{{<~F^0HAg#CnujB@&;*o_NM ziz)21otzpO9zL%b{IGLDncTIpvGL-CC?tAoYYWf{6UoQNj0A$QlP&%H5-UB44_x;PgH!V>gHP zy1abr;Ano{E!H6Q`SZ!XzKUy(K%Q4tR(u-S5f{2l;S2`j;NXDs4~ff{$reT12Vrxw z#pu%EVH>q9bMaII1B0#YZS^f4j#x0On2ZelBY{obeJy2)v?(S47)mIHE zDmp#c5L#7L)vD^}4P2*yt$UK4-R)Z0+SVp3Bg4wdTK%S;B%!F7Y+CTB#g!{=u)m*0 zKgF~FsAx7ew$;PA%@Bo5*;HdUWq~@ArJihLmdVFpL>!|Xa4!eDDxQkq=hVr8!{L!@ zUzPHt013xhS&65clFg*aW;)@A!C35hg5HaMPXPB-+iS0e{rvoPcXzwHy8&Q%d3h@< zE3=kU*l}Ek6;)N8Kw0$kY^<(^{+QNxa+*jwj|3DCcn<}s%X#zOJ^R*D!1H=1gS61wuoV1jb zuG!c~Wp?(j2R3nJTb$wK1hNj-3A2<*2M*0Hq{Kvf2M0QGbZAIUUS1oB-P3bBiFxG2pXzZ`tu%#1{#;4zq|2um zL;*S#S`pdmy1zkN_{ZuDgQ>GqM0>0=$dRk>B + + diff --git a/master/inherit_graph_266.md5 b/master/inherit_graph_266.md5 new file mode 100644 index 0000000000..7ed48bf737 --- /dev/null +++ b/master/inherit_graph_266.md5 @@ -0,0 +1 @@ +5dbbcea965ce984de791614e8230a6fb \ No newline at end of file diff --git a/master/inherit_graph_266.png b/master/inherit_graph_266.png new file mode 100644 index 0000000000000000000000000000000000000000..d0a63a50f96c48d83311393493bcd35eec7b44d4 GIT binary patch literal 2225 zcmV;i2u}BjP)%gV~qWq(^g6bi-T$B#EXB*=E5y}iAytxexTHg*;s>+0%Ot@7c+2Ol4w zohuFi_aAE_BO?Pv(ed%|#Kgqd*w{~>KH>XMPft@Ql+B6l4`GTv_u@)uXU@EosH8x9?#a+_U+rZYPA|g(eUu_;NW1nTs}QLot>TS<>jT(XfQVp zhx6{;yB|M(h{a+CgOQk+I59CHlgVstZ5tXIu-1+pI~EcWGB!3gIyxE{7#I=~f}-f; zFFqnYPDK6n_XL5i{G74DAawZ%+1Z4o10gSP+uST10gtGg42%E2tLO8FmeCEWHPY? zjYb0iEG#Sx4-b<_Bxh%5(;76u(a{l03=Itd09Y&*wl^e^NHa4t*cSl+z{bV~OHip) zI-S02*DhUlVPOFPpin5tWHN`t!R**q7&d)kvAC|TZgFw()vH%iQ&SNU5vz8Gtsg3t z>eQ)I*RNmKXf&%<(Sh$qaJ&SkonS~r*s$kY4u_-BXa)xdb=wFGGc!{ph#&}-V6)j~ zW@ajtYR{fMCbZ+=;GkBkM@L7oKfu7i0A>ULoH%iUN~Jb8H#asmMn^|uGft#C8ylO- z%1UQv=c=lzq@*N*5#qaFMc;ii+muW&nVl zon3c#w_2?>uCmhp)S%h0u(0^}c$rK#KR@5u*%=-l{_EE-f>Cj~+<<_9)YR0kU%x68 ziuCmK;NW08J39b?nVDH^Y-~wM$U(-WleSN)!g@vc5r?gsCZ zRW{a5$FkGD&PmgOpnCV$8yXs-qM}fEqy1k6JKxv8-~r!{LGXb3fZzf30l@?61A+(C z2LzA5Ssy=t{zR68OkU=#U`tDjo0}Vh!3YZrGd|72Fa3-88}y;oYFk@dj&S<)>GS8$V`<};bxTW2B9SN|Awi{5rKF@hc<_LDsXp1+*(oV020szl(d=w} z^!E1V=H{~5?1Y2_7K@pvO6 zBV}b}{{H^D^DWcJ$;n|b7)3=z0)e2ty&V9cR;#I0>gUg&S1mP$L?Q`=La9_Lm&>s` zJGXD&UQc*i$d0_9Tv%Ah>FVl=U%G6A8jYs4wY9FUuCcMv)6=u8tSl-jY8}JfQuHr_5WF9>edy`w z$;ruKu~-}qCoeBgcMr%I{r#x{N~ID2(9_d{Wna8_VQFc}<#KCkYE~^ZptrX-Gc(iH z*4D+v<=VAtgM)+X9N;FiVfTZ!3GVLhg@uKqqoWlS6$*s{)Aw3ou~-2C0TPMi{+j!ag)(;d# zCnhFRQc~>g?aj^2Jv= + + diff --git a/master/inherit_graph_267.md5 b/master/inherit_graph_267.md5 new file mode 100644 index 0000000000..32065e9cb7 --- /dev/null +++ b/master/inherit_graph_267.md5 @@ -0,0 +1 @@ +09b94d44c54d5f4452bab5bebcc803ec \ No newline at end of file diff --git a/master/inherit_graph_267.png b/master/inherit_graph_267.png new file mode 100644 index 0000000000000000000000000000000000000000..55c90d7f9b08f3c13bbdb1fb0b6fa6d2feb4551a GIT binary patch literal 2119 zcmV-N2)Or&P)5)wA>jm%>M-|Hij_}R%{GoAgtIJ#z0Jdo>5m< zhy48f<;aC${unoJ-kddW)|pMAP~g_BTLwvpVg5Az{r&US&#W`s4|7!}!!Qf0uCB&` z0|(|@#_rh|#z0uHF^qw*Vq+Ks`BxU3udgpkN=lYHjsK+Y-@ij5kw732z|GBVxzk~$ znRkGM`ER;+?;aW&8qnY04{K}dC;Duwlcz)1IE5$j;8jo;`aY5D0MN#tn>( zjX^G#LnIQx#>NIAAtC7P?VZu)*s){SxpOBhEiJKS%NEqv*CQ`459`*ggSE9al9H03 z(P;QKgM))Oc<>;ELLuzz>>!aypj0XW0ELBx@bdDSk#~1@H;j#q(bLld0Kd#>ItvR6 zq@<*P<2bamwD9v6iV+eLg2KW=6crVL<2al=c~YzG>e_$09P`EYLt9%Lva+%u5{ZzI zkN`(VM?^(M&AF~F;^N|9YHEszhzM-lxDn^hokLewm)_#fKtHLfs-ih&FUZ5ggPfe4 zsJ_0Q#>dAgCntx5LLq518X_VJ3kxGZKR;?~Yono|Au1{=qWkyn6A_WOw>OoQmCcCf zH1)X~u~XIpKGO`GlK(oJ3Dg4~&hC;p*zD zuT9O#$;pX--`(8}0C044*GI|Z{NP%Y8r;2m7tztt{D*L{IoaCU zqNJn*uCA^qEiFY-Qj$*lrEMF1_TNIsT$|W-c6LZlPe*!sI$B#>aqZeQL`O$s#flY( ziHSi%Lc)wMz2EWr^=p)rl;HaH>#(%6#Gyln(A3lfu~@8^_|q- z%+1Z`9gWmQd3iZDZ{Cccpdbi^LZqgqLMoO1*06Y0RTV5PE#dC&4sUO7I669_yu5tI zIx?9IPoF-8i;D}kZ{PmgIi;qiVq#(fWo2bL$1qfz=@vTXy2LgzGQ!@yd-2y_f8oT5 z6I$h@z^wWj#kDmxE<@GVc{HYeGANKEB3}Yy)*ciq@Sg|pT zfv{p@7z1I&#xMrLij83mgcTdZ7|6VjYgJcQ8!``u`6Dd!ySRCaZNC4$V;Dv^vz{Pf x7-mVZCrB8^P*|}sjDfIXV;BQr#l|oO@;BtKN2fCg2@(JR002ovPDHLkV1l}o8({zd literal 0 HcmV?d00001 diff --git a/master/inherit_graph_268.map b/master/inherit_graph_268.map new file mode 100644 index 0000000000..acbaeee912 --- /dev/null +++ b/master/inherit_graph_268.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_268.md5 b/master/inherit_graph_268.md5 new file mode 100644 index 0000000000..2c5284777b --- /dev/null +++ b/master/inherit_graph_268.md5 @@ -0,0 +1 @@ +f2abc87fcee9c724be77f4ad22d38dc0 \ No newline at end of file diff --git a/master/inherit_graph_268.png b/master/inherit_graph_268.png new file mode 100644 index 0000000000000000000000000000000000000000..33b49230d3336d161e8bdefdc66a9bc1da693fa9 GIT binary patch literal 2139 zcmV-h2&DIkP) zZQI$iXCoscX*AmA&6}H=nqd9(^t41G;cz%^Zf@!6=`%AkLZPs&tt~Ar4M7kdk7p3) z^5x4uK0d}}9nQ|q85tP}g1mkE7S{ay`BNg1uvjcQogNz-`}y-{0KoO@*8>6qbY7o6 zeR6Pc7#tj&&mImTFE4M`u3fIKu6OU=Eh#DCa5ye5E<1PbY;SKj)0RHQqqDHN*w|PE zK}aMLhr=l-D1a$x<7lI!qx<*oXD}EZ9v-QwsS^_uCZjD(JWP+;+FFAellc4lGnvd+ zuU^f}%oG$9Fc=K2R*PX+TwGjeXlQqL_vGYcX=&-BM~^TJ3k(dbtgO`e1_uY1m6gHr zrAwE%T&{6BDk=)D@0ppIl9CcKncUOU1Ai1BAJ6CW2L=YFrlxXpa{~ebG#bss!~}&x z>FDTyHu?Gak&%&R?BNhLY}oMfbhqV56n zHCTo>-SF@*yq9}>dku`u=sh1%QBk_v(b3Vdv9S@>D-;RHuuwI85-}&^musH*Yi;MT|+h-iD zzrP$GMUU~ zv*9J&?BFeB5N$!2cz5va-g;MgV}Pr)O7Jms+hhcKPdh4FEu=)1^}B#ful`=H{48 zW?WpHNF?g%>6x9Kef|1%e0=<`U%vnVBoZklC8eaKC>nC z`ucwV{;knyR4SELtF_Qqe{>eQ!1!y{tZ{U7Y;A3o$z&#@p(q*_7M78bp;Rgr3Pn~{ z7N5`e^z^h;k9k z>}+LaB>;{bm(S-j7>vx!Op!=Lp-`Y%T3T9jb2Ep-*|B4X&ex2+j_~ksI-Snv z^WEIsWHMP@T^*H5wb0jKbe6cV+3YJrxCHh9%!leHxb5_P3xSOw^u`y2-uQyh8($E50b9({KcSyIu`oZj=zRV9RVI@K1O%*I zyEZ*N{l$wHFu`gP`%g!z)#@ito*X=Q(ACv7G&Hodv~+TE(yEF1R~9E9y6B{)rUC#& zBGHc@KmKaGg3^&=V`Bn=005AemuHFnqO)lE(8Z;&u&}78sI#+^#bO;jdQ>i#V+(($ zYd`5ojYiYd)RdZ6VOLWg4`>_Tr350B%=k9Tx*G&eWXXf&Zvh@$A3 zGiS`_n}Mlx6?d?5x?i`Au*35!U(O(VAwSO-N{ry`mm;3tqlF8)Y;9v~Hrl+T+QYng}E-o&? z!NCt7K7?le{{FXa-O@$4diAP@hliu1Bag?+&d!Fu#?h2YrBEnbzka>DyZeCy2gb(6 zOh&V3jQ4LMANqfW$cN$`LT`LQ=#4K3z3~O1H@+bB#utR%_`<~Bml*$3AA%K1Yip~) zXa9e!Z*On!#Kgp + + diff --git a/master/inherit_graph_269.md5 b/master/inherit_graph_269.md5 new file mode 100644 index 0000000000..50d37aa5ab --- /dev/null +++ b/master/inherit_graph_269.md5 @@ -0,0 +1 @@ +54b16c3d230c3a0bb6887b8588df23d8 \ No newline at end of file diff --git a/master/inherit_graph_269.png b/master/inherit_graph_269.png new file mode 100644 index 0000000000000000000000000000000000000000..d35883261581735b8a237313e29bc0549aa5d2fc GIT binary patch literal 2649 zcmYM0c{G&!AIBfVwNoS)$uO3zAt~$F#x}+>k}X{(QrAfKoe`mtHG7t9LzaoDFtW!G zT5i`8h8cU7WE~>%d;0zH`<-X`p7WgNobP9Oe_r1=-p0z5hf{q`&&u)->hQM1~QUktzWFYmqcbaR7#L;}~b=rY* zP*yc}PoTAr&&8!r&*+%*tzX@RBrya1Dkg8Aq+ya5(ok?^Wo1#_@R4zh%KQ5aQyF?^ zOp%*V`2~7~d8Y5tk1bab_pv&s84X_1{_e?1kux$V{ovpx4CKhtht`HCSmcU$)V+Rv zIayTGwpLMB_q=HT?CNN3q*FkEnxc{t+Q!B${rJ~FN7T>0P8qH6y!;iH+AQDRd|p@dn1`l33++Wfq{YbRV5`Q1H_R#tu4&)r3XhR(N11lG-UcskYkI#G}6KX zw=W?ib1*eMO$u7GHu?(ORoph&Tmkgt=Hbuf^TFtHmc9f&2{;Sioqk_<>HPH&)QZC7?z%HYHDKV z=Ju8dl!~LR`)>cUg2__nicAA}Kb9WbE zZjPrhbn{Iu)1Z2Nm6iqK0-U746)zhpuD5R?po%EZ(d7-;FBk2u zUl;a{R2ng{vf>T0nUcGD^{T(Wf7y*@AGEu>q_nhjMti$%^{5vN_EhZ-ujMm%k(gdI z3aS@fk(|u^CUgtN$7flnk@527%h!DcT0!!+Jw3On5&Pc>e3B;1Q@q^VQq^`y1Om(< ztGL+8)6>%qjqYyd;Nc;Zl!({V)RZM8usS#UoDT~PO-B-7@rDM1f`Wk?G~JHlrh8N~ zSjO^bXAo}!x3D1?ONE{M%EYTX9zH%+6bfZzY6?Xl5Covm`W>ODsHng9zD?{NGO#t( z)e?GodQWvDnrH!SzO#nT4Q@<)e4tn!ySTVKClKOUAWU)soM1{iVVBm&Nk&-Ihdgz; zY~-7W{fjB0nonN7dewM1J~8pR5&PwNY3YN#b*d@kLCosf8lz_8yAD4e*m$&;mpmBs zKQTM(Hd-MbR7Gpo9+ z=&FM(Y{PqB3f31P|E+1V^HHMO+|hl!`4{6P555|3WT3r!i=;NW1Hgi*q2zR$(F5qB2{vk{2P z*fB*d+%KJ|!(BYe(z2RN&V!cUdw<^C!lL|O=PQ;m(H8c~zJTQ3Z);*=lKWe7u(EgW z%pm$`GCEbY9wt&Y??@UmsJD-Skb-+?}h7JJH;|(EDcd8?(g(YI_8^yizp~P z-{9b-A!p^(a`drQU0t2Z?Lh%z z6t<81=*Y3Os_KHbw>L>Vjcjky zSp^#xm%1QL@4NEZoFIe@z&Y=|r7FPrN2;i1?2jLzaqIKV%47{~Z6kthDL6dy0E+wE z+Y*B~-`!=joxT0sILRFVN^RKBoH+vm)L>1f@X=|0eh84K86X2fH{;o}wE6xtNgbU+ z+=I1YD4>x#oFpwJ#geP++P6+^29ueYpO34otPEB?1%-X8$V|5W~=6~zsH zDK|~)1JQ2d?3^U5<_Q2&{2U&aguy#9DhlJ{^J3ImZ7F1fCIN#%s7?2JsLl6F?Q1ih zKArUOD^tfiU%!4GGv0u?Ikq1t#&$|9SsgnzLu-$am6wmz7uOFB)d16N@}4NmCU>q5 zWL|J=4OU9vIhQ~tYdoUd%F4|xCzFLpBvJzi+wqR*h;2&pNVQ{!uYsiL)g#}k(VWG;MkD>@;eYZ4x=bGgx?p|)q9L)ITv z&w|q}q!+CNl0ic7G1}gq6{H-{1(wyu#s*MOP$;S`(j|F~%3oGjmrzjP0(`d@%*kZ3 zxU4Mu-rk;Lqu1H8vNAUerh6ZsnrebZ^C4j9)*-d1L+mz#5l4=F@p!VgG0ZoKSa-39u9{;udOxG*VnH) zE-ES_;ZC9v2!y`)X}9&s#v?*=B}fEGRaHKtL|)_I;42qzzIkX6$GUQzJ{>kf>Fs4< zVq((pn`61+Gc``^DAEL>$P0xh|2a@ + + diff --git a/master/inherit_graph_27.md5 b/master/inherit_graph_27.md5 new file mode 100644 index 0000000000..97d4a81843 --- /dev/null +++ b/master/inherit_graph_27.md5 @@ -0,0 +1 @@ +1f7016d326131a5208e56a51fdcd04da \ No newline at end of file diff --git a/master/inherit_graph_27.png b/master/inherit_graph_27.png new file mode 100644 index 0000000000000000000000000000000000000000..12bd4212b6049642afbc3acfdafd827e160bd322 GIT binary patch literal 1103 zcmV-V1hD&wP)>pS(6-toKTMRtr`KO=$-mQMVH=or# z=bm%#neQBD#u5q`%|Ul7mbaL!^6XW zoB!xXf*@8`SHHca{KMz-dA(kyhnpI-va<4B_2esEU0q2Y_WB41R!2CnI>O=qqN7@^ zo}Zupy7j+Y$FDwsKZGyW(dYB^_4Pqtc5iR5v$Inm5EK^|D-??9>FHQ327Q<8$;;pM z=H{kGqp7K>+1=fZL?TN|OC(9It*!lJO%wx{%a!Cwi&Ci^A0O9hwIwAbwY9ZdTU)fB zBuT5)ilS&)Sy_L7|J&OeMNth64R*Wz^TgNJSF6=3kx2M_erszhj^ng{YHCU*lO>H4 zi3EzG0|NtTYkPQjFquq3p-?0eVHo!K_(=PiWn_v`DwU(7qfJdsJRWa(dHE9s3J~%ia2*PYO=M=NJxHvgE`TYFc)6@&9EiFAcImxuU z$KwG2ghHXzsjI6i06;Jpq|MXQQvks2?Jcv6Phylx<;29qFAtxB*pDKSh#nLb6#)QZ zu^5iy91ce&ljWKi3wC<@>1VM1QTogrVv%0#P zc4i+Vkw`wTKNHaIGboD2<8k_I=R{RiRY5^PBobks-uCwPO!0MfbtsBDozB#$%F4=* zkB?9&M4OkFm$Wnc7z9Cbt)B*(juMHat*x!Mx7Y9YlO$=k+t=6EvrO#h=&)EU7Z(@N zXmo#nU$57{zrOUO)ozmEJO91d4hR4_ehbTk@`-&Ic@V=x$)Cc^%EfdYGdgafN199SLU!0HHxzW}Pf VH + + diff --git a/master/inherit_graph_270.md5 b/master/inherit_graph_270.md5 new file mode 100644 index 0000000000..a96292801a --- /dev/null +++ b/master/inherit_graph_270.md5 @@ -0,0 +1 @@ +cc675851a9cc83f5f36658c6aeceedfd \ No newline at end of file diff --git a/master/inherit_graph_270.png b/master/inherit_graph_270.png new file mode 100644 index 0000000000000000000000000000000000000000..12d2f924b35ce1d1bc30179f729dac8161727b47 GIT binary patch literal 2557 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 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_271.map b/master/inherit_graph_271.map new file mode 100644 index 0000000000..42f4800fb2 --- /dev/null +++ b/master/inherit_graph_271.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_271.md5 b/master/inherit_graph_271.md5 new file mode 100644 index 0000000000..aa31aedc35 --- /dev/null +++ b/master/inherit_graph_271.md5 @@ -0,0 +1 @@ +a82e028aa4678e672174220eb0595b18 \ No newline at end of file diff --git a/master/inherit_graph_271.png b/master/inherit_graph_271.png new file mode 100644 index 0000000000000000000000000000000000000000..6013bf390df55902fc52f2e703dc75eeea5d429f GIT binary patch literal 2136 zcmY*bcT^ME9*(#M2)#%GWC=AC5dlMqW&trg0zQhYQWZf^1Qc8hO@tstLIROu=u#vR zS&4$QMVdhgvIIg4QKLvvQ9zI?Nf372f8KdBXXehCx#yOz{U+1h)lmkb1_6OUGEO+G z2her{m!1R|xGO=eb$|wZ{)8hIwEOd{?5xQLfh1&{u*Xitm3=L{g3CXL=<9Ce6NnL^ zhv4QXt@Jw$M-@>G?2ICo3bM#K?c&XXLnw><@+{Z~?XwQQhjEQS4oZjSb`GNTw2isO`=J`vwh{)?!Ff!a?tO?%g(lUSYxpPri-_YGU%Sq z0*v>wx24OcPs^L$t5mc;NR^IIbiku<@x zZq;L7jD_(N`nz)Mvxd^FT{S9|io@Yd6DVH=sxeZBZJ$R3ehPVYkU$rtrl$TOSp7&Z zXn3$C5>nEEnS zBc&s6hsUFyJb7}FD=scR`yx|GsvyKf1}@w8fk>hF-+9~pH#@$xtSs%6k%OHb2rMpM z=>EFfxJ>{}VfeN7^!Dy!Fc>fx%q}Lz5+Ws4=sS^;UtBDyZLZPW+O^vAwgiV;!>y)7I90 zHoHy~juVreoGl8|~QL7AemX(zShRPZExV57DJwp!h zY;MhElb^7;cq}f?`hHE#oQ2%PD(IPDZB9!WGQGH%m91`dueq74+tuFApMm>69~)DW zL)f4SqL2J)4VPuHSfFj8kWFiBR1ydT-!?Z{z+_tT67@lS6!b=C!gpCMEiHL+?_Y#n zn>b8)Z%b`$t#{WA^vul6)ZAP~zP{VN)>hvA_#!J*Dv1O!|NRQJIh>bQSP1=%uu}%? z6=zbI-`;*yRT`|V{ifxLdit$f9w8z6*%XS0lanNOd|X~(M7Xg~+tf5p>#nTS^r$_> zTCM%P<|U8EyZk!9G^e5h(aU1x`7)55{*fo=#>bVLTUzqGjqj^lMZgw-BXi)RhnE)= zP?|yor-sQqHXEObwFfY76iPuL_fk^CN>}l*vH8{2Iu;fdx&Dv!n|)o{+S)8RReCa5 ztk})u`Gtk-3k=T_pi6lC`28*hgVT2#;Z%Fd0}u}5Ok3XQ=;-JEe0`R8I8IlQl$E7x zQ{je2qb+;4F&Thbn!OJFA1vT zEsXGZ85af$m^@x=mB*mHrud1x%xWK->m^*}L`qWOnqz1QYNOphy7d z;V*b(BCV#Ty1N^(XU`rYkyu0x`jk{klvh>`9%cDzRJjxVS|g^Xn5h!d(%7&tBmd6p z7Zf8yWe)+$t_p?uI9B-LR2`TPGJDI(M(3K>?#7 zmzkLQDFE20uxiXxty`P_Y zNl8ggK>^sy%d51{5=wZx?eFiO<4ni7xb!aY9-G6z?IPw{-{;NXz%68|9zy}Guhm5Un&G~4iwdcX@H!4HzT zX_vgdjyF(-Yzc)u0|Qb@CPT2@&m%fz=xgB9 zr%zvviD7*jEX^$}%-GtBYmCJhn|YPj*PH(J^rX64|Mcll+x{Q zPEQ9){33>upi)X90LQj0Oy2-g|S-uhRWr4OO|AbnD&u6|No-R^-}L=9Z4P zs2fE7)Vlsi2|T--?$iCv92O%cN-qrT{#kSX?cc-Z)cfs7i83#njSDedz^?+x$-x!- I$UY$DAAar?od5s; literal 0 HcmV?d00001 diff --git a/master/inherit_graph_272.map b/master/inherit_graph_272.map new file mode 100644 index 0000000000..358a1eb3d4 --- /dev/null +++ b/master/inherit_graph_272.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_272.md5 b/master/inherit_graph_272.md5 new file mode 100644 index 0000000000..32eda3e3e6 --- /dev/null +++ b/master/inherit_graph_272.md5 @@ -0,0 +1 @@ +59b03fce335ef57a444e70e308b0f438 \ No newline at end of file diff --git a/master/inherit_graph_272.png b/master/inherit_graph_272.png new file mode 100644 index 0000000000000000000000000000000000000000..5e1c52ec684dbdf62bdae4e7e96827f202ac40ec GIT binary patch literal 2524 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 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_273.map b/master/inherit_graph_273.map new file mode 100644 index 0000000000..9e657c5838 --- /dev/null +++ b/master/inherit_graph_273.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_273.md5 b/master/inherit_graph_273.md5 new file mode 100644 index 0000000000..ba51210b53 --- /dev/null +++ b/master/inherit_graph_273.md5 @@ -0,0 +1 @@ +95c186e1726c2a9731f39c45edab9d58 \ No newline at end of file diff --git a/master/inherit_graph_273.png b/master/inherit_graph_273.png new file mode 100644 index 0000000000000000000000000000000000000000..50bd8b6ba3c6bf118463f13e562f9658b1d6053b GIT binary patch literal 1815 zcmV+y2k7{TP){3jWBT#IVICO=l`m zE(=zz8g0=J><5I93v>uUjTKfHq&5&L3Q5RPHVI7xi=3|IHr(29Ot)6B?L2?n?|1Ck z4}IF>^nrU{f1Uf`b3Q-z-q|_#-XRb|K!6)aD_sD=vO?&MF9^Ny1)(>-SQUPu)9G4U zTUV+Sf@DxsR3w+nLzjPB-)6J<`Sa(?UJ^mF(ChU&oi5z6D%z>LyL-9nAxJLO)zuLe zV*kb$gx>gq&>LSYx88+?g%2J)NNg^b%kAjsSlW6bu-R+~f;gSdq-I$`i1m#xlCF1t ze*U9JkN#-N#KeS9D5Ov*nVFe99`D1456LNQ5e^(UfFKBhAY?MRxVX5#zaO(F&`~tM ze*HpXv1(O}JEkS%zqq~+9z2+yo<1@%GCe&lm&==*n^&q5nM?*Dv|6osd3hBT6+eFb z_|pi%V6d;RPb?NImCA7Y+O=!p|Ea2~I&tCzHun4d5fKy$#hEi_B5tD-CK0{4T<-Pj z*Go%FQ54;>WlL{wFJ_;co0G|8+1c5dnVAxa#Ow9e*47RW4*L_lu&aQmLGu zpV#Sh(H%u(3C$WGAHQWMqWH;XHl% zG~~Z=Wtyb(Z5D1_sIyN>o zIXMXcu-omJ{q5Vg(R#bx?(^r*lgVV8%@*BJcoqm@eSJLuKr9x|&(AO1W{7{HcL;~W zArJ@v0F8}}i#kW^o#6gWp-`|vT3Q+az~}RsOs15S6gHdvuYPR+002;_)Vp`@8Vm-f z(|P2`k?QK|ckkZC%L@SL?(W{TYgc-DI)WfFnapCbghJ8jbZqeL+czvSb}ULsNtv6Q zGnq^li)G!qb)m2k^|!UPAqcX0^X8$Up`M+OK@bERFc=IHiR5%T!@ukTfq+J%dA;7y zK`df-#MZaR+|`7!QlG!>({JVqu1+I zDpkDlDk>_(V)4Yp#Lu5UKYsiu6bgU;{>^5yckkYP_Uu`Q!(lWUuU@^nXr~Kw6wdbT z+m%Y?^z^hwqcNM!*j||c4)IyyRb?ATFWUe02% zhKGmu?b`({T-($b>O=P{vDsi#hzQYw{fHk(eTYc!hn_V%)}vUvVXCiBjn zJ9Tw+D2mGE^2*A}c%Dz5JlVQ+E04#cP$=ilofC`2si~;|fX>cNkH^Div-y1fv17*; zt?-XJB9TaCWo3^aKfZkV@}kZ$X=!P>ckf{SLFkPy2)*$Ip*OxD^u`y2-uQyh8(+kDyWZ8+wfuDuBm;}ZLZi{bEiv@2 zsi|46dI*w^NF)lsM2M$pxPsWf@dcqbz996*7lhvU;xFr03ljH+9VGw&002ovPDHLk FV1nAQks$y8 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_274.map b/master/inherit_graph_274.map new file mode 100644 index 0000000000..d9b159a970 --- /dev/null +++ b/master/inherit_graph_274.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_274.md5 b/master/inherit_graph_274.md5 new file mode 100644 index 0000000000..6748fa1386 --- /dev/null +++ b/master/inherit_graph_274.md5 @@ -0,0 +1 @@ +5f059ac55c083ad6d19d1883be6881cf \ No newline at end of file diff --git a/master/inherit_graph_274.png b/master/inherit_graph_274.png new file mode 100644 index 0000000000000000000000000000000000000000..3a75626ad20208f5aaa9769432bf53abf514566e GIT binary patch literal 1727 zcmV;w20;0VP)HpZSZ-ZMy!LM(e!JD+&Tz3R4>`?>c$K94uXqbLe+u#berHo&nsaKW<_E_jy01o8Xu&|Im{B6d&T&}jZwzym3Sa90f+FULdvyv1lYHe+emmiKe!Q=6QD%={+ zQn=t*3Ku*}iFfb?1qGKcUygI99HDSCo~0~!@cH@q*REZg(3YUa$YZdmu@& ztE)?;QW*>eW_`($CDbo=@7{gz;6d2-`~5*zsHv%`tgN(Jt$$+UHz)=zEiFNnu;k|E z*45Q*-MUpE5Ug3V=H9(~u2OeUi!N+y$;&1R@S zckWzHPEJsJY-|hw(BI!5w%^*?TDe><5D27Fsl{S}_2S}U00582Ls9hX*|Q``(t4dv zw`I!~KA+#*+}zmMh@$AyrAy^<`HL4XpvLF(RaI3X2$G(jUR+%4bULGZ2&)erCe7gB z;PK6@9Nd7^tt~TJV}zP zSFhf+YnRn(B?uy@Uy(@k@Zm$R*Q?j-g+k%y&!6c}{eFL6UmuR+H*emg^;ub2y}iAD zzyIyqx5>%L7K?=-2&>hq)oP(esZ+50L;c%p-r40-WFvajK=IH1sJPZT^LZJ|9!g`3J4;p4!Ss4I8rBeBPzUYIc znN9FCU%q@%C=>vIlP6EkMjsk{jBC7DEQXEL)KmZfK@d)-GchqSCnqPi3o==;V#TFP zm+W@?`1tt#{rmUq+4JbpBlr=9VYCdxFt^(c0BCJ(-MDchpU>y<>%*@mzTeM`4Rx|{{4H{9o$kSCMHf!PCA{=NFJi-gD@Bj4Gj%8n=Ly# z`|#nza8>&AI}->5?%%&(R#t{#*u=y{Q&W>xtBvha^R~G|Q8W+;3=a ztyZHb+S}U;EAZAs91e#>BKh>`)4qNCPMtdS@#9C5B#lNRb7#bSN3BpOIy*a`J$tro z+qTV{H&0JbXJ=<8BqWTFk29wNoJnClM9~KgGcz;u=+UG7{r%nD-9n*o@7}!_hSk;8 zg?&n9!|T_tH5!dXB2lZ=7>3zwHjBklQBjeRkrCSk=Ph^yL3ZxkSzccL=FJFI&>^XJcJW@e_O zq!bhsR99Ei`)a1onVA`b!GPm_+3!bGc_&ecw#AdTCwuOHOZpO0|E_jy0 z1 + + diff --git a/master/inherit_graph_275.md5 b/master/inherit_graph_275.md5 new file mode 100644 index 0000000000..c2b1ae3bf6 --- /dev/null +++ b/master/inherit_graph_275.md5 @@ -0,0 +1 @@ +bffdf3ad6b18d04f5c29cfaf549a273b \ No newline at end of file diff --git a/master/inherit_graph_275.png b/master/inherit_graph_275.png new file mode 100644 index 0000000000000000000000000000000000000000..3abbb3deed033d6defdecd8836645050673e5604 GIT binary patch literal 1989 zcmV;$2RitPP)E{hjY``<}aVH<3dS1VA8`8=vJCfIt9%jEG1zc)JtJT)j z)GU`2#EPP%q$DXRiR}JyM>LsC&CShAE(x*XXl`ycnM~9Xu4hnFQ`1uEL99?X9FE%v zIwK-j0WuoF)=am+O=y-yeNYGpgSUh6)d_D6A}_`-n{u&m-P4d%VaWv zKoA-lnwFOK?Af!$k+zT;+{)a&dv|ehG40epvas3Q`1$iEhYl{6=G&Epg^hQ_^z?Kd zkJsJZZ8RE7N=mA$t5>Fm#lz)twYRs+<#MG`NgZFcY8CODef#zuJ$e+j9S(FMn3Y;qxqL_!dRL?WrLuZQs$FJ6p|jdg2}j*bEVdU|?j*DWtEmrA8UK|x}%SfkOv z@r;ZN004)>!7%K?g$pj1i;SmA-!c8phacw!*?f zp->nc9GsDnVK5k&HPFU;mbq)!uA-tM+9}!$o@!}}^33+-%a;QO4upk;2?T;8M~-~^ z_Kh|hslTtU@6@SNQBhGChE-Hl==FMU?=sbhp7izg6&DvrL_~;0qVwm^4-E}@i=+hr z(Ae1c#|X7EcOwdg!WS=I{P^*ss;WvL5WtryD=SMXmA-rTZgO%`tyVvH@PHtQ`1tr6 zH*S#E{;v^TF4u+)8}{zqtJP}lcDviUp`oEqo;y1Kd?4#&rjAN~CNG#ZWFZr5tHWo2bBMkbS`rKRchdaKo1T3RX=i=9p< zg9h4o&oW6PdQN%EKvm07lv}oxl$7-Jbc@AeG#XP=Q`6JaJ!>ZjVsvy=rBaE-;x%j5 z!4B;~cWwH-cuI4CGcDwV3$>dDDT=1U+8X2dI3uE6%h!~_7qY&L)T z^a%hkFfia2%wR-sn9XK|LLm}~{QUfql9F0lTF7v$M(g zs;Vm3*6a0wfq}ifz0_d%E0e`yfnBH5$>;N746O!+_&FMpAp=z{Ls8UhLqkIVfZ^d` z*nRuQ;mKT#NHR7ymYJCe0625z%v|C2yAN^e8ts7sv65iHW+py0Wse`K4O0hZPLNoK7d)qkk;mGyf&{e7-`V zz%Z<!YHg;34Vk*|Q@fBQBRqrBYE(*3{oLGcz;W+S*>ee7R%Cj^yOz znVFfGm>3@)pYic=>ehrin^pruJVTk(DdrVPwG2g3vqeWoI~)$9(FnVPgM)C;v-a@t z@DnFa^z`&}bae3f{G6N|9LFmwEB|U2QF;IVeMw14R8*8gp}=umr_*UPn*99ykdTo1 zC0sBg3WdTwd-mkz<$d_@!D_YE*VnhUwgLbmBO`lzdp#e!007n1)o>G2+ZKx@Gc&Wj zy?t_W(rUG;)oO#mAdyI5SY2IRM@NUvX1jd(ve|5w$z*oB-Q{ux2M7E6`#*pFT%}Uc z%6t6yaYaSN;Nak|U%#AAC%j516lP^*$>s9?{{ESnnOCn~$z-zG*;#KIyu~w@Nu6TI zK!u?wYBn6llarGb3dP9Ch{xfc(}j6e_~={ad9zR$W7<$?5t9$6p2Iu0ReGwarf@sgX2?EQ)OjkIF1Jf21+E7 z`}glNYw#BDRwng~=r-jo163_UQEu5rMn-aSa@MY08x|IJ=+L3Du`$|g^Wd+}h<^)M zkcXA!;@@9f1WWKVA{)QZMyx=P5fQ9l(SJi+Ky*6Ya!Wug7U+(MUumWU61S|Lt XW>wS8D}=o?00000NkvXXu0mjfV<6xQ literal 0 HcmV?d00001 diff --git a/master/inherit_graph_276.map b/master/inherit_graph_276.map new file mode 100644 index 0000000000..25dc3c74e1 --- /dev/null +++ b/master/inherit_graph_276.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_276.md5 b/master/inherit_graph_276.md5 new file mode 100644 index 0000000000..2577e6e23d --- /dev/null +++ b/master/inherit_graph_276.md5 @@ -0,0 +1 @@ +9f41ea2f672541fd40eef8d229a6ac94 \ No newline at end of file diff --git a/master/inherit_graph_276.png b/master/inherit_graph_276.png new file mode 100644 index 0000000000000000000000000000000000000000..9ffb3703c9c6a3a6c2f695a4761343ebd39a2024 GIT binary patch literal 2029 zcmVHpK~fHYpI!KYwOr%kgY6>HlqwfP%ATkWztG< zk*QRqks#7PjoKs~fuVCV%}f#JKN)3(&?=n;sbngs*>tmvmNu+rF?ZiT2FJC{IoCEj zzxVps$F@$+I#uM96DwSnrWlJT6 zU_tWp^CKc6(B>a2PpwwV<#M-6BCrd&T&`BDu|1xaLCww0?$SfB2p|YD>mlxWIEF9} z#}MY>7(1G&Gc$m>3ik;9 z#fwFyG7IbK>NH8q*_SS2hhthl&1Dk^H_%9WcoZF>Cp zv8i9D)15zm9)@8*Kfg0)&V2v=JuNK_EyUq)5Cq|HI8v$96o38tbtaQ(c04&b2>|Hn z=`ky6nd;D?LjV8>f?ycFdiAQ&XtWxJt!Syx)c^3|!|?F%U%!3@2M71{^Dyq5M<}h zoi#Nz=w}x+&uBD;goGSDdQ_=Y>h*eTU9(gs3*v3@Oheo5x%gbZ2 zSYBRU5fKqBEiG14VYzwpW?EXB?TYg$oS2xP(P+Pa|3(l*tJSVwzy9aXpXf*h0s(g5 z*yel!^78U{JRX7|v$M0SSFc9(XJljm05UT(XJ%$>&wy1d&2#Xc7Zem^I`HxF0RZUr zdX-8=B9WL(reg`QP^r}N^77%~VXans;>3y6)YNCso>_)9H#diehm*-<2!bwLxS-K! zY^R-1VRd!2TCMi>_J$xRFfj1r$B(9y*aV$U#|C4Y^9jh!&6UgLU%!5BZf^GU^o);> zH}#7|qO!8G-rnAg8#m_Uxc{OHe43yu3UZhC4bs z%u;>+{5d^6{mPXqpFVvu8jWJH*kCZ&u4q-E(P)&(Wc~g9=;{3Q>C>vJDm1|C8%4Bf zLqKR~D2KzTt*x!Btjx^J^z!mD^{-vK_Tt5hJv}`Ng@Qt%96x@X!C({@7pqh%$L7ar z=F#c&!-o%NWn~Qx4(fC|sZ{#l!2|zov)%*g>7wZ0D#cYP&6zuGP19) zudlDq_IPaw0089X=9ZL{bar-HeM(`o*&>l>e0*Fgm8#Wh>_T4@&U{p;udm;_b!$va z41>XV^X5%dR1^T<^5x5q9zF8$@!@j0_9UTFsb|lg6^TSlCX-I5OQq79nwse7XtPu> z440IYq^GA-D3tvC{G_BLG=q(bmI@^jNnBhUHpbiA`@n$%3qCX05C8y3Oic9f@Q8|v zLeEZ1JUl$2qoeQKxl>qJXwS@80eb_qbHhTgAhWZx0RaJxjg3ys37oZIA+Q00Ah&Ma z^6~LWPEK}dAuBIq3H}maUtd2zzuUKOqgxdhL73-!^m@H}3K5r097C9gV{l;J?CdOL z4NuPnuKBNDzfMR<2n-DL_4VDhZJS6Wa@z&XJ>bB+6)RSto8#o2$GYNla-ZqPY;+_Ghh zSS;3PH09;xBO@c*w{PFKZ(mha)wgfo+@SL>S)S&7`SJw-K&4Xcj3<#uF)=Z9b#+1c6XlKq!ip60DtvjzY#F)?9h{M_8!lP6CyGBOwp#?;hQWo6~1OP5?J&^av6 zd*0^Fn_(EPudiS5+wg&b0hvtJ*w{!WlX*N|Z*MP-?s>R3Pbd`1WU`Tw5o{*}K@}Ah ziHV71GMUfkQ>oMsA3iiRG=znP9Xoam8(Cdlt=H>YT3Yt(+2dZ}P5}4jjg5^(Mn+op z$HvAg6bgYrz~yrFdOeH9;_-OsOKp_W(o(m`bO|^!&+->&3WdV-Le-MpyLaEef8X_@ zmJFPkXUV|8z*0+CGM49V^M3+i9*!Z*!!d+;IEF9}#}MY>7%Ptosi~>%*FoR_f2=$j zjh2#E+c{t`jtJcE&5lKLd00000 LNkvXXu0mjf9=_=F literal 0 HcmV?d00001 diff --git a/master/inherit_graph_277.map b/master/inherit_graph_277.map new file mode 100644 index 0000000000..b611d1bf2e --- /dev/null +++ b/master/inherit_graph_277.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_277.md5 b/master/inherit_graph_277.md5 new file mode 100644 index 0000000000..34da8ad95d --- /dev/null +++ b/master/inherit_graph_277.md5 @@ -0,0 +1 @@ +d896d946281ac87c9c49af554a81d3fc \ No newline at end of file diff --git a/master/inherit_graph_277.png b/master/inherit_graph_277.png new file mode 100644 index 0000000000000000000000000000000000000000..2ce318788b22aff151e0391f98a3387df732926f GIT binary patch literal 3286 zcmY+Hc{o)4`^OK8A$ztYG}f#`LMUQ9jWH=>ANxMGFocr+noJxpl={gPutnqt;<>Xr3;eD~>VRaj9wUjYkhUY&)%9ahcWGi_59OxlX`?^!|={x6)%!5bSJo0*xN^X6GfcG%p&htRZT zw03L~5)!n+4|Wn_cWAWY!onB5i+Oo@g@uJP5r;m1mGyrtL@!VHw%=HLGdzrjM0(#FQ=SChLrn!)VLuQD@3cBg`u14A7gW~*#l z0yS(g7(vgc18!Zgez$kBva($JLpKi-dR?+@y;KB&50r9?fdow1_qVR+03cdaBj;qf zTEE-r3SNi8icwO8e3WWK-m7fVJ|R9CBcVS;A&HWwTn z9pA))X$}q!j?sCE_exnfaDk{%E+XUs3V`lHj}ge9naRXTourzUkx)9rdl60 z*43q=B*jQIK`Ya#jAt?zR6@31eG|$b`qwS;{w6XQ6mdN8j7UK5} z2@gs7Q96%pk`fc?0aF>uhYtXtBT2|&p6F$@eq&np@}&?To;o+jb?MU7*RL*Syy;@M z6AO!q#v8FDy?RV5j@oy6a>x^tuchUFKtn zK^q%i2D5_kadZ1YTbod{dGB!L+t`=@7uPLu?#qxq63L|0lt%f!bx)2@HVp}G2_!mQ z-kP@2ehS?cr%ywEVsR!m2=xpO-h4z`t+Z|wym*oMj4lqRJUq0tO(K!1ZCm~-Ak)^T z@T)nAjIPWu-ywxSjVY`OZFiS=(T~{5%pIRfAn28hDBAslE&c^c`ND+@BH=saFJE5t zx^T0^Fh1#M(=Qj!MirNpm930c7X-U|d9Cykq>Skx(KTDxkwk|4{CscK!=2?3DWjLO zxF%s?VZ`bAyIPymk2Y*uL;qyhM_f)uEH5v!GA?|GVql4J`gR$E>bC|JWXc}bwXk_| zuu>f#AK%y4m!8fCeE3(S&COqeI??9lpPg#^t0@X{076--0G@ zZErXFOvHNDIFpCCq|mAs=~%eJjV ze2sG48>@A`dGjV{8t~r3)EcxQ{_5?p@NfnOhPyc$F*oaH)#-Eb+evoS!42n<#0}>) zF$H8D&O(Z3&RS2WBTOJfE4RHp($Z1@$SW<4M;7UF2JUaUy0^HU&*;&2PYaTt$Gru2 zr_{6zT^br1T3lQVCP0i2?QBHZ1jhy&~p2mnZ@^^wWOi>;Zm3*1fb)gkQc3ewUr z!RH)$5AE!PS-W;OW~$4}HA8paSjsghYOAXLpi*P(9)*Nt9zRwI23?bpljB1RE(&n0 zY7*e)-Ws{9eR)(SjU_s7bJHKt2?+@?Ffa%U(~5_O9xRs(z0ywV5xNl?NGUS|YqgS+ z5?Fo^QnVIyrMd6)KUr{SOl)k#J~iX#^`Ug#9HWekjN1iddIpB;LhNXO4iFF&ocB|I znp<2fSw85zhM~O5&5fY;rK!z?osZ7*n4ttTO-?lWT3A>NNh3i_feXN)N-8Ql!$pSl zQKI7F;-aDsqgA%)M3E>R%l3%l=AacYpR3p(e(JouywGIG_#H7ZF)1mj%Mcc3=GybM zzkmOppP$dL3+b>e((By46wE33zN$VsuF>#1GsvDAehDS}1MYJw`VlSycAs z&CivUa~vE=@$uImZi(ZF1B~9}#3$FBEv0#oUS6`eN>dp+z}eZk=6SPnlg;|l(kO-E zT6{)+C8gH|c$}QfRoGrx$>xJGdunM~PC>MjvEs=HTU*=k@NnQUQOy^6+%p(eR$u33 zsO{Z&kBwA(hxiPSzau#U?h+D-d=VALA(E?#q*AGf(;@9s)?1vIX<}B^eg~6CUSF+Y zdREr;Yu8-u-%)Jfu5x0G+Lm1IUPY@gW#wp7abA9YO{li-HRnVJD~kqCO4-4|L3DI< zPY*&kX?N*WWHy^|IRy^&AAjqLAapp4S?qx;fcD^F*>YW6UynGX`G8qKmmVD*-FwI+ zJ1+NUD6o(74D%WKD4jg>@=HQndkaZo{L|CZZEbC!w6W(`0Gu8CS3)XMBB`5L>I-Rr z#)dsJ|9GbbE&W%)=F$GPX7IWTOrW5k04&^N?UAReVZ@b|`ywJDDlT1JT_b&<3c*1{ z6*o6GgS9t5|1v0r9TS$A*CWey82OaM5#d`{m24t$;`eVqkbe#B?d_)^d%=ehp#xOu zt0UQsU`HS>Dapsr@2u%AD4{tB695~n1n|ShJsNnG&a7@fKTe|uCg1xPfP86d%SDK< zkJT=Kjgi}9h-;bz^8rFTC@>Ig>$K7H9((!15K8i3YR1V1OznMC~PSdN z=BL36pV{17YOwxIGq&8^++aiDp&}U96`z#E4>>bPgSbceHH9mwt6M^o)hEsgNzLL8 zp@S)BhxCOk=>9)+^u5DVwKKarvVsfIrB)ZF84l + + diff --git a/master/inherit_graph_278.md5 b/master/inherit_graph_278.md5 new file mode 100644 index 0000000000..cbca196293 --- /dev/null +++ b/master/inherit_graph_278.md5 @@ -0,0 +1 @@ +042c22f0659fb79baf1f918862318892 \ No newline at end of file diff --git a/master/inherit_graph_278.png b/master/inherit_graph_278.png new file mode 100644 index 0000000000000000000000000000000000000000..c42df0d7b8054711cc7077af79dca879c0fe8133 GIT binary patch literal 2909 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 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_279.map b/master/inherit_graph_279.map new file mode 100644 index 0000000000..2d6c711582 --- /dev/null +++ b/master/inherit_graph_279.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_279.md5 b/master/inherit_graph_279.md5 new file mode 100644 index 0000000000..8c21dc9568 --- /dev/null +++ b/master/inherit_graph_279.md5 @@ -0,0 +1 @@ +0ed69745cb19cb3f3c895322983d7954 \ No newline at end of file diff --git a/master/inherit_graph_279.png b/master/inherit_graph_279.png new file mode 100644 index 0000000000000000000000000000000000000000..6446dae43c5b2ff3a0290e8298f385edd9359476 GIT binary patch literal 4102 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 + + diff --git a/master/inherit_graph_28.md5 b/master/inherit_graph_28.md5 new file mode 100644 index 0000000000..34604eeca7 --- /dev/null +++ b/master/inherit_graph_28.md5 @@ -0,0 +1 @@ +f8af5d59a23c97eeadfd3f25984b9a8e \ No newline at end of file diff --git a/master/inherit_graph_28.png b/master/inherit_graph_28.png new file mode 100644 index 0000000000000000000000000000000000000000..f9acc23b3d5dbaab59df5f15185a0aac7d12d083 GIT binary patch literal 2014 zcmV<42O;>0P)HpYzAW*j#}QbZs4*hDJGR!X|`a1U1cKFf$2< zSeP*y1x(9qBjRYOq7 zl50$Da+e8avl&4U48z{MdGqJbpN578qtS@tcu`SNyh97Zl5310$bka~DDU>=%a^-% z@6OE3T(M$BVPRoQOUvBc9Oa_`0GgYdAqX;=Ol0Hm@UToK<8rwG02D>1r>D1V+qQ_# zi;9Y_UAsm}oMA}FYjtmLZ%Ii>US8gd7cZPn=gpfpT`t$Xd-o_G$m{hQjmG`^_v`g~ zvVCS|CM_+^x1E}r3PBL%qf-V>qO-Hp&k_`gL~`=v$z@87?_ zY15|p`T6YZY>UN0xRsZe2hAj(&kr+~z~od_Rr%V=WU{CN3xi6fQmIsA%OcmY$z;;$ zbe}(eR;$%DH8nVn0|07jYKDi0dwP0oHk(u`ee&c+5qk9QpbAN~O~4 z^@bXHe06k`7>0fP_z?hLwOak0{nl|{Lli{;0F#rGgneOQAtNJW zbaXV-=zV>C004)>5qRkR`}Y6FMbJfVsIjyWO6goGccL zqitxj*#H21J|BW02!fK6lYjj9VYk~u^^ld7MdUH?5Q?HHDJd`v6T7*&xr8xtAE8j_ z^E4WbD2lRJEC_-!Gc%{Arie8VhEQ{fBsq}>7A=%LbHOmYu&_X!j8U;>&6=d7B&X9! zKJ_XpDnj`e6coTP+|khyct{`+csw45!$Iu6d-skoM(*Q#bn<$=ZEbC1V`ILM9zA;G zyIe;*mr%(`O8Phd5eBvhDAQOd6z<%)v#zdge0<#Hav2N;v)LSB!(F>})z;QdOiZ}l z?!m!9rBXRRKMw%V>2$>DOx}hd== zC-T4+0hRAg9UUDTHf-3weY;2`diCm6X=!PM4NWFfety0}q2Td&hYugFt*!OFnFM9W zjvf8|{cqpCmCNOsnVHqq)m$!@So)ovooqI{u&_`nmGb#~zxP^#NPP5qy+WZNTUadC z)~#FpUZNtOOVH#TJ$m%Pg9qv9>2kR|!oU^*gpOs;a`7FEtYxqP9pb5GUks zAPiB#XiR??jp+|PHKt{;YthhCV+Jybp>Yfh?N}*6ZefpHJ$EN(Z zq$GgGv8g1Mm6fsC?BU^Ihr`j>*r?O#sO>+VkbiZHuqLrY#Icfi@!~}Q!0Xqq{rV3q z|Ai_YN+gow$B%E`yqUw{Y}~l<*|TRzB_V zu>2RM4BFb-diwNf48y9bs>;gBzJC2mWg`9yWWnRRj)M}jN+O0~8jU75H#apkwYa#r zyStmPlgoc$%AmwL_Vrd!P@vcADa%4MB;GoXStXIr=U=*X$!fJaoz8vx_ElC^5~mlL z@MTbuNaXVriA2OF1IvNsu5oNCiDWV|GBg?u48zZ#KL>x8|H79+i8FxU!-o&6SFc{= zoT+9RX&lE&;^gFHMMcHq$B$=bW?U|pUaz;??J}7R{9XPFQw9Y9w6?bP_xI1v&YnAW z4#O~|Qn}O_i;!icaVTO?N#yhS4Gj$~EiGcPSSS=442JghcH(ndzw%$0GH88$eN$6Y zPEO8^8#j7-dWgHsvVeTqS%%MCiGoBTxqkh6yraPJM11CA`0p?p)1M%JW6rP$Mn*>B z9YRQ$bxeO4jp+}gG5ujQrawWRxdQ(&3_}8eAPDhujgP<9u|ObDsZ_BIiGgC|a(Qua wG1>ChH}nj>HnA4X&P!)Q!@7>()AKmM|AFrmDO*8l(j07*qoM6N<$g7#SRL;wH) literal 0 HcmV?d00001 diff --git a/master/inherit_graph_280.map b/master/inherit_graph_280.map new file mode 100644 index 0000000000..2567b7b9b2 --- /dev/null +++ b/master/inherit_graph_280.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_280.md5 b/master/inherit_graph_280.md5 new file mode 100644 index 0000000000..b126e62151 --- /dev/null +++ b/master/inherit_graph_280.md5 @@ -0,0 +1 @@ +21ff94cee855212eb5eb13eabeda67f1 \ No newline at end of file diff --git a/master/inherit_graph_280.png b/master/inherit_graph_280.png new file mode 100644 index 0000000000000000000000000000000000000000..a6bde8c02bf29702d439f88c33b5091b4b0667bf GIT binary patch literal 4207 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 v+iY|2|IMx!-L4c?!X)9Jfvkv?pr2R41 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_281.map b/master/inherit_graph_281.map new file mode 100644 index 0000000000..b6955b358b --- /dev/null +++ b/master/inherit_graph_281.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_281.md5 b/master/inherit_graph_281.md5 new file mode 100644 index 0000000000..8d4e132393 --- /dev/null +++ b/master/inherit_graph_281.md5 @@ -0,0 +1 @@ +20e8142ba32446edaed82010b1f46f67 \ No newline at end of file diff --git a/master/inherit_graph_281.png b/master/inherit_graph_281.png new file mode 100644 index 0000000000000000000000000000000000000000..bda3eeef1967960304717a2e443a0f2fe597b61f GIT binary patch literal 4033 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 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_282.map b/master/inherit_graph_282.map new file mode 100644 index 0000000000..25770e1912 --- /dev/null +++ b/master/inherit_graph_282.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_282.md5 b/master/inherit_graph_282.md5 new file mode 100644 index 0000000000..48428c4821 --- /dev/null +++ b/master/inherit_graph_282.md5 @@ -0,0 +1 @@ +bbaf2de5ab652a6e60ccbf3847de5cfe \ No newline at end of file diff --git a/master/inherit_graph_282.png b/master/inherit_graph_282.png new file mode 100644 index 0000000000000000000000000000000000000000..a6277c57c1a4f4a28572eabc39283692efc1d2e9 GIT binary patch literal 3949 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 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_283.map b/master/inherit_graph_283.map new file mode 100644 index 0000000000..b20f633dc3 --- /dev/null +++ b/master/inherit_graph_283.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_283.md5 b/master/inherit_graph_283.md5 new file mode 100644 index 0000000000..66899dffa4 --- /dev/null +++ b/master/inherit_graph_283.md5 @@ -0,0 +1 @@ +fcfcccca9c87b75742d50463ec69eadc \ No newline at end of file diff --git a/master/inherit_graph_283.png b/master/inherit_graph_283.png new file mode 100644 index 0000000000000000000000000000000000000000..d0a535261d337d1b1903c76065640bd6baddb4f2 GIT binary patch literal 2829 zcmY*bc{o&k8$Pm)eag~E?-*Xnl9Da5k9DkL%bLnC_DmvsGWL-zTQSDi3h!H@&Df(M z5mU17%V2~MLYD9J{q=p}J03MXFzBPE#z*`A& z0(=JXi@gI6HaAlvec<@dMQ(bQ1pu6FD1BYqP~s}l(TqR(bb=?RmkvzmWC_*!Qwa=; zK1E>S_W3GqD~(5fLyL$z3$WS>2$t$sTAeIq!V|cRhiBtO@cLF|gj-)AhE*S}@usY@ z$jhU>$8ODAB4fQkIk)v9CI2Wq{4E?C#RX}X*Fho$vKbZ+=BMyyRZk(s*wf*v8)4JSU8$&av$#F9bhNG>m(uCu|z|t|?qQxk(<1(FjadkC{ z{waqes;sm$wwpdWJnZ1)#Ky|18Mf(;d|}%|(u@$|=a0qoVPA!;j>fy*Qg~vNcJ>Ln zclV}UT)dEZf%HLYMBN+Tq5S-Ol`B_%ZEZ=MKkw<`VIE?bWpFI>6%I4-_OARyFx1e{ z;Du|zU@$K%c42ll@c1ao{klxf+BhZ4;+eC9gWpv1VQ0E%fr`I1+vdhb%&pX^bF#etvE3mZwk85qodiv9zz#Xtdr!b#JA73MCAO!`a*C zb)3Rp1c2<^+@l)&{mVx&rC+@IinK-H@ZO%D*EKb|%?ZKZ2lw{&-n@Ck!^^v{xHwfG z%#|=h@6J0dBqXD)zR)Ty!0G9^NTZ>P(NbAmv^#b#Vh2Zu4HU{qS65|SokOYc)shbG z4R#Am_PcZUv7^y&wx z;GS6)8NOv_V*_EQP$woP03bic;UdFD@%{?;~kWPEJN@9fMSvL~MinZ_Tu`&&xqs zbfHS}^1DZe5%%^&AM%y^X(I;Ag%)|;^dD0#_B=XYv{+bllarH!t{yV_pUJ$?irNL3s87e|-Clt(~2+ipmS8H!=vsO^}Te!I7~s8!3Tg zeLN|cH!;=*4=2BB^HOp$Hii`SMgLq#wUv>RlB$dPtpWf)7yF{Omvc5FkXbo7^!fR+ z+KHi|&KaDKuP-}0d%3mu{rmUr?N8Ts>oz>e5mS*d=PpX_t$?7W;~J%?lVy zo0lppDn3q36jI$T!yZ0;`n0uG2LN`~CL(@JYGN>$b6INe^R_a|7cW{MpsH7|e)W2d z$K%`D+LV0DVNZ#?OG!lyRG3K{+Sw=GOG;*3YTa=lZnUMj# zbg3Hb(1GQjZro^@9336~@WGw&wfsa3K=IHnC&!y*2|!LF!rWesAUIVDp6e~zB=WLZ z6r;Zl4sM2O#OOT0oXa#m!OU!AWb}P`d7-Z;9ph+cCkTa3udIyIXoyT>uqLq_lYohO zwRaI3bB=gauM;RFi0nT7L&YF2>a1g8>8xSDM&#zZ*{pFprEvTJ#f}kwu zjoa7oQ&N&_)o>cE1w;BXQK~XW{aDO}0T0c%qQ&SV;R3eFj!{NVw{jhJQFE8g86{UNm zm)o?RQH3Rd@%_$kbN=k?3s0X_i26C3=&BT z9*r>4Gn z`SP*XZAezV7w+y|eh3RlGAk=~!5E`A{ri4-3nKh+%deQj;>U4UrwM(93{@m2DP85l3pr;-&E6ljSj zS84D4PjbfBVn65qV_%)-c+1Jj>Do1+#CF}aJ3%2K>?|x51vMip_4V~TJNM3IdHehS zB`D}|`*!aP4kv*E0B~&pK}EgCvr?(lkhSqAR|4Q^hmWsH2FF12y35g0U~iT<+GUv7 z3yn!Hp%9i+$#Ev-32|{1TSk9lc4oF1{S*pC_S(OXz0N%*_bGOSeId)bT)*DX&=5TP zsl9z}fBXB@JMmO-0OsV_p->#*R*8~Jk`G1=ViTf=3}CCPtNpMjWUGASOdBf(Gsh#M zLLTx&b3}9WtKk$OplZSV?asSoxeyq`LMw>z_4hBdK4#JAIy6EIi2n)EvmC`4%tlD5 zKe>2H1_}<}W+Sb?C|LlRs5I(*ebvUtbdb%hwE5l5AUhRKB{BIy{ ZiXP&v9+dT8EC%;m0A*mI{{ndv{~!OxQ!oGk literal 0 HcmV?d00001 diff --git a/master/inherit_graph_284.map b/master/inherit_graph_284.map new file mode 100644 index 0000000000..29706fdad3 --- /dev/null +++ b/master/inherit_graph_284.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_284.md5 b/master/inherit_graph_284.md5 new file mode 100644 index 0000000000..9dc2ef881e --- /dev/null +++ b/master/inherit_graph_284.md5 @@ -0,0 +1 @@ +56f7b18c643a7f65284d224dc7addc60 \ No newline at end of file diff --git a/master/inherit_graph_284.png b/master/inherit_graph_284.png new file mode 100644 index 0000000000000000000000000000000000000000..7c28b65eb1a5fd4c49be72901678647106a0b526 GIT binary patch literal 3459 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 y + + diff --git a/master/inherit_graph_285.md5 b/master/inherit_graph_285.md5 new file mode 100644 index 0000000000..51c9f62d64 --- /dev/null +++ b/master/inherit_graph_285.md5 @@ -0,0 +1 @@ +b5b2037f08d1554ee03871a08bd04d26 \ No newline at end of file diff --git a/master/inherit_graph_285.png b/master/inherit_graph_285.png new file mode 100644 index 0000000000000000000000000000000000000000..e8c1eb53a2ebbf37570194d0215c7e570df462c6 GIT binary patch literal 3083 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 T{k>tp-GlDxo9b2SJPQ9e7^wMC literal 0 HcmV?d00001 diff --git a/master/inherit_graph_286.map b/master/inherit_graph_286.map new file mode 100644 index 0000000000..7dede02db9 --- /dev/null +++ b/master/inherit_graph_286.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_286.md5 b/master/inherit_graph_286.md5 new file mode 100644 index 0000000000..455b684172 --- /dev/null +++ b/master/inherit_graph_286.md5 @@ -0,0 +1 @@ +0bd76b69bc50819dbc30f2fba350360d \ No newline at end of file diff --git a/master/inherit_graph_286.png b/master/inherit_graph_286.png new file mode 100644 index 0000000000000000000000000000000000000000..53fb574454cbf3a891adb6bef1a9739368d4fb2e GIT binary patch literal 1910 zcmV-+2Z{KJP) zh(x6_3oMl)5^{)25!5iL=&vqcX<)&?N}KjVC0s$nVRIvEqK(YGnfpDjT95AD&G{^6 z<9uMSd(Qct-}jt-@7cY(cUMG21P0^pNApjh6)+h7f|;2SG%zzWf(B-0M$iy4yFjPY zp}xL85Ly_FIit~N+{)Zm=8=&RJbU(RK?E@vzG60;1^wx^GXH|l`3y#&X=!OeUS1w= z9Xn=b1P#p0jG%#;nGrNBN;79Hz#@n}VF*Y`a$B!SwX0xHKt&KP4+_`foE-r>nr~6a#e?zlq zZf+)?Vvi^k3aYBAqV3zalSCq+HEY(;ix)3k^){Q0PMFMc2M3kPMPK}L?uJ~)$u2E7_67Tlt=qLf8{{DVmZ9+Nr?b}BHNF)*w$8mJ^ z>Q!<&ogQOm>k=B*d^IT)3aY56pl#c>kytFICr_TZ<@7e!X0w^Hv$IJekx*)CD&4qo zg8-1#YIV~wI5i!+kU$*AQAI@s8I49>%}%G2IF6&Dq9WdUAqEErskF3|;^N{+ zE|=4lD_3Y}Xvn8N{)-2Hw)oA=QmK@Bdwc2U&!1FXT}?4DF)nlL-@l)-va(38*VDwr z1gX_(YHMpFBBHdkG`f5D?u`C?F|*U@q~zpeI(YCP>2x}>+wE@p_;UQh;c!r2UmwZk za(eXWk;jyg5u)hsJpwH91aI>PH%I)Wy=;)DwXu@+cz2-8lugcH_tHh z=;$alG&InL4I3ybDvAmV3+eUi*RFUW^m;u3Ae~O=-k2Hx1Yn8q7svzbatN=Po3)6%6& zDKj&ZT3cH^=9ta(>(?nSFK^Deyp3xs)oN#y<>%)U z04gXbpdUYec$|~}(%IQb0LWxA%{fL0tJO-mxw!;@Dl02}iuGh>za2Bj#KgGXhlPa! z0PJ=OCJY7x#>U2Q^ypC>K71IRot=U)8jS`UH*SPj zEQUxV!kIH?U^biQoYUL5=A#J!q*AHZ+(L70u~;A$ixC|i?W&i_WHVw_Di!MM>oG7e zfW*W^6crVrtE&s-(1IHOH$Y%I>6J&XSSe!P11 z3gO}5P%4#>$z-Uis>1N_FmK^gwNv?;*XnIDwQH9CkMxmAIHa!A7QiE(Ae0B_V#uFz^YZN@c#Y#8Ah5- zO-&8tayjp|#bQBjZZ5Q1EhZ)=V6)kvR;w{QJdE`8blx0xyB$ua6U&z`M`&m$dU|@$ z(9kd=r#D@m#x);J{y;95BQrA-r%s)M)oO*&XvD>f7X{m|UAq=4l?o=435|`77#SHs zb8|CqTaieFTeohZsi_GUE?j`YV8GPW6!dyMDl03|($c~k*VNPmyWNh~)>aq{23)>; z+3nlHZ}@ObB8Wnvpa%~gxVG(f`;6ns@87>uad9!NUcK6N(lI$XNkl|lU0sxtl0qRN zA@lk*gNUfTy`6UL+C`C(krW;tPHAarbpQT+S3O^j+S*!*jg6(y&``?A$e_~FQdiwv zb$J@sd^F9TN4}ii=GtU3(VjhfNFtF?N=gdV*47dLve|5cpPw)E_V!Y4ZZ1VdMNwE- z7_D2kj#MfYO-)VtrGIby@e@GC;^q1C=M)(k8E6@P!;_f>?`LNGoisN$BP1jQyLaz~ z(P%_@c{!9yWuRp(2tjcLknx+HJ9k2((I7D~5jigwtOEo(twD|3*sV#NwP zefl)eG6DiynHfO?GczM-U}k0n4b04pph55iQ0R&dgAqtP-4`urW}#;jFc^y!5fOVn wGb1Qq&u3-?56sMrpn;j05i~F}GlGVH0Wdm9`M0Q-5C8xG07*qoM6N<$f)GxG=l}o! literal 0 HcmV?d00001 diff --git a/master/inherit_graph_287.map b/master/inherit_graph_287.map new file mode 100644 index 0000000000..cc62413850 --- /dev/null +++ b/master/inherit_graph_287.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_287.md5 b/master/inherit_graph_287.md5 new file mode 100644 index 0000000000..837215d652 --- /dev/null +++ b/master/inherit_graph_287.md5 @@ -0,0 +1 @@ +2cac109d89a6af67278509fab844b3a5 \ No newline at end of file diff --git a/master/inherit_graph_287.png b/master/inherit_graph_287.png new file mode 100644 index 0000000000000000000000000000000000000000..395c5984f24c6a545f3fbf4f883ebab5c9820d86 GIT binary patch literal 2573 zcmY+GcT`i^7RIlDz%ZeR4x+TcsGuT))Bzz9j8Y5%LKl!wM5-`Sq=upqBGR4&4852{ z3?QL75eQAHl+Z;6=^$c2Itc>r^4>r1oxAQm>#lY0Ui*CeJHNB>W+($efwKYt00+_r}GwZ@B9zL%7op!+qRqfi$gS zpZOGk{K)9o=ZIMaAq=v{{J}1_RCbIGlapt(#(aZfAA!U6_%=2)Vw# zzO>XN+${!cW@3_9{S8i(5)~Bsr(`l94$!XI5-Glx9GzNq5>65LF^y=K)2aIy=^{4{_w6-&g#kzR$qH6BSyNbgr z3o~INXU^c8Fkk9IH#v|s=A11=j7()$%u-^wz`a#*bOq7 z(a%khNXb9_qmdV`X={_o|E zsE9)p#cHwpoZA^n$AGrBHf(rksb0jFMYw1!;l7VE69b%cM83xU285R#q6U?MXE?8aVxe92)}xc(ElTbmQr*A}cGa zGmydF*G>iOrLTeSsZ?)oZz{TYC{;ZeUgI;?>_THium>h5R~HvGh4=KJBGC3pMkF_2 zNE&Erf&&jJ?L@{bS%7gwhr5xBxSSQ{cZfH8qx(hE?Fc{5;Ks%QgtP zROE%*C=|-jFl2oWkF_;1=^>kBDT_mR;A3NBV6IgqNAdXps3^Ye!`2@iOr{9$V>?EK zmI|uC44I)>+x-a!#-LihIXJ*h@Mxq{8mIm3?CjiB=+)I$23~=IY8Njq&2_$LX=(AQ ze*gNlVX-s3C+g3&dkGSxHe!njl^e<=& zeq1x3urvTzmpP0L50mIdpR=z$O1f3FBq=N?c+Z$TQa5~{k@&!#6*1S%xrtIJ=s;tef_Yl ztE($fLi1@{oP|Q#=v$|_Cr`Sa(e{r^KO-k`5KXcr8BL!~xE9im9+qQXLv1i${m zo9RaTK~DYS6oRmMidvL4^3GS16Oj9gt{9Qup4CpSJZOK?! zheE(w=uDlgqGAb|{1hQ~mDtT>n#JfTkN$ zfSasR->Fhe?B)icM$pQ`}c^sjuQl9b(5S!r8ps} zuI}z3HizDdqzZ?Hg*^-iFgk}eHWrA{`$P|*G?jzVlnD=V8R(Kqdn{kdyyZB5SW%|8n?e*Bp5 zah{it&sAAmSU5Q;Nhn5dYGGkvYAPi&^Nlq%RhjOPo0DTAmntbGMMPehL7i!_EziiX zfy3b*9tuKn_O-#juCBkUz|_=EfsksM*3r>Xa$-Q>DaZ@1G~2gM4PWZRHF@Bf_pN1M z5zM@@o?PAV@87@A%*^~VF=3hq)16ox`7C_0J0eL+8bEZ*G<2s?twUErN-D_Tf0wgGrBLoiM%FjM^q9dZ&f>73Z)vr)*TfQh zy}SncEvds;EcW>Ew$f`Y@u`LV!YN}cmO)#_ zr4WgB_V!u1xn;9oGW}DAz0|XM+*OEjsb3d*vN)Nb+$T<)2n`KgcunNSBPwXL)K0h0 ztG~@fYV=?*1NfT8oK+TU{vrLrg9jiqPYIB~>XAt2uUzTr?_V<|HLC64B{Y1dHrRQv zNKpZtD4vIHd-ayTKd2sO0u*9lEkqRms<3bd%vnoIYhq%8QxO3>T$!ltupg|-)Dppe zc==LXC~k0cbO+>9#ve}Lk$1q^^5!%(zB=g}(;hk7CWzBFx3|A6ibv&WtM{zZyBiM^ zH8eDwot@|B=i8H{DlzY`^3myZ_DpMny1F`OXqBZ zLQfQjOR%V(T)?PQC*G7lyOndFsI`nJI*7F*R-)A2OWP8TUYGx;PXWLNh@W>G&$&*< zsq}gH`HhBRw%%@GhTmANt*wn*`Q@G%KR6(eA?X;*=A#|+qb`T*|GTE2+;BUo2NkR9 RufYBeFuI9Cl<8w){|%};`~Cm` literal 0 HcmV?d00001 diff --git a/master/inherit_graph_288.map b/master/inherit_graph_288.map new file mode 100644 index 0000000000..7957079c06 --- /dev/null +++ b/master/inherit_graph_288.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_288.md5 b/master/inherit_graph_288.md5 new file mode 100644 index 0000000000..420462d44d --- /dev/null +++ b/master/inherit_graph_288.md5 @@ -0,0 +1 @@ +9c001f24227a9ab17fcb06b8d5ec1b5a \ No newline at end of file diff --git a/master/inherit_graph_288.png b/master/inherit_graph_288.png new file mode 100644 index 0000000000000000000000000000000000000000..20469520cec4fd81cedca9612a7def2ced8122ee GIT binary patch literal 1154 zcmV-|1bzF7P)zixjZ&`Js+1QWHOK{zl_M`1`|*`PrfgbgAh zkQy{7iY7sn4Qvoi!pI0A|I|#022l{9lMI>!iDsoB6r~WyeSE|-h4bmv5&P|)n`ENQh` z;`8~`)YL@#`}^tfR4PT|U1578VweOeWFa z-=Fuoj7B4>tE&+XhvD^l;cz(e&Oax4ILU}Yp&+Z(nr=TlJP-hi#bR`QeN6x;6bfaX zt5hnx#$Y;PH5dz{g4t|_ zL?Xe-$w^L)l9G~7>xe`mJUu<({{BAQ7l}kZ9WNW-ZjM+ihQVOK(9jSrE-sKtrC_t! z;PrX|0QL3tI6ptf>+36H42#7Axm=#L9goM+)6;{4g9AK1J|dM$VQp;<(P$JZmFkZ* z@FFu7S}g!za&i)T zdwZy?tb|&v&O5e9B*N(ED3+F%Ad|@;7K>rC*6%`eQ5y;~P#qj|?pN|9rL0)rm9S9ho=Wu+C%jH5@Ss6MyIuMCOFf}#BcqIP} z|BGJ;iiJ+6gU91RLqh`$1_RpL+hMg@3l^WNoG(yYTMMVt`EBvJ%3(2_IV^@VhsAK_ zuo%Vzf!po=$vpmA{C+><7^68%|E1#iIZBAQ_j6bZ_kIqW;mlz%oH;CpGl#|e14m~w U6t9q*o&W#<07*qoM6N<$f + + diff --git a/master/inherit_graph_289.md5 b/master/inherit_graph_289.md5 new file mode 100644 index 0000000000..a6ee21ebda --- /dev/null +++ b/master/inherit_graph_289.md5 @@ -0,0 +1 @@ +ff2dfe23d7285e8b47469ea9ecb3d8cd \ No newline at end of file diff --git a/master/inherit_graph_289.png b/master/inherit_graph_289.png new file mode 100644 index 0000000000000000000000000000000000000000..23df11139efd8ed204c6d027dad99dc27b913bfc GIT binary patch literal 2599 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 ANB{r; literal 0 HcmV?d00001 diff --git a/master/inherit_graph_29.map b/master/inherit_graph_29.map new file mode 100644 index 0000000000..f4518c76a1 --- /dev/null +++ b/master/inherit_graph_29.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_29.md5 b/master/inherit_graph_29.md5 new file mode 100644 index 0000000000..999c32a7f3 --- /dev/null +++ b/master/inherit_graph_29.md5 @@ -0,0 +1 @@ +dc1975d2a8c310c5698aa917b58b3bb7 \ No newline at end of file diff --git a/master/inherit_graph_29.png b/master/inherit_graph_29.png new file mode 100644 index 0000000000000000000000000000000000000000..ee86c0d861463ae7686b793eb8e03e38c50d645e GIT binary patch literal 1245 zcmV<31S0#1P)TaK~#90?VC$1J8cxkpFtvjK`m$^q9$%3K^GRRh!x@%8)DIFM2IxH z7A(bO!PdfM(TGIZ2ohGovuL4j7l@Ey!d8Ntky5zI^(5%PXwd3hOqeSLw@!uST`eV%#;z#Oc}w<`~kVSxfmQA z^s2_w(-UfIYY`CnZCF%|3@Y#C$YA+28Y9e-Q8WE)C{ysN8=l9G~Kj$dD2iRXE0YHIrQd@e37sHUcdVq#)QsZ^3ytEH=}D=Ge7v!{Hu zT1~C3t(2diPvPO=1mMlq*4FmrYyF8oCZBbt(P%_>cQ?+@&!N?7q0wkS|Nd2~(P*%_ zxrv#X8Cb1WWM^k%et!N(wX|9-EEWqE78YQ)+mV)*hRVuHyuQAA)Mz%FVYAtw)oMS@ ztE#GkD2mwH+QRz!Is`$0Mx*g6e|UHpot>Syxw!!mL9f@Nv9S?EgpQ65kJ`V)H=K8i zTCJwu-d<^ZeSJ*;$l-9%@$oSMAdAJ~a$i@S>8_R_2n2vmPEMrw%gYNzMn=;1_O?fz z3kwSbfb4d=+nl4LBLYBHt5urY+1Vigbb5OFLGxGg)oL|$bacEqj$W^)#>PgEn&0D> z&QvOu((gZi{r~`+PA6=Ia!MRG+(7sdDQ1EzrFzCc^)q>FE~0n^14<+LIQ$< zf^d0x2_ky4m6erw+&?`%9X!utWMsr`PJDbko}Zs#x7($;!^1-<_S1Zh<2;|Bm;Ab! zDwPVQrKPB=tAp8WhA4^{7#P6x^z@Hvm6w-8r_e80Nvf) zQfIs$a~y~M{(cM%4WXr_1s0114-XI6+uK81TN_L!6A}{>k(ZYTyS0E5AR z;^Jb&#>Rfo^xgd5#4nE~BO@co%*;e#VIdL|6S1+efr5g9AJsA%jYvyNLve92lu9L< zo13B2>At+oFDfd+;^HFq_xF*Tn~Uh^Xw=lyK%r1b-90uohVbxkWMyR`J3AY3ad9vj zjc#jxH~-i8#toM77vPr#5F_v~Gi3xbQ${c|Wdt)*MldsF1T#}cxP8^qWHR|v2jhz@ zFE6`|xi!<>yP1r?7mkR1pD7dA_nC5nnJFWfnKFWzDI@*?eFz68K}%KR00000NkvXX Hu0mjf12{!B literal 0 HcmV?d00001 diff --git a/master/inherit_graph_290.map b/master/inherit_graph_290.map new file mode 100644 index 0000000000..ab68436bca --- /dev/null +++ b/master/inherit_graph_290.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_290.md5 b/master/inherit_graph_290.md5 new file mode 100644 index 0000000000..c2f8001444 --- /dev/null +++ b/master/inherit_graph_290.md5 @@ -0,0 +1 @@ +b10ad374d67d9ac34b38e72f1529d4be \ No newline at end of file diff --git a/master/inherit_graph_290.png b/master/inherit_graph_290.png new file mode 100644 index 0000000000000000000000000000000000000000..88151cd042513400930faab7ff61717b802a3f3a GIT binary patch literal 1922 zcmV-|2YvX7P)iYRMfMhU_eVGW_8w&ueob8YCk!-yfIn<^J~6 z=G4CHdtQH?``NkYyg!HcJ@<3BI~YY#2mpuz(w`Oph0>lzptyZJa5F_#aoqBqDmP-#H_Sn69 zw@(DrLx5-j9s)!Q@DLzcmfJ(Qxw$uP+*syGV-6mV*V)2<{9@@Nl^X=QWBRYk}VkwnMVkA91{kQ(mYPGeswUNpT&CZ=W zVHk#Cm_niC=jRU$3}EpEB(=<_)oPtihqe3r`+c6q7ni?hA6g=$QYng}6B84BKEI@- zMHL&Gi|lsi|r0+O_`eh0RX9msu

V^#)u3WhS!?4|MhaiZ-VD$I*V|~nKGYrEHhXaBjr_(8wN|{V%YHBKiAY)@= zK9f?ZRJmL}H#euzX#A7n@pugl4coVGr%)(eU0wKDA3l6IapDA%$*irdrPJvZ6&3#J z_%9k3|NQy0e~t)(z%WcAk=ShZxpU|6_jZB_2uMv$O;S=)Sy|b-b?eTaJ!>=?!&&wa zEN~y{=;&x_YMPv!6pO`GRaICrRaI5*-o1PF?Agf32%pb?_3BkuR~MhpZ)_mh@;ffV234?Q*y7x^>~g z1&6~S5{ax<>!nMVa&mIEZQJH>IPTuPYcv|qpFhuLv;9Z&U$hW8_V)IoC^|ns|LD=9 z_V)IB_wM225Cw!zHY+Pjp-`C3W~EYTFc^3|-qx*KuV258T}}%DCD7g7?Gp(|c6N4i zb2HYSnwo+j$ZR%a*REc#_vwr;H-eDJw1&zCMG7ZxX0t6QmMnk!zhXt6%}FkvYDBg zLx&DgD3r;`N&lp>v$L^X0i(LQ8iF8+L^3xw7dq2mixwY&M&dlauj2zm+sHG6F#moleKf=eW4I+1c6A z(NXNv*49=ShS#iF^XAQ)$B!S=XtaQXWMpLEZMj_D($b>S>6lDreSQ7l;2;|0Wzi6e z7BI)2o}QeXoRpLl7>1=%so87}C?Fg>9#3CiUv+gghr^kgn!0xF+R>v&BN_o`(Q0ZI zi{eMOR zmpH)|Eg)8_wX(9Zv9Zx&v3R{+g+lS`*ROyALi6$CN105m12&t@Xf&QYc@qDK$K$oNwK*J)v9Yn^ z$B*O6OG-*463Le@U%r3;{`T$L($dl&KYoOmB1BR|Hg4P~m&?b;$5kqo$z;Mx1tP%~ zEg){U+w1kNT)8qaF;T14Din&}EJP4)-n{8{yB|J$sMqVyoH-Nz#Tksne75iG?A)|z zQ&CY7hr<~f8rrdA2LwUKjvZ60)nqc+|G6v}6%`dqrLwWHkw&8l1cLbZ_~*}`CnO|< zucW)X+v#+2xm*N6#9}cXm&@gLyPZy_BM4GfR))trIyy2lGmDFh)6&uo9y}K(qi40ip$X2oNp*1DeCh&-cB3TmS$707*qo IM6N<$g4b59?*IS* literal 0 HcmV?d00001 diff --git a/master/inherit_graph_291.map b/master/inherit_graph_291.map new file mode 100644 index 0000000000..1ec48dd6ec --- /dev/null +++ b/master/inherit_graph_291.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_291.md5 b/master/inherit_graph_291.md5 new file mode 100644 index 0000000000..1b071a2fee --- /dev/null +++ b/master/inherit_graph_291.md5 @@ -0,0 +1 @@ +6675b066002cf0c74c7e246bf30e563d \ No newline at end of file diff --git a/master/inherit_graph_291.png b/master/inherit_graph_291.png new file mode 100644 index 0000000000000000000000000000000000000000..b85e005b6a986b45a542238a85fa70fd5f9b20de GIT binary patch literal 2707 zcmV;E3T*X>P)3LzmO#K*@|U0v;5?~k$ZC5EBL z`t|Gm(zd7gPn|kNa&j_ZVPVXiIg`bU7qfZuW*QnA{L=4uRaRC~S6Am;uBxh{rlw}f z;+gW~ywT<54#0+{lFs7be{9wQJY-_S2#bpaf0sdZYnA&h>MG3$BrG>tzUn6^2sO3$;p|Nr1eX38Vm+reDOur ztXYFvt!DA!#T-3))VcoR#f#+S<*{(#LTpAAT4`QHYC+ zbKCyTojX~yXpzTdf5kccw6?9S4WrSBTCHa3(xvR)y&FYQ=$M@b_+1c65m@$LoiL+O=zAZado8?Ay1G*I$2~o}M1k($Z*eZ|Ci|-)6;%6|7pdik_YxKKbMm8XFtg zv111d7cTTE?jb2DDfIUCQdd{UPe1*H-EJo%Bg3VRr}1M*NGc(htIMUP8 zvDs`c$+l?#@an6t;&3=fO-<$g`|qctqhriieX(rWGTwUYEgTL9 zg@uJQG&Eo^7)VG+;DZl7aPFA>LJU(@RwmpOk19GkTI|}j%emau)g=Joa5zLuON#)6 z)oOLSZA?szC@wB`DT|Gb6-7lwUiYunYQ?+nzB{5^qtUpuGg_R(`)z1w5P)cJZ+F(O zs;Uxz=;-JWLI@Ea9xjd@JLX((x7!6Ey1Tob&s$qto$Ch&2ZdU#7H7_!5kd&DZrwVO zmzO7m5TduYS8Ut1O@xGmi1X*qdmNkS=xFiUYp=PKWo2avK$uJ>(bw1K<){f~41mky zv(G*g=gyrIfM{xJa@PIz*Ixx7{`~V#uf}tD{KtMr359zq%S> z`t<4i`|rOa%K!Q2A8xwoCa>Zg&f#z{Yt}56`o6q|rluwU!o$Oz6D`xGP2=Lli!?Vk zJL|pk&O0cI!n}F&`0>Xd`TX74b3E+y=CyR*#O@dUX2_S*qyZEbayrKhJOgy7h*W245H zlas^Y!-x6nufI5S=n%od!ED&D!KIE~uOG4Oa5%;l>sST{2RVB5C|Oxq==FNKy1KAf zEIjqpQ{!sSo$Ed!q|@mb9314_xpVFV2%2~Zdc7X2)#_5#+1W{VclU@l%v%u=5ey6r zxJ=FrzqU}RR4#Asf9qKYu<~uU^GwvpLI#W>e?SpYK&0 z!{cAFWC=Q*Zd~^pmo8mOY-}w1_wUDIv0yTpm_B{FOP!$|;*iG1Mj|32eC}&BzyJO_ zPdxDi5fKsO=H{Z;>#3`&y8obHRcI7>!1B_(m?$`!9-@Mdg=yYtRFF`LcUY&MFDim==5l$Divz5NiqUeBsktH{mG zrLCL?>+YJ-OJNYKTUmoJy)(=p}oD`Fev`%{Sk~;c$?Yl;qnBAH&|gd%1M!5=V|4!D_Yg^2;xe z`v5SONx7AB;J^WvFJI2Ob?eaU^_)I^n$@dU1Mti<&rn%eiAtsNI9ofGl#~<-3k!Ma zrI*lXG{nZn5*!@N*I$1KEjKpX(j+n?Wo6U4~b`l;Qj?ri&IXT&7 zeMw0PQBhGOCMFUV7RFYH5$tg(z>VJD8_MPh#SnvP< N002ovPDHLkV1iD>eS-i1 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_292.map b/master/inherit_graph_292.map new file mode 100644 index 0000000000..f118d66ed9 --- /dev/null +++ b/master/inherit_graph_292.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_292.md5 b/master/inherit_graph_292.md5 new file mode 100644 index 0000000000..5dcf6a8539 --- /dev/null +++ b/master/inherit_graph_292.md5 @@ -0,0 +1 @@ +e8e8a2d4988cfd77ba892174a0ce656e \ No newline at end of file diff --git a/master/inherit_graph_292.png b/master/inherit_graph_292.png new file mode 100644 index 0000000000000000000000000000000000000000..2e5d40cdfac93ee59d51d82e6b4734b46ed542a3 GIT binary patch literal 2070 zcmV+x2~4;R0V|6ls|n`L0NNV1)&NlQKklP+Pt>X>OwPm6hrJ{c+)Pf7_bdTvnI! z`RknTJ@@-K_j}L2=Xga>6a^5-KMv(jI{<;W0GP)RG63@!LIz+SL&$(TvD4PpR!~sz zr(A(R>}UP@^$LXo@BVK+)@rp44GjzK5(MHHDwV3Ot&J#gw;WVoU%ycPKp@VrXU`rp z39OGHWB}$dgbctuhLC}U&g00)$g;As1vUyHJ>*%B;Tz&A{>7R6?RmUz-MX7MZ#r}f zm&+|FDIrSy{r%^hS(QqanVIRRd$x&gq#moHyLA`yeZ2o4UueEBkhAVWh#001_d{q*TmY>ZB)LlDGdG64W4CMM)^ zIfuhpym+xlBH+R#fO+G$8H8nN(UGLt#%gM>% za5$NnnJgA7F)`8p873+ei9`s3P$(20k9Y3eIs8*wp-`w$D59gI>2!KJWc#+W&i-`>FJ)Ho(TyFt5&T#d-iO1cekCBV-+XY zqcg9i_KdV0dc!&_ThYier3!^6wV%TW|nsZ{fE zbWZC;l9H0Vyu36TO;b~oJq3VNDpjl1&!0c<@9z%^3W|@9$DfcTR)e~6&cTRm|UyX z0suxvMzF@fzyKznnVDfQ7+qamD2m3!#9%-AqoboojvVpv@zLw`mO+JvhGNSkMp{}L z06->_jgODpjubOtmNb?Mi4+$XCnY7}b_)s$uy$)}D}o>s6BAfBB_$;%CkGGHYIGRH zx&njvjOJ;=Mj&PwjmDijcLD%%b93h$EEbE!Vlh$TE0v2i#Y3WZ`Y7?v(wYN<^wmlqWk znF%d}LJ$ORGnvfn?Ck99?6+^nv#-|nVHGua_x))S2#F0n4Fy4(9p1T z>sC6QUR+#kR%qJBc62Vmwh7|Q5PARpeOXyqb#*nJPT#wCZ)azx{g2oZmz`Gx1_p{m zqV)9i4<9~^j*ga=mNqvx0{{X70=l}otZsyVwa?4Q$f&BSx_|%v({5IrWzX?)oS&bGiTlSS*o9l#q~s%PT7@gMxx~?AYPw=XdzFH@hze7P$D3op6 zwpCPA;BSsYaJk%z7cV9!Co>ofg+f7e+fE#f&Iz0_k)NM`<;s<)s3?~>fDlW!y1F`S z58)Eke+hcMJ|G~#Xf!Tcw(L*)0&xx4cbmiyjN#uwAY=gMF@y}b?7ZTy#oynbWR()c z61W~i$N + + diff --git a/master/inherit_graph_293.md5 b/master/inherit_graph_293.md5 new file mode 100644 index 0000000000..7848c28f96 --- /dev/null +++ b/master/inherit_graph_293.md5 @@ -0,0 +1 @@ +67e3a0d80209724c0200772b08fb7970 \ No newline at end of file diff --git a/master/inherit_graph_293.png b/master/inherit_graph_293.png new file mode 100644 index 0000000000000000000000000000000000000000..ad3e7da73a648b9dd0b61bd365af1bf608a7a7f1 GIT binary patch literal 3099 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 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_294.map b/master/inherit_graph_294.map new file mode 100644 index 0000000000..40bf502641 --- /dev/null +++ b/master/inherit_graph_294.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_294.md5 b/master/inherit_graph_294.md5 new file mode 100644 index 0000000000..bf890afd1b --- /dev/null +++ b/master/inherit_graph_294.md5 @@ -0,0 +1 @@ +3907f88e5ba51e44337c1a5358dc9fc6 \ No newline at end of file diff --git a/master/inherit_graph_294.png b/master/inherit_graph_294.png new file mode 100644 index 0000000000000000000000000000000000000000..fab404e382e4d1887cd4bb699dae06bc72098d36 GIT binary patch literal 2912 zcmX|D2|ScrAAUo!rpP)fLY5>3LuEJC#+rsfmeP#n+RLuFWnab;uFKfsBH1cK_H}BE zvEHEHW&-;7dbAG?~eb4!y|9Sq;^CVcB8*y`pa6k~mZDNeH2K@lI zRoIxovrPZO2IyFCT{A*Lhrh0(w(<-J;^a3$>e__leaiDd@!b@pY>3IYJE(ec3b=cS z&zVXXB5cV=t0Yg@*dY7`>l4Erc?lw(Oo+=HLw{Bh1#eU*66~X>r~JKT%t`EL~k)B_$k27#aWdExdVOd zqw*OTkX9@f8yOiH5D;K(&8wm*D_c=qTucI3Y(U7!d>F5GzzycHb8z$x4N?3Z&!tbQ zWoOl8FH{Q7l6eSMDCOwDz0?z8QY zE$B)!V`Iw-o0gzYB5=3f-gJq2`%e|u%RN0k8@#8N>GazwqaYQGwY5hX8P(tNscw6_ zyWa0wG3U}FcDG)A_^lcv~Kb^HIo3;c&1Vd(?OjD^UUvKX_ib6w$+7$nY?r8SU z%~PYJq`RxuSMr^loqgAATwKH)rNv}rWuf0kM@N^Jv9tn^5EvwuL3PKNBWfU$jAV86eG5vC*CywWmV`Jy7=WkDwr>BYP0!gm`iwqTL(*4vq1r=KH zhgv>{q?vMyv(WF>716KAWTYs?cc#&G$^}8pClVbnm4BR{^iL<3t3TNymf8kL@w)=A$){5Gj`V9)YnZ-*Yx6r}y-mZH$=>MEdyuBcg5k*M z=-tnAUCqr`IJ-PR^YUW6YYSf)%$MS&4(4CIXhcnMx6?P$nvju~7gce86V1*SqVW#o z^>wl^Gi28mwlh{~J3BLj+E5!%y04q?^EI)uN;fa3 zZ|~|oPHUwB(0JD84q!pT8XMJ%+lz|CK$DY8q`E0!UP!8{)?dq35P1EPDl08r-rL(t zr=;@bn4OoCTLU}|xPN|ro{LpNULGZv^=Kn!E{3R6GAwWROh;Z|dpE+@ccZnn_2A&3 zx7RqZF0g6l^wl6#p;msEi<_HUS{p)8%Av%STPT#__w^&D(c~aC>L+@1Vj?^wL*Ksd}i>3<^UZe+o5X>4h^I%z&Akv2g1*gFHs(Eaovqh zjx$A9**$k3K38J#MwHixrp$(U&5UBX2$V+|+wTIDMBsvy)Y0|;R!AnR@52Z8CmB<9 zIG)Gn;cGtTScwyCa5&sBSxC2Jc<+ix)~c%HJlygZ#pr%k1Z{9ImI64a zTM<=0(zO5_!9>l?ef@nH3^osA>@X&#>4(1hajOsSJM>dS*mRQ|6@r6;mIIoeu{pn^ zEd`WXo0JU42VXbbI`QI6+07hombC~7s;Q~D33Ow;8fK-!dnw(++q>=lk1$hHj#SG2 z_f7f(=40p@M-M#P{cED1E>{~%zODDl_Rth}-`v`Q3vt17xXO-a?uUkkuI_~8o0p?2 zU7rejXT`5uVguJ_nx5aL{OwN4%M*3r?|1v2A1SvOaVL?*5}U<6dfB2AnyhY$iTpWo9ap7>p9#Xz0Mk?h=O7S zg22wnSr?wB&1BT#W3O*zb&_BR(+Kgiv^+r^P>_)kTdTLfSU6Ou;=yYpnr6^?f)ftA z+S}LnwgcbMBQ5+Lc31bS|59HTVBv-IW8LRb_jK{I_ePiu3=9Sb2SHiYR#af>u!Moa zFJk@MYEEhcCxwMEj*k8Fe$jfaNF)-C9$@LkyhBm5(=p{DC%(uf{n!Ic;ukj^;-D=>UJIr>{>{6$;x+ErLke|M#H(n$ZL1 Y_XvDrDi^N>u*{H&fjP29&*kBN0Fa!YE&u=k literal 0 HcmV?d00001 diff --git a/master/inherit_graph_295.map b/master/inherit_graph_295.map new file mode 100644 index 0000000000..a7d3db85a9 --- /dev/null +++ b/master/inherit_graph_295.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_295.md5 b/master/inherit_graph_295.md5 new file mode 100644 index 0000000000..cf3e731666 --- /dev/null +++ b/master/inherit_graph_295.md5 @@ -0,0 +1 @@ +8003e179db706c963fdfe35640eb2f9c \ No newline at end of file diff --git a/master/inherit_graph_295.png b/master/inherit_graph_295.png new file mode 100644 index 0000000000000000000000000000000000000000..d3724c21dfcf09165fe7055270f80a1a1c50b5a4 GIT binary patch literal 2365 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 + + diff --git a/master/inherit_graph_296.md5 b/master/inherit_graph_296.md5 new file mode 100644 index 0000000000..41753470a6 --- /dev/null +++ b/master/inherit_graph_296.md5 @@ -0,0 +1 @@ +5e1a26eb656063d05a04dc787e90a111 \ No newline at end of file diff --git a/master/inherit_graph_296.png b/master/inherit_graph_296.png new file mode 100644 index 0000000000000000000000000000000000000000..9d66270d219c32ef59b86b0ba953d08c2f202031 GIT binary patch literal 2350 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 UdfQT5JOBUy07*qoM6N<$g82oKy#N3J literal 0 HcmV?d00001 diff --git a/master/inherit_graph_297.map b/master/inherit_graph_297.map new file mode 100644 index 0000000000..b8a2eb5c5f --- /dev/null +++ b/master/inherit_graph_297.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_297.md5 b/master/inherit_graph_297.md5 new file mode 100644 index 0000000000..55d6aa7f0c --- /dev/null +++ b/master/inherit_graph_297.md5 @@ -0,0 +1 @@ +3ec0dde6a9fd64147a9f4cc3d43829b5 \ No newline at end of file diff --git a/master/inherit_graph_297.png b/master/inherit_graph_297.png new file mode 100644 index 0000000000000000000000000000000000000000..2dfd37a3219d99f671551e6ceb23c168b01e9726 GIT binary patch literal 2859 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 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_298.map b/master/inherit_graph_298.map new file mode 100644 index 0000000000..b8a2eb5c5f --- /dev/null +++ b/master/inherit_graph_298.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_298.md5 b/master/inherit_graph_298.md5 new file mode 100644 index 0000000000..aabc3d570c --- /dev/null +++ b/master/inherit_graph_298.md5 @@ -0,0 +1 @@ +d8e2777308cdfc2b6303242b1376bd5e \ No newline at end of file diff --git a/master/inherit_graph_298.png b/master/inherit_graph_298.png new file mode 100644 index 0000000000000000000000000000000000000000..c913ebb83d9678131bacf2d7cba688a4fae55df1 GIT binary patch literal 2813 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 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_299.map b/master/inherit_graph_299.map new file mode 100644 index 0000000000..b8a2eb5c5f --- /dev/null +++ b/master/inherit_graph_299.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_299.md5 b/master/inherit_graph_299.md5 new file mode 100644 index 0000000000..98fe2dd17e --- /dev/null +++ b/master/inherit_graph_299.md5 @@ -0,0 +1 @@ +00fce3ebdba046dfe78f9f2de4175433 \ No newline at end of file diff --git a/master/inherit_graph_299.png b/master/inherit_graph_299.png new file mode 100644 index 0000000000000000000000000000000000000000..d43711e3e5359340d17d12a93225f1e0e9bc389e GIT binary patch literal 3377 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 Ee}k@RVE_OC literal 0 HcmV?d00001 diff --git a/master/inherit_graph_3.map b/master/inherit_graph_3.map new file mode 100644 index 0000000000..1bd5479c32 --- /dev/null +++ b/master/inherit_graph_3.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_3.md5 b/master/inherit_graph_3.md5 new file mode 100644 index 0000000000..e08137e027 --- /dev/null +++ b/master/inherit_graph_3.md5 @@ -0,0 +1 @@ +eb52c1213b13e271be6dff26dbaf52d7 \ No newline at end of file diff --git a/master/inherit_graph_3.png b/master/inherit_graph_3.png new file mode 100644 index 0000000000000000000000000000000000000000..16c06226678b72536b91e4a3d62c037f66750082 GIT binary patch literal 2528 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 + + diff --git a/master/inherit_graph_30.md5 b/master/inherit_graph_30.md5 new file mode 100644 index 0000000000..67124d120d --- /dev/null +++ b/master/inherit_graph_30.md5 @@ -0,0 +1 @@ +4696a955a3c95692dd6e9dfd0a3a3b17 \ No newline at end of file diff --git a/master/inherit_graph_30.png b/master/inherit_graph_30.png new file mode 100644 index 0000000000000000000000000000000000000000..f0f76de137ac201426004faa71cdd3219c199339 GIT binary patch literal 1311 zcmV+)1>pLLP)y{ zoaggtNm=ks_xv=;Q8$4w3-bUNp*v$Hb*fJUQ1nny=R z0Dy~&3v?N7e6q5#dV70cvlSN?J5N`4cemYcSE*D0fa~jP#B*h31pr_&nVgfjhr{7; zI2^R)lh+4{L_!V%0|Nm7Hk(bW)%yDS(rC1g25K}K005axh9C%nAYWhKySqEBR_iK5 zWMm`&z+f;qcfm01=jTVIQjsQde?#>4&?h!F7VRt&iO`e9U@#E7Uat=h4t_lshqHD_ z@*%vopHr#S=jUf+^?iuAxHumlAG6tvKJ(JjQdj<|si{;db!uwLxr;)fJUu<>bULJo ztYQj<;<*n5L7vnc6BA>#T8%~{(p0O}=w1(#yo=ZLh>eY9v)MwSP@zy*ESAyH(S?Nt z4+G1}$^-(z>FMdi!^6(bPDMq<G$;kZPA^dF|Q{ejtw!rnk7PubR0@nju{0D0K V4wptCruqN?002ovPDHLkV1j + + diff --git a/master/inherit_graph_300.md5 b/master/inherit_graph_300.md5 new file mode 100644 index 0000000000..f12a8c5f29 --- /dev/null +++ b/master/inherit_graph_300.md5 @@ -0,0 +1 @@ +de69e86f1d9d7a8e14da909bc763e28d \ No newline at end of file diff --git a/master/inherit_graph_300.png b/master/inherit_graph_300.png new file mode 100644 index 0000000000000000000000000000000000000000..543ed0bcb17831ccd7bbfa79d4addbc45d25216b GIT binary patch literal 3222 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 + + diff --git a/master/inherit_graph_301.md5 b/master/inherit_graph_301.md5 new file mode 100644 index 0000000000..3e12dca033 --- /dev/null +++ b/master/inherit_graph_301.md5 @@ -0,0 +1 @@ +b0bf1054e14f255a0f88813524e66d18 \ No newline at end of file diff --git a/master/inherit_graph_301.png b/master/inherit_graph_301.png new file mode 100644 index 0000000000000000000000000000000000000000..945ddbc0f8bf072e80b7d7415f5c5243734b7a26 GIT binary patch literal 2896 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 OGQ>#F3|ob9N%$8uzLTv0 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_302.map b/master/inherit_graph_302.map new file mode 100644 index 0000000000..b8a2eb5c5f --- /dev/null +++ b/master/inherit_graph_302.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_302.md5 b/master/inherit_graph_302.md5 new file mode 100644 index 0000000000..64a11f541c --- /dev/null +++ b/master/inherit_graph_302.md5 @@ -0,0 +1 @@ +ee157ea4b229d18fd9529b83e00c4182 \ No newline at end of file diff --git a/master/inherit_graph_302.png b/master/inherit_graph_302.png new file mode 100644 index 0000000000000000000000000000000000000000..c5142be39f8c5015fbbaec00c21d7959cbf48710 GIT binary patch literal 2290 zcmVY77dj2f5@S({d7+?hBFk88^;&Q-Z{NNh_wL=BQw&c} zPZSmw>a;sMJ6lxjmX;QzrKQa&7fXnUhyaVl0*l20o6SaWa4?#hn$-Q)sLj7*zUyU* z1sC&jCnF;Rgb?)g^&uc20Q>gs!@$76oa0VUPotrs0m;e95Q#)q$aL{z6)_700-Qg8 z9${f&;BYwDxN#%u>gv?}-tEEa-- zg7n7E%ge)t4I2y|TPsiPkInDjze6Y#g2Ulp)22gvP$+~{D%G1Chr@wLB*MhR1e%+h4c0~=5Fk4{ z8zCVfV6)k%tgO_C^XbzkoH=s_JRT2eX=!kCb3<%w?5t~IXzldX%Tz2&>MF;QjmesI9F>rsTwEMhu3U-E&Q3gg_RQjs{KUjWNF)-xe*GG~y}j`D^+i-v6sD)AP0lq| zo05_eT)uo6qobpUkB>)xe?P8WyM}Gswqf_~-54DmMR|ESy1Ke>>Cz>5d3nvcCWh8- zHnHYX53?XzR8>_GJ?8n4e}BJve0_aA0YC-^2MHmBxVgEJ zSFc{F`(-j20YFAZM%4fJ_4TRyRVo$Xa5$vBy`2z3NO*WS$;ikcgb*?|Hb#ygKTglgm}??1Eh)J86s!_m=E zW4tA=p}V^q0O024roPFuwYA0g_&9ocdeq~tU%w6(iv?F#SG;}u7Ehi$0hh})8r#Fe zL*rN^5}}}=0Bvn;;PH4!Pfy32H*XAn;%H;dwKEjU+FEiTN`cZKxXEnwM1Ok+nmSS{t6jG@ar%#{Oc-{ND8B z&!0cd%E6r4XtR0qW{5;0^!E0msHg}snG97`Rc6os8&hj%X{@={!xZ!K)m&Lw8MbWM zg7ENg@cDeSwzeWPG!y`km6e5;FJHpJ!NK6S8K#JhjYVN$Aue3F04|q{z`#JPSg`^x zUc7*vo!zYSuBxiSga>B7=$B>+y410Tfv(7)4+Su6GV9%aCxPSk?#+%GijIEue%(Wh-U=ghgs~L-( zxz}6E357xd7Z(={4h~}7x^)Yk&a%XaKIyNsDa?V2nZg(h{?de^i?g#cz5H6l(4BdX zC=?2fN8FT!gNm8L7?z!wBO)S@nVD(un6h-C*USv#hoG2F7fRrfi|cY>uw3u6X$HA&wk5f{u<3h{a;m*4Cn; zq5`(Iwq{u*we6qU`1$$a>eZ`|%jGC6EJSB#CjRty|SDIdkV~+dmDVQmIf^SBIpeB=Grs3=a?E_U+p^ zb?TI5#aKen8$b*A+ZH+_=)bQ=XKaoG0|QvQcCFqR)6>&PN=kxIC`5B}GfGNIkdl&O z)?7f>{;AF9&!16TT#Sl}3anbS3I`4xKwDeetgWz13C8Wr*807mK1|s{&9OP==H@~s zlR+#NqrAKvnVFgR`0=CFERuKc-o@0^6l!W}AdyIrlasS7gbXlH%>Nowwoqd>$HvA+ zT)A=u)z#H-baX^WNC>jBvJev!1Eo@F6^mqkem-v9x`p82U~9khMGv)rQkE3d0!mpH zP%%>&0~IrcF;Fp67y}hEg)vYuQy2pkGlel2e4HH<6EmNAP$*_0m&*Fmtw*RRL^ z{rmrELKMnuad&q&s85|IfE3CSg+2kKFb67T3S*#RrZ5I7W(s5YA18t1XXIRB4*&oF M07*qoM6N<$f*fs6ApigX literal 0 HcmV?d00001 diff --git a/master/inherit_graph_303.map b/master/inherit_graph_303.map new file mode 100644 index 0000000000..b8a2eb5c5f --- /dev/null +++ b/master/inherit_graph_303.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_303.md5 b/master/inherit_graph_303.md5 new file mode 100644 index 0000000000..a8cc383dee --- /dev/null +++ b/master/inherit_graph_303.md5 @@ -0,0 +1 @@ +2a111cc5289bc977535da1916f46ed11 \ No newline at end of file diff --git a/master/inherit_graph_303.png b/master/inherit_graph_303.png new file mode 100644 index 0000000000000000000000000000000000000000..83a7d44009af5a1d820112ebaa8bfa37dfd58583 GIT binary patch literal 2779 zcmX|Dc{o(>9@niQVuPrIX9v7Zt55tfPqI3YZ)otOx&sHku#cLxzz ztCUAfFgN#I)*oy_LV|K;&&l6`EP>~q-xoIDBy+OZ1LY(*YIIzjlLZH zq|Y}D-d@8}&IJG78pi-2tw;iFPfgm&Jt#CLGw5a(5=qX}oyz8V`E9&vGTY25to z7BK}+du58LQ`@Z-65MPz$)A>IoCY+Pr5FBv z!hg8LMLwZ*X|!@@xnboGYrW6R$_nfg4lpM{@vbChUk)A^7>Kqj@@k9a$y@%9N?{TV9crewa*(~QyFEB#S>q?E_Pm-48LSTEcB{%_;s zi{+w~qrMV;GqbaLu;cbMLp~qd$z*z<&PjL(>jJu&HsOEw=m?d1B_KexuC8vm-k|*I zDe|nAwl|y!fl^mgZ2?sIUaoeRDW;r z53^>fHju$TG&D3gJbYC7&UYoNY#nmT;eq%!lXpDR`AINyKfep;h*eNiQ&UwCi)oJm16BKu&ZsO4 zD%#l~k?kujhrNKp$$&f!@OT*Ea6i}q_E10^v)s6D1-R@-Z+3otea6;Skdlza$bPBp zAdP3}J7V@^f=Z}b4Q2|qT)%h`(8o7MV3uxZGKWM6ThxzN;fd!=6Zs$z$nV=G@^;0J z#>U2=@oK+wz;P@s`N~>lbpj6U0yvLl){xzENu;={Dm8BQqcJft5}V$Yq9kg(V{yj~ zGKta_vuz7-PD8Ealv zCw~6iQ&ag<^m`ua^5rMC@rz-3m6a)|N^kmIty)GwW*)Qmp4l_j3(QRmcaFa~D>a=d z%a8W%%~HU$bg1CG{+Hyn)(b#>t`FK;gLEbQSY65-Z!;&?266}oqQ+Md2!x30q4eQR zn%sJbjGkWhmoMf?6~Hn;rRLA||6J=!` z#!M}jKj&7Dwb{R{qvKE?_};0oK78As_q~ri!%H5e@K-|VP%kb;`;xiuPMG;rd)L*S zF#RzjJ>oe-dDPA8*9A+Pch3hkoXPL+9C&Mi)jBQ3WKVJHAd{~;J9l4RX*_BG$V*#W z8+KMQYIis6A)j*{E~XE*_XIfNGQ#0O8HKN~rT><+fH5Z(b2KQv@|($3kzd=`!s~PIX~fGhlH@U7B)>heKL+0B4kUl z;?XH^X$a!X?-$t;iQcRMTw8&ZdZ>kG)ix-dX1vu$-PY1N4K9z^!5w)7gn-mG1nhD4 z$Wz%|&+N%B+Syid6aGn^p=nAeI2Nk{7-?>Pe#g(=-rm&PTb7fPQ$8WO%X3YeP^NNh zajL)H5Dt%~3@_RzX*x6BwkRg(@9ynshi%9Msb@^0Vu3_1EG!J!8ok-}OFyIC2pZ>p z7tT>W>U&E~OtSWg0Netp=}+s-y%HC)R8EO_Lu3OA;Dc*ZhTnKK_J9=%l!W}HOT12; z!i6o4#RVi1C6b`4)oj?B>bkqW?}OjpwAa8)0wV%_l>#v(QTqo5TH^)edVz(74(m4*Z{3syTU~Co{5FW#B;Q zF$m~BM@O-*FE7l};~?yJTf77~8D1!qXliPzl5?%{63nBQ&%dnH3<`xB0d-Y1Az~{g zCf2^epyo3>-tqY!m5(t|i6XnZ&9uks{+WI-;`>jSZLd0h2ymf!x9dC>x{y~=0xq_D z{P~8Yre+#2)ZA)NUub82p$!c1`w5$5i(?x5S89TW#s6>f2bSJu-I9N2xMMUnFf1eu z(IN0zO&zAVexZiedWBa{tq^P`-DaHMf2`X&2Xg;8qU7pa(kH}!v%^rfQri1j7cjOR Z936zJfHnp>ZGdT&&CJ-!s04l^`adTZdz}CP literal 0 HcmV?d00001 diff --git a/master/inherit_graph_304.map b/master/inherit_graph_304.map new file mode 100644 index 0000000000..b8a2eb5c5f --- /dev/null +++ b/master/inherit_graph_304.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_304.md5 b/master/inherit_graph_304.md5 new file mode 100644 index 0000000000..e10ae1a8ab --- /dev/null +++ b/master/inherit_graph_304.md5 @@ -0,0 +1 @@ +6efd25077539c4c573f03d3ac4c51437 \ No newline at end of file diff --git a/master/inherit_graph_304.png b/master/inherit_graph_304.png new file mode 100644 index 0000000000000000000000000000000000000000..501c8758ef3ec47811435053691e42770cd48ab1 GIT binary patch literal 2431 zcmY*bc{r478-K|%jK-2CTgO>10@5E+xDWSN_CfZ2DPu{N zl*`rqyJ?Hzn-uln+a1;O@|RV^eVn%Fu|Y%AgyU>DG))Z=5c)w5cmYia)90MPcz) zTaKgEXFQJid80@CXaIU+`c!+tA+eCRpU1CR{GGpXd?P=?B2)nb;iETfY8d4OimOZG zEm`&+`w6e4hfn-A;JJcEMn=7TeL3Ppb?J5u9i0Lfl)qPI{~UGm`wWqM8-tXlV@l2z z4O!3Ik#Od8{V6l*cL0e*8gLi#bDqgnW^2?$$AbpEJbQO%$H~b_Zz{kEE(^uIS`$2e zN6fQ?qQYb(2X~@`t0jD4n1@Io> za+MJXfWzS=PDs~prSB|Jzg(JR?bM|g7Q!$PG#ZVNx+5Ve8C_Udc zhEZl@cMZ`~>|QL+&fXll@2H}#4sp{x!Hm!~Xa!X4vTB;$rMMZK14w7Wa`a`RCWO zV1(*-PXSSljRu-pS~=UIbbbYxu;yJ+K+nu9aeX})BEYXr>`=H=FXQj;Z?MgtqbMsMD-ElDJ`=70%NS6A1JjEu@hYg=nR`6gt3{%D}DuWx#7>vnQ73a!T7 z4!B4Ca4-X}XQe|ze(OpyPEvB8ly;!F9`4~3a+AMPW{q*VUG@6;0zU+V6!|6O; z2sJ!hSzll3z<~qkjRGCilu@aa~nt9mjM?uf5{y72Q%gTyRM`&=c9&dG({A`Y5XJxfdDK<4VRU)mh&;g?4 zb@5_Uc}0aJnB+kYr@{y|IXU@hXKU@Mw}^;{001UL)ym2$-11S4mZ2IyK|cVloFv(C{9G8c=U;=j11|v>$?}e9ke-s=M^+JuP61mZO%eZ7#kZW zrlgcHnO8`{ujZFyoYZ6O)$m$)&ASULD{)ThhE->Le0&lU6DxJtxp{ezxFv#V=DaWR5@PY0y{v+>XCnVsonsDL%Uud2Gb zdyXP0FAptox{bf@Agcp+kMx0Tvpscp$jH{GPchnX6%7p$V&`>MR~PVOZOz%mMF+B5$;kGwFT zw9ey|wzS9|aV#WM&w_>f>=~w#pb7FtNkzqKDbxmwMIe!qQyr1dQxq+}^Ojt(*47_C zzby*iDt7cUJpVZ0u&R^@cWjJNR3zTw24fPcHumuEIH9+ijXqEpKGu!rYU%2-w|{<< zl#=2Hcl7ir+Hb6RKM=IDNjAH&r!YJ`d|`#Opo~V#g@uKgT$>l8n*BkGjP&sEi1v9~ z*gZHnc)7Czr*SJTZf1EIR(~#WbCYV+idBxrF$Id=#+}o)CJ-`m+bb&}pddk@(3>E6 zaCkf;I~$^{i&$X`~3hnrL^c{yI zc;v_tFdLUx@dwwI-dOZ$ZWnEp^-rgSQr>%?27$saO>-wdLUm0x_hQVOdt5jQC z+Y>~hqUXxOLRa!((`>@K@o~3D1ZVdUcP8WMpgA7`MA*f}<#v4hv#*?L^744gm6WMb zm@mukRB2fmQco{xdpo=>Vgp8LQ6Q7aiO1E{g!(getnl~)FJHcNa&xO`?$m8HXEJiH z6y;LG!e$05PCKbf_xAT&d3vhQXtamk{qXT8*0(bT-E8|PUw{*EdK=U4uTwjLZM)rL3*bTfwSb~WZ1~aNagX#!d&M4{s)0q%Sqh(D0WYev$Jz_Y^(r; zj#>Zta|UFHNyuWhWoHBub0`WOL?(BSjL3k*lC?BKq4b*>3`sF@aVsW4Kc)cv*WB7x zBlieiB_cfhVqjn$NBnh@$h)74$B z%6fVd!s35meSD69B>{3v0uC1fai>zLT~kwvOeWLdUi{aFJWZn?V139OKFlh!NkOFd z1@RU~Z=C7{5?Fp>>4A~bMO^i_%ORzO$X}b*Otj_+p txL5-oG4=#*Va}HiSVWgR6#l=jHx)6vY3}@p_}?cg!0x02_5tQ%%s(G|jjsRz literal 0 HcmV?d00001 diff --git a/master/inherit_graph_305.map b/master/inherit_graph_305.map new file mode 100644 index 0000000000..b8a2eb5c5f --- /dev/null +++ b/master/inherit_graph_305.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_305.md5 b/master/inherit_graph_305.md5 new file mode 100644 index 0000000000..3a9d49b9ef --- /dev/null +++ b/master/inherit_graph_305.md5 @@ -0,0 +1 @@ +6fb075bdcd7f555b221f249ff925fe86 \ No newline at end of file diff --git a/master/inherit_graph_305.png b/master/inherit_graph_305.png new file mode 100644 index 0000000000000000000000000000000000000000..0783eaa37d55ab68d5bafdd08ea4b7523e5558f0 GIT binary patch literal 2521 zcmV;~2`2W5P)OwJ6{gTlEmBto z(am+E3*8_pT96kqinL6N%G8Lmf-aO0xacNDMa@gPRa1w~TUK74-yc65?t0FqwmF{{ z40fK+bDs0r=e*C^dG@@=5JCtjl%Y?dhqE)FPzDMrW{TTD#Y}Ms< z($buf3x&d&!ootcHnTgkTCGM=QPDq1h(fU!jYeZtpJsRFUMwk}LUA^?ZrwtBe7waN zeP*V(4OGk&w}Fb8;x@RXm?I)0kdu?+>@+At43`wMv!EA|eYje^oG#|MbLZm9l`H)k zBRDu1Sy@?T?Gq+Uu&dZgr4k!AZtPbs_7D{n1%_e3Fbw?s{4j6cJd~D}8sY;{o5AE? z*NY9Oi+Q*sm&-v2!T0aqA(2QB8yk!I`ucv4+tbs7r%#_kCX+#-Pz*q(uFrsoSu7Ug z@ZrN)vSbN(JRYV_or*_~9vR{-EiI7C

E0!Pv25v1!vLw70h-At3>8-n_y3_3Obf z3?d>TERKKb)G17!JlX2@K;>!rwfXbsPe`Rw@OV5-pFSPu&Yc6pFwp6A0D!>2Ks1gMvWSUii!%{yLZp-ul%H>B&bv>Jb(TiwY9aFHfqoTX=Xl$oZo=d7$ou#22_b|;Mn)33Tuulfq`A47 zq^714KR-XB)oQKQX3m^BMrVhW9=`J^+A@jt+eL_6?q%o(K&M9jHT@F=E6Bbar-{wg3J57b8cG1iS67$SG1w-6DJdzqdi5&q-o1lgaS)>sS2x^$V|F zy~6V4%kk&WA5J-Nsf{T!XU>E|p+IeIEwZz-p;oI=P*A{m|Gu!DJA23KZ#~%fCqK`X+XjnaCuWNKGUUY^6%~aYJ9gmr@85=%B}*?a zFV}sdVzYu$xH06#+{>s@ql{LSR<2x$l#~?1wml0E&S0>tpj_C!dpEXh*@CjNvVU^C z!NTRmJW%$}zI^%e#i~uwlEsqEx+s-O!7vOwJUkE*5`yE$j~h)CO|7KG#l=>0Gqr*O z|6e9wyLK)7{r$n`^O2mKjK;=B!#-?rHa2Y70B>(^tXQ!EQ>IM8v17-~mhOiFE-&W6 zfXxPKYO!RqE|!#(fDnSt&Q9FEeH(dsdAM=ohGD$^T1n&L;?UgOjPmkwyng)}YPA}P ziHV%!Y|NN31L^7M&}cNs%F04TMFqrSF%~RXfQuI|8vNNVj~x~}m!z+avM(!Ft|Tcb zDQ4|#Hc(TGr6bnG%*;#@A0JN$;btYZWd*IQtRw(Pb#=92{|_HN5CG)Ij~}dYLhQHH z5<*BrLj#G4i6H>U!Gj0w+IKMdCl=751e*=Cuf>v!b+NFp5Mg0q@b&ct!!VG`<yK5-QA5xj~*d8IT<362#t-6xNzYD_UzeX z*Er6?b*K1Fq_4%Y*Sc6=UypI)#+mi4tEx*^k z)}g$-++q8yvvB!4^I%K>?Saj@*wN8}o}M23_uqdQIdUYFN+r_M(+&G`v69+CBobla z!iCtnbt``U{0X&MjnvdsL`O#>ARvG>&V@^tE}^5N1I5L~P^nZndi3a!6EZLa#Ow;# zvMvS(2jleV(^#`+4R|~rcJ10_W(8%llCn`yPykIPW{TTD#Y}M + + diff --git a/master/inherit_graph_306.md5 b/master/inherit_graph_306.md5 new file mode 100644 index 0000000000..c7ea70b20f --- /dev/null +++ b/master/inherit_graph_306.md5 @@ -0,0 +1 @@ +5a27c555606bc2fe38f27c1c8860c563 \ No newline at end of file diff --git a/master/inherit_graph_306.png b/master/inherit_graph_306.png new file mode 100644 index 0000000000000000000000000000000000000000..10a849a4e32d8c66b8a847d7bb5acd96ae364db5 GIT binary patch literal 2650 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 IM6N<$f{NryEC2ui literal 0 HcmV?d00001 diff --git a/master/inherit_graph_307.map b/master/inherit_graph_307.map new file mode 100644 index 0000000000..b8a2eb5c5f --- /dev/null +++ b/master/inherit_graph_307.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_307.md5 b/master/inherit_graph_307.md5 new file mode 100644 index 0000000000..ce125cdd59 --- /dev/null +++ b/master/inherit_graph_307.md5 @@ -0,0 +1 @@ +94d1c7b67ed7a51b771e19d3f458d762 \ No newline at end of file diff --git a/master/inherit_graph_307.png b/master/inherit_graph_307.png new file mode 100644 index 0000000000000000000000000000000000000000..6d19df3b0212b575b39b11014f9a4d1ee9280266 GIT binary patch literal 2302 zcmX|D3p~@^8=rDna#_q>l2@DNk}VYqwakz-<}$g@wa`QwBa*phlU#G(yl!v3FEhr< zNXsgsl8Qxcxg?bEQla32RY?#CByD4D=?IK$ zpc#S1fxeTmD+d_FiD$5upkLdif>#5qfY~;dr<|fo7K&r7@g(IZ9n0VFNUVb~$)wcg zc5;3q5sF9@!{e5}VZ9s~xfe0M$$1b(nf{DSt+OF_3iQ&tci`>7Mvvs`sDX3CdWZNA zhQiuAI@H4!+w&-K7KVc{qiZK-hL+=B44K4s`0YW1b#klD{rv_Vbdo`kLHU z#kYk92U75b3#S|$UZFpt8OnBHVGC`X7}vl$rwj>Mjg1_t4%9FEng97!lP}#TQejhg zo!z~gKi9Gg3u{?f9}eS{cPboCM&gioWj+%cX>AR*J#$9MRJvQv&mkj*Q321stjD3~ zw-&Zs8p(LyLMm3^_w?-U>grk+dU|+dBCdvn=%NlE?(ObUzPcb3Q@pud;cz%LC56f5 zx($)ig&SwLqIfH;F{0NZSab&j{c?0PtD-{F5{vZ<4t_e{%4V~JLqjdkpI4=#8Dc2U z4T9zK#Kc77$Z07pEv<)vY*zdxW#HXA-Jft6OcMegTUeku-*xf*wY6DTR%YesC?^yO z8%U$(4Fo+Zl^UGsjl*4!`uz672*;^x&b!#VBVMfhg+y_$AVpd&d_i~w*!OfQ0(3n! zRYFx&HFq)qr9#kC6bJ+$5FU?*fJMh5xCCy*f%Q0ZZMk&8@L=dsDtbQ*4u93(&ul&l z==QX?7egQ@mz0#?JU#!Go8hO*8pnLoZuKw#uoz!lq*JM)IU&rjMWZ)oy!HI%d?ghh zpl(`fL7`9|A0N=cg9okc?FA*yrY0sTq|tVar{`V@g#v*>snyjmCs)@$bacQ|Q&XDM zist4wj-Lv1YfRJA(;He^u&%C3WhY{YE3WajwvvyDNU!#|^!9f1_3z*J!(ie7l$5nM z&c%(5D38`~5kEgaYg^k#V`G{I-tC$C?i`;d^u5YzYNrDN4%~n6;PTc+Omu8)v4?zE zWRR_1g3g^s68P6@Nk?-JA;u3(&Y2`R0w)_WaQaR zr9-)!j&->p&C1Hk?zPR$&F=VQ^eF)2PqVX{REV64ijC+Fk^R(LOG}p{*1!5reEeuB zE-v2m7N)6r{o~Bc-KMJQYB`X$zCO*)-d>e(Wb??YW8}HzKXvo>uNsQ({n18Z=>kBo zzwwfic7l8Y1I2kfUIT}dl9iQJC38g9-Q9iT$7+bz&llwuOQQ+DQ~-2QcckcaI%1Oc zUCPYN3)y=VGLIfRtAeD$p#J1Ytbl%SGg<_TN(Ohj~-@ncKT zkegkIun4X?fCDgtb*+5;`fz2XshdwAlUur#B_t&BEhZj65I*U%Dh-+`H`<(I+(Q%gw_Y2`jy& zNagdgk?Ws{|E{cvmcPJKD5j>zk0Z^^>9=poow)V`3L2Z6%b?R`Hnuk1L!_?BURP03 zX^mYo(6ETl{PgL9b(N!kKtSi{=)TU*PT17KUtE)F{6)~~^pMxqXP0kOo$HI-lGBPPNnsk|2tTN*DopmA|= z4`-IMZ{KG2AA(BmFX#cBRmQwLYjBW|7oTk{YGGk9|AD90*Vku!WflUc?GqFf^m3`U zj+U3FaCLDw{Wy8Cw!~k+3|Y+V8m7!9VFoVUo7TIU@`0oe2Uxm|;rO`kJvVkB`VA2`Dn7qc6d#Cn^1(Co}8FKlR6ZUE8TX!QclmIf`<9W8=F7LQ}Y5sUU!M$%#rnFs+Qp5Wnbz+(yjPGh zufJ|IH#fWGyF|Iyu&&x9BqVs;zp@K(6Cm`@ z&ds5Hd^9p8dG1D?2k&3JpdMRu>i&VB@Y`OV7!XzYrSglwR|U zQ`dvAeH!OpQ#F4Zhz8mSLYYE=zT_c|hK@$LVb1oRE_H9Yy_SG{ zbeDzAA*`SmWgSJ3WFkUCLj%b2B(Ym)H|9%)lai6Y{|MVc$}bV6)^8{`-Pg0ghX!PW LvA6sO?Q`Qla{E42 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_308.map b/master/inherit_graph_308.map new file mode 100644 index 0000000000..7fd2dead5c --- /dev/null +++ b/master/inherit_graph_308.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_308.md5 b/master/inherit_graph_308.md5 new file mode 100644 index 0000000000..779dfc183a --- /dev/null +++ b/master/inherit_graph_308.md5 @@ -0,0 +1 @@ +529d60463d77de4fd965ef505f98b7df \ No newline at end of file diff --git a/master/inherit_graph_308.png b/master/inherit_graph_308.png new file mode 100644 index 0000000000000000000000000000000000000000..98924c11bbacc3241e389fbe9d947ac7df4c7c08 GIT binary patch literal 2500 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 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_309.map b/master/inherit_graph_309.map new file mode 100644 index 0000000000..0eeb327b1e --- /dev/null +++ b/master/inherit_graph_309.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_309.md5 b/master/inherit_graph_309.md5 new file mode 100644 index 0000000000..46f85efe26 --- /dev/null +++ b/master/inherit_graph_309.md5 @@ -0,0 +1 @@ +3381866ca14c1b55b1b17ded54272883 \ No newline at end of file diff --git a/master/inherit_graph_309.png b/master/inherit_graph_309.png new file mode 100644 index 0000000000000000000000000000000000000000..bbbf46a4f052dd700ea70ec6286597a4787a5310 GIT binary patch literal 2393 zcmV-f38wamP);g%K6hmo%t9(kL(0 zO1jXHgp3F+(ln?HS4e7Fqf9G^vi>kbgF+(;DJy8+<|fT4x-^w8>-qliqv6zDbhG)} z_q;&ZIp=ep^E}Vl`+Pp<%qd4i1O|iQYTR{mwg(IbV`5<9W-we7CT<49MPcG*FkF-= z!z*fQYjN@7MQ8ZJU@*qX-Me>3)Qz}vtJP}UyLa!eIK*Hu>_el`nAPiuJNF+(TL~Bp z#^j>Byd1Hyv7@%JJvW2lqA+nY7%mDEH-q7#OiFP_MnGNhxk;!4?&UE8%o;uUxqjB_$izxw$0XLex;jXuQoDQ^3!67@ z2FG#WI1YY(eptPFHJ(3zZfti%ZpPw+x3@QzFJF#Zw{A`7n2zG*%a_=+X%l!n9=yD~ zAdyILbUM53{{H8XD~OVIq0*CSe~EXR%= z!=XcmP+MC&;bS>O+~MKjICbh2)~{a=9*>7bix#1>veMYz+uIA7Ooot<5X_h{1IfwB z=-7MDZ{NN_CX+!R5McWB>4=VwhDxOx)i)lGhn$=o z^!4?jwzk%6Zo+Z#hqb&8&*T03_f5vN#s1KkOG`^}`0!y!rBY;MWFR;=7_(;0 zLPA0UgpWj&ba&>PHb!}rcIlM#>PfGdh}?_kH`rL2~aAPsHv$zTU#3zFJ6po+qU8N@84GY zTFTA!>(`N$l?Av8+`Z8SGGBQrA-At50)`8zN$ zU|hgfu3R~$I4tGWS{`k&KQ!jBurRc?wjw@0enbpAckYC{ySs@XEn&|bji>+8rAu+? z(j{m#8p!2xG&VLOJUkpxQBk;d?V54Xa0oPvva&K7rP?B4VPSOP!UbcwyStkJkVc~+ zl}bebNU2ng+E*fxP;qgwNnJ!l1Qiq%*gU>KAfUXwyb<+$KHtQSB|nFc+t}Dh0H~v* z!+3pFRTTlC&dyFEA_@!)q^D1x8r#)sH36WWo*v`t_V#vTyTM=}9*;-w-n}CtqD`AN zkxV8dBBHNfztYj8N6F96kF;8?+1!MMh0)owXHDu76B7vlB_$3~8 z>C>lSFc`)Zhq=63%cHIKhsHc-&Kv+hdwctcSPTXOv|23!0s^eYZR^+*(cfS&pt7-`=yW>Fnl;PpI5L?G zxw*NcwwcQf$8jcQKA(@2loX_-q@bap0SbizadC0*@bJK{UArKaN+A>qEyfG{Pc(&v zg%FFyC@Lz#fddC@j>8<*@@T95p)rSshC(P5LZMI~A|k@%y3*285D_+S-VDJ0Ida4t z59Q;>k0>lGL}_U$e0_bfd-rbC*Vm8xeQJpbKP?Xq4n}lzH1_V@i%*|E;p^A0C@3gE zMMVVwARr(B@7}$`uV25++OT$@wr}4)C=?1jeE1Ok{rym@)i`+YAeJs&I%4u|MJyI$ z&6+hha^wg)J3G8?^PMBO19v+V3;$rCadZ<(?96x^CB<`(Sw<0Mi37)(^y$-)nwpBt%uM|F z@x$&otmSb$_BoD2US1vw3JQ>skpZ<@jqdJlC=?1DIdTM#=_wPfgR3be+eL{o{z;SzSg+gI04-O8R?6dWHJsmo9i003qPcvuEq~zpe`u6P` z5fQz3@q!jFUQAP_OreN~2qGG}=RSAt9ErtZvt=Tpl9Cb%3kxG3A0G+`2%xyQI8v!p zWAbzOxEhUy{`u!0^7Hef(9lql%jG6}?xv+7T0vu9I&e!fj{Sj(%mJdV}= zAD%ydP8&CFBwt@&0ze$cQCV4;$u;)Qk-hyV8cTa_hlu;X!j~^!Ox~1?$%9U(BR-!` zX=!QBcIB_~R}Rz|3}-TD&KwjK72*8(^Qf+_cD6f{f(buRV=(>}TefU5p7Jx8xW|OQ zzrW2NFEJR-hCP-u7%mDEH-q7#FmW>&E(#MjgW;l>Jy0tzFaMi + + diff --git a/master/inherit_graph_31.md5 b/master/inherit_graph_31.md5 new file mode 100644 index 0000000000..71ebef26c1 --- /dev/null +++ b/master/inherit_graph_31.md5 @@ -0,0 +1 @@ +7658f5bf5ca52f6a2aada6b33318e759 \ No newline at end of file diff --git a/master/inherit_graph_31.png b/master/inherit_graph_31.png new file mode 100644 index 0000000000000000000000000000000000000000..bc64674d623d055a390aff67978b069b217532d1 GIT binary patch literal 1865 zcmV-P2e$Z$P)$WXgWGHY80!w^apZ$}9Qj}#M?QFTL$BB0 zyLWH1q+o=L?Ck9F@^Ym4%X4hE+q=5DHe3=$I58Ludc7VU!7uKl)oM3N4@USod-iNd z1bZJxKA6Xm59V>?gL(WHM~)nM`0(N8YM7Xq071~>@q}^Ab@zDV3->!%^;@y-9vcjX zOP4N%cg+0!d=Lad5R8e5VK5kCv3Ou$U|p}cLP_YkH9R~Ff*_Gd++Zb(`LC|k3WWlK zAfM0I*VmVjkdU37{q*V6&6UJru^Jm2k!E9KBa6k_L_G*=@%Yf8LpN^R$ji$kkw_^i zDbJrjhvQRIQwoKGPN&Dk#g&wl`2Bw1*Ol|{5~ru96$%BFN+pxYd_Mo%w{LK~rlw~9 z{{4%O5u&4`Q&Lju>gpsCNm*GL{CiUL6&o5F=yW=PK;UpVgM)*JjH;?C4u?Y`kuowe z-o1Ob_#XLuJ_v$19F9(>-@bht9$BSQrKhJOeM}}39*;-Vo;-QdeUJpB@&6rWP1JjwasQrO-&UD1Pcob ztI~7f!iBN1v5}DxbkJxtR#a59wY7P@-nzOvjYflxCO zo}L~Ef&ziSlP6CeKYk47ip64^&4$d0rlzLj$B$E~RJe)5;bbz|g9i@)0BCJ(<#0I3 z$;s$3&z(Ex^ZAB`h6V-(>~?!mQ4t&$iA3ABZ8MwA-QC?SEiFj@e_xhAflzdGbc95f zgw1B(y?Ylvh9{%L;ecnE$z%%YoRyW;+}ylOqTOx>0AOrv42}nbK@y4d`Sa&x1aP@r zc&$b-8jSz|ynXu?eMO7KLLd+p55;D)D=RCJ=D~vpo0^(Jq@t;>uNR3#@NsErsaPzA zAZTuGZr83|I-L%YR9#)|a=Bt-W4&H4i^b~e>+A0BCJ+d4hp%710svsOTH)sK@Gt-X zTTwMI= z(Z25RkGU1q@4BV8XWNqS0uR z$Ag}FA+`HQ+S}VH6v}}E2SVZn1qIKZJ?ro9&&$ip$;p|SnStYQ1z{`}3xz^KXSrOi z!otFvH*Y$f&V_{qrBXRRKM$WuOH0ej%4%t8QK?i?sdUShEg@Hw%jG(q?(*f!APA!4 zNl8ib^Yb>F4Q|4ZZ&Fecg+lTB{gacEh?p>z1tx4BCnqQK`TXMI;xAvm_TNM{P=O_&K-xtArJ`AiEz)@*x2akXoJC^R4UPD<#Ks# zZSDK_@0a{S<8U|-1XWa2gv1#PMovynX=$m`>9pJJSFc{>@puUd2}~yQ=+UEBu3T}u z-4=_bva<3Y%d%R+`R&x!)|Q^0&gF6$493TgA9HhaSD2_)t5Z``c|2Zxe0*71nN%v> zx^?UFDfRXBAPDZ*u_He}e|&sguh)n81OULXW5>v3GLOfLi;Gh#m7SfP$k(b&CabQl z-nVaGdwY9tZ||Nxd(eqA8m+drwy>~}L?V@!m!Cd;8hutE5a4jQ+}zy7b8dM$Iy#6% zB8$b!%*;$oOjN7YNPK#Fn#pAH`Fx2)@^8wrH0Y&Zg?q05I&3z(wY7E4>2q^)J9qBX zXf$Dz6h^|f=lb6QLD2pC_hVvW&YU^3*;-c05`QCru?*X{Zzq$ + + diff --git a/master/inherit_graph_310.md5 b/master/inherit_graph_310.md5 new file mode 100644 index 0000000000..dd32259487 --- /dev/null +++ b/master/inherit_graph_310.md5 @@ -0,0 +1 @@ +ef7da0cd4ce1bcdaf0572ca572a2d054 \ No newline at end of file diff --git a/master/inherit_graph_310.png b/master/inherit_graph_310.png new file mode 100644 index 0000000000000000000000000000000000000000..f5c58149b6f235b4f4313f9d19c91aa1a5f57d2c GIT binary patch literal 2623 zcmY+Gc{o&k8^=#}Q-mhTTTJtWA-fpKHX8fRBw3Pq>_YaLi0~j$PiC@A8e~F4WGu-# zmY6JwS7FFH30cbCNaj7y^Iq@uT<@ z2LL$43$A4ZxWM>EB@hih_^_6yXn^zAUD#4e1OUM;b2JKrd$O8`w>su}qAi4mKp1B@ zXOB3z!o)CkRso{+R)W>fsqij@nVTWnKGRI3=uGf=NRgH(_3n&`sMwq&uW?a|5kpl-Q7{LhVR-{orV01!`XLW0(T5yU@0%UCk_dG z<_I_+6}cu7m4MM_-R4Y%~~Vo`Ua(qUe%L)Ye3R`!Q&jTOa1CL1H4t&x1Y?j7ghN-%^yG&>s~ z&lw+g!5kb$k&39)w7z*l&u9PPlH`;Wef)+Orlju4$MP$T?(VOGNr{P3Yo7$;Y@JMd z5k5al_b>dKMbct+gLzOoIy(FN`%V=u+v_Yw=76fM?*8}L&eyNC^$S99T8fJO0|RT@ z%cHBStMc;lOeT{uyDea5W`Ozd*;9%eP`CYCNVPPGW>fWafHh=DZ>+I|_KTF8TIWZo9Q8=Cm zgF=eS${-)@5m4aH)YLT|6dxZSfk^Z}KmLL02);ZYcA@N;m{{TncOp#keu^Os2neOzs)8S1tnwpZ*eT(9MFKu!23%~VJZ?TGsisAykE-woaZ{%8C zx>WK>O9uH^r^3mSGBohyLK4Zw+SgkxE__AR04spva&KTFfcYYmYXZVg8~3GHMN%>^w#hN zo4~;Gf&vd~YioahD!8z>7kymlQRDqIQdd{%eRp?BLj!xH!Zo{gd~D2_irM?I&f3}8 zVb=JDH+-6%^>pktNovHc&(VHo?CtFpQ7BD~jiA286`e&SB*sQZqgTf@Nmfx?i$hmy ze3q<@Wr=#ay4BUyZ?Nk*DjwfUj}ZO+-aeY}=}@yGXJvf^zm#lrrtCYYin%!~?`u8qReEi#< z9uz}QPY(c!9hf5{e85AC;#%%K9bKJuyqdz3gQLq5YVk5e8(SxzkdA+YdEDBv$y5Xl`!-5>)t+l zv$xkmPEL+O1Z%$0zpxn|9xfx6mY3&>#ljo)RK3YYPX&0msF?A|$rjJfl*r`~y}11` zD|NNMoFe^T=tDzeV@hi32`Cf*AP@)^im`jxwNvf`ahO=dG=+B_-X9K0W=l zr-T=VD5jS$Uv6)22Tfa9S&7Hvhf8gDH#RzyP5T5v6WLQgkTiS`eynp(`W*rWEA_*_ zSarreZb+VLy`4uO7!^AZ2?U8FDQGwzoQ;uDVp38P8)vN+ux&^gg2UljAyfNnlNak; zl%SB1=~f}&W@xCtpC4%M)L9vjB8z2($f;`YzWKhKkf~VH8MK+4=bo$Q#?+N(u@f_W}b0EiElObv^0=F1xw8IXVt6yf5%*#>#EmUZXJh0d4Mr`Jf|gQ_eN0A2_+Y=SzUX3 zdr0YpHcibf+{j8+C<+S;$_bdQ%(b1asI zy1JXY`%7>W3j^en8a@C3nuJWAY{qYbe{lrV!rVN~zR9PWOeBV{eYy}IAHO+tRrnCS zPU+k^);i8dtBHfwxp>jt%?+cFMWL{8KQ~mmMn{pFnvtyT`>fTw`itLM*5hy9nP#A1 zI@k3KVLBQ625Uz`nD$T{NNz2H1BP}-5WG2AFt#1IP{X6$R;eacmP3`!*mv)=rF$^#_wn0}K HT~GWE6r2$! literal 0 HcmV?d00001 diff --git a/master/inherit_graph_311.map b/master/inherit_graph_311.map new file mode 100644 index 0000000000..d423339101 --- /dev/null +++ b/master/inherit_graph_311.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_311.md5 b/master/inherit_graph_311.md5 new file mode 100644 index 0000000000..22b468e9f2 --- /dev/null +++ b/master/inherit_graph_311.md5 @@ -0,0 +1 @@ +990caeca16940c17a4f38eaf4f4af95f \ No newline at end of file diff --git a/master/inherit_graph_311.png b/master/inherit_graph_311.png new file mode 100644 index 0000000000000000000000000000000000000000..d2149e62bf5eb65d5044582b910cb0582eaae52e GIT binary patch literal 2057 zcmV+k2=@1hP)==w*}EGYxbgKB)th%lrV5%mIxU-o6b#q8@f%GmFe}z(Q&z#=3H}K z_xbDYcfWg{-_P&!+&z1KCxjpfAR!i%`3``@`;ej%5K>eELW)X2sQ8nnrl#`p^7#sd z#A6N~JeZJ>fSvv}Qw;_~ZEda3Ln4_IwY9Ydg8^@$+B-dX@W5B`kaz(If@WCAcParP zMI|7ls075=WXxM2KsQP-_ock9-zS>3|p@e~RL-VzoT_D8`q z8clwF{%pf@&DO13AqavXh{0g2U%$Swu@SXFMcLuU^SyGPzuiw+9CYBfr?OV@FQ8qg}`~Ca(&z?Q& z?(U9@i+lb0b#--hTwGjbWhH_j8jZ$VK|Aan&#qm&f`fy*y1Je`dE(AB*=rlw9$PdjsVnAFXiH_x6uYc`uD63O7;;Khp<*REZgn3!lboA2Gbr_<@q zoH-K}6*Y&XX9I$xrlw|w#UTQL;QaaX=<&$N2mrunG@_$htJThM#_~rIi9|}J(slb> zF89inD|icw#lr4#*gL-EuC6Wsz~JB@>VrFc<>^1NKP?1cKA2Ph+P!IXM6TnM^h|Hs(50 z4E*DFwg3QXYHIKn4`*sr_%ud6B83XJv{*d0en7xj)M#U5EvLZIXQ{9eEuPu~#Jl@pQ)aTEiXLdlDbr&!U zYqeVJ)MPS^j*h}G?B?wp4##G*VJjM)PKRBh)9KgrdnN0Y>zJ2?4^eQ@2 z$H&Jt8ckAClCz}n8?Y=E>%f5nA3l6&Y;0sQnG%TvhT&t!j$s4kZ{sylBO@clVsUP6 z?x#ha^pHk-|0FccIN#Ky*oL?SmM z;q&<$Hf-3pZ{P6nuui8tdh{rENhlOnR#uwLX1!j2`0!yY@|2VmnM~H%+4<$mm*(c? z)YQ~(-@du%!bMVeR{ zY1zDaGXS8Zq@=#So=&IRuYR48k&&TLC{CO>!D6vQA`z8Jeg6D;U|^v8k<`@GjE|4= z`FychER{+zyId|enM`apTPzl*rKMqZl}Z&86SHmGw$RYf!ootCOh%*8T(m!{q$m{1 zmMvRu-@c6vBX`j2^@)jz?)(1+{+Z+ELh0Y4zrP>+S}6TPtX#QLuh+Zd3G5b1bKSfk z`Af97w|jgqxuZlth(A-q!oraM?1OdU%v7>UgFzfoNih6TRIK1dr_*5=&dSPq_wJon zTJ}oG%>VI6QNgc$9E-(LUtb>{9-fep@aWN_`3?#I01h2Gw0G~`rlzL(4#X9HDk@4) zP*8Mq^tp5Aq*7^NVIjKS`D2;PnU8(R%vn>;N@)Oq+}vCmjh2>{wtV^WQ>RYh_aOZT zzZMlEGc&WVudkz{1GrZvbLeAVGIP-szLbVOoo--T=?KiW-i=jl+s)nEu}g1!I#WjxB*B1%Yf3}-d<5rasU4P1q&8r zWo5Otwz^*v^cj9VQzs`UJ32Z_N=j5J)#b~VAqaA(OygrHC{zDmO zK5Df(CMJeTrHVu%7j6Q9psK3McL~o8VE0b-M^Q;;g}tbL{rDyE3{q4ALW)X2NKpw0 zDJlUWMI|7ls075pHsQ{lJAEGqi5K~8rba|Wq^GCPS12T&k)EC&5fOp6K*)dgrQQDk n`A#Juq^Jah6qSIGq7smw>&jK7`a+FF00000NkvXXu0mjf8|3ph literal 0 HcmV?d00001 diff --git a/master/inherit_graph_312.map b/master/inherit_graph_312.map new file mode 100644 index 0000000000..993ed4894a --- /dev/null +++ b/master/inherit_graph_312.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_312.md5 b/master/inherit_graph_312.md5 new file mode 100644 index 0000000000..bb8d4ab8b7 --- /dev/null +++ b/master/inherit_graph_312.md5 @@ -0,0 +1 @@ +d327c27b556bd45e1d51c4ea5920c32b \ No newline at end of file diff --git a/master/inherit_graph_312.png b/master/inherit_graph_312.png new file mode 100644 index 0000000000000000000000000000000000000000..d3d3527ddfe8ded52fbad4dbcccfce48286f38fb GIT binary patch literal 2122 zcmV-Q2(|Z#P){O00006VoOIv0RI60 z0RN!9r;`8x2meV#K~#90?VEc@Q(qjw&zgGcz-1YaTIs_UwTm2!bFcleul%wwjt6RPMl_Ecx~87i0}O-O8U5GeVvfIZr4Q z3IsvAy1K+-aZF51UtiyBTbP=fdjI~tTrO8Cm3X4`pR#VzIcSqy#~b+S*!Y8Ev(9JO>UO@bdD~>-Dc*y|QNyl*wc|o$lku zkDZ;JLZL7=Hg;-i%9gU#LEXQ9|MKO_X0tglF|oI|_xkngTefW3xpSx4Y<}|ONo#BC zrAwEBf`aBS=$Sxpl$V!JlUOA*H1z7#t7v&(U;qGMG#b%atkdbHDPvXg|4nH zR6aR5$zrh@8ygV>iHeFsx7MMdp`%BSGMUVto*v6Vg@%S+ym%3NOifJ%0LbO?k&zMN zkz(MtR(k*dl$V#|B@V7gUteFez+f-{0ORB1?d|PuZf*jBV2%?D0O0QKJ~1(Ym;Cwj z$HT*epm)5o(P;Gc_QrH(G^wqv4FJI5aL`!8&CP9ic(}d29esP_#tjI9)~s3c>C>mm z%1SnyZMBiWz(B05R4NM!3K|+3csyQKR+dJiLFWG&hSP!_KA%51Ir-zqkLexIX59r0 z!#bS~do-C$gM))G4BJ_q%jJ%ZjbTwqYild^iosxDUdI%8JRXfkGnq{I3BGslUi2-x zB1cC@YinyGA|h-J3V-;?X0wkSJNEVK*P5Cd7K@dbmjAt4fp z#7;{D0>Sp}+m9SM(%;|T+S+>h^l9vsNF*vLDKVSP9UUDfPoBgqkBNzq%jGRCEkA$$ ztgEYwjg9^N`!_)s1cSn}Y11a9QrX$rSyWVHFc{D;*F53OKR+HldbD}-=BTJB7>4WX z>v!+o4FJf^%~h+_3S$WilBiS1OezlZnIONTt%axHwF%QmKSOVRUq~udi=*cD7tD_w@86Xn$6NqS0uP zk&zD{KE$TZynx?N>5*f36*@hwYh;^Ucz5 zB#MWJM{scPl`B_dGFf(ZHX6drn1QmTW0{Sz)s(F)6#yVTJ>ApOGcGP}-MV!bE?mGL z2fCQ0eZ`>Gf*h@=**~w&r(@3IXPKXRh62W3d8Wg zz`&h5cXD!aoHSN@S&|0=j~_qga=Gi*uV*kAG#ah1uW!|=RkoDTER|Iqd^UP7Vyi-rn94iKMc!5|!icl-SbIXf#5hkWQydBoYF((9qD*(o$#s z5OW4td?Oc;BR6c=(9zK`f4!3lOGmnTYmJVM#vjq)|5dZ8sfjqIpdi4d!OpZ;5xZha zF?SYGutPByC`Xb6%8?|2awJKh97z(aM6LVx?{~c&6m#T%D>5J;AU-~Rp-iE$pZNIr zfPetJ1VWa<4YTC{^^GJ6lp{$3 + + diff --git a/master/inherit_graph_313.md5 b/master/inherit_graph_313.md5 new file mode 100644 index 0000000000..c8cdf289fc --- /dev/null +++ b/master/inherit_graph_313.md5 @@ -0,0 +1 @@ +41caa6683b11edcd9358bb5bf3b41843 \ No newline at end of file diff --git a/master/inherit_graph_313.png b/master/inherit_graph_313.png new file mode 100644 index 0000000000000000000000000000000000000000..3251491eb0395bf7762b6aa003070daf4b71f16b GIT binary patch literal 1953 zcmV;S2VVGzP)001Qj0ssI2O3-x?00006VoOIv0RI60 z0RN!9r;`8x2UbZ$K~#90?VD{#Q(qj%&($f;c9*U>1>3sJNiM9l3{>)=q#)BZim*r#il7JWg(+5I8U$7bD;4vh3@q{i)O2%h&TKa4Lynp|{}%@?`%kyT zrqZ~dSNHrp=Xbup`@Q#^!yRG}LO|iZc&xMlilv1z*v+8~c5^6$-5i>2qqVj5=FOWc zC56HzWMySVM@N&*|GmLOLqpZo)ypo4!evxfR}T#h*+yt{J5^OxEteh&7lUD#U4+_$ z-5knbH-|FV&7ll-b0~w|oW&Ttb?esB(o$C|Sr8vTe%!lvFNeeN@$p%|etmj+`q!^t z7oDxGt!>YqJ#04H*VlK`rcDI}1v4`%@9&?OnE3A9yG1KmI{u|M zxVE-7Ha3C<;$q3sO#6SFD~2b*RSK^;zC11TUuHS2E&slPfR9LO-;?h zGe{&727}Sw-mcMTva+)B^Ya&{WNCpmR905nMdp&4no5q1jEsa3ibSH^+}!y1cm{(} zQBjeUlmr04FpMCGyu3WC)rtn1Os34tOoAZ%{QT0>)2F7U?%%&39v)6+?(OaM^z>A# z)i-Y32nh*6LGs#awGsqz`t)f>!bBp`#fukXVq$O{7mLMBO-(2s92~4vD$zCi2w*fC zon*5sP^Z&zIGpnGa`e{|Cr)hNzTIN6jEsx`06u;CG&jTCN+E>bzI{7<_;5f#0Efdl zdi3bn*qC$KlarH~nVCEuZ}sZcNl8g+wc5Ea2mnB3W##`OwvB}t3?Yn&hM|OQ#l^)nH8qoylT0R)EGauX zd-v|$(8g5T>#nXY06=SNt0Pq+k;vcQzrMcSWHROF=QEki(a}-pz+mUu>h*dEq19>)4GopaWUZ~OGcz-`!{=5CA&ifYmq;W!olc|C?AWnGB9SN#l_Hp!FJi47YHG| za^*^BXef^3Z{NNpgIcXtp->0}0xvJG=;&x9e%?y^`}+X^DwPT~J32Z50K>z>j$|X9 zI-L#$XJ==bOy-v_UmV>WlDP)EW)J4^c;t0eRn?X)TNn%mhGA#UoY88v006aG?djo2O1h0=B;#SXoyCm5d?vn0)YSp9m!Uy zR46}&VHk#adU{SwOsLiB1*)}WF$Q~h*pDJVfufz}^5x5Vz20iI-nwVOZEiEl7Dms4rxR;lgqe+EAAwdw29zAj*4BZ#Rz`(%TwQB(YbUGcK zjR63oqoWJSW>=uqYCU%Bm{cn5>+35iDVf`!$z&=N3W6Y-o15pYl*{E>EEbJMgPQ2% z&*gF*$zHc^ori~q!C_Eg~#KegBXNRDwW2@#&&mikB^T(c<=!2OlVRLhl61lxvb5*2SW&7y?W*2&qHk(IAMlM~t1Z>m&=Vtqgt)rxpOA~z-Tl= z2y1I=eSCb*pFiK*+dDly-Pzfho12T)H@gC_UcD+53a6%~>g(%q9PjApfDmf6TB%g} z=FOWQKYomlj~5jcd3boByYH=ZQHgn z7>v!EH#asmqIiFQe{5{5udi=-c=)}0_eg^wgdaY9NKQ^>u~>9EedETB1qB5^fBv*9 zu&%BS$MMe2PBbJhFE1=C42gg7;>E6AyZrtAnM`IxL_}FxnUhNOdi|k8huCa(KtMoR zTH5#T-<`{zn3%}P$>H<)t5&UwjEsE#{P`b!fvz&xwV2Ij7K>F;QSp~~?4GlK1=q@+ zYw!wx=ztL3y?d8Vr|;XhZ)KIZEA#x|znu8``uh3#m6Vh?IbKox4J&LgdA|L7K7an~ zs#MF#Qp^6AzC}|k0?J@FhcejBp$v9&<~d|Nefo6ybx + + diff --git a/master/inherit_graph_32.md5 b/master/inherit_graph_32.md5 new file mode 100644 index 0000000000..13669b42d9 --- /dev/null +++ b/master/inherit_graph_32.md5 @@ -0,0 +1 @@ +a1a01836c7822cb66af2a8ba94150032 \ No newline at end of file diff --git a/master/inherit_graph_32.png b/master/inherit_graph_32.png new file mode 100644 index 0000000000000000000000000000000000000000..d01648d8a542b3cbe1e9f17287821d2411b465c7 GIT binary patch literal 1436 zcmV;N1!MY&P)Nrp zB;`=#f(Q*$26015awwu45*KnD%s4bk#xckJU97L2modh?gZB5W-_>5v-p{lD zYyJ0Hd(9S%AP9h<4z%AEfcP57Fp7Z;qZr6AiedJ;F+V@w*x2}6QV=>RDJhAFh#;GP z%rKQoH8?o<QmI}?%-&x#Ffi~_dJvz0Vc44pdWTUAWEjOjhEWV;7{&N@ z!@|SEJ32bP`!4?KTrPKfd>qCvFE6E1sfUM$t*vcALBY+<4fu0O{3!AI`dTWLayT3t8=I7rl!Jo< z7_Y6Z_44w1e@tR-ZqDU$>+0&nVsTMX5&Tn8U|?WHMMZRUw6(Q$Utga_qshp~V6j+^ zj*i*c+2`lyq?q#Z^2o?YCX*Q)96UESr>Dy;EiFMoL1a^@RMP46{r!DC;&pabC=@O) zFH0m648y|1!;KhxBWIXQCabNjJv}`Yi^U?52#%CUBwATn866!}DwRAQZ)$4Fz(lcF zyuH0WJw1JRc+9Rr)&`5e8KSeZGlC$})6FN2^M5R&*0C0A8hHrQ}oqlDciLuld7&JGO1vv9Z}dwYASsi}Hy5g#9KX=yn!GBP|o zEEEc%2S$je(f(?qXR=+Qo10roN=j~S?#9N3R;z7qZyy;MF)%STH8m$EXKQQg_V#vh zagopG-{0Q@12!FxkB^(1o28|tGMTKox%vI4QXI#lqM`~53r|i?R4P?*adA>o5}VD2 zXIooaXJ%%uuCD6q>(y#CpU>B$lSZS7#p34X=AogX+}zwx#eW2w&0bqudwO~@WN>uI zFfL6ey}iADetroF2{?`~FE7W$#2A<;lgWI1e3FuqSS(giQBh7#j)jGV{*G^FHp8!m?=|KDz z$S{gwvRxwOAb$l@3pB$h1~QCdAj2pIGK^yA*mU&w_y4>Ogn{TVOdt^aybgqcU + + diff --git a/master/inherit_graph_33.md5 b/master/inherit_graph_33.md5 new file mode 100644 index 0000000000..98fbfc3833 --- /dev/null +++ b/master/inherit_graph_33.md5 @@ -0,0 +1 @@ +0a57e1f048d64635772e09489f2d0a0b \ No newline at end of file diff --git a/master/inherit_graph_33.png b/master/inherit_graph_33.png new file mode 100644 index 0000000000000000000000000000000000000000..237db642caafe3f05b42c765dcdfbd3e8eaad441 GIT binary patch literal 1729 zcmV;y20rNp4X}YZ-3u@wo){9w5;TAJmtfs}x zBm38e=!JK3>g z2crc)pJ9Xm`wSxl*k>3az&`t1&}cMQu3U*mXFf#TXAxICgUqH_0*PvLQTLhC>D;$( zUu3VT)9HxcdGzQ}WT#+-Pb^tkS=X;$4|@uoPIvh5;joAEpM{=1olXa$vr>Nk)cdB@ zYK1g5ZQ3-`ivBR@32bX?i}rNk_$(tM<5sIxp-?0y zChp(A|L4!2;P>4)*uaU239HqbmX?-~kYF$v-oJm3+RMw!moHx)SmqFBv)Qy-twbVO zwQAL~XU{4sDpFEX;^X5>N=ke_AL@4L(j|pLAr_0ZT5WfCH;4F)jEu6fvJD$HELgCh zzP_FjOKEATR;!gtrJ0$TPoF*o0OaTAcXf5`-Mg0{2#rR=5n8ZRu=4ry=UuyY$z-y{ zix=9?q?2%qrAL)WMrhUu+U<$ zpkOQ(OLup7Yiq09?N+PR?d|P62No6<_Vx8We*Ac7Xed2B-DouWJrOF+&CM4tUK|-2 z(P%WAH*bFX_N~k1>g?>ickkYvJ9hv8y}i9hjvT42t^NA->-qEN>+0&zz+mF9UcGwu z?Ah<%zvt)YGv=zUu0DPGG(}Nnvw6#wEu*8O_4V~?wffq%YY;-G)5#qgYbsdTxpU{( z*jP_bPiJQ*Ns<YHI54-Mcq#-0%k&Hj!B!`rW6Yp@GrDib|!bsHi|? z^x2{)3fa7`uaD7r?b@|9H8mUqNsK6CcK`sl+l{KPUcCYUeEj$^m}WXvRaIuQIZ!+!fz8d$j1K;C z7^?#zG?`2$lZoCE=6)uV$xtCKE)D?T@puLY2V-JlmMvQr>Oi;K4FE_^PDan9F)=aY z;2SZ5(gGB!3=E|;S!dUzm7GMMJ3rl!oyOo>E7 z5QNog4OE4oCve-gZNXv;Z*>BR*f~HhmwUZl^x+GMw6rvlNc82)7rJlq^70}jERejs zytcNs=g*(#7gBG`4%8XyJ+22xT|001JR$Eo3XL6 znwpxHmKL4^w{G29R8-X4+dDZq`QpV3qtW>5*DnzIIe-rjA3iKCE$#2`pPHKTdc7Wx z$LI5fC%(G6`pJ_gKYskUaNz<)QAVQ?0FacFT-m}AEi>6ot=H)z=7f6VUi>d z9Xh1f>ywg_ST&@~%!;zkzuGi~jGTFg{2aAe|=FXkVJ*29tiv9+O|0}EY>(?hFBUCn{E5{?L5=MK^P&hK;I8}o&zutLX}E&^XAQ& zR`EY2V&?!1CM2-WFhaocds+-1dU|?hTEd?M-p?>XfPID$0_-!45MZBSgn;E7(Ad~0 zybjE4f}$w&Eu0?~pP9{Oq4Z#8EhdwRUL_#@|7V!!gP+eZLV$gS5d!Qpj1XX-VT9lx X(3D%VwC3+k00000NkvXXu0mjfl(1dx literal 0 HcmV?d00001 diff --git a/master/inherit_graph_34.map b/master/inherit_graph_34.map new file mode 100644 index 0000000000..5efc745ed4 --- /dev/null +++ b/master/inherit_graph_34.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_34.md5 b/master/inherit_graph_34.md5 new file mode 100644 index 0000000000..bd4060efdc --- /dev/null +++ b/master/inherit_graph_34.md5 @@ -0,0 +1 @@ +a9cdd48762cff868fd31ce9b5e46f0f3 \ No newline at end of file diff --git a/master/inherit_graph_34.png b/master/inherit_graph_34.png new file mode 100644 index 0000000000000000000000000000000000000000..c9999d55c6359ff47612d623da3d490c32f4c383 GIT binary patch literal 1492 zcmV;_1uOcAP)85BZ4lvvm%QqD2$4T>|l7Y8@m)y5SCF1>&=pOFe^GxyA*92W%FGO>t|(d4O-vy z&F|`cAKvGg=b8V^yw8k?gCGcCpcDK{CxC$*Ogt2WiHBk^@lXuGak99$D3{A$Diw^s zB9%%L5)$mwTX){h&W=i@diIns9)(J!+S%E0v=Htu8Xq5ju6!__01k({W5M=36oZL} zVleSg%?S2J==Nwp9toN$HmiXwPj^x?v0t5nTc~CGcyyxfeZ$N zP$*wy9sHjM%(@joJZf$MF#l_9e&OXwyxVYG8G|tVc#T*rE-WmBAjoR91_T7a_RY;rGMRio zE4z5Ej};RWBbUoz`|Rv24u?BGKZmCU1qF3=b*@hL9{>QOqoa-%gm)f;!GH%uA`t*! zu~o|^kUUqi&L(5zQXEK?cot;Lb z@%Z?-pr9Z(H+ODs4ggS9Ri#p?PEJn7$Hxf-fa z=~w`Ow{PFV17BZX5{X16lkHQB#p1fyhj8+36B+N`y|dYD8yg$0cc%NWSS&mqe{^&d z5D?(5WS$h9N~Ma$V!2$d(P&aqQlg@wI2_Kvz<^q<7KudO-rn#sfj}S-2ySj}hKGlf zl9KlK_emrY9{=yv@6ke>;fE334$^v91Mr>Cb1h2qPXFOPKm@Zp0hs;cJZ=7og? z`@6^V^mKiF{rdX))zy{FX0uo<@Mabm7^v6ludlCN7vdq@`KmB9G!z{josp3d5)!hy zx|*7r`bfvY!NJJLNIsv>U@)qyt3@J_kB^VLvT_=n$z)bmRyH*?g@%R(2L~$@ivIro z^z?MtMJN>F@%Yr#RQu(UoSaOf(fE8molb9SYa1IIqfjUSfZE#HuV23siA1>D^k^YY zaNGbN*|5BNtX8YPzrRwceCb4P0o>KFykZ~->gwtu5{WrEIWL{dUvOK)@@gQFNHiL) zudmPEs{Cic#JdaP#{K!h9-Alz6A#5;;-MH!JQU-kVHq16d;UBy5a2|-yu7^U&jSMi uI0*ZH9%{k%JQRb8hhi}CPz)v>iung!T07iLtJswQ0000 + + diff --git a/master/inherit_graph_35.md5 b/master/inherit_graph_35.md5 new file mode 100644 index 0000000000..cc92f45622 --- /dev/null +++ b/master/inherit_graph_35.md5 @@ -0,0 +1 @@ +13ab95595b31e98f9ccd7fff12a3b979 \ No newline at end of file diff --git a/master/inherit_graph_35.png b/master/inherit_graph_35.png new file mode 100644 index 0000000000000000000000000000000000000000..c30064f53d9ee3eb112dbd74da662c2ed4caf8b2 GIT binary patch literal 2097 zcmV-12+sG3P)_ z{z?VGYieq0GBY!6yMK&Sole)))wSU%A^a0vU0phz&b|cWcv5F)=SJm&-~&)7)T$EX zo(e+{QDF!oDhz?As2Ld<_wV2LcNTtQ-9_E7>-&E$q&@2{szRYSb?TIF>twN5C_7jz zmKP0;jg4`+ToQ>yBof(d_N!N~yvQUiElnbkcoDd+1ncx$U0rSc&C{n(y{O^Pp+k5) zeq>}stJT)j)Ch$_pC{=ryb(1uHTCM%s|OAo2oDcWNJx10>={%(J3CulT}`LciA3V* z)2Dy_{0aV?6UH#axC34~s8 z84L!f++wkWhlh`jj=D)8KR@5T3v#)9RYSIIHv$L}r zjmCXF_V?5yM~=8U%}wPL3gyn7J8HH1>({S59B)F6cm(~ zmw){D(QGz1H#hh6^sF)P@ZrN{Wo2VyW50g=di(Y*m&;vTTm-&YIJm0ZU@&kvoEI-% zeE({ntr036{U%q^Ke0+RqX~|--%+Jq5H%l^^ zJUTkMyu9qbBWuLZ3niztwY4QDC+FwqGZ>8F;o;oe+%*PDrP9R2L^hjEB9W@9s>;gB zHgDeStE`+>PN7iFoH=vj#*MhRxR{uj=H}+s*4Bdu4?-baE*FhP=jP_xF6;jN`y(SG z*=#nENW6LT=A%cC@OV4`ptiQQudfe_#X_s!b?t};*xz8+xKM&U3kwTdw{DfmWd2TM zO#ojllwge2YQ1~+E*6VDdi1EjbMX?NEtFsb4u^}3jBIIXu`Q8;4n)+|`1}E5<3Xlh z7!qWnBL3Q12slw~wi*_TWiS{eB_&Fw(stBWMqXfAX1*feL&(nVgxK zDVNLrom4Oph@wJl+O#PlA)&s$zO=Nos;UZlAX{bRUAb~4CntwMAhfr)yRy9;4M9iC zY-VQW`0?W;5^2Yd9VbqlfXs$fP2}X{xN_wJjldPv29L)x7z`?v%JEQ3OUw1^*MI!@ zQCwW?%JyFIIm%5BIs@QfgMq=}A>1^}2$ zCdWf(&z{}8cP{`yuh+}va)ZIJbLUO~KwVuOkx2aT;X_13#N)@0)oL~L!mpyD!m*Oc z$;p>5UrtR;L9t@7I5|1lXf%?^Wcw!Ycs!raZ)|Mbw{PF#;-W+%xp(j0I(GXX2!fFc z`IOtXZF4*n6B7e%xU#+0VhHMVIt&IA8ygGlLh{=_WUw^>T)1)pNDz$F2M-=lsnp%O zcRL=keR1H*_R?y#P7OhO%PcxNdU<(StJOmKjgOCm-_ry5^P>h=u3VrIxFdCGX-TD0 z)z;QZrBbn2?D)lqJ+5poSB9XyWyWAIva_=V0)f$J)ai8R&Yfek+0fkUh@&ePfCQqb zw{PD@p-=<@fyH8d{``4pXo$<@{x!;#?d8-ETxFScbadeH_&s~}FqupWg(8(oUA5xq z$^|0!mJMRP{gnW8H)#x$|2J)3_(PNA&96j1Q8X6 zI9Vta6%}oK9tb| + + diff --git a/master/inherit_graph_36.md5 b/master/inherit_graph_36.md5 new file mode 100644 index 0000000000..20dd4aa822 --- /dev/null +++ b/master/inherit_graph_36.md5 @@ -0,0 +1 @@ +c674344ef049aebe928ef2330dbb235c \ No newline at end of file diff --git a/master/inherit_graph_36.png b/master/inherit_graph_36.png new file mode 100644 index 0000000000000000000000000000000000000000..ebc2edee4b0a018d0afb9a33657fddef69a760c7 GIT binary patch literal 1936 zcmV;B2XFX^P)AdJy!$CeD-!RDQ^#T-Rf!XK+P@)eiDgr@8MIflC2qfPBWNd6q zE|+gqDJT&ml}bxXOMRz*%+%@WX^lp+?j@nD3XMiHJw5H;62H8YTCHBMdQhSO1VKw$ z&@~l-prRrWR8$0lOi`IkW@l&TMpv<6thuP`c7OllLi)4jqUvRWvHz$k5g8X2y zSP@)ka&nT#<54ISGMUU~vtPV;5kV!z#l_v--4O(?DVz22E0IXN|M29=lL#^#K75!! zAn5gatJNx%N}HORqF&@i5s9dUg@uDKfs?)#gzgV78WED37t+Skw_d4=i|qZaC=izQ+9Ut^5cN4^!N>!e0Fx$Y&M@e zcaBD*B_$ZpYMw`nN0EV@o-3cdpm={z~k{{Wo3H39sqFS#EFTC ziIXQ!LJ-7cGJ_1Hu&_`nm6ny25eS65yu4ShUbVEe&}g*eiV!KtaKqN1YV;o%Si>+0%ECez5sh}CM%&CTWU zc)oG2o`A_I6w1z>JFi^1qSNVIE|;&fKp?PMt)ru(@M%X!M@2;iolc*eoIHR2d{0l0 z!{KOdZdR#O0D#`!-lC$SuC6Yx*Q?X%f)7Ni)n31TeP(8c$z)bkR2Yp$gTXL9KK}Ue zU<>>s!(ikb;7OmX;Ry_}jN{005iK2LCEeCexD6B_$;ag(65G{E5qM zx5MookB3Mk8VrUY1yoj6`VT>?)h@Y^?>I49g@pz9l+Wj1ym&F#?fx48 zfWE#y|CR`6DuqIU53pD)0Kn;VS}c~hxVWsWtZ)OTrltS@R4NtT^~A-+&CkzUESBJT z{MXc@M~|-5El6@Im3rgG4U@_A_3KwYpI=>FJu)%^0BC4v&}cLcheNGa$H&KWxm*AM zgTYX#R2ME>C@wCpudjde=1o}F0s!pTu>(HXx^*iKhr{FXzEh{u8GNwe65!i!WMpJy zcsw4n*&OalK&R6&7|fS1Us6(1qE$>-$%#awNFO;YfA{X) z+}xZ(p%@q#2r=-;kt0H(aB_0;=g*(7U%%$@c)x!A0@2twtd!htw{yAN=g*&i|Neb$ zZmy%F!(y?Nl$5|x4Gj%4ne64um%ewTXV0Epx^(IN`}c0Q+vD*#olbbMOifKS7!1FE z{|-Ko5ZU03Qb2lodh+x0D=RBAGczY9Cd$jpLkv_ZmASdOY&M%hp@_v|p-{MG%a&+W z6)-uKN>Fz{bsL)<7K9+%6tZQC}LO1062ganAzMhU@q zz22KQZ(_07;i0dD18Wo$KT8PB7s2~~^n=i@S+}zO6P-<#wX=$le ztBr1*F-5G4x}2~qHh&Tm6LWHMnwy*J>gvQ|G5m(d;cy@b!eB5A2IK10t8ioJo?2|O z`9xib(EU3;pKrI@jYcB?U|?Xt>-DcfW*SL$Z7 z*|b`1XJ;pa!5|WeGMUV5HotxQHelzpv@`&K!{P9?#Kpz!-o0Ba7C(CQXqCxhfmj!H z^%mQ5VB>T9_U!-wwOYMr&mIDS06~yMBC*+Qt4tmXAmrmiShm;QyLV|c+OA!@W@l$> zYHBnZ&B22Q2?Ro0TU&2$FWe_KJ+%;t^_dzXq1aw-x7%nmHa0dYmCE+^b_jxC2Q4`{ zIWaL&r_;5zw)#3p*Hc?(5F#oFYJ0&8b5c?gi^cl%>C@QQ7>~yT0Ayrj$Yipbni?XJ zD3wZ&9XsaB7Nee8i1=GJsP(oP0jTx%UjP*qfuN!y5L8qIf{KbjP*D*GDk=gA@R_i> zx_bTVK#3xM%+$2Bw5qDAjVc8tGODVoVBg6H + + diff --git a/master/inherit_graph_37.md5 b/master/inherit_graph_37.md5 new file mode 100644 index 0000000000..5e7717c9d9 --- /dev/null +++ b/master/inherit_graph_37.md5 @@ -0,0 +1 @@ +f62fc51763694d44a294e40b8bcad68e \ No newline at end of file diff --git a/master/inherit_graph_37.png b/master/inherit_graph_37.png new file mode 100644 index 0000000000000000000000000000000000000000..cfe72bb6db091dcb2a412906b3e1d8fc5e49156b GIT binary patch literal 1355 zcmV-R1+@B!P)HO z5F_fPXnBx`Hrt>Fdnts-qFySZpp7VLvE`v?w^S-xAZa1&c<#fwSI)o1+uv&)Zk^B5 z%x`9X^PR85jOTD51VI47mqWr^zz>D+9Ulna@qzFiAAVsgOG`_wt*v-T`QF6F#+H?p znX13-ca26fG&J<(lDP$;~=zX!jcGw%(& zySo#M#a>=s&d$y(7VG5X1dTT|H2C@Xy)K)F#bQAaL?V%xOr}I4F}>*S=;&ZFnG^~o zK0aQhQknYi?(V*pR8>_a5D0`qA)QY5_4V!Q>caN#?Cg|Er50Fc!ovOD*Vot3&~Sc! z&g1d8TrRpcE|;rPsm8{}j*pKcA|hsHW!zkAH29t*gTb({u;Ak25*Qdrp-`ft zqUPr2(9SRn7Zen`H8u71LTYPkU-xWpZ_mxmMG)lZ=!in0 zyiWV3q|3`o0Dy;w$Li{;Uayx(BvdL@qtPG;B9TbYglA`G0D$%N^?$VsK@bjy!{KnS z5exS_gTX)x=rQ;B_^4K^ZES3OeSQCQ;PLS>0Knbd9fBYTf^2MT^m@Hotu~)WEEd1` zbxlo!gM;DW;Z!OWf*`S2tkr4(08A#czrVktq9QUfQXmj)Zf=^9M4?b12r4WrjEIPE zbabq$sch#goK2Lhllr)kjZ3!e}7Z; z?;T1asZ=VRPRC#{AP91Ea{~Z`g@u)ums_CIYQB4Vda_t7fk3dcvvYfUE0f7aM@K(6 zFf%ig&*$&$?L9m^tgNhLWo11*JpqgE)yKz2qtWQ(2x|>DwQe}3M!RqCXYxYDlRT&v)Qh$uH)n5O)9Ulna@qzFi9|+&^;f?P&6bi-H>-gSi zwOS7k4{YQO-*a*!g2Ulps}S*YiVMW~jt_+I_(1rM4}|ad@E2UZ0|2Tvwxa+5 N002ovPDHLkV1m+av7Z0{ literal 0 HcmV?d00001 diff --git a/master/inherit_graph_38.map b/master/inherit_graph_38.map new file mode 100644 index 0000000000..2b20cd5287 --- /dev/null +++ b/master/inherit_graph_38.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_38.md5 b/master/inherit_graph_38.md5 new file mode 100644 index 0000000000..848a499194 --- /dev/null +++ b/master/inherit_graph_38.md5 @@ -0,0 +1 @@ +ba0e13fb3e33a3b58173a2fcc399d234 \ No newline at end of file diff --git a/master/inherit_graph_38.png b/master/inherit_graph_38.png new file mode 100644 index 0000000000000000000000000000000000000000..12ec45254e085995b4f1c998f71df020a4dcc9f1 GIT binary patch literal 1768 zcmVP)HpPT)fo6|uoWU|g?-FBaabw&iK_(LzhIMv!QX|u%lbV~G$4d`n@=;t| z91(%fLlCY&4?(yBJp|#(RQJ%bWy@?f+eE9F+>E)0R4Ucw%a_OcQ>F;= zGMOwjHMOXy$m8*l@e?Ob$mR0rW3^gcU0qF;q*N*oA3jVT7Znu&01yO0QS{icW1&!p zjMvxKqbQo3oSc`J=WsaKC9Ph)+GsS=PXGP;_nDcQ-QC>)fY+~IvqvXzMC^R}@0D#ukR)Qdc!C*^E z%hjt_o0^&c04|rSrl!Vbvwi#a?eyu>WROWxFc^IL^y%!`vllH|BoGKzu3Y)((IYY$ z$MLOOx7O9wiN)f-Dv?Me^XJb$dh{rUVZVO;3dgTqyQWYm8X6i1g1|70Npo~s7~1Ku zj@XBy2YS6;0D#}`C*wGd zi$tQXt}YeeZ{k!NJTNg@$h1^XpT+`H5{!&HQwgzZBTiG(~L9}7lCMm!!*Qc{v!E{}I$Pfrg3Kq{3Y2!bF;Qc}|3;GoCj zVXqT?FAHC4Zf;(&VuesBL=dF9y4vUS0RS>HGn<;4_U_%Alao_XQStWeTNX(IfdD~} zZQHgf6pECTlmiD2%$hZ;y}iA=yZhqBi|5aukG)Y+sr15y3vRc2U|?YL=FP>$#T^|T z(P^}rSzwtCEwrl>ZxJRE_DqeUD30SFKYomN;M}=$c|6|0zyQ?~TCH|;GQNEIQd(Mi z=+L3QzP?Z>WU*NO{P{y((rUGL@7{g!;>DUZYgVmVH9S1bRD{pxFI>1VeERQS8;|F7 zI{kjXL?S^DBt1PH0I+=d@|v2OScHj0qRPrj6h)ssdjJ7-q3p$oT#H_xJDL|KY=jU@(Z|IGM&$XZP;i zR;$(Fa10F%9Y1~?$MLmm*KXOeCG7I>z3j}HGfYzbe!o_$eemGHj~_n*fxx9pmpmR1 zxn-uOr+0OAkzQfa9FazaX*x{#w5tYu7HVRy$|ToVK>Mwzf8M2G*tc)rojZ5=9j1Ihw>t6mgb9S8{I0`px06qEqbLNKB9QNX zP+t&&-!VeC0zCxb3iJ?!E6_s_u0Rh#xB@){;R^H+gex?^4YJ$qL~)hm4 + + diff --git a/master/inherit_graph_39.md5 b/master/inherit_graph_39.md5 new file mode 100644 index 0000000000..a993c9b990 --- /dev/null +++ b/master/inherit_graph_39.md5 @@ -0,0 +1 @@ +4e7bae4f4b0d910eb277a69badf5b699 \ No newline at end of file diff --git a/master/inherit_graph_39.png b/master/inherit_graph_39.png new file mode 100644 index 0000000000000000000000000000000000000000..785b13f3c091017de353632d0ea63afa0383b3a0 GIT binary patch literal 1206 zcmV;n1WEgeP)tka<+Z#AP9zeE*=$Z- z{eB1=DwRqY zhAS#6WHQ;w$w^kXJhK&x-}`;l(b2(XvppV9Fc>tO%@&L0rz-*g0DzO&+}upFWTmmO zaddRFwY9aZtgNoC?%?2nu*YICqtS>UNO^hrz`(%s^D~a)B9X{uv*iwadU`S%jeI_z z%jL@D@<1R!*r%tb1p-0lSSpp8OeS(kB9Ul(e4H4|<#GT31VIRbOifKClSv%MH5yH- zWsyh}i9`SZ7Z(?4t);o;nJq^PxlyT9DwT?CDR6%{91e@c5{X1~I-ORl#c><}pw((U z9?#z1p5O0pZf-t0I?6Lpr_=d-zT@NLU@%x;U$0aulgVUZg#iFuE*FmD@9*!sySuBa ztLy9Q0Dz5+jppWNyWNiCIEtb$4A<7yPEJmuDEj*Pnu<+x%QIUsTOf;*|NfYpnSmZuw*@pap`W?GG4+i2;kn0szG0@jxKJWHJQ; z!Dj>gem?+!$Kyc|1VIp!$$Wf#3+9>!23A*BGZ>6$G)i7yg+ftS z8FzPgJv}{RV`I0sx5;GEYPEiRd=OI%M)qbo9FDv zvlR39?%LW~Lqmg9Dy^xhIX^#dZEejn(BW{@*VoHrG8l%3hKBTdeQ9ZFVKpEKGCMol z)6>J@aLi_NcXxMcYGh<&e}A9FVu{6K9*;LTI5;yiBM=Dqe7?04VegFUf literal 0 HcmV?d00001 diff --git a/master/inherit_graph_4.map b/master/inherit_graph_4.map new file mode 100644 index 0000000000..9494d63bc8 --- /dev/null +++ b/master/inherit_graph_4.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_4.md5 b/master/inherit_graph_4.md5 new file mode 100644 index 0000000000..0c407ff5a4 --- /dev/null +++ b/master/inherit_graph_4.md5 @@ -0,0 +1 @@ +b272b3d8c31516a99670b1280ecd8267 \ No newline at end of file diff --git a/master/inherit_graph_4.png b/master/inherit_graph_4.png new file mode 100644 index 0000000000000000000000000000000000000000..9d43ea8f763d293248adc36f0af0f925cffb6e1b GIT binary patch literal 2023 zcmVm{ie% z21GD;L9ns$1V(Shi?e|@C~6Kz6rr*Iy*b7 zs;UCz3V}DIrl!i}az}R7{6kUn?%lhK?h=8wsMYGu&Q7c)WNxA6=H|unhrl;>@80cX zA>M!ZhR_e+5c=Vp|GItxfuOFgF3?{1&w}fRqXC*PR~NI(3$CA9tv-10;6k)qUS5tM zh*GJXuLk{gH6C>l$LLr?_ zU%h(ulP6E0eQIh-CX;cw+=z&XLx&Fi`0)eGUQFCoG?`2?nT*Y5hlhuY#o~`2KSFy& zMMZpk{MdiAPauYddYE!MZPva+ge<)i9}+v**rU-P$-TZIYOaOii?Y{UAu<8R8v!P_Uu`M!621NGcq#9$HzU}UE;DY zEiEl}yM1P6=KlTrH*el-Y-|JoG&MCPCnsOOe%)@jtJP|!cJ}PqGdVfg+uPgK)rF#H zZf>sUq3{_y29-+XWN}GiVq#@wB}~Hy%3v_SNu$+joeFQ*u%WiL)Jz zRx6!O*Jv~z955PJGwOZj5=M!u;n?xc_OiW-OtIW(ycjaw1TU}k&7 zn~lL>P$(3&T3uaT?I<4=6{XQ=9CA9~@p$R!>BYsxqoboJiXJ|ESR@ifMMZftEM797 z-wzE94Qtn~-L`ETkH_oo?%uR%lb02hN@YSqf=DD{GMObMCHeXJOO`BgS6HD?h(sc+ zg+ieSg+j-NL{U-EsZ*z-qoZ%%zTMi|x?;r&&vq~S!r^evojaG4lS8M|<#PGXojV z+rJP5350(5#zp)c*Yx)G`eesD#QeiIc-7C37!8ghS>6-8>*vp(KjFcI6J#>kVzJCU zY5XI8R0)29cm9QjhB|i1yLRm=EG&fSxu41ZWr9UN51}HLIEAI;a(P->8jVKd^Z74d zzO1aQjE#+DFc?KeMUGI0H<2u((U_5uL8sICeEyXyR}ci5n3wp; zo}Qk0@4nvzi++E}g9i^TUc5LqHYN}Vwrtt*;ll@wM$^^R_3+`td-v|Stl~0!Bb7=S z494K#U`tC&Lqh{B+27xP^ytxshK4U+zMMaQ9)^vA1?_$ z`ppY5F)=2S3BK?E06Lw{aVax1v#qV|)vH%Rp)fr?-E1}o$VX>_ML%EnFAG6@e0*wZ zYDq~6Tr*2cOQF5Jy}higY+ztuW@g4}wZcHs;=AXPV9_r~P^nbkzI}^}i`%|^JN#!6 z3Wc(9cU47@y9U6@mXixtS_GK8f`sB(V*Q-O=FOX%o158ewpc6{3Wb%Gm4Wu?4-oTj z7R#3}Z)$1^v==@=%s+fX=!b6z{qPN;AHH$1f0_Fu2LwTaTCH~a6VqAqkHunTWo0d{ zO9Vb35C~FJQ?VArPW*l(o*~|U_=eCA-w^uY8$v&P^A8RWdIkOXM~(mh002ovPDHLk FV1nB><39iZ literal 0 HcmV?d00001 diff --git a/master/inherit_graph_40.map b/master/inherit_graph_40.map new file mode 100644 index 0000000000..ad81ad4494 --- /dev/null +++ b/master/inherit_graph_40.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_40.md5 b/master/inherit_graph_40.md5 new file mode 100644 index 0000000000..5c33fd6307 --- /dev/null +++ b/master/inherit_graph_40.md5 @@ -0,0 +1 @@ +817a444c270e211eb88752bfae0b1f23 \ No newline at end of file diff --git a/master/inherit_graph_40.png b/master/inherit_graph_40.png new file mode 100644 index 0000000000000000000000000000000000000000..c8c84e9c74c7c4778c22bfb1ad88ed924092fe2c GIT binary patch literal 1701 zcmV;W23q-vP)=bpXqbK4jOAp{772qgbo03zf;HG~igsv(3}Pz@o(vWz|G?CiXG z^XC7Of(R9M?%bK5pU({EtwS!CtEs7J(Ip{535Ubc+1bgqEc2bz*x0yOdJv(<;lqc$ zET|tshy~RULM*6;5Mn_!v;-L$8No2jF+DvU$MH>@Hnp|2 z(f0B2akJU1R4Ui3S#$E_$*HL+Fn=#w$Z>LV(rh-%cE zaBz@EHfNXygQ2Ud%VaWP7^YUM{U(_p2n@p{5{Xi&EGa2rexkEb4u^+_34*|JJTWn` zxw)D1oIHYyii*H0I>w&=Kb32#)~q`Z9jQlO*JXzc6jd-dwomoHxu5)!mpEk#kn#aJws^XJdYWU^DIPTjqGm;F*j zMa7jXS4fi7>-CwLnQph6-|oxNqepvtd*8i#M-Q!5Yg$^GLZRT7?Hgu&eSJzw%KiKI zA%qTx!*5V_yB$LK>({TAmX?~DnuiY`^5;;m*N26L_4oHbe*BodW3u59eDB`9t5>g% zjg1)$2EW?8VK3bc4GmrvPLh(6Zrr#*AAkS;9RNU*Bwf^feSKb&Q&UqbD=T>%T`m^@ zU}$KFw$IJY;W*yi-OVFFqtP&%&d|`%#*G_iXJ;XV9*-wFI(m9~nz>v-K>_2ndGltA z#lmCPXf$5Qal73R!XrnHoIQIMLP$}RTrRJzt%VTs$mR?aLdet*6NT^XxP1AtZ@lH@ z<$ArICx`w0{Q!W`(NWq?w{f(1Cjb0`>7`BxI-O3Z)3Gf9u0v5#QS?E0csKxHW@ct^ za8N3hs#L1Kb#ywN0Duh}HqdRXR4N@GAE!49AyijayId}rOom}tWMt&muV3kR0!>_8 z9Q&9gNq)OmKNJ}m2>>veOm%g2v$L}=Uc49^8_UYd0s!#K_6?I$yw~MYQ&X9j8XFsv zlanJNA}|ayo6U?u&XbcQxnji%#?E;c_yxzt#x9g$zXYwPRwxv6b90|QefnERxm+%h zNIV`7JDUd&9u(qBQB+k`)rSus7{~VZcJ_8gCyr)dU?3(YhTqP~{{8#I!ouu!yVYtn z7!35C3qZC+A~f5hqodi`*_SR|8Xg{|D5|Wi?Dy~AJo95>Vy331zJ2?~MC3b%UoeJY z0=4-Pv>J+yjU@;oFE6jRxA(`7AC;ArcDr4m zpr?NN^eF%!F)@*`?Af!Yr>CcmR6y%6iyukY^e=C1~tnVA`iqE@Y1C6mb<4o6v88UK8hO0{d(uG6PayWQ@A zfq{a80^d0S2o^{%pY3aFYqxCKqS0vL;^Mlxy7unfE6~wqvn3=XWMpJSMMa%Cb0#-8 zclq+=LL4m?OGZWp+ai<6($mwKhx`*KP81atMMp>1)z!7Owys;Zj^AEhUe5k}h-pqu zCR0a8hf=BBv13QTvM*e?@Z`yp@bGZI&t(dQ;@Y)q+1c4Rj_2p+)4L}>4Gj&Glanfy ziXaH1(a1R`;5_?*y|M}HsY8XNq@)KA9tgK1gb=iz8i8OyHG~ig$L|=I49o|E0_}*v zK85DTgygjhIw>PL?rExry!s6djW*H=RvHKf<;7fTN!B+=<~>>&ox v{|_O=f%+kYSWpci#DZ!FAr@3a2(kPDe9`6S4HhdE00000NkvXXu0mjfLghkD literal 0 HcmV?d00001 diff --git a/master/inherit_graph_41.map b/master/inherit_graph_41.map new file mode 100644 index 0000000000..67bf88a327 --- /dev/null +++ b/master/inherit_graph_41.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/inherit_graph_41.md5 b/master/inherit_graph_41.md5 new file mode 100644 index 0000000000..1e8b970f87 --- /dev/null +++ b/master/inherit_graph_41.md5 @@ -0,0 +1 @@ +eb334aa9370e125597ae268d1cf41669 \ No newline at end of file diff --git a/master/inherit_graph_41.png b/master/inherit_graph_41.png new file mode 100644 index 0000000000000000000000000000000000000000..44952b4f7100d080e6b0e1810303c29479efbebf GIT binary patch literal 2636 zcmV-S3bXZzP)hMk}Nteh{ zflOf-O}LA3MRU!~!r1*|&L2U{mY8LrMuwO>aKmJ1yly1wwxo4IFBwxoU`1LAtB6Rb zD1$!t55w6?+tXH{1^avw63&nJoael!&*OQIrw4(E2#hht0?C$$^~{}^ZgQZP0V zn>TOvcL)=fnwrYF!Dft_ni^zhXFFZS_xu@SEC6xwXN<7`#KoU6#sUx*|0&SZ(*r>e z(A(SV?@$=?xzyBD96x^C<@8kGob#UFi@z^E82&b0k8!%j#h&2v^Yo@`-%Y2u{9gR^ zdOddR*x|GNsZ=Ty78W|p-?wic1VKP$W#y#r)7xWIsZg(&pX_LtW zK@ia2-wy!j?(T+KtwwlwIF>G5if_L8#;*PNW3*T-c;}sW5E&VXmtJ}a@4ovk`uh5u z#wL@=5Fa0pl9CeS<>g`5u3Z>=3%68X96fpzue|b#-L?z{1A>Br(9zN1G%l(0j|pL}u-D^~m)IXPdTw)PsV*2e&5_8Z4%T5ja$=VM@C04GnLba_nf^1&0Fb5Hm) z=O*pSzp}Ct2M-=ZPfri>^74?In=5u$Zf-8FU%!s?=g-4nFd#WO8J8|yda7;Z<>jHZ zwH22yUq)wVClV48keQhYo6Yvrv6q#VVfXIckjZ4&xpODV%geoLpPikJu&^++wY8zH zt_~Fy6_V>`Wo6;Pg9m7AY(zst1B^x^a&vRt?q|!EE$Hg%LQ6{v0O`KivSkZy-MWRw z#zwJyMMVYPc;gK$T)5Eb_NC6#RP_7p+dU{P{V!5dK1N#FA(WS2#=U!k0DzH^slD>_ zrJ0l)VPRp|zkff9i;FQhI5@Ebm%usqgs*eX4vkY?T}@7AOG-*gqSDe*ak{Usj{uO# zWTHEF?hpWKZEbbhcGap?bnMtMkG5qr8VLY(b#;l$M@L5~JUpC!`Q;anVogs^C#_a1 zPIq;6QFL@P4G#|!5m9e%FU_AnpB_GZD6SI~6-D2F|GhXp7RUYj_o=O|jR4T^zyB^S zudlBs0Ce~6U58_AZ*M06WH1=S^_!ZS2mqPQW~VWZxqbUK0id6L`pKid$jZv1_uqe? zh=^=98^y%LP*qixxc*<`k~&Y5(eFe=8jXhDdMlfb9lJs*RVgVHg%lI>Pf{of-Tqv; z((Lhmriw0Z==x&g+d|O z764v+@kJO61_081v2EKnY~8vQB_$>J@y8$0-`|h7-+tTawmUjHT%IRS_T^4flL<{t zf5X5)C>k36yoWkGJmR)30OaI+;n8|iDL8mOR;@C7-EOAkh9C$iEiFZQdO8XU3OsJ- zDbBe++e~H7xie|S-<5?67h-gD6z%QpZtuOj6B84IS+i!rVzFS}ym=Fj&1SRV`0?Yo zapMM-E?p|ludlDiM<0D8eh}qyIfjOY#N`%?Mf_cwcQ(Sp642b-jgXLFjEs!HlRqR{ShxW%zdZk`_B~lX{d98Q zb~~MOvQ=M~ec`;0IDJdz5PMta>P7e(Y*$rpZYBjA{ zvxaWoyh;82{Zw9FPIYy4MC5#EE48gnn>LYJt)`Zi7P4Bc^z+X@)22@lv|zykhvRwt_%Y3yGe;a=X*3$j%*>?w_wQ3jM+d$6=9_lI z+}B=vjW%!IOcslU+S}VHB_+k>5R`~$?b@}ZR;$TuHdAM3C#9vOQAS3F(-?<`hpD-_ znfC78OTodxR9jmsuIH{Vh=@M;-~(E>ZXL~@J)5pxy=r%yFm5m zM~~K1YU;)p+kqz+uMt%s3@q_YKLK5b#*lc2L}-s7YDUkjl8@( z$^BMWS7XkcIat1YIg*o;5fv5X@T~J^pM3^F5b*r-&qJkB!E81|r_&)bGt;ZS*tTsO zu3Wi-*w|R4q@+m3C3T)Av)=(AIywS7cm5qZ-G{hz>0i)lH$b773jhcSneqYYv@ui!ypE1S)5Ep;O7z;pL{25~`0J;1R-9C uSRmr!&lqC?h>JgCj0GSr{){mefc_5y9C_kdb4-H(0000kE) literal 0 HcmV?d00001 diff --git a/master/inherit_graph_42.map b/master/inherit_graph_42.map new file mode 100644 index 0000000000..173a354cee --- /dev/null +++ b/master/inherit_graph_42.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_42.md5 b/master/inherit_graph_42.md5 new file mode 100644 index 0000000000..664579e711 --- /dev/null +++ b/master/inherit_graph_42.md5 @@ -0,0 +1 @@ +6e59e0a1aea7467589646144ed0b5fad \ No newline at end of file diff --git a/master/inherit_graph_42.png b/master/inherit_graph_42.png new file mode 100644 index 0000000000000000000000000000000000000000..d24ac203cb2971f0db93b6fe4cdd81d74a1ea94a GIT binary patch literal 2201 zcmYk8cTm$w8^@y{H5BP^kzfKAdI^G&90-JFOr*S=#2od69D+eg=*7^Bp&ei-#{~$y zfOMoc=_tJlDpiU>P(ThM?SB4qbGx&Wm_GLgdL3V?$OWM};$tSV z1AH>eEp{R&w|)-IUT++6S2>uSF7(MgVr|YZ46||;Zng&wHy(tj7^s5T5P$SO%xC-S z3DTQdERf^GG+2NBy+H_vL?X-W+S|J?>6+ZVgtAup1ptnp0v;=srmXh^{%ci z1qB5(%-r1kVw6KV(sOgVY-5Ail4q3fpeg}}!;O?OFQM+horKB5PBe_Qxw)FArkqf$ zr>CdAfS0FdQ*-kJJRTu+7lXkB1~#XOqG4l;i;J5x6@9(EFc@rnd>qUXzW>TZHpQ|C zt415_?CiYdyM64!dhtS0ORJtvrx)RJ%@`In57jj^*4Neo0s`jSLlg6eSS(eJq)+#7 zbab@0@31hA(02$84aMOE6jjp9goT9-^z{>tpI>UVgV5S9E5Eni?rSD*HIcWZbfUxo z<+WS7IXF3=@qC%BDQarUEP%!3fx=>AxrsBI`?j{Wt*x!H=L8Q{fEoVin(Atb!*gsA zFBnX~<0-mTvu+Fv?nDQLh4xUWl+<}p5Nr3s+>&ARk(xAfeI)lBNa`6!`lroJHW2Y8 ze(-%+7`}`H)DnD@UI3@jXgxhW5>b-iDBuDc36Bxl&c-9uorkxb9fOn4ReJe)7I98FB7vZPM3f} zU8?T;NjS3^nNLnliRQX`B!*YH>OEG_pwO74$kg;S2Ph^Xp<9WYn>#o-*u&>pTwFCGgJ1yxz*6&wg3-~@h=>S)vVj3p5j0>aR#1qZ9;j*%2-(r0 zXJZ3MT3S+~FBnk(S5{VrCI7#qgt@cQ=UDaj^%(pKQJ5M;PIi~QLHi{t*KaGzDZ1b;y~Q z{rvLo+tJa=%1R*5D}r2xuwpn&*t zj!LE0*4CbVHVFwi1#I3x*xvroJXA*{fBP&g3F9(4RIaJ2Qd3ai&2OJPPJKEDGnXms zyd@~*xdE|+BKszzht>A!UTzwpNq8QXk|)8|mMX)w!(s;|rKDKk@vc_ta&i|~k^~>s zJ8o_-7+T}xe2ZeLG>UmY7yEF<%dJ$M_^s)%<0;!P^()RL#}l*L`#MFPh{BgmFD%$8 zXLL;fJQNhjw%X?AvpVD_diL5oT_SNTia=OtnkUni8}2CgMp^sQ?AooZt>r~{CJIeuO^zVQ3(HOQrwiYcu7wxMOB)?da&Vqu*2ful-qpG9 zeftJjRnAs=M9oNkiYAJRj*hlbOfOD%dB*;GszKlGyWmZyQgtrO-%fURc0}Ef<3r%F z^Y%t0_GvswCX{H1q8bV1`gHBUzuf?N?kk>tT?$V&@Z=unkH$K}y)fnAIi|dp)-N)G zV1EAj)vqS(9_c+k-p5$Ny&(+4dq$Ms}LGg5s2ERrjnV>jEszDZ8cR!l-dD$ z>f3&QAT%Y^N(b`%COqFt-kn5h57>9Lv=ol-F~eXK6%^j|_lGUCq@|_3tg8ba<*p;w ztb(SKql3V}z&%zF6q@^!)?>tt8v%ZP5^0x{WwyLFz(n_C*U`DE$(nR_K4|!vvq6k79Eg U4%@0#1pXQzQ#97FT;HDZ52>I#0ssI2 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_43.map b/master/inherit_graph_43.map new file mode 100644 index 0000000000..e91a983ee3 --- /dev/null +++ b/master/inherit_graph_43.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_43.md5 b/master/inherit_graph_43.md5 new file mode 100644 index 0000000000..6626db893a --- /dev/null +++ b/master/inherit_graph_43.md5 @@ -0,0 +1 @@ +66c490a48c80a058e7f448b8429beb83 \ No newline at end of file diff --git a/master/inherit_graph_43.png b/master/inherit_graph_43.png new file mode 100644 index 0000000000000000000000000000000000000000..1cbc2b9f47e3c128b76b3e11dc3a2fe9b30c82ca GIT binary patch literal 2274 zcmV<82p#u{P)dYCA5vrDvk6;iXlS^9|Nh@{ zg~V9+`1oA9bV*bFWgpAs@)s{&nA{~2VXGdJPZIB8yhoxYBX*%8jZu@L_|b1Ha4zw(lsSCG&D3c z6x%|CYqeUfE+{BCd-iN@ZmtQYLr<^q@$u^FY6gSh1VJv|M6y&UNpI5jnul$7M);9zBCB@hS( z1_sdfjEs!kyLT@y<9PGt&5j*A9zA*_lgYk*{i1|*>59yXSmizzi^Ulk86zVjB9SOEG7?>3WMpJ> zb8}Tyl}sk{^z{7j;e&w#MIupmclXDS9|s2qU0hs3LPFGPwc*a>=H_0!c#%q_#>K@w ze*E~i{e?myjYjL~>3Q|)RZ&rq);?ijVdLZDEiEmdKYy0X<&lw*x~xS+L<|iLb#`{@ zT1Z4hL`O$QOG^vdzo@7vARxfe(Gh1yYxMpwGXI0Ua2t3(c5`#PckdorMo(}UhS5{3 zySp3L+1uMYFE3BeK)GBF02mq?Lfe;?mgsbPYip|>2e9|!p`jr*n>{~2k06LrskF1R zo0*wG4>6g{+S*#QjL!1&=g*#=9st0%Z{N^%bfcs9V~wl5y}bYcnM{WEX=`f(04Nj+ zMBAf4S63GRpuWCd&qBh&!V(h`5d=}I)ea605{U#C9Ieq?MPv{o-j8i)nL4jN@r&6g91licwC=?3x zOw|Pp!`rrP)3~A4VYytsY11anRzvR*XvDR41_0RD*yveEbaZraaq;~8{QLLsRVvlV zlP7UTv_|g_Bcs7+&s>gFH@rwXd&lxmh-wy|}nII5>z_(XG#Bv$gtATwKgz zvG(lQqh}#UjvS%UXqA3~m=;#<9AJ5Cn ztE{XvaNvm(C!(UFy1Ke%W@Z{28$&`u=H}*r0nc1DH8lVLS65d}i=UrgTU#4?b#-@l zFDxunsZ;|411TvfXa_Erd+5-i`1ts-v9Z3szSPvz#bR-Gb~Xe-dKO}4W+oDeva_>azI+)I6JucX^cY+b#{BIh zkx2IL-5V4XZ7ip63V7Z*OCZ)Sg#30P(b3U$b#)vL=fHsjT4&T6y;VmB3xr_4 z%PcD^6AFb0`K9JY2F)#E6U0P#2STDBQe)ynYD|3oMUCCv-6ayq-}b_E{3{x7pcJRk z*%%t%xN!r5AnXqq0Dza57xry4u8Kn{m7Y6yZgsQkx4iz@02-S(bx1(4@5%n+Hv+eA z-Qse&%gYFYyng+9|Ni}Rb8`#^qphtCZ4?THnk9I9d*iAIg1EW4rKP3$`}(;HlzP?ROO=})99c;*N1hl3OpFMl#>FHTmSco8qR4T<)(LPU}Jh^%Erb?v>4-d!L z%*n|~Pfv$oSSS=8J9cbrY)see%Pnio_jPr3UA}x-B9VOm{yj4@v!tYCZGy2H){Dkh zuUCT(Fqurl zKjeU6xT2yWKR=(t;n3;yJ9qB%_V%{7w{PCOnM$S7>2w;6#^doaGcye|Xad%Y#=2N( z>JW>)y}hnOPEJnPG7Q58+SHZr<8U}7B_&s`T=DYqiiwH&^5u(x22H@a)>wb)(9G-? z=W$g400cq0ETdAP^!4?zSS+9;7m2g1C*Kzw99&aV^Xb#4z`#I1Kfjronbob@=&Tow zwWbmErw$nmMr&*9;^HED2v^llPEJl;UESp5VHideM_O}{ILo^7eYLf?ST7oDMStorIXStyy4u{_oX6uWuj=Rg`SaJVU9+>ZD=sds zs;b(#b0^T9i^N&hn(y=X_qVdL;`8~|*47UmJSZzGv#_u*ZZuX6nOh_pWNz_agw&Y$ zkQx&oQe)ynYD|1cjfoGbG4avzzdp07*qoM6N<$f_xrA(*OVf literal 0 HcmV?d00001 diff --git a/master/inherit_graph_44.map b/master/inherit_graph_44.map new file mode 100644 index 0000000000..712df9faf3 --- /dev/null +++ b/master/inherit_graph_44.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_44.md5 b/master/inherit_graph_44.md5 new file mode 100644 index 0000000000..06588dfbe8 --- /dev/null +++ b/master/inherit_graph_44.md5 @@ -0,0 +1 @@ +809e13bb2d70b0b11b5552dfb85711f7 \ No newline at end of file diff --git a/master/inherit_graph_44.png b/master/inherit_graph_44.png new file mode 100644 index 0000000000000000000000000000000000000000..4b3071ceb384d3bb0cfdfae4bdd896c9848c81dc GIT binary patch literal 2002 zcmV;@2QB!CP)SK~#90?VMXoQ%e`e*KR9Xg#v;k(x!z%1ey>kBw`;-K;#i)N~MBvBqEV0H#gUE`M3Q*uh%y>H#e6bp))vP6PEAcsj>-qKGVI&8 zZ;l1m2N(dX0}KM|00Z#H>Od$I*4NjsbQV8h>(;GTuU>V`SpT>V961?`-TdP^=<4dq z%F0^an6a_3M~@!0vylnP*4;#F)?xX?%j$MgTAv3~_OBEEY>35R{jf69h3fHbzlY zPEJl%R#stQA(zYb@bHkyWEB+^MMXtJLqio66`MD2whT8gFhHl%2L}gjWF-^|3knJ% zA|hN|TyEUBVLdysSWFNEjYjkJ^*w$1G@6}Cr3wxXw)D~IbPNW=dX7uS&i$aawpOWB zj*N`RWU{ohG?Z3aTH1>jFIrn$2L=Yh!onUsdbC7GnM|hB>Dt@dhlhs)0|O-ziP>zn zFEIc}Nl7sn3_U$Pwj--ls-mJIk|d>4Xz>KU$ut_Rt*tF3C8fK&`{m1*$X-)Z6A=;NhSQeMZ}erl~GYqJRZ-URims>tJQNX3lb6%a`ECt z)E*xn2LO^JkqmV@-JH(h;o((PRW=;;dOZLb3(#4QHWG-5i9u(ety2iB`7GUva*t*C^nnj*4BoM$oQ{eg4u}Q(9Uol}b@N zCnqO0HI<^MnVA_6506{7ZrNBj3yFz|iHV8U7CZL?FE20DU^1BiFg-mzI5Cdw$b3HE;=~ip%9Lm_t)jQ)pLcz8`sjY_3TPfuU9YL$J9wro1!a=Bu$I5RV|ySsa0Vxp?5 zN~6&%(Q(h7J?ZJ`y}i9(zkYrC^r=K5`S$G_{9>IrJ3HIc({t?DvD(_&va&LQAZ$bi z0F_GB(b4hw^XCf}E|4TCkw^eQC=_11cFkxs4h;?E<>jHC{{H?Vkw`9=kB*M^_xI=L z=Oa5o5as3NRaI4mg@t;(etdkquCDIz;ll+51?Z5b(P%Q6tgNi8rKKe^GxMkOU5x4J zX|vhv>gwv`!7eK$KhySTXc$&)9)^L)OX&yDr<^})fxF)=ZGKL7di=aG?- zOLVNQtqlwe+_h_$mzS4ZE>BNSU%h(u(#I_=EhPxT#lNof{h)W3$;}u^4UR2(?;mG#dT<{C4l&jb7F{IXMA9e0+Rc zTU%#mr$8X^_Vz9*DY<<4^2w7YEshx(866!RzP`R&wrsI`zCJ!a#l^+R$;m7hD>paS zIxzr{NF+2GEiy9F_V?r`Snp0ttP}rmT3cJ)-Q8C@i@%tenOVPnePd(e(p~1)i3|Mw z0cJjGwVJ_TL`O&W_xI=J<;{7hTR|v_x^m?TlgZq>ckl1S!8%wHJ9qBP$;mlz;J~_d z>k<+YluG4FXY_y8u3hWq=2l%@ZFhx;z&cnG9v&WZe&G9;V0pUvP5uk-7cjpM)&T|p z>i~nmI=}!dSSQ}RdDHQEU>pfalIVAI3k&E#DwR4aAIyr8n3!mNNl^IzA7F5OfI(m# kU;wZVFbJ#z3;@9Y0K9ONzUPC(#sB~S07*qoM6N<$g81spXaE2J literal 0 HcmV?d00001 diff --git a/master/inherit_graph_45.map b/master/inherit_graph_45.map new file mode 100644 index 0000000000..ab48e57fa6 --- /dev/null +++ b/master/inherit_graph_45.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_45.md5 b/master/inherit_graph_45.md5 new file mode 100644 index 0000000000..ab8a8041da --- /dev/null +++ b/master/inherit_graph_45.md5 @@ -0,0 +1 @@ +3479343feeda972fb394e974f3074e4e \ No newline at end of file diff --git a/master/inherit_graph_45.png b/master/inherit_graph_45.png new file mode 100644 index 0000000000000000000000000000000000000000..5c78ef4f5118166de8027f8aa67be4c573267110 GIT binary patch literal 2903 zcmYLLcQ{6BCBf%O#9D?nE73bTUd1A)cr~v=}u6QST&bLJ%e*OhmgOjENfE zC{dzaqRvDw88srxJNLc!eeXNpKKuN!&t7ZqwSEO_i8i{#!p8ytz$Fu7eQR*80*4|K zE%**AK@@@$gR7a5K5+5R^SY(09nwT7nzs2|2JZ)&Z0$axEq2=H<(Dyoakd6Z&X^1?| zh|mFZd@;k7X&k)u_aB%BJ!D3pYC%E*ee=mc^vLXN)KW(xO&Hewby;~i2UdTE+w9D+ zyStlinH?Kp-xyq$mZ%||0qCsIFem)8=lP5V_26J|cvyu9n_Jx6j66A5f1Fpbuzy!1 zUi6Qb(ZliO<>g#5cDbR0ZEbCr_>~tu=yf6VMb>3QLqnsZqv^uh%G<$RHgF72J`)tl~c#dt_0l#hj=oDJhA+@b{eWcKsl9JN*T$19~^!Y7KaN;_zy3SC-LRZot>1m(co0vLudKYt%fq_x#J9s`Wa16~KBM%eyVmdk zBa@R1+eH7lxQV^JAV3F$sZEPCm%v<{pYbHgIoA80ogDHcf!D8u&(9Py+6Wd<@_{y&&)HYm5$o#O6hK7$%hHkx9^)%9KnD7x`zeeL__M_ondfw3 zdFPIXM?aLGpPybAgwoFT4Bbvc6Mc0#GWMzH(_Dx@3zinLdh(#B2_UC*{ zB#f80;r`TL#DE1K#g|!GS%um$9cDW_J6c*=YHDh{yu39vHFkD(J#sJm_G0_olM)iT zy1OUF$Kl!im6erXe+q@(`55Tp>+9>}G&l9$Sy=O77iG6K=Hl|h2=vz0R%KPy+y@Uc ze}8`m2fjEFdNDcxiA3(qw|oT=JFI;{az_fKGXnom*wBz29GaS%>PYlYlyh=&QWHQ& zMMXI}=Ij4HUGK+VC&m;+?!tmm=bFMmjKv&NMG=UAxyBGI7E6`5QDk`>746_KgEz|| zlgW*#QxNHF)8bL^f*c$jZ`s=7OG><)oti?ompYTbFML|aS;gGcQdwDDwRokWCL+={ zJ^d5Ja&&aG=2mWgzWM{QzI@K+;vz&?SeTz*-JO*2YB>Mp%O@gCsfMg3cD&(b8~@fp60r`y58PWv)|YSQRDOTLw6PQ^z;^$FH1>FTf?F9^78HN?Ut3b z_4N!uLQ>L;>}*>*yT+!bblz(cSFbJ~?@}UzOi&tuc~f3URsM(9++ek420$%TZ3Xb26rw?9UgVj5;6f9zZ#7NSCY(CDrr{`^BBgjEgqM|NT0R~3e?PSt=A^x+Xc95r_VSSxvJpGe@Hht?CE_u1(Y8 zUqAQng@h0)D(>s*(j>Wn3BjL`BWfQ|dfM7_*gC;LA0JS-yBA z;v9JEh6fZw1Oh>DNOj3262n46mFLY%%bzovOYFDDGdj0MO%nqOgy+`raED1etv#Qddi}nB)aR6weH->-%Z7zfyme#7)eT?w0aScd7xN+Y;1J6efxo` zfR|(jHZq&>B(6zR?W-k8qRYJz6BE1HJ!2>-S=!Oj@i||`0*6wPm)`+f=os&xNSXH` zurY{fYC6es6NyA40|Pmy#=7R_S(^_ZTNnL}ha{L9E_n1Kz&%h$AP0gRq#1P_xHH>O z>-qWQJ(X)%)pj7+gN*`rrT8erT-OsZUNlCAPr90Fozw9LI)LB+IsrbuhntgCpw*Gi?g#a)%w~f^xh}$)E~I$^ zl6CmQb(^N{jDj1GpbM9wvsfKOPo8FEJq{puHCD?X$I&R@?7oIEq!*m2tUNBOn`ylk{%vbPiJf}Esz7_w zoABr!l{6i{){xni@*nG%$0!a#vKs?ydj;<<+#JMXcx-KLQHZAKY4)BpL4Iy-KVLwbr`~NeG|2Lo)wAVVO@}_UA3W81D literal 0 HcmV?d00001 diff --git a/master/inherit_graph_46.map b/master/inherit_graph_46.map new file mode 100644 index 0000000000..d81f7b102d --- /dev/null +++ b/master/inherit_graph_46.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/inherit_graph_46.md5 b/master/inherit_graph_46.md5 new file mode 100644 index 0000000000..9ed87f6c73 --- /dev/null +++ b/master/inherit_graph_46.md5 @@ -0,0 +1 @@ +cc3d5302eba51993bd699a6d241ea8bc \ No newline at end of file diff --git a/master/inherit_graph_46.png b/master/inherit_graph_46.png new file mode 100644 index 0000000000000000000000000000000000000000..8ec312a8d0abc8c9ea8e548bfb18ac92b84bb0c0 GIT binary patch literal 1886 zcmV-k2ch_hP)sS^-FJ`L1N2qB`N zW^W~tQplya)?x~bj^eiA_{6Igb-0sGa-bC zf||)k(ChWE+wD@vAViQ@*Q?~sB%WWO@tiGL(Q^`>)aOR>W->T9h`PGEm>sXGstU)C z9}n4<$z&n7s;VkUvI!9g@ObcG94Ah6!{vG?b)1-!>N#m@YJyBAgTvv7*)jL**@G)r zu7vE1=XwqM)^IZ6I1U#sT#!0OM2{X#p|8)4YuAP`KmP`R48_GNsbeJtp6Ail)`r^J zTG(thn9XKM^Tcbtin211{CMPF@<5sH`J9q93yZtd%TQ;tiWvwPA z{*C75ThQyj!xvw)puPRUAB_Z1DkWc3MlI3m<@W8{*s^5{E?&F{kH>>2Po9K~x3;!I zqtPHOEe)lmrEt65g2p0cJAC*shKGl7ChyMQlsOB=8&6t>&!2SF8F*P-XqM{-kIB)&+o(_%&0s)qup3X)_Mg(Q8tgK`l$AxSI2)Xt4_O6)i|F^}+!r1TUTQ1+koX#P3 z@ZjH>THU~Mb5Ag}x`C-w$HU(8@=h?j{U^c4SudY@y-ZI}v)tTV_U_#~#u#IBb8}3s zRxELO4B6k^-3^Py0*yw4&dyGp zI&}(jb930WYZo|ygbO|a=d!= z3RziMA|;eAOHNKEzWQn>>g!$j{PVxz;X@A;3OND+KDbPeCT$Jp2yii?Yb`|sVmhcjo+z+$lg08AzmOePa}p2yXzS5a10hMAce zq^72Z9TSpGE*I~*SS(&U>)uSZZ{H51(TJLw8rW<$sMTsXoldA!Dj1E%kDhD){{666 zENE_SMovx+#>U2Q_Uu`7b#-CWrcJO~t+3nec>44y04&=U^Kq?~MTpeY4Om=!g1)|E zn4SF}e*Ezzty{MMAf%B1Kv`KC zMn^|6Iy#Ek*;(}W_oJq!2D!Pp2m}J~`~Bc~9(V8F4Lc?zn@Xj^$jAtmmX@$#!`fb| zV%2LTF?ma%qoV^_trnG)mDsUk2Zo1-v2WkLsOEAw94IO(g27-wc6K(79Xke##Ujed zkUGoOt$#vYT^VlNXu!`uH{$EB4am>`{kzDPUnH zCGN*4libFQ3S?z%mO2I@LDWnLA)=sWLI@EBH4{RJD5#kbLPQbv-5jUW8Ot0=YhYkN z>IkBsdPxqE>NRXL`4s+_3yB@77qaXVu!Im21s7d2A%uv6nh7C96x2)zA)=sWLI@GX YZ&_C&K&HMi`Tzg`07*qoM6N<$f}@q0-2eap literal 0 HcmV?d00001 diff --git a/master/inherit_graph_47.map b/master/inherit_graph_47.map new file mode 100644 index 0000000000..76b72a68af --- /dev/null +++ b/master/inherit_graph_47.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_47.md5 b/master/inherit_graph_47.md5 new file mode 100644 index 0000000000..b70eb4f6c5 --- /dev/null +++ b/master/inherit_graph_47.md5 @@ -0,0 +1 @@ +354442297fd3a84a077968a8aeae52a1 \ No newline at end of file diff --git a/master/inherit_graph_47.png b/master/inherit_graph_47.png new file mode 100644 index 0000000000000000000000000000000000000000..bd2a141801f829d4a46c65749d61e2202fe42f85 GIT binary patch literal 1623 zcmV-d2B`UoP)AmXQOz_W)z_s6t!|!sN z?&#L_4|zVX&Utp8^E}Vpmvf$rGQ#io0}Lhzg56F4v!}uOz@WhTz@WhTz@UiaPWt-# z9zJ}yTd8370y#N3w{PEOr+=IuG)=#I_io2i!t53L`}_O)`nZB)fu@kslE`lKD=jVCcbKCW?D__t4(ZqJM z?fU5N?=LPc=6BD$yu4etZn0y6Ltb7Uzd>y_n^LJHNir%bN-mdE6vfN7Twn=YK@SZL z5d;wv6T^F~Q27_`7n8~4|DX2ub{=>B^y$;NbLVn$a)yV88HO>LOy%X}ckkZiF$6>= zlQlFnu+xTy2ANF8dz3H;M<1D)nbp^WHOnKA3uKN$dQtg z60g?_{yge~Ij*d%m`ooCJ zO-+qRB#MoVH5d#}pFXXvt%Z)6nVD5pRSJcIB*{~!PT6cWbd+G_0{|{wyf{BUKQJ%= z-J6=4N=iz&nY-QYYuBy`g~Fppk6yoiePLk%+Gl5H)oL|Kl4)sa@87@Qw9-%s^Zc+{ zt#x&EE|<$-FzEGq_)jEyz5d&`Z>_DZ4u?Z7mv?t}Z_&|UFpQ0j_4M>iO--ewq-Zpn z-@ku{ml&Fm0*#D}IGs+tUe7gNy?Rw35Oj8S!f9h;V{L6M!!SCX?!tu&9*+kdWyA6T z00M!)Xf!^1_6z_(QItZV5Q#+GxL2-RSzKHk931@eXVW2|C#>N5`XJutsEEa?#P168?>FH@`_xXGz zNq+zS9g%=isbudIrBcZ)=fj5&0YTYusDXNVdH?`4O$XRTBGJ8j_h31dm6fbLH8u75 z^XG^t8xkjJQ=W@B&DkKsK z`;kNUz(d+dFh@PhD$jHd#^)3M-7K;S}f!pnljg93i8D0XVrlyL;Vv3@&va(oXQ&W@A z=R1G?Jegwv} z&!06K&97g-z+d#IyaXZ$;>nXI7K^2(riP~Jg@px*qRPt3%x1G#EQX648ykCjdzY7& zA3S)#FpNf{K}6XUg+k%?`ztCc0_+lrBsVv=w6t_~c9y2;n>TN&RH|dgj!C7`)2C0D zm6drs9=qLMSy{PhrJ=&-`|Yb&uhP@gl}e>VBKi9D>zOlWw&-ZJT2oR|R4SEFC@e28 zFDxuPaNq!siG>~L(xpqCot-wDEiElAK0f}@qeqV)KfZJ44!gi;G@8xk`1ttOuV1&e zw!$lEJIZNpZjOnGk;!CoxjZ2u!D_X#_LY?tsZ^>~s|^N2*p&u_+l*|nKgB>YGBPNN z+U+d(gtz__vroYKz@Xsm{be6AI5@c5DQr9V{J@~V`oN&T`oN&T`oN&rpg(={=FQIM zf!PZ%43n6c$hB;s51mf8Q~6-_99pfGJ0<-1_dhVf!TkpY1=a@!1=a@!1=a@!#eX6v VUHOgiMa=*J002ovPDHLkV1joJ8K3|F literal 0 HcmV?d00001 diff --git a/master/inherit_graph_48.map b/master/inherit_graph_48.map new file mode 100644 index 0000000000..81bea60add --- /dev/null +++ b/master/inherit_graph_48.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_48.md5 b/master/inherit_graph_48.md5 new file mode 100644 index 0000000000..c74000c968 --- /dev/null +++ b/master/inherit_graph_48.md5 @@ -0,0 +1 @@ +1eccd46ec2071bbe4d5948e9ad6a0dde \ No newline at end of file diff --git a/master/inherit_graph_48.png b/master/inherit_graph_48.png new file mode 100644 index 0000000000000000000000000000000000000000..61d357a440a74d8f062ee7f37481150b37c96185 GIT binary patch literal 1274 zcmVz zO36-=a$AoSDa^PmP}s0TE(;qWnPJqh5WdCqg@@p~TM zj&qzj0%MGU5Z^N?cvnFFzbJf!8wwxchQdd<`S1OPwY4?$_4V2z3JT=Z#Ot~@+E zATTh{ZNE~f#PjpB&(}~c+>d;J15p&g7?WOqL+}6~ARxe@u8N8ZG&VL$?dRub-X(fO zmhh#gr=z2z1Nr&+P^;BQPEN-1^0L%_b8`bx6cHaEkMQttG&eWn?(PnN^Ph}Ajdgo_ z3sDpi8ykzTurTQLdRQzLslU6s8%aq?Zrfj-S9^Oqa&vPL5)y)mi3#ZSdI*95g+hV& z_;_@7cH;MMrKP8*qqVgaIXO8{sZ>ZwNx{a(26}sY5fc-G(9lpcH8tV&_4U(p`V&`c zD0dC6*1}V=9r;E_N73Eg4V%q|y1F{l*49eDl-k-_?Ck7dVPOHs$H&Ob%*4vd%D2X< ztE?W1=WJv;jE0W@l%mS~@#BKOApxaFA72Ryx$**ViYtS5{V- zAPDUC_Ey?fQ&Yp*+S(Xn>`Qa1sHk9#jg3wgsAtO--Sopa3eB z3WI}#9-aU2nA3M__|f^Yh;ttE8j^_4V~Q zI5@!l{XI4}H&IqrhR4T80Pc~F{GxZLZ{OqAt3?V+uO*?%lpela%X3aVYY-T7e0uHeD=>^6Y9liEAW!u48sUe+N4TNz z5pF1agc}MU;fBITxS{Y7Zrt8pGa8M)tb_beYinz6``m`l-Lsa2$i?Xn2O&N}cQ^ + + + diff --git a/master/inherit_graph_49.md5 b/master/inherit_graph_49.md5 new file mode 100644 index 0000000000..09cf35860a --- /dev/null +++ b/master/inherit_graph_49.md5 @@ -0,0 +1 @@ +5d17826cc4450e456b3074b914ba4964 \ No newline at end of file diff --git a/master/inherit_graph_49.png b/master/inherit_graph_49.png new file mode 100644 index 0000000000000000000000000000000000000000..3e36bfa7138ae6048e78d861ca79e4c13286bf68 GIT binary patch literal 2950 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 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_5.map b/master/inherit_graph_5.map new file mode 100644 index 0000000000..0dd4076402 --- /dev/null +++ b/master/inherit_graph_5.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_5.md5 b/master/inherit_graph_5.md5 new file mode 100644 index 0000000000..02439a89b3 --- /dev/null +++ b/master/inherit_graph_5.md5 @@ -0,0 +1 @@ +21fd617a4559780d476975486740f48e \ No newline at end of file diff --git a/master/inherit_graph_5.png b/master/inherit_graph_5.png new file mode 100644 index 0000000000000000000000000000000000000000..65bac94c55a79db7ebe386414f3c94af406ccafb GIT binary patch literal 1554 zcmV+t2JQKYP)i^(pCk%8SsG^Mer4M*GDxN6(6WE+rz-JH4l^c z=zsao=QQ)n%x`}4`|ix{WEavj4KSP~3{F!x5iy}h>;4<;~PzkYqeg71Ia z2J6RduzuX;|ES;Q<|c&DZnt02kJITaFE77$@7~j=PXPdZeSL9paS+0>v9aq2(=TpZ zzpSjR_V)Ih9wlh55}w&?wpc6_MNLmnpPik(ef!p6FwitDm&>m=NFUs|einaC?(PBrHa0d0 zf)EGRcCnqNm zLa|uvV@B>NDlRS_A0IC(D}xYbWn~4bMUd;yXf!rAH*aokYBU+9<3cs!m~tNrrj%cTLU zRH}%Gh=qlPZ{NOo+pLO;iuU&QCMPGy#>PmJRIAlK9GcB$tyWuARfSgM=;&y8csNbd z6h--%k$Z}|ySrsFSw}|)P16>O<`g{09apNr)fGbFYiLq zP+yPwG2^<=$XkjS{VqkRR4SE9wk62*Clm@%fzRgy0FIB3mzS4ALqnxfX`mf#HX8sy zBod*GC^R&5e}8{@dD({(gTX+OB#*~~5XQvBtgo-5E6*DgMcuu7ml@h)kR(Zlg@q*~ zB%mtVtC14G?fw@N6XRnzZ!_{UMFDYb&o2oH3FqhM=qe6~`1tsckPy4w&Q8#)SFgOa zcez~c?d>x&Gfd-wfdOU<<@5Q+$H%C=wY7x`VzKz}@Q|r4EiJjbl}IE`r*n066;;ua zl}IFkPRGZLyrn24BzP6BO~1IfID#O`%gbkHXZQB@+S=O8X0x9i^YimdOH1eG=8lez zMn^{r3JOk6PJox^m!Cg>0svA{QWy`}+1XaB743K#85tcN9lN``D=RDY_4TNMR4RS` z{CRbC_4fAm($Z2xLxX!5iHV8X+1XmHc4K3MB+1&^T7^Op8yg#3Dm>1}TZ&?1W2dI3 zoK9yDV_oO@p{uJaH8nLaFE24MaeRFI#fukyb~GA|$;rtIg+eG4*3{ILmXQ9!NGx4DkTU)qtSTuY%-Z5BO}w& z(quB3NF-vPEL&S!+2_AYk89p$-@pIy;|HJ5590X~(yZ^#dU|?PDiw{tNc*pX z-XF1F@NxD0jzM7kxDD2i+hF~;4c3p_VEwoa){onG_ + + diff --git a/master/inherit_graph_50.md5 b/master/inherit_graph_50.md5 new file mode 100644 index 0000000000..a397c260ca --- /dev/null +++ b/master/inherit_graph_50.md5 @@ -0,0 +1 @@ +d9aa99587a11e2a9f5fbc737f0843096 \ No newline at end of file diff --git a/master/inherit_graph_50.png b/master/inherit_graph_50.png new file mode 100644 index 0000000000000000000000000000000000000000..92b9368723195f37de2cad84c2ae1c2f4f14f950 GIT binary patch literal 2773 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 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_51.map b/master/inherit_graph_51.map new file mode 100644 index 0000000000..5d71cc8597 --- /dev/null +++ b/master/inherit_graph_51.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_51.md5 b/master/inherit_graph_51.md5 new file mode 100644 index 0000000000..9512d90e84 --- /dev/null +++ b/master/inherit_graph_51.md5 @@ -0,0 +1 @@ +df41811d18640dcf95ad6cddf21ebc88 \ No newline at end of file diff --git a/master/inherit_graph_51.png b/master/inherit_graph_51.png new file mode 100644 index 0000000000000000000000000000000000000000..6a7609ec0a2fb97fca18b84ddfc17fb5ea9e35be GIT binary patch literal 2446 zcmYjTXH-+!77l_EkrFTgq{JAibV*>4K?ng%9GWx}Kn)-wA~m67L3%_IAQX8RK|+;Y zL_nlSq=_IR(GVG=i6RUlzR=;_nfHFYd)GZ@opRUO``h3C_NJb5a_VQIZJcr$cM`huiG3Qk?)J>PGxB; zpN|7;~{kfXjvHiwgCPgfm+At6G@nN{rla&WiImQspGtJaTRgn(6#Bod5; z97I~FH^n0U(7;*vKJS#t-!IJyysr6fZ)ap-d>DlqF-2{^35|FpAZz6S2BjzFv;pGdv<`C<1tQJbu z5w%XH+B{@3YcDh0hrFukMnq%DOOC4 zyJv}X76=g)7so>0bGhfBevXdsHrEzby(knE)e^upn!l7sr49@Y-ACG;hr&b>Z{51p z+}xaFMkY{Rh(a!O_wB@^XA4zf(!Ps6t*|er#-vVU{ebTIUA&&Q9l`HEGMTfeSDt@88p=R;eA zr(d$!36+(Vot>RFYL4$Y9Jp~PouI}#Em#?@CHt#E@lnxILK51(+ zR#NJjoMd);+}zo4FxYqJWA7nS@XA|T|E_FM)YjI1+SCLPQpG@CN~#D?!r^d2=7y7I zU6QG$$Ny+Xq}F)LiszdBVxm*JS zg9CRlTGCGHS(l!N0~!T`Lh;et3k7$8U`Wfzto{5MX#!{35t?5h*MK-xRDA2|iY*?V zv%f^4tc_O^0CYZZIF?9B>Fl`mOm9uItC|`b;&2mL2*e{GV3NoCzOYc{fm3CC`}`Th z8ZCETEV0g=nVp4g?y(C;eV3P)Su7Tg4p(6e;AjefBj11o{Mb-ZqN1x?+uVG?-hSl6 zhu=^r6cXtb6?H7Gu&b*JAphgXC+zL*m6TXtzxo17ASD%t=zkHjUc_Pzc$3}S+=#>n z#XSiL2}?^$!1jd;7Yxy8S$TO)-sSF7K0ZDG%@)6Yjf{@g&=2dQDFOls*pif#bnxIo z0Ff;~ApX3en5mf=r&|nyS}~c-)!La(LEp;Dc!7P1zm+~CL`t*}3@GQK_%vPcf;i{| zM!}t0s@T6_izXH|WQf1}jXnemD9X-Kj3r)$H#qg^N3JUPb z#!)}LgMwD_P}e+Ud&6^p$I;PIOIuq^R5UI=zTN~WWUiy5^P!fszP_%;7~u2ywWQA8 zC5hvvO$`n2#>Uq8{J*|`@4268rb(et%Iug$juon^ssOo(MGmgXi&jSowCQP2@#LfO z^4r@rb<6#1HXGPbWpLlVJ%8yEAOpKQn-r6AYCsvl^akz{hr<~dI43MDY|Nwuokryi zefsnXs0FWpQ#QL$-B@2g^UTrje-va22 zj)T<~SntrqT!PD`(GCiOsx$LSC|il@k@(7Bf6Q$=!2FBqP&+{Btd@R%4J@uE`&Ag1Z$6=TiJJs`+2o02sG!-ptI*1ZdTAF_28wPdke;FmT~Mc6-at7IZ{N zl88k0){?tt$S1G3y5>DZzi@_Mthge0Z;tJ%mDADD0n|D`%<}S%F$S_we`;Gd1fA5= zSe2Od^Yg1i(fvfhg*qOxKJ~mm}YWoYgA-pOB+_8Jom?s;EE*)QND$MWo*R%{qZ-MH)T#BLuK6MiA6wz1v+PC KXIX>wi2D!5$&~Q` literal 0 HcmV?d00001 diff --git a/master/inherit_graph_52.map b/master/inherit_graph_52.map new file mode 100644 index 0000000000..4e7d4097f8 --- /dev/null +++ b/master/inherit_graph_52.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_52.md5 b/master/inherit_graph_52.md5 new file mode 100644 index 0000000000..4f569e036c --- /dev/null +++ b/master/inherit_graph_52.md5 @@ -0,0 +1 @@ +da45e1d881d45fbbd43c019fef8ef738 \ No newline at end of file diff --git a/master/inherit_graph_52.png b/master/inherit_graph_52.png new file mode 100644 index 0000000000000000000000000000000000000000..15e759665f97c5008b1d728e9d96ddb659f82fe8 GIT binary patch literal 2586 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 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_53.map b/master/inherit_graph_53.map new file mode 100644 index 0000000000..744f841b7e --- /dev/null +++ b/master/inherit_graph_53.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_53.md5 b/master/inherit_graph_53.md5 new file mode 100644 index 0000000000..8ef21642eb --- /dev/null +++ b/master/inherit_graph_53.md5 @@ -0,0 +1 @@ +b6b81dde03ac55cdf10b106cd5ab88b5 \ No newline at end of file diff --git a/master/inherit_graph_53.png b/master/inherit_graph_53.png new file mode 100644 index 0000000000000000000000000000000000000000..926d1779790aea2ee3df5c76348c4c4049a56375 GIT binary patch literal 2548 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 + + diff --git a/master/inherit_graph_54.md5 b/master/inherit_graph_54.md5 new file mode 100644 index 0000000000..ceda548424 --- /dev/null +++ b/master/inherit_graph_54.md5 @@ -0,0 +1 @@ +23225e0d2ce1b6ed6401fcec4c5d8c7b \ No newline at end of file diff --git a/master/inherit_graph_54.png b/master/inherit_graph_54.png new file mode 100644 index 0000000000000000000000000000000000000000..8d1e01314e1d6286b8d970647e7652fd6e16daa3 GIT binary patch literal 1462 zcmV;n1xfmeP){U^hlyY=brErftYcH%wUsNX*#zI=IE zQXr?&(b18gpYOl@Yv*}99)rPf;gTSfFc=ITk0)^C%JD^dz5b%~K+XVyAVDMWJ&(pf z^Jok-kH-AZ%{w?asHv%8u~@fn-@a@u(dXRF%gf7q^XAQYKjkDwMn)_a%j)Xt;^N|k zJ@mp#K6mqGW@hT^>!X`fC=|B0xBG7`7E5VqDTl*}iHW&+^JYUs!}9VnIW<2&pPQQ- zA0K~eLIgn&1c{A}O-oCws;ZiuosC%Dd6XOy+W*-c9UUzwC_qtkdU|?mYs+LZ<>lq| z^z@LkKA-RE)vHwUw6(Pn1mW}fMn^}Jl9KZC^M{9r&r^6bAOg_obU`B_$;!%l`t)gG zVIhmf%E-tV8yh3XeLkN;p+Hge+O=y94Glkj{2&M-H#c`+U?64rg$1kerpvJPUcY{Q_wHT)`jwRx27}>nID$$J*^`s%4G#c7r_%+FM7Z-X z3{$C8>+9<>nXJ0HnoM0?UH$dzSCh%)a5(PWyEid0K`~G!liBU|$;nB#+nt%2DV0ib z9H%0~YPC9@PMJ&=a@J@xwzRZ7dGdrH2&Gb)oSdxHYMYyztyU|BVJ4I5!-o${CNpGg zWo4z;>s?w}I!Rt-Wu?_>ou8j4*Q?cPfk1$wXi%PzJ&Cy9U;>?_zVlwZctKu&|Nb2S zu)4bHa=8EicDp@janQ~?9!UPn$LsZy<3~qFY&LsgVIhnF|3;adoCE;4-EMMxaBwiF zF28wxo;`b(o}SKPu|9qJbUdLSo6QCQ`10jT7=W#e3@**}i769=3_iv}u$z(G5eEwMj9S#QoASES*JTfqu%$=Pbr_)JAMq*+j z*$DEss;Y`0i1G39Fd>bNjV_lfJ3IT~!-rv(ku6S0NC+dZuC7k2)$Z@_fByV=dwaXI zv@|G5$e#R5y+K6nz=ERa(b3VjZ{N-u$m8)C494c>X5ee8q@;vO?5$h3P!!c@G!&nO z<9JO?jYJ}`+wJe(y$iEatJS8areBAoYIQ|L1^IFeBxFzirQRT- zW*(Qzl}IFVx!h{C`h32DfdQk@NHOryqer#1wKkjW*RNj|i$yAx?(OXX08}c~jT<+} zWr5dz5CrM(?|=LDZD(hv&1T!%+uPXKn3|e8=~+sp(&O=9820}C`}X$s;~)MG4i1)< zmb$vSFbwPK>q8JEj64Q|A(P4a`uaY8{3w^pDfT2x!m|?1j|v)%=FXiv#l^*GX=!tF zbA^S46az5~%goFai9{R@r?s`Uwzihy`5piu5{ag#reskUayafixUV0U0q#eWo18q{v>B#y?TWp2#duM3WaNHYi6@qDwUopudc3c zYHI5G_3Jq~In;adFZKRK;O3=xV1Zl;AX*0&$bSK79*u$K(HLkRje+LT7-$}if#%Ve z5MTWp8XCHI9gqkJVcz4%k1t*aBmxiu{yvYk!1p{F1I?o`&^#Ig&7(1Y0Nu}E2_T8M QD*ylh07*qoM6N<$f-t1h)&Kwi literal 0 HcmV?d00001 diff --git a/master/inherit_graph_55.map b/master/inherit_graph_55.map new file mode 100644 index 0000000000..7b16d5fd46 --- /dev/null +++ b/master/inherit_graph_55.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_55.md5 b/master/inherit_graph_55.md5 new file mode 100644 index 0000000000..89bc7c1ecf --- /dev/null +++ b/master/inherit_graph_55.md5 @@ -0,0 +1 @@ +35cdf0572bd41b675a06092237ac1ab4 \ No newline at end of file diff --git a/master/inherit_graph_55.png b/master/inherit_graph_55.png new file mode 100644 index 0000000000000000000000000000000000000000..ad25218423e0c35e71171462ffa8b8e4eb201907 GIT binary patch literal 2119 zcmV-N2)Or&P)HpPNFin)Zh-%%)4z3`&zl&LY$PNT*gzv=Vjd z2>T%|DU!gTe~b(&$e{i(Yt3marHC9Wr2IiNYZYSZa5J5o(**mmO2yoE-#-ray>7Sj zoHy-z-+TSFd+zx>&*$^J_iT6foM*_@{|}BMRRkr#bQCX_`7#%YHC`ld>AMIf*?!_ z^PNgV7*S~mBPtD{xu|nKAKEiD}!97Ila zcXuZyCI$rs%{w3jK@bG7+3d*3$by1`ckkYLot`gBUJ(EJk6(>OvwQb$KA+#&+4=3; zH?>+V6bdh0x`dpy*=#FTtROSa>C>lS7`EAL8jU72G&CtG>G9*ozD(Sgz$jEI6{ZE3 z`1tq>7cQixrgAu(n3$O7&z~dhHk(Z*lkxfdHEY(CmX`kd^$UjK#Kgqf+FIhkpFe-f zWU}z^@Svce%*;%a$%M3DzI-_a^Z6%EoWRX9Gc(gwW@Tli)oSH( zx%Kt+$XTgWnv#-Yx7*PJx{ykxVPRoTr_)n$c6yCw^* zmlyzmN~J=#c)3#*3Pp8w_2-7qSLakOmc<{i_&kr{?KR@4UwGIpncuFrnKVPrccXxLq{pE6bN=gc!&&P~|yCz=O zOBS@krZZ-zx(6bUxU5zy((Z6L0s{kkdU^;F zaBZyi_I3b(*=$DI>+9<=b-6@!aq;5C=;&w;hx6ja3-3*Wb*U#i;9X`XyEYhFaRJd zEDX6+@$>Wh@#BZdWFnJBNJt2>K*(W1K>-ZIt*xyDA;*s&9~l`*NJ!YbcP~LVWa)#0 zg9*|rDJf}aX!!m6_sf?rzkmOpot=#t1b0mqQ!hyWv#WBHhrhT|f|Y>(;Hhy1H}c&KV4b+1c5NiHVMm z4o`DcRaIFm7KK95*w|QJUhaPLIyW~rFfdS2QK3*MYHDgA2qH+2#bQY$lA4;DM~@y! zrBae>vY2{FLgg)uQmNd!b!%E$T4ZG8`}gltQ&UL>Din&?*jSNB#N~2NojO%qTukyl z1OOlsi8?zw2L}gt?b;O>7`SuiPJ_YF)z#(Rv#qV|>eZ`FO--v-tx8Ersi>&P&CQ*f znnKRrxN!r5AP$F6Mg}baZrV*sx*8jveIJWHI%U0{tOC@ zuL4kYp~Ubv!-z^l7*S~mBPzxG4Q3zCZo}8R)Y;3gIY)_v)^>wP0K;G>0A?W)X%I{N&tuYwyNjh=J#Kc5iUS3E@2$##1 zNF-mrd_mfAO})d154*}tOiYA5cwU|?IrngMwzxB5%szsIDFnFPr}|dZzP>&HfL5#Z z)WKa;;*dRi_GDyaSglsG*_@i1nvs!#w8zKChlhv1dGls!YO1QLip%99R;WNAxOeZK zD_krVi$tQKp&^^icJ}PqgoFf#!vVu^Yilcq!|CtuzkmP!+O=!P$H$TWm~f1!xHDpW zAx{ZY$Wn_suQlc_DkcOC@?;z_qG1^R`0*nEU~Fs*_F(G4f2u<4dEr`e#G>NPh!&L~ zVG3~<)wkcNURYz85HuEx#oyoGWke&-yIp^A;BM++!ihaEl9n8rd1oX}*mw9=)P-7O z#34K$&u+Jy&1U2fxrFBNcm$)dSpODC;CXqn;6=ie;9F4_YKoSvTU>+7qmtbF+JVPs@va&mH6S=spbxW!_T$z&ptC^R&bV6@QC(4L+iyWI{5 zJw8vC96H7LVQ_G8US3{MP!O`ER4Uc# z)vM#;;sgRgSXh`sp&*{UqM|~h(XiQUp->1scwPjS946cg7Md_Mpg)Tk>+Qb?V63 + + diff --git a/master/inherit_graph_56.md5 b/master/inherit_graph_56.md5 new file mode 100644 index 0000000000..116efbd027 --- /dev/null +++ b/master/inherit_graph_56.md5 @@ -0,0 +1 @@ +86045ce1dace672d783320c689e74eba \ No newline at end of file diff --git a/master/inherit_graph_56.png b/master/inherit_graph_56.png new file mode 100644 index 0000000000000000000000000000000000000000..556da7b56aeb2ebf93fd715b86c216a199e5c59e GIT binary patch literal 2016 zcmV<62Os!}P)BG|P*g^` zsUxN-EeYB`EBa@Ze^iixLYB$7r9&$sWmJ?u2$a+i4ThVwxjD(Oa;1eicb`8F_FZ#c zm-ENG?>+vy_pjHzUhn7Lckg?@cL!k@256`SW1}6QS$$|xDF`hp1))WyAmP4=-rn9@ zw{C5eD>N(S!i5Xz>FM6&A0yS_aJ03xt-DJ!LDAOM=5RQCbHbNaYHe*@FMnuO0SJQp za_D<11))WyAhf6ygyNzuEG!fk7qeKb{rmTCv@h$&nv0s2mUi#ny|q5eay)(dw78!48vS5m(gg9j*d=GPk-{{$yz$TmS8>@3OmYSMcUtdq$@W+oI zDwT@I<8e3~i9}+v+3@`9*RRLN$1gn=iA1;t9*+k>kh5pc2J}-Rk$A(@Xf#fz6NcfY zrY5{pp->2gLbu!PYtV~Aq2O}49*<`^_wL-elboFFt^e`kM+SpowOai`4%jFE8ZR*b z0E5Bco3p}^ilS(Bb@iuDpX746OeVuk%Ve^5@7{HEbXcv{l$4at&Q6jI<#M^jV(IGY zvfJ%RNl7_5IUbLPj2kAC$!4?3Wf+EOwc4FKck1=}ii!%8$%LY4 zM@L6USU}9ooe0&@LV6j;ID*KJpr48{VE~nFp=PxcUvf1q6;b8&?yaTJN zs|x^Nx7+djrluypxV)lzxpL*o-o1NSEY_=6ua+A0Vm6xr0B_#BA#kstpg^TkVHoD| zcw%E?bvm72$N~Fg1@RICR%@ifFpM8CnM?q{uV24xHd|O&SbTi^zc#d5tpETnmy1tT z!otG7fB$Z?*~qxDefxI2gYaZgQ4xk=FJHbSXi{EYK0ZEv=+L3e%uIr6c-L>+wvE8O z($Z4BUjO^|@7J$i&&A{? zYbQ^hB-3`^zI_OS=yW=g=kj%zjq=;)|gtwvF_rltmhAOiOo42E1Tuc@hd{P?j#p&;2O z!Ng0F)qJGU>2wDU91w{_adB~jgM%3v86+E`D4LX%Bo>Qd7(RFITuDg@$>$INfLJW< z>FF688#{LF7@N&Ldi1E-Z0_spTUxWTv-8G{8?CLak&%%?p-`<>=jZ3o&CTJZw{PEu zAc)0cWo2bePEPjr_U7c|{MEhE($enk?%lh0A31V_e4hjpFDZO40wgC&G$938t%(v% zC_{@%L1$q002IpUsqS>P1e=b@%j7>^e4pG9HL4jlIiK`w{PD90A^=ro12@<%F28zeE$6T z^y$+u4DZ;nqqw*j-z@+DBqt|dzI-_|Gn36`CnhGoc<}98jVmWWU*K+EiLO7`wG|`qB0l^rBYd2TMGbaYHAV)1Uw$kw?aWdfy?C@8X6iH z7;rcoGMUU<6mYZ8OG`^jN=nLu2M;g|!`Gn*Of@t#T)TE{W@bhzm9A~TLE^g-5t=JX zB9Ta=(M(NEaX6eWU%v49e529$?Af!($Vj{bzG9AVP-7T2GBN@Hn4Fx%mf7sX{@f7s ziuzYmTCH|H0{%z9=3P;OVOT5{E0xN*xjB(YO z<#%}qSvHNR0Dy{$ibszgm6w~_1u!^49# z6(Ve=kxGEUV2Fx};`8|_DJfho7e!I>ZPjYE(P(5cnfUBC7*nBw?+rFICrUKLfXzEm zq9G40Dg~iMr69DZ6oeL)g3zK;5L#3U5@1CsKR + + diff --git a/master/inherit_graph_57.md5 b/master/inherit_graph_57.md5 new file mode 100644 index 0000000000..343785c50f --- /dev/null +++ b/master/inherit_graph_57.md5 @@ -0,0 +1 @@ +66accba2b5b6ca7cc94fee7cdda87ef1 \ No newline at end of file diff --git a/master/inherit_graph_57.png b/master/inherit_graph_57.png new file mode 100644 index 0000000000000000000000000000000000000000..7d02b07f1bebfc14af6cf825948aaf22ed7c29f5 GIT binary patch literal 2225 zcmXYzc|25Y8^=#sn-Y&0V^GN0L(EvRl<*2OWSvZ51{pD;vKyo@*<+pwMP7QuSh6*? zY(s-0@??7~*+Px1Au{rw-lxy`+~@k^eD3RW-S_qV{jQU6+1gwH0*3$qAYgIH)DDa} z;6m~r2H$J6&TKI7x?7o>0tdgI|27v<0f67j!qnIyG-o--?~=WnWLJOg#mCl>=}F|V zLCqvw+(R4K3$b@qSLwxOjr0!f8oMJKDaQWEWLsli2##Q1lMl_89k?&ZortsG?Z8Y< zhEEG{nI z`@ZTQs6HI}lN09VHnp>}Q)H8;U2ea4T%2@|ZfIzzr>B?drzInkUs?G+aBO5GGbg7P zuQ4$(vAr^>0!^Y&C^LmIF)`iUm;C)#TeTlZ^WT#O3zm_Q5f>NV-{1FrRQHETZBq2l z?eXDZsF+xndsSm&V@u@T@Yon!R5WO=Qy|o_V#I&EHsz8&4-XG4{>#>n+S*!|SHWiH z=I0}}NvGrdAjKv6d^Evy+~ecS=O$)AI7W#cxACDAm@mZ(iQspV=O2nMVyZ;3=xmrS`a^ z(4dW7@&}Eiq@#3iPuOXx zsegMTX_nWuJ(KRZuZH?@0T17J?qr}|IM5w%INUisJtYwc&*4KPoU~9=^g#=Q;aF&A zW@`GfuI|J!5lEb6VfC|TCeH?9DHH_+LOkU^vYMZ6H{i;lkT_^X?aP+9=PRcC>_c64MZsn!n5*M3GV*P5>f z>*Unb)MOOJ@iw`8gAf!L2%EgGzk|uhLam5?42t+%`^NxtEufB_}73 zN_2Z_-aw9h{i^zt5xnuqLbhsed)cGv3WLGm-qVDqWM^k9CMwh3QUp(p6+2_GVnRYf zP^g#5$Al9KAm?B!OG-=opBf%@dmgIV_a?m4N{EsT7ZHgqD83|@(K8?3+)`3fQdk&= zpQhUvRaaMwKv?~G=l6d6$jHcmLZJWvD(_XuYW&bzm%I?SlDc~I+B9>h6e|j0wYRqq z4muEtMT{0pOUswIatGx|&dx0YVTMf^0k`Gn=NA;nf;>4n#Y;aB2t&fbJAXu@8Akqa zkQ4qRhq{%VDV<9Gi(X!C7`i5%*&}e|NZ9ukDN2V7Op#{U(a{lRaPmI0p1gb8$qC9_ z6as*>t|c}be)42$O3K#8Mq)yOt)d91^HSg1y1J>xpwj$&W=F?qBcqn$Vnq~c2(Qsr z3Nmjd6l-0iASZ`LqXR=iKwkG9e>H$eBnAYm4LmbX=>K&w{2a{PX+A{a8J>VaFq9wr zZDI#c=~OC}|6Xrj-_L&3D1PZNdy{*(HAxEt9%Pg4cl9{s&X>Otl>|L~ZsWBI8k1?v zZERp@C^epb=hkz&aKc|zRkv>5>~kn^P}bMiXSuI;2EFyFQBhV#7m13BlC&e{8t*{* zkSG}$=E#Ux>rppnXK_(c9-?^k-acnnE3v@U)%BOt`S@rKfo`F$sEF6hHZn3&Ol%hj z1ll$?HyiFO!j5(Jj5>=-Xslcyz~x%wQ9 z!7w+l6|RQ>FE6jM`O0bDbG=v(n6|DiKaiD`)uxf$GY`6}4F(ey5fQz+5%@`siCmMMaT~TC1ytfy>U$N<#d#{!=%dh-C5vNXwr!TGy+= z^dO0#i72@V)UnpjqwyLrgOfI@P>Ex_YMDu^J-D)Fxa3(K->%&>q;P_%JT-D>Ex);W za<*AVTDlFdfwr;f_%JYF8;UwXLK^C%Q*eqrJ9z8CY~ zRA-lficTeoA1W#;Xn8GNU0r#3UbobPx27Z#$;XEcwx_$Bzn9Y6+lz-i%F23B@cI4w zhfMtE(I`4Maq>36bX(mos2pJ zy4f;k_ZukoPHHk*{z+b*pn!mxt;m75?->e$`UXVqA5yTXX>4n2tAjG)Mc1$La*li? zC~s}6AFiFYEDX^7Jy0({&k%a+Abc^~@*+5`AH+oyEijl#vXsd2PiZtb43?FVF{`R1 w;(Ho_V3CLt%;MH~gw$ZfzeD|Z4i4Xw&dFOXoQC`0KL}u9W^MZ7BL3e00LtJst^fc4 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_58.map b/master/inherit_graph_58.map new file mode 100644 index 0000000000..2d1b141dc6 --- /dev/null +++ b/master/inherit_graph_58.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_58.md5 b/master/inherit_graph_58.md5 new file mode 100644 index 0000000000..8de2fa3f35 --- /dev/null +++ b/master/inherit_graph_58.md5 @@ -0,0 +1 @@ +cc51f223f27d991a35985fb8f7c067b1 \ No newline at end of file diff --git a/master/inherit_graph_58.png b/master/inherit_graph_58.png new file mode 100644 index 0000000000000000000000000000000000000000..bdf3540618fe28d29e94afc957ff485858982e3a GIT binary patch literal 2566 zcmYjTc{r47AAYk8$=-x4amaeczK@Y@?4lWCM#w%ns1wGq48^CA?I4Y@mc48-CzUnL zL5wwJ-004ZpHb^uW zi@;lln+<&KklyBl0pe?KjRb!D93>r3asc3Tn=R4|6IHZTcWhheutct--Hl&CRYbkzaGg zRO{)R)7rP!siUX36O>3x3=BJm{y0FrtZT|UH^yW#^YX;BwV!XzzG`?Oa!lE%B1T6W zN9}mO7%BUctnQ_!uP?yQf9H^HdrR@!tQxy<-ptfg)FC}^{w*&ruY;{EHKMSv(89u^ z8l#ee42y{PGc$Ah>(`{@nVA`cv9U6=U!7f+J3;0?h4L*|)xE5&%+1X$SM`=|E6bg= zPhLz-<&l<_h8KI{aE#+4#_n#Ix_U$K>zRuRH6gXXyIZ74i0Ydc;>j!5yLE)dMQME0IUF=K)g`D%+Q)6`=BXq%(T23MsoB)-pOesu3O@PCsI74-5<( z9Uew(&A4220D#XM8|a!k9cQxMJ$nz3 z-^SR`&};{VIMxB`E^xzld~6H=kg`Isk&zMHhUj&bx2pqWa0^3&gB)zs_wi!prGmf} zFRunOPb3lvQjuB~)-t!S@VcbL^d~g_=a0vE-;Fy|qN_u?rl!OI4Q=fYi;GSdg{34V z@4WKy@{$JL%*=>isu4`-rqO68CwFf8-+$VX1pPDW=1gmA>-%+jLIRuWh&*|~&)3&L(h-N7>`E5U9fQGOO%zIK zSlD}+?VaVWi^A1)bue}H?G;+iPC(85e$A`4aW9YoRWsAmp$3u{GABnze<9fs!ovFd z`Zt`-NeO>H)Tv!N_CkkwX(M>(z@d$ejoDYXOk%zdc6Z;S`Bzm{ zB_$_2UA{~$&(F{2PRPs8=Y&A`1qAeUbne}|$3lC8`n`E`%j5^^dBDhptzLim<8hvz zwD?>BJA*i=Deh;``q$ESBMVisZ3H>aOG|qN{{paVeNSM{lZZgP*ypaX!9j-}oZ7)j za{UpQ;aN5nplLK(+5Var>CDo6@#>Wvw{K8TO@Mr>xpdWEu62(dU1%2M0iM>>gb@g5 zxj8}@pt*tK>+Q7`up6U#Yy9>6Ic0ux^9JNDC5ec=f63tw0^xa6(>*otnwXgIYzgDk zc99W`ijJlRmPRr6cXn)?oEQv-Vh(M1c(}o5r>tgW4j z;g*$X{aXu?XV0>qg@B*I*^TBzB0NC`v;`nOa(e-#^e{1zGfGKG>9^R}_Uh`>fJ_eU z5hD6QR#wRrCyALwC-4BU?!X0+SX=oZ@;&@+t@E8B!sSR0)MHjw1kORTU&SSMMOrX zA!PwmJifBL+z*eJpS!M=Z)Nr4cr)Krrn|Ryu`^B@$a?&E`{PHyfPg1Yk@yfkU#xLU z)%hOM{c(2`k^WgI!^#3hKivNU8jeyb1Omx@_|U<@0nE|EL!#>zIU0UY+~3#74NKwFu5K&V73Cz{iShWO5$u|Pef`CrH5sr{!;oeB&L zl#`Q#@~nQDY~Y2IgTJUBS0uC9)c2YM_v5^B$uC$AJ-$FQb*g1m!+zpSiaJUtiQ zz1yL$I|K2ZopBfpG}{Idvh=3)k1tK>etv%1y1Ke>I8U$HBf}6=IG=k1M~p9xV{p#13JCQPE(^r z4-OCV@u9RYyD6uBh;R|5k32HAFCT5(CW?rP4h;bO~1L9o{AyJ@$bbhNeEPZ+1E zuWujy-PHxM9YZ88L8T=mEKp;UljN>tUI77+dlM5Ay+XcOP?zEo5;?RL0qIL6N(B!d zm@DM8c&J67qnIw}+9>9@pht1u(vmlS@`veZLtS0a?4gp92qUA~+H4G4-EzXEw4Mhx z7pE8y(Ca5BakAM;*C27WV4ZVNAcTZ0g&3rIDV{rbF2A5aODz3bTf|j&_dRB;>+3tm zhhUMAvSwco&Qoy-cZ0!vy_Vq!fBTC^%8A_Bp+XbM7qOg2Ke?l|e1hB)&H&i$|5VG8{4 W|DxQ4=IR3*JHXb`5&6vAJK?`;ap463 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_59.map b/master/inherit_graph_59.map new file mode 100644 index 0000000000..94ad38f30d --- /dev/null +++ b/master/inherit_graph_59.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/inherit_graph_59.md5 b/master/inherit_graph_59.md5 new file mode 100644 index 0000000000..b98c98a5fc --- /dev/null +++ b/master/inherit_graph_59.md5 @@ -0,0 +1 @@ +980a27dc96ad018f8706081fe61517c8 \ No newline at end of file diff --git a/master/inherit_graph_59.png b/master/inherit_graph_59.png new file mode 100644 index 0000000000000000000000000000000000000000..7422af8e7fac7664815abf41b69f5b983a8ca054 GIT binary patch literal 2055 zcmV+i2>ADjP)`ZD9Z>2aLj2LzvU=6RmqGyeE-=A1J}jxokS2qBxBdW+Bz5JJd$pkhY|@d{Mz z2q9j9iX9=uEBGwk(An9ETeofr5er#kmo8nxkt0Wh4#O$Axw%4zKs<QaU3Uf2rj#L z@gh#0Iwf=%WCK&FRFFs{EAFFnc7zbGK*f#_;uWaa5kkBI6+0J=jg5ihI804V2^|XY za>>cbsH>~9+IE$v=epp<&fR|yLR>{Txj6}5?7F(TaQ5ukb(=3EBLih+WmendH?y<< z!?)jdAvgCn42BOvhqJDP$Vral@Z`ypMcWS@I)v)#YPZhg&AD#%))V4=jK+^>ZGC~} z<{or(yoAZb05H&Van@c?P!KL(zKjzmPCz6Q2_4R+mB zXl-q^?APn{C@n3;o;`c8W5*5@6&1l?FaTKokzuv5=I7^8T3U+8$VhD8z8yTzV`yl| zvR^KjBRV?TYTMPdjE;_i=Xr?5VjMVd0L{(Ki~8G&Z)9WyyLRnDV`HP`^=HnUL27C$ zOeWK+YfDH-KzVsNQc_Y77#N7ArY5`BWsS*X#*aU~LP<#@Vq?ETaq+)@FLY)Ao?GQS zEhh^K3ZU2P(a_Lfbxq;n;b?1Xv$S1v?~wQ9y4ya+DijLH<#LRTjX^4v zB0oPLpC6T%pP!HC&!3~Er3Hh7gGfwFL`O%5Q)5Y`QuO!tR*qmP?k-*Q-4+8@Oc=YHI?%lh$sIRT~LPJAw|Neax7Z>B@%a>3n6liH_!Gi}6 zAQFk}T3da6Jt`|JF*7rRyu3W8)@L>|{Pfcs$Yc)@7xxt;l7Hd*@Bag%aRH36-wU1R z^Q4^g^YcSxWhG=X8RqBbU0b*VHhZow!j@1fm28F0HpR!svznS3OM7~HngL)sosJC+ z4KV<$zrTOQzK0JVW_R!2wQDS`R?7ge;o)J+ev`?>#9}e)>+7>C*7WprR$5wWwQXzu zfq?-AfQ^rjTlTlLwJ`u}a&pq{_^w~S&i3uw#{vTbS$lgsV~p9=H$Fa|Ra8{iwa%pg zu-e)NR$cv=B_{rZg@lx`h={+jkdU%ff9B?Xb!tv`0>G3?rQNUhw45w2FK1@6nI$D9 zF_}!p7-K9kF_GQ8dDHT`u&^-p^yyPe`}5rI-@jim?xk&S$aNd_OXaq6cEQ2Hmf!vT z{Q&?*qY)z`BM^y1h>D7Gd92aVQ2;<#SlF^YZ{NN}TwI(}vD-WU@bEAK0smX_vF--w6^hu726(uSPs>S;<4{vmgY@)t6crWO-Om-9E!S;X^9vNackhPDWWwv$uN^vfwvx!m zNNm}%1rrk!2nq^vQ-t;l4-bdIV8F!0ge3{yym{kLd}gy5r%#^-&-3W)>_mNiJqim8 z?OvNR-*L^#ipR{%56H{AieG-2!}z!!Tephv@uSJE{@;A_SNQq;$>Dk3DJQ4iZDVcZ zoIG~y7&0<4P+nfXY@ffsKa57Br9Ck*;qrXecxtZOvgXAuA|e7j&!e!g5O?m}L1<_w zR4NrhLPEgvyu)K zim0e496fpz7cN}D?c298H#diC*RDAfUqwX)v|25?ySvfd-Hq(*Y$PQmAvQL4)xNG+ zSeOFOM?j%Cg}y#5)asw{@L><8rw#D&5#iG(>xC~f^B}(X!nOHbWisjAHr7VZ$*QU< z#Ky)VARu7T_Jo84G&D5e`0?YIot?$it5=b5O<(rM{L@;Gf?Od2yqMVI2%m}@p@G32q9j9iX9=uD^Rf`gm?w37bsLJ)q2K3 z$f`O!JB1E`Y;d-6#A>m#_P-Yi5lU@sEoy6Pg${#wsAb=vAcT-jNKNPL2q9j9iX9=u lD^Rf`gm?uic7zbG@PA#DKcRO%R^ + + diff --git a/master/inherit_graph_6.md5 b/master/inherit_graph_6.md5 new file mode 100644 index 0000000000..f990896524 --- /dev/null +++ b/master/inherit_graph_6.md5 @@ -0,0 +1 @@ +8e25f9c0ddc7985882cb552015d0df16 \ No newline at end of file diff --git a/master/inherit_graph_6.png b/master/inherit_graph_6.png new file mode 100644 index 0000000000000000000000000000000000000000..5b03514f61480784ea1ca8315da92ea14c247a95 GIT binary patch literal 2025 zcmVjC10gMAK?Xr9HB5^@=cev%&YY<^H%zzldvW+(?r(pt z(@fXT^LcgevvZ#FeV+U5Irm=12nZp-U{;!dl@@@(0Dub-<0s%k#P|ic5HWs15dGx+ z`}enR-(D#xm{rA@GiQ>Mld04HbVP%}(Ae0x?2<66j>g7DgTX+z1i24-`t<2?>A|d0 z2!e32;Cn=jUw{h{;}_sU#P|iPu@KE>GeHm*i{&@{%+1Xe6cn)8>>WFH005pnd&cAO z2!iP7=vWGwtBXHgh)GFF)z#I1dX+`88@Ns?c_e3_k{J%0RnO-&7iFd-pf zX+^Fe%Xj%84V6meV)19n%E|x$4<9~U=)~dSVF1AB=%|n5Gcqz46|I^!#}9P*G9A=kwRCTbGiO(%IQL zZ~ed}?1*)Bb>-#dX0ur?m*?f>A=i0%d7nOgYH4ZF>-A!>_|2O)K2DU&<$Zm9ZEbBs zLqlQ7BnJlv0RVk{eJ+DtI->hT)VGXA zBeFXjj`i!;cXxL)2rwFrv9Ynge*J06?$TqcJ@_Jpcfc$pk&!Bciz;3z1saJtA)@a=%AJ9TBxpHk)lWn^E?zT)BeA zFsMZxk@6NFAFog-7?MnP>n?`Mk2eoGoh~#ql=*tO1D2{IayT4xz+$lg0Cu~5U|=9H zFi%K+tD#~ zj~^2gGd(>`o$7Qtcek;zv2$~CLqkL86gAP<*w}@J!w`|T6a@shUIkS5R;yK`(MTi` z%1%8DF{?#ILj@ZX6T_Tj`ZJch80Me=0NL5ut*xyeKYo-*B&n&XHk)l>`9kY1Vva|6 zJYH5-RzX3*w{PDjCnu|_s+yadeVmw+larsH-`m@3v)S6)+jDbsXJ%#q0OjT7=(|oo zZf$J^0BqmBo$`>Hn%dLTgSMyLyLZ>t)=o@J3=R%nxNrdt5DJC+_U$`y;>76as7|LV zDJgN6ArJ^sQ&WqIiiU@W4F*GTaj{e?jf#p|Tq-<9)^qI)EJdYWwly`LSa@`mRv6P=vk#wg@uLf+ODyQ6o%Zi~p^fo~NF;jn=+R26m}Ng*N7|rmL%Kr6nu|+z~N;0WL(0Uw{h{;}_sU#P|gs9#$F}8kS!NW|iZi z5b3{=!(f&N0^5%Y}s$+QW6*A00000NkvXX Hu0mjf`{>L> literal 0 HcmV?d00001 diff --git a/master/inherit_graph_60.map b/master/inherit_graph_60.map new file mode 100644 index 0000000000..abc35435ee --- /dev/null +++ b/master/inherit_graph_60.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_60.md5 b/master/inherit_graph_60.md5 new file mode 100644 index 0000000000..389ffd01df --- /dev/null +++ b/master/inherit_graph_60.md5 @@ -0,0 +1 @@ +66a285b77087fb05f0c57f1879c50878 \ No newline at end of file diff --git a/master/inherit_graph_60.png b/master/inherit_graph_60.png new file mode 100644 index 0000000000000000000000000000000000000000..fca21533001a3da7e2a40fdee916c578c6a5d922 GIT binary patch literal 1637 zcmV-r2AcVaP)nGh}wok(C2S#b*%%PHb; z685H=_@Xc=gCr~}F?wMbxlBp3eA7g*(0maNLA zoj?7Z&#QYLpL3q?bI#*AXV)RYFbrTYA|Tml0hlcdt}TpM;M&571+FcOSZw1qdV6~x zJ$kfJQZSpHjEs!Z(o(kh&%QN2KK|y-n}|!oYy}(+M{jR0*Rn0pskOB=QhG33hYJ@j z_*w9M3nLb|wlHFWYYQV5xVHXBOioS`1mW>`06?$TKYR8})NrELRs?du{5KK3wj2(} z#fuliJLaiVr%Fmn0-wXhkt0WJHXAn_@h=}fd=NF9Uq*Vp{`T$LVT>3V@R=wGtJTVI zIC0{{Ml0F`tf#hgI^E5iH;*4bPLkw-0|z=gJCS{6X2xo@s@3Yfd-qFDSvPdY*62@J*CX7>>nmw=)d0w6xUL*7oAXi&w8+@#k(bnWCbiMn*>7 zy?e(!dAaZie*XOV-Me?uuiUEI{NZl(EiEm6mY^gjCqI1n5Is*%PXho=)2P^ohll-~ z)6>)I>gsqpj*pK6!1wRpk$q)lg(S(r!9gAY+1c6bA;o|(Pa{3gxqb~6lQ#ned_JF2scdX)WXB1bPAGY+ zh68|#ii*H_sHv$jnM^#nkBp1}z|_0Zl>Cc}(U0q#XulM}<^8mn~PAGZ&;nLI7*&nsGwx*<{?A*DNAPB3~ z%1tD2aGIv0qoY}S(AD7=oRE;PritPbw!6GarCM28`TF(iT01J0N{K|`@p!nidG_qt za0x@88ALdpPK81N05X}3UELo)ey|P_iJ)mYdGcgbRFvIrx7lpDxw&XX*O89EZ~!nh zHIgw!vyTFd;&YdePEd282%kSU6`}+C}2E*dwBCP!`&qHl(ZBI|n?Ck7= z2M=hPHW&;5pwsE<>+8K<@7UPb_3PJJ=eW4I!NEcPWdi_-L}E6ZA3uKF*49>3RJ3Y3 zp%54j02US&d_Ldq-MhDM-|lcYs;jH{{k2+cW@hH)%a`45x6|n?D=Q21S%+YOg!3Il zV`Jl?Lx-}nvo#t`e}Dh6W5)z`Y-ngmOiVm|`gCk;?3F853JVK&?AQ@TVE|BETwGpW z9v>gy)YR18-X0SZ0|58#-Sc=na=DzMD0HGBu3fv<(a|B3$=DBWH8nNd_gn0x*kZBt z^z^9J>a?`9b*B>;E)*)2>i+%vd3kvxNtTwDay5sdrKM$VZceM!QWRx2n}hm@HUHe5 zP~csD(~+E<{PN|?jaIS63EN#BgIN_^TNtqj^1aio2m6K-6G`yCg%Jx}TNtsxwS^H2 zTw55i2y&Ny{rYv}bzn9-G)<$wq_G64EtAO + + diff --git a/master/inherit_graph_61.md5 b/master/inherit_graph_61.md5 new file mode 100644 index 0000000000..47b2c493cd --- /dev/null +++ b/master/inherit_graph_61.md5 @@ -0,0 +1 @@ +6acd5810c48d878ac9c5e6973f5e2e22 \ No newline at end of file diff --git a/master/inherit_graph_61.png b/master/inherit_graph_61.png new file mode 100644 index 0000000000000000000000000000000000000000..252eec2bfa30641eb4a00c2409d6c0f820ccb8b1 GIT binary patch literal 1589 zcmV-52Fm$~P)EF=;g^`;1mOe9Fd$WlYssyA*3Wt1<(Q7B?Bf`;?o9cEj#{7aO(&x^xzxy|i9 zo6r6{5BGdto%7r8ob%;;&$;*9dl{r@8en*dAl?EnaRYnLU$FQ51$)n564{lBiHSRR z?!-$9CfXDi7dJIEG1Wiz{nFCXvuDp@E(sG0>~{Oa!~{E%xHHLOvBXLbCU#U-R{BNo z{hq&I@A(V%p1)x4`AgKjFDfc}@ZdqTN5SlZsC#d>+s~grAK5-no;-Q+;>DfiNKsHw z@aWMa_HYnF_6q*+;RA$FBoak-+!%we`5~cDD7w13m}*y7mqMY4qn?Pc8}C&r)s-t( zN=ixyf;fEm@XMDkQG9iE)o3(kWo0ENC)d~4Z)|LUKd<@08m_Oe8;wS(RJwovev%{? z78X#vt*tF5Cue6lTwyAesFMdCqob%yQ51yG>-C;Jdv+9>;Lz5&4AruG%Sy@@vuU}`rj0ckxEZ^mF zm6w+j1d*GYd-v{L2%*R0;g}+oN@X&cjvYI;Z{NP5p`noc`AvUb3sc|?QZ{NOMTwIjPioI2?Y-g@uJZJv|%^mzI_Q04|pc#kaS& z34)lJnc)zi(P)fD({Reg<@o6WO#UZ@7}!u<#l#;>h*eVNdfa64hI0h?RKO1>({SQm1ByO zN+r5%{3AM@PN&ncBfH%9si~=`AQTD#09#vI^Yilw2?^QR+2J;vo0|gwNF)*nA%rj? zAz^iOb$)(6Qo>MGCX+EaGMS8`s9p42R#s*(7&bOGG#ZWHuNI3XFE39d56q|ghC;+IKF)O!XyX;fv2URq2c-S=NB$qfDp3dD=RBiRaIB7UR_>Z z_W67r9UZ@a|K<=AEMFp#tgo-58$8m93fxoVCnj_v=6yy+21%0V&Yk=C@#BvlKYDt4 ztX6A?4NspwU0YlG>C>mp&CU1k-)ptnpFe+s@XvZ2ba!`;jg76Xt=+zTo1!SKRto@7 zsZ_nayRfkk3=FN zN%G8@GfeX3%a=z+Mub8kbI#``Gc)tnty@)9RRlpaH8ruj3OC6DPEL+gZ#&O=0lwd3;)vO7PE1TZapHv2 z>1=Lp4*Rh!9PoR+{}!dCr51}tDwUEXSyEEc-rgR)v3RlXr>CdmEg@7695@i}>$zQn z_dS2X-t!miJ%7R8^Opc;y{Au~#$E>|+E5gQ-efZb@LsRi$4U<-rs#A!b`{e2|Mz?a n-|zVg_MX3B@A(V%p1=GBJP!CEToZ()00000NkvXXu0mjfQdSJ6 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_62.map b/master/inherit_graph_62.map new file mode 100644 index 0000000000..5c2158c6d9 --- /dev/null +++ b/master/inherit_graph_62.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/inherit_graph_62.md5 b/master/inherit_graph_62.md5 new file mode 100644 index 0000000000..4af67a44c5 --- /dev/null +++ b/master/inherit_graph_62.md5 @@ -0,0 +1 @@ +c3bd5b0c6adde02c76f48ee6288ad952 \ No newline at end of file diff --git a/master/inherit_graph_62.png b/master/inherit_graph_62.png new file mode 100644 index 0000000000000000000000000000000000000000..f5486d9fdf1790536ce200eff05a8b2a7a5a437c GIT binary patch literal 2136 zcmV-e2&eanP)v%&xZ;nPh@o+ad#9EC@7) zmUlnwa%Q=dUMTd!^Gis0&%-(Ac~74_IX$O6aEvhqLJ09}Z30(kKnNkuK+TL0;uWZw z5kkBIH8VnpR}d{;(An9EYuB#1A{XLh7cX8!Qc{wu({RYCQ>R>=0&!z)ZEZ`IEjcsO zXf#l()$5WFSvzXA8XAqp)oD0PtyV*;)w((j;%2m3t;PPd zm6ahYE6des5I3SysgRwWy=;uGnGr&~0yQ&2h*zLyMhNi=)XWI+Q2Y1qM?*t{#qmbt z@@BTtUjX8IRD<5Z<<0E*^XE8!{`|V_FFidSrKP17#~anafF9ScKSXKi-&~!_x^qPh zavX;T4<0O7o|u@3t5>f&bw3-awk>`%gLuDRf1Sj=d#|BZzd%=)766C1II*kK+7JQ* z199onB^)_&1VW+E)#-Qzr<|F|WHMA#RN(O8!|?a_$F5zw@bKY7K0Y})iIS2M?A*B% z0RaIhC@8@6^fZ8_r});kH8nMbl9CdHhlgYP_U(|%sGY3wmLMA|2H{lL|fZG@$I*_k(l@wR94>eVZ>x3{CezaI$+33&44i9_4U%gaMgPY<3xeTt!>A;iSQ;N;1Zn46n()>L>| zSy`Bvn82GiZ}8&93urVNXCy}iA-fB!yOT3QyYZ!K=iTpAl2QB_q1 zgTa8)r%yXHkI$b?=;-K1VPOm6;{J@XvcKcmvtM8~GtAD;VQ$VtJJ=$gRD+v0Z$?#B z6)Gw!Ff}!`x`{i$TWWg&wun-xWXmjGQG9$ntF5i&$K&JU3;@$=wQO*3kO5#lJw3~= zyKmnfMef(e}{edT`P-< z`V$k2%a~Mpk%fkquK1IhTI10EoDBd|DwQ_>y{FZnLZM)Db8~F(-o31%qJlBTSVBSq ztEu_z_)8=b*3r?ykLUOO@#Dv3^Ikmm#@b$?KdGE{%`7-LnE&0^*B1a_G#W8HJPe^w zh^VNjRd4IVhYtV%iA1twoq>S?#Ky)tl>2ft8Vy7u5h5ZY_+|5N6*L+Rj7B5;{QM9U z6vW3PBP03WbvoUO@&5jPo8}T07G_u8v$JN@*FQo?$RAK&-wlof|JKoLwtfaSIQVaf z#btKwb1nG!?X`OyPpd(W<4{{$i?p;f6ciNLyxwYgYHeGy<~IN$A|hZmo6+0b>+rR! zdEw#V5C{Yq9UVnrV4#yST;7fyJ76-IFf=s8AN2R{-}ABQ>1j+&O+l~M^Dk;&Umw4| zL?T%+ZtGm^{f^}qUkFiJdK3yp0n*b8(A{mo%*-r=LIF%Bv(@##`f4j`YL@@*+j`2( zYc^07yzoLQzo>>g((A>C-1%zI>Tq zKRP;k#kehVagR-u^Gl&YHn-9L(nBukU>Mr4PRT zTITS+oyBAtxBf>qa`zg%a^(v4?Ae1YTed7%E|ba7)YOFJeX!T3Q++BO~$hQtX zBjY*~i_2J8*dIOm1^`)G?o!+9asyx^QYw`Yi9|?EO+{Z{AIi(i7u;gD7I&qfAU~Wv zn~bw(lcCX!UKtKSKN~Ns0xR}k%%-9@X zOK|YaW@N;$2HDup(fo;XxNB|Gnb{f%3=CZHlgrlP?kFT=o2yeGZom_3+vQ(0Cxj4Z zpk_u0@e0(;2q9j9ni(O)D_Fb%pi-&UGY>+R= + + + + diff --git a/master/inherit_graph_63.md5 b/master/inherit_graph_63.md5 new file mode 100644 index 0000000000..41b0a58628 --- /dev/null +++ b/master/inherit_graph_63.md5 @@ -0,0 +1 @@ +3bca64a92006fd5a230a603eb4d45573 \ No newline at end of file diff --git a/master/inherit_graph_63.png b/master/inherit_graph_63.png new file mode 100644 index 0000000000000000000000000000000000000000..feb29dc60be977b5f4fe2a845bc04b173c942422 GIT binary patch literal 4267 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 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_64.map b/master/inherit_graph_64.map new file mode 100644 index 0000000000..7a7f74985a --- /dev/null +++ b/master/inherit_graph_64.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_64.md5 b/master/inherit_graph_64.md5 new file mode 100644 index 0000000000..8092a3d16e --- /dev/null +++ b/master/inherit_graph_64.md5 @@ -0,0 +1 @@ +c645693afda8c5e903dd65aa2b283433 \ No newline at end of file diff --git a/master/inherit_graph_64.png b/master/inherit_graph_64.png new file mode 100644 index 0000000000000000000000000000000000000000..72d5d1d13b198768e72d217868e840761a651ee7 GIT binary patch literal 2310 zcmV+h3HkPkP)QQwr2l zS`J_LcQu`zdFS1EI=j<-7GR}P31Juwxb02=V@tvGHZCx|jSEa~xJ$-R;5nc-u zlQn*HXu#9cv$C>MU%B=7_j5QLGMQ{?X~|?V-@kvaugH2~7hlg!O-+^m&EiEryy7cSUFKFfUe7%l8fBxihxeg8v78VvP7Hec=1k~r|<~lh!tuAY3 z&1mD}<5pHyd_EtvNls1<2ndkNlU0q#?iHR@_dwY9B5M*m>`}XZy&1=% zDM&s$JKNvipGYLu*4C~$%GA`<;NalZt5C>kL0s#ocVzFQt#^G=@8Z9R$ z2iVZX#l`OK?r7#>u^5lX4-XG(m=m=$HY6OR^ZMrTc)7W`larHiadEM+u^{`{*x2sw zZh=4`7K<4SMr&)UmL22b;zS}*TU*=c=%|Z}3x~r|C=|LSwq7(F8=I=Cs>_!z_x1Jh zcszkXP*YQb$Kz{jYZ(kiMMZ^DsT2x@nj@E&m*2mCUn-SGMMbSS3YkoHc6Ppd_pVSV zTwGjK?c3DUq*N-GmX;bD8=pOUR#Q_0K~PLgOkZDLPfrhMQ(0N*@9$5gQZ>(sY8o4! z9i<9&b#-brYvSta`smRkQ2z1b2LwR~f`BieNF-8g?B(TER#v8=qeLQsAZToC4Ajfz zauSKu+uN%lfuNuuE|;rXgI>=yN4s<9jhzJ32aUw4+!oh9HPSp@7{M9*>`! zn*-N09nc&tB_(BKWW?RwJuom(hv4@1_WvA(LZK8F7mGxqnVFfGn3(YJ@V2%#2!a|K z8azBa2m}HQ!(1*GK@bosF)^{Ks_O6Gzwh3?lS-v$&z}9~S)gg?fZq0NR4P?2mk$mO zZnUF=g98qSo0*wW{Ti~_Y~9k(5KW;_#K*_8SS*o9R9;?=cERCROoEx2*}}pCC{IsM zs~&=3So@qwBvNW>DwRs@=;)Z5nu?B&zJ2@l#KeR`p(rRQKsS|V&YUqdHEn8Ys;sPx zii!fuKy!RF4IR*%-uCwPEEX#%DXFioPbQO->Hhr`9i z#T6A5H8wUTB_;jyEH;Tge~GZCyu7H35Ej#jfJQo)iCX-1fldoL4 zl8}(FZ{I$h(^xZFYinzMetttkgSol6zrTNGW@dPJIQRvTnVI?e^=mUTGq69;%gdXY znW0c9EEWq~U9}&DLZPIjq~zu0IXXJp+uN6wl~q(!oH})iN~Jz{@E|%mnnWUHWMrs? zO-xK|Z*Qm3XvdEqH_)7*z)F?(Q|s&N!9HU1aWQrRzzZ&dv_P;9UL4C9y1Y%#1kh@w70i!<>+c|sUhs$tz;MI4M7liT0S;5#$Yf) zLqpXbdtqqL4$}LdPt!;wQeIx({QNw4r&`S!oSvROfBrm~Ot!MJijR*6ehg@qm6he| z>q{b$JUl!)IyykTHijb%!)k7+>h*lR2t`FjG#bs^+}zjKx4XOBfK#?{c97mWpy~`p zL`2ABvYwuvPoF+XB$C+JShQJ5Ny)u?_Yee$jEoEk3HkQz8>F4#s8n&!R=cHZM(FSF zzjo~!pU?mP{rkg*4}tHwgHU}UucaTl#h~t|OeRZ9OCu7AlarImmChjWX~beN`1s|^ z7YKsJ$Hzgln>TNw(T*HBQd(N7z2T_lmZJ9VdJ%?(hRn^)HT$_+hTiJM%F4zzMeoJ81%$9hU(3H zXYSWFiL0yY^XJdEJB#gMx9-<4^aZB3aj`r0=bHh2yBh<-*0-^N>1|wKdK(v*-p0im z`?b~o)CXgiA`}YM9uuut-*$F(VPRogn-Ycr@%Hxi@$pfuS@HJ<82|TR_iy6@)7!Yf g^foRqy^V|i0G(iH@|ch0=>Px#07*qoM6N<$g8YL}bpQYW literal 0 HcmV?d00001 diff --git a/master/inherit_graph_65.map b/master/inherit_graph_65.map new file mode 100644 index 0000000000..fc61535028 --- /dev/null +++ b/master/inherit_graph_65.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_65.md5 b/master/inherit_graph_65.md5 new file mode 100644 index 0000000000..9554c614c2 --- /dev/null +++ b/master/inherit_graph_65.md5 @@ -0,0 +1 @@ +debb9e6226963cb26712fb5e3672e906 \ No newline at end of file diff --git a/master/inherit_graph_65.png b/master/inherit_graph_65.png new file mode 100644 index 0000000000000000000000000000000000000000..e03c99693d961b971e6531fd8cbd67797b57a364 GIT binary patch literal 1653 zcmV-*28#KKP)TS`00006VoOIv0RI60 z0RN!9r;`8x1}aHJK~#90?VC+Z6HOS$XG()uN~;N03{Vydeh`8BkqA*xxIoE@0TM|y zQAEWU(VBX}5Iqq-j6ggYgI)+4w%`d5#*m-~1ynd_su8eYKdgmu#XY(a{SRE`;}*Wo2d8uU}tTS%LoG^Zk6Zi~w)nzCCf`L}Fs1Kp@D?&24XQcRHOL zq9l?;@hdDYE{^_}>gwwA=g*_I%jJr^nCH)*7Znv{Wo5m2^TukmK6&!QX0r_r4n|%{ zgbBq!a=HB0ty?7}B_fe%*REYJUc5l@rKKg6N|m0TzIE%?OP4M=91ig3D~xTT-ELQ@ zRB35xTefT=N%GsbZz$f@)|Q!>>DvyHFJHd+=90_hO-)V5jvY%#Na*Y9V@pkvB!rO1 zRM565M?59tkq99GvmoHzgtE;Xbwx*}i@I*|TRC7Z({NYPGtsuuv!zW@l%Qjg575bfl!Dh{fXi`g)JY zv!-Eeg4x#GZy}*TdqGjus)%3m^75oo>Dbtq!{KOdZk9+S9*>8n>57VqBS(&Cwc4LQ ze?EBdU~q7drs+e64s~~T2cB42S*cJcbUK~QX1j6Y#=d>~+-^5b)2*$oGMNm`^=_Az zma0@LZ%N)ypuoBE^74|Bl3u@l?Q*#Sq-Gvw6B84enVF9tKSq(l!ouq6YKz4(Jw1K! z;6VVu{QSIDs|5gzjEwkQuA@hfmY0{COeVcvUtC;VUS7^9BnaaD`}e^-b?%k`YsiA3ldU_fF zV6j+Gd}wG0t^3QDF9860z1~;q*RNjz05dZ)sQdBbM*zV0@86M<&dyF0A08ft5Zdi_ z)IELrbYo*9Q%Eqw{0e4U2ev|dFSQC^1BJK;l1L<|v3c`m0D#l!oSmJGiHVWPWNV!` zGcyAKNKQ^hTi}?On5Ctq+1c69gayupx>BhWH3FpW@9*Egf4@*Dgb=D!Dx=W|05BSj z@$vD@Wtn2PZQBL_Fqurg8Vm*lpU)=<0(H?_nE5&hO#}eM#l;B(g82A&rt7@{4`!HO z!EEcmR!9hhZ4*rpgxl>#H{6;?OH1SNcvh>`+tUzjg+*iu_87Nt^o`}S?K z+3fLny1Kg1#ylk@#o=(w&CQ|dI-L$R_Uze15QN`jr_|I`m&>Ks>rofo`l+d@;jM^G zFdJ-zgh1E~B$Y}@lB}z%`~3N{&1UQF?tb>{S&$PeDk^GgYbPfsmzS5{y?a+#S^4|- zZ@_sI9dc@?)9LYe#A0!5Z0zXhXjfMk8ZVQ{4j(?;(9keHKd;m2Zr;3!;t<07_wPS? z^r*41acXL6d3jl@)iyOXX*8OQjEth9qAORfn9XK`!Eo)`HHAX4W5dBti;IJt*wfRqd-raILLrezu3o)bTU)zn)21*ATWe~9 zAnx3`qf{zIB9U6HuBxhH##0n!x7%eh8A+07&YWT5Wo2crUcLJC=~I4weqv&xQmGV+ z#ppRoQIt?9%+1X`aNt04a&k{kPuQynAeardLe>hTz5XjhqtT$vSIC#c{M|qZDT+eJ z6No52NW}afzy`u_0via!32Yz?C$NDqoWKUcZ~_|$!wEmXz0znjk=KEVQv4XGrluzH zIxtZR#OKZ!F5o>7h7;I87*1dVVK{*egyF + + + diff --git a/master/inherit_graph_66.md5 b/master/inherit_graph_66.md5 new file mode 100644 index 0000000000..16460b0734 --- /dev/null +++ b/master/inherit_graph_66.md5 @@ -0,0 +1 @@ +75ea584d3083f827173a49bd0492742b \ No newline at end of file diff --git a/master/inherit_graph_66.png b/master/inherit_graph_66.png new file mode 100644 index 0000000000000000000000000000000000000000..0175d7eea5c83aad6696c9308ca1838d242ccf87 GIT binary patch literal 2173 zcmV-@2!i*CP)a$r zm9}&LI9^g|sio6WDBmyqF&yTc^G)aL$8e?tPLd=B000#Dc{>0Az={WT1OPx4)DZvx zRZvF&094Vezfr5zRaI5q3I#0IrcIklN=m#P#TQjoRcf``+fjfeGB5YOx*pMLwT+F9 zOCAz%g+`-UR_|N2TCLG&yd4Et3bwgNv)xIhQY}?Hz;*lg@Aq~H^QEPwLGr8ywz&uE zBLD!ZppF0lsDe5I0HDfe>xe)gsI9H_=oG`l!#IwQj*hx<%(S$$>gsAY4hY=B`n))E zj#gXxdAyFm8w0oul4qsxcpcGbG{=q|bMKg$nVH4K#WOQAxIHwQotsdemYJD}W@j)M zn>TN6Z*O1v7;KG?fBNx9wMcZuX#DK$SX|+uv$lf& zuA$TEgmpH#c`mBschc zS!t>2*I#?!p>Av8;o+sFrDn64${>(_)?BG00)ap#lkMEOlgVVRU%&qGgHcykx6srCLEt#<=jRs_6La?L*}4C&Ff=qo5CoISOiWB{YHG5b zl*weuor^9i4e0Ein46p1-QC^R*4E$OpOBESXU`ss z#X{w%9L$Ab*v*?a%gf8h$HxyIJh;%*EiEl1NzTsB-o1PG_U+qu?%Y9r#bPm?PVedI zxqtuuty{Og8N-1C2Mh+o^XJbyIy$sktwbVm-0lL4h5Y^Zx2I3vOG-K|7GM48r{_lF zEJ>1Pvm0JRPw;y3(CPH@@^YC>HZ?Wni34;HE#`CS_XTOCzP^55i(M%xDV3F#Xd6{B zolb{JX?J(`yq!00+<4>04F?^yS}lfQ0|Nu7-E1~9nar-PE(ZZ*WMrVLIJ*~?4(3Ab zsKApX>EzT3g+eSAlO);G(}Q8y$jAt4N58l}eE47;lEGjoDk@?y7{kNEy}i8{hV}LJ zq5WUJe2HP$;Najw?ektP$3!C0?%g>TFFq6s|HWn(M@9XU%`RT(YkK-GXU3#LBoc{4 zqHpfD9FnK3tjuDuq^73IWHOQ@g+k$l3m4E&IULTDCr{8e8vNtOkMkn2Jx8l8{cO** zi)%tG77J|z1qERkW;7ZH2M7KA{o~@|7Ta-XXb8hF4u@mC+q-w~_#dJUEV5R#s+YWaQ`PI}@`Dd^r7VxovHk$K#pJ=HA}k#javRM@Rel z`RVog@bGYV1>+cw-BncF5kX= zYu!sKm0rGl*}5e%GSXx+_4oIq)Iq;bA|oS>Mx)(!=MRA(Qm$V8uU;Q)GI2&mCISLz zpFcaQBj11jkHA3B-beW1hehA=nB$e?*|KFzW@cttS($ZXP*Bj^8{R`pl|GPuw%nFm zQBhF@K^!@9(;GnXlP)w*#tp2(=j_cJ1;Mh!3P6f|FJsEof+HKr1>F2L($2J-coDoc_$rY-{Vko0>X){`pUI%f@0M zdwS%az8+a99^iXy&$Smmdj~vKgz76siHz00000NkvXXu0mjf#56ki literal 0 HcmV?d00001 diff --git a/master/inherit_graph_67.map b/master/inherit_graph_67.map new file mode 100644 index 0000000000..ea1a1ae71f --- /dev/null +++ b/master/inherit_graph_67.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_67.md5 b/master/inherit_graph_67.md5 new file mode 100644 index 0000000000..872c34decb --- /dev/null +++ b/master/inherit_graph_67.md5 @@ -0,0 +1 @@ +2f34c1077e4a410af990d58b379ce172 \ No newline at end of file diff --git a/master/inherit_graph_67.png b/master/inherit_graph_67.png new file mode 100644 index 0000000000000000000000000000000000000000..9b8bbcb49851e14b2532db247f80ea1e938be996 GIT binary patch literal 1827 zcmV+;2i*9HP)kThlf0wH!`6tFOQmj|HEGz4UNq=OfH8!zOu2L&)=?cw+^Luf(J5qkg zkI;(W{k*#8x#yhwJkR%@bDuMj03if8Q4R5TJAkv`;2K9ixW>^Bu5t83_HT4`bzQu8 z@prj`6DhWA*>ddIF|7I1Iz|wrxw(1KUBZbZR;#tEtIOX)p4-V{u`HH9IFYBYuyB?I z{~kv_xW>^Bu5t8(YaIP7xW>7;xwW;m3;mP@pke{DV_?ZU}9{h@Xv&hNGF&GSC5C1>z)jprEuCA`Mv{bLxM`}*3 zRtx>uv13Q1X8v`;(RkCQO{Y(v=JWZnv9asdufKo)K5Czsn9ypqEEX#+F7D8wL*KrA z13zzc|2FXJ*RNWwmdRw&>2#4uG&D4X+AAw7*REYV_u8M2A3yHjzn{TiBqk=7l$3n_ z{22gHU0t1(m4)?jI2>d$8JqUry?gQT@z<_hb2^=`U%y6;ZnrxzG0|i)q0Q3LQXY@z z^?GN8P*qjMVzFp6+SaXGZ8lqwEM2*BB|AGCYdW1y5{Wc8I2a_}fcYsZD(dd;Rw|VQ z0wFgyH>fg!33DAAjmFB#$`2nt$mMdGOosjuS|*d(Y_`_cR;Sa+X0tmwIzk*Mm&+Xv z$K%J3T`pHfMuu1{_W67vdLord$H&KedU{^Ie2E~4OeO;W6c-n}T&~W}PPC6+uiv?I zCzHv!>j~Ik};sL9JHX?RKNl*xK4^Hk(N#lK->%`}>a{KW;La z#>U3ZojYeXn}axZ;J^X9-QLsFgEkEYLtb89T3TB0c<1Kl)~#D?Hv7hn8xTUP)f!@2 ze!_o;X>4qqWeLc}jTt=X(7=0NX4#%v{91f?ZrY6Wh1VI1*BO@cI-Rt$n z#>V#c_6Bi4AP}H??6SepC^#K6fZa0KbqtO%>7effArlwY|TzUKUZM4tG z$Vh5x>h$z9gm83pG&wohR9aS61|jtMd`u?OWHLbrgTxy!KM+Dp<4}-DBoc|l-xB6JW-u7&1(iw#08CC! z4h{~INTfAu*8JCjPNx$9kdl&uRx2bDX<}jm-P7g;K@c*Tj4loU0J@o@NmQ%V&CShY zV`CPJg-j+F6cnI+>gwtc1fftU1Og!;A;Il-qi;6K;lqcAhK91Uv-y1f+{dw4EVJ2s z;>3xZoE()(_3G6t?AEOBaY8}@06?i!HZ(L$PftI3^ytf%FMIav0RRM#cW!<{$wP1= zR&%ALrFp$xbYcA`m`o;-NE{s<_0JI|NpMnAQ)gyoTrL;d92gitjR1hm%uEi4V=x%1 ztE&|X#gZjU002IpueP@K&6_vagWB8MvF+OD^Ocm8h(scX!%<&fAMl9<1qE$wZO@-S z=kxhoF4yDn1aWWIu3gKPEo*6MF&GR*MMbD=VZ=)${*p`)(|Gmj)gqBdrBd1L_VMxY znwpxHmX;6)?%usyp-}Yq_j^2^7cX9j#p3VZzk?8JuJrVDE|;s(Xx_hnk03}{S(#8M zOiD^Z@2b`6vuDpfefktT`LwmQ0RS>HGqD-CTy9@qAG*owbUFkWkL%dv6{ zqrJWT)TvVg0|P&P{P23clarId>jol`D3{Bts;chXxua64=8gB?NJ>iT?d_eJnF*H1 zAZ~;=EFdP6DJv^WAP}Udr+0UE^LV@v2O5pWjEoGSP{?2~jvP6nP$-rzT^f7{fj~en z8XFs9Vq!LI*uZA9Q&Lj=kGx{Bm`Eh@cs%Uo(ChU=q0oOG3WdVw^YwatM@Pr`^XDxV z3ynt0%gd{%s3o44E4)Kq+YyxDAC1eg9CB35(# zE+B-@o;|bKZ1cX+5W=fhuTrVhy?ggAj&FY~0e&O!CnJ?gJ3Bj1o;(OfK|IA;eap=EMiO8uVI{3@>YMd~@HI9C8jiVo2_v`C9^Lyl>yW#qtMdL6Ar!{!IeJ|Nl7J!N14R53X_agKHf9;2K9i{{Z=}1bwG~ Rr$PV#002ovPDHLkV1m?rg#-Wq literal 0 HcmV?d00001 diff --git a/master/inherit_graph_68.map b/master/inherit_graph_68.map new file mode 100644 index 0000000000..b16cfca059 --- /dev/null +++ b/master/inherit_graph_68.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_68.md5 b/master/inherit_graph_68.md5 new file mode 100644 index 0000000000..d39fa446a2 --- /dev/null +++ b/master/inherit_graph_68.md5 @@ -0,0 +1 @@ +de1e6046513a91c51ae665c9300dec71 \ No newline at end of file diff --git a/master/inherit_graph_68.png b/master/inherit_graph_68.png new file mode 100644 index 0000000000000000000000000000000000000000..a9e35628424e1c90bb1802a71a5c2736461d9c42 GIT binary patch literal 1633 zcmV-n2A=teP)3^y}P?^ zOSk%UKCkY1cAj&;_u2QJbM7`qKnMW_^B-ia1z`RxupuxUupuxUupuxUDF4QrH*c<8 zyA~@cn3zyoTf2Y%ezwV(AsB|S*=$jlgozn8n~h-@{|FV>siUJKT6!=sh9C%D1n(g* z9IzoU9IzoU9IzoU9M;_sxw*M_?%Y}LvtZVWbvK0FZZ9t{U)wQHo;-Qs!i9))34$O9 zf}$vzrW+a>R#sNTQ?j$O&1Q43X2b$mUc7h_@o0hkro4Y~$uOBr5W%d-e>)=jP^2CR0jE%GRx0D=I3! zeftKuOGdE7`T2R1$wbq1e0;oGtsWmANAbqS#@)Mj2Oj(5@p#UiJ13LLcI?sJ84ty{O!)6>~L4u^xHD0Wx`MNtP19LUMZdH?=BitOCElf79dCMF1i@Or&PMMVPx z14g5fAc)-DTwXJn0FjFo2&Bv6*`@6aB%R+lP6B6Q>j#TcXx-FsMqTq4o6Q~6(pvd^` z?d?jXvZbX3LTIu2 zpO0qUv9U1#fYa$j@ptdu0RX0^rXYk>RaGS=C1`0#NJx0}=nI0s!Q4Ioe@KB$BzgIW$|Y z3d1lIMWH(h0D#sMRK&{4N}J90<;$0jjt+{V3JVL_EM%tT<>j%lF@|Bv%F05&@X!Sa zUaY?WmhIcO0|1OhhfByXW^5sjf*L(W(X#jwDae|HiI|zK25gEzJ$*9DFE4>Ib zO_L<)@puvv62d*{u3fu)KA+p|PD)Aw0E~`~q96cZ@7}#CmC9^3cXoCf42BIGHt=#u zl2j-Z#l^)JFJ43usZ`3=)Z_8^_v9spA|PB&oH(&*)26PjuFlTRqM{=79!F3dp4xC( zv!{%tq$IUkT~<~$GBPqdJKNmc+||_;V&bV&rwj(ehYugVfB)X!->=bV78e&m2%AcU zLUHKOp{lB?>FH^PVQOk>3JMAm6BE&^m6erOu3UNj`nBM5FNDzLa<#X&XJllcNM>ec zOG}H_>m45-udlCXdnP6(4i69ee7?Y@xPY)ANm8%ZH#Idqe*Bo7v_y&%44&GsWki-H zNNa0rdU|?(e!fDX7#JAH%gYNf(PFWrrKJ@V6v$+<>gsBP!LV`TM)4H(YdWjdx@F6j zef#z)l}fo>Zn0R{J{paNB+0zIJf4%TU%!r~UzJKFlgZlJ+ED!R<;$Nxf0oPTYPA~8 z*oeBix~ET{N~Kb?Z|5~d1Ox*KU|~NtFdB`oUcE|5Ny*8{iMTjCd12$fn1#5hj5#Wm z>e8i4t9DyhSlG60+k*!Wq9Exn1+3MkGFCtc`}+C@2M1TRKZNk+&6`rG^vszv(b4w* zV9hp_(Lt-#_V)JH*Vi9CdQ`mU=FOYqJ#Oblz1Z00000NkvXXu0mjfryLxk literal 0 HcmV?d00001 diff --git a/master/inherit_graph_69.map b/master/inherit_graph_69.map new file mode 100644 index 0000000000..af84726faa --- /dev/null +++ b/master/inherit_graph_69.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_69.md5 b/master/inherit_graph_69.md5 new file mode 100644 index 0000000000..91a957ec54 --- /dev/null +++ b/master/inherit_graph_69.md5 @@ -0,0 +1 @@ +852a9cd085abf3f867c512a11f914897 \ No newline at end of file diff --git a/master/inherit_graph_69.png b/master/inherit_graph_69.png new file mode 100644 index 0000000000000000000000000000000000000000..4039a9a63d649545bbb78cacafe1ea133e1b1ffe GIT binary patch literal 1702 zcmV;X23h%uP)7d zi?HD5GmI4AI>Sf-t}~1j;5x%d!GzbD!C<&}@!~{(%A{ekrfb6M%C&Y~j~+D|jWcGHhy?ggKdoUPuI-Mj*W@TmV-o5+Bj~@sjyGKCZR;lqd0($buq9JN|aQPkkz zAVR37re^Wt#bLp{y}fd|oTlkeC`6Lvo;`bF&MRgp0ojR8Cptgdw{H($2)$k(k*-Ab z@Y53J+_`hhmMsf+U%!4$5JVsl5YQPjeza5ptX8YlYUNv!T+iHYcXf63`}glDin817 z2q6Hl+wEOlT`eswfj~f~(>;9nP^2S8QGUO_wY8ODn8LzBi^UQOg+wZ`*=)gJu)Dka z>C>ky%i8UB04OUfV;H8ry`39#;lhQrYu9SETA$BH(=!fZ{H$>s;a8W%E}NzBO@c(+1WR5-b4tswzdKQ!!Xe?1wzG?o#=GpEv9WP* zaIm4FL7`A=+_(_{a&mG2U|?V%p-?epCpsOG`T0XV5&Nb}r2>HR^75-!um1Y=>%oHu zU%!6cvSkYZ2&X+>{G^HT{bq8IBsn%V*4Nj^Wkft$t(G8&j~_o~XJ;q+p>yWU866#E z7)GPf0KltPuQ($BELyZkuh+X=uBN6Yhr=;t$`k-txNsp!k{*x8U@(Xem6GW&3==ay z1QGjIPn8}3ShsH7v}x0to12@Ons)5i!Ie%DX^$sWlyB0W5ok1;4I4I8R8;tUzF;s| zTU*=Q+$_>@)22-hhoiT*cW7wn$&)7*i{zB9%4=>UVd_Ob9;JvMn^{znp#2-1VK^M*|TSF-MUp#Q6a2TAWl4~qBJDo6AzEa zvt-Eb-mSIvkFvQ>O~M$Ye6EQCC+tefspG zq9UD6mzS64cDuu4EEWqv5JsbsU!Z2Qxvj13<;#}_gF&TIm6n!fW@d7`sz9iOh&P>> z`8jy-;GH{nluBjv5}SmcGiT25-=BqFca@iyx3#s+ojZ5MiWTGPjE8{K@!@ahBF_P7 zN3Yi(J9cc`VIw0Wvu4e@e*L-xk}!Nyb`D4v2%$%h9(8qfjeAQWgwCHouT(0xZrv)4 zHjDr%I|oRE&1P$FZ$EVC(CXEzg-2#&WMpM!UA}yoI{{$Q%U@P!;(zO##;+_f(fnom zCgv{%*BM3%aGhbK0M{8t3SyiC>g(&J*MXT#^!NAAo;{myiBV_#Um9UB$ziox`CS>p w|Njg#@!;n(j1=HH!$<+HGmI4AI>Si8e_%9j6lpTCNB{r;07*qoM6N<$f(3*`s{jB1 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_7.map b/master/inherit_graph_7.map new file mode 100644 index 0000000000..3356377366 --- /dev/null +++ b/master/inherit_graph_7.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_7.md5 b/master/inherit_graph_7.md5 new file mode 100644 index 0000000000..30f494959b --- /dev/null +++ b/master/inherit_graph_7.md5 @@ -0,0 +1 @@ +8fb502f67fd872832896025c80c816a1 \ No newline at end of file diff --git a/master/inherit_graph_7.png b/master/inherit_graph_7.png new file mode 100644 index 0000000000000000000000000000000000000000..2b79d87406b7a11383b595166832afd868f55a80 GIT binary patch literal 2870 zcmV-63(53}P)H-F<^c6PQ*CQ~RB@7}%Z?CjjWeS30pGKA3C*;&6%4k810 z`5=Xij109FCUflAF#y2Tt5^Fvu(q}q08n3F-^>0!K0aze%gxP&5FS2!I3y$l^(ike zXR%l+m8!4KKnR_joKjL!G^b;;*^3u1&d<;9hs}PY=FC3=0FaT9L2VhTw`P?}m7JWs zdGqFkgoFW@E+Qg=8Z~ckZva4JW8SB&M{4d${LOUL)zwZ;PJVuV-@bj* zi&;iPjc+e2qP@NSp+ko}Jv})b&h+WiA3l7D+MAo3!^6V`0)d&C+19OFTU%Qpgo_p} zN=!_oAK22;5*{9IV`DRR>{wr4->RxA)PDTz1$`ynVZJ9PUHbMw%YHECaeK{P?tXZ?ppFa=&uZUFl>gwtO0|O^coM>TT5gZ)+ z{rh*+?&IU5mWU8SUteFX@#OJ%G%L~!Q9wWdId;*aMQYRi`t^$-h&y-gpy)+KMY+4X zv)SzQ^mJX`+S}VlMn*1Mwv5B!ELgDM>C>n5L8h9eE(AG4jgKx1@$vBjfndy-G0T=M zD=seXF@K;QD`IMD>WLF4luBiAaBxsi5HcMU6!hxVtDKyi%F0S7C#NS*p7e5HaB%SF z&!6-2^S^%mI&vm(t9 z-MDdsyc^17GWu0qzI-_*CZ?&WY5n^3G~Qmkc=6b=V+w^LARu7HiWT+s^)xO~%|gnp zS<@M<7D`J?_wL=BmX`MY`}fnQPp7A+(=S0M)U51%MLc`gsAfpa1*!ZwO&SLxYu-Ra;vd`jOU( zSXNdB0H~|0L+y_rKL#2VvAnz-08m+3iTae3lmGx~YHFaiXGAnsYa){KYOY9Eh%}!O zQAI@Mlf&UCl}Z%7=;&zFhsIk}5lL&aX3a`SNT3Na)vTs7WPEg4sHmtgH8rKbUYY=X zRYVI53v^&&VgdkYZ*Q-vsxmS%va_@6>%hv&N&oNCen46o|)YPDlkS-Jog{i42Iki?N<#PFm5hDZw0Xm&Jbt-B^r)sxmb8~Z= z>2$5AmmvZG#K*@I1Yu=m_5AtsJ9q9(nluTu+t}Fj##^CKNSYD~g$jj&KFFlmek{t? z);2voec!%)&d$!Ep`mZyyy?-DR`m9=A`l3=ySvdRwNFf$GKIxrH8eC(uk^~5D|Pi( zsZ>cxN$=mkCp+in=8|`36BCp6_I7kkKI2icV1x z<@5P{T@KBPbcKk;Qojl)?^|12WipvaBqH0%mmzv@QPPl$wYIjV4>I)~OVb(pMF9X- zu3Y)x!GjksUWh~@H#fJowzj^-3(eb)F0%+Aj43_ zzmSlS($dnlwzi_8B7cAXj*bohz=;zl&}W@`{NTX@0Kn|ovq=kXZf+$dCFu6#;NXyw zlG4=F^ySN!0|ySE4t92SOP4O)xpQZIeSJkmMPy{8rW-<`(9O*)EG(?HwpK2ehlhuY z#bQfK%l?Hz>xy)R$kNjC?c29qU0uDOg5KMU7cUkR6tuLooH=twp-}ky`_lwj4PDOY zvXGmb8x<8*R#w*8+1cIQ-QM2b4AE8iKTwLtw>DkMHsi~H5{V=@I9RLYjEoF6n>~O2d?zO-9*>urno9l%-786Sz3%k5BCR3XzkmPz z`}a*uOk7-CdW=%oHut*orBU%#G{lQVJRL>iaWpm9d41$TFMGcz->SUhgr zxVX5un>TN&y?yrDH*xTD*yLN4`z32fjY&Ntp!wj5=7)GE)p^X{Ryng+9 zuwCd6xFYre2M33=w6wwYVt9fRak#;7-JLENoruxV(F8$IHzsIsc6RP@S0z3^p4^xO z0GvB_jv$EK++1|p-rhcX^yvHd@AuWu<;$0&Z5@3mMHVOySobt3XUE$T zYl{Q{Cb>D$UQ&H!(3;xNso=ATu-5(b193W)lPv z5fOp3t_V#T8#*;W;g)`3Vj}iK=mq}NFVU!^_CU1nnJg|YPA@ARe!?yN!o-T$KcSbJeu+jUql?vqtUDxeyTln_LV7z|V*nMt~C$!w7I9Vi*BVL<}SN5BDzf Ur + + diff --git a/master/inherit_graph_70.md5 b/master/inherit_graph_70.md5 new file mode 100644 index 0000000000..526ff93913 --- /dev/null +++ b/master/inherit_graph_70.md5 @@ -0,0 +1 @@ +35c8002142a06f4d34e660ee8b678a4f \ No newline at end of file diff --git a/master/inherit_graph_70.png b/master/inherit_graph_70.png new file mode 100644 index 0000000000000000000000000000000000000000..cb2bc2c686750bd3ca5e1c3b23959a49ea2a0b66 GIT binary patch literal 1543 zcmV+i2Kf1jP)oGx=2Orh2VzbOE^Lcg8bI)_0=bZ1(x##R|1cVS^_yxJw31Gqx7L|u!QF#a!m4^tKg^`hw+S=N^ zN(B=#RaI5z&!4A@f6P>hqU?72uBU|gE9`bVMNv$P(7%$+X4|cNFkyfoh)ov!Oywb1 zR33sw{7HX*e`xt|3AbJF@*5&1lL<1&$;sL4jQ%GSQBR#Zb?@H2tgI}tSe%lQ z(%09A>`O~aCX-1nm&e4!+`M^nWn~5Yx%>umTwY!_nM_itG&(w3tyaH({~p<^tE-cf zll`xmeEIU_>eZ_fiR9?fqt~xrpP!!x05mr@r=_LQb=+>ZP$;CEWkIc069hq$q+Bk4 z^ym?KFIik%JT^9FG#UwlP^nbGd>b1ZPoF+b7d;-2Kp>cznPKT*zyaYHj)f3ss>Ncd zuCD&{>62cs*XeYq^E#bwe0;pOx7XwGC=`l;fdP(=dcEH5b`K5?dcEG%)KrZ|NCMHHlM=6TZ>2v^q($Z3|*XwjTQJt2SmWvlJN~O{*TXQ%Z5W?TTfA{qC zJbU)6qoV@=(An9kP$-^0eF`CTxm>|~uU)$~H8nLcF@cI^vpFLpLnf24chG-8IEG_` zxrSJ+)=idxq^GApe*73+qnR-~JBvPjZnt|=Wu;Qt+S}ZchkQ9gYe+N z1OF)X_4P$XMd+Fy##_;{gC9BqX36hd>}$T3SM@)|OBdB@_zL zYybeD^%)Ifd3m|rZvX!MyUk`33WfRk`Lx%j$DvZGq;J`5wlinWL`Fsu1Yt6nW@l%E zh2GT2kt0U{07j$n`Sa($e*Jp+^5w$9!j&sm008VA^dAr|9cL$O8zq@cwz08+rp~sI zN~I)8e*5-~IYvwkSV&AvTwh=JdcCOl_U&6_1OS{kaYCt7n$70s=4OMz5D^ivWow^5 ze=aF0xqtuu+}xbc=c}u$TVG#Cw@8xHKwY|Y>CmA=4u`{RHWwEcBb`F%Ajfb)-T%g! z$+2U{)M|BES=rRo)Z*e|Yip~+;o#_4P*7kn7^bJEfBg9I`t@s#M)ULMPrzZLl$4Zo z;lhQAii)|pIf|kxD=YKz^5Wy;(cSX$@|v2O;o)J9XR6iJRiDon6%}>hzyX)bRaaL> z--?fqpPZbeH4X+zl6t+qp`oFtr>Cr}Y|9P?gJZa$X@uq$koNZWw6wI`+}xz3q_MHF z%*;%Vjuwk0H8nLaFHa(o+`4tkU@#m!c#z$Nel=mWS|cMPPo6xfP$&`-5-b)AT}PwQ zkR+LznHg}~?2k+)tEs6eDJc<)#Z^^RXz@hcxpU{mix(o1h~AFY*Vi-8sr0eZXfzHD z4aw#5bLY;5+(G|v+k?3#aNH>EIZCAxoj2H7TU(2bjqT{@*oBn#5D>17(p~`}eD&(p z`1tsiA7Kb#Q&W>jBq}T{+@0M19Rj>0|CiBfwN9t=?%liD+1czh4<9}p9Ua})*2ZOv z#54ApsN8>*5tg&TK4qURzZfoHQF#a!m4{$ac}RebQdd{k?&pCCBLPG$Dk|FjJTPH| tfcXEZyaPW|c?cGjhhR~82o{xx{0FJ3d&KwjB1QlJ002ovPDHLkV1k}102crN literal 0 HcmV?d00001 diff --git a/master/inherit_graph_71.map b/master/inherit_graph_71.map new file mode 100644 index 0000000000..c70fac9065 --- /dev/null +++ b/master/inherit_graph_71.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_71.md5 b/master/inherit_graph_71.md5 new file mode 100644 index 0000000000..6a852867a6 --- /dev/null +++ b/master/inherit_graph_71.md5 @@ -0,0 +1 @@ +620a68d86065f6bdcf97b71196c5df39 \ No newline at end of file diff --git a/master/inherit_graph_71.png b/master/inherit_graph_71.png new file mode 100644 index 0000000000000000000000000000000000000000..d262cc91c5735ddb40718ab87502cd986e456366 GIT binary patch literal 2381 zcmY+GdpwhUAIGocu;j3uhQusqLwDqqyJ%Yu$yseFgj61KzSCV{>y{9UWUo2z5y_!# zWRVc#aagRH#f-{Ra~neGPJ1xV?|%M!e%I@|ey`W>^}4>l@AdtBuJ`ws&JPv*`JRJUCryx3Kv9*rW&Dt2e?z!@7M z^LA)rYr+X<>YGLaTpxCAXO~TXw|t65ZEYrJ_+A}*MRiIZ>#)6gTOLkALUK5_aE&-< zq+5RUs0NNSXON3>TT{gqnw`*^5(-zQJ8H}V{eJ8;^{w>w@NmuDKC_+X5_?+MroD)8aN5Xu3 zeJ!Wp1FM5;T!EmYzJA`9+!8Ml&TI^>(Q9fxjXbdI6h7+gynf@xWMcX8uBlPi(J|LhBxc0JTQm>|1l7BaN~N+`_7y$`Iyyv=j*d=ANy%cB zF}1w>MT%HWpFA-!p{k-%Sy3SeRaaNPoSM?TYiC8Rt^29oAeq>~1 zXvkyuh&aU=M$%Tg?TTdJ(VtCYSS;4#$B&~9>SVJ8LgBNvwqXjVl;Vo4=7}Bk#zsaO zSgcb?^B1|5;)R7dkw{rt`R32n9a;rs^5Wtmg+gHutga>~W}(z_9!{5)m7PGsL0qc$ zvRGWG-rIR~WlA709H7w*jg4z(XU{v?$7^?HW@augFTZ~62bZm=s1V&XQy+GyX=w2B zYB998x38%lIz`%N>?{KvICMx(HF35t z%bl$62JeqxMnp#Li7YKGwL5g^X!_>Q)mhBVn>UHB5NFSNx^$C(!_~I6rCz(%(be^< zx%uTTIz0N~MgI8s`|g{&5j-C6agfC(niEZ6CMP7Mt$ysSbK3doe`CM7;JkFE`{rKi zE(p4D#30>YUS9s8?g`O{-*Nh61?c7Eq&6CngLTw<^6c5^f*p5!d(yWQd%77f=ycUk zDRBEawsah<)3|_6RHGU{8 zbBNb>O2P&Pu8BC5#Tkw$iHTqOy{Dt2!?W3O6`!7-o|u>jm(3Z7u(fUd_ALoU`rIGE zo^5<7D-7z_ky>*(}`4T7b$wYAkyhPjKr zFM%MKp4PMO+iSPf51;|cPNnLoWY;t`Es4eE7v%Gg=iRvjSIk=64>+>)<;x*EJ6Cwr zK`N-<;}!InJ?w^rNe7|auzNNMG+}E^*h6W^TK`hQEli8Ls-a$d*Lqm5e zD)v3_I=7-IL-ZpMu6>z0kCg>7mA^%;tStFn81#Io57aU)E-ocS!@BQ8 zUQP}W`P8XXK0ZExKXP(%hK7a~78U`|-@JL#*4F0l?~jCejhLF4$n4w+Od}^l#G}W? z#zI3vFfp^R-h_^`k&%&vB*NN3dwVU#ETE`IeuPl{81$Kxj-`Bs4sQ{259(BfJByhx;}ruGdO03`1a|NemX-KwJ*G9iu` zcs#zny}iG`A0{iKPX^#~uX&@Sr1WtLi1+H%s|k8od>Y2h3dZFz~FkgR!yPGL6aH z13|#-QD_8$(%pUJXANl};%nNAmX?-5vccfs;C^@YKLCfu$H#knd&7FtbFip1t)%IK z-f*x?j8=Ge=)^EwltqjKe@^YP@Sx69Q zABTTi(#}5)EX-swfnG5&G2epk;Ti$*Fqm6dl#`<)aIj}+*)Q5kO7a+*pS_DCrw<^; z))tT)p3OEkGJ3gJ{TLRDJ#(g%Mmvwg4e%cMsu~Pm{(C3kYoLuj( z3_+}JzKK&wLxaTwuM4e$(a})?fuN_NkT+22lx*VUB$${$bceboq^9!Uy{mh33E)Z~ z5b*i@q5NncpMuX@21(}-y1G+u-yTE4eaan)-&<$!My93?c6RlRjVm*f)3c6FPQ4ST zZy@d)KEJuCX}UQvE;jZfTdXBA3s{*h64LqbVbs>}PEij#tRy33JMPDmX%&yJ%QKyE z!~XUn8)1gOl + + diff --git a/master/inherit_graph_72.md5 b/master/inherit_graph_72.md5 new file mode 100644 index 0000000000..d6d92afa90 --- /dev/null +++ b/master/inherit_graph_72.md5 @@ -0,0 +1 @@ +2dd093d85fdcca387252dd446f478c15 \ No newline at end of file diff --git a/master/inherit_graph_72.png b/master/inherit_graph_72.png new file mode 100644 index 0000000000000000000000000000000000000000..5a68ef4c48318d355229a1de4b04e66cf4b751cd GIT binary patch literal 2180 zcmV-~2z&R5P)Koq~NIr3lxfpNJ2p{6hmsn6E9j#stE;! z3dDc`rG^*@61>q1Br1WZl%P^MR}NkPAyK1pfmRVhz=T8&1zP1)6c7Xjy6?q&+4S9Z z*A@}J#`#_CJTuSqKQqsqwgn8waezSB0*uubfIwIZ3RZ;8fPxiaGoWBa*bGeL#G5y7 zZr{GWT2c@Q5~-=Fd-m)hlK)v*wOVa;b@hr%LLkggU0to!YK<*S(?V5MRV$?jfuID# zFp>qGSrIk^3RZ;8fPxiaGoWByWrl}`F$~k|^{Xw!2KeK_8XO#a|Ni|y{V9mQfj=Is zYPI_8*|W=A=Rg1abMfNECHrC+W;}m7J3BE9b98iECUr{(YQr#$$z<|)yv)o@gTX-W zvU~S#rBX?iT(SUy=g*%nxi(XNQ{LZr3=jwe`T6-oGCx0GAP}sg9%JNkIgaCVb93e8 z<#~B|4<0;N6#)bX4<1}$0W>TnSpEI|Gcz;y@88d6vv=&+@$~6aXrG#zlFQ|uo}L>v zY)DK@oSB&c|2+m!IZjVc%jI$&kLT>{EEbCg1_q!#D=TaJ_U)$6#*B`Ro;r1k!{Kb* zy7kPNGhe=Z0RSiz3SVDeqD*&pHll!hG7f_ z!_(9A`t|F?uPFWf{jXfPA`*$%Y<56EKy!05y`8FELqkJiv6#(f`}p|O)YOp9zVq)6b+8P=fG#X7{ zVBpJ_FD-PG$z9yvz$JCx~r?Jy}cbKl}hElefvB-JZKtdwtiE2 zR%5*8t5hnI#Vme)ez$Jjg3oZW>U26dtGc_pNri<%VPRn*jU)U@?bD}E(7w31$Y!%U zIyz_sgoTB{-Kw{@7XYBqXrR5bvl9UD`SWKS$CHzjqobqYmbz)vrka`>!Z#x$V`OB+ z$;oMad|V(9G&VNY)zvvTIGFvc+}vELR7&ViPfsVZcJAC+P*6Z+r)pPEPY(cKWMl-| z;d(hXHU_nkqGW!49v0(rxzCd#5hUQIc5jKQ~)6?A|fIsB?ZTE zgTcV#@k&ce2^nSwj;el=T6zEgDwWFEvc#2@!{NXO7K;S{n4O*N@9(#>v-9%uver?f z(EtFrTrND(+u7MoO-;dF=9g%-S|*bTXE^`>o)cgvCM6|RS67dZk5^SyF`3L`$BvO? zgolSGBqYqt%$SZ)RaI3$K!Bs8BZgsexm>5y5m|gb-}srxGPP5+OQ+L0I5-gfK|$#jc|0D2!O-jV#(hMJEh^mH+!huV1_uXW5-wV9Zf*boA0Ho~ zP^eTY6$(XcZ0wpfYe>FHNl7&|HRsNqBYg)wGBOes6?OIM)uEvwgTauKle4g}K;*&^ zg7o$Exw^Vi*{Ry)>gqZ(Gc!6mN)$G27lXmz^Z8LxQBR&cffg2vMT|G$3rmt5E$JL< zIehrAy}f;XeZ5ktjEszg@wbG5BdN8PWeZk!cXzQ^93LOw)zvjQIayd(SYKanq2ux6 z$75q-KYsl9{rmTpmKKRb^5e%3V8I28&*$&myEi#Gd1z=ztJS8Yq=biuySTW(+@z$W z?Ck8>)3&z~O~8|&-qOHWTX)rRAEe}8{vWu>2=AGG-U`xg}zO-xJ- z3=E{Dr4c1vTwFRjI*93HoTTp@t6(q~GMOwdFR!+?mRRg*2964nTB~I&&CM*OrKP^U zzF}cud_KRmwKX&})I!JN;$m-a@9^+&4u^B$!iCt_*mdjH(Yp}Kp-QE4baWI51c8Bp zTrRh`xR@v-kw_Q}MrdfL+1ChEczAeZXJZ2tgNh| zp<&CGEi`tjcBxdV>FH@NFE6oJER)HM>(9;2glqje&fasyZh? zv82nFFE=(evREv5za}MVI)@44NJ|Cxx0i009Rm=5GbmUQHUkP)gw2406=5@&xnMnh{CMScAP~RAOt4C& z(v{bNK>QL6NB^G{VI!b3E5c?#!HTdMP_QCw1{ACao8e!jt%=BWq5We30000 + + diff --git a/master/inherit_graph_73.md5 b/master/inherit_graph_73.md5 new file mode 100644 index 0000000000..1fbb30d2c8 --- /dev/null +++ b/master/inherit_graph_73.md5 @@ -0,0 +1 @@ +e8b8ce949577f582dcdfed2131a2bdef \ No newline at end of file diff --git a/master/inherit_graph_73.png b/master/inherit_graph_73.png new file mode 100644 index 0000000000000000000000000000000000000000..979252e0c36cce9516f296e5b72c960a43c34204 GIT binary patch literal 1985 zcmV;y2R`_TP) zxpQZwq(D{!X=!PtrKLpoZ}$(A$<*4~y6lo5tA+0FZkmmbLKA~!eJ zCj$2$5GtTQAXGqqK&XKJSYf_@|Bj-l!{JzIA^!R8{zy$tefaR-CUH}Tv3(cRsB z_UzfEJ!WQR=EaK_7hQ{@DA}_8{rxD4G8l{{Qnz>p1_op@8H>eYGMQqr`0d-bcswN~ zrJCb?DphoJ zba;5UL?Ze6^(!8)tgPho`E%Q3>~{O{Y|PZnwQmTl}IEQhQ-CjwY9b3L7UAsJUm=hRu&l(MxLmG^iV7Bs<@I_20NL5u zyLa#Y{Q2|5#6)dvZF_q=06-`d*45Qf7s_NZu~dF8m6eqkhS}|Q zig=)TiA18DoE)3YHZ(Mpl9GZT$k^DJ*X!N7b?f27hjlug+wCSRNls3#udn|{c|K`@ z&Q5_`E|<&YXIXP)C80I6xWHQm|bS{^Rcku@hzBCGjqP4Yke0;p6rG-wX zOQljD8Dg=xsHn*0a%E&>_#C#Sr6nmTiNRo?D5_Ga%w{t&6dM~$ZWBXu({U6&YD6V!M|BmGE25U<#M?mj|ab?7esV) zG>t}cI2>f#`uv=Mh>D7uot-rrjd&NoG^3)T5Cn;fixUck4Gj$%ji#`$FgQ5ar&gg* zw6(RBl$4+-N{-uXw*373>({SatyZtsTU}i}J3C8^;_HqxGBOew85t-ZXkL+#kuI0Z zZnqQ3bLWL&m{O_aa=G|chDQ6}&qN`Qoc3>4mCTa)gTvuSB$6{{&V2du#p!g`)zv+F z_H3So+1c5Jg@pqH13!QM{P^*sOeXvF>lZSQ{b_7$?4CV)luD)5YBiZm7cN{7i^UNU z5%{P=p{S~=djI~t-xq9=NCW`5bm@{$-0gOIz22~}ur+Jeba!`GS67oqH5$#EH*cn< zrf%K3Wj32-GFhN_pn36lyj{C?ojZ4KY;0^~WTd>j96y4^Vv$OvFJHc#n3!-nowc>K z27^H;6e0)`5fRbX*N6LnLLNDdVpSK!Qoi3ldGaJaK0YHOBQ`d+x3@PvJ$;^qjg5`l zw{I7V#Vi)<{Q2{Rg@tR^uB9#^E_$t2%V01B0zqOyQtFNy=aNq!fAeS#+?(FOg2?lSJ#y*SN8AUPo24L-MaAb@JEjx&E1(o z=FcDIkNJPw=61W6{Oq4TeOgfbKfoXMe1R-8&>s*gpg$l~Kz~4}@UuUC`t<4Y>wv5V z%w{w37XutW{>aPATP{72Rfk+ICwEZ*|NjRhFmV3?p#u5?LIv~(gbL^n2o-+;mnPWc T$@}Ha00000NkvXXu0mjf2FBA4 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_74.map b/master/inherit_graph_74.map new file mode 100644 index 0000000000..6758dcb778 --- /dev/null +++ b/master/inherit_graph_74.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_74.md5 b/master/inherit_graph_74.md5 new file mode 100644 index 0000000000..05bd67fc51 --- /dev/null +++ b/master/inherit_graph_74.md5 @@ -0,0 +1 @@ +264801a4cb1d4a7dcd278d309194699e \ No newline at end of file diff --git a/master/inherit_graph_74.png b/master/inherit_graph_74.png new file mode 100644 index 0000000000000000000000000000000000000000..3282ff5360895c35bc661f54545e851abb312d8e GIT binary patch literal 1803 zcmV+m2lV)fP)3SR!a}@{ zQy-$nsSi=()Q70?Y}mMQqrqTUXcdVv=QS=aF1~v8>RjI?xhzJ_ahUTOo6Y7ud-fzZ z=JxH|4;(m<#DGObMV+0U;pwb3Tdh`!M8aaRGBYzpBGKc=k7LG9P)4#Kp4G{uva*s+ zr&}x*r_-rct2G+ULMs9Q0041xb#+BpV#4F`jvqfR6bhFuTefc9y8HLU!^5JQmIrbmEtY4>|?!NuhD2c9*FHayZe6=} z?N>7XCM`dKFL>g8eE$4-Z2aZR7XX0U?f&rL0|3Bgvqd;Z^l|h;m&*kJ7#$tO?7?7= z!C(vz562M@?&Ejw-T?sYb~|Q&^X3fz;N!=S5JII=+0f7cAq)fpD^{%N?d^pSzJLEd zJv}`-csRKcnt!z^9*=kQ=+T^<9F0bUx4YeLrBa!fmzS27R#H-e-84Erp4QgZy1Ke( zw^^hGBWZoiVzICRl}ZHw`2Bu|!$BsKxm@m_F0|Y2001_djUWhuAY?N6>({Riha(Xg zE|-f!p`a*=P4n{dFe3nsGL!%Fg7)~s1GGc)6KI-o1Ozo;};LWlL#k>D1H|0Dwe_orgG^(r7e= zg@xti3#+TE6$*vbYMq*zdj9;mL?Zd|;|BmhqtRfk88Hr% zo10r&TB=kk$HvB7E|*HB5{X1vSy|ZCrlzKrmX;?^o`k;$J$Ufo*s)_HBO}w()4^cS z@AqSGxU8(K;o;$Mt`pf5g+jS;<3>S2flw&?{P{BgV03g;EEYd}_;6xk!sqj~wY51M z4uL=r5g)s0Mn=YxB}>d^vsSAO-wy8C?Y;3j_komoGOOjq@Ps-yvydu7v_Z`1I*hi^US%aM7NZE?uHhsk?UV znjdZdEHQo~@GnzaTRSi?aOB95ty{Oo_oUHiOeV9vy*+%|`roq1YMl6QRQ!JboGMvF zEV5@c!7LzZoca(oPJM_Pr#>;xT;1K>^RI&-S-9Qq)vH(IEir10|3fChVniyH;-?5C t{{J}DA>PNS4^iXPhp2JtL)19+`48F1^#uU + + diff --git a/master/inherit_graph_75.md5 b/master/inherit_graph_75.md5 new file mode 100644 index 0000000000..21170f8678 --- /dev/null +++ b/master/inherit_graph_75.md5 @@ -0,0 +1 @@ +8912ef7e7ad8b5592777b6ee0638125b \ No newline at end of file diff --git a/master/inherit_graph_75.png b/master/inherit_graph_75.png new file mode 100644 index 0000000000000000000000000000000000000000..623154f7c373c7e1b2fc95b4a5af7ee7cc775f9e GIT binary patch literal 1907 zcmV-(2aNcMP)lzOHkf>-=}_>vkXkAq1Fz9?DWDfcYc9I=}#cb$~%&9bfC>k(GBQY# z+_-V$y?ghNeQIh-DwRe>MFj-~9Xoc+Y&L`Mp9?>8oSB)CN~KIDGcYhvC=|Yb{~p=p za(PTl%#UNl;Nakn9Xn!TV(#3zLz3jr;?&mG#>K@sy!!h3Xf&E*iZ^fGq@|^iB$<$q z(ACw2j7FpJ;K73o1|uXSxGebf` zDk>^a1cci-)6>%=Nj`r37~NA*QNic)9r*+W1wDH7$Ye6f<#LiFjYcDcFg-mzD=TYs zbaZ%ln9Jp6Wo0=p-)gl!fBrlsCPt-FIpVBezrL%h%WAbk2-DKia&vPH219>;e^OEs z0APH49Hs4Y9zX~uCnx><{9e3xfiBOSIg^o*;bA!*%9xm#c;m(muiFP96pO`TvDn$- zqYloWKkrxu06?$TBenMR^|{>aqJtkDM@B{f0HdR$$ZoUQNRsUB?e&lVkH;fPG9Vz} z)vH$yqlY-9rKN`s9fA;AESBKl;FgvaM?O_mRgMUoH*c=1s~Z>?K;KJbeEISv0N}%i z4=y<<6pFmOJVzXKJU|Hh`}+X^27>`zq7J~J1D7u$vL85bpscJ6LTIeSQ}Iv715 zkw}V*i__E7wOTE*c!*O{QlimlK7IPs+}uo~(Xz9%9dV+gqn*b{moyrU#bO~NdKjTy zX>M*#NJya5=>$PYrBc0K@9>R`j6?&yUcYM9D#tQi3gU7etX;bn08ms^q*AHAef#$C z;lnRqzUaz?ST>t&U|_)IDee^}lS!daj7DQ{aPY5t5d?AR z(j_{bo|&21(b18bn(84=Y;0_Da&kjMLu+fRL?T(XY?TCKyw z!)R;K_d6mY!eB5I6clJQn#{~hI-RaiD4Lp@oby40@bGZ6*=#f#(N^hnI(^Yio3*7{Hu3dQ%Xf8O2~A|oS(LSb=n@!Pj=O(s))eSLd-`!71?CdSoja%3>qR0_baeEtUAsz4OUK5>Mn*=;%E|-+L1<{`+}xbqZeP86_44J* zdwO~W~)zQ(hZrwTnfLg7l z)9G8bY)MQ^3=0cuY-|Jouvn~`nwo-w0+J-l%gfQ}?H09KJu@@IX0wGtVPRpR^G6DW z!ujt9j@SL7qN2{u&ZwxUZQHi_T$WR(PTjqG*WcfNk=_^nMl2S~nl)=~-n_ZgiTn}F zTc7xM0U^A4^{T(We{OE>Qs?rAGH-q2pUldYD+2=quV26J+#zC|`6qPn`>$31_xuyj z1&mj)4ln><9bgbx2N(d{_KCM{-CF!SFpG&^uMZCocec3EL0(?oV&#KbGQ?uB^CbcC t|3ARs{s4o(I=}#cb$~%&9bf + + diff --git a/master/inherit_graph_76.md5 b/master/inherit_graph_76.md5 new file mode 100644 index 0000000000..8ee3dbfac1 --- /dev/null +++ b/master/inherit_graph_76.md5 @@ -0,0 +1 @@ +2bcb09a5cb506173d207dc9a851e9eac \ No newline at end of file diff --git a/master/inherit_graph_76.png b/master/inherit_graph_76.png new file mode 100644 index 0000000000000000000000000000000000000000..8c2c10c0ac813a0e5a7ef76693f0fb1c5abbe31a GIT binary patch literal 2143 zcmYjTc{J4P8z0#+7)!F{H^O8YWf>B>88H|$%6csq$&!61u9PKY8AeDGWp0cmLPHEG zjB)NTrO60`pQRcK5oH~W?zi(h=XdUTm*<@4kN5pNpU?9=@0;sz*+v|!2nK;b;(o&pV87s`&;l4CKdcQ3^z+wv++9}!0v(mHMO}3H^U>;~Fm%b9GX2?-jNMMP zD|G#V4o2lS+Gzu4DG57USerCLL`+VrNe(lrt+EtQlq2x4I6{^6BOiQc8!uY|6jhcn8O3COt_c3je&94Gmm37?ddeE!c{4X5o^)B5ye zWnJ$~QfaUCPPn@(1ZG5k%&M(b_v(sg$Xt;ZBQ`WNSg~chTj4Tb7dN+Oxhg{bDwvv) ztA~J(Nz$DZqlY?sc;vRV8Frr?e~uUu`qyc052#f0=@)SW)zF?49yr}Rt*A(v{F2%#0ez2c|Llr>3X#)ok#Mle|wHP7#4HP*_)2r&5ZMl93T8#k2>SjTdik zCsbEgQyB~q2n2#gqp4rn&$u^&gEirBcnWr-cZln32X%EuAP~2oJkcB)8hYH*18r_@ zuBEiWVe0BMCKJ-s)U>#^HjsNv!@ZC>VCJw3@f`@gK?;|-1R{o_rZ-&ZCL zdd$qs@YB;?;j^z4fZGO{O#0}kOxoWO)Yv~tN=gRbzRe;KT z{{Ct{ClnQF>HNYU=H~^1f`XJx7lJS`?b=p)nX z;N5EZ1;PD)to%@lg(b1CL-rjfLEJPu7mY0`T(P$R2 zv9YR6u2>X`!C zFQ1P!5fl_;O;0OHNmX1(zJK%9t)%WOPG_faUT&@m5M=S2g;(Ex!!Fs|*+~w>j1CV| zkv=*E=bJZQ;Zuc$g>QWSBv?Nd3P`Jp=L81_1AM8fscGr!7YPXoJ?ZWJtE#F>Q(r%Z zRnBBGox;MjbN}}1O5SP4_uz1%XN`X+ySwg{SA&H%HZ~$4 zty0YL*RN`zQ5LH*vAKt=IO3!!BajB*+1&%;j8U?Qh={OGD!}2?@EkNunw2e~93M(w zd=r3pJvew$wW_R4VT$a_KQ=nLxT~wFIn3JH*dVpGB9@nzRY9Zg-}kd;dsFQ}i*E?J zH+WZG#Ac0*jKpt>ii&b$0Q7v1`}!^(PHlX7$0bWk0bq(50Wet{0>7%nseY8TvAH>~tX+zkn3`H{ zoTRlU#Kl?K+KQN(n(6_ynjtLVH`jCPPwtPJzOxAWK(9xAw@2RZ$g4@o$^Ma%5FnLP z8y6N91OX!Q^Yhbk;!|XW0<{E=@ag#UFy$)PlQCxzGCfDJb|78B%8jze!8ffj(NR{>ZwzL0P7Ro$>#zP z3NG;DGGIZxG7_JeDbU%~WkF(@KOOVq?QM}M6zjM+gFGCL;C0N$$0sv8n={ekFAs%U zCnlZ)gTcFdR4S;rxY)tXExV;f{}Z5%gN*`{s|%k$FYor=*n&?^Obi2}-5=9X-Q#X(yy)z7h>vfZZ3noh zTVIcEeg2#Tw745v%g24(>Rs*;iI-2Di>$u%(8$r+T4>HwTB-t>N_D<08mA$bNbr|d}8m5XwBH>zEtR;`IurMtnqx(uqN;w?kUls1z5&3-sXtu%s zr9{AFz})0BUo7X8{Kq3rTzP3*9r^|amUuiqer@)GvnRLL{}RMKRTPyO#%}JT(}n8m z>uV_+ZocdNY%yM=X9r|^d%H7+L$As>?tk6amv_lfv7r9UK|9$f&DV%b{`X5L1|`F_ zwb>)W8GIkughqMVRd;dTno))?TmZGQ@1YRLx1ZvAhx`9Gm|s-8KYUjhVXFE%Hlhy> Q{1`yCR+mxD7FTco1BvqqWdHyG literal 0 HcmV?d00001 diff --git a/master/inherit_graph_77.map b/master/inherit_graph_77.map new file mode 100644 index 0000000000..3db19eccc8 --- /dev/null +++ b/master/inherit_graph_77.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_77.md5 b/master/inherit_graph_77.md5 new file mode 100644 index 0000000000..b5f63b90b5 --- /dev/null +++ b/master/inherit_graph_77.md5 @@ -0,0 +1 @@ +c18b319aeae4921716be2b5ae153e53e \ No newline at end of file diff --git a/master/inherit_graph_77.png b/master/inherit_graph_77.png new file mode 100644 index 0000000000000000000000000000000000000000..2dae1a52952f68123e103c27ed2f89152aea4d03 GIT binary patch literal 1876 zcmY+Fc{JN=8pnV3T~RdDTHBQ-#D2@v5^Gc3T-)VRk*HEeGZK~EHl}@K4 zExD*Fp@g=#mK3$5b}0rW&8@92^D}d1&YAO`_kEtfzUTR#=lQ%(KHA+`N?chS005~g zE)E`Gq<~jPR2X~>2!4)W5XN0~b^uOJPhHoeI{+XecE!QYE4g~B>YB?PjLINmBrSiv zQk?n*)&4cq3+i^?!Y?KG6>RfWxh-8G#{u48QT9@fHAmEm$A&bOT2cyI$|PH=EBDVg>etdk~^>I~;aSN>Q+upX}735v~8T$05 z5607HK#b~XKrqHg3JVw;8&g|ZVgJ?mkJyTmn3&k}o6E%Zu?63^X)g_&y4{W$B^FO} zCz(^@<2m-Z(r`a~XX4f??(*O{ct%{D$?oR#?a@)RprD|JuCB0-jt)ds_1bUNdRk=E zk3K%;jTxM`WCLU&i8Q#yZoigx@9@@9{v>lB-$0{D=jZ49wnwQ3cHI&xWM-%CeeMmV zFS01kbMB-)SRQ0~X({ITC`DUG#}1|#+((p3-rZCRQ&&?XI#IG*b?seTM5WcOi%Lsn z0nca&I`fdbEMlrG)zHu&qoN{7MiFXj)rJED0*YFHnS22s>HoX;lbxf3INA;Ks$PWT zKYT6%wv8THScs?~|Lg0<@`{SMCH3SSnH3JluE}TledASMM#g1+e*R}Eyij=s103q5Tk^Gs{(PKY74J3fY2L)-gMY4$>KKPIhc{xJCdGBO{s1gCy4MtP}y6b*_WVuml4I17 z1b>A?LV{TZ^_CMZIQR|c_wtS}3kw>2w(mks*4NiHfjm}tbz76iV{HzHqsGMf-2*hz z)6=VG7h`0aeO+f}X8!Wl?9!!*aMQ}aM#|;qj89I+aq^FeL?ZR8Asnuwq@1k8DefO*0@43NZ!QL)AM$de>+lJ4xF2CQ|0?Zp+HZ8 z!bJc8twpivFbNC>TWV4%@x;j5 zx@2xHkVd1^@6d-P9$+EmiLo6jP83$-Fs?Z$JX|!kqx#8N(c|MUkEqmBFo%YQTu>+^ z4tHTQ@f&8aqQvoB@b&B3UQmVc2(uYB8%v)?2L_gaJ-o!6=}NVTjf-QkSbUwcC6iAv zT5!0O4gOdV!H{wVp@2f6L9IWt#>Q@&gbl~Eu~Em`g`q@mSz0S)a-%uqcSUVIJ$r+4N@JstRnq5bPgsq6?kQUjA8LTCJCoELqoNG% z!TmqoEPDUm0(jE!u9WU9h)!V(jfVkbgwr(qq|NqtTza4U##H4yn1R-D{YIpHD z0|QR&=Iyxnq&70r4@N!Wx35nYJCu+l*r1I(k_8mB2o|SFAHL7+(X4Y%q#?K_fh&&g K4m4y?_P+qhK6q&W literal 0 HcmV?d00001 diff --git a/master/inherit_graph_78.map b/master/inherit_graph_78.map new file mode 100644 index 0000000000..cad89fa57c --- /dev/null +++ b/master/inherit_graph_78.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_78.md5 b/master/inherit_graph_78.md5 new file mode 100644 index 0000000000..e49103fdeb --- /dev/null +++ b/master/inherit_graph_78.md5 @@ -0,0 +1 @@ +bc3049a38d14d44c6f76eec774862155 \ No newline at end of file diff --git a/master/inherit_graph_78.png b/master/inherit_graph_78.png new file mode 100644 index 0000000000000000000000000000000000000000..56804f9e540b510861f5969604f4922986138ae0 GIT binary patch literal 1804 zcmV+n2lM!eP)0K~#90?VN8&Q(qXz&)s4ET$*p1^v9@t5e>o!HH5TH+cmX~TIL_Jy!ZFw{Ie5NdgGuZzK8J0w53oU?M_90!&1RD1eCw5d{mF z7q4HxzIN@}-;x5ER}>T!Y}~k!zMQlo`h32IhK4zp1etd>yHb69{aopR z%u^5q39-OuM2IMWi3kw|FcBf5045@Yn}LA=1VI9U002Oz(^Xbh{?YFKcp}b043K|- zKc0wgxBI|>1CjN)W5=tGANjf{+d$y@VO4Tpz^tyZf_rCPRZ8HQoKy}gvZ zq@-l^>ecKrCrYJ~UVCsHM-U_!3<3Z!3_}n^B9Uk`n&RT(sebnMXtoleKoBgIs)Pc;$!{rwn*p(vW1oc!Ry15Tejf{TiZGBY!mELl=lS2wM;5W-v$ z9S%oHNy)&#fZ1%$&CR7E%+1Yx`}S>9QQGqjBfXoqoTc-_B;=zI~mYo$ubgqb}`sduC>)TCE1Wv9rgjuC6XUJ-xcRnj}fL z+dZ4uIVZwsG)6^5b$53^eE5+00KkMt@a@~TFJ8PD3Wy#X=!PT7cWK-#A>zTIL@w9RaNEl z`D8K~f*>(5F`qwwrtV3KgoFfUnf5T1J>({diHQLKSS*&>+S>8)@#oK<2ZO;qd-ebT z_+w{}6=#4U-DPBC2#KBT9LMoRix$y#&Z*=V93LOgsZaWPVoj~_qIw4q9+ zl1L> z-@kuP_ukyx%-o%+(WmfuJW8dK-_FVQ?c1ZGqFgSQ-EKFTOw{y;5xYbpbjpOp&P1tH zj*N`ZL+9~$*md{?v%f(WPQ(&1K0Y49u>Ab|&d$#7-@jK>RJdF&fem->-kq11_u<2b z(b3U2Z{8RThMzxwf*BrGQd3i_tE+>-U~g~lsZ*yY;Yir|ADdDj*(Q37uHf=g`B)CnO}awzh8Fx>aC9hr^MSl$4#F9UB{a^ytyNyu5`A7xFhLD=TBZtLy0KxOC}K zAP`U}6c~n48y^5btyW*Yd^sm42Sw3>f&$vk#AdT)XJ<1lGMOwZD~o=QbMWB7qN1X> zxVYNd+NP$a6)RTo+e5U`PyH5)rKP1sqtR^Gup#W&Po6ya=+Ps&Tt4loSxD?5IGxVn z;bE;-i(#1AZ04*J#$*YCxyA}StjsG?Qc~{Ty(`=f5dw(RVFdz-EHDuvqJZNU+7Kr6 zTWEoHNO-^%5h4m;B0@v~Ohkw%fQbkZ1ssQ!`}gn9y$;Acha(Y + + diff --git a/master/inherit_graph_79.md5 b/master/inherit_graph_79.md5 new file mode 100644 index 0000000000..355c0749f8 --- /dev/null +++ b/master/inherit_graph_79.md5 @@ -0,0 +1 @@ +bfdc5d2b0da54149e237881aa7d19b82 \ No newline at end of file diff --git a/master/inherit_graph_79.png b/master/inherit_graph_79.png new file mode 100644 index 0000000000000000000000000000000000000000..47ab08d37615ba41b725b9245c5c8bf3f2482037 GIT binary patch literal 1678 zcmV;9266d`P)8Rf zNz|Ka;fungKTw24B}Oj{BbO<;G~YA{DoS5OgD^q@A#KyVp|(-WH0h7Ky*NKE*X{0l zx8I!i*YEkfI`{FM=lP!JKKGn^wjsrF93Y5NQO&gg1d##@6j3x-popTu0!0+fJmJO5 zmoKkfyEa!+5Ci}!Dk?T_-ppT4TS140hT7WN(k=->{-Ld{ZD?pnXqgw=skOB=U3w5? z8WcrES@0bcQ8ZYfh@!y)MHCGdD3TZ>BO??=g+d_!uv)FRZrz&IaI;>ZX_y1@7c=Vx z>ht*y9z2*@pSyPLI)40k3Z10HVH6uTZgjid!f@1do<4m#tKp(%WVKq)ojaGpi0J{h z`1Ij&xi|qkcI=pIMgIYkDNu{Wa{Bb??c2B0G`(icn#YeH6Z_cMn9Jod8jZ`AEjxVp z@WjLfOyA<;4ICdIcez}8y?*J^r3}Li4h|A~b#?XX)vIIMqUdxweobOomZGR|I1B&` z!%!5ZQmKqaKZC!+FXhU1BslX!C<9v)^GhNkIt>()JZ@Ich3gy5>G zs)B-o#fulWw6x5qEs7*p(8k8b>gwu|kr9W(QCeC`W>{KU`ug?jj*gB%Adr`r_x$;D znFAdTM_*rGXJ_Y!4gwvw zpFhvCtle(kvu95*7>wtkrKKe=FR!7Yf#W!z&lj&-Nl8g>Z||EoZ^)(F?Jg)NFc=IV znUh#~GQ-KqiRj$zc6&xfMt^_*!-o%rFA_o|1mC`W`{Kom#Lj~_o0`_$AFP18L+JrV*63k##R zOOE5TTJ4i3Pe_~i{PN{XRG-?~TD#pI>qOWV6-n%sm6g1!wQJYjym?b1E?+Txh^Wj5 zgF%kt4jede?AS4m<06rWUaxOzYU2Hf<|LlH8N&g<*|TS3lPS!JsPq2*egGI99VK?M zT@dm7&6O5R7HK&EfXCwzT9RBrGcz+uL!;3Ez~toQz`%f7tu~v@i4F_|0sx@ZYRS<- ztyYhXjgf6GCA7A-=H})uTC|9wD3{B{vh0jQVnvcmlgY&QF_}zqTnUMKsFp8Z4ggN4 zv$?tX=g*(do;?eP!~6H|2LS1u#FHl-E?{rh*Ko_WY^Ao%@$olX}oE&!-hvU0m~=gy3b46oPgcDsv;ibz=`krSEW zAn}~&bh?R&34UsRzdyE*wBXop*yWS50?o?GVi=~pyu7!!_v_cM_4V~$uUF>4ef##6 zm6g4F_wM`m@2_6Hve|4ue*Az04@nk_rJ>cg>gu|>y1sq;cICLaP3FMH#>VXI?A^O}XJ%#|J$kgPtZc!81=2%mYios{DZYLC_R^(Gp-@Px)iMl2 zHc9|67z~#$UoI{#rfIsOqJp<4$Du=qs;a71ty?_DSL<%0jp% z%RD6gKgr3-xqJ8ST&wuYfm9um5F|Zdfg*}VktKMA2Y@B8mnJ6j3yP Y02K7UuPbpWJOBUy07*qoM6N<$f~NC1qyPW_ literal 0 HcmV?d00001 diff --git a/master/inherit_graph_8.map b/master/inherit_graph_8.map new file mode 100644 index 0000000000..c72f1a2408 --- /dev/null +++ b/master/inherit_graph_8.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_8.md5 b/master/inherit_graph_8.md5 new file mode 100644 index 0000000000..62d869b3d4 --- /dev/null +++ b/master/inherit_graph_8.md5 @@ -0,0 +1 @@ +dffaf13abed23d079feca1254a71bdf4 \ No newline at end of file diff --git a/master/inherit_graph_8.png b/master/inherit_graph_8.png new file mode 100644 index 0000000000000000000000000000000000000000..3a3881ce2b0ee16992c62cbda6bd27545439615e GIT binary patch literal 2589 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 xAaHeW@fr+ysM!Eh0-9vONdI3JodiZY + + diff --git a/master/inherit_graph_80.md5 b/master/inherit_graph_80.md5 new file mode 100644 index 0000000000..837f4fbd7e --- /dev/null +++ b/master/inherit_graph_80.md5 @@ -0,0 +1 @@ +c2a73e0267257bead50d345555198133 \ No newline at end of file diff --git a/master/inherit_graph_80.png b/master/inherit_graph_80.png new file mode 100644 index 0000000000000000000000000000000000000000..1c98ae24c8c4ed606165a2f35884ce393eab98f2 GIT binary patch literal 1859 zcmV-J2fX-+P)mUMS{Hy9n1oaBrstMH1OpQ z=bDC?$ZD+@dNGOwSLm`9MN^h$*{1bJ*b7=zAUF!m%nF>&mn}+Lx-7SHZTtOk`CV>% z`{}yXFFT*V&VBCloIU5+_uO;t;R27xgFql;K>6JXKo$;AOc2t5VuFwc6cdCr!ig7M zU0pRbHNPtr$RCGXF5j?W1Ah74lgVs0x3;$a@{}NdB(1HjX0w@S3HNnsX=(XY`9S_) z003SVxMzZp1{4#7G@zIuqyfeBe<39$rLL~-cW3cK{B$ubfExWg7Fcn9x|j?GLve92 zxqWWkx^?&N-9O$50000G6&1B^-MXt+uZGqSpU=O1`7(aV;c(PyHPK<|(xtd!yqteV zalU-{0{jsk?&r;&T>k21P9~FiJRYmnx^w4Fu~^*S-~YQang?#T`@w?;5{X2qR1)or z7A^Ap%l7Tti;9Y{_P1}}yn5KXckixUySlo%$Vw>`G4Xi3qeqXXr>E2D^wq0Zx3{-r z_UY+qnM}sza${p-OG-*+W@eD@pX7l8KY#u#lgZd@HiN+s3WcMiqnN#_s%quRmA-Ai z#K*_qzkeTVTPzj;fX!w@5JV^x0str!3YW`0dGe(1CpS@1QDtRi0Du=SUIfp_cYt|$ zdEMRJJ9g{<0Hma(1h1Q~bD(AJ?AfziE;l+lIyE)5r>Dp3?#q`i4<0f zo}QlDw{H&*4<{!lKYaLbj)7va*l099dh}>)Y%C!mAuB7(?RNjjsED++wRt=qr_*`! z=FNtNhUVsGF9*Bbe*XM<005uQ$1H*J@g3mx>(`T$leJo{$Kx>=48b#*qw~PPfI^{Y zYHIrM;lt_Er}2cx$H&i{Ig^x>l$Mrev)Qg)yJj+(Dl03wTyAKUNlZ*ssZZ{EDY>@Js!PN(IqkSt-SXhW4h(sd!^yyQO z;t(M&bN|Wv_wPj_5rQCx4vx9!3y^#bROm#IUfi>FMc_k&)06^QEPwB`GN>CME^|Ad|@~77Kn0Q{=?Ngh(Vh ze*C!0LqkLJ z4P>*~6bi*^wGuUsO_6y)qtP4=2iBgLn7|t24N(*|8jbj+)oPuZnnF?3uX7+oBGJ8j_ntg?lAfNPmX>C> z+Ytm|GMRh!?0NR=+2hBL>2!KtULJ~~M~)l`dE&i#^-3<6$H&K)m6f3=+S}XP+1XiA zQo>*`LhFz;F)d%dTqqPurP9~0Uw{1gQKQkcwYAMLaND+R5{YDBV8Cv-KYjW%D=X{k z*RRMtH{d)TPpj41Y_`$S(E|q#U`B_-;dZ+hFJ4TgQVj-!N~Q7}%V01R3PojQ(;HAnHjU$Tv}S1n3yOK2(Y_e&VK3W=s0xf(BR;p z)9G}%T-XqZ4r|t|Q7V;VV`CbP#%wlYo0AZzudjDF95-&IojR4DpHHXL<#IW0_ockN+-|pPwb~&0_#NQ>{rm6Uy-TCf zuotwPoE)`UT~SfNWHJQ;L3nuhojZ3TA|kL~@pAUdrcIj|3`S;VW^8P%N~O~4^)WFq zzHSr>Wy_W=4Gj(W%$YCM)zud+T-dmAV`$;N0OGo<*XyzUDOtTk7BBz+olZwQnE0y? zEg|Fr#RMS@C?*JLKrul`1BwYk8c<9S(tu)ukcOWRru2IKug?Rr0PrKG+}zw>p9f?C x0N{Byge>5m2|^lBOc2t5VuFwc6cdCr{s9|M?D^1#vF`u?002ovPDHLkV1hKilA{0s literal 0 HcmV?d00001 diff --git a/master/inherit_graph_81.map b/master/inherit_graph_81.map new file mode 100644 index 0000000000..88f78827e1 --- /dev/null +++ b/master/inherit_graph_81.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_81.md5 b/master/inherit_graph_81.md5 new file mode 100644 index 0000000000..13f760b701 --- /dev/null +++ b/master/inherit_graph_81.md5 @@ -0,0 +1 @@ +2181a06616c73b42eb9eb269cdd52c0c \ No newline at end of file diff --git a/master/inherit_graph_81.png b/master/inherit_graph_81.png new file mode 100644 index 0000000000000000000000000000000000000000..41b21f986c3092b1b9eb06f1f3f44bec71264476 GIT binary patch literal 1708 zcmV;d22=ToP)HpHnkN=VlZ~ad94QMg7s%FPftw4C%bKNsEa} zK@uU7sIelkqJJ8sfr(LxELcQQbNQE%L*ckI}4>(;GbmS>n&T3U)>nD8g(_3PIdhT%9aQTNi| z-~F6AaNq!rPheH%eibkV3 zfBt-NadBQ=-i8eu9zT8zHPfsnwpyF>1m$lwOXysW=miA?c2A8h6akF z6bgl2ulM*w`2VAQ%ktJg?X50RR|=(KLPW z;>B1j#`FBAPoDq)uU@?pO;S-&5#JfDR-39kF)h^+7=~$XZl);e`Sa&6Ek8g1`t|E8 zR;-9OP1+*OcBRVaIF4o6yu7?kn>Jm&dKCaLIXRg|n?|EKd-m+!y?b#SzjyCmnmcYb zo6TmkFe1@6a3f}BW~^2#K@d=SSy|cc-MinueH#o0ySlo1dwcl=-y|(GnM^FpdcEFI zD0J%7sjXYLMx#-Fo_qs|L?VNOgDREk?%lgQ&&Oi1_3PIkJb2LMa)rZT;XK>7Z@1g+ zqRB<&iD{{pz%b0YbLXs9>(Qe}d7i&<grS~)v{&FbUIy6PY;YI^-W^A zFfGjzpl`;<#}x|2=g*(jYIR>|2!dc)wx*_L zW@d(An9N%wZda;&zu%AJ`0CZGVSZs@VJ6xrikih%3YfQZF-_CaXmn&`WVVF`1qE4I zS%E-6XlJ9*INNz-G8x=f0Kmk=1RRWyk5^SyUAS=J#~T$q;05>A{r(bLmYTU(1^m@uA+!c6i>lANBN4g>-)&Fl4MqD>?w zbLP!A6h#>fhGWN$y?ggA6bjjFwucWNW>{EOR#shIJv==8{rmS9FJ72TrXN3k003HA zT2v|(OcRcivSrH_yWKuDH8naq+SJqpgW+&E7Kx7*#`-VWn_zu#yy_V@P( zgTYWJ)YaAH^ZB$|EdXHc+ODx{1Og;U8VrU*hYrCsnx-#bzFbvRC6~)B7E3%% zl4NadZEI_*QmLdU%4W0K?e>zA5&*!NGiUnx`eZU$QBhHZL}OifKG zl}f!{5C4Llo0~fqZE3)G!T&RKcXz`>)*L5A{B|BadUWK-5qO%OJJ5x~7i^Nee}ni# zaX1_~IXV0H@ArDWO-)Uem6Z$E>)-vp`0t~nq{QiT78Dd142FIC_O-ROEnF}3y!m@r zwQAM<`}Y^87kb_xq=0;bkOJ}zLJG(?2q`2v7k77eFTM`MQikKWb?ep%BT0NCe7OXH zfSAo@;U$K?9Y#n1oo^6QK)yjp0r>_Y1>_rq6#fG@@Z8IsI} literal 0 HcmV?d00001 diff --git a/master/inherit_graph_82.map b/master/inherit_graph_82.map new file mode 100644 index 0000000000..368a55dbe8 --- /dev/null +++ b/master/inherit_graph_82.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_82.md5 b/master/inherit_graph_82.md5 new file mode 100644 index 0000000000..c562149b40 --- /dev/null +++ b/master/inherit_graph_82.md5 @@ -0,0 +1 @@ +9ff0a4a293bdc2f9ea37511c53e91194 \ No newline at end of file diff --git a/master/inherit_graph_82.png b/master/inherit_graph_82.png new file mode 100644 index 0000000000000000000000000000000000000000..be6eb1246de8b215dbb7f45d4ecc9d262d65eb47 GIT binary patch literal 2212 zcmV;V2wV4wP)m;S7@`0bo641HTR-qDQX4U z3nqyg8i`r`laK}`_9kMmkiwSvmz7iqL5Qo+K#M?gPPb+1N>`c%bNBbhfpve|-I{l9 zPCcK$&V6{EbDneV*L#oWK8g_p0T758;y2d`Am$}VHwZc)-5}_Ibc3J+gM886-hTc1 z^|?v~;me4{;=;m0>*fERH#(i}@#Du{PYL1csMYHB_I9#`Veiz~*yyc%5c7l7)KnV_ z+TS4PfOLbP1JVtG4oEi$I(S?+(b3U&@80$FCQkpq&2FCw2?=MxsZ{#<^=oL~v17-*d-whs?xI^lLIQ?iaImnju)Mt7Ljwtg!kU^I>t#(%jZi4`&{*DsAfZyJY%G+BM52oq zFUH2kvRJGQ8#X+D{v6s(CR2WXK99!>4i3)F&YqZZVT^5sj|*6DNrfU&VLf*|B_IRF5|FdmP0 z<;oR{#X=Co*RNjz0Po+wx9KD;EzP&)6&vlTd&vW=H?0nf+b6qh{fWj zrY2~o)Qx>O+0Drmpl*hThl7HGzJ2>96bf5fS}1j6KLq7+Ir8uA?X?PpAc)r1R(RYPJ6U{(L@vrh)za{Qv+Q$1x1UFwEcI z|HqFXTCJ8|V)isPHg4a(oylZk7*@#)hilgU(9SNG(}6Bh%Ml9IBrvU+-Y ze*OCO?%liOSD|`0r zAqe8!xpOvYI~jr!NB#nVKr9yL<>ifzj%qZTl9G~tF0VVx=I`P6@893Lb*n@o2@enN z=;(-zjdd}wzP^6brcF|*l*8fV<>h5%Wi4I0)OkpCbu~uf!-o$Q6%|IK5yx?bLUHKO zA?U{A@vdFFmXVRcX0r$8&OWDk>`Yd_I@Ut*fh3DwXl^@c@AH=g+sav;+nQ zMn^|G3b%2iHwEVz((qTQRO930d_G?;m%}gE0RaK-fJUP!E-p?_Pxstdi}$>E;SnDn-`Lm~ z78a&ZDB|McDl02JHx_!{EF4y@T>0?fL+^}*o;L_OAl)G7;9I)!bZx`$-@h>`7!2z7 z^+K(Ja39~&ji+lHmMvRmJu^Lg`0&Y-Ct=&k5$(dPf^eI;(GBH6@bK_(UteEQQPJA9 zYgsJT{{8!(K79%RNKa4i=;%0p{5XbT@Q_WRP+%D5=jXR>-8%SXj?!&nVxpj+AS^5_ zI5=3LP{1#*l#Gmw9654?!{Mx6y*e{9lYHzUm&=VtTvxta@C@n4Bw{IVd z#q!#A_%Gzo7A}4dcOS|E39r>QK*-OVn3x!uOlB|`1_uXYV`F798MH5qDhT(PojMB7 z;howBh*dZ6TWo)SKeTsucLM;veEC8wlqv}KnYB6!58=()1}i$9j=^B?cszIsUz+fS zK^9&Wg!}lGZmf8xwgD0v8frG12L}h?<>$|zp^@yfz^WkJ$A|XC-mh(dgolUk-Mcq8 zH+N`gNT<`~=jThM(vXl4vd;pmf^Z)ndfv=oZG%dsVltURp)fKs636lS`g#|0o~Kn1 z?t|(me399$f^Z*HN8!78vkJm}eCR#3$nj + + diff --git a/master/inherit_graph_83.md5 b/master/inherit_graph_83.md5 new file mode 100644 index 0000000000..4cf50ccef6 --- /dev/null +++ b/master/inherit_graph_83.md5 @@ -0,0 +1 @@ +fb8e58a5cbe4949a37cb16169cc8c153 \ No newline at end of file diff --git a/master/inherit_graph_83.png b/master/inherit_graph_83.png new file mode 100644 index 0000000000000000000000000000000000000000..dc008390f16c64e8705ae2fb35ad6f0f0e10e99d GIT binary patch literal 2227 zcmaJ@X*65w0zFlf80w(}y{6*TP*b_a(5o7y#)u*6iHN4OHC{thDh*c*rSzgfgSM(I zo*^i=+J@G2iLqh`YDf(wrWh`+JnrdwYrXZ}pLfn$`+PsXb=Lm&xA*?OG*@RkF^D__ z001%jtF{OLI3Wa%)rI&#G#HxQ0Y8EP*X(S87WTRrVJ*Y`ES7J~!NkQ(Of0;Eg4 z)V>mDfV8jhQ|Be+^Oybuwdd$T!NHn3Iz0DsWeH+-Z*T9@r^;;%B`bsZ$heS@wJ;Z9 z(taCrbhKw7lAZBGoSTzV-$u_V(!O@9es7TAE>wtL;P?Lmq9~Dg9KW}YqD2G-^0(Ed zrKPF62xDd`3g`6oH%F_kx0pltXbrqbY(rzChPwKNwE_$Vv%I`)9hXX>jO}v9(k_OE zhT>p45<)!;2GMXwGT^vp}$ z3*S5;7)hGyM5B+j`Ie)a7Z(@z_wi}AHdJ)uoq{9u^U_i& zDXBT{(jjP3c3xgyVd2E*&vi&m6!!ZXwwDG{$mBZK9W;8TvlDJ=eevQsnFn!}(>;0G zIXO8VT4(mTo;}P?77Io5?p=s1Dk{37Iy5*aK^+(v*yD0lvNY$yO$Ul$N!Vl?5@wvq zlm;%TNn)TlEVk_{cWY})hgSf*Q9+~8!e;2OyF2H}7!rvTjtUK3fB1t1l}c5##QST> zlo<+w#Q#|T^6utYoA$!MeKtElF{>+pW@BSBF*!N+ zqFe(01}cuxhtlbE0RaKKhiA})Ma=FROfzvd`=jT}^LKk=I|(!)cp&-K&NHVg(sf4EzQC=`uawh7x~p> zWn_qoi?6S&Ahhz-)z!0G?@cmlD4=Vayh; zuCB(pe`$`sjY7$}K}<}VD0=8yM)HN;xjmZ)y!7<%vXCx?uZ|nw6E!tKA;9gmv$H!q zJQUzN0r(RLRC;=Gv0{9Dd^xhhv+}x+PhEZe9G|;N#x0cxQ&Ur-z_<1Fm*vc>O709e z91i}FkB`r@$|sLX<*_?N&g+S_yNJ3685NSrMMXls z3cYp;>Q(Ja`r6%X58StTc3-xbPPZ!UfOjf~{SwC3L(^O1syrFEdJ7ASV9DA~(CkXD zn$Gt2RvHSM?LOizchXO&8yZl6AP+1p&ChS*-}88cfQdlOKMxO20Hvj+;fe|Rg~nt@ z4J^$Y?(q3_2vP(!KRxXS+(&8|duXCS?rb(20JvN(x+S5^*RfL)3xz5vWu>M9!2IH( zPhIgHQSEq9Sy@?Af5QR*c;f>zH4VCbo3pm|VLTJe3?G2U<6G%HqoXl694j+4;IkB|1wk9hhld9c9Jnr|`4?>h#&I}LdSjl7>#;#9AL`6AX zyOyNqWdF?dytmF{6(zQtkq5Y%!@Z3X%Q%FxgqoV#d*X4i2LD?b!$Bk{!jB%Ba_$T@ zNqevi?Cef~*0i@L;Yx)=RD7x$X*2^}UGXk%cX#&_lQ7)Po7ZERzZ%c@`T6-&#rXUC z(-hwNR%d4RwYT#R)eNpbNbC-jpMHnMV#D>#&F{{(l0;;6MNgmRL^VHuu6lWf{1uNz zmtYRt+kZinw?|N|(law@0pt=^e)^SC$ApBV#l9!8YZGNit>724;ig)7J+9JR!9sd^ zYHBLD`C~O`uoyyT==VZHANqxCxsX#qqehxiqdB8PuN{~vxPr>c+i-a2yV#9lYhpjH z9%K@6);e~bIwIQ+1_aaWzL*2wzfVk!yArorSkmdU5*w~HLRW+iv zjno6UoQ1`^o*oBl>y{#m*oT>!1;2ipoQ$7r4C%^J0v}3upqZK3Vs4s+Tw;J|jIHVoH_`#-D^48-s1!jO&vhckAo#U$KV? zE_49E6oOB#+q{d$~ zG$h=+w-EVOQ&Spp1?;b!oMEzy zfXYzZRFRNY#w!0GaOJhxMMv*$44fqGS3cE;J399Md)zwsb0~kJ=!$`a5G4D5;poJ{ X(GKSgpYIrW3jyq}INMg+_$U4a$K5b$ literal 0 HcmV?d00001 diff --git a/master/inherit_graph_84.map b/master/inherit_graph_84.map new file mode 100644 index 0000000000..f08453fac4 --- /dev/null +++ b/master/inherit_graph_84.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_84.md5 b/master/inherit_graph_84.md5 new file mode 100644 index 0000000000..0c212ca4e8 --- /dev/null +++ b/master/inherit_graph_84.md5 @@ -0,0 +1 @@ +fb3f56e68333b0b1f3d1b9985006b663 \ No newline at end of file diff --git a/master/inherit_graph_84.png b/master/inherit_graph_84.png new file mode 100644 index 0000000000000000000000000000000000000000..fa0fd65af3e7a9fee9c04cc1b120477205f6c031 GIT binary patch literal 1892 zcmV-q2b=hbP)L}Wq~O1N=290B#a=*&Kkzjp?O@^8mv zGNGub$ghoFvs0o5Dt1cLK*dgp8mQR+rR3z~prN5*t*5bSxZQ4)l$2oo`t{hkb7w?y zuDRI%_Dx+b(Y6lHo;^cnXD1vE2m1T_Ba(B?#op1;f#b)IM=W1KK><#mKD{cjB@zh? z2E(HMjT<-m2st}D8~5+u_wiZHbtot(0K+g~7zPOm3CPUM#G^-#!k#0Pb?xctfkL4` zQc_Y_=MjuG7ds^~==FLKLf~{dapJ@YXtmmiol*TUIXQ`S>()gyXIR9Zm6e4{mo6bM zFAqYY5ZkwJ$D22AIQ!Jp6!dyMq*5tTQc_S}UXJPMX#k5qzL$#i>(?*n^?IbIrz1Hz z87h?ucDtRk*VNQt+qP{1+rikhX%pVQeap2S4hI;9!NkM_06?WufngZ%csxj@QdC!0 zBh-ILA3l5-U0q!`dh{q5hCxnFj^A}y$gNwqAeBmyn3#yYd-tNdyL&}7CnO|5r_+I9 z81(h^ExY!m_GKZ#{8cIy3G5j8b6`2PJnv|24R8Vx4|jYfm+?rywz@d7rR4RX00@7}#zQ7o-i3yZ~q z_wV0hcz75Y85t-nEQHtV4Ob}vF`LaGguv}~nwy(Lit+gIW60%l7>z~{ zLeSCCvE-P6fdN!jR-&n?2|s`S#P#dfL(V&o%jLqIJ9oe^46?JcLmC@wUqbOWo6XSa zbSN(`2O$L2)ztuiLx&Dwa&i(qJw5pN@grE4g+`-UQJsDv3utL+A%41pvU~S#a^uDg zu01w3MgS0p!$ItJI{`o}7K`7p3Wb8y*VivA7R#~(0Qvg$D`)q3JVYoIlHT6lWz97| zKcDFJdcQWYSWMd5+PL<7zVY#Kzy5V~b)=}Mh-;^(r<2>aZ!hu_i9|j%%H?umG#Y(; z7OulT+h4wXA&H5J%dT-D`T6+-0C({Dd}216eSDUxJ=ng?=lJKkF6FP&=}38bIcK+8 ztpotE*=$^2Utb>qK)!wZw(MGi=+_jsGka=kD)%}*J{|xtGc$vsp&`V?#9-^zt$!TL zX0rhR#9}db!xa+~gQ=-03=Iv1p^D(Nwzgu=o;?r<1Yj5jdc7VFhl8`n#l^wxb}t$? zJ39+LpTFX~QmGWp&CNJ__AIiqvr$%7hEJb9g%o4{ntgP16l%2^moHz2$KwepMxcEO zhd;}*h>eYfL?Yq(<}bxqmJMm1fmrn$REb0akH-V6)%wS=($mwy({UG;ll^y<>etaHy19KE95vEHf%scLj$Z)*|G&Hl?r8LW%&I0GbSe|QD0vVv)R0&SO*RqKxt_y z1_lP;a=Fmi*@?o!Lj3;y8^E94pk`%d!DuvMVqyYzyB+7xpXY2dGc)jdy+}$*0-w)E zM@I*0YioVRA3Jso4_DCR;$&j0y3!P4fk&zLwEQ?d8 zPC=V31%a@3Yi{t#xojZqDuU;WOKA!tFCK&tn?L%^M zGL%XsQc_Y-TU!g0$pnEwum&*mC(Fg!RYmXEyEiDiT1jx+Hgj_C%SS&_k zV`JFjGlclwPS5{ElF)|^Q2v7i(Jy_v03~{$Vy8q6RP2 + + diff --git a/master/inherit_graph_85.md5 b/master/inherit_graph_85.md5 new file mode 100644 index 0000000000..3feab3384f --- /dev/null +++ b/master/inherit_graph_85.md5 @@ -0,0 +1 @@ +d8f71d6df88e0d4d2fa5059fcba1a86c \ No newline at end of file diff --git a/master/inherit_graph_85.png b/master/inherit_graph_85.png new file mode 100644 index 0000000000000000000000000000000000000000..920b491d21ee521fb49c673e5663cdb977a3189b GIT binary patch literal 2592 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 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_86.map b/master/inherit_graph_86.map new file mode 100644 index 0000000000..c2c97c0fef --- /dev/null +++ b/master/inherit_graph_86.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_86.md5 b/master/inherit_graph_86.md5 new file mode 100644 index 0000000000..c019e2e026 --- /dev/null +++ b/master/inherit_graph_86.md5 @@ -0,0 +1 @@ +0f840d7a567fc7cf8bdf13c7ece758c5 \ No newline at end of file diff --git a/master/inherit_graph_86.png b/master/inherit_graph_86.png new file mode 100644 index 0000000000000000000000000000000000000000..4d43dcee89e77d36c2ecb859bfb5e72b858606cf GIT binary patch literal 2217 zcmYLLdpy%^8~>5Btipq4NR6D|%vkv>kK>3XhYr}H z&=irFMdnNqMGq|^(u=&m{(0W}{@nNV&wX9j=X+h(_quMXyXzS_8K?{Z0CG-P3?7sd z;L(;61@8ve#$-@PoOeEh0rr3G+uRxk07wNmVeC8;%Y-EqEMr!!cW`kyzFKFQT}KvR zi$36kHV##14q;^#;vGCZB5Frn@-*9Ri&1ccf}0QUro(mTq%z!Jgr>7-CHS<`asGfa zYANK(xxI9&f~Zp_+T=ci8>k1dp2QC!Q>t@mShcXx5l&V`ok?udiZ z(oIcG8uC;pCnuRK(W$pHGdVdqHw_*~y{-2ueeIueKImD>KHXRha$)Z8{$;l7jZpK_ za~>XAg}i2^CLeu88MiWIlLY5NXz1PQYNzVqwzjsrckg=CxIXB-gB=OqE1y2~pJw(h7^~zmEiXgK zjy5PA#*d$SJD^`sO(H`CP&s<^RNRMb7E3G5Hk(R4s-`wBQJ$aQMEU-OUuxk^AdHQV zufA;`pPDMcRUfyxw!679{>-1e*P45bFD@<~Y;yEQucVmRqn4Is|Gn+63qLlNoZxtS zd(nJsZf@@G#}NrCjmBwgM8 zcKPfSNJxyO*<$Xs_=19hj*bp(ZEa|tBV1kt z(A3h>)zzJzo}T4WbPI52_5T{n0}+D?eIMg=7}R(-gyQhUM}dx&HidRzvWEo%HFV;d zaQgAgjK7LLKuk>BUgVcrTU)24rNy=GzJGDu%E}4^qRZ&xopX~a!0`tM3;Ti{9314S znT{-RF|oBo^al+N+DuAJG>zV){_fp7i>R5@kVFA5*yIU0yXQRfWju;GxU_#qD{0ge ziIfuR74%O{wXs+Wx)3o*Niq_4Oe-IIzoFrJ2y(HzJJYq)?{O69pmTk0P91Vxfr^3V z-DR_f$Ho#uLthq|zN`}DoMyd=zkK-saFs#{YUXehfVGc2WfkO1?w<$*qLIU4VBw88 z&3qYI*?c)EvGjz^o8+)-{yvedH8qkqdRH0(TwD$U>gMJN;o-PhxeWCii-9I66jVt` z0(kZ6l@E>rq}r<6`VyXKp-`x<^y+GDz_!kFYjd->xVW{w-S9CfI@%CO#lpLuP7DmV zRJwoL+|UL$2THK0SAYk zNzR46-QD^5dF!NYKSl@zOjkEv-f)G&*T}?LA2S zLvnI;qszOyNx|>3R}O)k>mIoj9fWL**H=hxm%mxREw^YVnt%Oy-^^3GNySlTl)FrUSW z-=KK}JYKVqx3jY|$h4Hq!&T!S5T++4ib_jqn5tiR3+LvD6v|F^wiMXr!3b9%LBP7Y zHFP=z5har)ucA^^R)#h+gBRf3Dy+HDv(_N(lD$n$Omb+n(vp%|Prc#eYHEQ20Y5)a znij#~Iy(3|PZSfo~NFg)m69>t--&wit9&!td9j=rTYW~KzK0<>3t0U6K*(MTx@I;heP5_f;onA zVQ+|Mvh4HA%UvtoL1HppQ~vwyUzZq6rtr&`hk+0XWQV7Qn^q$4dXdOyZl zq0#yV2H=AV^p$m9pg@J!f22@$h + + diff --git a/master/inherit_graph_87.md5 b/master/inherit_graph_87.md5 new file mode 100644 index 0000000000..2424ae37e4 --- /dev/null +++ b/master/inherit_graph_87.md5 @@ -0,0 +1 @@ +57fc5b79e5b187a093adeeb2dcab14e6 \ No newline at end of file diff --git a/master/inherit_graph_87.png b/master/inherit_graph_87.png new file mode 100644 index 0000000000000000000000000000000000000000..f7bf3763a823d46a1f224d986f24d0abeafd2624 GIT binary patch literal 2250 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 Mr_*OJJaho + + diff --git a/master/inherit_graph_88.md5 b/master/inherit_graph_88.md5 new file mode 100644 index 0000000000..29dc5d9ef3 --- /dev/null +++ b/master/inherit_graph_88.md5 @@ -0,0 +1 @@ +9860ce1f00b75cb6cd78b1525c52c79d \ No newline at end of file diff --git a/master/inherit_graph_88.png b/master/inherit_graph_88.png new file mode 100644 index 0000000000000000000000000000000000000000..32d0e2d3cdc0f3864eccd02807964aa67ece2b5e GIT binary patch literal 2190 zcmV;92yyp`P)@VRby*oXbLwWMnNCYr>h`>U9NxWabG^FE zMn0dv&iU?hh+z?6Ld38LFd_a6`1$$WxN+led+}TRaUuQ#V`Q29V*~rgg(#6ol9Q7c zw#~4xu%kzh{!RU122M#Qn z4|#ccc6N4))}20Dt@i2DryLH4&*$sgmn~a{{+H2ya&M=qB;F);yt-a$-N{Pyh| zkH@1@sYD`?$z=BS_CkAhcJ_u18;sMl;_U4Fh8ixVX5MmX>|{_8|!3=jR6i7#bSdvu6*9 zL?V;PY&LsjWJDKuMn=Z=?b}zZSW#J72>^Ki{(V6~fj}UbvMH=jf{-cYPG);l|Hq#wJ3^CPfy>wcdw+Rq@tn%0D!~cl9Q7~A`vVzH8oXIQUaGl zQ_dJiS6Nx@} z8jXg{X6NSSIyySeF$&|pW~H;UGd(@MyuAF&moHbYT!Fy?00svK^YZe%yu1Pf163;3 zojZ5BySp!5yhx|h%^6bw+}zv*0)bMgEG#VS>gw|J^b80H5DJC*o6P(`^$?5229{ab zvSmw7P7X}NNv~8Y;mRSC$qWkn`ud7QqF+>muX_6X`=MQ<(GUoP_V)H)I1m~d%H#12 zj1&r`zP=u&VVk3)qXuR2^Yde4V_~|#zaNjsOC%B$MJp>SiA3VW#DpnlOhu;?2a2K} zK70TG$mMdFef|110N~@tk1%k!7(=qMvY;CS0|Nknwzf8Cr&6f}1qJ%;lgVV==;`-` z{yea{ba!{Ry}iBh=&{*s004)>`TF%MIydyU=Kss*&z~bAA^-px85wga4*(F0#rhUA zS40wt1QYO-qgJbXdU~v^tk$nzKi`USxf}pMp-|wt*viUke0;p8r^h_UjH#}!_VV&_ zaBx5ngvaA4l}cz|yLRo)ojZj>Apk%q6tY;X<;$0wa%L{kDHIAk9#5muU=|)EbZ=B$ zTwGwHqobp!sHmWzz_%d@bU3UOiXJ_x} z`TX46T&Yw_rBYK;Qkt5Y(1rLiU!&2~)zz`tYzBidGBR@g`t|hmbn}{8u!j{Iji%9P z;Hoe$s8lKrhZ`Oq)}J46dd&+vJ3F;n4bwwILohKoI2a!vpP89CFfgFiY6Sv;{<)jW z<%-4Pwzjs0h6cDVn{vifbU57q25{ZFbu%+FeSLi}+tt+tjWDZwyV}~?+TY(#B9RaT zadL730Bqg575;w=216#3=^7j!9v&SXWiS}Vef@%nh=|9JA3uNoJR~F}Ffed(auNVQ zCX;us9Z*|TTOp70$V9cgK4&d$!Msi_PGLn@UvH8pX$Tq2QZ zUV{rJL>CtqCX<<%nE3A9yRoq`kw{cqTRX>!yLRp3a5$Zvos*N3FJ8QejEwy8;|G}M z!-}V;XK`_{N~P-U?LBqs6f~;UYOPkga^*@J8yks4V(@Sf8XCH4)vD;|Xn%iycX#(+ zIAbb0Cnu-&_I4<427?h87?_%xIxsMxP$-TZIT9Wo4yC5g-o1Nu64!0bSFc_L03;

ir9+}zxJeSKj?{k}|5UtfRb%$csPuIcG%jYb2**Dv7i?#}1)`}+Ds zB9TI&fQKhlaC%fva_>;PqJdM*ulZU!^6Yd z+nYk6l$MsxdGG)LASNcJu&^*QGm}gv`}+Fg@%V=iA6i>m!(R>hnw6lSAR>_%9v<%K z=qL~fs;a6S92|^`;c&PeJ9d)&k9vlRqznKP_1KN z%nE`aVzF5N@@R=(Xk%C!m=G~60!)Y)76B$i42u90B8EkP2@%60z=Vil5zO+zV^vkv z;`@QI#F<5iv9Ym>?+3;b2f^N>U|0g!84<%Gz=Vil5nw{Zum~_AVps(K0WbuPT6*)z Q#Q*>R07*qoM6N<$f*=kk6951J literal 0 HcmV?d00001 diff --git a/master/inherit_graph_89.map b/master/inherit_graph_89.map new file mode 100644 index 0000000000..1a8497a3f0 --- /dev/null +++ b/master/inherit_graph_89.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_89.md5 b/master/inherit_graph_89.md5 new file mode 100644 index 0000000000..62610abf8a --- /dev/null +++ b/master/inherit_graph_89.md5 @@ -0,0 +1 @@ +0a246668941754cd3f12061b1aae8be8 \ No newline at end of file diff --git a/master/inherit_graph_89.png b/master/inherit_graph_89.png new file mode 100644 index 0000000000000000000000000000000000000000..954a6fac83726392c960a6ac2822a6e51058c41c GIT binary patch literal 1942 zcmV;H2Wj|;P)24xf;Hd3P)w*c zMyNS5o1vtVM1wNa6;Vspo9hiV=??{aL835RjOI{V(eia$OG<~CjbPh-{x~r1v)S5g zw;p@W=dW{q=XcJ&zw7txo?WgOj^hAXSs-sA$Rdi^85kI7 zX=(XWQV`3XZQHgf6bf(mU*B66i{<|P`@dZh;%`8w(+vy^5F=6kNu8aYze^9|@1d}; z&?kbT+n8oXK@$1^fAFbp#qjb!BeU@#a20s)OiTf$r-fy)ms%k`efTo!sqoYGs846WZRpsU7KF_Fr37kNC zd%I6$Q8sVhTwh-=6bh+S>iYHTA3b^m<8yO!6%`e1Hak8(zNDn&>({S1jtc|=jYboA z;{5!4MMVXR#iG$@+1c3>6B96g=FFLtlobEANF+LO;slGudinAtoE{$^f9cYt*w|RF z$n5NF004$zY&QG!>C+yM2gmWEq9SkM0)YTZs;#Zf$jG2jDEIE&^QyJkY;-#P)~#D` zHJMD7nVIQwxnTG0+qY}it~HrV0D!^4!6oDq85tR=si|QynQS(@wzhU`Y|JMC)&i-k ztJCZC(b3UxXnK0OxVU)r>eX~Q{ouiaGcz+GmG2{?va&KUF_FvVo;r1EbaXVJ3w$Xk zC@3f>AV!wxE%Us#U8>OG}?We-5w4qR8d)($Z4cCVDF)BO@y-%Vx7pO-%`f!mO;UkjnSR z<#IiI`0&7i15_$CJw3g(wbkKp1jzRiHg7dIH^cVq>?{DlYPC*IP67bTX0uPSkGK3M zS}Ya-fX!xuaktwY7Z*1)G!#Gp^w#wBG>t}^nVI47c)h*7i+T%k;lhQYq9WM#_m)zr zTvRQN;|&cB>(;HKQmK7?ecqr_sf4TfcqP<)i9`YbkV>WV^Ya0Ug)Hi=(a})=!1(w$ zj1LbF0{}jJ_z-;g0r>RkQ*Lf9{H6>h-``tHJa5tIbl8Ar2&dCIF)FCGl9G~zg$0pFwy!h++jg5^hEiFc)F*!N;@ZrP#{rz}| z?*LmYmZ+#GHk%E*TrL*|K`7<>;C8zoKYlEcNH`qM?Ck87D_4#mKOT}QFJU{&v)OF7 z+YNV8NF*mGM?^$?{`{F}dAMVKN_lyCS65eASs8|5#5g>KoIH8bZnt|p9+gVva=GA8 zM1*h2K6AZzJRXTel9Q8THk+?szYc>2g8?3`Fbrcb7ytl1pAWBosQC#A3CE5d8yp;b z_Uu_)T-?5W`#2mH8nK_yYJt>hry7__hK@c6bc2C$&}0G91h25 zH1_xRmzI{s$Hxb$$A_?ai^XE)g7G(s%FPef#!J zuh-}2=YRkH9RP6l>{+-MecE1j?AU?hxc|m-I-MSmheo5VSg}H<)2UP{?+}B*7#bS# zUh4oTl}d}nqSb2e-o0B{SvfK?0sz>*f4_GFc<*sdO-)P4_p)*0#>U3Rsi`TAMq{y9 z;K?KyI2_K-ojc`nx!rEJSS%G46=JcN!C)+{{A<^)Ii1d~t}e6L+|ba#;c$YK@gu_d z4C40f+nY9R5{X0{4(HXYS3;pM$cb95cEg4ZVzHP`ryn_TL@Jg3;_q!Xn|2Qxp8G_V#uPg~H?UQd3itl9IGqEm&&#&CShfwR-#Z?ZJO~U@+o6 zzN4c99{R$yI^zEWe8-0Pg4S|?x3*;>XSs-sA$O3r_K^Dkc2(m!lLXgEG z|3lW%(ee9rAeK8;tCh)Q5+jRvi};og0uej~1qH+|hMvMBNCKU=5M+V8g&+&$Ed*I0 cZz0Iy9|i10Bd`p@cK`qY07*qoM6N<$f{e$^tN;K2 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_9.map b/master/inherit_graph_9.map new file mode 100644 index 0000000000..17acee1f86 --- /dev/null +++ b/master/inherit_graph_9.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_9.md5 b/master/inherit_graph_9.md5 new file mode 100644 index 0000000000..12bb21b06c --- /dev/null +++ b/master/inherit_graph_9.md5 @@ -0,0 +1 @@ +9b6e63c2a6a6b056e4bb9b356648288e \ No newline at end of file diff --git a/master/inherit_graph_9.png b/master/inherit_graph_9.png new file mode 100644 index 0000000000000000000000000000000000000000..9f3a995bf33d2acad6a541ef5c6311f604049386 GIT binary patch literal 2718 zcmYLLc|2768$O9K4Kntf$Q4;aS%>DvNVZ|dGAd=)7)#a~yDVc1Ng6_ui)@wbTv=-x z8bULsxClq(nqEel)tjqwX- z1oU78E7WiB^h2WXWK5nU^pmM7WH~XuUlsMXun;QfB#O}>cyXyhM2=u;GS6C^3R7e9 zO)9y-lbTtZ1D{#-EcUq48|#Hl|IKf&i%wp#zj8gTM`$2a_6U6b<;%Yg9DxH5%uue- zM{ptW1IJM*7TU$JSaubgw8%)}ipP6%Ggmo5d6Qei zb3Vg?go>TbWqX_nRGnu)+mtWb66MPMzgiyIsZ16t+q2NRa@z(eovmVIRP@5D!L^YK zSXr4d*CJvW-%NKp^7c;^=i%k@>6rb&nq1I;RXv{WMW+@9pi)dsr5p zfileD<>s~xzUAk$9jt&h(-2=euTfNAuL1NnTx_#tGwF05;LFm|$!BpyV*BOs+Pb<> zS!B#cAQmeeIKg1}d3#q(e6N9+t@&7Ud$quxF5x#5)$@LUKvRtk)FBM`wrhVjoTJ|PbWkY2*-0N;h~}L+OAH& zc>~Xx4VZkasjBMn-O$jm@ZPt_kcWSSY7WPE3d>DD-&r zaTyr2f&aI+7mpVd6r5B?$xzq@)-c85P{UE1k)ho<^FQnyRX%gBV`!-rnLYytY#5`pupjVm^|qD2RJ z`0(K~XU<%melFJ*zhdPkl$Dj$)YR0~)g=Oku<(N=u;TUQDQ6d#*0wf2?xcJ7q>mz0 zR8(4f4Gj$qUl<7r3er4r zq9=-@5>(9o&{juZ++3bEICbjP+>ewLZb+J#n3$TH8c58vs94TCt;8riL>8wi%75}< z)t9O6n867Lr9AD?PcO4&7DmhVS7#|XatO(XwBh05p&_iQD7Z*oUS3>W9KT{7>(d{W zC-o#R2-0XYO0L2QHMOtH%RR(ZFMoeEjwrv`W9wPmpbc58Z+3aQ=O7>odjX;f0GgVb z(b?-RD1v2suv&pNev;5KGBToojQ4^5UgH#ISTfy{Fl+c2TVrBsnwFL}^V@r|#+DW_ z;LXIuLH6i<(}Q=!8XFn}fHzZ9hd+Q|a{MAv zcIgtBXY60WVX6INV|kMI^v`v;odzW)pUZ1c);Q0Vz2dYy_HA)-NV}w5N($6dFTD<@ z!_Qe;i(Ox&S6JqXYq>$$Zd#Lt`0noRL%6A_DOhTf5jEw*AzQ-grx%r#mB-K}P$={q z8ojqNGtmARU(}o{CZAhPC(N9nD~oGh@Bw9vt$B4ldZNmX^nNL#v%kN;s!HWyXk?_` zY6QqC1u3Z;ltILEGI{cedr!J!jgxic@Jz@l>1li!^LBxO-@bfN z1&$yPGJ6av#o5^zNSqrci^zl3WMpJ!X8q~4&K4FH$oSo#8|)7?j@2Fq6%@(@Wb|c? zBOX0@Vt>4#s=C^7U}a+ilo;B|>g(d-?cuqani{k6Hvbg7;^NJlHyI2@W1~)k3qn^{_xp~i zW`0MUBNqECY;I^}CFJVWWsu7x5=r`9V|zPuauSqKXGe$J=~zQGwG5_s`R%f@6QVGx zI0DfHo?Uxxettd(3^VXrM8w)%&5P;!UX4UN{uPCC%-GmiM<4ERU{^6r?$8Kus>JvNL`r<#VcdiEEkK$K1H+$lCT01Hv zd9}Uun}tsDJEcRj63>=r|E!MM-|Ox$FNESP{vB2gd|A$OMNM$`p7`!4jvo$(ai|MwWOViHDv?)E{ttHlkq~Pe z8$K8;EF$7FXG=Ik*}#BI^8*#O%<96`(S>RFNQY?McR8L^}|kpufmu~ zD)a4IZUCf3HCq@ADXAK#cHj<4vv_Zm~s}2_3K5JgmgB9vI=(KatGA{YdT@Q(VOD( z7lyTt*!_m0i$3=6F6RxY z{l^1tMHazY;51GSbblM%SPi+52mSOY;PL&h4v_mfIXQ!BTjpuC$w`!yDXKC?q#@4; zZR%MdHq>eR!X)+80w>DkvX#}L_3=MmH9j&{CE9)|wH4FDWWNqw{5314ekZbM=#GR^ z!yRzWfr`#TJp@fgTXQqNprC=Cp0A(Z-GTzUOxdj3FMd6ot>j)NL~m8e0fQsj20UR?kP!eqtBYvC65mfG5Ly>6Vntczba~{ZR(%8qx@1# zWO=ggeJOo8=+j%dV%%ne|FF>mGSs_=k-MYl$Bf{=;R2ekM3|7L&_90cKOTxk8EOss zP=!34Qox~PzM2VX4Q3G@JHQzOjE0NrYX>EB_KMw7coL_C{%hX;|NZ{KJgtOV literal 0 HcmV?d00001 diff --git a/master/inherit_graph_90.map b/master/inherit_graph_90.map new file mode 100644 index 0000000000..61a022b72e --- /dev/null +++ b/master/inherit_graph_90.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_90.md5 b/master/inherit_graph_90.md5 new file mode 100644 index 0000000000..92a6c054f4 --- /dev/null +++ b/master/inherit_graph_90.md5 @@ -0,0 +1 @@ +3cd616c086bcd23f28973f48b7834bce \ No newline at end of file diff --git a/master/inherit_graph_90.png b/master/inherit_graph_90.png new file mode 100644 index 0000000000000000000000000000000000000000..d8153b1648533dc6dcde8722eb67d60a14aa3e07 GIT binary patch literal 1756 zcmV<21|#{2P)D@Ys&R>GMZ-QC@_ zwYC4M6vRJAqtR^Ly4AD!+mpj?x3{#kEO<$XML|nTi`{N#TEcyu%x3dK)q_|>006u! zsOLbig2aJf1&IT}3K9o`m3bFOT3XuGt5@gyD4}9$RXg9zyEuA!dP+-6Lz{Egu3Z2C z=2d+8@+ANuIy(A~v0Jumxq0&@+up#drD=M{jvW91i^Vb@{vLk(_yPP89`0wQ8CsU= zv?3OZ4F-c}(_k=&#o~o5;Nr!Lk&%%h^rtAQv$IpFRO)m(rhWPH<@7K1?AcRNQUb?r zx7#a2MMXtgcPB7xwxN+m@)2FktvUoh+nl)=WIy#_zW@bjMRwpJVu2``` zrBXSaPVDywHCy1fZ{O5vwMZn2jg6Jd`Q+qe-!X<^yLa!Nn3#C}{5cH2 zbLWmqrD7H-m&*YF91bTjF_9n$_+>(2VPS7??|}mc003!eX|N=%R-2KL!R2!A-o5Lo z_T$Ho0)e2ZsR?E)DJjX!%p^$?ZoYZ*rmn6|uh)AHH&=fqgM))7Po5NsM5U#r@$vC{ z_wJqB_4q|`adAXML|$HAN=nMvvuB5fhJwrUKQsfA$>e46%Z3dbghJu7XV08YCqWQ= zKA)l}nx=Dda?;b&2L}hIrl#ua>)YDeXqrwFJ7!3W-EQ zk|a&j=gyr=N=kyU%&}A|)oQf_K`0aonx-#bzMP$%-PYC?6&2-Gs@v`E>+4HSPQG>P z7PM^My!pnB8_aWAwQAMVr%&B(w^y|fA3o%AxmK&Sp`k$_5I7tTPtMfT)O+{tIUEiQ z!}|OCgY*CN>62csmq;WlSFTj4R8O8ffxpHqFrOT3xZUmt4<78_zn{zHrl+UZ*Vj)? zP0bzx!7$8ZGW}*@ZUiolnwlCoo}8S-Fl=;m6yEMOo6XDFOB}v|@RjY@*ch~vB+29P z1_lOZDFBLNe0)46Cg#hRFJiH{y}jM9I3SlUT`DLjfMZ{Az~_o@wKPpvRaK>=q;R?1 z&dyGckst_|&Ff;%)nB1dU>K%UD!+dHI?Ks22}B$oK7an4ot=$gm{zL|#NSsOLG~Pc zJ|7O?JnC|}hKGm4!orf0lI9xt{{4Fl!{X!PVV@Ni7B(|8Gdw&TNDVTX?BKzJPN!2U zm3r+po6VaxZHkVL1^}ql>e10rwmd?ikZo64S=q?Qh(sdE%F2QktJP{S80zZk{@!1w z)7942S}YckNOb7Xp{}kjIuu{!ktEsC(VMHEFiawmz+Zo^{sMvE*s){% z{r!(0Kj!gxg@uJUj-NVpDv%q)FIKBnqtUEhz54Ls!#IvxES9dWE|p3Z8yg#3!jOqW zC=|-&^5Wv+*RNksPfr_-#{2j02N;->lcQ8B-@bkO{rmS9FJ9#4=KlQo6PvXmg>2ux zou+BuJHzF2Q4|#u6SHjDvYwtEW+xaI7dJ34;M?l^LJ)-AZf|UCynXxj(W6ISy?TXV z*uH)HJPP(q6V=t#LHK)Ew{D$Ir~B~XgVAWT+wE|24}xpguDM*U*49>=%~n-ah2wZ| zc|3%2DcjW4w0`}1sZ@&NcyDiSW@cu9fsKugYuB!o$z*&!|HzReN~JO)BI0iF(`Yn#d3l~)m6et4?d_3~k#M!b#-m4%s;jHbW^+_jR7OTdWo2c4em-1( zg~Z<%4u`XI=gx+Ph7%`F1Rlktrl!VVFl^hlEx2%B0CS#eZf=IHQ>d~dmJk2{lgY$f zNH5iwV2A|(i37n35(k16Bn|{CNE`@OkT?*mAaNjA@$ + + diff --git a/master/inherit_graph_91.md5 b/master/inherit_graph_91.md5 new file mode 100644 index 0000000000..119a5b84a2 --- /dev/null +++ b/master/inherit_graph_91.md5 @@ -0,0 +1 @@ +edaccedd5df047d9380f45d24d099115 \ No newline at end of file diff --git a/master/inherit_graph_91.png b/master/inherit_graph_91.png new file mode 100644 index 0000000000000000000000000000000000000000..a5f2206b63dda84fa931da0fa645ab48a6edf536 GIT binary patch literal 2059 zcmV+m2=w=fP)tGZ9|!xcsn@A< zy5nAd-97htKKDF(-`(eP_uLMIAPB(09A0Z30M4p_>xxZqU9kzSD>m_QTxoA_zj^cK zT7`nM61ZG$PEL+}^{?}FU|^uOw$|+-;j9$BUfh z@fDlkx?&StS8Rgo3IG5Q9UZOJYS%gnSF-B5ayXoO_wKFsUe+gTnER^hs@LmJoH*gy zJ`)lWKoE5N$=<(z4}zedpPy@YWHcJZVlkCUrBEnBq44F)mrHVY%snnHuClVywc#P) zsn=m9lUY<$WM3^RDq=F3F5gRHVxpg)pTS`0@9)pa$x*3PF5kr}u^e5aqoXfexDX#7 zPa=_a?AY=A`E%GlK0cnEolT?BC=`lZE}xv71pdAjE#^2eF_E2}9U2-+CX*2kc%|RVA0p9fMq~&)c_e(`YmTfxzSO3_4U2I zy|J;e&CSgy9i>vK$z*D2Y3c9pXD}FIv3PE7?jLb`dC6q5yLayb0HD!mcsyQ6NQh&D z1^YA_jY_3btJRK-j9j~Rt*WXDAuuYH8W|aR>Cz>=UjO^|Z>Io?i;D{i3anOZT3T9S zV&eDj-(h=sdHIzqS4Kxi)6>)KjdeO*Y;0^rMFj*wdcA&mDK8Dkf$HjNC(DAcSgad2 zZotbwe*6Fcz-qO^N1VxIa%#+Gv&+iL5F7^v1^@sU92|u0Hk*w^B6W3jAp{^02=epu zhlYkWZ{9pIGQwms8yXs(Jb6MO5a0%j^=USn2?WCY&KC>}f*`Banw6Cm5fQOr!v-#w zTUS?SZ-4&$dAs}0ojXfPN??0oVc~+g+jT_<4+1^u z!1VOA#bWXH_6`pZU#eqoZ!Z74vIvgrlzK!KYxym zjg^#?SS%Jcn+5PnwjT<+vFqj4V+`D%#nM@W6g%k?q z)~#DLH8lvgyg@-h3Weh8)vMv*;UOU*Wo2a*6&3sU?}xX_WU~DH{J_A#2M-?9*Vp^| z`yUwA&e8Y%yUk$3{e!gN8Tvu%3NxB|7bVw?dIvM$V{;5-^Q1;;FV%ZwvNxI7A^4i+k(a}-6 z#bh$IwzkS-vNeoqed0;FCL|>I`}=D&8oQ;mw3Nf)FqzE7%3h9zGY|yP6wAJR`4SKi zV1F&<`0?X>KHp}uxjo&L;dnE<{+~-+zI-_@4(mQ3b)Pv9XazB!2kt;r{*m0RaJDzkYRlqDy1` za|sXAb#QRd$Hzyn*FzAb)9J`$^5oCew6s(rk!;$u3AyaGSm6xWOQBHo_4UQX#KgzPuYOvt$HR0506;F6 zS65fRdGn^Zxfz}@A(y=z3uh>cWpi_LM~@y&PEIzNOy%X}?#<6Nc%H5Tfndv)Er$;u z=5o2acI^TX%U({PES41(77h#ysMYF+4 + + diff --git a/master/inherit_graph_92.md5 b/master/inherit_graph_92.md5 new file mode 100644 index 0000000000..9e75dc2811 --- /dev/null +++ b/master/inherit_graph_92.md5 @@ -0,0 +1 @@ +7179a2be9bb85cdb9b7d7535e841f41a \ No newline at end of file diff --git a/master/inherit_graph_92.png b/master/inherit_graph_92.png new file mode 100644 index 0000000000000000000000000000000000000000..314a81232880841a907df39380661d2f669522e5 GIT binary patch literal 2478 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 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_93.map b/master/inherit_graph_93.map new file mode 100644 index 0000000000..ea1923a774 --- /dev/null +++ b/master/inherit_graph_93.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_93.md5 b/master/inherit_graph_93.md5 new file mode 100644 index 0000000000..82e71b61e5 --- /dev/null +++ b/master/inherit_graph_93.md5 @@ -0,0 +1 @@ +2ae0e5fe4bc59f09fefc596a98b28139 \ No newline at end of file diff --git a/master/inherit_graph_93.png b/master/inherit_graph_93.png new file mode 100644 index 0000000000000000000000000000000000000000..8bd407ee928c02d8e84682aeca0393641a4e9bd6 GIT binary patch literal 1509 zcmV*mp&OP^xVFW<{1ifJVZ2^engG{9%$W$7FOr;@dXD?702=Z{{ECpLi`c^{rxzOlOt&dEA{pDrAiMX31Ao&6+!P* z8iGuvA;?r3f=s0$M{a6iVd1l9&yKnm1eqf@)#Y;CxpODEZC<~A9m6p4vobR?gJD=k zMn-Zwq832r&6_t#Y+ovsc6D_noc@1Ze#K&OM@L7b*wN7;7K>9Uz-%@XB(7e)n#$g( zNyOBGf`W$+AC{Dqa5$WE=gz%;{TjwMHa5&=vrs6^&d#o`uHM?(0zWUmze?QP+%%ib zd_F%bD@&zPc|0B%Z)$2fd-m+XYXCrLX{pcW8yOja>2|xly1JSy((Co!zI~g^<(@ow zva+&rZEX$4Pn|jynN=$*D;S0a0s#O(TU(n@C}gwQGMQ{*VuD&&OxoMqFI>0~DZ1Tm zCX>0ev_#QP%mFDcFCQNtHy8{Uh7}eT#%T(f1ZS$%YHez2`ug>&PN&mqweUw-tyViR zG4blvE4SM%kx1UXdlzS-PN$onpMU@U{qpj%NF*vND+`Cihv;T7s;a7esk zOeV|C%_UdRXf(lKaB^~TY-|k2ajjNM(c0YHTun`l&1Uoa{msqIcDo(Me@j?JMaAsw z?BwJmEOvEuUAb~aAP`Wub8tX1hf93WcJvvGLotZ<(2y ze!pKV77q;#y?ptS&1S<2i;If@0Jqx>i!(Db0Dv!Fz7Pb#C-1R zn;q3Dg)oIe5jBk8zkeqPLZi``OeTUL!r?HV&$roZ)a}F^5P~2grp5yRz~OL^BMHt_ zE|&{0SS%I*V0(LeX=#bcWS%*5=64g_ZZ`mc$K$~r2b0O%*w}!p)}c))mCCBBs;#Z9 zs8PmoJS{B^&Jq9sT(_eRNXZC=Lc85wTU#rYN{vS2)YKFJfLd78JN3kg6952%!SLe6 zi{0Jbw{PDD0)d-1Zywst!2vn+#t$XN*>7S91cFc~w79rPe)GixpU-D77+$aU`0?Yv z+v(lAcja<E0D}Mk7K;@bIIq_mNl~lSYPC8X4tIBV z%jNRb)zt)qUAuPe*s)_yr*m*{u)Mq+`jkLB48|XAV3W4{&CShKsZ>Uzadvh#7z|o0 z7N^r0XX1?;H}rb_+}zxcA3sJ%N6X5}c6N3Es8U_wKE( zuHrauGMSW0Wll~G0HC0tptG|x5D0iYp8EQFSbunUxS^q8VPRo!Z!Z)IZEtUf!(j?x zzkFNFb{dfj2hK$70Vq&w|^7Hc*3PoOC-uU=< zadB~+iB_vsBoZl=N-mds|NecwUZ0+x{)b{54o5~thFC0?NF+QS&uX>8_@hUUd_EtK z$5W|PaCrm(T)uocD=SN>RAy&qx3skM_V&V0UJ7BYt*zwm)W~P0!C?6C;e${pym;|q z!Z%n~S2r{?#A2}$+x;f8Q9}GvfMjiy5dSjBR2qUzr6I^v8iGuvA;?r3f=s0$F^&m) zdwWx_1Cc~xn0o8ht<>v4BoT~2|4*eI=$%SKkf}5TnMy;DsWjw2+b4e|TRW5(00000 LNkvXXu0mjfd;8Lp literal 0 HcmV?d00001 diff --git a/master/inherit_graph_94.map b/master/inherit_graph_94.map new file mode 100644 index 0000000000..49a89dfbb3 --- /dev/null +++ b/master/inherit_graph_94.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_94.md5 b/master/inherit_graph_94.md5 new file mode 100644 index 0000000000..e2212e1e4d --- /dev/null +++ b/master/inherit_graph_94.md5 @@ -0,0 +1 @@ +8827ecd1602b28cfae8360345026fd6b \ No newline at end of file diff --git a/master/inherit_graph_94.png b/master/inherit_graph_94.png new file mode 100644 index 0000000000000000000000000000000000000000..b75cf5fb856d9239208d2cccdf0dbcc1a75fefda GIT binary patch literal 1652 zcmV-)28;QLP)mNnlOblj9{H~!D1#7 z8zM2J(Sl(`e+Z(BW>G_^Bo?feV9x9&!$Kk@im)wE(k~{ETa)(^@q`$xa z(xpp(suZ4uQdU-Gu~-t*fAl3y(|7LNS@M#27K7XE?(gqsE4isbot>RaRS(bNsi~<+ zQuzBNci_F`4!oD#f%lR-{B|!(OG~d`zy7;-;ejRa((QI1IB+1lYwp^$3&Sw>TV!~6 z7{f4;NR-`;=ELLhXti1#$Mf^^DT;dXEEcQPx@23YgJIFp(UGLg$>z_a`SN9X|-A>CMFC9gI=#^7zP0Jdi~(w z;QjmeeLkO3seJtSafXQogTd?d_Vx7z0)gVW$2sbPya{@k#Q z&Acx!Uc89LpFVv8fM75XRo= zPEJlrB$9AAtWYR=dV22NyO-$8ckkW-fY0Yc)8XM^0Qm6X12a!wzJLEdFE1}?(=>$z zgF%zYR8&;7Y}vB1va+tOE)jVNpC=_D9#WWgCCb z9_;GsYHV!8FpRCQUAuO6b~X?Qpy|lS2oeE6C=^DcQKWzT_%V^9(P$n#c<}uB^Bp^O zR8&+NF;LY+BLu5uTrT1prD{& zXlMv|h8B@XB+HjCce~v-n=MfuJ1oud7fLoileD$9ZQ8U+tyUKn77h#yR904InCNsm zi;IgXio$XH(4j;1_4O-OtoX%ZIyyQ;B9TI&P%4!KK{%aGq&GJ=he9EOAgZgY_wL<` z#O>R+OQlkZqVn_eZ8n?B~_1u;n=xzCjcBhdbFpf zM<^7QmX?wvdH($Qy1F{CSZuLa5_=_uW%2kJ!}=Yb%jH7%=fz$?o}~jl^I|`s{J(xz zz>^B^C3oPxPR&J literal 0 HcmV?d00001 diff --git a/master/inherit_graph_95.map b/master/inherit_graph_95.map new file mode 100644 index 0000000000..ad07cc2081 --- /dev/null +++ b/master/inherit_graph_95.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_95.md5 b/master/inherit_graph_95.md5 new file mode 100644 index 0000000000..cfd84703ec --- /dev/null +++ b/master/inherit_graph_95.md5 @@ -0,0 +1 @@ +303ebfbca78fbc918f8a921cb4abd364 \ No newline at end of file diff --git a/master/inherit_graph_95.png b/master/inherit_graph_95.png new file mode 100644 index 0000000000000000000000000000000000000000..6f27f756c734c3f1e937c4d05fd145a34ca58033 GIT binary patch literal 1818 zcmZ8i2T;>l9u5$h7z6Bvax9mHoF*8hh={;pXdzS~urUHEAYu!>7XvB;vluyKLkppb zEMlZXC_!07P^88jAchbSL%A#nLgX-%u>YI6ow>Pr^Sy88%`5Z$-uJyn_aZo}Ky{!X z5J<(<1y2OH2>=?R2=vq!<^2FD2c31sgZBT^9(7gc0s}l(ygezY<*rAYrP(EpE%u~jdpbyv>j&5H4{#Y5R zCTv9B;h5DeA7}#KXe@ZS)+74HKOm!C9-G>Fp<62DZpE(dq^uSv^Sb;{2vsEr3Oem} zD0Mg5&eN{(PyFhb=;Y*7AJElFBq9x7*ZV)85(f)XNHUqHs=(MEHW63 zf4N*-A?W7@bHCbom;L;+vOBo`DAM=Qe<61$do(5yi9}7&`nk8nZ?YC9rTrU1YXt-O z_Gri}d+aVb(Lrt&Qw>Bpy=PxG$Iz+28GXV{g z$@}uX{P+1fnd{(E0(0ORLNx<_I9$-YurBT=PcKPbQE;8Cwg^$DxIg>uzWm2sU{g$V zLb3?iG;*=cp^)L5Vir>(7x!+A=2 zHd1V%PVZ}OHs$)weE0wX6|z`=Px)rTavvQS2#$!5|NHYLY7xRJjvN>F^)2HFglfVX zrrq-(5Ekd>@mj9V*}B(T1U-Q!=GJJfTcz)oH=(p33gsdSevpRaIN>V300*R}r+e4r z_XNUJRM0F8oNlN!^yN!q?;OU+sIH+wjfSHisJ+nQWXv48*39K{^YT1BJ=X*+M^Bts zo9RlHNF;@IhmQTAtqsZOwY@8Uk-W7Es8msQKsnY-3@*fE_n*6PA-F|=Km60Q*xcNl z(lyf_Is4n4y(vi?l=cdITC%)+)kNE>)EJ>!JhDi;x3I9V`SoiF_Et zmeVQmWU>5cZy6A)OfLuyd`>`2ud9o7@&nv zM=YLCnvAg9|QK_JDn)R7y#;`L(l zaJSR^kXA(yMgvMkLZ~0tlgfEFTLki-l&Hv%){AxCp6>3bW0z_s;PgJg5FMA)F(+B> z!uCks+qZV#;SV!9{OVo2?d=t&J~UoY0wL?QtH)Rc1x{5&zA;4|&ojI4lRHmS01-+o zue1x>!-a3=qH<~-f(pX2T&sxbJ;?2J7y7GLIE3m_!t=_yPQc^WViMP8MiyeKh{18c z*dg(QfFISnTr0ftn9MamFp#-h=*!)AG$CLhNF_x@P#O-1qEsqn7=rEJy?I}EiA@Tb z_CfyDBBG?cJkb(C-jXiy$R<7GQ62l`MPM|rU}R(jtIG>&BDYR;NZ8HS$}kuVAl}Hx zNGuiyH275VVK5kqmGtqYLX+>VWbA17?Edc)HQU?UdbW2`?}ZLS+^U)ZXYQdZ-bvz0 z2}|oqD+xQ?*rmsbgtKRtC6Z$X23K1I+Rss5a0nPz;pOf9{@MAO;Ty3&K0ecQBqU~U zd$ZUgvds4GOiTUaE9 zg~3i=row@|0v_uMm=y|>7l&C}YqR}Nst1WSnF)!BOeS-3d|X3QGwb2QX2A+deUoxK zI5;>w+=%6F6aRajuVFwJB|eAy`t|F&x;n;nEXa;c>J&u)IS{X_>SFH;^fG#b&2&^V zdV`uCM=Bi5^J0$=F;5%eDq`$;Ijj{Iuh{pxIpS3 D(nEjv literal 0 HcmV?d00001 diff --git a/master/inherit_graph_96.map b/master/inherit_graph_96.map new file mode 100644 index 0000000000..38dca06449 --- /dev/null +++ b/master/inherit_graph_96.map @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/master/inherit_graph_96.md5 b/master/inherit_graph_96.md5 new file mode 100644 index 0000000000..0ee028b0d9 --- /dev/null +++ b/master/inherit_graph_96.md5 @@ -0,0 +1 @@ +ec0d3107d36861045b041371a6cb60bd \ No newline at end of file diff --git a/master/inherit_graph_96.png b/master/inherit_graph_96.png new file mode 100644 index 0000000000000000000000000000000000000000..7675f0e54bae1cada0cbfbeb2063c0c04bc87833 GIT binary patch literal 37244 zcmbq*Wmr~g+vbBH-6@@-A}!qlf(WQI0@9*1h;*qmNUKPRbeE*kjZ)G`hjdH#T#xSe zd%u}^=a@N;VgJ|y4{NRazOOvb^IAa<@5|$1Q(+?z2t0+mvZ@FKnk@o>!ic}H3zUU+UJxMShjkW|?V1hK+nt28~a4hvn29$_rLgbYmoe963J=y$&KukUi`Lj-02 z`9gowLjA9wqqffC5&iv&M7cHSj9@~1;5K?)%N#-UdvC9$+I44_)+Z48m361sMF!pI zWPg2Yd;67-k56rCMC9Fj_xhaC{#-0YvtbsG@{N{(Cs{*7!*SScx!3t+fB&+^FzNq( zbCYfVcFg%-zoepAel0Gpa`@a!mv(Ux%FEB^F|0=*q>PQ3XlQ8}6^QRAilkRq{auSS zR*2xh#^K?i;lx+RE;aUFFoPe3_HO)|nto(%aihC~ept!I&Qx z@b{tejkoQ2V<(9^)lU!@*No&F-vk*8#W)Ww2xrHiehOP7$CiW|GsvS zAqpQ=X!nkg!vbz~O^uPIB@W`@b<*qX?9C((#Cm_7{(T^INpjmjomXQ$BUFCx?l!-^j5EEtNkC0ay}LS00Gr>B&voO*ZBtVgJw3f2>53GcA9zroJb8k! zm@*z1slKPENJL4Ab?w@<7aQZ0&%e;b#>S4$D86UEoh0G8;)#ct^1cxN>a-p_n5)Gs zE>26qsh7nw-q3)8flu?JR+H@=tohEJJBXKSYgX;^&tW&}Cnjivf`a%n>f93x4C=xb zlf3DioSc?=Q!(^iW-gPGlMj92P*zsvF>c1hr54DOEAZ$2HvimX|L4=d;NZUUX-ZyG zOq;1%JcX#~>FH1Xw|@U_OqL1QFxNLSGOBz&kL`83EpPhdNwW9F zIVLWyRUe0(ii(QM-k_F|jZIi!Ag0H53x%@Ia6|;*i?tD=8#iu@lvz>;SdILcJ_K96 z&dJ&Ov*fA$%D|25q}aax{zJkAV0>Uh_dkkZNlHp4{$87`p@x(Bz+-~$OGqd^{p(va zoExey;X}4}h!gv8hB-d8TZ~w8ez)>P{+xBO7-4wZ}lv_RiOB4C5mvFf2YOmacKA9!w0^x&q04yI7*CM;Lo2w z&Als%iV%pmF)_@{%&4ratac6#RhzEqnVG1Fwe|I~3XIqfA3mj}p;1y&igbyJh)`ks zU0PUJ0DGILa&9ZL944fvFYMpFmrnft{d<01fl?dzKt@J}os-j0t(GTsjCAskTCIu2 zP@Q}^3kx<#6p)cW?Um$0z#ZPsW;Nl62D z_lJ8uY7fK*mv*T_(N~A^n{4aOG)+d&P7a1E9ltj=rpPHKz{yy8JKNbwJ$m#g^q{Y= zZ{@Ms=44H>YIelCcj=ymU#~udZ!JT)qQ6bAtOP4Wvl_L9(TY6j^D7t&qopDF_>h>k8yF@`g_vhs@Ma6!w)MAfFb{#;vl+d#HjWJ1Cl-3pr-FeR|r=Jl}( z6uxnz?a3N<6vW2H2LFQS^IvxpB)#btdy+8hGUp~ge7HhNM#gyS7Kv@m-g_rKK|#Sc zS9mTJR{zHS{rh*s`}h9NldhSQodpF2SA?IlKv0fIOvLk(ekJU%z`($O5O?3tZ~h>#E=Dk|FfQJh*W^M3yJhqYsfaEuHLpN3B0IJXWCh9v|%miyA%dwK$DYQ%p% z7yjtE|C4I2t*tG!w3O7w#wMa;9uo)0((cRl_IA| zhnj?h#Kqmcsk<9rx7?~1->O@KdF${kbRQy?=6TZxgm=G z^M!lmzh%x&^(mCV99mJQygLiJ>gqw=iCwy;lWCG*w)pt?ko5jscwm-=(f5ZlCX+%` zoU2#H(nv9vh$9u|ty`jcb+!0Z%C04xKD%7kuVZ3iVg1+NL=lht_Q#cW7$j6vD`e)} zKr6RWkTy5J3@IY;hMLFrh{?^k8mWICe1HlbJT+6(vgm1#aGrrT+O_*>4L`q#GBKSJ z(TL$rROv2@(*3hvo<`gLZ!{nMv~F&pZ5u6LG(CR#(RdhKdI-EiqR*<`U1fxf}OqEHCx9-Jk0HXG`K}AyD)2^8PM1Zt+?hu}3d2 zC;uREX6rKJN3_(}qWWJS)WL-hZWZX)yn52H&&W8#LPPV_czbq{kdzN?VPV|!ZxG2^ zpQ|w7)jm2(4-7sgS{mrRb<&-SFq+l1sk2k|-}gm6Ah$Xjp0P>zY-;#^iVOxxXA)Q2+Z#>2$*9h1e~;Xv z?lAuYZey`Y_Tg|{t@OQnoQ;ig(_Mn7hSn1*Q^o%*b~mhrx-WNp+}LBQ!G?wPW2;HH zxNnan!JVmEf)!EnzndJ{V7TqSE1ljq9m3_+d@ad?Kvb04YGjMJ^^L3Se_aX}AF7oV zuM2VNorRW}zI4kEq6eFYi<0s?#Z&(r?B2AXnFT-FJ9HJ5fURD6cOJV>;`{6Fv;^V< zGXK5~6&!6K@x|q4+{(U7f?+>rDy5@%D#XPpbEZAm+R1O-255Qlq5gwo4z+j&m>FGPCl%m);si zTQW00pSOAUpU1Suw~bG6|7_mR^M=0elIO{O{VP=4BD;U0!GJV4U|d?>nt;Bi&Utc_GOgv;|K+qsFDmO)by>m7|5U%JO|y8*?99ycGc&6yV4sJF z-o}Sp631Z!EDnp^euagFwI-$1Q2O;dqouZG{gL~}m`Ee~K6trb zaJm7*y7*~NuASXd%I00=h1J!N>1jjHwr7GPvkT{T-s$Cmf9m%X_a+J3ER}cx+NS29 zq`BfYI;bZc-hBSodQ9_RJu4cIvKw`6uNt20tGS$5OQ0wG-K@LxaAG3!3-6~}C{iOo zehlZT^Po(X+Z%R9CJy*YaSEzXR^f=@eB2~?UW_Yft2sSpyNJ9vI>)tZ7*Q<9tZGZC z&PE1#*vQ&C6a^JpAz~7enWZI6g($m~fo$?e1>xZYL;1SHOgpT|Yc@fLFlYxyhlcKj z?S8^}xDYRFXYVRC75N6gPAQVdJme%-V#xepV*>h$*Q(jgemE2lH8lKUZ#`v#ia{C^ zmy$P4V+R?nRK^--@yxA9UqFRuz`$TgSZ*6GHC*uiIL!2IR8$nV^=PT4?qsF?9D{;t zXp;S0D}P6I050WgJZb^Hj_P*qvi)-%>)w<*P=6E`7k5c)W)$=rgfptCsR;=S8#TPX z{Nov)NY7kn?5(Z+egFJ?4un+l!%sy;gb&2FWute7W4cC1shR=^+Gd&pHZ4CQ4b0R7 z4l!$x3K=J=_cSjtF}E51{H(xz>sGHbyT$AF_PdyjrIPLk8-va)DQ@O`RI>8&bLlbq z((3AOYv&M$J6CeDvg+S+=oUSnzX!it6*~*17KH8~fU2;ovlA9l@}$abkFC18n%nEt zMX%25taecmdFNK2mUyR)q5ONk0fq7}b{}Y$u;Lch42f|Fyh+T=yhhHhjqvvNhGPDc zL7mq~g>90Pi-H0c6EpM7?CfjK$6pOw-%wt^c@y>F$@|dO1q~gYV0c*Ahh(r_$ky$h zodfs=pG~ojcbC;RSN-A6v^|m+Vry$_KT_ohs<#?(pbZ+hG1eSJVt>4AUVS(l0{bc< zA)!1TJfQQ&+WYMMWV5%-QY%lth6?KUO1l~9&>2XWLUz+H_sdkXeOVN)v$0)5Kn*Ix z8Pn9-iVhVJ)UtUzXA`RfBlcTbPzhe)F-G&pqt;~Bl8J?~LgHlY7L*?5y5GPm&?;=F z{8<$2?CgG+kGZQLPPUrcGfsS+?_o0e&TECWT|J*vhM$!ot=fs z$PWrXOvZ?}Z(mHgX3byeKc^xi^Fy}TP;Y@V*HajH^rkuDVPV~dVl*-;>h2~7VkS686_ha z-rh?G<03^gzq_fmk}xzjrknS;N;A{-1}Qd*lwOUShNxb?CJr>e_8a5EiJu{}Xd<$< zOHA7Ep&MdD1n%y>Sg(Zom;%uZ9RyVut1qFxzCIHxt6V0HGY&R3@$K8U5BRLzhu{TCB`ff0 zgcuNk;Bh*uX&v?thk5v1f19dkXr!yLG9v3t!dqsYKky}8f2Sea`220^Q71Y&I%5bd z{N=-7Xm?Ca(+H&l;cR)HcGEzZDes=v{s)D=U%p_~9+}~fkFV|0eq;Fg^X$uG zc6N3IVt#(Uy}kWqP!QJm`1ppqJ~$cz0af+-Iyv-X*8w$K59w|lb;5usj0~iuN&If;44J^sBw4JgB}w~brI!4bv7e&^GD1kGOHP@ z_76RAvj;8GGBTu-A2NuE>18T?{oyz!EFv-#=hPBR2HsWUw%52l*S5VkY>+A+PUpyZ zjgb+>2ZO->-8(WC1!>rt@_7P8XB!#1yL*(&<)Gu+H>4lKf$|4)Nn@^4uV~YC5b|>>2(;r&mybAC`-wn4X@F%u;oA-iaOUU0p3{3eiOn*N`DBwHE^a zlZV;rqxRzy6Eo}Up^$bAyW;pih&Zx!c6M%v{tYYaUbigeoi@Zm7LyE6y}g~SCdE(% z1ZekYzg>rYl;(_K789d^3@mML&ofl;I0QQ7ss8HLaQg6UwM-^qVaf`diNV!x7lCHC(hWoxB}!-UqRmN?COeq`_}hK z$NNDl+o8NiNGM~wgR5@9CC$y!6j^LQ9W$#eTI{;RBP;6>l&wbJl%t_`czx@n)V!Y+ zmqv&XN+rMC+?)54Btm;rR4_C`ZPtA`e`*|n`bVugZER9jnn%Un&a^Wpw*R@Qa+`vJG9@o}2-^YhU*f3C-0 zNx_PWDk=blX)EcG&^0*)Cw%+x%q2`Uz@0^r<7Zd`2(i4^%;rK zW_=@8+Dm+?GnAu&QS7o!$F3(tcgyTepEC^;Qy()U8bCgmad2?N4#pjh!~T@KBH&!1 z#M0AK7w71!!}JYp^Z|ymvbLV`a46!dfL4h(Z@k%C9kvu@`&+)X%_>u;shV>;Z;-D| zp4}WONDQ{0LthaESEYPeC&3eftS#SQga}$IX}qH%A~Ki_py!Mu`Qk@~g#7aN?|V>cxFv|k`*G-+8E+Y0`}aM}n6MaqYh`}aR6!4GWMsL0viUPG zPP%~@l>jzQjYlr;$MZ>}(J3SNN4%I;e zHa7Mpgu2GJh$P!r)nbZp8GOZ#d*rq{flwF&!nQ}-bX{Y!FhBouAKKNcv=3GLP+D3R zu5$_c5We)gL*}-7-S5j6Ij%2R*2v0ctX3JhIcp=oTkmRUWCOSq8h!0nL#FUgwuiRQ7Lc5IDu+&S?G@zcb87S)(8T;rZ$+bSa-=-q> z6Yk1G_XwY}b0}#lGUD9YSq+(KI{Bn4c+*qLZ$<8Pe1j5z zmzlMn?CKiXy{Q3s{&)^8Kax4G2y|XX#Sj517D;vTmPqrq>TgW z=+4gW*11%Yb+t?5U!rU0{%oAe&TMKUULxV8oyBWR66a_``R>J!$!&6S2EgXJtyLsX z?XV`kJ~D3fHTod-6QjF(0(mw+0f^A6cF`EiS!jdOF$r1@~Go zKJ6jTeWddb3>D9ZzS1pyMln<%{-(?_b9U34{?n#VKAW&GM!euPMxJfb;E;})%?obU z2m7z;>O|=`m96iYFI%5(ddCXcGp&c~CimH$lw$*OytQRFP@Y4{U5~;`d6N4F>a%$2 zGWM2Hx7tNe;^LH0;=~I3qt~&DXPY_MV7`@rjaaaOm%^)PH9@7gUp^5L$xFRWnp4|> zad&KNu(}h~rkjIA^DQ{_9!jSY**#y`Z{v9AEOKRIc=Pr@4#RY2vfcXdZ0ceiilCG2 z<;-Zn(0%r3Gh3k9hAuohFzAR}<%jB%0>#fNx7r%*f%|eCsAv(a{cu z#!LX&Czfk;ZOwT8$d7+loBC((BWH}ZTM1j5X&UOz%TVdPXVPR zv!TgH3-K3>OtXsBCj~SmW=E@{_d_Z@b^X@I9vH8WCPgG9_$13b=5|~$iRchFG&4)t zbdgnlzN!f%+d~W8K^n=A!BJ7zFE(xb#J8j+rK-!eX88KJms1D9(j2!(54zEhzwlr&j|gcmYVhG^xRzlO8>b0`bUsK(-ntH^DV+? z6y#KTIkX=+{@B-Y$n-JNda-0U%HHu8%CTS~x7}TC4dn&Y1zq8i)7l5?0q<`BKi|mwLB5BQS$`o_F>wW2fD zOBVL6HS*6b&~fdasa0_PHBA-8>7=N=wCZYNwM@CWg)Z#1apAUSID(XvM}c7yuQ_z1 z49!@Ze6gCgdc4Er3ia1|{Nvh!NX$QoI^TTzT^f_oZdUedcT4>EII(r|!mn>H^eR93 z$}vy>8o+}fH+^=Hgp909!y`bAe*oF`;xjC>A$V4=|%O;tCnmMg$ zvuPGe1k!sQ(n1L0@jRX)q!D|2_VZ!M7uS+YiZNaRA3iWgd}9H?rrnfSE_5YaIX+`p zSlP@B1=3=_M7gN2aHgg=KeL>eZ^2^@U03Trt`fLGX&Y~0Esfdvv4(QW+ZzQ7t7LlF zT&#i&i_vat`f8q@Dm26FaxtnfJYSHRdka+6s=0ycp<@`-{|1 z2to}p7IoEq>u51xYd(g{ zF=KEs`YJg19wMv4&cv9hp}852-oq}lj!IB)u4+Bv&u(VjfI{yovMzv(RbTCDLPRB^ zH)T(y4xnYZ^|fM;BMIa)_dk#f-di=`{a)+Zz6F62>S`gDtLX>?l`YP7;4nEq2=!LA zl>Ds?DKAY53}Qz`I{-*_?+x7qeXdr3bQErh_Xn`wz!1?eja>ZM)=*tce7fK-4i}Tg z55h#8)~=9Z-wElA$4%1Vuv_}U?{ScLi7NC*^0S?5mX^1wFU}*VHu2~sXrMvtO8D$( zHCC=XMHINpDkP*0|6k&A@sv|G>KrzZmGk$UEG-2aZlCX%nf`Hkd;0aGYCd%*MHYr(4nxW?9)+Z=E604U#S(8e- zY|E^7K^H$No|WZ5!V zt9X<3Z&2%_2M=g(^fQ>-n(4TE_rv9jBgD9<>ROs@vHWoB=`CrQ0F&e0x@8V|$6m9;tvjPB5GHoUJbN?5J+jRS zR_`8Ua%?bL+b0GFj^cRv3v$^!NGZ=f^NO}L6SR3dlO8jKthrAYC11IHt4~pG`kydz zXz0duHo0_4F`@Sq5Gel{^K-zFM$m=^qyQ`mMdjtKTQg12sm+-6JP8aAu{By9O4E5z zY_Y0yB9vuz_r&x0bKXm+s76np1^}9jF?^$CVyr)+$6R)R?^JFI7ivkDqj|g^&;AsbgQAFn)&1+_ z*0|CC2U!gug=B#HU6J$>14}R1)aFP@Nx>F%J}2O+E+R+8;B2-mY)Q>qE3Y*vbM-Hu zl05nqjbxsIR{&z)&vj?P=v&m)quPJYteag$jm0CAT3+>7Uf;=)Z((d_l z>Ba6u&<{k$#%9yjf*NLbxj%Dq*zxH92S;}~J9ZSiINbp~h)g)0IH2}iKxh(OQf|KFlKpWJ6lv3oix@X=-mI*u znmgQ{I|Mj=W_lW-tE;P&Btc6Rnh{p>X`QYF_?S2A)w|)|r>KDH2-(m2I(-DaMavt? zTNe4cCLOw< zUaF?ebKLXQ{k+YDp%D?HNF$5*sV&{!(XxQzCyKc-4}x6y%yJ$t zeK5FYn+SZyJbD)j|2JXNC>Jxxn~;LC{k5MyfMvV5y3PQMe85)-QCjcI^UIRwhs>Wp zfBu04yU@{xPVU^J_z%LSI0+UOG|(i--n)nGv_3lc?A8bnhNKh}P!p91Ij)d`SOx@C zo5B|$Kw|Q((|YX zjK1MD?bfbd;Ex|=BVTsd+1PSE^v~T_+C`2j}@C>yyr3qOGuzW>i9s_Zi0 z^Q9i93fM}pdY$p-4xI!LTyVM_e7vTaFEYX={QP-vv*;!ZrhMD5Z{a2r5rwlJWh``tTZ>;{q7VPiAukL`%=+2WT=|CNvo_h4=YH``G4somt?eFg! z179`HZY)$B9)ezY1t;}eO`@VC;&?3 zris0MG31dja5ZvJMLF7(ROM?IOZ)ozJ~NP)l?8=K1}39#R#p}v2q{UBg1@2kWb2ig z8Afsroq;X?d{hJxJv|p_7j#djEJ2E$?|8(ZYHO`I&$SjAU`Qy};4+qI-; z2J|8??%s`J0TE-_rt(LzN7ZNhW23{?^B>5hk@QhR2O(2aKV3o3LQfLca|Z{%{QP_% z9BeB*!S6~$1hmPr0ZfL)sDyEOu!wW zT%8Ulk{X(=Yp1vn$Z?9ysB84KmHaDG-QInC)q{PJu@S>%4y4uR1c{Uh(B`4{|3$Po$gJi7 z6Jue44SKe9_rWfIGVIH4`_=ubRsb$&gI157g9E9Kg~n$X@MZbL9i_W>>%A{d3|OvR zvy2xFzrrIe>H(-bQZe~^zGHjBc?v0LeIUL^ieLc!r_|h7X+fPEKMP0~G&Lu+OP9Rc zdnC~v9Mse`a}Wp(jU2g5@5RJ*h)1?Bs^6QMnGGM_b>?~h=YWA*LdrZ58+`K@zdN{i zj2h8s#9Rm=8{{}odQS*C{!F44)kjRf!l3(cK3Qxc|6*kT3#sm#yvfB?$P-#jUm`mo zK-uBCT-bq$iCGUxPDNAGzu2U0sPYNcvr~ty?97jiz|d{CQrj{}O47qY18c+rL<801 zn3W>|CyD2dj`_uUT3TAy-`!hZ&G15BJ^p!L)<1K7%ETdwQ@`5(%^Qy_b&Jk;ig3Zn z5r04*fg%q8bO)@!mt5BgR8e_4j)b+fAw`as#QN^m>|u1C6wqs1RrtmG3yF%#>dS5tGs4RNcGS96MCb2PB#^6;ochJcWORgnrE+By6Q9t8!0GM5aR}+~w*Q6^}~H7wba|3Wx;W&NlF$kXY2PdBxdAc>RSh_IjFFW9-jqu160S_0`H|aLPdC-Ftm6ZV;FASw~k=4)7Iy-UvmgHtVA47p2rt*wl`mDU^SK{FO_B~x& z-8nx29UXJA`@y5;mc;tOTtPt0MxU+5Uz`hK?(aX|F#p*#AHtO(FjkEVNwfLvd}T2A zgRleZLU&?FgAaxbh*mi{@j;Wkn;u&h;5XVS0$7M%B^3B>+3`%!?6z3 zUg>jPwt@BWi$vM3{PsFtzD6VR0&`|&W@(~IaKNH$zodfaYeM)-QP0WKvrX?dsAh=B z$S$X=2G!R~C06{LSmg66C!ypjuQqQEqkVdQeSADw)AAvxn4o)Sxwg0@M$d=_3NvcR zjsBqfNba^rg1x27SNsVs5Q^{DZr=?Qy#G-z5cn(h@ug?|8Om3L>=;0Og#-JUAmK>` z>~C$RYfEcu3R0kriTN@ykrugez+z7JD{!!}VWXg+lud%5HK4ApZh!k5XlCztc}W0& zhtwdimGlfJSC{d-z9_Hu6;AoMte4pfxjtvy-$)Dq#B`}Iodi)oFp&1> zy%8?%Jo02FCnxE^S(^LO6=xO}(B^D5@R_v;&t~*<|1^oQhrAwEPf_CeFqZPh~rdKoZM3Hy~_ z-~8NcUHcz;rM%AwHz7y-$Cszg=Y?SC9V20^eAaNj>_x zE)pULKP@tB2&3|TlvgXhvb(GVqy-tk9e!Q$PwT%0-J#~SNfdEJwr9m&XKvP+nf_@e z^0(g5UtDhu_a<#=sn}YtSTr>M#@aaGMS0BgN1o+e+!y4(a+~3%l#AKd;+HB<%!(ps%K}h zgk>15e>zk_hzNrqJ>+FzpByk*?7kRu?Rcxi>O*+xf#lisN$-nCFi?=)z5F1lyS{_V zHtRtDJco_{{Gg6~yw>v~JoFFQ22^Z$$bK%wum%s?Nqw<)->6D9HCXa4W!I;=Oeq$9klY9A2(eU1Zp?TkL?M=OL zg(u~K&mWRWW$ZcdH}L{zuje}s7PbB#`z2*ae8X{`Y*(TylULpU`9Aa9EYJ{o(~X%EB27 zLV|*DSy_3Z(m}ywe|*g0w2{!?X{n;?0h_o9x(F7 z@up>5!XOYZnEZ=g4hXLS;UIhGED-V&3fns>4GpRfv9Sys>ytWFaJ~^BaQ*cwfrRe?ZWrn&BA>G<;GiLdO9K5`rj6Z;HFWv5f`~N95JLrp)go98)h1Dy z79%6$`f*82`$*}*>Q#%8iQ%V%cj8+@oSARtBBEFZD{J&IUkwb5w#0wM=8NH4oCafg z`*z$_XWXE$CL!Ug(XaN}(W#T&PENFdtfAa08Cu4016`40t${|m9MHSS;10T6sr>UD za!$q{hT98;2e+rb4Bp5bGO$-t-h45BIvnC#>q##QQuW4$WE>@>7rGZnvh+&kOE}@i$aFAwL`_)nsN2Pq+t7Zw!^vi znU}!rFCj#n_0Qj=x&3VkXVHrL0DUNtlRIqT-cL!2kPl<5Gogd^0iDtsR&ggvO<7wGBL`(aqkaSHMUP}vYM5Iv&sM?K;nQmjElzpAK z7NL1^P?yx&9(krC#0dHsW{@N3+1tw>o_Gh|)Ov0)A^A87@)(Fo4C`O&7nQ9KVBbJS z-O<`xPkAGwO@eaRC;^_;;eg8WQmEX(Pp0ES5OM%l`4lXS(JFdzI&Zvqab*A;_bF)H4;QKn+xmAW+3UAnvqLkLQ_hT zHOP-60x{C`3E9$35qL}?a@!S$Yw#m_I8Po6AX5!u}oau>kK z&K^!yH8%tjJ3AYN!KbM3cajJJKACoZe$qwj4^YsZbUVBG}42Z*#gm+oDNhHddaUe3X~Qv2NE$K8xFC1%igJZsg`+8&-wTmF;?EyczX08*`N+%FD^V# z$Dh&TobMfvnavIV&m6n@)e86SHG)u0$1xTpjx7M<0N9HPIx8fW2QoLSKC!r42N8@i zMMh2jCm+M1N*B4~u4|EgVZJrJ-eSS>txVq)^Djm{kt*!;Qm zii_k;A=!aTyW5Er2*7mE6ru>JsmFeq>oPkidf->g?*vSS2yp`FS*4NIRn|0f!mIooc&5T(8E&Ce|r}{>n-^^r-RP^A4XjP zD0?7r#FCenX9r`PAj~uZX`J?FQ-xgi_`oa!Z_N_7-XY zm;qTwfIts`vfH3|FS4DISl^0@B9@htYlPv*$6sGG0HXU)QxpA@6G__tO})No$%qE# z2jc;JrzcYv{;8?V&_enHyn#eAAjKV6cCNx8ClXZz$v8Rz-5Y3LECMDHtBUpZtbJg( za~5C<7nmo7No0_aZLD5MYbA=7lo*3i51FzLD>~oe=WhW^;}ktVNk#s;va*tDtf+Riu(h0;sLY^spYr_dU@8>`4Yh0B_(6GY>EX2+m0Zxd zv(V*}ltd4kKfSRL2IGfwaKQdPKB!jK)@J*xW3; zUR3UN{;d4HAk0X>X<>nQnUI{^|HqGq>)uMwo?Y)w5cYwwLL`y|{0p)x7w@_WQ@dIP zdJW-{=Ye^7?7N#&^sipM65*e#d9h5)%gakhMWtgo0%}>%))skRc&)oz4&^nRY}OG# zM+$02Akw1SJ91B)Qd^%7R^a_F8u)=FH;Ac`_PqY9=~db4Y=AH$Cn({(`fKX|1CSIM z&2I#8ydR8C7{iz+fK$5OfQ}V|mJ~!V)2ZPSefXB_N#HYdZcB`i*4zP)mWG+<#4l7; z_jT*M#E}p~N(z%wf>3d5>E2^+{zWI|l=8L@5>23X-vTLoBS=Oet^;4l756roQ`Bh< zO3aSP=x9`WdU`NMbf6Jhzc?(y49tzS(Xw1Qp7i9M<{B^j0AI7(w+{c(0{DIcw&kvZ zLIVJ_7UQ)83qAC+oX~%zgjG-@;Yx|~LzDH@#zturDL}V?3c7)S%up~OoL^BAJ+>G^%wNayYbgD}dfh z8>S`(zfWivw3fe$iHQje3Nq)rm;hy-EcE=*nIK3{Iq8327~@N5yf#vNNh&l6B*q~* zIXP~bkBW``U}%v@8Z+|!dsYA+SM@$}9)XG<5(*($5)q8CHx3VLv9PiZXzr03Zn&6qN#ei9KS4uVNSLVs~PbotgPKp!bEhn({HvnnQ|te00Ubfhtr zj;rtQQ?7KJ{vUziy@lgdSLwhEZ~V-(G)x4OprDrMDGYR7dI@QQMEc6XkxU?ZAy+xS zZU;3?tgdg8lanJrGy2@r)U+PN2r!9yAYKTp3*seU^W`MsAnASk_ALW5b87FA#8y2j z;w6v_LsS`>xp1^^P*?cvyIcy~~ko0z5G=|~aM@}sv`C9rD6ee(TS zIBQbT$k34H5xWMtj5KC+X~b;C8SH?+}1kW1;tG1;Fcwd+Ap|uYCF? z_yUUz=Ez{w;OBJZiaUWzwUeMNAIxk>vzaTLrRTVa(E%{T10g&?#1UKSsQMBhPEDCf zUcqpf?WVj|Q?<0jL9(?;RaK(hNs{4^QIM!6OuF0w1-H)}3AP_HyaRdASdF%~*Dn;7 zTcQ7sfB!@d(_B)gk6({9+6efULm+_3_G?_WjYBK$^OHRp4f59y;NakZ@xGT3*N!BB zBq?kCF*F*^+Cv3zGLT^*HiCFq>3tyq+yoIRsV~4r)vAw3Se0HvT?%mwL_L8^OV5*3kaOkg*PUVhrPBR?b7QjRBxlen;&>G6 z)6B3D1_lN$6(42@Ifpdl7C6=IUU~X&9hR%>@+G)OkT3|5crPISjR3O&s0K4$%{SkX z5fi@#sQ9Sl_gSgIeD}6s3C9Q3%o}@YSIAetDPWb$EDqb#?iqm))Bi_pf=v?SKgw7Vh9f zIo?|hxT^U6x`%dLJdF6g{OykQZg1@o%EpAEjEc&Q^UaG%tDGOO$_RnbW5t~LrKLc! zo0`a1MC9P7$7wAm5lP31EcWb24+UaV=1gQ}r;!|=mdXOx3cBz_^$L&HN!KxZn&6#2Sm@m1R#L*!i^^QhqtSQtbL-U(XY%Vr7|R z;G_dvdKkzT8Tk1zjJI#4rHe;jRFsyU1`zV|({*;@f?5JoQIQ#BbtL5E=tZS`jT2Ro zTRWEfTM9VNtD3wvQyac1OcFLz_X}{? z#O}|mnvSFhn)fYi?{M28Elmtwxx)GR^Y34&&s0@E zGI6ZOo_3T<)dzg}f|8dXYGlDCyE&;@RLtWa8p?zGfsqj=e_7nMaODTKHBAKy{jRGV z)IuU=49qeVJs)EkB@K?oR!w=)IXF;Qh#%!AiAvvXnx7|=Veh_u@4H%B#sb6D^wX)8 z70n#{&_O7l~mT6J6@Gaz2z)D+~-$zF!;y3>UkTh=`xl(gaXN3*EmjAmrg9 zfoMsdvA2g8a&*89q&G8c1}XXbsj&3I!u%hxpyeP1I{tM{4b}@sYTF4n@C<9kN3o)Ld@8xIKFZE3NNXUcT;R z!^X*FHcG@4AfU#zarQ8@>a+U@+Bi zc)Am`_dY2$Hl(sr$OXGLtg;XM!rdas+7RI z4rZ*;ftu0?NLGb99)1&_)5MTAdZew%dPiHE6nL(H%m+JUQ37OER&R)iwiU`gKX<@^ zK3L1TS!td{`Ld^{^@liYu%o>Fs}-k58C6#+YYt-WuIKFcU}N8duEutxc#i4bJ(h^O z7Id`v>FLmQokb*^qA4gm_;umAyM*<*q=TYkdRyp2EMi*xjMYneM$p!P|z z3$vraprD}8*3l7gPsGd))n=E2O1I3563ma7dzG zyB+inbIIv{6j4?6#qPmD<9%kX@F`V|^}!1AAIZH!kMt=hVsyB^!s}&5KDSUiEaErB z7<_E#k(>$uhf@FkR-bizK%G7#fl>Eh*oGMz5YjM?*WbV`~Q#MQmD+NWJXpr zjIyIpWR&bs6tc=Fgow&W$p~2$$_SxhWlNDLWsi`RmA$k6k5_#@=ls6^-|w9N=$y{G zxBGVAuW`Mu>v=uav*?`3+kg>WIZib-UP+gIEMNfcK7PEx?S^JpRq(af*9I-_ev~>m z80Y5K*vPh>DI)k!|CFTDZvmg29EN@SX+)f?^bHJIiXVGb((CD+pjiuz7s**z+m?E+ zX)QV^h+<{s#Dz*~eUF9CEFdpJ0{bKM)Os;g6YNcFXUA;MWz^PdZLV*)HXxt)@uS6V zsinO)m-o|R9$b3yH0^m(`dXpXnbOPwtz1qf#<0LIv0lK-DsT09OLSi@;87kZBunG7 z6zm>1Y`FXRo>xb^i;w1u)LD^XmQ#k@YHBrx^07@Py68>6#m}jzx^D;~hZn6P_ez7Q ztjZ$+rw6{<}(^G0z0AiiiZi zav8H$I?l_z?=qJk^>8~+)m{OCV_Nl$Jbah-?A^;65YVQgUJIR5uE(cm1qCd>e@hG0 zW|>*GFtAG8q`q}juTOR^5-f81RdG@?@$Im%Wq}7b!+G3 ziW@_s7DfD89jMn(St&CMi;bB64GhBhEm5Z!^-p>zoNo!^Us|m5I&fiqt(z1MBFvGk zGI+u_KK?q3@%bjsCPA;I2ls1^VnlcsFv@5+ZcRYJLeebF+?1B}_dH`dq=r}KZW?VSjDQ>XjqHk-v$APVLT(v!EWRE?Su*E&b z4de&oU#j~>MVV8x=0X$@Sox6GY~;5}rjf+1({aE0syNM<#%(j*gRfbqZlvRU#DB>A zjZBpIm!#@2iBqR?7uS|QF3z=3!sk;|9R%<5Es5^zvRHdVof{b=$Cu0RP_N8)DEjyq zE8o1ixwdxpf_?WPMgwHIS$ixk@qTL>3$BwZ40!geo&R%|hGxjYKeGv&_ncg=Pq=fS z`DOH7->u5Kg(tab+3$Jl2x_~VJLzs9Gg;%!!{ZhItK(adK5MD{5)EWGwI48QJ8jrj2R>ce{G$Nd~G# zVbS_qsi|uy zn&#?~x&GBB_%wZ{iI>5|n@-VPcaD}-O%Ir{=526hmd-YM%bqTXnQnGG<3U$(`t?RJ z(W@d}YaUEW$Empbb$NNr$$pwzrcl1l-{|Ic9CI1fMvw6DM$h}gRb&?(X?g8c3Y)O( zl>GTjet*XU1=F9$oyIR?sHTpIyT_l*riJp*)c3! zS$7{w97e@`EYI!<{m#g}rR>K9BjCSb<^E2q9yflwPTs4q@?_7(4RZ5ivE--g?CDvB zGM%-gNt)VyJ)PJ6!Mw&-kJKAFjU>`J&-ty}r~!;{{xkbp;pWZlT{rBdpz;X8I`iTM z4<0-&zF!O|weKi#qt2ld-KCwMVW9D#+q}k?u|CGYfcatrU(*i?;}$yGoG-_&jv2CP zXIxA!i!RU{gvh6k=?`d&`UaoDNo+l_c++d(pS!-I)TjJi`z>K4M!xenv?OVx8C~j zfj{T`#-^rClQXPshnRLJZXz-PkmvU1?c47OimNjx80uMIF24u?8EDx{53&mL^9i4F zl!X0xG3DeJQeTy|wLS9-W!`soG8|nJ{sTEzF28#msbPSp6=NiipN z-EP-|D14Yzt>J#YQy!xOKKGkW@@Sb`3|y!TJmR|0x#~L2Q`#=Bkihr;{f=j5%AG8O z)n~N(%CSzCEd9FYVIXLI9(4g!OIgIa-4uV#?@)MhGU@BrdFYKKVf1GIQA}tw;x5!Z zZHtoklBA~2)@A4B>Ssc%MtNl=vsq;knSAM)*6ix77cOkY3cq>VHu0XpIQ{b4mupN$ ztlCCa&tsm`magugOmLvz##j>>7g_x+zPd-~Q3k)yA$dGn2=kyXc0b!FeL?Tzw+T+K zKrk65TvAKcIaky*<{W!Ja1RYz>%GehyQBHS_xtl3+&ul#6f}Rf6<#-q$f7tJqm0G* z?b_mUB@>BV+A}KYhKdfSb1eUhO|k@3ynY)!j)>W)ZiWz5U>UQDF_DN*Kw{#Zw2Fsf;^LK`BZLOj+Vflvp5NZr`r1nUNdaq6P#pK}pWB~3d#J;{ z!+JNAYr>Twv9b4&SW}LD3K3oBJQAL!XsdN)%!9`#BsV!}VRWRT&k>4!M%g3FW@GIq z7pJO{Tql1DJ(kX4CLWi2f`-Q3&=UC-Pq3jgG@u%y@qXyTU|Q`s>SWXN*hNCI?jB#ncVVC+9pC(@jlJe-0ISYmu86=#W={ z%a-QazJF(cqKjG1LvnU@7D&{VP?e1k2=+~x!Xg63t~yWNv3FyE^RneYF|Nj)K1m?P z8%WSJlX-f2s_+a1%oco3n*_;t0gw++LhiSy@0uMc?yhj)X~=9pxL_9%Vb&uCm{cuq76N$hh44ii}Y3O-+@< zJ<)ISk_i7K5+9+;Cz35r<{b6tQn5x6MSZO@2MiG?y*AF`ShOA!kzGKvtly;WUemvU2;j; zR?>1r6gfeONl86WBu)?Fki^ z#+^`U!dv+^+qkl}R?c+C4z+0Ck6Pl_esNr~eiwM|-PO|afz_26Prk6~kEipYcqU zGn+YArq#YSk(dYK`38I~jwI^sTQMW>b!LGgIL}}zUF7}@?eV?hK08zn=Sl^$wnumS$PzQ6 zfa5)ZP?+2pZ_#Bd&CE?m&P}&rfBg8dfrG=V6-Tpkg~J6JD(OyvkG5p_t29!^d0gE9 zl#ZQUW81~4n{*tqRA88mOFVYTa%43dggty1F70CW;j1GX!PDR-5jkR8IuJgl zprJvNo0~g5DCkF*lAH`(4wbaD^cF{*%-}b3FHQrui;Ai(uYBMoAbT*hQC{LM#CY$P zw331v3@2R;X}VG{SLU45(AY%s9moXrz?8e0j;@LzDxqdx3i$)aS+xo05%)td&}}p` zGs`b1xVW-7MTGNC&&&X&xCN!@iQzY-vaYU@cC*(8#{1{}9#dxY5Q|%7vtj#-fd?#?OQSnixY@cJ3pAaX*}41zmlLN>ko|C7i@4ni11iyvCTF#u@a)6AeHZbl5|f>iRC#5Q}QWx5@%dMl&Hnt@y?p6hLnTx znVHFrO5JQ#7wS0T^yOUC;QYTu!>Y=fQS`{;tB%X!HgFa_4bal~EV+>Xi9{sjt%8|PDx z(%e6v>ms*JLFJlt^%b3_o9B*CCzs?VWcr>Vc~@ya?zx@W>63jejbpiixqrlK?eXeD>AFSA>9|XQO|nI~nQsuu_DPAG;l|`oG9dv0 zQ>f@K_kIX?nV%meQrU`u^bx9o{$>4}`*z%qR^hpbsrMp`KEE+tUxsETu&VDhvfY|l z|J4LSb`38kCwml=6B5b;0|Wc>tc5FEVLc;$GniBU5+brMf4Iwl@FtD5KM3fJ!j`?} z^XH40m}=YF&fbjm6Ll2WdeDDaHA&Q^@5F|!RFc&N*Vpex$F_JbZ|@Xua{s!ka=U%3 z;Qsvr=W=Lt`_fZsLB5$nOl|=r-Gk0L&{pDH-e&8Fpzl5(RbBgNwpv-~a3-2xeCEHp zJO~>A4|2lSV|X9kT>VYYG44N6YC`SoESId_7LeDyhCHLqU#_k+|H5S=G}DB>9ZM_H z+Dvh!vUK#2!Ci2Df)*-v_6@4B)mLa1S^>k|zZUgzX|B*LG;t5W$Y5Gr-#1M0P&P*fx*GTSf*dPFUO zG!BW3zU20?`{VmbF{c>mypUtshf~SuX1nQEF zc3QrRT9W9G(slS{m62G`9s66-C#1kJu<6YX@iXng@|C@v*B8txDCm$5_v&mgJ5$8n zFR^tfwp^)q)iZJ4l;p54wrF@Ma%czUZ_>bw8ok!epgw3*kV2HjVuEms^3(F271d!P z1h!*J9iqBx;|7k0VR?tHWoryVrG-?_%-qX|xxS>9pq#9i%UQUI81X%b<+}w}aGG?u z%}AkLO45;v45RA&Yy6wOe?OUjLqG80!|9F&PY;TV6%=*9s3YmM4m|!FNzy91rT<7!^n5q<^5aBO{mA{ z*yK4L+*sg9mp(+$ULia79L!?AKF-rOKeqkD2cEv>4CPPNdr4J}^i++ShK79Idb>66 zL_~ycdCr^Y394<+*%FU^y?t*d#|xJo=YLZ|D5yCh_aOD^Hp>P+)n0n7@^6}ya&qL@ z#?ePdze}U_r{55tt#iBZdP7L0e&VcPAh?wC-Q8X(ibjQWw46a8kw!5+lUFh~HZ|=I z{REW`8eE9@exT7Td6N>sq!F%uH%)UoIn;s8|4K)4?^s@G<&SsEldB7A@hK^7za1rI zI{FqJiLYh^kf7^-RHcw-hdi8X|xF^P*7`X zH&h`yf-Ce>f1S`<8-BAu0H)6r!i%hx+S^B3OT7*#J!5yBC|;%7?6wm?8t?1IM<13j zQTmp6X6SBX#0AWScXs>h*Qs{{+fyl$VAa`qt%hrHfYGMLoSK(+ow_`-+I)8F0T?kMhhy2WLCGNBVI#u% z?`fT6yX8%X>$x)5Vunz7I^4@?+oGpW`Ch(UJNe7NC~`foSBjn8usS59<#=^0-?#Kg z-ud6rG+5(by&d)bcwf1tRGX1iu1Lm@ZsGuEfY{9ym)Qw>|Ks;hK)5QQ!_I+grzgP8 zO-4asC+Q){akS{YZBml+`aPjA5f*|o6})7g_}pn*6)wlETMYxjHK1o#7NrP&ZO@*a zXV1E+oVt0hbp2G7@79Hon3z4M$A?C35#`E^;)x(j%*?25ZOvL+nJdc6eICmA2;6!o zp<&+tiNm0@i=6W&Gwro&-;>ICj zms?vAqw$bCJ>0VZ>WmfSZrS_ynrovkb93Dpl{Kii5(Oh<2!WsQk= zN@iz`2{Q5O)g==UeIF|CIZpM)fo%-4Hwyic`nWN5G0)eRtFh5lL)%fokO7QzLbTX9 zlt{i7H45KT!^kLTY)W`PjEY@0kf3I5rnx?Gk03FS9kUZzj_+@8+9M2N`SXDg?1fN+ zXji{JIdg#;h^Xh1zMo~C>SXWnT~Fl?ew-QP#Vl~_{P|s~s%yi-4s2zEk^DOkA1+kT z*N;z|G-8vsyqi`$<;Mlc8G08b7^8P7Df8a~qAnQGR6rM8MF5sJ7kk9EmPG_woM4rCev;>mX*z z2lIaP)8^1!se(WY!k*MOecIE>0U76ykfo+d0rE3_EH{P)jZxP>F}`<4*78Eb)L5Rp z+0wM;<&JsAUtihp!M?4a_}opN8#EjyZ@Xr*hrg;EJ%)y6{WI;n9N0KXt>!){yro0mjUPGuN;3OXO*Cr6T9V|K&?r^mVU;JS z+&s^m3811b@)6P>*H`P6lxpjpwf0K-oEoK{z@4f+r{A8PZ8^LpV>tym?4w4JB<9zT@$!o#0J0s_y>Y}NN+bLoya>gvz#x8mbXpyNGkWxaXw ztIQn{`!3C)(FRfPL`RWIheZb-NTF_oN1TK(X~B5chFdHi9>%X-#`-Va3&9G?y@wG| zeQruh9~5{0R1}Q3Fm28c`*Yw4nG+gMa35s}i3Jze)=isur>~^bmS)M`O8&>6%Q^Bn zf9*J^+C^VKjgN<@FSxe0h$T!$mtQ;c2d&Pj@gkd8&0QF!S_>Mx7TU-&9z`qNDx2)@9gs9$48Nbf@T8 z#=Sn0voo3dLM~AU_|cBtTU#BAPd$0d{&jj6H)V!XV{H;-glmpr*Q z4+DCGyH|M1e8QFZehr!J458ks+NHi(6Q(cEik)fd5!jEKVtHX5Q9mZopdn-a9Fl6O zqGDNJNFS=NG%i}?hv^*wcV{x5JIMV}@u8%vXV?|(T@@UMYyA8)r!Cg>3y6=wfyvk3_9qe-`qzodvGGd*@4kKdyMC=9rBQ?T21V6*VERaZm+Ixqtq&6HBfE zuh9N6dz9B3Mjq!WLL`$omU=~WVA{t^e0n-OPJQV^Kp$3Casju7QwT`gIZ>R)nXdQl z!c_0~G}@G7s{iOueJS|ILJq zp>JwDAM@R2)Nq8R!0iZW9W-mwPF6*3GI#=1mS>=^B6yrUQ{5F^*#mn+Ndj^H8YU** z^6NjyQnOz?)jDZLM5Z93MA*Ko=*0d!ULJd^oV`pA*G7GvNBJPTK3&#ouoKFc7t%aQ zKu$0GQrCCAA=B5GYP2}vmG!>UlhXJcyRg@qLm3D=XrUo!g#!_;8bdVd0)1o$O>J(2@C`GQ04&1KE2IWKRi%Cl+7ayi)a{ z)}AjC`-k7EQk^mMRO|BdWd~IHW#?&a=TituZLC9;=;tR5=U7^0i)9SvnJ5zYknNT!g;*we3B)1~WhJ#ajCYMH=dJM!`QPH1@nsoVR z&$c0Fphft)o$$+-fx?zw>A}BkxH9(W$X+q)B?`LndnR71R7SavtDYXwM}_&b_oB(5 z99U{*(L^Dz*;@!0=VNE#MJ46P;IC~3bNv0kc3`0+_gro-YkTM6^wpbeUQ<6s4TMh9 zp#{NgtO#GOKE}q;%DSm!+t#=`eA0^p_?%ofr9+$h|W&4-g8)tdc)lV8FkT zG;L$EGp6v=ekM=tGYL#Wl>}>d^Co3NRu=F2o3?gb>k5o6#Ost_?><+dZ}Q|L@c*B~ z!+{IkoMd8RF+2T>q%}0ifFZLp@|XAy)F}4+HoiWcjE%DMl4WBZU5Kj1-QYU+=-QJ? zR#w|{?N&E$AOkKGW%el~^B|+NOLhSZS7K)aV8?u>+KLKt3JMAkVfJAhEhw!Z5B~ru zE%2|{Sp%Z54=yDp^VVBMMY7nbnZozwx;V+DuCA`bZW#Ms+nF@h8FQGi=U4OAnO~dw zx{43!`p+0*DmMi^a`&F$1JsQOk&*w|`-XOAkh5&8V{aO5aQ0RE66;%UEhFD|mGs$0 zR1D4#;sg-S_p(Z#-WnP@?YKNY*!u1oALc&TuDss2EXWis{j#CvEMZ93V^>5p8LGC! zT14ITnAmh>oqrIzM_EB&`!m4fXby0DWex|txV%hs00J!r3QrDEx}uv!_4=;4DknAlM^!Lq1(GiOY1tpz%Y!E&S|w?vZpUpu zjuaY1fv^*LnMg0YJqvSl$IqYVxP9l2?GYE?S;?p4Xo0&&#l&0$y7{TPIKH5xW1h)jyDlyXUwmMx+3;plQqtRJ5c=b?k&ag{Fm}5 z5qroYsb3l}_^qv$9_=oPyRf!GF6kt&0d?=U4~ae@Eju8vMI<@2?&Rpw5Ovu0(Mr3h zZS%e#1{L3Q5l9;6c?q5`paO z4&avEL0<;K`~uYQVd?nT7!BSEbg&OZ6*hgP^{*Kf?xy9;&y$frJ78=2`SWLoY3!>d z9Z2{p-PTJ;)-r%~UNWP#x&{Hw@YR zP%)L0J68L{WA8QRb5*x*-@M@K%bP}fpFRmOsjsj_ZTELrE9%mC|K?>|(V|zLI1E9rO45YAXb0Bch8Rv@)OU3|y?J^7G<>3(~?c2NeWJx!6 z6`&{&grR8O@O6Hm` zUo4QQalzf)9er$`x97sNQ;UWSTsX1jy_dDM3pL-J!c{dpKT3wwuvZjg4WEL(e~SG( zGb;zxLJd}xZQTt&xMmaAVL=q!Y?8uskq5JobVlBsAwy$1nA4g+r7U}M#ki@5L5u&& zmAS}kzXBBuT9HhArEF=Y2IQd?@G3ay^@SaKy}muKszQcH*3>|xr2`}s2>sPzm*z_J zO_$|7`td^Cxzn3CW)|pLuR>oz# zD3GAIkP9XZQJce;VslC^n#ANvWL@hGb#`o-`9-sdM2L!Ybhw{A55r!89Sxdx+1SX= z{7#*ok*R2t94hDv}pYvmNuWei4JhS(QYGt1>^KFUlm5rI1qp!@X zFDw;Fq3C0@wY3F!icJ*d!bG<+W+C{Wa1o>R1#PiN0=YeIY|OT0>sI75J%BzV0i6rW z(lrcTs=tG&Owq(nwm($#?jy&)=kKl*pfZY)K$01F4zR-?OdUgv##Dhhi>vkt<& zdKgI>0vTGz4KwbY3~9-H;xjWC*)vgEN<4qAuCt1$tC5!*z_3UBGyk!!!UcWk&=vTe zpA6Z|H30jM54uHO0DFk=DrKynCjyzLR4sgceB$A`Bb5H=Is)GuHC&@sR#ruNfzA;( z(CP*;Ihznf14~djXw%n7>_8mPXZ=n83mWX(lq@)kbQA<1y?FI-JITk_ml!9-Hx~Rr zkb}D;vPCD|p@G0tzI$5$JiiV5{yvU5&EMqkz@j^y1~JIM7(mzS2WL}DVVvlgg5pT` zqs+MI;qq)Tu)qEfinBx&UqWfBV)mw$SroNG^K(5twqa z?oc}y0Z9`cuzO%5vXvU;vT4|=xFDB=MKWy**W(g~Y*Xw)kOnC=IkoxyJ*Eq-15rvfK@;h2xOsM)Av%_YamVl9^SN1OQqRadp@k!|I=H1MpMMJ}8cJ zcf@CU&N$zH>MZU@unsp;jau6<-0{`m&`dw{X5?SLE^bN~sh7odxIF(SO#?TUvS9Te#b z5ZMV|OBN#S7864v;mLfL{j@s|t_6Uj1e1z^&4@xc!OKeq%%fjYQo_CG{HR885QlhG zyRtV__&HaUcwWQSK+eiGosi;S2hlb>Vq^NpX(u7p!`|BmBDd1@)lJ9;r{d=~a&@1t zN<3+QOgUw)vrt9lir}v=j@PemB$->5mOYW#d(i%^suHBzFiQ{uj(;0G#4)-IwKrv- z<8{OIjqkS}#r{$?kgbip+e2*Y)*Wo5xH{x~@~27jL=3|zK}N>?(pZXCe$|PtD!5ze zXxZkM=a$JKW~HGEUUP7Ew%VB&6*`{;*e7t;31lC^-3OXvy-X)%#L zyA3Jp7(9n$k6b4(sFhI@PvRb6R?i&K+-$uKIQaC*2dgWj042ZDHC06&oo$%^i8T{B z(3bHT89@?VuUy|{uw(uLAfGxi`JXRWeb%ob)HgnU_t`VieMT^bUEh-HRO>ShVfqO)0;ymX+}2e*~8AHe3}@33RI~uff#Zf%vwXV zs6mM=wT+F(KEp$*O*JM24-eb&!8lted2@yD(f+L;N19U50vo+|{s1XB zk3z5hGK8mF!gdc1Mq+U>cT=#O8wnHG8~Ta=SSIt6nP0Jw4h3)jdx~6w3b5r|{`!~; z;_}|NbtRN$)DtB#>P=j!h>z#TLYO%_FZ+}>JG+2eQgT;$`FcedzjBPQv{oEsWylOj zl@8QPwbl#oJ+^zud*{KIp${+KT3@YWlYL4dDt2dg7}KHhDHWq~W^HGx{Tni7o8{bG zU0+CVga=D`jNI)UFq8qf@@cWf+_2%)Zu!!UYLU5hQVs|@eFY&A#e}{N&#gzz9U2JB z@q^qWP0?zOum?kKAbxg9bQhKZhT7Ws!)+oeqiAh;3#p>@VQiq-53Q4)>y_yn;uKRoubUl1*k_4#qW~ zU1IaZ%%JPv$cNm5i;&xXaVdiEgV1@wbO<{kB12f=18=@u#lO*Nt!@=~1rA3t=nmLz zT;#hZH(DNaY1I)jO-W}PhHZ>-Weqc|2+Rh` zRDTqD7=NG`$eQ*I58qDkx~$@tHJuIcApKKKK6*rfO$O0u2qCa(v}${uy8bR0A(cwi zu`USbIYoTx(<4G<;d^C5pRO5WF#mtpwtr?c(Y4Qc@&B-CudG6?sDkiHIO#zUY{p)h zaMEKls{5i2{IkuGlKu-H*F)((Z=My{pctsg9@05f=DznTaCupuV5Iy;^2ZM$)`=otv^sW?Z10Al&E* zZrB0)#KgoD1wsVHg1r<`(je8t0eV#g#-aPv%lo2(!*48Vgv~$E!xM@alBc+b6wncE zLCoXO=xAT@Lf0Mj6W0>qo+s)83@CmeEkBnhcHZf$&Ya;Okr>EMDjn02ysLBz?mtCb zW@Bgykf7}y7)VWI<08m&`k*&9$?r3a@*L)WpGEpXIoh8gZow_-4dj=Eq=N{eQ{FPC;~;oBO-|W1XMvJlt6;rEgc=KI8XE^szT&+ zdS_6A`U({j6E8Y2VlrS4s>qq2Y?eITDY~fbvKd?h4fyQB`Eq&qM;-r@6Mht{r2q}%jmP( zWlthAq4hO609XP_h2CKDXE`|vYj`4K|LPa}_y1eVxtOi>;mT_3uU@~XABo4Z$+ z{nYcx$w^b}a%tKjosqkYVtu*_G8k$SkQ4tVP#^YEzJJ@|SdmHt2p!4G5F<5^ zWm4c2KxT?A=&B#P2`B)H(WDVACK3_{=2e#;`jvWR3||8dXYgxcqK?^YpM*r@{Y2^lf=+@V?)h_{8E@d<$@V$LLD%*((Op`&8P!Xk+tZO`+%+_x4K6d*eQ zx@K6`Nu>X5s8@wrjM^3Y=awz}mr>_B~CGYlHKZ53)qbutARzsF= zxaRbeZ_Yi*BM>HHABo$_jjnh$HZ~5|uTzp*+uDdul!Q)>utcNP`A-CoxMsMLh;$8{ zlZ}mnkr6AQ)vMDrmiW6WsMKJQc2R-dru(MMRyf*j#dROsNV%Ro5@NU=G2$voS`bv@ z+!3e&EYEeie>1b$7B41~MiyX{@9XO5pak5KXWYmqCdT-G${yHAf=@O8`(oddrg->R z+2pGnX)?E3pEc|qEV=l;7w{#q3_t@ucQaW?XH|XL)mh>?z!k+&{RX#=x0a`2xF;lq#0dh6)!?yAmCcI2888L21W)5O#B3@}V(!J&C)zkh3#ET)tccm_tA82<|H ztNHm6Qn<@^vwVlx|BwCd(N4xZNU_TCy+oi16y=1v7|!*d(E2h9n;tE$Iw&Z38$w6O zL?ISo*tIJFUF>U2t~)rCK{NKs>N_{OA?^_oVc_(fJ#(j*|B9m8pC2trC3Q|$&;=3k zLq_|nwWTgujGCCNh99xVo%bZNy9o;V{lfuF(jTf|tXM=3zK94A*`G(xX`dUCt&SkU-ugx+5#~Gx+UxGGoZiS+bfDCmYaw_C3;U1VNCY+!RTcO@V7VO^A@y7#e`18 zc;c=gJ&n1fqy!Vsi|ZyB;6%<4tAw4;ojc@2*I48?z*Y%GU_saFl`B_>{229EaT|7=gc z$NsHQH25DwSVKBmdecSHvz-&Z3bP;i8A!YU{;vcD?+!ESLYJ}Ij~?wHQanc-{yjEZ zm8)5~Ep0o<GJkzW2`uNq(B-`gE4-sbcTCLON#H+)6KfrKY32SvM#=$SF5- zq?D6HB01~{m&o_ant&5B%cZIf#2eyU5{kS0UW#vL0UzLFrcUu37-^@cFM@C1#1mX7`THaQAbxl%rb)7fNt<4lMyB!{VHWBfc zNe@^p_e#2kq`re_)M{k)yCa}K5GbNDepRX}D#9`w;xXlR-N$Ei);hd1KJZqtY(__a zT^UwJU1#TR>n}0pN2We7zuiMd9HxWB)mMWw()}r(4i6tz+IAI{3h-O{XBs=kux}+^ z_b#LjlNieG?L9d6S;(s?O5~XP;FIk%yQa7P_XF}wrzxH+G-~(3+_dem`1x zA2vNIpJB4DeEfu86#Hi47)Yl-;`O;pwN%<}OIp5ue}oR$73*bn38lRK@*7F)_~XjM zXaDVr@qtK;(yW1+_2gHtj%J)&&Q?%d{Svf^c!xLtg=vb;Dq-p`PnM%pRUf^`nY)*K z+60%gCi?x~OYxId*zFF7n4*LmR0|W2omu`l1a+0n8`5psyT#a4gv61Ip zFT}{LNot=;QEN!a(mLOjqTWM%4atF3y(_-zTyc9c4Xa$kNE4@R|0gc@nJ<#368~L~ z%BZ4ab#L2>vaQZ!tE!ni!hnvEnyE7^a*h2OXD=?p^7msNRrJ%S>l?bOOG(Kzwz?jx zlb6@MzvFoNY0lWT*MHyfY6B%&lO*6Yrl;j}&v#jFp_**4&HAF_G+XhX0bF)DT;kQE zf`W&+Nt*Zv1p=h1vheAX{Q%@qs zv?t-ePeIC=uCn%$KWT7~&lp@b((tYDg5L(fbNJsUb72UG5waSlQ z=vr2Ym6*_1tMNMQ`6p|xR*dnm+qB{(Wi;l(Gc2Up^>Z8%h!#?8l)46s*L8KD;J(Id zY4Pn9pO+ZvF3oD2BHl5`1^zET z@^*;&xWFvo*?Rej49@{kQ7!PUV==FY zPx7`?b|W`XhYO_t>boDoSbSlkD9p+_Uu@%|M7-fB-Ls-&S=%@`GC_8MgR%Zuc8f*o zY9jnWgEvdwy*rE29V=~UTwEM{Y*~1OPZq41Y3CUcxq6>JefkC@cwlr?sIW5=49UU_ zg73G`&=e2PefeS2iO3`?6#QtG<+SeM?p}bjd%={3)c$^RT|GS;kbk1oiqLe2@NA-> z7zsNq=eT~#)3cbmLQ`8iY&qwEQLZ`>N(sgdiMCE1EtJFo53z(x3^`-^3rD96_yZA( zp^FXD)py1Z6R|x(w3Q0tn9?#c^^}x+z${8<>!H65;ekU~7{Z=a(a=B(AxrJ;?a~qJ zdZV`}xHJ(6d?!K-p( z_D9wv0gD*|A<80tIf};`)GT}<4N$LcMS}bo!qR zc02z2*g+9D@|7VFWRVTSjR564au#Ych`d>#;5JrP-%ubH2wYfhzG7?J0Gpb5UWfC~ zGO{aeZ;o4ATaOPG7iCUdMvtt<`ug4yJ1eXFaZBoo{O4@MA$w<*_tQ*1M|svZ<^tSa*`9xXV#yV zpoW-m;ZdI&)1h&mppejE=aEL*3|&plcu-w?(SjcP9>Z*_Pz2p)lz1+?2=-+(?-vqk zNYhR4caUr>_43k)7CjEgMHR8UaWN4Q5lN`6KcNYTXL}=*DUGeIFJPI$DSrI;F?#;b z-!E?wHI`?8K<>J`LRiPxn4mo0K99eHTrJ*{C=U90h&P#@q~-fRO$vWMfb>7+iT^i0 zqK>Q?5S7{Z?Tp`rD0Z@QL}%o`b;#eZI!+tgw%PkDW@mAk4FyLr?X@uwFO literal 0 HcmV?d00001 diff --git a/master/inherit_graph_97.map b/master/inherit_graph_97.map new file mode 100644 index 0000000000..c574f7cd20 --- /dev/null +++ b/master/inherit_graph_97.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/master/inherit_graph_97.md5 b/master/inherit_graph_97.md5 new file mode 100644 index 0000000000..ee20cdde8c --- /dev/null +++ b/master/inherit_graph_97.md5 @@ -0,0 +1 @@ +5b4a93a1adb7fc194e6f477ef58055a5 \ No newline at end of file diff --git a/master/inherit_graph_97.png b/master/inherit_graph_97.png new file mode 100644 index 0000000000000000000000000000000000000000..3f3ba69ef0d7b191c030a8f5462cdc6d3efbc032 GIT binary patch literal 14170 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 QOM{XYR}d=`(f|B^00sf^?*IS* literal 0 HcmV?d00001 diff --git a/master/inherit_graph_98.map b/master/inherit_graph_98.map new file mode 100644 index 0000000000..03a75ffcfe --- /dev/null +++ b/master/inherit_graph_98.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_98.md5 b/master/inherit_graph_98.md5 new file mode 100644 index 0000000000..6326951bd5 --- /dev/null +++ b/master/inherit_graph_98.md5 @@ -0,0 +1 @@ +641b000bf31b64dc4c6c0d8eff3498e9 \ No newline at end of file diff --git a/master/inherit_graph_98.png b/master/inherit_graph_98.png new file mode 100644 index 0000000000000000000000000000000000000000..7d346341146bbc1681e27b929633ef19b2ed8a89 GIT binary patch literal 1369 zcmV-f1*ZCmP)K~#90?V3wSGF=#eXY8X7L9I4+rLuzDM4~}Oi^@#~CKQGW71pLr zCAg?X6a>)?%38H3x)F4-+oG!kwbO_q+5|bEKVPj@ z6Q}Ri6^q5Pu(0s$N|12GU@++QdUDGj?;x#K`&~Ye@TIb{(xV0LS0JFkT7iH9YXt%d ztd#)d<>ifzj{dYoSZI8Ct%O686nvW=#X!M2{M3~Ccn%6J27@8w*A$6FTU%QQf-o42 ztgNi=?(V|ELcqQ`IXMjt4N9dlgnA;8h|A>;4h~YpkO%st!&gix2*33=NTpI?7-qBC z1OkCXBDuP{`e~#8KOd z`vucq$NT$xl}eS8k`f&qEf$N-W;5R2)6Pzzz+$m_dwcKh?(}-SSS&_Slt!a* zIGoPTPU2k)9*@`B+FDdp#AGs26g@aNsI9FdU|>s4o6K*O?7oOo>Fyn_2J>++S;1Y zXcPzpJ3Bjo9cyZ8&d$zucXux?F1TE7d3m|p?G9FHb#)cPu$PyYrKP3G$;p|S8RDa{ zv9YeMuG`yN48sHh!T9(%hGE_-c|du zOod!7rTDJj8!gPcxhQ&SU@$#ggz1@42pk2aftimp%>7f z!jtgvm!ro#_;c`poCP_?JAPtfg2Un1?RIKUkEx(WDwRs5QgX`&*A+IKjUUkIbOb@3 zo}Nr5Q$$2WdU|@W9gRjKf*^^BiTElS5fR~XxlAS#^>v1ZhENnuNJ!Y*+gn*#iH(ib zYPEbmpTS_DD5_GatX3-#oSd8-Fr$F};GW(&1{|G$A`5@$bh?(7mi6`ZxVX50o*+}< zkC5$cQ&Usl-rmm7&x7rll9EEB(XOwr$t7G?Rz}?m{~q7p-x~}Dp-^~vd8tq++S}Xh zcDvi{)@U@ZudhTfilW3ZjpjS$fc_uz^oc(Q>MVS6baYfzRkgUd$mMcDJjqiLwDyO4 zdXSu)EEbFF>grBTPMl8X$jHd*>MCGIiA17QDo;;OA0Hq0_xH=o%b%a05rDld!PC=| z+wG2uii(VkG#CsTjmBSOe0==z@v-+k2NW00000NkvXXu0mjftV)i7 literal 0 HcmV?d00001 diff --git a/master/inherit_graph_99.map b/master/inherit_graph_99.map new file mode 100644 index 0000000000..d8a363d3c3 --- /dev/null +++ b/master/inherit_graph_99.map @@ -0,0 +1,3 @@ + + + diff --git a/master/inherit_graph_99.md5 b/master/inherit_graph_99.md5 new file mode 100644 index 0000000000..38498ec1d2 --- /dev/null +++ b/master/inherit_graph_99.md5 @@ -0,0 +1 @@ +96a6ed3f596ebd78973b57e979100dc8 \ No newline at end of file diff --git a/master/inherit_graph_99.png b/master/inherit_graph_99.png new file mode 100644 index 0000000000000000000000000000000000000000..d7feeee8bd5a83c51de87832c2b559999ab5a537 GIT binary patch literal 2370 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 c0 + + + + + + +nCine: Class Hierarchy + + + + + + + + + +

+ +
+
+ + +
+ +
+ +
+
+
Class Hierarchy
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+ + + + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + + +
+ + + +
+ + + +
+ + + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + + +
+ + + +
+ + + +
+ + + + +
+ + + + + +
+ + + +
+ + + +
+ + + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + + + + + + + + + + + + + + + + + +
+ + + + + + + + +
+ + + +
+ + + +
+ + + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + + +
+ + + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + + + + + + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+ + + +
+
+ + + + diff --git a/master/iterator_8h_source.html b/master/iterator_8h_source.html new file mode 100644 index 0000000000..cf39df2432 --- /dev/null +++ b/master/iterator_8h_source.html @@ -0,0 +1,279 @@ + + + + + + + +nCine: include/nctl/iterator.h Source File + + + + + + + + + +
+
+ + + + + + + +
+
nCine +  2024.11.r479-efb4ba7 +
+
A cross-platform 2D game engine
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
iterator.h
+
+
+
1 #ifndef NCTL_ITERATOR
+
2 #define NCTL_ITERATOR
+
3 
+
4 namespace nctl {
+
5 
+ +
8 {};
+ +
11 {};
+ +
14 {};
+
15 
+
17 template <class Iterator>
+ +
19 {};
+
20 
+
22 // OPERATIONS
+
24 
+
25 namespace {
+
26 
+
28  template <class Iterator>
+
29  inline void advance(Iterator &it, int n, RandomAccessIteratorTag)
+
30  {
+
31  it += n;
+
32  }
+
33 
+
35  template <class Iterator>
+
36  inline void advance(Iterator &it, int n, BidirectionalIteratorTag)
+
37  {
+
38  if (n < 0)
+
39  {
+
40  while (n++)
+
41  --it;
+
42  }
+
43  else
+
44  {
+
45  while (n--)
+
46  ++it;
+
47  }
+
48  }
+
49 
+
51  template <class Iterator>
+
52  inline void advance(Iterator &it, int n, ForwardIteratorTag)
+
53  {
+
54  if (n > 0)
+
55  {
+
56  while (n--)
+
57  ++it;
+
58  }
+
59  }
+
60 
+
61 }
+
62 
+
64 template <class Iterator>
+
65 inline void advance(Iterator &it, int n)
+
66 {
+
67  advance(it, n, IteratorTraits<Iterator>::IteratorCategory());
+
68 }
+
69 
+
71 template <class Iterator>
+
72 inline Iterator next(Iterator it, unsigned int n)
+
73 {
+
74  advance(it, n);
+
75  return it;
+
76 }
+
77 
+
79 template <class Iterator>
+
80 inline Iterator next(Iterator it)
+
81 {
+
82  advance(it, 1);
+
83  return it;
+
84 }
+
85 
+
87 template <class Iterator>
+
88 inline Iterator prev(Iterator it, unsigned int n)
+
89 {
+
90  advance(it, -n);
+
91  return it;
+
92 }
+
93 
+
95 template <class Iterator>
+
96 inline Iterator prev(Iterator it)
+
97 {
+
98  advance(it, -1);
+
99  return it;
+
100 }
+
101 
+
102 namespace {
+
103 
+
105  template <class RandomAccessIterator>
+
106  inline int distance(RandomAccessIterator &first, const RandomAccessIterator &last, RandomAccessIteratorTag)
+
107  {
+
108  return last - first;
+
109  }
+
110 
+
112  template <class ForwardIterator>
+
113  inline int distance(ForwardIterator &first, const ForwardIterator &last, ForwardIteratorTag)
+
114  {
+
115  int counter = 0;
+
116 
+
117  for (; first != last; ++first)
+
118  counter++;
+
119 
+
120  return counter;
+
121  }
+
122 
+
123 }
+
124 
+
126 template <class Iterator>
+
127 inline int distance(Iterator first, const Iterator last)
+
128 {
+
129  return distance(first, last, IteratorTraits<Iterator>::IteratorCategory());
+
130 }
+
131 
+
133 // REVERSE RANGE ADAPTER
+
135 
+
136 template <class T>
+ +
138 {
+
139  T &iterable;
+
140 };
+
141 
+
142 template <class T>
+
143 auto begin(ReversionWrapper<T> c) -> decltype(rBegin(c.iterable))
+
144 {
+
145  return rBegin(c.iterable);
+
146 }
+
147 
+
148 template <class T>
+
149 auto end(ReversionWrapper<T> c) -> decltype(rEnd(c.iterable))
+
150 {
+
151  return rEnd(c.iterable);
+
152 }
+
153 
+
154 template <class T>
+
155 ReversionWrapper<T> reverse(T &&iterable)
+
156 {
+
157  return { iterable };
+
158 }
+
159 
+
161 // RANGE
+
163 
+
164 template <class Container>
+
165 typename Container::Iterator begin(Container &c)
+
166 {
+
167  return c.begin();
+
168 }
+
169 
+
170 template <class Container>
+
171 typename Container::ConstIterator cBegin(const Container &c)
+
172 {
+
173  return c.begin();
+
174 }
+
175 
+
176 template <class Container>
+
177 typename Container::Iterator end(Container &c)
+
178 {
+
179  return c.end();
+
180 }
+
181 
+
182 template <class Container>
+
183 typename Container::ConstIterator cEnd(const Container &c)
+
184 {
+
185  return c.end();
+
186 }
+
187 
+
188 template <class Container>
+
189 typename Container::ReverseIterator rBegin(Container &c)
+
190 {
+
191  return c.rBegin();
+
192 }
+
193 
+
194 template <class Container>
+
195 typename Container::ConstReverseIterator crBegin(const Container &c)
+
196 {
+
197  return c.rBegin();
+
198 }
+
199 
+
200 template <class Container>
+
201 typename Container::ReverseIterator rEnd(Container &c)
+
202 {
+
203  return c.rEnd();
+
204 }
+
205 
+
206 template <class Container>
+
207 typename Container::ConstReverseIterator crEnd(const Container &c)
+
208 {
+
209  return c.rEnd();
+
210 }
+
211 
+
212 }
+
213 
+
214 #endif
+
Dispatching tag for iterators that can move both ways, one element at a time.
Definition: iterator.h:11
+
Dispatching tag for iterators that can only move forward, one element at a time.
Definition: iterator.h:8
+
Base iterator traits structure.
Definition: iterator.h:19
+
Dispatching tag for iterators that can jump arbitrary distances in both ways.
Definition: iterator.h:14
+
Definition: iterator.h:138
+
+ + + + diff --git a/master/jquery.js b/master/jquery.js new file mode 100644 index 0000000000..103c32d79b --- /dev/null +++ b/master/jquery.js @@ -0,0 +1,35 @@ +/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element +},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** + * Copyright (c) 2007 Ariel Flesler - aflesler ○ gmail • com | https://github.com/flesler + * Licensed under MIT + * @author Ariel Flesler + * @version 2.1.2 + */ +;(function(f){"use strict";"function"===typeof define&&define.amd?define(["jquery"],f):"undefined"!==typeof module&&module.exports?module.exports=f(require("jquery")):f(jQuery)})(function($){"use strict";function n(a){return!a.nodeName||-1!==$.inArray(a.nodeName.toLowerCase(),["iframe","#document","html","body"])}function h(a){return $.isFunction(a)||$.isPlainObject(a)?a:{top:a,left:a}}var p=$.scrollTo=function(a,d,b){return $(window).scrollTo(a,d,b)};p.defaults={axis:"xy",duration:0,limit:!0};$.fn.scrollTo=function(a,d,b){"object"=== typeof d&&(b=d,d=0);"function"===typeof b&&(b={onAfter:b});"max"===a&&(a=9E9);b=$.extend({},p.defaults,b);d=d||b.duration;var u=b.queue&&1=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + * http://www.smartmenus.org/ + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file diff --git a/master/menu.js b/master/menu.js new file mode 100644 index 0000000000..2fe2214f26 --- /dev/null +++ b/master/menu.js @@ -0,0 +1,51 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+=''; + } + return result; + } + + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchEnabled) { + if (serverSide) { + $('#main-menu').append('
  • '); + } else { + $('#main-menu').append('
  • '); + } + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/master/menudata.js b/master/menudata.js new file mode 100644 index 0000000000..d1b676307f --- /dev/null +++ b/master/menudata.js @@ -0,0 +1,142 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Namespaces",url:"namespaces.html",children:[ +{text:"Namespace List",url:"namespaces.html"}]}, +{text:"Classes",url:"annotated.html",children:[ +{text:"Class List",url:"annotated.html"}, +{text:"Class Index",url:"classes.html"}, +{text:"Class Hierarchy",url:"inherits.html"}, +{text:"Class Members",url:"functions.html",children:[ +{text:"All",url:"functions.html",children:[ +{text:"a",url:"functions.html#index_a"}, +{text:"b",url:"functions_b.html#index_b"}, +{text:"c",url:"functions_c.html#index_c"}, +{text:"d",url:"functions_d.html#index_d"}, +{text:"e",url:"functions_e.html#index_e"}, +{text:"f",url:"functions_f.html#index_f"}, +{text:"g",url:"functions_g.html#index_g"}, +{text:"h",url:"functions_h.html#index_h"}, +{text:"i",url:"functions_i.html#index_i"}, +{text:"j",url:"functions_j.html#index_j"}, +{text:"k",url:"functions_k.html#index_k"}, +{text:"l",url:"functions_l.html#index_l"}, +{text:"m",url:"functions_m.html#index_m"}, +{text:"n",url:"functions_n.html#index_n"}, +{text:"o",url:"functions_o.html#index_o"}, +{text:"p",url:"functions_p.html#index_p"}, +{text:"q",url:"functions_q.html#index_q"}, +{text:"r",url:"functions_r.html#index_r"}, +{text:"s",url:"functions_s.html#index_s"}, +{text:"t",url:"functions_t.html#index_t"}, +{text:"u",url:"functions_u.html#index_u"}, +{text:"v",url:"functions_v.html#index_v"}, +{text:"w",url:"functions_w.html#index_w"}, +{text:"x",url:"functions_x.html#index_x"}, +{text:"y",url:"functions_y.html#index_y"}, +{text:"z",url:"functions_z.html#index_z"}, +{text:"~",url:"functions_~.html#index__7E"}]}, +{text:"Functions",url:"functions_func.html",children:[ +{text:"a",url:"functions_func.html#index_a"}, +{text:"b",url:"functions_func_b.html#index_b"}, +{text:"c",url:"functions_func_c.html#index_c"}, +{text:"d",url:"functions_func_d.html#index_d"}, +{text:"e",url:"functions_func_e.html#index_e"}, +{text:"f",url:"functions_func_f.html#index_f"}, +{text:"g",url:"functions_func_g.html#index_g"}, +{text:"h",url:"functions_func_h.html#index_h"}, +{text:"i",url:"functions_func_i.html#index_i"}, +{text:"j",url:"functions_func_j.html#index_j"}, +{text:"k",url:"functions_func_k.html#index_k"}, +{text:"l",url:"functions_func_l.html#index_l"}, +{text:"m",url:"functions_func_m.html#index_m"}, +{text:"n",url:"functions_func_n.html#index_n"}, +{text:"o",url:"functions_func_o.html#index_o"}, +{text:"p",url:"functions_func_p.html#index_p"}, +{text:"q",url:"functions_func_q.html#index_q"}, +{text:"r",url:"functions_func_r.html#index_r"}, +{text:"s",url:"functions_func_s.html#index_s"}, +{text:"t",url:"functions_func_t.html#index_t"}, +{text:"u",url:"functions_func_u.html#index_u"}, +{text:"v",url:"functions_func_v.html#index_v"}, +{text:"w",url:"functions_func_w.html#index_w"}, +{text:"~",url:"functions_func_~.html#index__7E"}]}, +{text:"Variables",url:"functions_vars.html",children:[ +{text:"a",url:"functions_vars.html#index_a"}, +{text:"b",url:"functions_vars.html#index_b"}, +{text:"c",url:"functions_vars.html#index_c"}, +{text:"d",url:"functions_vars.html#index_d"}, +{text:"e",url:"functions_vars.html#index_e"}, +{text:"f",url:"functions_vars.html#index_f"}, +{text:"g",url:"functions_vars.html#index_g"}, +{text:"h",url:"functions_vars.html#index_h"}, +{text:"i",url:"functions_vars.html#index_i"}, +{text:"j",url:"functions_vars.html#index_j"}, +{text:"l",url:"functions_vars.html#index_l"}, +{text:"m",url:"functions_vars.html#index_m"}, +{text:"n",url:"functions_vars.html#index_n"}, +{text:"o",url:"functions_vars.html#index_o"}, +{text:"p",url:"functions_vars.html#index_p"}, +{text:"r",url:"functions_vars.html#index_r"}, +{text:"s",url:"functions_vars.html#index_s"}, +{text:"t",url:"functions_vars.html#index_t"}, +{text:"u",url:"functions_vars.html#index_u"}, +{text:"v",url:"functions_vars.html#index_v"}, +{text:"w",url:"functions_vars.html#index_w"}, +{text:"x",url:"functions_vars.html#index_x"}, +{text:"y",url:"functions_vars.html#index_y"}, +{text:"z",url:"functions_vars.html#index_z"}]}, +{text:"Typedefs",url:"functions_type.html",children:[ +{text:"c",url:"functions_type.html#index_c"}, +{text:"i",url:"functions_type.html#index_i"}, +{text:"p",url:"functions_type.html#index_p"}, +{text:"r",url:"functions_type.html#index_r"}, +{text:"v",url:"functions_type.html#index_v"}]}, +{text:"Enumerations",url:"functions_enum.html",children:[ +{text:"a",url:"functions_enum.html#index_a"}, +{text:"b",url:"functions_enum.html#index_b"}, +{text:"c",url:"functions_enum.html#index_c"}, +{text:"d",url:"functions_enum.html#index_d"}, +{text:"f",url:"functions_enum.html#index_f"}, +{text:"g",url:"functions_enum.html#index_g"}, +{text:"l",url:"functions_enum.html#index_l"}, +{text:"m",url:"functions_enum.html#index_m"}, +{text:"o",url:"functions_enum.html#index_o"}, +{text:"p",url:"functions_enum.html#index_p"}, +{text:"r",url:"functions_enum.html#index_r"}, +{text:"s",url:"functions_enum.html#index_s"}, +{text:"t",url:"functions_enum.html#index_t"}, +{text:"w",url:"functions_enum.html#index_w"}]}, +{text:"Enumerator",url:"functions_eval.html"}, +{text:"Related Functions",url:"functions_rela.html",children:[ +{text:"a",url:"functions_rela.html#index_a"}, +{text:"h",url:"functions_rela.html#index_h"}, +{text:"l",url:"functions_rela.html#index_l"}, +{text:"o",url:"functions_rela.html#index_o"}, +{text:"s",url:"functions_rela.html#index_s"}, +{text:"t",url:"functions_rela.html#index_t"}]}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}]}]} diff --git a/master/namespacencine_1_1_lua_types.html b/master/namespacencine_1_1_lua_types.html new file mode 100644 index 0000000000..27179f0e65 --- /dev/null +++ b/master/namespacencine_1_1_lua_types.html @@ -0,0 +1,352 @@ + + + + + + + +nCine: ncine::LuaTypes Namespace Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::LuaTypes Namespace Reference
    +
    +
    + +

    The userdata types wrapped by Lua. +More...

    + + + + +

    +Enumerations

    enum  UserDataType {
    +  KEYBOARDSTATE = 0 +, JOYSTICKSTATE +, JOYMAPPEDSTATE +, VIEWPORT +,
    +  CAMERA +, SHADER +, SHADERSTATE +, TEXTURE +,
    +  SCENENODE +, DRAWABLENODE +, BASE_SPRITE +, SPRITE +,
    +  MESH_SPRITE +, ANIMATED_SPRITE +, FONT +, TEXTNODE +,
    +  AUDIOBUFFER +, IAUDIOPLAYER +, AUDIOBUFFER_PLAYER +, AUDIOSTREAM_PLAYER +,
    +  AUDIO_FILTER +, AUDIO_EFFECT_SLOT +, AUDIO_EFFECT +, AUDIO_EFFECT_PROPERTIES +,
    +  PARTICLE_SYSTEM +, PARTICLE_AFFECTOR +, UNKNOWN +
    + }
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Functions

    +template<class T >
    LuaTypes::UserDataType classToUserDataType (T *)
     
    +template<>
    LuaTypes::UserDataType classToUserDataType< KeyboardState > (KeyboardState *)
     
    +template<>
    LuaTypes::UserDataType classToUserDataType< JoystickState > (JoystickState *)
     
    +template<>
    LuaTypes::UserDataType classToUserDataType< JoyMappedState > (JoyMappedState *)
     
    +template<>
    LuaTypes::UserDataType classToUserDataType< Viewport > (Viewport *)
     
    +template<>
    LuaTypes::UserDataType classToUserDataType< Camera > (Camera *)
     
    +template<>
    LuaTypes::UserDataType classToUserDataType< Shader > (Shader *)
     
    +template<>
    LuaTypes::UserDataType classToUserDataType< ShaderState > (ShaderState *)
     
    +template<>
    LuaTypes::UserDataType classToUserDataType< Texture > (Texture *)
     
    +template<>
    LuaTypes::UserDataType classToUserDataType< SceneNode > (SceneNode *)
     
    +template<>
    LuaTypes::UserDataType classToUserDataType< DrawableNode > (DrawableNode *)
     
    +template<>
    LuaTypes::UserDataType classToUserDataType< BaseSprite > (BaseSprite *)
     
    +template<>
    LuaTypes::UserDataType classToUserDataType< Sprite > (Sprite *)
     
    +template<>
    LuaTypes::UserDataType classToUserDataType< MeshSprite > (MeshSprite *)
     
    +template<>
    LuaTypes::UserDataType classToUserDataType< AnimatedSprite > (AnimatedSprite *)
     
    +template<>
    LuaTypes::UserDataType classToUserDataType< Font > (Font *)
     
    +template<>
    LuaTypes::UserDataType classToUserDataType< TextNode > (TextNode *)
     
    +template<>
    LuaTypes::UserDataType classToUserDataType< AudioBuffer > (AudioBuffer *)
     
    +template<>
    LuaTypes::UserDataType classToUserDataType< IAudioPlayer > (IAudioPlayer *)
     
    +template<>
    LuaTypes::UserDataType classToUserDataType< AudioBufferPlayer > (AudioBufferPlayer *)
     
    +template<>
    LuaTypes::UserDataType classToUserDataType< AudioStreamPlayer > (AudioStreamPlayer *)
     
    +template<>
    LuaTypes::UserDataType classToUserDataType< AudioFilter > (AudioFilter *)
     
    +template<>
    LuaTypes::UserDataType classToUserDataType< AudioEffectSlot > (AudioEffectSlot *)
     
    +template<>
    LuaTypes::UserDataType classToUserDataType< AudioEffect > (AudioEffect *)
     
    +template<>
    LuaTypes::UserDataType classToUserDataType< AudioEffectProperties > (AudioEffectProperties *)
     
    +template<>
    LuaTypes::UserDataType classToUserDataType< ParticleSystem > (ParticleSystem *)
     
    +template<>
    LuaTypes::UserDataType classToUserDataType< ParticleAffector > (ParticleAffector *)
     
    +template<class T >
    const char * classToName (T *)
     
    +template<>
    const char * classToName< KeyboardState > (KeyboardState *)
     
    +template<>
    const char * classToName< JoystickState > (JoystickState *)
     
    +template<>
    const char * classToName< JoyMappedState > (JoyMappedState *)
     
    +template<>
    const char * classToName< Viewport > (Viewport *)
     
    +template<>
    const char * classToName< Camera > (Camera *)
     
    +template<>
    const char * classToName< Shader > (Shader *)
     
    +template<>
    const char * classToName< ShaderState > (ShaderState *)
     
    +template<>
    const char * classToName< Texture > (Texture *)
     
    +template<>
    const char * classToName< SceneNode > (SceneNode *)
     
    +template<>
    const char * classToName< DrawableNode > (DrawableNode *)
     
    +template<>
    const char * classToName< BaseSprite > (BaseSprite *)
     
    +template<>
    const char * classToName< Sprite > (Sprite *)
     
    +template<>
    const char * classToName< MeshSprite > (MeshSprite *)
     
    +template<>
    const char * classToName< AnimatedSprite > (AnimatedSprite *)
     
    +template<>
    const char * classToName< Font > (Font *)
     
    +template<>
    const char * classToName< TextNode > (TextNode *)
     
    +template<>
    const char * classToName< AudioBuffer > (AudioBuffer *)
     
    +template<>
    const char * classToName< IAudioPlayer > (IAudioPlayer *)
     
    +template<>
    const char * classToName< AudioBufferPlayer > (AudioBufferPlayer *)
     
    +template<>
    const char * classToName< AudioStreamPlayer > (AudioStreamPlayer *)
     
    +template<>
    const char * classToName< AudioFilter > (AudioFilter *)
     
    +template<>
    const char * classToName< AudioEffectSlot > (AudioEffectSlot *)
     
    +template<>
    const char * classToName< AudioEffect > (AudioEffect *)
     
    +template<>
    const char * classToName< AudioEffectProperties > (AudioEffectProperties *)
     
    +template<>
    const char * classToName< ParticleSystem > (ParticleSystem *)
     
    +template<>
    const char * classToName< ParticleAffector > (ParticleAffector *)
     
    +const char * userDataTypeToName (LuaTypes::UserDataType type)
     
    +

    Detailed Description

    +

    The userdata types wrapped by Lua.

    +
    + + + + diff --git a/master/namespacenctl_1_1_pointer_math.html b/master/namespacenctl_1_1_pointer_math.html new file mode 100644 index 0000000000..286b99609a --- /dev/null +++ b/master/namespacenctl_1_1_pointer_math.html @@ -0,0 +1,113 @@ + + + + + + + +nCine: nctl::PointerMath Namespace Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::PointerMath Namespace Reference
    +
    +
    + +

    A group of functions to perform pointer math operations. +More...

    + + + + + + + + + + + + + + + + +

    +Functions

    +void * add (void *ptr, size_t amount)
     
    +void * subtract (void *ptr, size_t amount)
     
    +uintptr_t add (void *first, void *second)
     
    +uintptr_t subtract (void *first, void *second)
     
    +void * align (void *ptr, uint8_t alignment)
     
    +uint8_t alignAdjustment (const void *ptr, uint8_t alignment)
     
    +uint8_t alignWithHeader (const void *ptr, uint8_t alignment, uint8_t headerSize)
     
    +

    Detailed Description

    +

    A group of functions to perform pointer math operations.

    +
    + + + + diff --git a/master/namespaces.html b/master/namespaces.html new file mode 100644 index 0000000000..341b4764d0 --- /dev/null +++ b/master/namespaces.html @@ -0,0 +1,388 @@ + + + + + + + +nCine: Namespace List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Namespace List
    +
    +
    +
    Here is a list of all documented namespaces with brief descriptions:
    +
    [detail level 1234]
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
     Nncine
     Nnctl
     Ntracy
    +
    +
    + + + + diff --git a/master/nav_f.png b/master/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..1392d2ded2977c344339a6c1de114a29117c8cdd GIT binary patch literal 160 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQt6&9jv*C{Z|8dR9Wvl?IX>_9 zrd5~xAKiF*%R@m>VfMBa-Et3gpV|KAtJo*kv)ec2|$%&t!h& zt0RvtmzzJcGKzjx-py;j%m3#x20g_Ki-iLj*jZ*z-oGzjeZTy~J&NsSy%S}DRx)_H L`njxgN@xNAY_~nn literal 0 HcmV?d00001 diff --git a/master/nav_g.png b/master/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5V6G8ph2b~r7& wW4*)na)p;F?Ix|0=2Ts8P<7jPd)~EwY{$;AbkwbS(gD)t>FVdQ&MBb@0J6v*EC2ui literal 0 HcmV?d00001 diff --git a/master/open.png b/master/open.png new file mode 100644 index 0000000000000000000000000000000000000000..b1b3870b717604cc6e02f9a92bd54e922fd04d0b GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDB~H z(>cc&t$MR9rY9+iue7YL`QT}%qI}@~mdAJWR~)(K-mHJ#&gek&x%A9X9sM + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/all_0.js b/master/search/all_0.js new file mode 100644 index 0000000000..5df9d218e7 --- /dev/null +++ b/master/search/all_0.js @@ -0,0 +1,126 @@ +var searchData= +[ + ['a_0',['a',['../classncine_1_1_color.html#a6c344f61bcfcf52784ac27ddfd05b3b6',1,'ncine::Color::a()'],['../classncine_1_1_colorf.html#ad13a20099c0c5d9f7c17e171c5faf05d',1,'ncine::Colorf::a()']]], + ['aabb_1',['aabb',['../classncine_1_1_drawable_node.html#a76612334ec49a455ab3c6eab7047330b',1,'ncine::DrawableNode']]], + ['aabb_5f_2',['aabb_',['../classncine_1_1_drawable_node.html#a972e103478205157b74bbac1e33bf022',1,'ncine::DrawableNode']]], + ['abgr_3',['abgr',['../classncine_1_1_color.html#adf86bc9e76a57105ee90e5dab28ab61a',1,'ncine::Color']]], + ['absalpha_4',['absAlpha',['../classncine_1_1_scene_node.html#a2f0c012c4fc9f6c4494768881e5fe969',1,'ncine::SceneNode']]], + ['absanchorpoint_5',['absAnchorPoint',['../classncine_1_1_scene_node.html#a5ed27315b3547819b8e9f6d107563036',1,'ncine::SceneNode']]], + ['abscolor_6',['absColor',['../classncine_1_1_scene_node.html#aae907bbae29c1c6d1c948f6106dae93e',1,'ncine::SceneNode']]], + ['abscolor_5f_7',['absColor_',['../classncine_1_1_scene_node.html#a98c2b2a83adf02307f04556ffe4eeaa3',1,'ncine::SceneNode']]], + ['absheight_8',['absHeight',['../classncine_1_1_text_node.html#a3366960c703477939706ff21303aadc0',1,'ncine::TextNode::absHeight()'],['../classncine_1_1_drawable_node.html#ad0ef2c8c4a250784a8c2b03e41fbde7a',1,'ncine::DrawableNode::absHeight()']]], + ['abslayer_9',['absLayer',['../classncine_1_1_scene_node.html#a81338b71f81523f8197a593b00854950',1,'ncine::SceneNode']]], + ['abslayer_5f_10',['absLayer_',['../classncine_1_1_scene_node.html#aa0175be8f70ec7dfd15dbcde8d323f10',1,'ncine::SceneNode']]], + ['abslineheight_11',['absLineHeight',['../classncine_1_1_text_node.html#a22870274f73a0c46cc1fec7669678c94',1,'ncine::TextNode']]], + ['absolutejoinpath_12',['absoluteJoinPath',['../classncine_1_1_file_system.html#abccdc3406a7b400f6f75a17d5f4e4192',1,'ncine::FileSystem']]], + ['absolutepath_13',['absolutePath',['../classncine_1_1_file_system.html#aa512485e458d587c7bed1fb2ae1b80d9',1,'ncine::FileSystem']]], + ['absposition_14',['absPosition',['../classncine_1_1_scene_node.html#aea72d2f43fcf7ddd9916c0d4442c79f5',1,'ncine::SceneNode']]], + ['absposition_5f_15',['absPosition_',['../classncine_1_1_scene_node.html#a2b4ac91b3b4837b70192e60e484abaf5',1,'ncine::SceneNode']]], + ['absrotation_16',['absRotation',['../classncine_1_1_scene_node.html#af3c18a1b8b0030c51033ea0a139c8120',1,'ncine::SceneNode']]], + ['absrotation_5f_17',['absRotation_',['../classncine_1_1_scene_node.html#ad268ade19ca3071cfe45289b23692ad0',1,'ncine::SceneNode']]], + ['absscale_18',['absScale',['../classncine_1_1_scene_node.html#ae0c054907b1ca37a9a8c85ede0070286',1,'ncine::SceneNode']]], + ['absscalefactor_5f_19',['absScaleFactor_',['../classncine_1_1_scene_node.html#a88b2c968ec5c457433feee78cefb559e',1,'ncine::SceneNode']]], + ['abssize_20',['absSize',['../classncine_1_1_drawable_node.html#a72c7c09366182065f9488fc7563feed4',1,'ncine::DrawableNode']]], + ['abswidth_21',['absWidth',['../classncine_1_1_drawable_node.html#ab8d8a808163443494d940a70e017b4a8',1,'ncine::DrawableNode::absWidth()'],['../classncine_1_1_text_node.html#aceaef72dcf76ea0e9ef6238469134153',1,'ncine::TextNode::absWidth()']]], + ['addaffector_22',['addAffector',['../classncine_1_1_particle_system.html#ab59a5deeeb2065d601bbea3a2b869de0',1,'ncine::ParticleSystem']]], + ['addanimation_23',['addAnimation',['../classncine_1_1_animated_sprite.html#a573a96b460b479499eb8c8bda68cb564',1,'ncine::AnimatedSprite::addAnimation(const RectAnimation &anim)'],['../classncine_1_1_animated_sprite.html#a37ddec47d2f75dc629964188d3270d31',1,'ncine::AnimatedSprite::addAnimation(RectAnimation &&anim)']]], + ['addchildnode_24',['addChildNode',['../classncine_1_1_scene_node.html#aa558ea962fbe909ad525bca13f046cd3',1,'ncine::SceneNode']]], + ['additive_25',['ADDITIVE',['../classncine_1_1_drawable_node.html#a78af82c1e3387546763cb57dda08b310a8d8c2c7c04ebe2b70bca10a3060ca491',1,'ncine::DrawableNode']]], + ['addjoymappingsfromfile_26',['addJoyMappingsFromFile',['../classncine_1_1_i_input_manager.html#a7fa1e8923dbb6e29b0ae23340bba4b64',1,'ncine::IInputManager']]], + ['addjoymappingsfromstrings_27',['addJoyMappingsFromStrings',['../classncine_1_1_i_input_manager.html#ac56c53896a81dca4a90fb17df2f37c4e',1,'ncine::IInputManager']]], + ['addlvaluereference_28',['addLValueReference',['../structnctl_1_1add_l_value_reference.html',1,'nctl']]], + ['addobject_29',['addObject',['../classncine_1_1_i_indexer.html#ad84435ec43d8b25906d2f382c7bb2db3',1,'ncine::IIndexer::addObject()'],['../classncine_1_1_null_indexer.html#a74f6b158fcfaa1648c1b21b94f49a7d8',1,'ncine::NullIndexer::addObject()']]], + ['addpermissions_30',['addPermissions',['../classncine_1_1_file_system.html#ae6284f5fc4c8dbe419685d5ec8a71b96',1,'ncine::FileSystem']]], + ['addrect_31',['addRect',['../classncine_1_1_rect_animation.html#a9736c0542b4df36c36a62dff3dcaa14c',1,'ncine::RectAnimation::addRect(const Recti &rect, float frameDuration)'],['../classncine_1_1_rect_animation.html#aa80cca962b0c84e0c66b1d8f10a2a56d',1,'ncine::RectAnimation::addRect(int x, int y, int w, int h, float frameDuration)'],['../classncine_1_1_rect_animation.html#a8dd0c579dc90e758a05605c23acc72d1',1,'ncine::RectAnimation::addRect(const Recti &rect)'],['../classncine_1_1_rect_animation.html#ae960a9cdfbcc5fd58450b2348502e414',1,'ncine::RectAnimation::addRect(int x, int y, int w, int h)']]], + ['addrects_32',['addRects',['../classncine_1_1_rect_animation.html#a8d9475ffa175d9051abaeee82596c8d8',1,'ncine::RectAnimation::addRects(const Vector2i &size, const Recti &srcRect, unsigned int rectsToSkip, const Vector2i &padding, float frameDuration)'],['../classncine_1_1_rect_animation.html#aba03baaa3370886508be381c88867a5d',1,'ncine::RectAnimation::addRects(const Vector2i &size, const Recti &srcRect, unsigned int rectsToSkip)'],['../classncine_1_1_rect_animation.html#a6e289df8e07638589aebcd73a4f90d88',1,'ncine::RectAnimation::addRects(const Vector2i &size, const Recti &srcRect)']]], + ['addrvaluereference_33',['addRValueReference',['../structnctl_1_1add_r_value_reference.html',1,'nctl']]], + ['affect_34',['affect',['../classncine_1_1_particle_affector.html#a5a23a12d31dd0ccdf55534527ee8fad8',1,'ncine::ParticleAffector::affect()'],['../classncine_1_1_color_affector.html#a620f6d75f744d6d2b5d620dd2777fc9b',1,'ncine::ColorAffector::affect()'],['../classncine_1_1_size_affector.html#af5b9c5b908734edf03275e2ad939830c',1,'ncine::SizeAffector::affect()'],['../classncine_1_1_rotation_affector.html#ad66f35bbe9d3f1ab87bbb5f257345c39',1,'ncine::RotationAffector::affect()'],['../classncine_1_1_position_affector.html#a371edb3f03e0173a6c96187f6fd8b11f',1,'ncine::PositionAffector::affect()'],['../classncine_1_1_velocity_affector.html#a2e0bc8571310ba3131b692776b860f54',1,'ncine::VelocityAffector::affect()'],['../classncine_1_1_particle_affector.html#abb502af507b3920944c69b93eae31203',1,'ncine::ParticleAffector::affect()']]], + ['affectors_35',['affectors',['../classncine_1_1_particle_system.html#a4a3c90963a81184fe1dd0d94b7321662',1,'ncine::ParticleSystem::affectors()'],['../classncine_1_1_particle_system.html#a33d3895ed91a82eec89b85ecc2f848fa',1,'ncine::ParticleSystem::affectors() const']]], + ['airabsorptionfactor_5f_36',['airAbsorptionFactor_',['../classncine_1_1_i_audio_player.html#a0a1ff251d214ccd9544a81a628a52b55',1,'ncine::IAudioPlayer']]], + ['alextensions_37',['ALExtensions',['../structncine_1_1_i_audio_device_1_1_a_l_extensions.html',1,'ncine::IAudioDevice']]], + ['alignment_38',['alignment',['../classncine_1_1_text_node.html#ab1fd5332757e00c8edf0c54a56f07e2b',1,'ncine::TextNode']]], + ['alignment_39',['Alignment',['../classncine_1_1_text_node.html#ad15fa8a462e0326caf05a7104913a8d3',1,'ncine::TextNode']]], + ['all_40',['all',['../classnctl_1_1_bit_set.html#af9d2b6efefd168c463d485b1aab5f3d9',1,'nctl::BitSet']]], + ['allocate_41',['allocate',['../classnctl_1_1_i_allocator.html#ab379ab0d8c9cda39d76ea06965ad8996',1,'nctl::IAllocator']]], + ['allochelpers_42',['allocHelpers',['../structnctl_1_1detail_1_1alloc_helpers.html',1,'nctl::detail']]], + ['allochelpers_3c_20true_20_3e_43',['allocHelpers< true >',['../structnctl_1_1detail_1_1alloc_helpers_3_01true_01_4.html',1,'nctl::detail']]], + ['allocmanager_44',['AllocManager',['../classnctl_1_1_alloc_manager.html',1,'nctl']]], + ['allocmanagerinitializer_45',['AllocManagerInitializer',['../classnctl_1_1_alloc_manager_initializer.html',1,'nctl']]], + ['alpha_46',['alpha',['../classncine_1_1_scene_node.html#a6e7edd280d0b4f849e81eb1d91b52d0f',1,'ncine::SceneNode']]], + ['alpha_47',['ALPHA',['../classncine_1_1_drawable_node.html#a78af82c1e3387546763cb57dda08b310a002101f8725e5c78d9f30d87f3fa4c87',1,'ncine::DrawableNode']]], + ['alphabits_48',['alphaBits',['../classncine_1_1_display_mode.html#a0a6abaf1be2e9e278152cfa3278208f3',1,'ncine::DisplayMode']]], + ['anchorpoint_49',['anchorPoint',['../classncine_1_1_drawable_node.html#a9fdc3d479066781f5dd786bb03e906f7',1,'ncine::DrawableNode']]], + ['anchorpoint_5f_50',['anchorPoint_',['../classncine_1_1_scene_node.html#a4e56af0c16394f559e3ca1f9df9326d2',1,'ncine::SceneNode']]], + ['androidapplication_51',['AndroidApplication',['../classncine_1_1_android_application.html',1,'ncine']]], + ['animatedsprite_52',['AnimatedSprite',['../classncine_1_1_animated_sprite.html#aacdf6a72d79d9cd8d10868561e95e829',1,'ncine::AnimatedSprite::AnimatedSprite(SceneNode *parent, Texture *texture, float xx, float yy)'],['../classncine_1_1_animated_sprite.html#a24cab392d9e378bb6258561ce362e061',1,'ncine::AnimatedSprite::AnimatedSprite(const AnimatedSprite &other)'],['../classncine_1_1_animated_sprite.html#aa8deaf661503751a6441d1f6c86c14bc',1,'ncine::AnimatedSprite::AnimatedSprite(AnimatedSprite &&)=default'],['../classncine_1_1_animated_sprite.html#ac9e052d9dce4d5c94bd1662d0950035a',1,'ncine::AnimatedSprite::AnimatedSprite(Texture *texture, const Vector2f &position)'],['../classncine_1_1_animated_sprite.html#a0c46c2293abac49b6d2eb2b08598963a',1,'ncine::AnimatedSprite::AnimatedSprite(Texture *texture, float xx, float yy)'],['../classncine_1_1_animated_sprite.html#a415bd54954cd48bbae36d642cb7b0428',1,'ncine::AnimatedSprite::AnimatedSprite(SceneNode *parent, Texture *texture, const Vector2f &position)'],['../classncine_1_1_animated_sprite.html#acaf4f384d25c46484edc7d257be1a8a6',1,'ncine::AnimatedSprite::AnimatedSprite(Texture *texture)'],['../classncine_1_1_animated_sprite.html#afbebac5b916029f3d28cbbd3cf287276',1,'ncine::AnimatedSprite::AnimatedSprite(SceneNode *parent, Texture *texture)'],['../classncine_1_1_animated_sprite.html#adb385156b0e5e9023c62a34af5d67d55',1,'ncine::AnimatedSprite::AnimatedSprite()'],['../classncine_1_1_animated_sprite.html',1,'ncine::AnimatedSprite']]], + ['animationindex_53',['animationIndex',['../classncine_1_1_animated_sprite.html#afb2877b77b4ff373046ab62ddefd79e9',1,'ncine::AnimatedSprite']]], + ['animations_54',['animations',['../classncine_1_1_animated_sprite.html#a84a70165163877045aa382cbabd4e149',1,'ncine::AnimatedSprite::animations()'],['../classncine_1_1_animated_sprite.html#a99993114c726603b3a9a0cfd95f309b5',1,'ncine::AnimatedSprite::animations() const']]], + ['any_55',['any',['../classnctl_1_1_bit_set.html#a0bf9d762d0448764809c58b6fb050c3c',1,'nctl::BitSet']]], + ['apitype_56',['ApiType',['../classncine_1_1_lua_state_manager.html#a827fa27232368ea58cb813a4d8666afb',1,'ncine::LuaStateManager']]], + ['appconfiguration_57',['AppConfiguration',['../classncine_1_1_file_system.html#a4bb78ad191cbc6c68de76b1123fa136c',1,'ncine::FileSystem::AppConfiguration()'],['../classncine_1_1_app_configuration.html#acfa836699ff14029fe75a014a8e836ed',1,'ncine::AppConfiguration::AppConfiguration()']]], + ['appconfiguration_58',['appConfiguration',['../classncine_1_1_application.html#ab3013f4a13fd6942d5d04b86401f57a9',1,'ncine::Application']]], + ['appconfiguration_59',['AppConfiguration',['../classncine_1_1_app_configuration.html',1,'ncine']]], + ['append_60',['append',['../classnctl_1_1_string.html#a41e7ab33e58c5d95c7256a37c4a6b0f9',1,'nctl::String::append(const char *cString)'],['../classnctl_1_1_string.html#ad1d9121afd285dbdf41f3381f2e12a12',1,'nctl::String::append(const String &other)'],['../classnctl_1_1_static_string.html#a4c08b071f99e9ec43a0478eb6054a771',1,'nctl::StaticString::append(const char *cString)'],['../classnctl_1_1_static_string.html#a55174fa02f957d6af3bfa057efdd9351',1,'nctl::StaticString::append(const StaticString< U > &other)'],['../classnctl_1_1_static_string.html#ab85f6a626b7e557a1d0c4e1b44cb1354',1,'nctl::StaticString::append(const StaticString &other)']]], + ['application_61',['Application',['../classncine_1_1_application.html',1,'ncine']]], + ['applyeffect_62',['applyEffect',['../classncine_1_1_audio_effect_slot.html#ae6a84751fc9b6567442b99745a898d6b',1,'ncine::AudioEffectSlot']]], + ['applyproperties_63',['applyProperties',['../classncine_1_1_audio_effect.html#a02a5a7f5d91e618e63becc8ec53f415d',1,'ncine::AudioEffect::applyProperties()'],['../classncine_1_1_audio_filter.html#a07344c1886af1f77e61751199df915c9',1,'ncine::AudioFilter::applyProperties()']]], + ['applysourceproperties_64',['applySourceProperties',['../classncine_1_1_i_audio_player.html#a5434a90c79eafd0471b25596976dc8df',1,'ncine::IAudioPlayer']]], + ['areaffectorsenabled_65',['areAffectorsEnabled',['../classncine_1_1_particle_system.html#a67825080b5a2c511efda4a3a207d9478',1,'ncine::ParticleSystem']]], + ['argb_66',['argb',['../classncine_1_1_color.html#a0dd0d247c199a2668fd43c1f550258c8',1,'ncine::Color']]], + ['argc_67',['argc',['../classncine_1_1_app_configuration.html#a5efb053b8be6bbd0485debc53e56cfea',1,'ncine::AppConfiguration']]], + ['argv_68',['argv',['../classncine_1_1_app_configuration.html#a17ceb9434471ec517da5fae9ce3c6bb2',1,'ncine::AppConfiguration']]], + ['array_69',['Array',['../classnctl_1_1_array.html#a4e2158fc1a5a0c4d3b58ca6857a193b1',1,'nctl::Array::Array()'],['../classnctl_1_1_array.html#a9eec10d5cf8e4bfb76c89163c214516d',1,'nctl::Array::Array(unsigned int capacity)'],['../classnctl_1_1_array.html#aa3d023ab04e4c7fd5095a5abcfd6d26d',1,'nctl::Array::Array(unsigned int capacity, ArrayMode mode)'],['../classnctl_1_1_array.html#ac9ed9eae7df604774e186d7c5393b250',1,'nctl::Array::Array(const Array &other)'],['../classnctl_1_1_array.html#a8161fd9cf18abcf3a0ea4570f22ee53e',1,'nctl::Array::Array(Array &&other)'],['../classnctl_1_1_array.html',1,'nctl::Array< T >']]], + ['array_3c_20float_20_3e_70',['Array< float >',['../classnctl_1_1_array.html',1,'nctl']]], + ['array_3c_20hashbucket_20_3e_71',['Array< HashBucket >',['../classnctl_1_1_array.html',1,'nctl']]], + ['array_3c_20ncine_3a_3acoloraffector_3a_3acolorstep_20_3e_72',['Array< ncine::ColorAffector::ColorStep >',['../classnctl_1_1_array.html',1,'nctl']]], + ['array_3c_20ncine_3a_3aluastatemanager_3a_3astatetomanager_20_3e_73',['Array< ncine::LuaStateManager::StateToManager >',['../classnctl_1_1_array.html',1,'nctl']]], + ['array_3c_20ncine_3a_3aparticle_20_2a_20_3e_74',['Array< ncine::Particle * >',['../classnctl_1_1_array.html',1,'nctl']]], + ['array_3c_20ncine_3a_3apositionaffector_3a_3apositionstep_20_3e_75',['Array< ncine::PositionAffector::PositionStep >',['../classnctl_1_1_array.html',1,'nctl']]], + ['array_3c_20ncine_3a_3arectanimation_20_3e_76',['Array< ncine::RectAnimation >',['../classnctl_1_1_array.html',1,'nctl']]], + ['array_3c_20ncine_3a_3arotationaffector_3a_3arotationstep_20_3e_77',['Array< ncine::RotationAffector::RotationStep >',['../classnctl_1_1_array.html',1,'nctl']]], + ['array_3c_20ncine_3a_3ascenenode_20_2a_20_3e_78',['Array< ncine::SceneNode * >',['../classnctl_1_1_array.html',1,'nctl']]], + ['array_3c_20ncine_3a_3asizeaffector_3a_3asizestep_20_3e_79',['Array< ncine::SizeAffector::SizeStep >',['../classnctl_1_1_array.html',1,'nctl']]], + ['array_3c_20ncine_3a_3avelocityaffector_3a_3avelocitystep_20_3e_80',['Array< ncine::VelocityAffector::VelocityStep >',['../classnctl_1_1_array.html',1,'nctl']]], + ['array_3c_20ncine_3a_3aviewport_20_2a_20_3e_81',['Array< ncine::Viewport * >',['../classnctl_1_1_array.html',1,'nctl']]], + ['array_3c_20nctl_3a_3auniqueptr_3c_20ncine_3a_3aparticle_20_3e_20_3e_82',['Array< nctl::UniquePtr< ncine::Particle > >',['../classnctl_1_1_array.html',1,'nctl']]], + ['array_3c_20nctl_3a_3auniqueptr_3c_20ncine_3a_3aparticleaffector_20_3e_20_3e_83',['Array< nctl::UniquePtr< ncine::ParticleAffector > >',['../classnctl_1_1_array.html',1,'nctl']]], + ['array_3c_20rect_3c_20int_20_3e_20_3e_84',['Array< Rect< int > >',['../classnctl_1_1_array.html',1,'nctl']]], + ['array_3c_20unsigned_20short_20_3e_85',['Array< unsigned short >',['../classnctl_1_1_array.html',1,'nctl']]], + ['array_3c_20vertex_20_3e_86',['Array< Vertex >',['../classnctl_1_1_array.html',1,'nctl']]], + ['arrayiterator_87',['ArrayIterator',['../classnctl_1_1_array_iterator.html#af9865f06250011128a57aa7e52a16abb',1,'nctl::ArrayIterator::ArrayIterator()'],['../classnctl_1_1_array_iterator.html',1,'nctl::ArrayIterator< T, IsConst >']]], + ['arrayiterator_3c_20t_2c_20true_20_3e_88',['ArrayIterator< T, true >',['../classnctl_1_1_array_iterator.html#ab9764433b26602b98a98875460cb7b67',1,'nctl::ArrayIterator']]], + ['arrayvalue_89',['arrayValue',['../classncine_1_1_i_gfx_capabilities.html#aad15b615357afb2b9b12cbfbf8178697',1,'ncine::IGfxCapabilities']]], + ['aspect_90',['aspect',['../classncine_1_1_i_gfx_device.html#a4f160540be30380d05f29e3d0ce0afe5',1,'ncine::IGfxDevice']]], + ['assetfile_91',['AssetFile',['../classncine_1_1_asset_file.html#a529d2020a0d00690856ff2baadf04ca8',1,'ncine::AssetFile::AssetFile()'],['../classncine_1_1_asset_file.html',1,'ncine::AssetFile']]], + ['assetpath_92',['assetPath',['../classncine_1_1_asset_file.html#a4bb6c0b209b50d0c281e716da8a6d075',1,'ncine::AssetFile']]], + ['assign_93',['assign',['../classnctl_1_1_static_string.html#aaf84df953fb47b9f74d6533f5f63b5d8',1,'nctl::StaticString::assign(const StaticString &source, unsigned int srcChar, unsigned int numChar)'],['../classnctl_1_1_static_string.html#a7b0c6a361398bf6210caa3e1fe982edc',1,'nctl::StaticString::assign(const StaticString< U > &source, unsigned int srcChar, unsigned int numChar)'],['../classnctl_1_1_static_string.html#a2781a12a0ac789902d76a2d9d1b7e2c3',1,'nctl::StaticString::assign(const StaticString &source)'],['../classnctl_1_1_static_string.html#a831a65bb117539af56c1c7a710fc489a',1,'nctl::StaticString::assign(const StaticString< U > &source)'],['../classnctl_1_1_static_string.html#ae4a87c7d43692ba705e85d80c3443678',1,'nctl::StaticString::assign(const char *source, unsigned int numChar)'],['../classnctl_1_1_string.html#a6fdb297366bf1a8eb598aca5037caaea',1,'nctl::String::assign(const String &source, unsigned int srcChar, unsigned int numChar)'],['../classnctl_1_1_string.html#a8eba6f69e5b98deff52e8efd538bf932',1,'nctl::String::assign(const String &source)'],['../classnctl_1_1_string.html#a6f717dbe0dbf5d029b7df80c966a9070',1,'nctl::String::assign(const char *source, unsigned int numChar)']]], + ['at_94',['at',['../classnctl_1_1_array.html#af9a6027709f448a249697a7ffd90eb92',1,'nctl::Array::at(unsigned int index) const'],['../classnctl_1_1_array.html#a4cb4680962693ce972f56a0fa0492deb',1,'nctl::Array::at(unsigned int index)'],['../classnctl_1_1_static_array.html#a78665e240668cb6d14673de915eb012a',1,'nctl::StaticArray::at(unsigned int index) const'],['../classnctl_1_1_static_array.html#a438f7e6e35675df8f6c1b8f0da98ac9a',1,'nctl::StaticArray::at(unsigned int index)'],['../classnctl_1_1_static_string.html#afee7cc68fcf6817e23db5a24c8173d1c',1,'nctl::StaticString::at(unsigned int index) const'],['../classnctl_1_1_static_string.html#abad48923d6f21bbee787fb85a3f3a1c4',1,'nctl::StaticString::at(unsigned int index)'],['../classnctl_1_1_string.html#aaad05906bd3d670b8b9c0b922b73dad7',1,'nctl::String::at(unsigned int index) const'],['../classnctl_1_1_string.html#acd20c46c4d005af2be3733d5934d08e4',1,'nctl::String::at(unsigned int index)']]], + ['atomic32_95',['Atomic32',['../classnctl_1_1_atomic32.html',1,'nctl']]], + ['atomic64_96',['Atomic64',['../classnctl_1_1_atomic64.html',1,'nctl']]], + ['attributes_97',['attributes',['../classncine_1_1_i_audio_device.html#af6a4a2d5fa00c9d95ef02b416ddafd17',1,'ncine::IAudioDevice::attributes()'],['../classncine_1_1_null_audio_device.html#a726eba084d752f4022611d64fe7eadb7',1,'ncine::NullAudioDevice::attributes()']]], + ['attributes_98',['Attributes',['../structncine_1_1_i_audio_device_1_1_attributes.html',1,'ncine::IAudioDevice']]], + ['audiobuffer_99',['AudioBuffer',['../classncine_1_1_audio_buffer.html#a1e04581802f21b948d5a7505d358309d',1,'ncine::AudioBuffer::AudioBuffer()'],['../classncine_1_1_audio_buffer.html#a35d5d7a893bf45de6cef669dad3a17af',1,'ncine::AudioBuffer::AudioBuffer(const char *bufferName, const unsigned char *bufferPtr, unsigned long int bufferSize)'],['../classncine_1_1_audio_buffer.html#a486fcd33697e8e695945ef2d7ce9409a',1,'ncine::AudioBuffer::AudioBuffer(const char *filename)'],['../classncine_1_1_audio_buffer.html#ae8db960bd3149a5b3066a481ab1165dc',1,'ncine::AudioBuffer::AudioBuffer(AudioBuffer &&other)']]], + ['audiobuffer_100',['audioBuffer',['../classncine_1_1_audio_buffer_player.html#a5260fb97e7969843e9229caccb307b1a',1,'ncine::AudioBufferPlayer']]], + ['audiobuffer_101',['AudioBuffer',['../classncine_1_1_audio_buffer.html',1,'ncine']]], + ['audiobufferplayer_102',['AudioBufferPlayer',['../classncine_1_1_audio_buffer_player.html#afe6d9726378bc6967aa746118c9a600b',1,'ncine::AudioBufferPlayer::AudioBufferPlayer()'],['../classncine_1_1_audio_buffer_player.html#a4e6750b0bd94e29525ae44ad1ec21b08',1,'ncine::AudioBufferPlayer::AudioBufferPlayer(AudioBuffer *audioBuffer)'],['../classncine_1_1_audio_buffer_player.html#a10ac8fa8f08dfb07c5dc8f5df8b4dcef',1,'ncine::AudioBufferPlayer::AudioBufferPlayer(AudioBufferPlayer &&)=default'],['../classncine_1_1_audio_buffer_player.html',1,'ncine::AudioBufferPlayer']]], + ['audiodevice_103',['audioDevice',['../classncine_1_1_service_locator.html#aaca22f75b46a4eafd10538b907de3e56',1,'ncine::ServiceLocator']]], + ['audioeffect_104',['AudioEffect',['../classncine_1_1_audio_effect.html#a385ec9dbc1c32b473bb0fba61326d9c4',1,'ncine::AudioEffect::AudioEffect()'],['../classncine_1_1_audio_effect.html#a6721c71eec3ff656b28fce94e465e7b6',1,'ncine::AudioEffect::AudioEffect(Type type)'],['../classncine_1_1_audio_effect.html#aa5b1c1074bd88a0db9ffd7d61a3e7426',1,'ncine::AudioEffect::AudioEffect(AudioEffect &&other)'],['../classncine_1_1_audio_effect.html',1,'ncine::AudioEffect']]], + ['audioeffectproperties_105',['AudioEffectProperties',['../classncine_1_1_audio_effect_properties.html#a9026e74ad71d4b7dce5b441ed10b1d25',1,'ncine::AudioEffectProperties::AudioEffectProperties()'],['../classncine_1_1_audio_effect_properties.html#a423053782a363cb2b25add259c2b144f',1,'ncine::AudioEffectProperties::AudioEffectProperties(AudioEffect::Type type)'],['../classncine_1_1_audio_effect_properties.html#a5d2bc235098da78a60b6c5f5a2987c86',1,'ncine::AudioEffectProperties::AudioEffectProperties(AudioEffectProperties &&other)=default'],['../classncine_1_1_audio_effect_properties.html#aeebfedf42c41b0862045ad9d11dd251d',1,'ncine::AudioEffectProperties::AudioEffectProperties(const AudioEffectProperties &)=default'],['../classncine_1_1_audio_effect_properties.html',1,'ncine::AudioEffectProperties']]], + ['audioeffectslot_106',['AudioEffectSlot',['../classncine_1_1_audio_effect_slot.html#aa9dfa46f177f905d8b2b56976714443c',1,'ncine::AudioEffectSlot::AudioEffectSlot()'],['../classncine_1_1_audio_effect_slot.html#a82a364de8d8cae64b72f055f9cbdea64',1,'ncine::AudioEffectSlot::AudioEffectSlot(AudioEffectSlot &&other)'],['../classncine_1_1_audio_effect_slot.html',1,'ncine::AudioEffectSlot']]], + ['audiofilter_107',['AudioFilter',['../classncine_1_1_audio_filter.html#a1504b106209f57a0c731c5e66320ac21',1,'ncine::AudioFilter::AudioFilter()'],['../classncine_1_1_audio_filter.html#a1074ad54fdc715171a6dc15ffbf03ca3',1,'ncine::AudioFilter::AudioFilter(Type type)'],['../classncine_1_1_audio_filter.html#a302061e52377e0237cd074f9dacd6749',1,'ncine::AudioFilter::AudioFilter(AudioFilter &&other)'],['../classncine_1_1_audio_filter.html',1,'ncine::AudioFilter']]], + ['audiostream_108',['AudioStream',['../classncine_1_1_audio_stream.html',1,'ncine']]], + ['audiostreamplayer_109',['AudioStreamPlayer',['../classncine_1_1_audio_stream_player.html#aabe33107dab30c7b94afde8d57263f17',1,'ncine::AudioStreamPlayer::AudioStreamPlayer(const char *bufferName, const unsigned char *bufferPtr, unsigned long int bufferSize)'],['../classncine_1_1_audio_stream_player.html#a3af964c87d30aad1407d37476da1dd7a',1,'ncine::AudioStreamPlayer::AudioStreamPlayer(const char *filename)'],['../classncine_1_1_audio_stream_player.html#ac4ef009101aa3caaab8255ef99a27b44',1,'ncine::AudioStreamPlayer::AudioStreamPlayer()'],['../classncine_1_1_audio_stream_player.html#a7b746e152dd976cfa272360c2eff3aff',1,'ncine::AudioStreamPlayer::AudioStreamPlayer(AudioStreamPlayer &&)=default'],['../classncine_1_1_audio_stream_player.html',1,'ncine::AudioStreamPlayer']]], + ['autosuspension_110',['autoSuspension',['../classncine_1_1_application.html#a37e63ec5d92280fe4d3cd3e5fa0e8a0a',1,'ncine::Application']]], + ['autowahproperties_111',['autoWahProperties',['../classncine_1_1_audio_effect_properties.html#ae339f719b87396a5610aa5b9e8fcd535',1,'ncine::AudioEffectProperties::autoWahProperties() const'],['../classncine_1_1_audio_effect_properties.html#afe2c677512c722256bfdddeb5ccca73a',1,'ncine::AudioEffectProperties::autoWahProperties()']]], + ['autowahproperties_112',['AutoWahProperties',['../structncine_1_1_audio_effect_properties_1_1_auto_wah_properties.html',1,'ncine::AudioEffectProperties']]], + ['auxfilterid_5f_113',['auxFilterId_',['../classncine_1_1_i_audio_player.html#a00452b0990291a17d7f4601586f8ffbe',1,'ncine::IAudioPlayer']]], + ['auxsendauto_114',['auxSendAuto',['../classncine_1_1_audio_effect_slot.html#acc0052deea6f128410a56ac01c3a706c',1,'ncine::AudioEffectSlot']]], + ['averageenabled_115',['averageEnabled',['../classncine_1_1_i_frame_timer.html#a8655d33793fa4516db0b02420b16532b',1,'ncine::IFrameTimer']]], + ['averagefps_116',['averageFps',['../classncine_1_1_i_frame_timer.html#a108526cce614053fc680db50fdbf5895',1,'ncine::IFrameTimer']]], + ['averageframetime_117',['averageFrameTime',['../classncine_1_1_i_frame_timer.html#a61fbb414ab2abfa06c47181c6f78f5e3',1,'ncine::IFrameTimer']]], + ['averageinterval_118',['averageInterval',['../classncine_1_1_i_frame_timer.html#afc4f35550b760771eee40f246a3d65fd',1,'ncine::IFrameTimer']]], + ['axisid_119',['axisId',['../classncine_1_1_joy_axis_event.html#a7d1fd9f94303ecb3c7bf7fa0e8321915',1,'ncine::JoyAxisEvent']]], + ['axisname_120',['axisName',['../classncine_1_1_joy_mapped_axis_event.html#ac1c70dd7cb0497d9ce638c69726131af',1,'ncine::JoyMappedAxisEvent']]], + ['axisnormvalue_121',['axisNormValue',['../classncine_1_1_joystick_state.html#a0a79036af1285dac11564d2fa900e7cf',1,'ncine::JoystickState']]], + ['axisvalue_122',['axisValue',['../classncine_1_1_joystick_state.html#a6ced33f05833432465d0fb7eef79ea55',1,'ncine::JoystickState::axisValue()'],['../classncine_1_1_joy_mapped_state.html#a74c2eecbcedd2036c27783eebf5fde0b',1,'ncine::JoyMappedState::axisValue()']]] +]; diff --git a/master/search/all_1.html b/master/search/all_1.html new file mode 100644 index 0000000000..9f80e90431 --- /dev/null +++ b/master/search/all_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/all_1.js b/master/search/all_1.js new file mode 100644 index 0000000000..e27597f06f --- /dev/null +++ b/master/search/all_1.js @@ -0,0 +1,34 @@ +var searchData= +[ + ['b_123',['b',['../classncine_1_1_color.html#aea6572114d4abe167e7e43aef2516f10',1,'ncine::Color::b()'],['../classncine_1_1_colorf.html#a8f2b0781b6eb5bb8905b8358a9f3fe85',1,'ncine::Colorf::b()'],['../classncine_1_1_color_hdr.html#a1c1f46d78a13259e830e428f0c1e0bef',1,'ncine::ColorHdr::b()']]], + ['back_124',['back',['../classnctl_1_1_array.html#a0e919f696c4c28a1338a041a40c377b8',1,'nctl::Array::back() const'],['../classnctl_1_1_array.html#a4fb4d7c244bed38ff2e2e5bb7017b592',1,'nctl::Array::back()'],['../classnctl_1_1_list.html#acab294ca9db7f04a58303c32e86435ed',1,'nctl::List::back() const'],['../classnctl_1_1_list.html#a30a7730fe471027164cc78496c490594',1,'nctl::List::back()'],['../classnctl_1_1_static_array.html#ad81054d322d4366e372ef8c357b9eafc',1,'nctl::StaticArray::back() const'],['../classnctl_1_1_static_array.html#a7d3893f0d502d931dfabcf8fa14e5a81',1,'nctl::StaticArray::back()']]], + ['backendscaleswindowsize_5f_125',['backendScalesWindowSize_',['../classncine_1_1_i_gfx_device.html#af6b1c152bf5f3b6ba7ceb0f73f0477e4',1,'ncine::IGfxDevice']]], + ['backward_126',['BACKWARD',['../classncine_1_1_rect_animation.html#a3e3d07baae76c946ae975f7dc9d740d4a6377b4908ae38f9a57fe9120cf179eb1',1,'ncine::RectAnimation']]], + ['base_127',['base',['../classnctl_1_1_reverse_iterator.html#a5da304e0a7d8897fb8e21b1a8a049ac3',1,'nctl::ReverseIterator::base()'],['../classnctl_1_1_i_allocator.html#a8fd0206ed4cfba631e0b5de5a3f4bb9f',1,'nctl::IAllocator::base()'],['../classncine_1_1_font.html#a3f17f7eb1339f0eb0ab960ddc3b050e6',1,'ncine::Font::base()']]], + ['baselistnode_128',['BaseListNode',['../classnctl_1_1_base_list_node.html',1,'nctl']]], + ['basename_129',['baseName',['../classncine_1_1_file_system.html#a39c1a69ff795b4cf40a6d8df860db572',1,'ncine::FileSystem']]], + ['basescale_130',['baseScale',['../classncine_1_1_size_affector.html#aa1a5b82023d1a4b9b103512c20a4cb61',1,'ncine::SizeAffector']]], + ['basesprite_131',['BaseSprite',['../classncine_1_1_base_sprite.html#a2e391c04b61f75cb395c8348f86f8a1a',1,'ncine::BaseSprite::BaseSprite(BaseSprite &&)=default'],['../classncine_1_1_base_sprite.html#a48458f5cff97c9f29eff1d6e69345a9c',1,'ncine::BaseSprite::BaseSprite(SceneNode *parent, Texture *texture, float xx, float yy)'],['../classncine_1_1_base_sprite.html#a72d7a8be8395dd5914e18930faecd0c5',1,'ncine::BaseSprite::BaseSprite(SceneNode *parent, Texture *texture, const Vector2f &position)'],['../classncine_1_1_base_sprite.html#ae97640019cd797f0877bfc42543fd54d',1,'ncine::BaseSprite::BaseSprite(const BaseSprite &other)'],['../classncine_1_1_base_sprite.html',1,'ncine::BaseSprite']]], + ['batchingenabled_132',['batchingEnabled',['../structncine_1_1_application_1_1_rendering_settings.html#a1de883852f071076eb5c94564c3ca304',1,'ncine::Application::RenderingSettings']]], + ['batchingwithindices_133',['batchingWithIndices',['../structncine_1_1_application_1_1_rendering_settings.html#a34161b68f640b2db0e51bbba5f196ab6',1,'ncine::Application::RenderingSettings']]], + ['begin_134',['begin',['../classnctl_1_1_static_string.html#a1ab28ced09572ff09fbf3f57c10d3dff',1,'nctl::StaticString::begin()'],['../classnctl_1_1_static_string.html#a72b017b740b6b3d99ab8fae9b544ea46',1,'nctl::StaticString::begin() const'],['../classnctl_1_1_string.html#abc6fca16bae46d0d6bf7115cf3f005a3',1,'nctl::String::begin()'],['../classnctl_1_1_string.html#a9ac5f5c75b8ffe9ffde2f8b681e4a778',1,'nctl::String::begin() const'],['../classnctl_1_1_static_hash_set.html#a7613389d4a56ee5171156ed021a1a279',1,'nctl::StaticHashSet::begin() const'],['../classnctl_1_1_static_hash_set.html#a49b421b8dbfc1b103d08a2b0b2006f25',1,'nctl::StaticHashSet::begin()'],['../classnctl_1_1_static_hash_map.html#a13eb0c17b20f5401c0178eb8ab8db646',1,'nctl::StaticHashMap::begin() const'],['../classnctl_1_1_static_hash_map.html#afde07da31e0795da850db065849c75aa',1,'nctl::StaticHashMap::begin()'],['../classnctl_1_1_static_array.html#ac07b1cc20ddfb7dc0f257e329d28ac89',1,'nctl::StaticArray::begin() const'],['../classnctl_1_1_static_array.html#a854d8041534d5be804baaf97d7d9e79d',1,'nctl::StaticArray::begin()'],['../classnctl_1_1_sparse_set.html#a1f4b039876d496df866b15fa19bc569d',1,'nctl::SparseSet::begin() const'],['../classnctl_1_1_sparse_set.html#a5616e7eb9fcdab2812dca05fc5de0b89',1,'nctl::SparseSet::begin()'],['../classnctl_1_1_list.html#a2afb4cefe00503eddb6ec3110d6cb5dc',1,'nctl::List::begin() const'],['../classnctl_1_1_list.html#a38db99682627b809755388c82eb270be',1,'nctl::List::begin()'],['../classnctl_1_1_hash_set_list.html#aab4e28186e00bc560f5270b708000c52',1,'nctl::HashSetList::begin()'],['../classnctl_1_1_hash_set_list.html#a7171498bed2cc2dfb5f9170ff5afdfa1',1,'nctl::HashSetList::begin() const'],['../classnctl_1_1_array.html#a2d4319f3628397e0c7b56e6ee7b4c40b',1,'nctl::Array::begin()'],['../classnctl_1_1_array.html#a1c3640c9ec21c67633d4f09b256f985a',1,'nctl::Array::begin() const'],['../classnctl_1_1_hash_map.html#a2f934be0e958d0c9f5b2eed6625de8b8',1,'nctl::HashMap::begin()'],['../classnctl_1_1_hash_map.html#af14cb3ef6c2efa3be860685e9a126681',1,'nctl::HashMap::begin() const'],['../classnctl_1_1_hash_map_list.html#a7f668877d10dc7cf6d1f29b89edf144c',1,'nctl::HashMapList::begin()'],['../classnctl_1_1_hash_set.html#a8d259fe2de327eb67f3af150889142c4',1,'nctl::HashSet::begin()'],['../classnctl_1_1_hash_set.html#a4c4d4178dbdb90fc2d6758f6afc14b63',1,'nctl::HashSet::begin() const'],['../classnctl_1_1_hash_map_list.html#a7025fc85e724d93f8c6c381f46c1b3f7',1,'nctl::HashMapList::begin()']]], + ['beginning_135',['BEGINNING',['../classnctl_1_1_hash_map_list_iterator.html#a3d7ab0e9064294ae36cd1e01357b6cf2a2fa24b6703b99278e867f0604b7ed4ed',1,'nctl::HashMapListIterator::BEGINNING()'],['../classnctl_1_1_static_hash_set_iterator.html#add67548140b2fd7cb3fe7a681cf47a7fa2fa24b6703b99278e867f0604b7ed4ed',1,'nctl::StaticHashSetIterator::BEGINNING()'],['../classnctl_1_1_static_hash_map_iterator.html#a41678ddc2ebf298bae98bf90bb180e20a2fa24b6703b99278e867f0604b7ed4ed',1,'nctl::StaticHashMapIterator::BEGINNING()'],['../classnctl_1_1_hash_set_list_iterator.html#ae93df2b99a08dee8b7cb51a54cc89e6aa2fa24b6703b99278e867f0604b7ed4ed',1,'nctl::HashSetListIterator::BEGINNING()'],['../classnctl_1_1_hash_set_iterator.html#a24bf0609bf8822df16c32485aa244f5ba2fa24b6703b99278e867f0604b7ed4ed',1,'nctl::HashSetIterator::BEGINNING()'],['../classnctl_1_1_hash_map_iterator.html#a61bf8679917d49a161b6caf7538be365a2fa24b6703b99278e867f0604b7ed4ed',1,'nctl::HashMapIterator::BEGINNING()']]], + ['bgra_136',['bgra',['../classncine_1_1_color.html#a9fe0a36b3bdf1b0d03a6f19c74724f9b',1,'ncine::Color']]], + ['bidirectionaliteratortag_137',['BidirectionalIteratorTag',['../structnctl_1_1_bidirectional_iterator_tag.html',1,'nctl']]], + ['bitset_138',['BitSet',['../classnctl_1_1_bit_set.html',1,'nctl']]], + ['bitset_3c_20uint8_5ft_20_3e_139',['BitSet< uint8_t >',['../classnctl_1_1_bit_set.html',1,'nctl']]], + ['blendingfactor_140',['BlendingFactor',['../classncine_1_1_drawable_node.html#ad1b743c8686244269ac779b45e289d63',1,'ncine::DrawableNode']]], + ['blendingpreset_141',['BlendingPreset',['../classncine_1_1_drawable_node.html#a78af82c1e3387546763cb57dda08b310',1,'ncine::DrawableNode']]], + ['block_142',['Block',['../structnctl_1_1_free_list_allocator_1_1_block.html',1,'nctl::FreeListAllocator']]], + ['bluebits_143',['blueBits',['../classncine_1_1_display_mode.html#a122e7a8e71be582f41a3686778bfe1df',1,'ncine::DisplayMode']]], + ['bucket_144',['bucket',['../classnctl_1_1_hash_set_list.html#ab2e3761dc865e0e0a12a3955a1121c90',1,'nctl::HashSetList::bucket()'],['../classnctl_1_1_hash_map_list.html#a441bb5e0c46f2000b63fd0b10a7139e2',1,'nctl::HashMapList::bucket(const K &key) const']]], + ['bucketamount_145',['bucketAmount',['../classnctl_1_1_hash_map_list.html#a885c1bada58343ff476d67d7f08cf770',1,'nctl::HashMapList::bucketAmount()'],['../classnctl_1_1_hash_set_list.html#ab9cc43bf106de257933296046c60c584',1,'nctl::HashSetList::bucketAmount()']]], + ['bucketsize_146',['bucketSize',['../classnctl_1_1_hash_map_list.html#a4fb0d93a1881bd40bc33f706dcd949d6',1,'nctl::HashMapList::bucketSize()'],['../classnctl_1_1_hash_set_list.html#abe510accaba1f873fd219f0d96bac9b7',1,'nctl::HashSetList::bucketSize()']]], + ['bufferid_147',['bufferId',['../classncine_1_1_audio_buffer.html#a5cfecde2e73eb24cf93151b8f0d97f1a',1,'ncine::AudioBuffer::bufferId()'],['../classncine_1_1_audio_buffer_player.html#aded180743ebbaf6a23279f53dfd94f72',1,'ncine::AudioBufferPlayer::bufferId()'],['../classncine_1_1_audio_stream.html#a8c755d69fe5fc8e182fa15cb72efd590',1,'ncine::AudioStream::bufferId()'],['../classncine_1_1_audio_stream_player.html#ac44b1267f6eb7de51be26dbdf04bc49b',1,'ncine::AudioStreamPlayer::bufferId()'],['../classncine_1_1_i_audio_player.html#afa5bbc5aa1e721edae3e8b97d4f6dc73',1,'ncine::IAudioPlayer::bufferId()']]], + ['bufferptr_148',['bufferPtr',['../classncine_1_1_i_file.html#ac4cdb3ab1f4540917a60f3074c1113e8',1,'ncine::IFile::bufferPtr() const'],['../classncine_1_1_i_file.html#ab952c7c0c47fe8cd9e9dab4786c2a7d6',1,'ncine::IFile::bufferPtr()']]], + ['buffersize_149',['bufferSize',['../classncine_1_1_audio_buffer.html#af352ddd2feba0d1af486f70aeace672f',1,'ncine::AudioBuffer::bufferSize()'],['../classncine_1_1_i_audio_player.html#acad4e8cb44123e88d2c8575a6d2e0569',1,'ncine::IAudioPlayer::bufferSize()'],['../classncine_1_1_audio_stream_player.html#a3b16f0c399c8699a51b58264120f26e6',1,'ncine::AudioStreamPlayer::bufferSize()'],['../classncine_1_1_audio_stream.html#adabfa9da9d164a70547d174d2bba7558',1,'ncine::AudioStream::bufferSize()'],['../classncine_1_1_audio_buffer_player.html#ab7be4b061b25bcf98e92a97f79b86954',1,'ncine::AudioBufferPlayer::bufferSize()']]], + ['buttonid_150',['buttonId',['../classncine_1_1_joy_button_event.html#aad379e7640b068e90716fdabf5e89208',1,'ncine::JoyButtonEvent']]], + ['buttonname_151',['buttonName',['../classncine_1_1_joy_mapped_button_event.html#af66bce342f9914a90f4eb4ea1698a2e7',1,'ncine::JoyMappedButtonEvent']]], + ['bytespersample_152',['bytesPerSample',['../classncine_1_1_audio_buffer.html#a9e5d3e8399cf9d5b759967761dcd4fab',1,'ncine::AudioBuffer::bytesPerSample()'],['../classncine_1_1_audio_buffer_player.html#aa084dc5db8d238b78f83faf9dfe324ed',1,'ncine::AudioBufferPlayer::bytesPerSample()'],['../classncine_1_1_audio_stream.html#a03632b5a49d08f41b9706df7543fa0ac',1,'ncine::AudioStream::bytesPerSample()'],['../classncine_1_1_audio_stream_player.html#a9afe9691559dfd708c871375b3a0bd0f',1,'ncine::AudioStreamPlayer::bytesPerSample()'],['../classncine_1_1_i_audio_player.html#a9749f3a99b6fe8fbe62b9a6b0697177d',1,'ncine::IAudioPlayer::bytesPerSample()']]], + ['bytespervertex_153',['bytesPerVertex',['../classncine_1_1_mesh_sprite.html#a2c7517ed391709e185c676260eb67d9c',1,'ncine::MeshSprite']]] +]; diff --git a/master/search/all_10.html b/master/search/all_10.html new file mode 100644 index 0000000000..3bf11961ff --- /dev/null +++ b/master/search/all_10.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/all_10.js b/master/search/all_10.js new file mode 100644 index 0000000000..83f616d698 --- /dev/null +++ b/master/search/all_10.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['qt5widget_891',['Qt5Widget',['../classncine_1_1_qt5_widget.html',1,'ncine']]], + ['quaternion_892',['Quaternion',['../classncine_1_1_quaternion.html',1,'ncine']]], + ['quit_893',['quit',['../classncine_1_1_application.html#ad057c44ada576793aabaf6a3e6cc8bd0',1,'ncine::Application']]] +]; diff --git a/master/search/all_11.html b/master/search/all_11.html new file mode 100644 index 0000000000..c9f79d2896 --- /dev/null +++ b/master/search/all_11.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/all_11.js b/master/search/all_11.js new file mode 100644 index 0000000000..8b87f2dcaa --- /dev/null +++ b/master/search/all_11.js @@ -0,0 +1,101 @@ +var searchData= +[ + ['r_894',['r',['../classncine_1_1_color.html#ae6f9e8ca271d1825d580e5833bcc7297',1,'ncine::Color::r()'],['../classncine_1_1_colorf.html#ad67f359ac02b4a380d7d0b56a8d08d09',1,'ncine::Colorf::r()'],['../classncine_1_1_color_hdr.html#a749ba2d528245a477ca086eb78c70f7e',1,'ncine::ColorHdr::r()']]], + ['random_895',['Random',['../classncine_1_1_random.html',1,'ncine::Random'],['../classncine_1_1_random.html#a8d5511decc385a7c978aff30fba9a0d7',1,'ncine::Random::Random()'],['../classncine_1_1_random.html#ae0019dc6b370c713cdc9afb8561938a4',1,'ncine::Random::Random(uint64_t initState, uint64_t initSequence)']]], + ['randomaccessiteratortag_896',['RandomAccessIteratorTag',['../structnctl_1_1_random_access_iterator_tag.html',1,'nctl']]], + ['rbegin_897',['rBegin',['../classnctl_1_1_list.html#ad54036d1587b9463e4f2c6b7b0cd41c3',1,'nctl::List::rBegin()'],['../classnctl_1_1_hash_set_list.html#a8ae77d9810f75d0ffb4d84c662381441',1,'nctl::HashSetList::rBegin()'],['../classnctl_1_1_hash_set_list.html#a135a0e3b14fc5cef2d700c5af7ac2303',1,'nctl::HashSetList::rBegin() const'],['../classnctl_1_1_array.html#a265f5fbf503e9ba6333d72a935e78ec7',1,'nctl::Array::rBegin()'],['../classnctl_1_1_array.html#a61333ba3c836dd6e16c9626aadaa8ce5',1,'nctl::Array::rBegin() const'],['../classnctl_1_1_hash_map.html#a90a2179f754570c323f88544c8a92c71',1,'nctl::HashMap::rBegin()'],['../classnctl_1_1_hash_map.html#a71dd04022302ada942a9113f30c2fbdf',1,'nctl::HashMap::rBegin() const'],['../classnctl_1_1_hash_map_list.html#af9c555f49fafa8a1765dcdb9dae5d526',1,'nctl::HashMapList::rBegin()'],['../classnctl_1_1_hash_map_list.html#a899fb6e8bd73ee1ed88ce4cbfe1a627d',1,'nctl::HashMapList::rBegin() const'],['../classnctl_1_1_hash_set.html#ac2c5abdb4bcbb96fa1690439e2d04d06',1,'nctl::HashSet::rBegin()'],['../classnctl_1_1_hash_set.html#a7194a502f68516c05f4a8dc97032590a',1,'nctl::HashSet::rBegin() const'],['../classnctl_1_1_sparse_set.html#aab78adc6764386e7b10753289aa1a0f5',1,'nctl::SparseSet::rBegin()'],['../classnctl_1_1_string.html#ae6d659f561e99c7e7b84cf3ec5b55fbf',1,'nctl::String::rBegin() const'],['../classnctl_1_1_string.html#aa012d0ff100c508faae3a5122d2b5617',1,'nctl::String::rBegin()'],['../classnctl_1_1_static_string.html#aacc3041dd804b5083b456b3a547d9288',1,'nctl::StaticString::rBegin() const'],['../classnctl_1_1_static_string.html#a4b99920443f38d7d808b0b4f5809e31f',1,'nctl::StaticString::rBegin()'],['../classnctl_1_1_static_hash_set.html#ae2a0626bcf739a98ef645b3be31efe27',1,'nctl::StaticHashSet::rBegin() const'],['../classnctl_1_1_static_hash_set.html#ae8ee951fd4a9039c6e285f760fdda978',1,'nctl::StaticHashSet::rBegin()'],['../classnctl_1_1_static_hash_map.html#a41ad9e50af92c078908e51cbedda3746',1,'nctl::StaticHashMap::rBegin() const'],['../classnctl_1_1_static_hash_map.html#a50457b81d144f91a45e2f6533b19072d',1,'nctl::StaticHashMap::rBegin()'],['../classnctl_1_1_static_array.html#a4b41f25869f433f4c4fbc450416d00a5',1,'nctl::StaticArray::rBegin() const'],['../classnctl_1_1_static_array.html#ac5a07a9b9d26af4896eaf0f3e2831fc0',1,'nctl::StaticArray::rBegin()'],['../classnctl_1_1_sparse_set.html#abbf608ca3fa3696c51084d7032ed299a',1,'nctl::SparseSet::rBegin()'],['../classnctl_1_1_list.html#a617dde31fc6e91512dfe0e56a1d05672',1,'nctl::List::rBegin()']]], + ['read_898',['read',['../classncine_1_1_asset_file.html#a163ad84fe0a6e5afc80dac8fee617dc8',1,'ncine::AssetFile::read()'],['../classncine_1_1_emscripten_local_file.html#ac38187352485f0a4282e0a5336e8485b',1,'ncine::EmscriptenLocalFile::read()'],['../classncine_1_1_i_file.html#a44e3c943ec929136a73394f0f49ad04a',1,'ncine::IFile::read()']]], + ['readnext_899',['readNext',['../classncine_1_1_file_system_1_1_directory.html#af0fe2caeda11aaefffb5249e933f5fe2',1,'ncine::FileSystem::Directory']]], + ['real_900',['real',['../classncine_1_1_random.html#a2926e97ff76739b4109eb36ba29be3d7',1,'ncine::Random::real(float min, float max)'],['../classncine_1_1_random.html#aae7bf3ee5c209f291716435d86fb56f3',1,'ncine::Random::real()']]], + ['reallocate_901',['reallocate',['../classnctl_1_1_i_allocator.html#af09723cf52b1ebb06ba8da3a23365327',1,'nctl::IAllocator']]], + ['rect_902',['Rect',['../classncine_1_1_rect.html',1,'ncine::Rect< T >'],['../classncine_1_1_rect.html#ab49ec1f941b89682a9340f6904328e8c',1,'ncine::Rect::Rect()']]], + ['rect_903',['rect',['../classncine_1_1_rect_animation.html#a8766f2c94f3095c2e72feb6e0a911c07',1,'ncine::RectAnimation::rect()'],['../classncine_1_1_texture.html#a5f6f64d31702a4e4b7633681f6600414',1,'ncine::Texture::rect()']]], + ['rect_904',['Rect',['../classncine_1_1_rect.html#ad3c945c971220a8e2e4abc7991ee8d27',1,'ncine::Rect::Rect()'],['../classncine_1_1_rect.html#a510613d4b3894bf001ea2594ead5e647',1,'ncine::Rect::Rect(T xx, T yy, T ww, T hh)']]], + ['rect_3c_20float_20_3e_905',['Rect< float >',['../classncine_1_1_rect.html',1,'ncine']]], + ['rect_3c_20int_20_3e_906',['Rect< int >',['../classncine_1_1_rect.html',1,'ncine']]], + ['rectangles_907',['rectangles',['../classncine_1_1_rect_animation.html#a5922fa31c7c791f738034e91c269a78c',1,'ncine::RectAnimation::rectangles() const'],['../classncine_1_1_rect_animation.html#ad9d7b3c76b83019094093c6ba759434a',1,'ncine::RectAnimation::rectangles()']]], + ['rectanimation_908',['RectAnimation',['../classncine_1_1_rect_animation.html',1,'ncine::RectAnimation'],['../classncine_1_1_rect_animation.html#a6de48ab1c94114c19f29826197266693',1,'ncine::RectAnimation::RectAnimation()'],['../classncine_1_1_rect_animation.html#a4923fae4b97715134efc54d79233f227',1,'ncine::RectAnimation::RectAnimation(float defaultFrameDuration, LoopMode loopMode, RewindMode rewindMode)']]], + ['redbits_909',['redBits',['../classncine_1_1_display_mode.html#a46c384cdbdaa91e1f712fe7c37ab9040',1,'ncine::DisplayMode']]], + ['reference_910',['Reference',['../structnctl_1_1_iterator_traits_3_01_hash_set_iterator_3_01_k_00_01_hash_func_01_4_01_4.html#a247e82244577cd9f4a8f73fce09efe83',1,'nctl::IteratorTraits< HashSetIterator< K, HashFunc > >::Reference()'],['../classnctl_1_1_hash_set_iterator.html#a73a554e691bad6d885c6327c82de1e9d',1,'nctl::HashSetIterator::Reference()'],['../structnctl_1_1_iterator_traits_3_01_hash_map_list_iterator_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4_01_4.html#a349f0d4b87964c5f38ec3bb615609180',1,'nctl::IteratorTraits< HashMapListIterator< K, T, HashFunc, true > >::Reference()'],['../structnctl_1_1_iterator_traits_3_01_hash_map_list_iterator_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4_01_4.html#a1bc849882addc64923f86608d236c7a4',1,'nctl::IteratorTraits< HashMapListIterator< K, T, HashFunc, false > >::Reference()'],['../classnctl_1_1_hash_map_list_iterator.html#a7afd44d0f11db0e7dadfa51bbe04bf97',1,'nctl::HashMapListIterator::Reference()'],['../structnctl_1_1_iterator_traits_3_01_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4_01_4.html#a0f1fd91074935ac1a81ffc6275b10c38',1,'nctl::IteratorTraits< HashMapIterator< K, T, HashFunc, true > >::Reference()'],['../structnctl_1_1_iterator_traits_3_01_static_hash_set_iterator_3_01_k_00_01_hash_func_00_01_capacity_01_4_01_4.html#a7315f7fd52e246826609f774f4bafc22',1,'nctl::IteratorTraits< StaticHashSetIterator< K, HashFunc, Capacity > >::Reference()'],['../classnctl_1_1_hash_set_list_iterator.html#ad22d0f27bc6c68ad8120118e5b0ef21e',1,'nctl::HashSetListIterator::Reference()'],['../structnctl_1_1_iterator_traits_3_01_hash_set_list_iterator_3_01_k_00_01_hash_func_01_4_01_4.html#a04c9e704b5ff1b723e05258b9bac1f54',1,'nctl::IteratorTraits< HashSetListIterator< K, HashFunc > >::Reference()'],['../classnctl_1_1_list_iterator.html#a2a01b088d5e68928ac7f1426c2e9d21e',1,'nctl::ListIterator::Reference()'],['../structnctl_1_1_iterator_traits_3_01_list_iterator_3_01_t_00_01false_01_4_01_4.html#a497d07ffb52e4794321eec3e56c601a6',1,'nctl::IteratorTraits< ListIterator< T, false > >::Reference()'],['../structnctl_1_1_iterator_traits_3_01_list_iterator_3_01_t_00_01true_01_4_01_4.html#ad79de2f423c66ae362f9c99b4e98e123',1,'nctl::IteratorTraits< ListIterator< T, true > >::Reference()'],['../classnctl_1_1_reverse_iterator.html#a10c5ffe214db5db1ced2ac36eb76cff3',1,'nctl::ReverseIterator::Reference()'],['../structnctl_1_1_iterator_traits_3_01_reverse_iterator_3_01_iterator_01_4_01_4.html#abf3e821626fa23d022f396dbdaa7bbd4',1,'nctl::IteratorTraits< ReverseIterator< Iterator > >::Reference()'],['../classnctl_1_1_sparse_set_iterator.html#a9e6d122a56d39000f0833ac5735137a5',1,'nctl::SparseSetIterator::Reference()'],['../structnctl_1_1_iterator_traits_3_01_sparse_set_iterator_3_01_t_01_4_01_4.html#a2b0add30fd1cd0272e6ad7e40b409f70',1,'nctl::IteratorTraits< SparseSetIterator< T > >::Reference()'],['../classnctl_1_1_static_hash_map_iterator.html#a7faf247aa70f3437343d2769390c7e17',1,'nctl::StaticHashMapIterator::Reference()'],['../structnctl_1_1_iterator_traits_3_01_static_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01false_01_4_01_4.html#a82fc04eea0d1180bf364e8f61550ba8f',1,'nctl::IteratorTraits< StaticHashMapIterator< K, T, HashFunc, Capacity, false > >::Reference()'],['../structnctl_1_1_iterator_traits_3_01_static_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01true_01_4_01_4.html#a0d1bc580bf952599e6f05b8c6f693509',1,'nctl::IteratorTraits< StaticHashMapIterator< K, T, HashFunc, Capacity, true > >::Reference()'],['../classnctl_1_1_static_hash_set_iterator.html#a291b8148bf3b1c3e5370e8ee672170bc',1,'nctl::StaticHashSetIterator::Reference()'],['../classnctl_1_1_hash_map_iterator.html#a36df88b26498a9425e365f87929998eb',1,'nctl::HashMapIterator::Reference()'],['../structnctl_1_1_iterator_traits_3_01_array_iterator_3_01_t_00_01true_01_4_01_4.html#aa7f22aee2ff6876a5e1892b74b7bff51',1,'nctl::IteratorTraits< ArrayIterator< T, true > >::Reference()'],['../structnctl_1_1_iterator_traits_3_01_array_iterator_3_01_t_00_01false_01_4_01_4.html#a2f446447c4ca2ba2f581ec1fef9f2e4d',1,'nctl::IteratorTraits< ArrayIterator< T, false > >::Reference()'],['../classnctl_1_1_array_iterator.html#a4a406418e4f01a4aba92bfd3f50a211c',1,'nctl::ArrayIterator::Reference()'],['../structnctl_1_1_iterator_traits_3_01_string_iterator_3_01false_01_4_01_4.html#abe9d9c1b815ea557f529bac3ecf9b095',1,'nctl::IteratorTraits< StringIterator< false > >::Reference()'],['../structnctl_1_1_iterator_traits_3_01_string_iterator_3_01true_01_4_01_4.html#ae578051a516bc24e1a44133baef680a0',1,'nctl::IteratorTraits< StringIterator< true > >::Reference()'],['../classnctl_1_1_string_iterator.html#aa232b29b2b2e18bd7523b8d0a72db935',1,'nctl::StringIterator::Reference()'],['../structnctl_1_1_iterator_traits_3_01_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4_01_4.html#ad7ea048413704513d4e6c6e111ac7780',1,'nctl::IteratorTraits< HashMapIterator< K, T, HashFunc, false > >::Reference()']]], + ['refreshrate_911',['refreshRate',['../classncine_1_1_app_configuration.html#a7cc99cc63c979ebbd2d24b8feffd35e4',1,'ncine::AppConfiguration']]], + ['registeraudiodevice_912',['registerAudioDevice',['../classncine_1_1_service_locator.html#a1f8c8920d5d978a2d03916f5e63b18fc',1,'ncine::ServiceLocator']]], + ['registerbatchedshader_913',['registerBatchedShader',['../classncine_1_1_shader.html#ab4ec5dedc419d032856e40020c31b98d',1,'ncine::Shader']]], + ['registergfxcapabilities_914',['registerGfxCapabilities',['../classncine_1_1_service_locator.html#a5453c64fa81633bf256db6501b87a593',1,'ncine::ServiceLocator']]], + ['registerindexer_915',['registerIndexer',['../classncine_1_1_service_locator.html#a92f1e3929d2d0acd78a48c1074f82e65',1,'ncine::ServiceLocator']]], + ['registerlogger_916',['registerLogger',['../classncine_1_1_service_locator.html#abd18a64e8ad291ff6610f683ca1c65cd',1,'ncine::ServiceLocator']]], + ['registerplayer_917',['registerPlayer',['../classncine_1_1_i_audio_device.html#a7797e53dc5f586eeae2abff1d744de83',1,'ncine::IAudioDevice::registerPlayer()'],['../classncine_1_1_null_audio_device.html#ab11b7ea8d1bb9b82af92dd1f7bc113e2',1,'ncine::NullAudioDevice::registerPlayer()']]], + ['registerthreadpool_918',['registerThreadPool',['../classncine_1_1_service_locator.html#ae9281101a1243d707e8b6db50df31e6c',1,'ncine::ServiceLocator']]], + ['rehash_919',['rehash',['../classnctl_1_1_hash_map.html#abcd9e35c1c06bda195717a0bf606ea7e',1,'nctl::HashMap::rehash()'],['../classnctl_1_1_hash_set.html#a80ee6580201911575af792f1552db6c8',1,'nctl::HashSet::rehash()'],['../classnctl_1_1_hash_map_list.html#aaa338f3a7e1e1266b19cab1e2bc678c8',1,'nctl::HashMapList::rehash()'],['../classnctl_1_1_sparse_set.html#a2b2d5beb10ee24b3ef271bb7e7af0218',1,'nctl::SparseSet::rehash()'],['../classnctl_1_1_hash_set_list.html#a38586a566e466e3b0a06eba549ab9071',1,'nctl::HashSetList::rehash()']]], + ['remove_920',['remove',['../classnctl_1_1_static_hash_set.html#a6d11a07b3e182010fa86fb94e72906a0',1,'nctl::StaticHashSet::remove()'],['../classnctl_1_1_static_hash_map.html#aa8fd45bfb6ad02b253056243f6c6d3db',1,'nctl::StaticHashMap::remove()'],['../classnctl_1_1_sparse_set.html#a1962338d31cd90870075e0aec19a8d93',1,'nctl::SparseSet::remove()'],['../classnctl_1_1_list.html#ab126ca316157d2acfcd228cfd97eb432',1,'nctl::List::remove()'],['../classnctl_1_1_hash_set_list.html#a4709520ceaffd631808f66d1d164f7f0',1,'nctl::HashSetList::remove()'],['../classnctl_1_1_hash_set.html#a59c68334025edd82a9559d22a5eca4c9',1,'nctl::HashSet::remove()'],['../classnctl_1_1_hash_map_list.html#ad3f40803f6a43ff150a9e1a3c2e0e4dc',1,'nctl::HashMapList::remove()'],['../classnctl_1_1_hash_map.html#a3926e00d350440192441f378d3648f86',1,'nctl::HashMap::remove()']]], + ['removeallchildrennodes_921',['removeAllChildrenNodes',['../classncine_1_1_scene_node.html#a906c46b3f4f5eeb18f9271d90cf27a8e',1,'ncine::SceneNode']]], + ['removealltextures_922',['removeAllTextures',['../classncine_1_1_viewport.html#a913c94cc9eef30500ff1d7bc489106c6',1,'ncine::Viewport']]], + ['removeat_923',['removeAt',['../classnctl_1_1_array.html#a94dbe1c315c899c97fd64c16cc5113a1',1,'nctl::Array::removeAt()'],['../classnctl_1_1_static_array.html#a6c1df4941114586939a1565c4e70f693',1,'nctl::StaticArray::removeAt()']]], + ['removechildnode_924',['removeChildNode',['../classncine_1_1_scene_node.html#aab6e1cb79070723f1562c90d9da7db90',1,'ncine::SceneNode']]], + ['removechildnodeat_925',['removeChildNodeAt',['../classncine_1_1_scene_node.html#a7f079d4183255459da9b2e2839c7cd47',1,'ncine::SceneNode']]], + ['removeextent_926',['removeExtent',['../structnctl_1_1remove_extent.html',1,'nctl']]], + ['removeextent_3c_20t_5b_5d_3e_927',['removeExtent< T[]>',['../structnctl_1_1remove_extent_3_01_t_0f_0e_4.html',1,'nctl']]], + ['removeextent_3c_20t_5bn_5d_3e_928',['removeExtent< T[N]>',['../structnctl_1_1remove_extent_3_01_t_0f_n_0e_4.html',1,'nctl']]], + ['removeif_929',['removeIf',['../classnctl_1_1_list.html#ace0f04174affffa1e82e6ab7a2776859',1,'nctl::List']]], + ['removeobject_930',['removeObject',['../classncine_1_1_null_indexer.html#ade6bd5c59cc46bb55e791cd6a9dda647',1,'ncine::NullIndexer::removeObject()'],['../classncine_1_1_i_indexer.html#a54da6968e8b002f1eeec044b724fa6e0',1,'ncine::IIndexer::removeObject()']]], + ['removepermissions_931',['removePermissions',['../classncine_1_1_file_system.html#a7e400d7dd986adc2f7a86201866400e6',1,'ncine::FileSystem']]], + ['removerange_932',['removeRange',['../classnctl_1_1_array.html#a2e07602c5d0cf652342fd24a9a35b951',1,'nctl::Array::removeRange()'],['../classnctl_1_1_static_array.html#aaec8befaaf1ced6879568adc864de925',1,'nctl::StaticArray::removeRange()']]], + ['removereference_933',['removeReference',['../structnctl_1_1remove_reference.html',1,'nctl']]], + ['removereference_3c_20t_20_26_20_3e_934',['removeReference< T & >',['../structnctl_1_1remove_reference_3_01_t_01_6_01_4.html',1,'nctl']]], + ['removereference_3c_20t_20_26_26_20_3e_935',['removeReference< T && >',['../structnctl_1_1remove_reference_3_01_t_01_6_6_01_4.html',1,'nctl']]], + ['removestep_936',['removeStep',['../classncine_1_1_particle_affector.html#a8f695479da8ead9701b936c959b32dfd',1,'ncine::ParticleAffector::removeStep()'],['../classncine_1_1_color_affector.html#a66781b467b066166a83ca6c8e58e39c9',1,'ncine::ColorAffector::removeStep()'],['../classncine_1_1_rotation_affector.html#a81cfbe76f3716f8b3515565eb1a2839d',1,'ncine::RotationAffector::removeStep()'],['../classncine_1_1_size_affector.html#a2b653bfe37906edcb0d3441db56499fe',1,'ncine::SizeAffector::removeStep()'],['../classncine_1_1_velocity_affector.html#a605ad78bcdd9533677893064581d3813',1,'ncine::VelocityAffector::removeStep()'],['../classncine_1_1_position_affector.html#a0ea314f0d4a83d6d3b1b1ac8ba37c05c',1,'ncine::PositionAffector::removeStep()']]], + ['rename_937',['rename',['../classncine_1_1_file_system.html#af8d878160882923ab0d0f6197990f772',1,'ncine::FileSystem']]], + ['rend_938',['rEnd',['../classnctl_1_1_hash_map.html#ad6e28d7e61920e1738cebd8fd1f1252d',1,'nctl::HashMap::rEnd()'],['../classnctl_1_1_hash_map.html#a4c3ae84bd039fe2e25cddbe0c6ca8be1',1,'nctl::HashMap::rEnd() const'],['../classnctl_1_1_hash_map_list.html#ada6ee82f3d4f8bd0c1bcf3afbaec4e03',1,'nctl::HashMapList::rEnd()'],['../classnctl_1_1_hash_set.html#a32a2f7cff35111a5ef25eec5d6c3ff22',1,'nctl::HashSet::rEnd()'],['../classnctl_1_1_hash_set.html#ae9b5cb30b81a9efbeda78b9d55284443',1,'nctl::HashSet::rEnd() const'],['../classnctl_1_1_hash_set_list.html#af5a81ea00209826d4991f601c8e46321',1,'nctl::HashSetList::rEnd()'],['../classnctl_1_1_array.html#aee7d2114d3234432956a4d11495d466b',1,'nctl::Array::rEnd()'],['../classnctl_1_1_list.html#a65e7e6f3c03b7818bf6d1ae5f325ccee',1,'nctl::List::rEnd()'],['../classnctl_1_1_list.html#a91eea77e48248ec89365543b7ab3cac4',1,'nctl::List::rEnd() const'],['../classnctl_1_1_sparse_set.html#a64ea7143ffebee9e54195946e7997167',1,'nctl::SparseSet::rEnd()'],['../classnctl_1_1_hash_map_list.html#a0b56bbb152178aac7f13216e7b37be5b',1,'nctl::HashMapList::rEnd()'],['../classnctl_1_1_sparse_set.html#a51c41c8b44ced9de2820005e8093727b',1,'nctl::SparseSet::rEnd()'],['../classnctl_1_1_static_array.html#a5e767e9b6d6d8d84f7cb64a5d09ccd64',1,'nctl::StaticArray::rEnd()'],['../classnctl_1_1_static_array.html#a4eb3ec3fe6dfc7e24cb3213f70175a23',1,'nctl::StaticArray::rEnd() const'],['../classnctl_1_1_static_hash_map.html#a6c8669f41b01b44230f4afd2385a946f',1,'nctl::StaticHashMap::rEnd()'],['../classnctl_1_1_hash_set_list.html#a74546aeaed4688c99ce3c6d28841a4fb',1,'nctl::HashSetList::rEnd()'],['../classnctl_1_1_static_hash_set.html#ae3121faf1d18b7bd3280044209d924f6',1,'nctl::StaticHashSet::rEnd()'],['../classnctl_1_1_static_hash_map.html#accba49c1c7a930ded07967bad4ac29d8',1,'nctl::StaticHashMap::rEnd()'],['../classnctl_1_1_static_hash_set.html#af35b41b5ffe23a1fb72522d62e6e3cd2',1,'nctl::StaticHashSet::rEnd()'],['../classnctl_1_1_static_string.html#ac8b1cced75bfd3c21fddf7dbac564c08',1,'nctl::StaticString::rEnd()'],['../classnctl_1_1_string.html#a1897913a0539a1bb2e92932cf5d3754e',1,'nctl::String::rEnd()'],['../classnctl_1_1_string.html#a937bd6835427fc112364afe61c4e1c2f',1,'nctl::String::rEnd() const'],['../classnctl_1_1_static_string.html#a4828bf2d3af20d46e378dbd9c7271098',1,'nctl::StaticString::rEnd()'],['../classnctl_1_1_array.html#a4c84215ffd57d94368b9e4a0ce789939',1,'nctl::Array::rEnd()']]], + ['rendercommand_5f_939',['renderCommand_',['../classncine_1_1_drawable_node.html#a8a762aa7da39b426a956afdb0fc5dc05',1,'ncine::DrawableNode']]], + ['rendercommandpoolsize_940',['renderCommandPoolSize',['../classncine_1_1_app_configuration.html#a604baf63f3c2a11c29e023052c4f1481',1,'ncine::AppConfiguration']]], + ['renderdoccapture_941',['RenderDocCapture',['../classncine_1_1_render_doc_capture.html',1,'ncine']]], + ['renderingsettings_942',['RenderingSettings',['../structncine_1_1_application_1_1_rendering_settings.html',1,'ncine::Application']]], + ['renderingsettings_943',['renderingSettings',['../classncine_1_1_application.html#a7b7e2b0d986c414d52b907d3cbbbf061',1,'ncine::Application']]], + ['rendermode_944',['RenderMode',['../classncine_1_1_font.html#a735257cb2d67a869321ca78922bee774',1,'ncine::Font']]], + ['rendermode_945',['renderMode',['../classncine_1_1_font.html#a69b3a0079b515195cd1e7270bb89c625',1,'ncine::Font::renderMode()'],['../classncine_1_1_text_node.html#ad6aa6e328bb6ad054e55da88362c6dc9',1,'ncine::TextNode::renderMode()']]], + ['renderqueue_5f_946',['renderQueue_',['../classncine_1_1_viewport.html#afcb7f7af45a49e0042dfc928533f9bb5',1,'ncine::Viewport']]], + ['replace_947',['replace',['../classnctl_1_1_static_string.html#a9183406857d30072b840ddd39aef8e54',1,'nctl::StaticString::replace()'],['../classnctl_1_1_string.html#a8950132836347cb8bb169efc31d6a874',1,'nctl::String::replace(const char *source, unsigned int numChar, unsigned int destChar)'],['../classnctl_1_1_string.html#a6e265070a55255eea0502f208eb65fed',1,'nctl::String::replace(const String &source, unsigned int srcChar, unsigned int numChar, unsigned int destChar)'],['../classnctl_1_1_static_string.html#a21dad0b9d7ec0751da0e03acb5bf0998',1,'nctl::StaticString::replace(const StaticString &source, unsigned int srcChar, unsigned int numChar, unsigned int destChar)'],['../classnctl_1_1_static_string.html#a55b3543253eec99de49b9ed8480c654f',1,'nctl::StaticString::replace(const StaticString< U > &source, unsigned int srcChar, unsigned int numChar, unsigned int destChar)']]], + ['reset_948',['reset',['../classnctl_1_1_bit_set.html#a26650622274ad27537944fe43ce0c3da',1,'nctl::BitSet::reset()'],['../classncine_1_1_timer.html#a9f20cf492255892f45955b51c0fdce41',1,'ncine::Timer::reset()'],['../classnctl_1_1_bit_set.html#a2426b61f5d832055dcd6a48978b79a73',1,'nctl::BitSet::reset()']]], + ['resetautowahproperties_949',['resetAutoWahProperties',['../classncine_1_1_audio_effect_properties.html#a0c3ed840c3a7ce3808ff2a27ad9eb4e5',1,'ncine::AudioEffectProperties']]], + ['resetchorusproperties_950',['resetChorusProperties',['../classncine_1_1_audio_effect_properties.html#a919a72c5b91454e07d15d3af82ffc852',1,'ncine::AudioEffectProperties']]], + ['resetcompressorproperties_951',['resetCompressorProperties',['../classncine_1_1_audio_effect_properties.html#a4278dc0b2d73b73ef82cba5e69910c78',1,'ncine::AudioEffectProperties']]], + ['resetdistortionproperties_952',['resetDistortionProperties',['../classncine_1_1_audio_effect_properties.html#a46737b4f04624061a2308ca5e541c3f7',1,'ncine::AudioEffectProperties']]], + ['reseteaxreverbproperties_953',['resetEaxReverbProperties',['../classncine_1_1_audio_effect_properties.html#ac0916f78454dca273ea3ca97ce626bde',1,'ncine::AudioEffectProperties']]], + ['resetechoproperties_954',['resetEchoProperties',['../classncine_1_1_audio_effect_properties.html#a5f6753a75330ec18c2b4ad82125397bf',1,'ncine::AudioEffectProperties']]], + ['resetequalizerproperties_955',['resetEqualizerProperties',['../classncine_1_1_audio_effect_properties.html#a4c55a44c35776822fc447bc4e411f4c8',1,'ncine::AudioEffectProperties']]], + ['resetflangerproperties_956',['resetFlangerProperties',['../classncine_1_1_audio_effect_properties.html#a3abf2fa89e72b70e8f6649f8b86458ea',1,'ncine::AudioEffectProperties']]], + ['resetfrequencyshifterproperties_957',['resetFrequencyShifterProperties',['../classncine_1_1_audio_effect_properties.html#a6314288798b880a1b1c01d59219865a2',1,'ncine::AudioEffectProperties']]], + ['resetpitchshifterproperties_958',['resetPitchShifterProperties',['../classncine_1_1_audio_effect_properties.html#a99b34095c686fb395ffa780d6815a9f2',1,'ncine::AudioEffectProperties']]], + ['resetreverbproperties_959',['resetReverbProperties',['../classncine_1_1_audio_effect_properties.html#a0b0cbd4ee2a9e39aba142efa2751b0fe',1,'ncine::AudioEffectProperties']]], + ['resetringmodulatorproperties_960',['resetRingModulatorProperties',['../classncine_1_1_audio_effect_properties.html#acaf249c75f713ce39e55d50b1399e69a',1,'ncine::AudioEffectProperties']]], + ['resetshader_961',['resetShader',['../classncine_1_1_shader_state.html#a20b513e71ac6ab6a77f44148e0c7cecc',1,'ncine::ShaderState']]], + ['resettexture_962',['resetTexture',['../classncine_1_1_base_sprite.html#ac4707cdba84051e41caedc5cba478712',1,'ncine::BaseSprite']]], + ['resetvocalmorpherproperties_963',['resetVocalMorpherProperties',['../classncine_1_1_audio_effect_properties.html#a1f1541e3ec0a498b3739df40aa5200b4',1,'ncine::AudioEffectProperties']]], + ['resizable_964',['resizable',['../classncine_1_1_app_configuration.html#a58af6e4dbab2c62675b25f640713ac71',1,'ncine::AppConfiguration']]], + ['resizescreenviewport_965',['resizeScreenViewport',['../classncine_1_1_application.html#a343b4c139161cdc5ad9499df65eb677f',1,'ncine::Application']]], + ['resolution_966',['resolution',['../classncine_1_1_app_configuration.html#ada0d329fa16c79eee2fc306397237f95',1,'ncine::AppConfiguration::resolution()'],['../classncine_1_1_application.html#a3b4d6e86fffccae67ac17c75645a8813',1,'ncine::Application::resolution()'],['../classncine_1_1_i_gfx_device.html#ae552e1170456d0a19054cfd213a7afa1',1,'ncine::IGfxDevice::resolution()']]], + ['resolutionint_967',['resolutionInt',['../classncine_1_1_application.html#a35dacbad2bfcf6a65ff891bdec97fe72',1,'ncine::Application']]], + ['resume_968',['resume',['../classncine_1_1_application.html#a1b3c625dc7d504bae6a963e78acf70d7',1,'ncine::Application']]], + ['resumedevice_969',['resumeDevice',['../classncine_1_1_i_audio_device.html#ae7e6fa932719f2522aef58993942eeab',1,'ncine::IAudioDevice::resumeDevice()'],['../classncine_1_1_null_audio_device.html#a154a277f2f893699be99a216fdf2b428',1,'ncine::NullAudioDevice::resumeDevice()']]], + ['resumeplayers_970',['resumePlayers',['../classncine_1_1_i_audio_device.html#acf8d6db4605077975f95d6c20c576450',1,'ncine::IAudioDevice::resumePlayers()'],['../classncine_1_1_null_audio_device.html#a3c737def21864c3ca8f25b16aa39e3b2',1,'ncine::NullAudioDevice::resumePlayers()']]], + ['retrieveinfolog_971',['retrieveInfoLog',['../classncine_1_1_shader.html#aaa173c18dd050850b925efc66c20e6d9',1,'ncine::Shader']]], + ['retrieveinfologlength_972',['retrieveInfoLogLength',['../classncine_1_1_shader.html#a0a49d597fa2ce8576809abbc49986288',1,'ncine::Shader']]], + ['reverbproperties_973',['ReverbProperties',['../structncine_1_1_audio_effect_properties_1_1_reverb_properties.html',1,'ncine::AudioEffectProperties']]], + ['reverbproperties_974',['reverbProperties',['../classncine_1_1_audio_effect_properties.html#a98a0b141da9ef22557c857b98365a5d9',1,'ncine::AudioEffectProperties::reverbProperties() const'],['../classncine_1_1_audio_effect_properties.html#afc11f667c886ce5bab437d5b5fce2a80',1,'ncine::AudioEffectProperties::reverbProperties()']]], + ['reverseiterator_975',['ReverseIterator',['../classnctl_1_1_reverse_iterator.html',1,'nctl::ReverseIterator< Iterator >'],['../classnctl_1_1_list.html#aaff52cf986ccbe54eb25d4e2f4301cc1',1,'nctl::List::ReverseIterator()'],['../classnctl_1_1_hash_set_list.html#ab5feb39736d2d3bd2a9f79b88a2debb7',1,'nctl::HashSetList::ReverseIterator()'],['../classnctl_1_1_static_string.html#a381f71b884f9233076307795964e85eb',1,'nctl::StaticString::ReverseIterator()'],['../classnctl_1_1_hash_set.html#a17d87403cde193815c6449e058912cf4',1,'nctl::HashSet::ReverseIterator()'],['../classnctl_1_1_sparse_set.html#afa8106c13e1df8fc6c4a405a739758bc',1,'nctl::SparseSet::ReverseIterator()'],['../classnctl_1_1_static_array.html#acc1ad65e8e4e6425bd754d098472539a',1,'nctl::StaticArray::ReverseIterator()'],['../classnctl_1_1_static_hash_map.html#adce71beb0c037f15c26ca5ab02541a84',1,'nctl::StaticHashMap::ReverseIterator()'],['../classnctl_1_1_static_hash_set.html#a416ce5c1df7f6273ad552e032f110afa',1,'nctl::StaticHashSet::ReverseIterator()'],['../classnctl_1_1_hash_map_list.html#a816afa8ead2c90d0c51363142b5c1f96',1,'nctl::HashMapList::ReverseIterator()'],['../classnctl_1_1_hash_map.html#a21f6f46b6db6da955bc1d5f63e4039af',1,'nctl::HashMap::ReverseIterator()'],['../classnctl_1_1_array.html#acb1e98c7c038f4f988a9de6397f41ba4',1,'nctl::Array::ReverseIterator()'],['../classnctl_1_1_string.html#a785fbc0abe3cdd8aceb187e141c1bd63',1,'nctl::String::ReverseIterator()'],['../classnctl_1_1_reverse_iterator.html#a503cf189adaaf61877ea78a5a10a2986',1,'nctl::ReverseIterator::ReverseIterator()']]], + ['reversionwrapper_976',['ReversionWrapper',['../structnctl_1_1_reversion_wrapper.html',1,'nctl']]], + ['rewindmode_977',['rewindMode',['../classncine_1_1_rect_animation.html#ac791228585a3900fb7872ed1f802ac3a',1,'ncine::RectAnimation']]], + ['rewindmode_978',['RewindMode',['../classncine_1_1_rect_animation.html#a3e3d07baae76c946ae975f7dc9d740d4',1,'ncine::RectAnimation']]], + ['rgba_979',['rgba',['../classncine_1_1_color.html#aec2142db3d40d3bdef82b462fd46e42c',1,'ncine::Color']]], + ['ringmodulatorproperties_980',['RingModulatorProperties',['../structncine_1_1_audio_effect_properties_1_1_ring_modulator_properties.html',1,'ncine::AudioEffectProperties']]], + ['ringmodulatorproperties_981',['ringModulatorProperties',['../classncine_1_1_audio_effect_properties.html#afd64d46daabb8bdf82db03aebb142750',1,'ncine::AudioEffectProperties::ringModulatorProperties() const'],['../classncine_1_1_audio_effect_properties.html#a2de4261ddfd218a623b86140a5359420',1,'ncine::AudioEffectProperties::ringModulatorProperties()']]], + ['roomroolofffactor_5f_982',['roomRooloffFactor_',['../classncine_1_1_i_audio_player.html#a43e07ea2c916e0532adfd2c0de945c42',1,'ncine::IAudioPlayer']]], + ['rootnode_983',['rootNode',['../classncine_1_1_application.html#a33e9164d639a545f0e95639db55e9286',1,'ncine::Application::rootNode()'],['../classncine_1_1_viewport.html#a791430a4b6675825d9c201ea6d7ac41e',1,'ncine::Viewport::rootNode() const'],['../classncine_1_1_viewport.html#abcf9fdc9136a60e1a93675e2f65d5102',1,'ncine::Viewport::rootNode()']]], + ['rootnode_5f_984',['rootNode_',['../classncine_1_1_viewport.html#a5f8c86660919de890ccddfb959393f17',1,'ncine::Viewport']]], + ['rotation_985',['rotation',['../classncine_1_1_scene_node.html#a127ac655240e7ac1b39849fec04accbf',1,'ncine::SceneNode']]], + ['rotation_5f_986',['rotation_',['../classncine_1_1_scene_node.html#ab205fb0f0c2c8747737babb962197bbd',1,'ncine::SceneNode']]], + ['rotationaffector_987',['RotationAffector',['../classncine_1_1_rotation_affector.html',1,'ncine::RotationAffector'],['../classncine_1_1_rotation_affector.html#a2f2b94e45195f4b34cd8f0b5ed6ac255',1,'ncine::RotationAffector::RotationAffector(RotationAffector &&)=default'],['../classncine_1_1_rotation_affector.html#ae2569afc05a164971243be2522cb440f',1,'ncine::RotationAffector::RotationAffector(const RotationAffector &other)=default']]], + ['rotationstep_988',['RotationStep',['../structncine_1_1_rotation_affector_1_1_rotation_step.html',1,'ncine::RotationAffector']]], + ['runfromfile_989',['runFromFile',['../classncine_1_1_lua_state_manager.html#aef24acea5dfadb03974eba0cff8a86df',1,'ncine::LuaStateManager::runFromFile(const char *filename, const char *chunkName, nctl::String *errorMsg, int *status, LuaUtils::RunInfo *runInfo)'],['../classncine_1_1_lua_state_manager.html#af0671ac0dc717329ecf152c6bad872e5',1,'ncine::LuaStateManager::runFromFile(const char *filename, const char *chunkName, nctl::String *errorMsg)'],['../classncine_1_1_lua_state_manager.html#ac926085ef8f8c37c0637a7eee613361e',1,'ncine::LuaStateManager::runFromFile(const char *filename, const char *chunkName)'],['../classncine_1_1_lua_state_manager.html#a63f524bce590af7eea5c1984c4923365',1,'ncine::LuaStateManager::runFromFile(const char *filename)']]], + ['runfrommemory_990',['runFromMemory',['../classncine_1_1_lua_state_manager.html#a5ae8b7f8e52779812d18f76747d0f39b',1,'ncine::LuaStateManager::runFromMemory(const char *bufferName, const char *bufferPtr, unsigned long int bufferSize, nctl::String *errorMsg, int *status, LuaUtils::RunInfo *runInfo)'],['../classncine_1_1_lua_state_manager.html#ab711002e521d00d92c0bee72a4a991cc',1,'ncine::LuaStateManager::runFromMemory(const char *bufferName, const char *bufferPtr, unsigned long int bufferSize, nctl::String *errorMsg)'],['../classncine_1_1_lua_state_manager.html#a3057a81f11a8ca3a994a444203219246',1,'ncine::LuaStateManager::runFromMemory(const char *bufferName, const char *bufferPtr, unsigned long int bufferSize)']]], + ['runinfo_991',['RunInfo',['../classncine_1_1_lua_utils_1_1_run_info.html',1,'ncine::LuaUtils']]] +]; diff --git a/master/search/all_12.html b/master/search/all_12.html new file mode 100644 index 0000000000..ab934722c5 --- /dev/null +++ b/master/search/all_12.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/all_12.js b/master/search/all_12.js new file mode 100644 index 0000000000..1e5e31215c --- /dev/null +++ b/master/search/all_12.js @@ -0,0 +1,225 @@ +var searchData= +[ + ['sampleoffset_992',['sampleOffset',['../classncine_1_1_i_audio_player.html#af06a9dc5293a41bd1f78cd49d2d3248a',1,'ncine::IAudioPlayer']]], + ['sampleoffsetinstream_993',['sampleOffsetInStream',['../classncine_1_1_audio_stream_player.html#af3891910a40a0c6c64c632528a06b265',1,'ncine::AudioStreamPlayer']]], + ['save_994',['save',['../classncine_1_1_emscripten_local_file.html#aaa34b39d7d437211081bff0332434d4b',1,'ncine::EmscriptenLocalFile']]], + ['savepath_995',['savePath',['../classncine_1_1_file_system.html#a8ef39f60d9826ec12788739c58b2bfa0',1,'ncine::FileSystem']]], + ['savetomemory_996',['saveToMemory',['../classncine_1_1_texture.html#aecd47485d055fffcde9888fc00c1b7a3',1,'ncine::Texture::saveToMemory(unsigned char *bufferPtr, unsigned int level)'],['../classncine_1_1_texture.html#af975bba6b4df5de7a9b7fe2f97186a27',1,'ncine::Texture::saveToMemory(unsigned char *bufferPtr)']]], + ['saxhashfunc_997',['SaxHashFunc',['../classnctl_1_1_sax_hash_func.html',1,'nctl']]], + ['saxhashfunc_3c_20const_20char_20_2a_20_3e_998',['SaxHashFunc< const char * >',['../classnctl_1_1_sax_hash_func_3_01const_01char_01_5_01_4.html',1,'nctl']]], + ['saxhashfunc_3c_20string_20_3e_999',['SaxHashFunc< String >',['../classnctl_1_1_sax_hash_func_3_01_string_01_4.html',1,'nctl']]], + ['scale_1000',['scale',['../structncine_1_1_i_gfx_device_1_1_monitor.html#a64f5d9e1dd326881dbd81c626a26c759',1,'ncine::IGfxDevice::Monitor::scale()'],['../classncine_1_1_scene_node.html#a61c257c771fa4d01c520f811ca9a9b9a',1,'ncine::SceneNode::scale() const']]], + ['scalefactor_5f_1001',['scaleFactor_',['../classncine_1_1_scene_node.html#ae89693e286f5729d5f8c2ab3bc9896bd',1,'ncine::SceneNode']]], + ['scancode_1002',['scancode',['../classncine_1_1_keyboard_event.html#a5cc6e2423c478cc965845a144af80d52',1,'ncine::KeyboardEvent']]], + ['scanhashstring_1003',['scanHashString',['../classncine_1_1_hash64.html#a32e6f7176136936b6762fa2e082ab5e6',1,'ncine::Hash64::scanHashString(const char *string, unsigned int length) const'],['../classncine_1_1_hash64.html#a3945b4c01f231f3941b68054fa022596',1,'ncine::Hash64::scanHashString(const char *string) const']]], + ['scenenode_1004',['SceneNode',['../classncine_1_1_scene_node.html',1,'ncine::SceneNode'],['../classncine_1_1_scene_node.html#a3ecd166c467c9f75d56dbc22ffe8bc13',1,'ncine::SceneNode::SceneNode()'],['../classncine_1_1_scene_node.html#a220c7d04e4c996924805a7890d8fe65b',1,'ncine::SceneNode::SceneNode(SceneNode *parent, float x, float y)'],['../classncine_1_1_scene_node.html#a2c37c4f629a76b0d9f474b3bf8ce6f83',1,'ncine::SceneNode::SceneNode(SceneNode *parent, const Vector2f &position)'],['../classncine_1_1_scene_node.html#a00056a6e7c8c492999dac3bb3f1b3035',1,'ncine::SceneNode::SceneNode(SceneNode *parent)'],['../classncine_1_1_scene_node.html#a5d9fb82664cbfdbd2e348f1aa35904b7',1,'ncine::SceneNode::SceneNode(SceneNode &&other)'],['../classncine_1_1_scene_node.html#a2fb53012d1f07ec33d24e06dc0304b6a',1,'ncine::SceneNode::SceneNode(const SceneNode &other)']]], + ['scissorrect_1005',['scissorRect',['../classncine_1_1_viewport.html#a3cdc9b89ceb55404e981b633c828aae1',1,'ncine::Viewport']]], + ['screen_1006',['SCREEN',['../classncine_1_1_viewport.html#a12c083906885f6c2d1528f47a316f31eab8640f4f990ba83d8d8bef816def1b80',1,'ncine::Viewport']]], + ['screenrect_1007',['screenRect',['../classncine_1_1_i_gfx_device.html#af1f8a476ee5e4096b49c7e3ddde550c3',1,'ncine::IGfxDevice']]], + ['screenviewport_1008',['screenViewport',['../classncine_1_1_application.html#af80d48701bf172e0b8d5711238c3a530',1,'ncine::Application']]], + ['scrollevent_1009',['ScrollEvent',['../classncine_1_1_scroll_event.html',1,'ncine']]], + ['sdkversion_1010',['sdkVersion',['../classncine_1_1_android_application.html#a10df808604549b16ff6410d20979a411',1,'ncine::AndroidApplication']]], + ['seconds_1011',['seconds',['../classncine_1_1_time_stamp.html#a4beba13f138a64dea26c06277f5f6bc9',1,'ncine::TimeStamp']]], + ['secondsdouble_1012',['secondsDouble',['../classncine_1_1_time_stamp.html#aef71b70a675717f832cc6e6258d0533a',1,'ncine::TimeStamp']]], + ['secondsdoublesince_1013',['secondsDoubleSince',['../classncine_1_1_time_stamp.html#a2b6232ee3b27c7d739ec8b234e6ca95d',1,'ncine::TimeStamp']]], + ['secondssince_1014',['secondsSince',['../classncine_1_1_time_stamp.html#a9cc96b908873fe81077df0042f528361',1,'ncine::TimeStamp']]], + ['seek_1015',['seek',['../classncine_1_1_asset_file.html#a6d1e0ca4b181bda9592fd4223ecc913b',1,'ncine::AssetFile::seek()'],['../classncine_1_1_i_file.html#a0200c3997edd0a86abf8e3bc36676ded',1,'ncine::IFile::seek()']]], + ['sentineltaginit_1016',['SentinelTagInit',['../classnctl_1_1_hash_map_iterator.html#a32a98c33e956b8328df0bd1e7e649414',1,'nctl::HashMapIterator::SentinelTagInit()'],['../classnctl_1_1_hash_map_list_iterator.html#aed2c005b1172d6ba333ecfebb656213b',1,'nctl::HashMapListIterator::SentinelTagInit()'],['../classnctl_1_1_hash_set_iterator.html#a22b0704d2138e75d4c02eb8ffb2b67f7',1,'nctl::HashSetIterator::SentinelTagInit()'],['../classnctl_1_1_static_hash_set_iterator.html#a26d3df036539a27fe0da323f45929c5e',1,'nctl::StaticHashSetIterator::SentinelTagInit()'],['../classnctl_1_1_static_hash_map_iterator.html#a81ed023987e026bdd88abaea9967ff1a',1,'nctl::StaticHashMapIterator::SentinelTagInit()'],['../classnctl_1_1_hash_set_list_iterator.html#a8f3fe18aeabf0abcd55bfdd687838751',1,'nctl::HashSetListIterator::SentinelTagInit()']]], + ['servicelocator_1017',['ServiceLocator',['../classncine_1_1_service_locator.html',1,'ncine']]], + ['set_1018',['set',['../classnctl_1_1_bit_set.html#a3f749db699d67c31340194fff303445f',1,'nctl::BitSet::set(unsigned int pos)'],['../classnctl_1_1_bit_set.html#ae1779a4ef81f23beb68086cfcb9ec9e8',1,'nctl::BitSet::set(unsigned int pos, bool value)'],['../classnctl_1_1_bit_set.html#a5b82442b585602d267513e1b57a8d68d',1,'nctl::BitSet::set()'],['../classncine_1_1_rect.html#aca5bbb7c34f3605421439436440d3117',1,'ncine::Rect::set(const Vector2< T > &point, const Vector2< T > &size)'],['../classncine_1_1_rect.html#a1fc23c19fe0f06e1f5bb8ebfab8b31ae',1,'ncine::Rect::set(T xx, T yy, T ww, T hh)'],['../classncine_1_1_color_hdr.html#a99c07986749dcd40c45de2ab272aad2d',1,'ncine::ColorHdr::set()'],['../classncine_1_1_colorf.html#a7592754aca675dada0f34e2e4e2eddc6',1,'ncine::Colorf::set(float red, float green, float blue)'],['../classncine_1_1_colorf.html#a47cae422cf251b13107c203a78025d9a',1,'ncine::Colorf::set(float red, float green, float blue, float alpha)'],['../classncine_1_1_color.html#aea1747d4415ba8b24af37c29673a94e9',1,'ncine::Color::set(unsigned int hex)'],['../classncine_1_1_color.html#a969ec9ae4fb24ba601f917f56be7ac39',1,'ncine::Color::set(unsigned int red, unsigned int green, unsigned int blue)'],['../classncine_1_1_color.html#a403b43bbf1d1887ac72bce4b30576891',1,'ncine::Color::set(unsigned int red, unsigned int green, unsigned int blue, unsigned int alpha)']]], + ['setabsanchorpoint_1019',['setAbsAnchorPoint',['../classncine_1_1_scene_node.html#a1b5a16ed15363ded568de3539f83a0a5',1,'ncine::SceneNode::setAbsAnchorPoint(float x, float y)'],['../classncine_1_1_scene_node.html#a54713c328848aef83d34370391b6015e',1,'ncine::SceneNode::setAbsAnchorPoint(const Vector2f &point)']]], + ['setaffectorsenabled_1020',['setAffectorsEnabled',['../classncine_1_1_particle_system.html#a511aa56d6e82d9806d30c1382baace60',1,'ncine::ParticleSystem']]], + ['setalignment_1021',['setAlignment',['../classncine_1_1_text_node.html#ae37076ab03fde4cfae193a564882b29f',1,'ncine::TextNode']]], + ['setalpha_1022',['setAlpha',['../classncine_1_1_color.html#a54d957988edc9a93dc6c014245fbfc7e',1,'ncine::Color::setAlpha()'],['../classncine_1_1_colorf.html#a889dcaa89a526f74119a0f8555b9532b',1,'ncine::Colorf::setAlpha()'],['../classncine_1_1_scene_node.html#a6817540f40f3006f5c1424c1330d6211',1,'ncine::SceneNode::setAlpha(unsigned char alpha)']]], + ['setalphaf_1023',['setAlphaF',['../classncine_1_1_scene_node.html#acc929f2f34e2cf82268f26b67bd43013',1,'ncine::SceneNode']]], + ['setanchorpoint_1024',['setAnchorPoint',['../classncine_1_1_drawable_node.html#aa7f8223f6ba4846206a625ac8606ef28',1,'ncine::DrawableNode::setAnchorPoint()'],['../classncine_1_1_particle_system.html#af3673e9dcccc1b0d7df72afa8344d552',1,'ncine::ParticleSystem::setAnchorPoint(const Vector2f &point)'],['../classncine_1_1_particle_system.html#a0a75d4bbb40652c7ee46ef5d5ccda088',1,'ncine::ParticleSystem::setAnchorPoint(float xx, float yy)'],['../classncine_1_1_drawable_node.html#a78da50406ea6e91bb8815a05cca89adc',1,'ncine::DrawableNode::setAnchorPoint()']]], + ['setanimationindex_1025',['setAnimationIndex',['../classncine_1_1_animated_sprite.html#a82e267492c35a7394227680bb6ebeeec',1,'ncine::AnimatedSprite']]], + ['setattribute_1026',['setAttribute',['../classncine_1_1_shader.html#adf938ee13e1fd4704f4d63d27c94ef2e',1,'ncine::Shader']]], + ['setaudiobuffer_1027',['setAudioBuffer',['../classncine_1_1_audio_buffer_player.html#a1a37ce14e528cfa462f2bc8c00fb7f30',1,'ncine::AudioBufferPlayer']]], + ['setautosuspension_1028',['setAutoSuspension',['../classncine_1_1_application.html#a1bd79bf98decec17e26525aff81e223a',1,'ncine::Application']]], + ['setautowahproperties_1029',['setAutoWahProperties',['../classncine_1_1_audio_effect_properties.html#a212fdea1f4af37688721b3458e689725',1,'ncine::AudioEffectProperties']]], + ['setauxsendauto_1030',['setAuxSendAuto',['../classncine_1_1_audio_effect_slot.html#a412da8fc5b1c7e8f4d05c36a30503fe0',1,'ncine::AudioEffectSlot']]], + ['setaverageinterval_1031',['setAverageInterval',['../classncine_1_1_i_frame_timer.html#a86c23cde8b2998f7f0274297382e4eec',1,'ncine::IFrameTimer']]], + ['setbasescale_1032',['setBaseScale',['../classncine_1_1_size_affector.html#ae4b23fc8cdc1db0714dc19e7312c1623',1,'ncine::SizeAffector::setBaseScale(const Vector2f &baseScale)'],['../classncine_1_1_size_affector.html#ad078db794d1f1dce916222fc1a1f3d0c',1,'ncine::SizeAffector::setBaseScale(float baseScale)']]], + ['setbinarycacheenabled_1033',['setBinaryCacheEnabled',['../classncine_1_1_shader.html#a9246dfc82239af20a9423d004ecca681',1,'ncine::Shader']]], + ['setblendingenabled_1034',['setBlendingEnabled',['../classncine_1_1_drawable_node.html#ade1c933643abe9a79a272d14a9c42d0e',1,'ncine::DrawableNode']]], + ['setblendingfactors_1035',['setBlendingFactors',['../classncine_1_1_particle_system.html#a70b12ad97f3888fb64ca4e249efb4318',1,'ncine::ParticleSystem::setBlendingFactors()'],['../classncine_1_1_drawable_node.html#a21671eb999a029eb9d0af871feb0fe90',1,'ncine::DrawableNode::setBlendingFactors()']]], + ['setblendingpreset_1036',['setBlendingPreset',['../classncine_1_1_particle_system.html#af18191b5a24aa27e4e17c1fbaeb7ac8d',1,'ncine::ParticleSystem::setBlendingPreset()'],['../classncine_1_1_drawable_node.html#a0093386ed375ebec4a77ea8d824cfdc5',1,'ncine::DrawableNode::setBlendingPreset()']]], + ['setcamera_1037',['setCamera',['../classncine_1_1_viewport.html#a002710a85b41c5659f73ba1472f93c58',1,'ncine::Viewport']]], + ['setcapacity_1038',['setCapacity',['../classnctl_1_1_array.html#ad52067f00d0ff4e1096f9d4d019bc10f',1,'nctl::Array::setCapacity()'],['../classnctl_1_1_string.html#ada2afe758a252691dbb089c3333539d9',1,'nctl::String::setCapacity()']]], + ['setcenter_1039',['setCenter',['../classncine_1_1_rect.html#ad68eaa1ea20ca3f297bdda142ac42b5e',1,'ncine::Rect::setCenter(float cx, float cy)'],['../classncine_1_1_rect.html#a2a997bd529c63f4b9ffdb10256df0033',1,'ncine::Rect::setCenter(const Vector2< T > &center)']]], + ['setcentersize_1040',['setCenterSize',['../classncine_1_1_rect.html#a8091d293b1a07a79c093ae5b5df349a2',1,'ncine::Rect::setCenterSize(T xx, T yy, T ww, T hh)'],['../classncine_1_1_rect.html#acedcf45300837279e3bd2240845f846f',1,'ncine::Rect::setCenterSize(const Vector2< T > &center, const Vector2< T > &size)']]], + ['setchorusproperties_1041',['setChorusProperties',['../classncine_1_1_audio_effect_properties.html#a190e8b48cb2e1f9f30402a583d2a0759',1,'ncine::AudioEffectProperties']]], + ['setchromakeycolor_1042',['setChromaKeyColor',['../classncine_1_1_texture.html#a8d8fa0e9bf3ba6a7de2a6087fdcc9b17',1,'ncine::Texture::setChromaKeyColor(const Color &chromaKeyColor)'],['../classncine_1_1_texture.html#acf149ac2e13b6a18ff8eda86043eb65e',1,'ncine::Texture::setChromaKeyColor(const Colorf &chromaKeyColor)']]], + ['setchromakeyenabled_1043',['setChromaKeyEnabled',['../classncine_1_1_texture.html#a9c1c14fcf8d828640ec3172ebc2cd525',1,'ncine::Texture']]], + ['setclearcolor_1044',['setClearColor',['../classncine_1_1_viewport.html#abe1b168e6d92690ee7cca3bdb875cf56',1,'ncine::Viewport::setClearColor(float red, float green, float blue, float alpha)'],['../classncine_1_1_viewport.html#ae540fcc19aa4889f785e69474130c5a5',1,'ncine::Viewport::setClearColor(const Colorf &color)']]], + ['setclearmode_1045',['setClearMode',['../classncine_1_1_viewport.html#aab403d2f29b0bf0a2c1deac98c670eae',1,'ncine::Viewport']]], + ['setcloseondestruction_1046',['setCloseOnDestruction',['../classncine_1_1_i_file.html#a2e92361cf8fa0b99d08b35c9feb03b97',1,'ncine::IFile']]], + ['setcolor_1047',['setColor',['../classncine_1_1_scene_node.html#ab4cc5425a9c6b1f85f72f6ed1e13846a',1,'ncine::SceneNode::setColor(Color color)'],['../classncine_1_1_scene_node.html#ac7c2308c960ac98909db3c32aabb5a4b',1,'ncine::SceneNode::setColor(Colorf color)'],['../classncine_1_1_scene_node.html#a1cc6cafa339247b2e5b9c3bbbba2fdd1',1,'ncine::SceneNode::setColor(unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha)']]], + ['setcolorf_1048',['setColorF',['../classncine_1_1_scene_node.html#a11f22301cd5195870d9fb61d54697e94',1,'ncine::SceneNode']]], + ['setcompressorproperties_1049',['setCompressorProperties',['../classncine_1_1_audio_effect_properties.html#ac72a905bdb932ed2b610d88aab47ff3e',1,'ncine::AudioEffectProperties']]], + ['setconeinnerangle_1050',['setConeInnerAngle',['../classncine_1_1_i_audio_player.html#a0248d551cf12f3be8b1cb60e9f91e9d7',1,'ncine::IAudioPlayer']]], + ['setconeouterangle_1051',['setConeOuterAngle',['../classncine_1_1_i_audio_player.html#aae2868f7072c66c37678ffd251bdce37',1,'ncine::IAudioPlayer']]], + ['setconeoutergain_1052',['setConeOuterGain',['../classncine_1_1_i_audio_player.html#a66eb6ceeaee4094c93baf608361f81db',1,'ncine::IAudioPlayer']]], + ['setcopyonreallocation_1053',['setCopyOnReallocation',['../classnctl_1_1_i_allocator.html#afcc81dce4fb3f9a2c79beb38b4b94957',1,'nctl::IAllocator']]], + ['setcurrentdir_1054',['setCurrentDir',['../classncine_1_1_file_system.html#ad7d2c6f00099e963afe08bc132551fb6',1,'ncine::FileSystem']]], + ['setdefaultframeduration_1055',['setDefaultFrameDuration',['../classncine_1_1_rect_animation.html#a176b9034c294475cc6e494f555ecf4be',1,'ncine::RectAnimation']]], + ['setdefragondeallocation_1056',['setDefragOnDeallocation',['../classnctl_1_1_free_list_allocator.html#ae21ca298edc297e172572c5ac3f7a040',1,'nctl::FreeListAllocator']]], + ['setdeletechildrenondestruction_1057',['setDeleteChildrenOnDestruction',['../classncine_1_1_scene_node.html#ad6bc44e0355dd0dde1a57d8a942bec33',1,'ncine::SceneNode']]], + ['setdepthstencilformat_1058',['setDepthStencilFormat',['../classncine_1_1_viewport.html#a515550d5f77e83a9a978957d9364f9a2',1,'ncine::Viewport']]], + ['setdirection_1059',['setDirection',['../classncine_1_1_i_audio_player.html#a1ea4c555f5fcd7e7901a877972cbdfc3',1,'ncine::IAudioPlayer::setDirection(const Vector3f &direction)'],['../classncine_1_1_i_audio_player.html#a74460e4ebe3d4d4ecb26fba8f7a22d6f',1,'ncine::IAudioPlayer::setDirection(float x, float y, float z)']]], + ['setdistortionproperties_1060',['setDistortionProperties',['../classncine_1_1_audio_effect_properties.html#af9f5d98af71e30806386b364d91434ce',1,'ncine::AudioEffectProperties']]], + ['setdrawenabled_1061',['setDrawEnabled',['../classncine_1_1_scene_node.html#a7dd9a2b2e1c837ee07369d991cf5e770',1,'ncine::SceneNode']]], + ['seteaxreverbproperties_1062',['setEaxReverbProperties',['../classncine_1_1_audio_effect_properties.html#a249e377bb250677e77f7dc3033ad654f',1,'ncine::AudioEffectProperties']]], + ['setechoproperties_1063',['setEchoProperties',['../classncine_1_1_audio_effect_properties.html#ac5d37c04405fe42991361bff8dc74877',1,'ncine::AudioEffectProperties']]], + ['setenabled_1064',['setEnabled',['../classncine_1_1_particle_affector.html#a1234626447d16c884ccf4198b288bd95',1,'ncine::ParticleAffector::setEnabled()'],['../classncine_1_1_scene_node.html#a3fe6436fb29736110ebed14f03dd4eff',1,'ncine::SceneNode::setEnabled()']]], + ['setequalizerproperties_1065',['setEqualizerProperties',['../classncine_1_1_audio_effect_properties.html#a7463012dfb5f29fd386896e4a974bce7',1,'ncine::AudioEffectProperties']]], + ['setfitstrategy_1066',['setFitStrategy',['../classnctl_1_1_free_list_allocator.html#a62f771daf3e22ded6162a0485cdd9131',1,'nctl::FreeListAllocator']]], + ['setflangerproperties_1067',['setFlangerProperties',['../classncine_1_1_audio_effect_properties.html#a541ea99c8962d129410de427ea8ed013',1,'ncine::AudioEffectProperties']]], + ['setflippedx_1068',['setFlippedX',['../classncine_1_1_base_sprite.html#a9426de574b97c0172bf7cb0f2cf7b954',1,'ncine::BaseSprite::setFlippedX()'],['../classncine_1_1_particle_system.html#ac7fb6070dfd0cd5d3bb5e6d325b40f86',1,'ncine::ParticleSystem::setFlippedX()']]], + ['setflippedy_1069',['setFlippedY',['../classncine_1_1_base_sprite.html#a2a1681b7e93448cca53adcdbf056b7ce',1,'ncine::BaseSprite::setFlippedY()'],['../classncine_1_1_particle_system.html#a4137753b0d9767f67ce9a875fae54761',1,'ncine::ParticleSystem::setFlippedY()']]], + ['setfocus_1070',['setFocus',['../classncine_1_1_application.html#ae61fbcc3d36afb2422968a97a251df67',1,'ncine::Application']]], + ['setfont_1071',['setFont',['../classncine_1_1_text_node.html#a03e5bc640213534c2efd8586eb3d9990',1,'ncine::TextNode']]], + ['setframe_1072',['setFrame',['../classncine_1_1_animated_sprite.html#a9b561f62415daf2fde7fa73168162189',1,'ncine::AnimatedSprite::setFrame()'],['../classncine_1_1_rect_animation.html#a4ee29bcdc9ee6743d84355b85a669060',1,'ncine::RectAnimation::setFrame()']]], + ['setfrequencyshifterproperties_1073',['setFrequencyShifterProperties',['../classncine_1_1_audio_effect_properties.html#ac711cdbd80c97faf4145e078f1dddae6',1,'ncine::AudioEffectProperties']]], + ['setfullscreen_1074',['setFullScreen',['../classncine_1_1_i_gfx_device.html#a56e3c04e3064c7671b487691362b7b32',1,'ncine::IGfxDevice']]], + ['setgain_1075',['setGain',['../classncine_1_1_i_audio_device.html#af57e19326b760905f6ced5e4ef6cef53',1,'ncine::IAudioDevice::setGain()'],['../classncine_1_1_null_audio_device.html#a6de5dcfdc583e8e9f55fa01d4ded5f57',1,'ncine::NullAudioDevice::setGain()'],['../classncine_1_1_i_audio_player.html#a54d7e04921f2c086f48ced4f82c53c3c',1,'ncine::IAudioPlayer::setGain()'],['../classncine_1_1_audio_effect_slot.html#ab746c29ca920d8822003910d3e0b05c4',1,'ncine::AudioEffectSlot::setGain()']]], + ['setglframebufferlabel_1076',['setGLFramebufferLabel',['../classncine_1_1_viewport.html#ae1d31271185a9892579f20bad2e9465b',1,'ncine::Viewport']]], + ['setglshaderprogramlabel_1077',['setGLShaderProgramLabel',['../classncine_1_1_shader.html#af94b762450dab10934ae1ceb569f147c',1,'ncine::Shader']]], + ['setgltexturelabel_1078',['setGLTextureLabel',['../classncine_1_1_texture.html#a407a8ee5a7e9ab2a563200e6f589d322',1,'ncine::Texture']]], + ['sethandler_1079',['setHandler',['../classncine_1_1_i_input_manager.html#ad988a448ca325db249386cd3635099ea',1,'ncine::IInputManager']]], + ['sethidden_1080',['setHidden',['../classncine_1_1_file_system.html#a9590c84a48d25bb17495478ee36a80ad',1,'ncine::FileSystem']]], + ['setindices_1081',['setIndices',['../classncine_1_1_mesh_sprite.html#ad9255b12419076cfe9bb78cb8e01114c',1,'ncine::MeshSprite::setIndices(unsigned int numIndices, const unsigned short *indices)'],['../classncine_1_1_mesh_sprite.html#a5629a7e3da0570db4c7af3041cf54c86',1,'ncine::MeshSprite::setIndices(const MeshSprite &meshSprite)']]], + ['setinlocalspace_1082',['setInLocalSpace',['../classncine_1_1_particle_system.html#a5b4bec2c5001d7e04889ab82233684ae',1,'ncine::ParticleSystem']]], + ['setlayer_1083',['setLayer',['../classncine_1_1_particle_system.html#ae5e72af79972e8c894c6f000e162875a',1,'ncine::ParticleSystem::setLayer()'],['../classncine_1_1_scene_node.html#af7ebfa1df874cf52fff754587a0b45e9',1,'ncine::SceneNode::setLayer()']]], + ['setlength_1084',['setLength',['../classnctl_1_1_static_string.html#ad277cae195caf7d69b9e39660db05d21',1,'nctl::StaticString::setLength()'],['../classnctl_1_1_string.html#a54e1164a4be2d77f287f62f4b8a0e245',1,'nctl::String::setLength()']]], + ['setlineheight_1085',['setLineHeight',['../classncine_1_1_text_node.html#a5760b076b8cf25ce4ef445a53e1ef287',1,'ncine::TextNode']]], + ['setloadedcallback_1086',['setLoadedCallback',['../classncine_1_1_emscripten_local_file.html#adddb4da22c8be42ec959e4d34f60cd4a',1,'ncine::EmscriptenLocalFile::setLoadedCallback(LoadedCallbackType *loadedCallback)'],['../classncine_1_1_emscripten_local_file.html#a3cd1508e6f65f363e48bbf5ba5d350e5',1,'ncine::EmscriptenLocalFile::setLoadedCallback(LoadedCallbackType *loadedCallback, void *userData)']]], + ['setlocalmatrix_1087',['setLocalMatrix',['../classncine_1_1_scene_node.html#a84ec315f52f0086772108a5a3453aa5a',1,'ncine::SceneNode']]], + ['setlogginginterval_1088',['setLoggingInterval',['../classncine_1_1_i_frame_timer.html#ac5d6b844ed3a7ca50578785f24f6ed88',1,'ncine::IFrameTimer']]], + ['setloglevel_1089',['setLogLevel',['../classncine_1_1_i_frame_timer.html#a23d3f64d265b2a65b26901f62d81e598',1,'ncine::IFrameTimer']]], + ['setlogonerrors_1090',['setLogOnErrors',['../classncine_1_1_shader.html#a406dd13b58cbce4c7525e8b469b3459e',1,'ncine::Shader']]], + ['setlooping_1091',['setLooping',['../classncine_1_1_i_audio_player.html#a3e0b598a392f69f4060c54790940951b',1,'ncine::IAudioPlayer']]], + ['setloopmode_1092',['setLoopMode',['../classncine_1_1_rect_animation.html#af3768dc9fe32f7d04259b5915f621889',1,'ncine::RectAnimation']]], + ['setmagfiltering_1093',['setMagFiltering',['../classncine_1_1_texture.html#a3c1f1530118be66d6795f0ce900e5e01',1,'ncine::Texture']]], + ['setminfiltering_1094',['setMinFiltering',['../classncine_1_1_texture.html#a656cd90486c41691d7026520ad223ad6',1,'ncine::Texture']]], + ['setminmax_1095',['setMinMax',['../classncine_1_1_rect.html#af2f2c31cae1b9f6d6a1b046e52d48763',1,'ncine::Rect::setMinMax(T minX, T minY, T maxX, T maxY)'],['../classncine_1_1_rect.html#a4a0895b4111dcff9d8160cedbfdda6d7',1,'ncine::Rect::setMinMax(const Vector2< T > &min, const Vector2< T > &max)']]], + ['setmousecursormode_1096',['setMouseCursorMode',['../classncine_1_1_i_input_manager.html#af19ecc5929357fee73e6ee3fc9a14f38',1,'ncine::IInputManager']]], + ['setname_1097',['setName',['../classncine_1_1_object.html#a8961ac00afc96e3a5ca6a42f14d2a6e8',1,'ncine::Object']]], + ['setnode_1098',['setNode',['../classncine_1_1_shader_state.html#a2b18d00b76190cc2c692d70ff96c4e4a',1,'ncine::ShaderState']]], + ['setobject_1099',['setObject',['../classncine_1_1_i_indexer.html#a0102a8d777ed275acbbdeb283289cfb6',1,'ncine::IIndexer::setObject()'],['../classncine_1_1_null_indexer.html#a7120faddc3f4c3c4f321025669e70cc3',1,'ncine::NullIndexer::setObject()']]], + ['setorthoprojection_1100',['setOrthoProjection',['../classncine_1_1_camera.html#a50ce5ad4b18335ccc29d65b2c7d6a200',1,'ncine::Camera::setOrthoProjection(float left, float right, float top, float bottom)'],['../classncine_1_1_camera.html#aa09860d5332c1e62845dbbfe208f9ab5',1,'ncine::Camera::setOrthoProjection(const ProjectionValues &values)']]], + ['setparent_1101',['setParent',['../classncine_1_1_scene_node.html#acd1e285fe740af7a55e7209ccf17c3ec',1,'ncine::SceneNode']]], + ['setparticlesupdateenabled_1102',['setParticlesUpdateEnabled',['../classncine_1_1_particle_system.html#a2de810248bdc45f318eed79c79e92306',1,'ncine::ParticleSystem']]], + ['setpaused_1103',['setPaused',['../classncine_1_1_animated_sprite.html#a4765ef4d7d8ed7e961bb4386169f60b9',1,'ncine::AnimatedSprite::setPaused()'],['../classncine_1_1_rect_animation.html#aa5954200c58fe770e5f331210bd9feb2',1,'ncine::RectAnimation::setPaused()']]], + ['setpitch_1104',['setPitch',['../classncine_1_1_i_audio_player.html#a1071dc4b6c3cd1067c32b71787451149',1,'ncine::IAudioPlayer']]], + ['setpitchshifterproperties_1105',['setPitchShifterProperties',['../classncine_1_1_audio_effect_properties.html#a1d60eddea1786bb7a83a6a919bdb4f4d',1,'ncine::AudioEffectProperties']]], + ['setposition_1106',['setPosition',['../classncine_1_1_null_audio_device.html#aa9ba4bab929a987e32a697fc90ea4376',1,'ncine::NullAudioDevice::setPosition()'],['../classncine_1_1_i_audio_device.html#a5511f7d40a722aae77cc268d9eeda942',1,'ncine::IAudioDevice::setPosition(const Vector3f &position)=0'],['../classncine_1_1_i_audio_device.html#aa7aacfbaeab51da82a5144c717d91ffe',1,'ncine::IAudioDevice::setPosition(float x, float y, float z)=0'],['../classncine_1_1_null_audio_device.html#af20b88acdce33a0ce60214b49b0fc695',1,'ncine::NullAudioDevice::setPosition()'],['../classncine_1_1_i_audio_player.html#a26b96043a2cdd1b3cafd2c733d7dcea3',1,'ncine::IAudioPlayer::setPosition(const Vector3f &position)'],['../classncine_1_1_i_audio_player.html#a4156748b2654b99048b02e01e681d6f9',1,'ncine::IAudioPlayer::setPosition(float x, float y, float z)'],['../classncine_1_1_scene_node.html#a79cc185998606da3379cdeb70ba328b9',1,'ncine::SceneNode::setPosition(float x, float y)'],['../classncine_1_1_scene_node.html#a4a89c3bab30cc257a43607ad6720238e',1,'ncine::SceneNode::setPosition(const Vector2f &position)']]], + ['setpositionx_1107',['setPositionX',['../classncine_1_1_scene_node.html#acb1e1c7d584a642ccd526724884e2b14',1,'ncine::SceneNode']]], + ['setpositiony_1108',['setPositionY',['../classncine_1_1_scene_node.html#a69bef1981ed73387f942196cc26cb50b',1,'ncine::SceneNode']]], + ['setrendermode_1109',['setRenderMode',['../classncine_1_1_text_node.html#a3494ce705911d294bfd48468c23ba90d',1,'ncine::TextNode']]], + ['setreverbproperties_1110',['setReverbProperties',['../classncine_1_1_audio_effect_properties.html#a39057936625caf471ce46d20bd41126c',1,'ncine::AudioEffectProperties']]], + ['setrewindmode_1111',['setRewindMode',['../classncine_1_1_rect_animation.html#aa1ab7bb4db4c45f73ea28a04a9819ee5',1,'ncine::RectAnimation']]], + ['setringmodulatorproperties_1112',['setRingModulatorProperties',['../classncine_1_1_audio_effect_properties.html#aa74aedbbe71c115e01b03a79dff93b43',1,'ncine::AudioEffectProperties']]], + ['setrootnode_1113',['setRootNode',['../classncine_1_1_viewport.html#a368c75af36793d2686ac15f35f5da97e',1,'ncine::Viewport']]], + ['setrotation_1114',['setRotation',['../classncine_1_1_scene_node.html#adda41419d0c9e18fbf298ac8fb10b712',1,'ncine::SceneNode']]], + ['setsampleoffset_1115',['setSampleOffset',['../classncine_1_1_i_audio_player.html#ac23a2110db3a4deb77ec8b2d04fde7f0',1,'ncine::IAudioPlayer']]], + ['setscale_1116',['setScale',['../classncine_1_1_scene_node.html#a67a30f1ff8ef615cef2747646b5cfdce',1,'ncine::SceneNode::setScale(float scaleFactor)'],['../classncine_1_1_scene_node.html#aae171d5860a39a886b7bc323a1f9968a',1,'ncine::SceneNode::setScale(const Vector2f &scaleFactor)'],['../classncine_1_1_scene_node.html#a7f925e3626b0e076cce4e709ea97b478',1,'ncine::SceneNode::setScale(float scaleFactorX, float scaleFactorY)']]], + ['setscissorrect_1117',['setScissorRect',['../classncine_1_1_viewport.html#a3355d4c0cb3b637fc22d6cdb9bd89e04',1,'ncine::Viewport::setScissorRect(int x, int y, int width, int height)'],['../classncine_1_1_viewport.html#a2405884478e4845c514766f1643414f5',1,'ncine::Viewport::setScissorRect(int width, int height)'],['../classncine_1_1_viewport.html#ac6ba4c10e690ea6ed7dbad0c1252aed0',1,'ncine::Viewport::setScissorRect(Recti scissorRect)'],['../classncine_1_1_viewport.html#add8b814ee0bd3a93d6d0d407c3eb5fe7',1,'ncine::Viewport::setScissorRect(const Vector2i &size)']]], + ['setshader_1118',['setShader',['../classncine_1_1_shader_state.html#a7deb3a81aef39796e3e80c11b547d548',1,'ncine::ShaderState']]], + ['setshouldupdate_1119',['setShouldUpdate',['../classncine_1_1_qt5_widget.html#ae17e09fcaa08c6f69a95044a9a1cb447',1,'ncine::Qt5Widget']]], + ['setsize_1120',['setSize',['../classncine_1_1_base_sprite.html#a159b6188d175581f3b2c4082c48ad2e0',1,'ncine::BaseSprite::setSize()'],['../classnctl_1_1_array.html#a00a23ff3efc876c996b4015c754e0a13',1,'nctl::Array::setSize()'],['../classncine_1_1_base_sprite.html#ae255a7ed28e8899c78ac95014f9ddb36',1,'ncine::BaseSprite::setSize()'],['../classncine_1_1_rect.html#a04eb3397e491493f42bd9bfbfeb632c4',1,'ncine::Rect::setSize(float ww, float hh)'],['../classncine_1_1_rect.html#a58a46956266cfa9497f7c2e36b4a79dc',1,'ncine::Rect::setSize(const Vector2< T > &size)'],['../classnctl_1_1_static_array.html#ac92514aa01957fcdd63063fb6e7e5f88',1,'nctl::StaticArray::setSize()']]], + ['setsourcelocked_1121',['setSourceLocked',['../classncine_1_1_i_audio_player.html#a4a485976dd3245ade40736d6b7985404',1,'ncine::IAudioPlayer']]], + ['setstring_1122',['setString',['../classncine_1_1_text_node.html#ae8b8aa041aa9ea1ceb8c70e0535a6326',1,'ncine::TextNode::setString(const char *string)'],['../classncine_1_1_text_node.html#a6d029f55837eb042d2dd38493f66e0d4',1,'ncine::TextNode::setString(const nctl::String &string)']]], + ['setsuspended_1123',['setSuspended',['../classncine_1_1_application.html#a46fa6cfeb02a0882602b816f65a41c70',1,'ncine::Application']]], + ['setswapinterval_1124',['setSwapInterval',['../classncine_1_1_i_gfx_device.html#a62898ed71b19bf8ccd7d750fa48a50de',1,'ncine::IGfxDevice']]], + ['settexrect_1125',['setTexRect',['../classncine_1_1_base_sprite.html#a4f18eb9759c26221479eb31e7eff5e49',1,'ncine::BaseSprite::setTexRect()'],['../classncine_1_1_particle_system.html#a1cba0c4009fc382d2d4c830091b31f79',1,'ncine::ParticleSystem::setTexRect()']]], + ['settexture_1126',['setTexture',['../classncine_1_1_shader_state.html#af3f4df852faf806cdc1033864a97aad4',1,'ncine::ShaderState::setTexture()'],['../classncine_1_1_font.html#a7657570ff44612d5189422245bd81b3f',1,'ncine::Font::setTexture()'],['../classncine_1_1_base_sprite.html#a3b85a851918132e5f904b66095ab3262',1,'ncine::BaseSprite::setTexture()'],['../classncine_1_1_particle_system.html#acf0e3262a3c37c99c2169708ead171c6',1,'ncine::ParticleSystem::setTexture()'],['../classncine_1_1_shader_state.html#aa3373bad60939e0e05f9f5cc4ddcc242',1,'ncine::ShaderState::setTexture()'],['../classncine_1_1_viewport.html#aabb1d862aea40ffcf0cc2d1c6d1a4285',1,'ncine::Viewport::setTexture(unsigned int index, Texture *texture)'],['../classncine_1_1_viewport.html#a1fedb4a90ce015834702bf8f2d41d377',1,'ncine::Viewport::setTexture(Texture *texture)']]], + ['settype_1127',['setType',['../classncine_1_1_audio_effect_properties.html#a0598001e0e1fe579b612f80017093fd3',1,'ncine::AudioEffectProperties']]], + ['setupdateenabled_1128',['setUpdateEnabled',['../classncine_1_1_scene_node.html#a384f6838d9a46bd4671fa01270ed0ac5',1,'ncine::SceneNode']]], + ['setvec_1129',['setVec',['../classncine_1_1_colorf.html#a8baa423d65c98f8dc0aa7e576a0cfcbd',1,'ncine::Colorf::setVec()'],['../classncine_1_1_color_hdr.html#a401be49dde32555a38f77f29a63b412a',1,'ncine::ColorHdr::setVec()'],['../classncine_1_1_color.html#a6dad534a0f67a476dbe62c67823ba404',1,'ncine::Color::setVec()']]], + ['setvelocity_1130',['setVelocity',['../classncine_1_1_i_audio_player.html#aba1cf62b75ff3402e2509ce203066517',1,'ncine::IAudioPlayer::setVelocity(float x, float y, float z)'],['../classncine_1_1_i_audio_player.html#ae1174ec9ffe5bcd65c24b64b4d9fe3a5',1,'ncine::IAudioPlayer::setVelocity(const Vector3f &velocity)'],['../classncine_1_1_null_audio_device.html#a9364284fc7dd59453a7d44a752c36c8e',1,'ncine::NullAudioDevice::setVelocity(float x, float y, float z) override'],['../classncine_1_1_null_audio_device.html#aa3fe9a9a910fcc9b36e92af965c2e163',1,'ncine::NullAudioDevice::setVelocity(const Vector3f &velocity) override'],['../classncine_1_1_i_audio_device.html#ad8868b175082eca67ffc1b39b49be075',1,'ncine::IAudioDevice::setVelocity(float x, float y, float z)=0'],['../classncine_1_1_i_audio_device.html#acdb6c5499af0b052a4c15493bd0eea76',1,'ncine::IAudioDevice::setVelocity(const Vector3f &velocity)=0']]], + ['setvertices_1131',['setVertices',['../classncine_1_1_mesh_sprite.html#a2d3da4b4e5c81309c9204363cb23f39d',1,'ncine::MeshSprite::setVertices(const MeshSprite &meshSprite)'],['../classncine_1_1_mesh_sprite.html#af6b8ae2f3bb60aa204ed4b1262b77b0d',1,'ncine::MeshSprite::setVertices(unsigned int numVertices, const VertexNoTexture *vertices)'],['../classncine_1_1_mesh_sprite.html#a5cf5ff17077d1e7c36674aff6a19786e',1,'ncine::MeshSprite::setVertices(unsigned int numVertices, const Vertex *vertices)'],['../classncine_1_1_mesh_sprite.html#ad5ca272c071e119de27ba5808fb9d104',1,'ncine::MeshSprite::setVertices(unsigned int numVertices, unsigned int bytesPerVertex, const void *vertexData)']]], + ['setvideomode_1132',['setVideoMode',['../classncine_1_1_i_gfx_device.html#aa307286cfd7a46015d00064a4136cdca',1,'ncine::IGfxDevice']]], + ['setview_1133',['setView',['../classncine_1_1_camera.html#ab99220bd5d5f6f0487c647eca36e2d7b',1,'ncine::Camera::setView(const ViewValues &values)'],['../classncine_1_1_camera.html#aa99cb1e8259b22c3c1c9bb3081bbbef1',1,'ncine::Camera::setView(float x, float y, float rotation, float scale)'],['../classncine_1_1_camera.html#a9e462e6c68dc7bdea682441d2cc9eb7d',1,'ncine::Camera::setView(const Vector2f &pos, float rotation, float scale)']]], + ['setviewportrect_1134',['setViewportRect',['../classncine_1_1_viewport.html#a8e1dc97dcaf1d16718f1c12e71065b9e',1,'ncine::Viewport::setViewportRect(int width, int height)'],['../classncine_1_1_viewport.html#a34bfc3490233cf96c8c66d313a6764ff',1,'ncine::Viewport::setViewportRect(const Vector2i &size)'],['../classncine_1_1_viewport.html#a9fd42d990167a182d34cfb8629001bdc',1,'ncine::Viewport::setViewportRect(int x, int y, int width, int height)'],['../classncine_1_1_viewport.html#a856833200cc5023194d4839f27f40037',1,'ncine::Viewport::setViewportRect(Recti viewportRect)']]], + ['setvisitorderstate_1135',['setVisitOrderState',['../classncine_1_1_scene_node.html#ae5c0eea6eef3b4565cf409f19ee2f9fd',1,'ncine::SceneNode']]], + ['setvocalmorpherproperties_1136',['setVocalMorpherProperties',['../classncine_1_1_audio_effect_properties.html#a3878710ec8d4bad784596000542d95bc',1,'ncine::AudioEffectProperties']]], + ['setwindowicon_1137',['setWindowIcon',['../classncine_1_1_i_gfx_device.html#a65200028269aef2731a29fd0517edb91',1,'ncine::IGfxDevice']]], + ['setwindowposition_1138',['setWindowPosition',['../classncine_1_1_i_gfx_device.html#acc9479881d568651190ab19818264956',1,'ncine::IGfxDevice::setWindowPosition(int x, int y)=0'],['../classncine_1_1_i_gfx_device.html#a3e75adb79d913cf08779cad8a536ed4b',1,'ncine::IGfxDevice::setWindowPosition(Vector2i position)']]], + ['setwindowsize_1139',['setWindowSize',['../classncine_1_1_i_gfx_device.html#ae92a88625236b239af382b8b4137d4e6',1,'ncine::IGfxDevice::setWindowSize(Vector2i size)'],['../classncine_1_1_i_gfx_device.html#a53669e4c0abeb0d75d34e9ec12ce4e83',1,'ncine::IGfxDevice::setWindowSize(int width, int height)=0']]], + ['setwindowtitle_1140',['setWindowTitle',['../classncine_1_1_i_gfx_device.html#aed77aaec2a0395d7b92c8e259384ca3f',1,'ncine::IGfxDevice']]], + ['setworldmatrix_1141',['setWorldMatrix',['../classncine_1_1_scene_node.html#a6c855453c22b849bfafa034472a10a50',1,'ncine::SceneNode']]], + ['setwrap_1142',['setWrap',['../classncine_1_1_texture.html#a02ef0373ad837c24b25ab95445d2b3fa',1,'ncine::Texture']]], + ['shader_1143',['Shader',['../classncine_1_1_shader.html',1,'ncine']]], + ['shader_1144',['shader',['../classncine_1_1_shader_state.html#a00daaf37f82a2e0bdf5074c2247229f4',1,'ncine::ShaderState']]], + ['shader_1145',['Shader',['../classncine_1_1_shader.html#a58b2e7a0e030eb7922bd73402082dd34',1,'ncine::Shader']]], + ['shadercachedirname_1146',['shaderCacheDirname',['../classncine_1_1_app_configuration.html#a2e6e46983ea9200409ab8e9128647126',1,'ncine::AppConfiguration']]], + ['shaderhaschanged_1147',['shaderHasChanged',['../classncine_1_1_drawable_node.html#a417b2d61a4d54d6d3256c15d9eb4e45e',1,'ncine::DrawableNode::shaderHasChanged()'],['../classncine_1_1_base_sprite.html#a0450d7bfe2285774a9b10a969d07d84c',1,'ncine::BaseSprite::shaderHasChanged()']]], + ['shaderstate_1148',['ShaderState',['../classncine_1_1_shader_state.html',1,'ncine::ShaderState'],['../classncine_1_1_shader_state.html#a4d75ce41eda55c80ed5b038a7d995cf0',1,'ncine::ShaderState::ShaderState()']]], + ['sharedptr_1149',['SharedPtr',['../classnctl_1_1_shared_ptr.html',1,'nctl']]], + ['shouldcloseondestruction_5f_1150',['shouldCloseOnDestruction_',['../classncine_1_1_i_file.html#a94041fcb5be9a471174a540dc8a12391',1,'ncine::IFile']]], + ['shoulddeletechildrenondestruction_5f_1151',['shouldDeleteChildrenOnDestruction_',['../classncine_1_1_scene_node.html#a836ceb325e50d36488171ac4fe6083d9',1,'ncine::SceneNode']]], + ['shouldquit_1152',['shouldQuit',['../classncine_1_1_application.html#a80dbf05602e176458498e4c6307f91ba',1,'ncine::Application']]], + ['showinfotext_1153',['showInfoText',['../structncine_1_1_i_debug_overlay_1_1_display_settings.html#a6f868577a161d72ba32e94f12f005583',1,'ncine::IDebugOverlay::DisplaySettings']]], + ['showinterface_1154',['showInterface',['../structncine_1_1_i_debug_overlay_1_1_display_settings.html#a4478af7683fb52330b8ff69532afbb0a',1,'ncine::IDebugOverlay::DisplaySettings']]], + ['showprofilergraphs_1155',['showProfilerGraphs',['../structncine_1_1_i_debug_overlay_1_1_display_settings.html#a16bffe7bf0b48e6dc156a8d29ea4c8ed',1,'ncine::IDebugOverlay::DisplaySettings']]], + ['shrinktofit_1156',['shrinkToFit',['../classnctl_1_1_array.html#a5d093bb1cf828bd7c0759d1132693a9f',1,'nctl::Array::shrinkToFit()'],['../classnctl_1_1_string.html#a2ee66edbfb73bde199d3267bc844751b',1,'nctl::String::shrinkToFit()']]], + ['shutdowncommon_1157',['shutdownCommon',['../classncine_1_1_application.html#aebd92dd6c66c4bc75e6e0ae3774cce6c',1,'ncine::Application']]], + ['size_1158',['size',['../classncine_1_1_drawable_node.html#a197117efd4de823017db739d6a74731c',1,'ncine::DrawableNode::size()'],['../classncine_1_1_emscripten_local_file.html#a96610e3643c441d07796a3e410d63e8a',1,'ncine::EmscriptenLocalFile::size()'],['../classncine_1_1_i_file.html#a71befbc335aebbc513813286ee463500',1,'ncine::IFile::size()'],['../classncine_1_1_i_indexer.html#ac8e12b0bb4aade0e8a0f28a63baba5af',1,'ncine::IIndexer::size()'],['../classncine_1_1_null_indexer.html#abe70bf6f6477e1d7fc507f63587d9723',1,'ncine::NullIndexer::size()'],['../classnctl_1_1_static_hash_set.html#a3bcc0f01b413c95cf85783cdf7ac8106',1,'nctl::StaticHashSet::size()'],['../classnctl_1_1_static_hash_map.html#acd646d140507fdc586274186faa90774',1,'nctl::StaticHashMap::size()'],['../classnctl_1_1_static_array.html#aeb048a7e8ca63ae38e2e44516bb8a80d',1,'nctl::StaticArray::size()'],['../classnctl_1_1_sparse_set.html#ac9e65e43473ab99177ed57205e51b9b6',1,'nctl::SparseSet::size()'],['../classnctl_1_1_list.html#ae7a7fa469a5e887353c4b9f3416471dd',1,'nctl::List::size()'],['../classnctl_1_1_i_allocator.html#addd9078f91902937cefb2b5d2e5379fa',1,'nctl::IAllocator::size()'],['../classnctl_1_1_hash_set_list.html#a54ee5befef5c5e2a708559450aa5247e',1,'nctl::HashSetList::size()'],['../classnctl_1_1_hash_set.html#af4c4ae2906f35ebc15ec5a4615a7b597',1,'nctl::HashSet::size()'],['../classnctl_1_1_hash_map_list.html#adc6ef59e163f65007dc381cfc779ce32',1,'nctl::HashMapList::size()'],['../classnctl_1_1_hash_map.html#ac863d0500854a3964c4fa12cdcdf2f9a',1,'nctl::HashMap::size()'],['../classnctl_1_1_bit_set.html#aece1bce2ab19ab226839bce6f093a122',1,'nctl::BitSet::size()'],['../classnctl_1_1_array.html#a9ecbda1e7f173e73a6c7a6610f81607f',1,'nctl::Array::size()'],['../classncine_1_1_viewport.html#ab9265e92fd67039b376dbfc3409a2b30',1,'ncine::Viewport::size()'],['../classncine_1_1_texture.html#a10114a65de0fd0a1284efc797db4cc2b',1,'ncine::Texture::size()']]], + ['sizeaffector_1159',['SizeAffector',['../classncine_1_1_size_affector.html',1,'ncine::SizeAffector'],['../classncine_1_1_size_affector.html#aa941ff595bf8125aec24033d806c5e74',1,'ncine::SizeAffector::SizeAffector()'],['../classncine_1_1_size_affector.html#ad03b5bfa690e89aaab5e10d192adba82',1,'ncine::SizeAffector::SizeAffector(float baseScale)'],['../classncine_1_1_size_affector.html#ad080eb4e70ecf7029aa2dd18f1af635f',1,'ncine::SizeAffector::SizeAffector(float baseScaleX, float baseScaleY)'],['../classncine_1_1_size_affector.html#ad1a4c3751256cb77cee14de688318703',1,'ncine::SizeAffector::SizeAffector(const Vector2f &baseScale)'],['../classncine_1_1_size_affector.html#abd845001b52afdef6386c4ce8aea9603',1,'ncine::SizeAffector::SizeAffector(SizeAffector &&)=default'],['../classncine_1_1_size_affector.html#aa92765be47c6510b8f131da0de351017',1,'ncine::SizeAffector::SizeAffector(const SizeAffector &other)=default']]], + ['sizestep_1160',['SizeStep',['../structncine_1_1_size_affector_1_1_size_step.html',1,'ncine::SizeAffector']]], + ['sleep_1161',['sleep',['../classncine_1_1_timer.html#a8519853b1f0a184d89f47a4754f025d7',1,'ncine::Timer']]], + ['sourceid_1162',['sourceId',['../classncine_1_1_i_audio_player.html#a3d97283068632ade412ab3c30eacd4c0',1,'ncine::IAudioPlayer']]], + ['sourceid_5f_1163',['sourceId_',['../classncine_1_1_i_audio_player.html#ac726fc5e36b0a95e59b1bc6612cfb059',1,'ncine::IAudioPlayer']]], + ['sourcelocked_5f_1164',['sourceLocked_',['../classncine_1_1_i_audio_player.html#a792ab55ef117ef5d5e6ff41d5b60effa',1,'ncine::IAudioPlayer']]], + ['sparseset_1165',['SparseSet',['../classnctl_1_1_sparse_set.html',1,'nctl::SparseSet< T >'],['../classnctl_1_1_sparse_set.html#ac3e08cb4f1c2417f72519734cc6a170c',1,'nctl::SparseSet::SparseSet(const SparseSet &other)'],['../classnctl_1_1_sparse_set.html#af7ac1bd5e9b4c3c4ea78fcd0cdae2888',1,'nctl::SparseSet::SparseSet(SparseSet &&other)']]], + ['sparsesetiterator_1166',['SparseSetIterator',['../classnctl_1_1_sparse_set_iterator.html',1,'nctl']]], + ['splice_1167',['splice',['../classnctl_1_1_list.html#a0b76cf9994498f61428e79aad9d978ab',1,'nctl::List::splice(Iterator position, List &source)'],['../classnctl_1_1_list.html#a1e496f96f4f12269f996575316310f93',1,'nctl::List::splice(Iterator position, List &source, Iterator first, Iterator last)'],['../classnctl_1_1_list.html#ad4ec26c55efaf51bc11d8fe6b57b723e',1,'nctl::List::splice(Iterator position, List &source, Iterator it)']]], + ['sprite_1168',['Sprite',['../classncine_1_1_sprite.html',1,'ncine::Sprite'],['../classncine_1_1_sprite.html#a9b7973b7d7e54f9511ef430e221207a4',1,'ncine::Sprite::Sprite()'],['../classncine_1_1_sprite.html#a1645a27098a2f6fd6efb6d7ce60c0363',1,'ncine::Sprite::Sprite(SceneNode *parent, Texture *texture)'],['../classncine_1_1_sprite.html#a233efd6b8f30757d43586221d83f4a7a',1,'ncine::Sprite::Sprite(Texture *texture)'],['../classncine_1_1_sprite.html#a86aaf68bc3f116d0e1fa5b9812be1aff',1,'ncine::Sprite::Sprite(SceneNode *parent, Texture *texture, float xx, float yy)'],['../classncine_1_1_sprite.html#a171e60581c1451ea79ffcbd0f2ae1bba',1,'ncine::Sprite::Sprite(SceneNode *parent, Texture *texture, const Vector2f &position)'],['../classncine_1_1_sprite.html#a86acf82da983b5511dd3973a201b4fb9',1,'ncine::Sprite::Sprite(Texture *texture, float xx, float yy)'],['../classncine_1_1_sprite.html#af35b027116be88624a883b094d88afff',1,'ncine::Sprite::Sprite(Texture *texture, const Vector2f &position)'],['../classncine_1_1_sprite.html#aaa3fe76ac8ff7cb6bdea4328a987c60b',1,'ncine::Sprite::Sprite(Sprite &&)=default'],['../classncine_1_1_sprite.html#a512bf1c9ccad4dbceb1b4c3bbd4400f8',1,'ncine::Sprite::Sprite(const Sprite &other)']]], + ['srcblendingfactor_1169',['srcBlendingFactor',['../classncine_1_1_drawable_node.html#a15b4a8f10b7bc3d78785b233c3a3f89c',1,'ncine::DrawableNode']]], + ['stackallocator_1170',['StackAllocator',['../classnctl_1_1_stack_allocator.html',1,'nctl']]], + ['standardlibraries_1171',['StandardLibraries',['../classncine_1_1_lua_state_manager.html#a5e6d84538b89fd895bb8c5c2eb00df0b',1,'ncine::LuaStateManager']]], + ['start_1172',['start',['../classncine_1_1_android_application.html#a4159e1e50135ea264505e0f085a2e4a5',1,'ncine::AndroidApplication::start()'],['../classncine_1_1_p_c_application.html#a84b1d9e765491e384e26536efffdd4c5',1,'ncine::PCApplication::start()'],['../classncine_1_1_timer.html#aa49204c4137fe953efd4aace26b0ab34',1,'ncine::Timer::start()']]], + ['startinglife_1173',['startingLife',['../classncine_1_1_particle.html#a31b44ef90a924225f03edbeb113e8cec',1,'ncine::Particle']]], + ['startingrotation_1174',['startingRotation',['../classncine_1_1_particle.html#ae9c0f47df361dd7346adb397b9e1b5d4',1,'ncine::Particle']]], + ['state_1175',['state',['../classncine_1_1_i_audio_player.html#a44521b6b48a8500b2313531cdc056ad9',1,'ncine::IAudioPlayer']]], + ['state_5f_1176',['state_',['../classncine_1_1_i_audio_player.html#a2820a278c4c176041fc696e202a49b6c',1,'ncine::IAudioPlayer']]], + ['statebitpositions_1177',['StateBitPositions',['../classncine_1_1_viewport.html#a03e1c053a139049b8bdfa441af2d81c5',1,'ncine::Viewport']]], + ['statebits_5f_1178',['stateBits_',['../classncine_1_1_viewport.html#a1f55adc4215bc071278dcab1da1c3578',1,'ncine::Viewport']]], + ['statetomanager_1179',['StateToManager',['../structncine_1_1_lua_state_manager_1_1_state_to_manager.html',1,'ncine::LuaStateManager']]], + ['staticarray_1180',['StaticArray',['../classnctl_1_1_static_array.html',1,'nctl::StaticArray< T, C >'],['../classnctl_1_1_static_array.html#afc269b7bf09db804034bf12235bd5c0e',1,'nctl::StaticArray::StaticArray()'],['../classnctl_1_1_static_array.html#a89840032113bdbeee8937855696c66f4',1,'nctl::StaticArray::StaticArray(StaticArrayMode mode)'],['../classnctl_1_1_static_array.html#a0624f07bf5a8ab8f4ef0bb840530b4d6',1,'nctl::StaticArray::StaticArray(const StaticArray &other)'],['../classnctl_1_1_static_array.html#adfdfee63398d8a8e8f999d9ed605887d',1,'nctl::StaticArray::StaticArray(StaticArray &&other)']]], + ['staticarray_3c_20unsigned_20int_2c_20numbuffers_20_3e_1181',['StaticArray< unsigned int, NumBuffers >',['../classnctl_1_1_static_array.html',1,'nctl']]], + ['statichashmap_1182',['StaticHashMap',['../classnctl_1_1_static_hash_map.html',1,'nctl::StaticHashMap< K, T, Capacity, HashFunc >'],['../classnctl_1_1_static_hash_map.html#ab752b1491edfbbb645972584ca827d24',1,'nctl::StaticHashMap::StaticHashMap(const StaticHashMap &other)'],['../classnctl_1_1_static_hash_map.html#a7e917be3de2ab947b59497c3c01189ca',1,'nctl::StaticHashMap::StaticHashMap(StaticHashMap &&other)']]], + ['statichashmaphelpertraits_1183',['StaticHashMapHelperTraits',['../structnctl_1_1_static_hash_map_helper_traits.html',1,'nctl']]], + ['statichashmaphelpertraits_3c_20k_2c_20t_2c_20hashfunc_2c_20capacity_2c_20false_20_3e_1184',['StaticHashMapHelperTraits< K, T, HashFunc, Capacity, false >',['../structnctl_1_1_static_hash_map_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01false_01_4.html',1,'nctl']]], + ['statichashmaphelpertraits_3c_20k_2c_20t_2c_20hashfunc_2c_20capacity_2c_20true_20_3e_1185',['StaticHashMapHelperTraits< K, T, HashFunc, Capacity, true >',['../structnctl_1_1_static_hash_map_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01true_01_4.html',1,'nctl']]], + ['statichashmapiterator_1186',['StaticHashMapIterator',['../classnctl_1_1_static_hash_map_iterator.html',1,'nctl::StaticHashMapIterator< K, T, HashFunc, Capacity, IsConst >'],['../classnctl_1_1_static_hash_map_iterator.html#ab4e83e468167adfd959536fcf0f22230',1,'nctl::StaticHashMapIterator::StaticHashMapIterator(const StaticHashMapIterator< K, T, HashFunc, Capacity, false > &it)']]], + ['statichashmapiterator_3c_20k_2c_20t_2c_20hashfunc_2c_20capacity_2c_20true_20_3e_1187',['StaticHashMapIterator< K, T, HashFunc, Capacity, true >',['../classnctl_1_1_static_hash_map_iterator.html#af51287d83ffaf8509dfecdde45d35817',1,'nctl::StaticHashMapIterator']]], + ['statichashset_1188',['StaticHashSet',['../classnctl_1_1_static_hash_set.html',1,'nctl::StaticHashSet< K, Capacity, HashFunc >'],['../classnctl_1_1_static_hash_set.html#a9bdad1dba3e26cf07ecc84aab333b882',1,'nctl::StaticHashSet::StaticHashSet(const StaticHashSet &other)'],['../classnctl_1_1_static_hash_set.html#ab56abe7904063420c8aa0b8547ec6dbc',1,'nctl::StaticHashSet::StaticHashSet(StaticHashSet &&other)']]], + ['statichashsethelpertraits_1189',['StaticHashSetHelperTraits',['../structnctl_1_1_static_hash_set_helper_traits.html',1,'nctl']]], + ['statichashsetiterator_1190',['StaticHashSetIterator',['../classnctl_1_1_static_hash_set_iterator.html',1,'nctl']]], + ['staticstring_1191',['StaticString',['../classnctl_1_1_static_string.html',1,'nctl::StaticString< C >'],['../classnctl_1_1_static_string.html#a89a68e7744db5a86d4dfff147efc3b08',1,'nctl::StaticString::StaticString()'],['../classnctl_1_1_static_string.html#a82aece6f002f8ffa2b6a8699af2d9964',1,'nctl::StaticString::StaticString(const char *cString)'],['../classnctl_1_1_static_string.html#a2e344c6a1f22de437da0ce14c427c1bb',1,'nctl::StaticString::StaticString(const StaticString &other)'],['../classnctl_1_1_static_string.html#a800f3280320a74a5c79972c04956d9ce',1,'nctl::StaticString::StaticString(const StaticString< U > &other)']]], + ['staticstring_3c_20maxnamelength_20_3e_1192',['StaticString< MaxNameLength >',['../classnctl_1_1_static_string.html',1,'nctl']]], + ['statistics_1193',['Statistics',['../structncine_1_1_hash64_1_1_statistics.html',1,'ncine::Hash64']]], + ['statistics_1194',['statistics',['../classncine_1_1_hash64.html#ac8fc9184ee49d070a8a17182c060c280',1,'ncine::Hash64']]], + ['statisticstracking_1195',['StatisticsTracking',['../classncine_1_1_lua_state_manager.html#a20ff61787178f03edd74fe1074b837d7',1,'ncine::LuaStateManager']]], + ['stencilbits_1196',['stencilBits',['../classncine_1_1_display_mode.html#ae7684608ca66d7e1aa5b86b11783abf5',1,'ncine::DisplayMode']]], + ['step_1197',['step',['../classncine_1_1_application.html#ab852af89ad3bea67e0d262b43751ec69',1,'ncine::Application']]], + ['stereoaudiosources_1198',['stereoAudioSources',['../classncine_1_1_app_configuration.html#a2dff14c306eae809a89c147e3ad5d77f',1,'ncine::AppConfiguration']]], + ['stop_1199',['stop',['../classncine_1_1_timer.html#ac001019d4ff9687539ef276b154c9e4f',1,'ncine::Timer::stop()'],['../classncine_1_1_audio_stream_player.html#ae5243ad2107eeb9c3687b2e3cd1c065f',1,'ncine::AudioStreamPlayer::stop()'],['../classncine_1_1_i_audio_player.html#ac2d54f04e6095ea98fd6c0e353236656',1,'ncine::IAudioPlayer::stop()'],['../classncine_1_1_audio_stream.html#a38246a80bd7eecbf30acd04bb3eb3d4a',1,'ncine::AudioStream::stop()'],['../classncine_1_1_audio_buffer_player.html#a3cf5dcf778ec10aafb358ed963c9a497',1,'ncine::AudioBufferPlayer::stop()']]], + ['stopplayers_1200',['stopPlayers',['../classncine_1_1_i_audio_device.html#abe0660a0f49a95bea5c18243b32ccc13',1,'ncine::IAudioDevice::stopPlayers()'],['../classncine_1_1_null_audio_device.html#ad2f8ec426a9cab5fbf62f01440ea49da',1,'ncine::NullAudioDevice::stopPlayers()'],['../classncine_1_1_i_audio_device.html#a0d36f3e918e285a1a0d69a3bdb3a7932',1,'ncine::IAudioDevice::stopPlayers()'],['../classncine_1_1_null_audio_device.html#a15278691420e85b312c22f72f6d26136',1,'ncine::NullAudioDevice::stopPlayers()']]], + ['streambuffersize_1201',['streamBufferSize',['../classncine_1_1_audio_stream.html#a61950f890d8861c899dd7559f4fc5a17',1,'ncine::AudioStream::streamBufferSize()'],['../classncine_1_1_audio_stream_player.html#ab8ece94b280e747dd1302f697989b934',1,'ncine::AudioStreamPlayer::streamBufferSize()']]], + ['string_1202',['String',['../classnctl_1_1_string.html',1,'nctl::String'],['../classnctl_1_1_string.html#ad284c2f666d107ec7dd76b89ffd92972',1,'nctl::String::String()'],['../classnctl_1_1_string.html#ad2922e6acc2ad37d294acd8cbbb583b3',1,'nctl::String::String(unsigned int capacity)'],['../classnctl_1_1_string.html#abf5c075a964f1d1684919c39b4acf4af',1,'nctl::String::String(StringMode mode)'],['../classnctl_1_1_string.html#ad0c5d18ac9422005c272358e610699df',1,'nctl::String::String(unsigned int capacity, StringMode mode)'],['../classnctl_1_1_string.html#a7802027fed987eef1ad0b7c1debc5067',1,'nctl::String::String(const char *cString)'],['../classnctl_1_1_string.html#ac5022bd1104e891a4224eafee74dc660',1,'nctl::String::String(const char *cString, StringMode mode)'],['../classnctl_1_1_string.html#a8be440e78e6e9b078d39c5c44a2cea42',1,'nctl::String::String(const String &other)'],['../classnctl_1_1_string.html#ad0a33959a6a4b8eef9a2fa47bb686d79',1,'nctl::String::String(String &&other)']]], + ['string_1203',['string',['../classncine_1_1_text_node.html#aaed37f7c1997730e9a2e0e4e67138af0',1,'ncine::TextNode::string() const'],['../classncine_1_1_text_node.html#a98f5bb6f43f3e971fb731c105f1f70fa',1,'ncine::TextNode::string()']]], + ['stringiterator_1204',['StringIterator',['../classnctl_1_1_string_iterator.html',1,'nctl::StringIterator< IsConst >'],['../classnctl_1_1_string_iterator.html#a2ce1172e97d907ef3ad7c027ecae56af',1,'nctl::StringIterator::StringIterator(const StringIterator< false > &it)']]], + ['stringiterator_3c_20true_20_3e_1205',['StringIterator< true >',['../classnctl_1_1_string_iterator.html#a3cd070048f16ccc963def23fa25228b8',1,'nctl::StringIterator']]], + ['stype_1206',['sType',['../classncine_1_1_object.html#a8960d2d0df46d7e3b6bc04ab21f87a0c',1,'ncine::Object']]], + ['suspend_1207',['suspend',['../classncine_1_1_application.html#a9c0a9ab89fdbbe83d3ee95afabcd901b',1,'ncine::Application']]], + ['swap_1208',['swap',['../classnctl_1_1_array.html#a63608e034c5ed7b4cb8ed25cd53957c2',1,'nctl::Array::swap()'],['../classnctl_1_1_hash_map.html#a2c426499b918cb9c55eae254c7a5b3b4',1,'nctl::HashMap::swap()'],['../classnctl_1_1_hash_set.html#acbf88bfe2bbcdee745bc761b03d4b5df',1,'nctl::HashSet::swap()'],['../classnctl_1_1_list.html#a4a0db08b291600115ddc469fe660b766',1,'nctl::List::swap()'],['../classnctl_1_1_sparse_set.html#af44e93006c46259ee6486f83dce7154b',1,'nctl::SparseSet::swap()'],['../classnctl_1_1_string.html#a639ecfadb3c3d9bf60d38d28df07fccf',1,'nctl::String::swap()']]], + ['swapchildpointer_1209',['swapChildPointer',['../classncine_1_1_scene_node.html#a7204864765a4becdc1bca88882cb85a5',1,'ncine::SceneNode']]], + ['swapchildrennodes_1210',['swapChildrenNodes',['../classncine_1_1_scene_node.html#a22853db10e98431a0f3890bd14707ffd',1,'ncine::SceneNode']]], + ['swapnodeback_1211',['swapNodeBack',['../classncine_1_1_scene_node.html#a7eaafcbe9f546895cabe3ddd03ba8101',1,'ncine::SceneNode']]], + ['swapnodeforward_1212',['swapNodeForward',['../classncine_1_1_scene_node.html#a60cb39746d36315350d9e6e73b6516b6',1,'ncine::SceneNode']]], + ['sym_1213',['sym',['../classncine_1_1_keyboard_event.html#ac11d9d60cccef321bea19f5b7c484ab8',1,'ncine::KeyboardEvent']]] +]; diff --git a/master/search/all_13.html b/master/search/all_13.html new file mode 100644 index 0000000000..51172c2f3c --- /dev/null +++ b/master/search/all_13.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/all_13.js b/master/search/all_13.js new file mode 100644 index 0000000000..6ce231e5fd --- /dev/null +++ b/master/search/all_13.js @@ -0,0 +1,40 @@ +var searchData= +[ + ['tell_1214',['tell',['../classncine_1_1_i_file.html#a4de731cff02783ec12ce519777e02b2d',1,'ncine::IFile::tell()'],['../classncine_1_1_asset_file.html#a6f3620bc57a7c3d4a5945337a8c84b9f',1,'ncine::AssetFile::tell()']]], + ['test_1215',['test',['../classnctl_1_1_bit_set.html#afb2898a74cf995f0797e1b3ce670f676',1,'nctl::BitSet']]], + ['texrect_1216',['texRect',['../classncine_1_1_base_sprite.html#a26f07a30eb3c9d4f0ec2fd292e14b5cf',1,'ncine::BaseSprite']]], + ['texrect_5f_1217',['texRect_',['../classncine_1_1_base_sprite.html#a534738fc0a176e5184a2ac3e66ff29b5',1,'ncine::BaseSprite']]], + ['text_1218',['text',['../classncine_1_1_text_input_event.html#a053c6bf572cd457827a009f6d257655a',1,'ncine::TextInputEvent']]], + ['textinputevent_1219',['TextInputEvent',['../classncine_1_1_text_input_event.html',1,'ncine']]], + ['textnode_1220',['TextNode',['../classncine_1_1_text_node.html',1,'ncine::TextNode'],['../classncine_1_1_text_node.html#a17095bc5febc22611e7421c910834023',1,'ncine::TextNode::TextNode(TextNode &&)=default'],['../classncine_1_1_text_node.html#a759e7d2e49e31ba2a04248dca88e3911',1,'ncine::TextNode::TextNode(const TextNode &other)']]], + ['texture_1221',['Texture',['../classncine_1_1_texture.html',1,'ncine::Texture'],['../classncine_1_1_texture.html#a62f9f16f3992fe329ce6a35c3935fcac',1,'ncine::Texture::Texture(Texture &&)'],['../classncine_1_1_texture.html#a7f622fa63591fde50cd2b37002d99b52',1,'ncine::Texture::Texture(const char *filename)']]], + ['texture_1222',['texture',['../classncine_1_1_base_sprite.html#a94f8fab1e3c751e27629d6be61dda345',1,'ncine::BaseSprite::texture()'],['../classncine_1_1_font.html#a69c0d6093e79e78f975c31f494e7f9fe',1,'ncine::Font::texture() const'],['../classncine_1_1_font.html#a4472bd8882a7c3d42b018bc2b7566a31',1,'ncine::Font::texture()'],['../classncine_1_1_viewport.html#ace3e169f2a6048e22fee6787d20fc0e2',1,'ncine::Viewport::texture(unsigned int index)'],['../classncine_1_1_viewport.html#a9b1aac0946d5197d57ea758dff82a373',1,'ncine::Viewport::texture()']]], + ['texture_1223',['Texture',['../classncine_1_1_texture.html#a14346f072ed8ed79fbfe73fc96557ecf',1,'ncine::Texture::Texture(const char *bufferName, const unsigned char *bufferPtr, unsigned long int bufferSize)'],['../classncine_1_1_texture.html#afc17c27a67593833b0c33081bcad3465',1,'ncine::Texture::Texture(const char *name, Format format, Vector2i size)'],['../classncine_1_1_texture.html#abd3b1cc4d2d0fc634143bcf1c278757c',1,'ncine::Texture::Texture(const char *name, Format format, int width, int height)'],['../classncine_1_1_texture.html#aecdd5c43b69d34a4704433c12fab3876',1,'ncine::Texture::Texture(const char *name, Format format, int mipMapCount, int width, int height)'],['../classncine_1_1_texture.html#a350ae96364626c1c4a1be2d8dc7f3e8a',1,'ncine::Texture::Texture()'],['../classncine_1_1_texture.html#a9921d96fc6d207f94a2e225628a3e6b0',1,'ncine::Texture::Texture(const char *name, Format format, int mipMapCount, Vector2i size)']]], + ['texture_5f_1224',['texture_',['../classncine_1_1_base_sprite.html#a0d2de67137146ca2c73981910ef29bea',1,'ncine::BaseSprite']]], + ['texturehaschanged_1225',['textureHasChanged',['../classncine_1_1_base_sprite.html#a122d7490bf8dd9da705c685f3a3dcc4b',1,'ncine::BaseSprite']]], + ['texturesaverpng_1226',['TextureSaverPng',['../classncine_1_1_texture_saver_png.html',1,'ncine::TextureSaverPng'],['../classncine_1_1_i_file.html#ad07f24112aa511546b56d67c24790f14',1,'ncine::IFile::TextureSaverPng()']]], + ['texturesaverwebp_1227',['TextureSaverWebP',['../classncine_1_1_texture_saver_web_p.html',1,'ncine']]], + ['texturesize_1228',['textureSize',['../classncine_1_1_font.html#a9f3e853cb800402e6bc3ccfc12a7eda2',1,'ncine::Font']]], + ['theapplication_1229',['theApplication',['../classncine_1_1_android_application.html#a60420cff34021c7033147b60126b4119',1,'ncine::AndroidApplication::theApplication()'],['../classncine_1_1_p_c_application.html#a60420cff34021c7033147b60126b4119',1,'ncine::PCApplication::theApplication()']]], + ['theservicelocator_1230',['theServiceLocator',['../classncine_1_1_service_locator.html#a082ba9eb0edfb7c0c459ec9c7ccbecc2',1,'ncine::ServiceLocator']]], + ['this_5fframe_5fonly_1231',['THIS_FRAME_ONLY',['../classncine_1_1_viewport.html#af65ae2e288ca0cbad4d09a1b740622a6a66f5a7a033098187466bc9b8c5a2325c',1,'ncine::Viewport']]], + ['threadpool_1232',['threadPool',['../classncine_1_1_service_locator.html#ad7d39ec88b37dd026c0086996d6efc84',1,'ncine::ServiceLocator']]], + ['ticks_1233',['ticks',['../classncine_1_1_time_stamp.html#a3191a0952f624328556f8c0f18e44ce5',1,'ncine::TimeStamp']]], + ['timer_1234',['Timer',['../classncine_1_1_timer.html',1,'ncine']]], + ['timesince_1235',['timeSince',['../classncine_1_1_time_stamp.html#a756a0918bbbef4e0f5805bdee6f885ef',1,'ncine::TimeStamp']]], + ['timestamp_1236',['TimeStamp',['../classncine_1_1_time_stamp.html',1,'ncine']]], + ['timings_1237',['Timings',['../structncine_1_1_application_1_1_timings.html',1,'ncine::Application']]], + ['timings_1238',['timings',['../classncine_1_1_application.html#a092bd96fe363c0cb19edaed541f2bea8',1,'ncine::Application']]], + ['togglesoftinput_1239',['toggleSoftInput',['../classncine_1_1_android_application.html#a044fe6a457c89f3a278b83676bcbd836',1,'ncine::AndroidApplication']]], + ['total_1240',['total',['../classncine_1_1_timer.html#a2236c2e6878e8fac26e72930968a0ea6',1,'ncine::Timer']]], + ['totalnumberframes_1241',['totalNumberFrames',['../classncine_1_1_i_frame_timer.html#aa41d15ffe84d70736f45fcdee5e7d7e8',1,'ncine::IFrameTimer']]], + ['totalprocessedbuffers_1242',['totalProcessedBuffers',['../classncine_1_1_audio_stream.html#a636e7f147f9d5835e0535d0e2222130f',1,'ncine::AudioStream']]], + ['touchevent_1243',['TouchEvent',['../classncine_1_1_touch_event.html',1,'ncine']]], + ['tryopen_1244',['tryOpen',['../classncine_1_1_asset_file.html#aab4271c386d99f4ee956a8217ffb7962',1,'ncine::AssetFile']]], + ['tryopendirectory_1245',['tryOpenDirectory',['../classncine_1_1_asset_file.html#ac9adf1214c12de44201aebb8acb1b339',1,'ncine::AssetFile']]], + ['tryopenfile_1246',['tryOpenFile',['../classncine_1_1_asset_file.html#a4dcfac79c109ae19fdf40525f806f3db',1,'ncine::AssetFile']]], + ['type_1247',['type',['../classncine_1_1_audio_effect.html#a69d1590a8fde02c60c2dd2607cd2f29c',1,'ncine::AudioEffect::type()'],['../classncine_1_1_audio_effect_properties.html#adc85852d1420c0733e5c702ff42fb14b',1,'ncine::AudioEffectProperties::type()'],['../classncine_1_1_audio_filter.html#afd5d183c786e0f1f51f9905621d68214',1,'ncine::AudioFilter::type()'],['../classncine_1_1_i_file.html#a9d8be824821e1ca83461ba50b03820e8',1,'ncine::IFile::type()'],['../classncine_1_1_object.html#ae9933d9ca04758549f0d06fb7b0943d8',1,'ncine::Object::type()'],['../classncine_1_1_particle_affector.html#a4ee1335afd45509f8f03aa2b7c88cf44',1,'ncine::ParticleAffector::type()'],['../classncine_1_1_viewport.html#aefa0d6bf552ccda2b0c81ed06d0f8b65',1,'ncine::Viewport::type() const']]], + ['type_1248',['Type',['../classncine_1_1_viewport.html#a12c083906885f6c2d1528f47a316f31e',1,'ncine::Viewport']]], + ['type_5f_1249',['type_',['../classncine_1_1_i_file.html#a5350514d0358e9d154f34215c442b931',1,'ncine::IFile::type_()'],['../classncine_1_1_object.html#adaa96983790a2e67e1c7dd35ba65d8cb',1,'ncine::Object::type_()'],['../classncine_1_1_particle_affector.html#acb9b6ede8af4799f853a2d87269b39f8',1,'ncine::ParticleAffector::type_()']]], + ['typeidentity_1250',['typeIdentity',['../structnctl_1_1detail_1_1type_identity.html',1,'nctl::detail']]] +]; diff --git a/master/search/all_14.html b/master/search/all_14.html new file mode 100644 index 0000000000..afecf56349 --- /dev/null +++ b/master/search/all_14.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/all_14.js b/master/search/all_14.js new file mode 100644 index 0000000000..f520e65c45 --- /dev/null +++ b/master/search/all_14.js @@ -0,0 +1,54 @@ +var searchData= +[ + ['uniqueindices_1251',['uniqueIndices',['../classncine_1_1_mesh_sprite.html#a3c75cb015050fbbbda78011ba7c03a62',1,'ncine::MeshSprite']]], + ['uniqueptr_1252',['UniquePtr',['../classnctl_1_1_unique_ptr.html',1,'nctl']]], + ['uniqueptr_3c_20char_5b_5d_3e_1253',['UniquePtr< char[]>',['../classnctl_1_1_unique_ptr.html',1,'nctl']]], + ['uniqueptr_3c_20fontglyph_5b_5d_3e_1254',['UniquePtr< FontGlyph[]>',['../classnctl_1_1_unique_ptr.html',1,'nctl']]], + ['uniqueptr_3c_20frametimer_20_3e_1255',['UniquePtr< FrameTimer >',['../classnctl_1_1_unique_ptr.html',1,'nctl']]], + ['uniqueptr_3c_20glframebufferobject_20_3e_1256',['UniquePtr< GLFramebufferObject >',['../classnctl_1_1_unique_ptr.html',1,'nctl']]], + ['uniqueptr_3c_20glshaderprogram_20_3e_1257',['UniquePtr< GLShaderProgram >',['../classnctl_1_1_unique_ptr.html',1,'nctl']]], + ['uniqueptr_3c_20gltexture_20_3e_1258',['UniquePtr< GLTexture >',['../classnctl_1_1_unique_ptr.html',1,'nctl']]], + ['uniqueptr_3c_20iaudioreader_20_3e_1259',['UniquePtr< IAudioReader >',['../classnctl_1_1_unique_ptr.html',1,'nctl']]], + ['uniqueptr_3c_20ncine_3a_3aiappeventhandler_20_3e_1260',['UniquePtr< ncine::IAppEventHandler >',['../classnctl_1_1_unique_ptr.html',1,'nctl']]], + ['uniqueptr_3c_20ncine_3a_3aiaudiodevice_20_3e_1261',['UniquePtr< ncine::IAudioDevice >',['../classnctl_1_1_unique_ptr.html',1,'nctl']]], + ['uniqueptr_3c_20ncine_3a_3aidebugoverlay_20_3e_1262',['UniquePtr< ncine::IDebugOverlay >',['../classnctl_1_1_unique_ptr.html',1,'nctl']]], + ['uniqueptr_3c_20ncine_3a_3aigfxcapabilities_20_3e_1263',['UniquePtr< ncine::IGfxCapabilities >',['../classnctl_1_1_unique_ptr.html',1,'nctl']]], + ['uniqueptr_3c_20ncine_3a_3aigfxdevice_20_3e_1264',['UniquePtr< ncine::IGfxDevice >',['../classnctl_1_1_unique_ptr.html',1,'nctl']]], + ['uniqueptr_3c_20ncine_3a_3aiindexer_20_3e_1265',['UniquePtr< ncine::IIndexer >',['../classnctl_1_1_unique_ptr.html',1,'nctl']]], + ['uniqueptr_3c_20ncine_3a_3aiinputmanager_20_3e_1266',['UniquePtr< ncine::IInputManager >',['../classnctl_1_1_unique_ptr.html',1,'nctl']]], + ['uniqueptr_3c_20ncine_3a_3ailogger_20_3e_1267',['UniquePtr< ncine::ILogger >',['../classnctl_1_1_unique_ptr.html',1,'nctl']]], + ['uniqueptr_3c_20ncine_3a_3aithreadpool_20_3e_1268',['UniquePtr< ncine::IThreadPool >',['../classnctl_1_1_unique_ptr.html',1,'nctl']]], + ['uniqueptr_3c_20ncine_3a_3ascenenode_20_3e_1269',['UniquePtr< ncine::SceneNode >',['../classnctl_1_1_unique_ptr.html',1,'nctl']]], + ['uniqueptr_3c_20ncine_3a_3atexture_20_3e_1270',['UniquePtr< ncine::Texture >',['../classnctl_1_1_unique_ptr.html',1,'nctl']]], + ['uniqueptr_3c_20rendercommand_20_3e_1271',['UniquePtr< RenderCommand >',['../classnctl_1_1_unique_ptr.html',1,'nctl']]], + ['uniqueptr_3c_20renderqueue_20_3e_1272',['UniquePtr< RenderQueue >',['../classnctl_1_1_unique_ptr.html',1,'nctl']]], + ['uniqueptr_3c_20screenviewport_20_3e_1273',['UniquePtr< ScreenViewport >',['../classnctl_1_1_unique_ptr.html',1,'nctl']]], + ['uniqueptr_3c_20t_5b_5d_2c_20deleter_20_3e_1274',['UniquePtr< T[], Deleter >',['../classnctl_1_1_unique_ptr_3_01_t_0f_0e_00_01_deleter_01_4.html',1,'nctl']]], + ['uniquevertices_1275',['uniqueVertices',['../classncine_1_1_mesh_sprite.html#a74686e888313b015fcebd76e086d6e4b',1,'ncine::MeshSprite']]], + ['unlinkchildnode_1276',['unlinkChildNode',['../classncine_1_1_scene_node.html#a6a190ef4fd6f9d7d25075c6e9cb8f147',1,'ncine::SceneNode']]], + ['unorderederase_1277',['unorderedErase',['../classnctl_1_1_array.html#afb08ea0392e1ef8d969636068f8ca3f0',1,'nctl::Array::unorderedErase(Iterator position)'],['../classnctl_1_1_array.html#ae8a9d9dc35c48601fa6c83df8ff4a9a0',1,'nctl::Array::unorderedErase(Iterator first, const Iterator last)'],['../classnctl_1_1_static_array.html#a4f0e72ecc62fd0e07ce025a9d527356a',1,'nctl::StaticArray::unorderedErase(Iterator position)'],['../classnctl_1_1_static_array.html#aea68ee8cec1e4a9a0e42d5ca089df233',1,'nctl::StaticArray::unorderedErase(Iterator first, const Iterator last)']]], + ['unorderedremoveat_1278',['unorderedRemoveAt',['../classnctl_1_1_array.html#a240e919fb2fe12fe7832d9cee5ac97be',1,'nctl::Array::unorderedRemoveAt()'],['../classnctl_1_1_static_array.html#a843c943ad38a18f125c93cd157c6387b',1,'nctl::StaticArray::unorderedRemoveAt(unsigned int index)']]], + ['unorderedremoverange_1279',['unorderedRemoveRange',['../classnctl_1_1_static_array.html#abc95d55b4601fc52e6dddb018b664114',1,'nctl::StaticArray::unorderedRemoveRange()'],['../classnctl_1_1_array.html#a6897e9cabe5d74bc668be469f1d96fd9',1,'nctl::Array::unorderedRemoveRange()']]], + ['unregisterall_1280',['unregisterAll',['../classncine_1_1_service_locator.html#a8c6600577d8394a5361248ad136f494c',1,'ncine::ServiceLocator']]], + ['unregisteraudiodevice_1281',['unregisterAudioDevice',['../classncine_1_1_service_locator.html#aa90a89f5a59077a9aff52c6ed6d8a501',1,'ncine::ServiceLocator']]], + ['unregistergfxcapabilities_1282',['unregisterGfxCapabilities',['../classncine_1_1_service_locator.html#ab97b4fb4c7487811d87dda1880c157c8',1,'ncine::ServiceLocator']]], + ['unregisterindexer_1283',['unregisterIndexer',['../classncine_1_1_service_locator.html#a41464268126606d97accba4e59962f04',1,'ncine::ServiceLocator']]], + ['unregisterlogger_1284',['unregisterLogger',['../classncine_1_1_service_locator.html#ae81b0770b12bf3028cb8aa1c84d04b51',1,'ncine::ServiceLocator']]], + ['unregisterplayer_1285',['unregisterPlayer',['../classncine_1_1_i_audio_device.html#a3e6b63e5c618ce8718acc023b61e63d5',1,'ncine::IAudioDevice::unregisterPlayer()'],['../classncine_1_1_null_audio_device.html#a4ef5a91a1a9e4f725655a2a65b381c37',1,'ncine::NullAudioDevice::unregisterPlayer()']]], + ['unregisterthreadpool_1286',['unregisterThreadPool',['../classncine_1_1_service_locator.html#a4fa689c9af82f0522f5bbf55757f4150',1,'ncine::ServiceLocator']]], + ['update_1287',['update',['../classncine_1_1_animated_sprite.html#a3df5accc00df4e2aaec63b8bb151b45d',1,'ncine::AnimatedSprite::update()'],['../classncine_1_1_particle_system.html#a9f119093d6fb28863e0f0edc30ef708a',1,'ncine::ParticleSystem::update()'],['../classncine_1_1_scene_node.html#aef0e1b931cda677c0e051d240cb98c83',1,'ncine::SceneNode::update()']]], + ['updateaabb_1288',['updateAabb',['../classncine_1_1_drawable_node.html#a33ba2084d93031328b200744c04fe485',1,'ncine::DrawableNode']]], + ['updateculling_1289',['updateCulling',['../classncine_1_1_drawable_node.html#a0911c8e9e324dcd03da68392093367eb',1,'ncine::DrawableNode']]], + ['updateframe_1290',['updateFrame',['../classncine_1_1_rect_animation.html#aafb598490c406568d4dd0bda2359b716',1,'ncine::RectAnimation']]], + ['updateframeprojectionmatrix_1291',['updateFrameProjectionMatrix',['../classncine_1_1_camera.html#a53238e354b5c67d0930e862704f0c4ac',1,'ncine::Camera']]], + ['updateframeviewmatrix_1292',['updateFrameViewMatrix',['../classncine_1_1_camera.html#a3fa1f16f76417096d1a10553ebb66adc',1,'ncine::Camera']]], + ['updatemonitors_1293',['updateMonitors',['../classncine_1_1_i_gfx_device.html#ade9afde5ab9fb4b39d2c46e3727c7c6a',1,'ncine::IGfxDevice']]], + ['updateplayers_1294',['updatePlayers',['../classncine_1_1_i_audio_device.html#afe94cb504b027853bb93e861605937cf',1,'ncine::IAudioDevice::updatePlayers()'],['../classncine_1_1_null_audio_device.html#a133e9ded9fc208fc79bb5e2245ad00b2',1,'ncine::NullAudioDevice::updatePlayers()']]], + ['updaterendercommand_1295',['updateRenderCommand',['../classncine_1_1_base_sprite.html#a203e9e13d90350bc78798f2946c6a629',1,'ncine::BaseSprite::updateRenderCommand()'],['../classncine_1_1_drawable_node.html#a9f7b14db9747d4e619efb6bde5553e58',1,'ncine::DrawableNode::updateRenderCommand()']]], + ['updatescalingfactor_1296',['updateScalingFactor',['../classncine_1_1_application.html#a6602fe13683ba1c96ece7960c58cf190',1,'ncine::Application']]], + ['updatestate_1297',['updateState',['../classncine_1_1_audio_buffer_player.html#a85c9ccfcc21f98a2b3556895ab2f3b45',1,'ncine::AudioBufferPlayer::updateState()'],['../classncine_1_1_audio_stream_player.html#ab3f96c427677ce2b1f21848c8a2ab568',1,'ncine::AudioStreamPlayer::updateState()'],['../classncine_1_1_i_audio_player.html#aa06fbf87452af42c637cbed2e8ccc453',1,'ncine::IAudioPlayer::updateState()']]], + ['usebinaryshadercache_1298',['useBinaryShaderCache',['../classncine_1_1_app_configuration.html#a500b00626e2a2771aac631a75b11cf9b',1,'ncine::AppConfiguration']]], + ['usebuffermapping_1299',['useBufferMapping',['../classncine_1_1_app_configuration.html#a1950578165d72c3a71d2a937d9e8cddc',1,'ncine::AppConfiguration']]], + ['usedmemory_1300',['usedMemory',['../classnctl_1_1_i_allocator.html#a8a8c7b68537065a6159ef99e11f8a429',1,'nctl::IAllocator']]], + ['utf8tocodepoint_1301',['utf8ToCodePoint',['../classnctl_1_1_static_string.html#afa50073a475d643c835d8ae54c7d26ab',1,'nctl::StaticString::utf8ToCodePoint(unsigned int position, unsigned int &codePoint, unsigned int *codeUnits) const'],['../classnctl_1_1_static_string.html#a55e98c0e1e4c30c57e1c77dbe0c92d74',1,'nctl::StaticString::utf8ToCodePoint(unsigned int position, unsigned int &codePoint) const'],['../classnctl_1_1_string.html#a52bef6340dbd5fafa146f8c605e6476f',1,'nctl::String::utf8ToCodePoint(unsigned int position, unsigned int &codePoint, unsigned int *codeUnits) const'],['../classnctl_1_1_string.html#a58a2fb574c706a5aff4dc6ed2355108c',1,'nctl::String::utf8ToCodePoint(unsigned int position, unsigned int &codePoint) const']]] +]; diff --git a/master/search/all_15.html b/master/search/all_15.html new file mode 100644 index 0000000000..69f382b31d --- /dev/null +++ b/master/search/all_15.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/all_15.js b/master/search/all_15.js new file mode 100644 index 0000000000..538a1f2534 --- /dev/null +++ b/master/search/all_15.js @@ -0,0 +1,36 @@ +var searchData= +[ + ['validateminmax_1302',['validateMinMax',['../structncine_1_1_particle_initializer.html#ae642a5dc76391b8533a7b31171acc0b2',1,'ncine::ParticleInitializer']]], + ['value_1303',['value',['../classnctl_1_1_static_hash_map_iterator.html#a6ace65488d0ec1a69bb50938d64a250e',1,'nctl::StaticHashMapIterator::value()'],['../classnctl_1_1_hash_map_list_iterator.html#ab9186ae014081101551ba57908f978bc',1,'nctl::HashMapListIterator::value()'],['../classnctl_1_1_hash_map_iterator.html#a2ca4ec064c69142589948abbefaef6e1',1,'nctl::HashMapIterator::value()'],['../classncine_1_1_i_gfx_capabilities.html#adb743a36e25ad7d30480a715e07190ee',1,'ncine::IGfxCapabilities::value()'],['../classncine_1_1_joy_mapped_axis_event.html#a12e012caf9fc08031b17efb8073dbd9d',1,'ncine::JoyMappedAxisEvent::value()'],['../classncine_1_1_joy_axis_event.html#a8e3aa632dbf3aa09413a46ab7ca0efe2',1,'ncine::JoyAxisEvent::value()']]], + ['valuetype_1304',['ValueType',['../structnctl_1_1_iterator_traits_3_01_hash_set_iterator_3_01_k_00_01_hash_func_01_4_01_4.html#ac71aa7782f613db6afdc618d4406f61e',1,'nctl::IteratorTraits< HashSetIterator< K, HashFunc > >::ValueType()'],['../structnctl_1_1_iterator_traits_3_01_hash_map_list_iterator_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4_01_4.html#a544f1f2b7c0a0bfd6363760ad838a12d',1,'nctl::IteratorTraits< HashMapListIterator< K, T, HashFunc, true > >::ValueType()'],['../structnctl_1_1_iterator_traits_3_01_hash_map_list_iterator_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4_01_4.html#a39ea68f297aea1b0dfa4be529aa7b836',1,'nctl::IteratorTraits< HashMapListIterator< K, T, HashFunc, false > >::ValueType()'],['../structnctl_1_1_iterator_traits_3_01_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4_01_4.html#aa6bc2931532dc8ec040f5bb40b7a3dfb',1,'nctl::IteratorTraits< HashMapIterator< K, T, HashFunc, true > >::ValueType()'],['../structnctl_1_1_iterator_traits_3_01_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4_01_4.html#a8ce7f0f4d4a2ea7f462f5fc63a21d736',1,'nctl::IteratorTraits< HashMapIterator< K, T, HashFunc, false > >::ValueType()'],['../structnctl_1_1_iterator_traits_3_01_array_iterator_3_01_t_00_01true_01_4_01_4.html#ae98973b06c1a1c3371783254f92d3c91',1,'nctl::IteratorTraits< ArrayIterator< T, true > >::ValueType()'],['../structnctl_1_1_iterator_traits_3_01_array_iterator_3_01_t_00_01false_01_4_01_4.html#a6e26e673bd5fb9b40777f532742b801f',1,'nctl::IteratorTraits< ArrayIterator< T, false > >::ValueType()'],['../structnctl_1_1_iterator_traits_3_01_hash_set_list_iterator_3_01_k_00_01_hash_func_01_4_01_4.html#ac57350c60a2d549699af7ba678fe2270',1,'nctl::IteratorTraits< HashSetListIterator< K, HashFunc > >::ValueType()'],['../structnctl_1_1_iterator_traits_3_01_list_iterator_3_01_t_00_01false_01_4_01_4.html#a9a36995893718b04e9ca85d6e640bb4e',1,'nctl::IteratorTraits< ListIterator< T, false > >::ValueType()'],['../structnctl_1_1_iterator_traits_3_01_list_iterator_3_01_t_00_01true_01_4_01_4.html#acdb7975d6d11318afa343aebd54973c4',1,'nctl::IteratorTraits< ListIterator< T, true > >::ValueType()'],['../structnctl_1_1_iterator_traits_3_01_reverse_iterator_3_01_iterator_01_4_01_4.html#aad3db8090e8917302ade16145ac4397a',1,'nctl::IteratorTraits< ReverseIterator< Iterator > >::ValueType()'],['../structnctl_1_1_iterator_traits_3_01_sparse_set_iterator_3_01_t_01_4_01_4.html#a22515ae6133eed447eef261c63950bb7',1,'nctl::IteratorTraits< SparseSetIterator< T > >::ValueType()'],['../structnctl_1_1_iterator_traits_3_01_static_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01false_01_4_01_4.html#a2fa46dbf2c510836d7b38746c1342d76',1,'nctl::IteratorTraits< StaticHashMapIterator< K, T, HashFunc, Capacity, false > >::ValueType()'],['../structnctl_1_1_iterator_traits_3_01_static_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01true_01_4_01_4.html#a69ef6838f5589124f7e93abd2e1fdf81',1,'nctl::IteratorTraits< StaticHashMapIterator< K, T, HashFunc, Capacity, true > >::ValueType()'],['../structnctl_1_1_iterator_traits_3_01_static_hash_set_iterator_3_01_k_00_01_hash_func_00_01_capacity_01_4_01_4.html#a903f6b6c22987b38e6f693e8ed192327',1,'nctl::IteratorTraits< StaticHashSetIterator< K, HashFunc, Capacity > >::ValueType()'],['../structnctl_1_1_iterator_traits_3_01_string_iterator_3_01false_01_4_01_4.html#a3b427b734500fcf7722ea4c5eb412e3f',1,'nctl::IteratorTraits< StringIterator< false > >::ValueType()'],['../structnctl_1_1_iterator_traits_3_01_string_iterator_3_01true_01_4_01_4.html#ad738503f1c29c4a78bb9bf20238d43a1',1,'nctl::IteratorTraits< StringIterator< true > >::ValueType()']]], + ['vaopoolsize_1305',['vaoPoolSize',['../classncine_1_1_app_configuration.html#ac17249174c4668988c2d686daff63464',1,'ncine::AppConfiguration']]], + ['vbosize_1306',['vboSize',['../classncine_1_1_app_configuration.html#a15dcf2a7ff3d9d96cf1e9193af56eaef',1,'ncine::AppConfiguration']]], + ['vector2_1307',['Vector2',['../classncine_1_1_vector2.html',1,'ncine']]], + ['vector2_3c_20float_20_3e_1308',['Vector2< float >',['../classncine_1_1_vector2.html',1,'ncine']]], + ['vector2_3c_20int_20_3e_1309',['Vector2< int >',['../classncine_1_1_vector2.html',1,'ncine']]], + ['vector3_1310',['Vector3',['../classncine_1_1_vector3.html',1,'ncine']]], + ['vector3_3c_20float_20_3e_1311',['Vector3< float >',['../classncine_1_1_vector3.html',1,'ncine']]], + ['vector4_1312',['Vector4',['../classncine_1_1_vector4.html',1,'ncine']]], + ['velocity_1313',['velocity',['../classncine_1_1_i_audio_player.html#a0a70a2a9c3ea2dba1119a8358084980b',1,'ncine::IAudioPlayer::velocity()'],['../classncine_1_1_null_audio_device.html#a1c7fb978511e3411182f4dd688a63438',1,'ncine::NullAudioDevice::velocity()'],['../classncine_1_1_i_audio_device.html#adefd040086204ebc89ff28cd12c6b4c0',1,'ncine::IAudioDevice::velocity()']]], + ['velocity_5f_1314',['velocity_',['../classncine_1_1_particle.html#a67338c7ce276f53f75db9b2014784637',1,'ncine::Particle::velocity_()'],['../classncine_1_1_i_audio_player.html#a5061a9d884894c7779a416bf22f2a956',1,'ncine::IAudioPlayer::velocity_()']]], + ['velocityaffector_1315',['VelocityAffector',['../classncine_1_1_velocity_affector.html',1,'ncine::VelocityAffector'],['../classncine_1_1_velocity_affector.html#a49f5d9284669e07d211bf1123e573ff5',1,'ncine::VelocityAffector::VelocityAffector(VelocityAffector &&)=default'],['../classncine_1_1_velocity_affector.html#a319bba689228e73202ec1e9859b43835',1,'ncine::VelocityAffector::VelocityAffector(const VelocityAffector &other)=default']]], + ['velocitystep_1316',['VelocityStep',['../structncine_1_1_velocity_affector_1_1_velocity_step.html',1,'ncine::VelocityAffector']]], + ['vertex_1317',['Vertex',['../structncine_1_1_mesh_sprite_1_1_vertex.html',1,'ncine::MeshSprite']]], + ['vertexnotexture_1318',['VertexNoTexture',['../structncine_1_1_mesh_sprite_1_1_vertex_no_texture.html',1,'ncine::MeshSprite']]], + ['vertices_1319',['vertices',['../classncine_1_1_mesh_sprite.html#aebfd74d7a146551d089e8e8c11361a53',1,'ncine::MeshSprite']]], + ['videomode_1320',['VideoMode',['../structncine_1_1_i_gfx_device_1_1_video_mode.html',1,'ncine::IGfxDevice']]], + ['videomodes_1321',['videoModes',['../structncine_1_1_i_gfx_device_1_1_monitor.html#aa84025363bcc26446062dd409182e402',1,'ncine::IGfxDevice::Monitor']]], + ['view_1322',['view',['../classncine_1_1_camera.html#aa9c87c8721b820b0dac673e5ae0f9a65',1,'ncine::Camera']]], + ['viewport_1323',['Viewport',['../classncine_1_1_viewport.html',1,'ncine::Viewport'],['../classncine_1_1_viewport.html#a39c1bf57f1267d5a47f751755460c36c',1,'ncine::Viewport::Viewport(const Viewport &)=delete'],['../classncine_1_1_viewport.html#a0c6e0239627fa5d3234557aae80c51e5',1,'ncine::Viewport::Viewport(const char *name, Texture *texture)'],['../classncine_1_1_viewport.html#a559d2b9573909cd1a8783d4a580445bb',1,'ncine::Viewport::Viewport(Texture *texture)'],['../classncine_1_1_viewport.html#aa9d28a109f6561bff94a6c49dd366434',1,'ncine::Viewport::Viewport()'],['../classncine_1_1_viewport.html#ab00ebe72f12f0f3cbe1a22ba4d8e47ce',1,'ncine::Viewport::Viewport(Texture *texture, DepthStencilFormat depthStencilFormat)'],['../classncine_1_1_viewport.html#a3e0a93af012edb0dcc254545e2891aa1',1,'ncine::Viewport::Viewport(const char *name, Texture *texture, DepthStencilFormat depthStencilFormat)']]], + ['viewportrect_1324',['viewportRect',['../classncine_1_1_viewport.html#a876418478cdbaf8b8c60c01dfe4f356f',1,'ncine::Viewport']]], + ['viewvalues_1325',['ViewValues',['../structncine_1_1_camera_1_1_view_values.html',1,'ncine::Camera']]], + ['viewvalues_1326',['viewValues',['../classncine_1_1_camera.html#a8ff1f3bf22e0e6f89d7c07fbe66dca3f',1,'ncine::Camera']]], + ['visit_1327',['visit',['../classncine_1_1_scene_node.html#a4d86a8165b2642cb3312c7e313e1a48c',1,'ncine::SceneNode']]], + ['visitorderindex_1328',['visitOrderIndex',['../classncine_1_1_scene_node.html#acb3ca42e38b5dd80cb5a2c54684bd497',1,'ncine::SceneNode']]], + ['visitorderindex_5f_1329',['visitOrderIndex_',['../classncine_1_1_scene_node.html#a9d480e671115a86b75fd5ec50ec81ee8',1,'ncine::SceneNode']]], + ['visitorderstate_1330',['visitOrderState',['../classncine_1_1_scene_node.html#a26cb4cc42126716b67179b4025f861b4',1,'ncine::SceneNode']]], + ['visitorderstate_5f_1331',['visitOrderState_',['../classncine_1_1_scene_node.html#a6697cae84029ac5cd4a9643493903b88',1,'ncine::SceneNode']]], + ['vocalmorpherproperties_1332',['VocalMorpherProperties',['../structncine_1_1_audio_effect_properties_1_1_vocal_morpher_properties.html',1,'ncine::AudioEffectProperties']]], + ['vocalmorpherproperties_1333',['vocalMorpherProperties',['../classncine_1_1_audio_effect_properties.html#ae7cbb652b1e1629c33485737b53bf5df',1,'ncine::AudioEffectProperties::vocalMorpherProperties() const'],['../classncine_1_1_audio_effect_properties.html#a0199c06925017ba58570b9d994b2b0cf',1,'ncine::AudioEffectProperties::vocalMorpherProperties()']]], + ['voidtype_1334',['voidType',['../structnctl_1_1detail_1_1void_type.html',1,'nctl::detail']]] +]; diff --git a/master/search/all_16.html b/master/search/all_16.html new file mode 100644 index 0000000000..b19867ad9b --- /dev/null +++ b/master/search/all_16.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/all_16.js b/master/search/all_16.js new file mode 100644 index 0000000000..0605775833 --- /dev/null +++ b/master/search/all_16.js @@ -0,0 +1,33 @@ +var searchData= +[ + ['w_1335',['w',['../classncine_1_1_rect.html#ab62b88957dd3df5f0ef8e9a4a37e09c2',1,'ncine::Rect']]], + ['waxis_1336',['WAxis',['../classncine_1_1_vector4.html#ae7c5bcd20c90734e5bc6556ab6b7f279',1,'ncine::Vector4']]], + ['webpproperties_1337',['WebPProperties',['../structncine_1_1_texture_saver_web_p_1_1_web_p_properties.html',1,'ncine::TextureSaverWebP']]], + ['width_1338',['width',['../classncine_1_1_application.html#aebd772b4f50f75a50dcb6906a72d48b5',1,'ncine::Application::width()'],['../classncine_1_1_drawable_node.html#a691c2651ec965846dd2a3bc7d0153412',1,'ncine::DrawableNode::width()'],['../classncine_1_1_i_gfx_device.html#a9462311420514039915f4e827be105b0',1,'ncine::IGfxDevice::width()'],['../classncine_1_1_text_node.html#a5efdc820ce6a01d89cd77c5875e9ae71',1,'ncine::TextNode::width()'],['../classncine_1_1_texture.html#a3d914ec3917a88b92c3762beb6fc4e2b',1,'ncine::Texture::width()'],['../classncine_1_1_viewport.html#a67de3253442accd74a27c23635b96221',1,'ncine::Viewport::width()']]], + ['width_5f_1339',['width_',['../classncine_1_1_drawable_node.html#a96b0806b276c54946a8772b60780e4df',1,'ncine::DrawableNode::width_()'],['../classncine_1_1_i_gfx_device.html#a5fdba72b1fee0409d03cb5966300ca60',1,'ncine::IGfxDevice::width_()']]], + ['widthint_1340',['widthInt',['../classncine_1_1_application.html#adc6fc2bcc5b27bd2d4034f037b31dfff',1,'ncine::Application']]], + ['windowiconfilename_1341',['windowIconFilename',['../classncine_1_1_app_configuration.html#aa011fc81b111e2e0ba6e63205d29ca95',1,'ncine::AppConfiguration']]], + ['windowmode_1342',['WindowMode',['../structncine_1_1_i_gfx_device_1_1_window_mode.html',1,'ncine::IGfxDevice']]], + ['windowmonitorindex_1343',['windowMonitorIndex',['../classncine_1_1_i_gfx_device.html#a34217ec5fedf2e315cbe9515beabd13a',1,'ncine::IGfxDevice']]], + ['windowposition_1344',['windowPosition',['../classncine_1_1_app_configuration.html#a866c04d398c78f4002712ec41e6e3f4b',1,'ncine::AppConfiguration::windowPosition()'],['../classncine_1_1_i_gfx_device.html#a7ba520232eead92a3bd53c68e7b661c5',1,'ncine::IGfxDevice::windowPosition() const']]], + ['windowpositionx_1345',['windowPositionX',['../classncine_1_1_i_gfx_device.html#af5140c3961a36d8b3b1d7f3ba4b1e598',1,'ncine::IGfxDevice']]], + ['windowpositiony_1346',['windowPositionY',['../classncine_1_1_i_gfx_device.html#a9c63c424d4b39d8304f21125dde7b4d5',1,'ncine::IGfxDevice']]], + ['windowscaling_1347',['windowScaling',['../classncine_1_1_app_configuration.html#aa315ef2fd051718fdc626e1ecb4175ac',1,'ncine::AppConfiguration']]], + ['windowscalingfactor_1348',['windowScalingFactor',['../classncine_1_1_i_gfx_device.html#a19c52e522b44e80819faaffbe73843f0',1,'ncine::IGfxDevice']]], + ['windowtitle_1349',['windowTitle',['../classncine_1_1_app_configuration.html#aa5bd1eee8738ae8bd500ce37e818fc5a',1,'ncine::AppConfiguration']]], + ['with_5ftexture_1350',['WITH_TEXTURE',['../classncine_1_1_viewport.html#a12c083906885f6c2d1528f47a316f31eae0b0d982b7a660365c2e5a18d34b1556',1,'ncine::Viewport']]], + ['withaudio_1351',['withAudio',['../classncine_1_1_app_configuration.html#ac714fc84d81825618c4563c23df20aad',1,'ncine::AppConfiguration']]], + ['withconsolecolors_1352',['withConsoleColors',['../classncine_1_1_app_configuration.html#aa5bc40ade2a26eae28ade2d618bd5dea',1,'ncine::AppConfiguration']]], + ['withdebugoverlay_1353',['withDebugOverlay',['../classncine_1_1_app_configuration.html#ad39881685310b03a86bd31d7b106f7a9',1,'ncine::AppConfiguration']]], + ['withgldebugcontext_1354',['withGlDebugContext',['../classncine_1_1_app_configuration.html#a593009b3cdb7aa46d40835da55506dfe',1,'ncine::AppConfiguration']]], + ['withkerning_1355',['withKerning',['../classncine_1_1_text_node.html#a48fe2e4c0338fbdf4e06ca264bb43869',1,'ncine::TextNode']]], + ['withscenegraph_1356',['withScenegraph',['../classncine_1_1_app_configuration.html#ac6038feeb10b63e151078fd9083607ed',1,'ncine::AppConfiguration']]], + ['withthreads_1357',['withThreads',['../classncine_1_1_app_configuration.html#a3c5b9b0c0c81a05ba0a54db00a616ea6',1,'ncine::AppConfiguration']]], + ['withvisitorder_5f_1358',['withVisitOrder_',['../classncine_1_1_scene_node.html#ae70d692f95f6851c2f2f0271e253e71e',1,'ncine::SceneNode']]], + ['withvsync_1359',['withVSync',['../classncine_1_1_app_configuration.html#a83615e6d170c8b4c6f40578cd6f25532',1,'ncine::AppConfiguration']]], + ['worldmatrix_1360',['worldMatrix',['../classncine_1_1_scene_node.html#a5985d5073a48edd22d2018a680b33d0a',1,'ncine::SceneNode']]], + ['worldmatrix_5f_1361',['worldMatrix_',['../classncine_1_1_scene_node.html#afe2c6faf5ee5a454f2446032268dd0e0',1,'ncine::SceneNode']]], + ['wrap_1362',['wrap',['../classncine_1_1_texture.html#a610bd9b538ea6dec1834db02d1de7faf',1,'ncine::Texture']]], + ['wrap_1363',['Wrap',['../classncine_1_1_texture.html#ad0bf273c6a5c406fe08b698b2ba75e74',1,'ncine::Texture']]], + ['write_1364',['write',['../classncine_1_1_asset_file.html#a9ee967cbad190a7ce895438c023c18bc',1,'ncine::AssetFile::write()'],['../classncine_1_1_emscripten_local_file.html#a7f239a8250b434169cd9756859133c80',1,'ncine::EmscriptenLocalFile::write()'],['../classncine_1_1_i_file.html#a37a5d4dc0889fcf165acf25ba611e19a',1,'ncine::IFile::write()'],['../classncine_1_1_i_logger.html#a0b54183a87800b29e4c750ab9d836a92',1,'ncine::ILogger::write()'],['../classncine_1_1_null_logger.html#a9b32bcd00eb16314782aba43c47fa1c3',1,'ncine::NullLogger::write()']]] +]; diff --git a/master/search/all_17.html b/master/search/all_17.html new file mode 100644 index 0000000000..1ad5d34b4d --- /dev/null +++ b/master/search/all_17.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/all_17.js b/master/search/all_17.js new file mode 100644 index 0000000000..5af356fe05 --- /dev/null +++ b/master/search/all_17.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['x_1365',['x',['../classncine_1_1_mouse_state.html#a6f74bfeb01bcb74a6216cbb26ee22112',1,'ncine::MouseState::x()'],['../classncine_1_1_mouse_event.html#ae77c4e19f87e9d4554d18ff7a9843fee',1,'ncine::MouseEvent::x()'],['../classncine_1_1_scroll_event.html#a1c64f92c916474c734aed548be07d0a6',1,'ncine::ScrollEvent::x()'],['../classncine_1_1_rect.html#ab61a999279575d8932154b4f07279968',1,'ncine::Rect::x()']]], + ['xaxis_1366',['XAxis',['../classncine_1_1_vector2.html#a98b3261c8e917a7bf893f4c6121e2355',1,'ncine::Vector2::XAxis()'],['../classncine_1_1_vector3.html#a8a1a481bca77243451b36ac64943a9e7',1,'ncine::Vector3::XAxis()'],['../classncine_1_1_vector4.html#aca554dee9b9d1a950e1923680038c0a4',1,'ncine::Vector4::XAxis()']]] +]; diff --git a/master/search/all_18.html b/master/search/all_18.html new file mode 100644 index 0000000000..507d0f8568 --- /dev/null +++ b/master/search/all_18.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/all_18.js b/master/search/all_18.js new file mode 100644 index 0000000000..aeb3f39be2 --- /dev/null +++ b/master/search/all_18.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['y_1367',['y',['../classncine_1_1_mouse_state.html#a25f29eac7025995a6ed6731ba4fcd983',1,'ncine::MouseState::y()'],['../classncine_1_1_mouse_event.html#a8d18be71f74ba229a9513319e9730f68',1,'ncine::MouseEvent::y()'],['../classncine_1_1_scroll_event.html#ac109a954defbaf55b4def0037ecc6130',1,'ncine::ScrollEvent::y()'],['../classncine_1_1_rect.html#a8e80ffd7a415ae1f0ee6046b4501b959',1,'ncine::Rect::y()']]], + ['yaxis_1368',['YAxis',['../classncine_1_1_vector2.html#ac08ca9c0dfe8fd6cae4d14e73be233ea',1,'ncine::Vector2::YAxis()'],['../classncine_1_1_vector3.html#a6d6d3983d2a99199f86b3d2c77b67f8d',1,'ncine::Vector3::YAxis()'],['../classncine_1_1_vector4.html#a924435e0339d7039a06c153d79049e36',1,'ncine::Vector4::YAxis()']]] +]; diff --git a/master/search/all_19.html b/master/search/all_19.html new file mode 100644 index 0000000000..e69289e9b6 --- /dev/null +++ b/master/search/all_19.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/all_19.js b/master/search/all_19.js new file mode 100644 index 0000000000..563b90e112 --- /dev/null +++ b/master/search/all_19.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['zaxis_1369',['ZAxis',['../classncine_1_1_vector3.html#a59051f5b6caf8e4b7975e77aeb5336cf',1,'ncine::Vector3::ZAxis()'],['../classncine_1_1_vector4.html#af68953f31d9c8e2e686759bb1739c424',1,'ncine::Vector4::ZAxis()']]], + ['zero_1370',['Zero',['../classncine_1_1_matrix4x4.html#a3bcaa8009e42306b46bdbdd0b0c6b496',1,'ncine::Matrix4x4::Zero()'],['../classncine_1_1_quaternion.html#a00bfd663dfb10e25abc81f6b1400fdf9',1,'ncine::Quaternion::Zero()'],['../classncine_1_1_vector2.html#a3792a09be76ec6c649ecfed8e1b73725',1,'ncine::Vector2::Zero()'],['../classncine_1_1_vector3.html#a2dc1a2ee5b45e206f96631295e7ddb9d',1,'ncine::Vector3::Zero()'],['../classncine_1_1_vector4.html#a31683327f964fe45b9c4d3cf8b4663d6',1,'ncine::Vector4::Zero()']]] +]; diff --git a/master/search/all_1a.html b/master/search/all_1a.html new file mode 100644 index 0000000000..e50f29b1cd --- /dev/null +++ b/master/search/all_1a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/all_1a.js b/master/search/all_1a.js new file mode 100644 index 0000000000..88a0e2bd2a --- /dev/null +++ b/master/search/all_1a.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['_7eiappeventhandler_1371',['~IAppEventHandler',['../classncine_1_1_i_app_event_handler.html#a60bdbc73fa5bd1f1c4812da8cea06fbf',1,'ncine::IAppEventHandler']]], + ['_7eiframetimer_1372',['~IFrameTimer',['../classncine_1_1_i_frame_timer.html#ac4978b3e9e1014529a9410677aad013d',1,'ncine::IFrameTimer']]], + ['_7eobject_1373',['~Object',['../classncine_1_1_object.html#aa4864ad75f0e8ae399ab57826705ca99',1,'ncine::Object']]], + ['_7escenenode_1374',['~SceneNode',['../classncine_1_1_scene_node.html#a28a7ff4e2c219be33ec4ca9509e65265',1,'ncine::SceneNode']]] +]; diff --git a/master/search/all_2.html b/master/search/all_2.html new file mode 100644 index 0000000000..02cfffc2e1 --- /dev/null +++ b/master/search/all_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/all_2.js b/master/search/all_2.js new file mode 100644 index 0000000000..19030fea05 --- /dev/null +++ b/master/search/all_2.js @@ -0,0 +1,82 @@ +var searchData= +[ + ['cachepath_154',['cachePath',['../classncine_1_1_file_system.html#aca21eb1bcfe940f5ef8ed3636401dbfa',1,'ncine::FileSystem']]], + ['calculateboundaries_155',['calculateBoundaries',['../classncine_1_1_text_node.html#a40b79e79d50436a9fbdc52ffde5d4220',1,'ncine::TextNode']]], + ['camera_156',['Camera',['../classncine_1_1_camera.html#a0f5011e6953b1f02edd23d049d333f23',1,'ncine::Camera']]], + ['camera_157',['camera',['../classncine_1_1_viewport.html#a566f8a17b46e3968b27cf01f5a16386e',1,'ncine::Viewport::camera()'],['../classncine_1_1_viewport.html#a55c832f6ddfb6aabf748db3238ea6b9e',1,'ncine::Viewport::camera() const']]], + ['camera_158',['Camera',['../classncine_1_1_camera.html',1,'ncine']]], + ['camera_5f_159',['camera_',['../classncine_1_1_viewport.html#ab0c547e180c3f449236b6e3545b2fe0a',1,'ncine::Viewport']]], + ['capacity_160',['capacity',['../classnctl_1_1_sparse_set.html#a7371f6647e315d6bfbe4ebcaa7b01a26',1,'nctl::SparseSet::capacity()'],['../classnctl_1_1_array.html#af7512859ae9df0eec3def66ad7964354',1,'nctl::Array::capacity()'],['../classnctl_1_1_hash_map.html#a8a82098219e8c5b0a4556567cf8263dd',1,'nctl::HashMap::capacity()'],['../classnctl_1_1_hash_set.html#aebe3cd0dcfb48b0621f8b25468fe86b3',1,'nctl::HashSet::capacity()'],['../classnctl_1_1_static_array.html#a4562bdc99a25e15cf732d18570af2a9e',1,'nctl::StaticArray::capacity()'],['../classnctl_1_1_static_hash_map.html#ab46c69527897c68cfc9fef3cd7562d8e',1,'nctl::StaticHashMap::capacity()'],['../classnctl_1_1_static_hash_set.html#af69b8e3fde43274516e9f02fd828d908',1,'nctl::StaticHashSet::capacity()'],['../classnctl_1_1_static_string.html#a69711ee24c3bb245763fed238ece5dae',1,'nctl::StaticString::capacity()'],['../classnctl_1_1_string.html#a12fd4df52da92fb7e79e6b21096d45ca',1,'nctl::String::capacity()']]], + ['cbegin_161',['cBegin',['../classnctl_1_1_hash_map_list.html#a457be0a53616b328176ec594f6b3945f',1,'nctl::HashMapList::cBegin()'],['../classnctl_1_1_array.html#a66244b6b5bf56bdb40aa55dd64647b0f',1,'nctl::Array::cBegin()'],['../classnctl_1_1_hash_map.html#aad6e9d45e5fb1765abee0a6e60fbb532',1,'nctl::HashMap::cBegin()'],['../classnctl_1_1_hash_set.html#a0b7db897019b0d292ab69cc65deffbdb',1,'nctl::HashSet::cBegin()'],['../classnctl_1_1_hash_set_list.html#a3baaeaf26d2b5bdc7a6082e58fc1b6a9',1,'nctl::HashSetList::cBegin()'],['../classnctl_1_1_list.html#a45327e034c5329bd8cc7e81692ed38d6',1,'nctl::List::cBegin()'],['../classnctl_1_1_sparse_set.html#a200d87c1fdbcaefc8eec39e11855c8ee',1,'nctl::SparseSet::cBegin()'],['../classnctl_1_1_static_array.html#ab447c866222ea600d08e5e3f28715d92',1,'nctl::StaticArray::cBegin()'],['../classnctl_1_1_static_hash_map.html#a1e7232f426ca2739d68074031965ba15',1,'nctl::StaticHashMap::cBegin()'],['../classnctl_1_1_static_hash_set.html#a1e697857850a2a72116359121dfb2941',1,'nctl::StaticHashSet::cBegin()'],['../classnctl_1_1_static_string.html#ab7f2dc962454452beaf61fa24b4d5185',1,'nctl::StaticString::cBegin()'],['../classnctl_1_1_string.html#a64fb899360dde76cb0ecc3bf4ceb888b',1,'nctl::String::cBegin()']]], + ['cend_162',['cEnd',['../classnctl_1_1_array.html#a7f6fd046548bafa9c61ec83cf0b04801',1,'nctl::Array::cEnd()'],['../classnctl_1_1_hash_map.html#a94dc782a4c6a0624a8f4f4c73169f58f',1,'nctl::HashMap::cEnd()'],['../classnctl_1_1_hash_map_list.html#a840a98630c761cce565124ce7175a5b8',1,'nctl::HashMapList::cEnd()'],['../classnctl_1_1_hash_set.html#a3f156cb2d815498a8e1b4bbd1c869f8b',1,'nctl::HashSet::cEnd()'],['../classnctl_1_1_hash_set_list.html#a9304e5aa1eb3fa9000688f7ba1e13c4d',1,'nctl::HashSetList::cEnd()'],['../classnctl_1_1_list.html#a0a58933822084dee6b919769d06b7f13',1,'nctl::List::cEnd()'],['../classnctl_1_1_sparse_set.html#ae5c7a0f093e961928f9c2979bdb12e8e',1,'nctl::SparseSet::cEnd()'],['../classnctl_1_1_static_array.html#a935d594ef36c6a8183165165fa644ad3',1,'nctl::StaticArray::cEnd()'],['../classnctl_1_1_static_hash_map.html#af5215936f74c2e937ce0d9bc52976c51',1,'nctl::StaticHashMap::cEnd()'],['../classnctl_1_1_static_hash_set.html#a156762b71914fc35988989f0bf2b5a22',1,'nctl::StaticHashSet::cEnd()'],['../classnctl_1_1_static_string.html#a806027bb3c511f253c4412f64fdab524',1,'nctl::StaticString::cEnd()'],['../classnctl_1_1_string.html#a576cb8ce91047bb8fbc6af6cfae6792e',1,'nctl::String::cEnd()']]], + ['center_163',['center',['../classncine_1_1_rect.html#a66c20f70809f162551f07716a394f741',1,'ncine::Rect']]], + ['chain_164',['chain',['../classncine_1_1_viewport.html#a53eddd8331cffa7a52202f580524ac4d',1,'ncine::Viewport']]], + ['chain_5f_165',['chain_',['../classncine_1_1_viewport.html#a65b57a706fb905405a17d88b3139785e',1,'ncine::Viewport']]], + ['changepermissions_166',['changePermissions',['../classncine_1_1_file_system.html#ab7941767499c7f8387cca2363bdf8ac0',1,'ncine::FileSystem']]], + ['childorderindex_167',['childOrderIndex',['../classncine_1_1_scene_node.html#a4a6d5939d5d212d55c9fd662e809b1ad',1,'ncine::SceneNode']]], + ['childorderindex_5f_168',['childOrderIndex_',['../classncine_1_1_scene_node.html#a2ba951717434f76544e3e34ac1333bbf',1,'ncine::SceneNode']]], + ['children_169',['children',['../classncine_1_1_scene_node.html#a61e79f956e8cbfc9fe5d6bd9228f8cd3',1,'ncine::SceneNode::children()'],['../classncine_1_1_scene_node.html#abf6c5b50a144de3e6d42b0e89ac5f895',1,'ncine::SceneNode::children() const']]], + ['children_5f_170',['children_',['../classncine_1_1_scene_node.html#ac3f30b0abf46419ec534c525c72b6317',1,'ncine::SceneNode']]], + ['chorusproperties_171',['chorusProperties',['../classncine_1_1_audio_effect_properties.html#a42cb55962ccc92d7d79bbb399d9ac03e',1,'ncine::AudioEffectProperties::chorusProperties() const'],['../classncine_1_1_audio_effect_properties.html#a9141ce2b425d5eeb69cb42161c051a74',1,'ncine::AudioEffectProperties::chorusProperties()']]], + ['chorusproperties_172',['ChorusProperties',['../structncine_1_1_audio_effect_properties_1_1_chorus_properties.html',1,'ncine::AudioEffectProperties']]], + ['chromakeycolor_173',['chromaKeyColor',['../classncine_1_1_texture.html#a1261152a1f1e418a8ddfed9c4c3292d0',1,'ncine::Texture']]], + ['clamp_174',['clamp',['../classncine_1_1_color_hdr.html#a6c7d17936702760acaabaac9a256a2ae',1,'ncine::ColorHdr']]], + ['clamped_175',['clamped',['../classncine_1_1_color_hdr.html#a8b2bb8d84edd604c39490dc5d154e22a',1,'ncine::ColorHdr']]], + ['clear_176',['clear',['../classnctl_1_1_static_hash_set.html#a2f1c88a0f633f53bafe7c63237d58273',1,'nctl::StaticHashSet::clear()'],['../classnctl_1_1_static_hash_map.html#ae2ec716e39f76b44e86e98155cd85f8d',1,'nctl::StaticHashMap::clear()'],['../classnctl_1_1_static_array.html#a6e15600bc8a2e596705e4c7e6679bca5',1,'nctl::StaticArray::clear()'],['../classnctl_1_1_sparse_set.html#ae8b5c32f3c99988b1f0344f468ad75e5',1,'nctl::SparseSet::clear()'],['../classnctl_1_1_list.html#a9eaa8ab9f8deb8dd387037873442d3e2',1,'nctl::List::clear()'],['../classnctl_1_1_linear_allocator.html#a8ede58c0141dca132a2a08a9a01ad0cd',1,'nctl::LinearAllocator::clear()'],['../classnctl_1_1_hash_set_list.html#a9b25fc8733d921f88ef3a59a9ae7d5ad',1,'nctl::HashSetList::clear()'],['../classnctl_1_1_hash_set.html#a8a560cd63982568a7ca838af39a56b09',1,'nctl::HashSet::clear()'],['../classnctl_1_1_hash_map_list.html#aaee2d51c5e4f46a68552f1af90753277',1,'nctl::HashMapList::clear()'],['../classnctl_1_1_hash_map.html#aee03e9013a04ae778fd3df5b294b414d',1,'nctl::HashMap::clear()'],['../classnctl_1_1_array.html#a3c641ad5de8312afe24b65c03c36b3fc',1,'nctl::Array::clear()'],['../classnctl_1_1_static_string.html#a9482af5199f343e25351fe4105c19ffb',1,'nctl::StaticString::clear()'],['../classnctl_1_1_string.html#a73daa1675a39cb9107ecfe57e6446bbb',1,'nctl::String::clear()']]], + ['clearaffectors_177',['clearAffectors',['../classncine_1_1_particle_system.html#ae2a5212725ea5c9118f5ee92b386b3bf',1,'ncine::ParticleSystem']]], + ['clearanimations_178',['clearAnimations',['../classncine_1_1_animated_sprite.html#ac34d1903556cd0fcc7a3e2b88c8589c0',1,'ncine::AnimatedSprite']]], + ['clearcolor_179',['clearColor',['../classncine_1_1_viewport.html#a906737ef31e74f3156d1b883218b236b',1,'ncine::Viewport']]], + ['clearlogstring_180',['clearLogString',['../classncine_1_1_i_logger.html#a2a757e37336dc411b4a5b43bd2166e6c',1,'ncine::ILogger::clearLogString()'],['../classncine_1_1_null_logger.html#adf36744b9216c71f6279a52761e1a456',1,'ncine::NullLogger::clearLogString()']]], + ['clearmode_181',['clearMode',['../classncine_1_1_viewport.html#a56ec817c2dd28358b7dfc8cc4a8d2043',1,'ncine::Viewport']]], + ['clearmode_182',['ClearMode',['../classncine_1_1_viewport.html#af65ae2e288ca0cbad4d09a1b740622a6',1,'ncine::Viewport']]], + ['clearstatistics_183',['clearStatistics',['../classncine_1_1_hash64.html#a75694cd3a4a4491547bc0fcccb63729a',1,'ncine::Hash64']]], + ['clearsteps_184',['clearSteps',['../classncine_1_1_particle_affector.html#a9ec6fd7ef66b0f09035b6c6581b91d2b',1,'ncine::ParticleAffector::clearSteps()'],['../classncine_1_1_color_affector.html#a639fc03b6ab89e11b1a6278b5d80a4dd',1,'ncine::ColorAffector::clearSteps()'],['../classncine_1_1_size_affector.html#ae963e196603692f211dc8ec69e60817a',1,'ncine::SizeAffector::clearSteps()'],['../classncine_1_1_rotation_affector.html#abc56e011fd76326ba5dd0f63256feabe',1,'ncine::RotationAffector::clearSteps()'],['../classncine_1_1_position_affector.html#aa66ad2f8bdffa0dc5c477b8c82767e49',1,'ncine::PositionAffector::clearSteps()'],['../classncine_1_1_velocity_affector.html#ab984568abc6c99e8ae6fec3432b3862d',1,'ncine::VelocityAffector::clearSteps()']]], + ['clone_185',['clone',['../classncine_1_1_animated_sprite.html#aa1cd4b69b28f1c4c7f2ca6807fa3cd30',1,'ncine::AnimatedSprite::clone()'],['../classncine_1_1_mesh_sprite.html#a3274bbcdd311f0f2c0d22994fb0b6be1',1,'ncine::MeshSprite::clone()'],['../classncine_1_1_particle.html#a1f7da18403558b067ae3d924fa22cf54',1,'ncine::Particle::clone()'],['../classncine_1_1_color_affector.html#af6ac6cc5daf94f15e2daaf7be6841eae',1,'ncine::ColorAffector::clone()'],['../classncine_1_1_size_affector.html#ae5ab44dd1c620f88683a2127918aa42d',1,'ncine::SizeAffector::clone()'],['../classncine_1_1_rotation_affector.html#ad72fa64c50529741711571dc94bec7a9',1,'ncine::RotationAffector::clone()'],['../classncine_1_1_position_affector.html#abe9ea32d4428a263069ff8686e2d9b29',1,'ncine::PositionAffector::clone()'],['../classncine_1_1_velocity_affector.html#a430c87bb074e949d94bef0e71de5134b',1,'ncine::VelocityAffector::clone()'],['../classncine_1_1_particle_system.html#ac334bfedca04447aa9a7249687b50cf0',1,'ncine::ParticleSystem::clone()'],['../classncine_1_1_scene_node.html#a4d90626df516b15601f2cb55a0ac2f4d',1,'ncine::SceneNode::clone()'],['../classncine_1_1_sprite.html#aa2fd79369d3e4a2e5a38bcebb17df519',1,'ncine::Sprite::clone()'],['../classncine_1_1_text_node.html#ae84cb8e240de45dee84171a4e24f6abe',1,'ncine::TextNode::clone()']]], + ['close_186',['close',['../classncine_1_1_asset_file.html#ab38b6cc43696b0664170c04831563d83',1,'ncine::AssetFile::close()'],['../classncine_1_1_file_system_1_1_directory.html#add3d8c9975b11392717b6b43b0e56539',1,'ncine::FileSystem::Directory::close()'],['../classncine_1_1_i_file.html#a12ba96536aba93ca645d57dd42b79692',1,'ncine::IFile::close()']]], + ['color_187',['color',['../classncine_1_1_scene_node.html#a78e761495223506338a5cf554e31c3d1',1,'ncine::SceneNode']]], + ['color_188',['Color',['../classncine_1_1_color.html#a3d05c1156f2e04dbc9e569d392721ea4',1,'ncine::Color::Color()'],['../classncine_1_1_color.html#a660310876d5d618cd70ab1e53d5b33f2',1,'ncine::Color::Color(unsigned int red, unsigned int green, unsigned int blue)'],['../classncine_1_1_color.html#a3291f2c8b80193d871954674fd34e1aa',1,'ncine::Color::Color(unsigned int red, unsigned int green, unsigned int blue, unsigned int alpha)'],['../classncine_1_1_color.html#aa5dc3acb5953e56680c3237c094e04ef',1,'ncine::Color::Color(unsigned int hex)'],['../classncine_1_1_color.html#a45012102e905607ed60650d357cbbcc8',1,'ncine::Color::Color(const unsigned int channels[NumChannels])'],['../classncine_1_1_color.html#aa3fbe786b6a83fd0c43950555de5e140',1,'ncine::Color::Color(const Colorf &color)'],['../classncine_1_1_color.html',1,'ncine::Color']]], + ['color_5f_189',['color_',['../classncine_1_1_scene_node.html#afd74c6a4d8c920391dcf642a2412fa3a',1,'ncine::SceneNode']]], + ['coloraffector_190',['ColorAffector',['../classncine_1_1_color_affector.html#a7dc7bab1690122f45d799406e71d70dd',1,'ncine::ColorAffector::ColorAffector(const ColorAffector &other)=default'],['../classncine_1_1_color_affector.html#a2213cc991ffe5386071902a389512876',1,'ncine::ColorAffector::ColorAffector(ColorAffector &&)=default'],['../classncine_1_1_color_affector.html',1,'ncine::ColorAffector']]], + ['colorf_191',['Colorf',['../classncine_1_1_colorf.html#a9ba244d25b4fa6b238808656501c6ad4',1,'ncine::Colorf::Colorf(const float channels[NumChannels])'],['../classncine_1_1_colorf.html#a8bd7321f7ea15def33a41ab0059e7e05',1,'ncine::Colorf::Colorf(const ColorHdr &color)'],['../classncine_1_1_colorf.html#a09d0f178508fb77a44e7d4af6a072a66',1,'ncine::Colorf::Colorf(const Color &color)'],['../classncine_1_1_colorf.html#ab7fc911a43f99f2a1814c10c20b23754',1,'ncine::Colorf::Colorf(float red, float green, float blue, float alpha)'],['../classncine_1_1_colorf.html#a47703edba7ac1fa73d83ea46c21aa808',1,'ncine::Colorf::Colorf(float red, float green, float blue)'],['../classncine_1_1_colorf.html#ad7e95ccf7c127e37adf635abd1d60fd9',1,'ncine::Colorf::Colorf()'],['../classncine_1_1_colorf.html',1,'ncine::Colorf']]], + ['colorhdr_192',['ColorHdr',['../classncine_1_1_color_hdr.html#a287b579743f9986890a550d5488de292',1,'ncine::ColorHdr::ColorHdr(const Colorf &color)'],['../classncine_1_1_color_hdr.html#a460d3e3939b2f7350f5e44c9fadb5bfe',1,'ncine::ColorHdr::ColorHdr(float red, float green, float blue)'],['../classncine_1_1_color_hdr.html#aceae0f480d35e7425bbc348173ad58c7',1,'ncine::ColorHdr::ColorHdr()'],['../classncine_1_1_color_hdr.html#a90e38cda69c6d1930373af01d0f38399',1,'ncine::ColorHdr::ColorHdr(const float channels[NumChannels])'],['../classncine_1_1_color_hdr.html',1,'ncine::ColorHdr']]], + ['colorstep_193',['ColorStep',['../structncine_1_1_color_affector_1_1_color_step.html',1,'ncine::ColorAffector']]], + ['compare_194',['compare',['../classnctl_1_1_string.html#a89c9a2a0bcf2272215afca29453e0e99',1,'nctl::String::compare(const char *cString) const'],['../classnctl_1_1_string.html#a06105f0caa749e7993618896d55627eb',1,'nctl::String::compare(const String &other) const'],['../classnctl_1_1_static_string.html#a0b35fcd4daee19ac872d25cfad0f3924',1,'nctl::StaticString::compare(const StaticString &other) const'],['../classnctl_1_1_static_string.html#aa85b886b04e0752bfa4eb8b8a715bd4f',1,'nctl::StaticString::compare(const StaticString< U > &other) const'],['../classnctl_1_1_static_string.html#ac50e4d20f48c304f7dbff887b012c4ea',1,'nctl::StaticString::compare(const char *cString) const']]], + ['compilebatchedshaderstwice_195',['compileBatchedShadersTwice',['../classncine_1_1_app_configuration.html#a8d702c9aa15d43ae1472448275ba349f',1,'ncine::AppConfiguration']]], + ['compressorproperties_196',['compressorProperties',['../classncine_1_1_audio_effect_properties.html#a152b6d227d35553f8ccdfd92e9cb7c8d',1,'ncine::AudioEffectProperties::compressorProperties() const'],['../classncine_1_1_audio_effect_properties.html#a4d89b5a16bde36c65101a14b6ae17678',1,'ncine::AudioEffectProperties::compressorProperties()']]], + ['compressorproperties_197',['CompressorProperties',['../structncine_1_1_audio_effect_properties_1_1_compressor_properties.html',1,'ncine::AudioEffectProperties']]], + ['coneinnerangle_198',['coneInnerAngle',['../classncine_1_1_i_audio_player.html#a664a19147300fd475c521ff120a5a81d',1,'ncine::IAudioPlayer']]], + ['coneinnerangle_5f_199',['coneInnerAngle_',['../classncine_1_1_i_audio_player.html#afca7e0ccc0fa812cd23121732e344237',1,'ncine::IAudioPlayer']]], + ['coneouterangle_200',['coneOuterAngle',['../classncine_1_1_i_audio_player.html#ac8f4de74bb51071018087d35f6c69d05',1,'ncine::IAudioPlayer']]], + ['coneouterangle_5f_201',['coneOuterAngle_',['../classncine_1_1_i_audio_player.html#a5c8e1a47d4ff5e014db627ba5da0123c',1,'ncine::IAudioPlayer']]], + ['coneoutergain_202',['coneOuterGain',['../classncine_1_1_i_audio_player.html#ab1cc64b866a936878c17ed0f235b4edd',1,'ncine::IAudioPlayer']]], + ['coneoutergain_5f_203',['coneOuterGain_',['../classncine_1_1_i_audio_player.html#a751d4963be679bc5f01ed23111643a94',1,'ncine::IAudioPlayer']]], + ['coneoutergainhf_5f_204',['coneOuterGainHF_',['../classncine_1_1_i_audio_player.html#a3b955705c4e5404f825091fdf46c3203',1,'ncine::IAudioPlayer']]], + ['consoleloglevel_205',['consoleLogLevel',['../classncine_1_1_app_configuration.html#a47c1843f4e6cead24be12b15beed05f9',1,'ncine::AppConfiguration']]], + ['constants_5fonly_206',['CONSTANTS_ONLY',['../classncine_1_1_lua_state_manager.html#a827fa27232368ea58cb813a4d8666afba0b20176cc9de7adea90a3c1cbfae0405',1,'ncine::LuaStateManager']]], + ['constiterator_207',['ConstIterator',['../classnctl_1_1_sparse_set.html#a3f9ae2eae2ebea321bba33b555b1192b',1,'nctl::SparseSet::ConstIterator()'],['../classnctl_1_1_list.html#a5380cb7ed37250c5d2abc31347362b0a',1,'nctl::List::ConstIterator()'],['../classnctl_1_1_string.html#a5778c536fa5df460e3f320e0a18d84c4',1,'nctl::String::ConstIterator()'],['../classnctl_1_1_hash_set_list.html#a2f58392974ff371b4adbbf19ccbb32d1',1,'nctl::HashSetList::ConstIterator()'],['../classnctl_1_1_static_array.html#a0b87605da750ae93b604bf46b23c4d5b',1,'nctl::StaticArray::ConstIterator()'],['../classnctl_1_1_static_hash_map.html#a5a98f7f5e45a4d26d9fddd5ee06a0bb4',1,'nctl::StaticHashMap::ConstIterator()'],['../classnctl_1_1_static_hash_set.html#ab8c0efd1d733b4ca89d9c655dbf50f79',1,'nctl::StaticHashSet::ConstIterator()'],['../classnctl_1_1_static_string.html#a652a7e6d58608f6538dcae384b60f106',1,'nctl::StaticString::ConstIterator()'],['../classnctl_1_1_hash_set.html#a347cb1b07cfcadd89b36256e7d13e429',1,'nctl::HashSet::ConstIterator()'],['../classnctl_1_1_hash_map_list.html#a6d7981e22a764fd77e996d313eb361c5',1,'nctl::HashMapList::ConstIterator()'],['../classnctl_1_1_hash_map.html#a0d94db54dd4791d1e44c2222d6e0edd6',1,'nctl::HashMap::ConstIterator()'],['../classnctl_1_1_array.html#a5628e9ea35209c5e5e4b63d043de74e9',1,'nctl::Array::ConstIterator()']]], + ['constreverseiterator_208',['ConstReverseIterator',['../classnctl_1_1_sparse_set.html#a729f33143183e43bb8691d017caf166b',1,'nctl::SparseSet::ConstReverseIterator()'],['../classnctl_1_1_list.html#aa82b724a685584cd6809025fe42acd40',1,'nctl::List::ConstReverseIterator()'],['../classnctl_1_1_string.html#a6f3a057d1e1de491f28968b79f3342a0',1,'nctl::String::ConstReverseIterator()'],['../classnctl_1_1_hash_set_list.html#a1fd87394ff67ea1253144caf95412616',1,'nctl::HashSetList::ConstReverseIterator()'],['../classnctl_1_1_static_array.html#aa5b7325044431924e05a094fe153bf39',1,'nctl::StaticArray::ConstReverseIterator()'],['../classnctl_1_1_static_hash_map.html#a98639995ec6431558605b0fa44639111',1,'nctl::StaticHashMap::ConstReverseIterator()'],['../classnctl_1_1_static_hash_set.html#a21dd6f0ab672687b793e66f28f4feb8c',1,'nctl::StaticHashSet::ConstReverseIterator()'],['../classnctl_1_1_static_string.html#aab874897425aaaa95334484cd42cc557',1,'nctl::StaticString::ConstReverseIterator()'],['../classnctl_1_1_hash_set.html#ad6459c693d6c2ea6260c216dfe25fc5c',1,'nctl::HashSet::ConstReverseIterator()'],['../classnctl_1_1_hash_map_list.html#a5a3caec76f1b6e924816ac74c9052366',1,'nctl::HashMapList::ConstReverseIterator()'],['../classnctl_1_1_hash_map.html#a47d8d49d1dd543d2ab47cb29992b95f8',1,'nctl::HashMap::ConstReverseIterator()'],['../classnctl_1_1_array.html#a0f52e1bcd986740a328e013dfdfc7f81',1,'nctl::Array::ConstReverseIterator()']]], + ['constructhelpers_209',['constructHelpers',['../structnctl_1_1detail_1_1construct_helpers.html',1,'nctl::detail']]], + ['constructhelpers_3c_20true_20_3e_210',['constructHelpers< true >',['../structnctl_1_1detail_1_1construct_helpers_3_01true_01_4.html',1,'nctl::detail']]], + ['containingmonitorindex_211',['containingMonitorIndex',['../classncine_1_1_i_gfx_device.html#a2e8df6be966a6f8b7fc5521f54421938',1,'ncine::IGfxDevice::containingMonitorIndex(const Vector2i &point) const'],['../classncine_1_1_i_gfx_device.html#ac32a429033949eeded046b330078f13a',1,'ncine::IGfxDevice::containingMonitorIndex(const WindowMode &windowMode) const'],['../classncine_1_1_i_gfx_device.html#a695f15cddc7079b56be82806b4d1de54',1,'ncine::IGfxDevice::containingMonitorIndex(int x, int y) const'],['../classncine_1_1_i_gfx_device.html#aa3eeffebf91009e794138e775c0e98b7',1,'ncine::IGfxDevice::containingMonitorIndex(const Recti &rect) const'],['../classncine_1_1_i_gfx_device.html#a19070363d35ad369aecb01e6e40bbd8d',1,'ncine::IGfxDevice::containingMonitorIndex(int x, int y, int width, int height) const']]], + ['contains_212',['contains',['../classnctl_1_1_hash_map_list.html#ae0178db612fbb689320ac104920858ab',1,'nctl::HashMapList::contains()'],['../classnctl_1_1_hash_set.html#acfaae746a14b23aea11ef2f6354ceb69',1,'nctl::HashSet::contains()'],['../classnctl_1_1_static_hash_set.html#afd24e7ca839f62726b170a064838e7cd',1,'nctl::StaticHashSet::contains()'],['../classnctl_1_1_hash_set_list.html#ae363a458e9d90ca332ed965a0540a67d',1,'nctl::HashSetList::contains()'],['../classnctl_1_1_sparse_set.html#a59567f59aca285bf4871330dd5874b31',1,'nctl::SparseSet::contains()'],['../classnctl_1_1_static_hash_map.html#ad28636803ad0a6698973cc4c802564d1',1,'nctl::StaticHashMap::contains()'],['../classnctl_1_1_hash_map.html#a504159821cc30560480e845828ec9c93',1,'nctl::HashMap::contains()'],['../classncine_1_1_rect.html#ac564901abd0ddb8429437e118fe6b60e',1,'ncine::Rect::contains(const Rect< T > &rect) const'],['../classncine_1_1_rect.html#a83f6cd3f687d7cbb5efc3c92c5f2db39',1,'ncine::Rect::contains(const Vector2< T > &p) const'],['../classncine_1_1_rect.html#a987b7c3c64fc310e95c076bddbc9ee65',1,'ncine::Rect::contains(T px, T py) const']]], + ['copy_213',['copy',['../classnctl_1_1_string.html#a12b9f700af195b7e669aed97119764ae',1,'nctl::String::copy()'],['../classnctl_1_1_static_string.html#a3220283d90cb87a1d7c6d7c191744810',1,'nctl::StaticString::copy(char *dest, unsigned int srcChar, unsigned int numChar) const'],['../classnctl_1_1_static_string.html#a2906f4e1fbdb5af12c4096f0fc03b905',1,'nctl::StaticString::copy(char *dest) const'],['../classncine_1_1_file_system.html#af8d53eecf0b21cc03e75d0939eab9a31',1,'ncine::FileSystem::copy()'],['../classnctl_1_1_string.html#a6da1f3f69a640c1085a54f68afeede38',1,'nctl::String::copy()']]], + ['copyhelpers_214',['copyHelpers',['../structnctl_1_1detail_1_1copy_helpers.html',1,'nctl::detail']]], + ['copyhelpers_3c_20true_20_3e_215',['copyHelpers< true >',['../structnctl_1_1detail_1_1copy_helpers_3_01true_01_4.html',1,'nctl::detail']]], + ['copyindices_216',['copyIndices',['../classncine_1_1_mesh_sprite.html#aa800e875dafc96f1f2e88b21913e2515',1,'ncine::MeshSprite::copyIndices(unsigned int numIndices, const unsigned short *indices)'],['../classncine_1_1_mesh_sprite.html#a7687793fcbe0b215141b2c3d515178ea',1,'ncine::MeshSprite::copyIndices(const MeshSprite &meshSprite)']]], + ['copyonreallocation_217',['copyOnReallocation',['../classnctl_1_1_i_allocator.html#ade34eb64bf6d49abfa59bca5c8dec880',1,'nctl::IAllocator']]], + ['copyvertices_218',['copyVertices',['../classncine_1_1_mesh_sprite.html#aa0e6b10104a0fa1a7309c38830b199df',1,'ncine::MeshSprite::copyVertices(unsigned int numVertices, unsigned int bytesPerVertex, const void *vertexData)'],['../classncine_1_1_mesh_sprite.html#aa3d0b486caec7701887f69b7325f6223',1,'ncine::MeshSprite::copyVertices(unsigned int numVertices, const Vertex *vertices)'],['../classncine_1_1_mesh_sprite.html#ad78539ecfb2ef00d47803d59881ee72d',1,'ncine::MeshSprite::copyVertices(unsigned int numVertices, const VertexNoTexture *vertices)'],['../classncine_1_1_mesh_sprite.html#aadc61d0e12c0c2cea003bb6c9f3e02ac',1,'ncine::MeshSprite::copyVertices(const MeshSprite &meshSprite)']]], + ['count_219',['count',['../classnctl_1_1_bit_set.html#a42ab7a360d3eff34a257ff8db4c156c3',1,'nctl::BitSet']]], + ['crbegin_220',['crBegin',['../classnctl_1_1_list.html#a43eea492a742ced2ed2a5003240eb419',1,'nctl::List::crBegin()'],['../classnctl_1_1_string.html#a5f08367ec8a92a4b0dbd6f6a0aeb8106',1,'nctl::String::crBegin()'],['../classnctl_1_1_static_string.html#af28242d1f454e1a6c7900276f0df960d',1,'nctl::StaticString::crBegin()'],['../classnctl_1_1_static_hash_set.html#a8967bb5f5d08e6a53653f0fa419e5429',1,'nctl::StaticHashSet::crBegin()'],['../classnctl_1_1_static_hash_map.html#a0d9b1272ba775a8b088ea058d6605193',1,'nctl::StaticHashMap::crBegin()'],['../classnctl_1_1_static_array.html#a72396053b05691c5959b54dcd24d19cf',1,'nctl::StaticArray::crBegin()'],['../classnctl_1_1_sparse_set.html#a0ecdb6b279f7f6d02cf993576a0409d4',1,'nctl::SparseSet::crBegin()'],['../classnctl_1_1_hash_set_list.html#a5e6a2ba8db5b8a46e17ea96eb248fb5d',1,'nctl::HashSetList::crBegin()'],['../classnctl_1_1_hash_set.html#a4535de14b8296b7782c84fafdcffc9f0',1,'nctl::HashSet::crBegin()'],['../classnctl_1_1_hash_map_list.html#a499e85ccc2e02b932fba6dc99d9310f5',1,'nctl::HashMapList::crBegin()'],['../classnctl_1_1_hash_map.html#ad9c4b082da24368d7db48ea9a15da463',1,'nctl::HashMap::crBegin()'],['../classnctl_1_1_array.html#ab862faadc6efa34fc477d00fa5b133fc',1,'nctl::Array::crBegin()']]], + ['createdir_221',['createDir',['../classncine_1_1_file_system.html#ad8b2ee1449e8772ab49bd509c8ab8310',1,'ncine::FileSystem']]], + ['createfilehandle_222',['createFileHandle',['../classncine_1_1_i_file.html#a7f4d608c5089dd8768282f7a382d28a9',1,'ncine::IFile']]], + ['createfrommemory_223',['createFromMemory',['../classncine_1_1_i_file.html#abedc002c071e996fe46ff791f50ce82b',1,'ncine::IFile::createFromMemory(nctl::UniquePtr< unsigned char[]> buffer, unsigned long int bufferSize)'],['../classncine_1_1_i_file.html#a7819af8c71e35ba3b153a2ab94b4ec92',1,'ncine::IFile::createFromMemory(const char *bufferName, nctl::UniquePtr< unsigned char[]> buffer, unsigned long int bufferSize)'],['../classncine_1_1_i_file.html#aa9897ba0da6041723313b648f78e6596',1,'ncine::IFile::createFromMemory(unsigned long int bufferSize)'],['../classncine_1_1_i_file.html#a0d47e2e49fac6a74ea569f221874bfc2',1,'ncine::IFile::createFromMemory(const char *bufferName, unsigned long int bufferSize)'],['../classncine_1_1_i_file.html#a38f3abc2abe9b54b00633d816fc7f316',1,'ncine::IFile::createFromMemory(unsigned char *bufferPtr, unsigned long int bufferSize)'],['../classncine_1_1_i_file.html#a13636dc34143b75e461657a4ed1ddb47',1,'ncine::IFile::createFromMemory(const char *bufferName, const unsigned char *bufferPtr, unsigned long int bufferSize)'],['../classncine_1_1_i_file.html#a58902a169bb62201f6a9805303d40017',1,'ncine::IFile::createFromMemory(const char *bufferName, unsigned char *bufferPtr, unsigned long int bufferSize)'],['../classncine_1_1_i_file.html#aec76e7c4da4b90cd40a5866132378edb',1,'ncine::IFile::createFromMemory(const unsigned char *bufferPtr, unsigned long int bufferSize)']]], + ['createverticesfromtexels_224',['createVerticesFromTexels',['../classncine_1_1_mesh_sprite.html#aa0b070cf7851c7d5ce094df9f4f4156b',1,'ncine::MeshSprite::createVerticesFromTexels(unsigned int numVertices, const Vector2f *points, TextureCutMode cutMode)'],['../classncine_1_1_mesh_sprite.html#a224db9921f714c895fdb594caa16e8a5',1,'ncine::MeshSprite::createVerticesFromTexels(unsigned int numVertices, const Vector2f *points)']]], + ['crend_225',['crEnd',['../classnctl_1_1_static_array.html#a9e34ab5a27ef5c49b59c4c45dddf32c9',1,'nctl::StaticArray::crEnd()'],['../classnctl_1_1_string.html#a02ff0ec870bbc65e8ef9035ce8a6bc18',1,'nctl::String::crEnd()'],['../classnctl_1_1_static_string.html#a95bbcb361c5a2866e690f1ab803472b6',1,'nctl::StaticString::crEnd()'],['../classnctl_1_1_static_hash_set.html#a487252bce955e201a66c859b6ff1f994',1,'nctl::StaticHashSet::crEnd()'],['../classnctl_1_1_static_hash_map.html#a247177bc2cdc06c450e7818225a46b50',1,'nctl::StaticHashMap::crEnd()'],['../classnctl_1_1_sparse_set.html#a4d3212f54e1177f8fa6f9de71fc87e9d',1,'nctl::SparseSet::crEnd()'],['../classnctl_1_1_list.html#a982e3d62b7c97a165da447000df92017',1,'nctl::List::crEnd()'],['../classnctl_1_1_hash_set_list.html#acc56c77d5a792204ae7c64003c174b09',1,'nctl::HashSetList::crEnd()'],['../classnctl_1_1_hash_set.html#a1f261ffcdfae80f4b3d541913e068e14',1,'nctl::HashSet::crEnd()'],['../classnctl_1_1_hash_map_list.html#a9f2e4ae557671f37b119675feb739c59',1,'nctl::HashMapList::crEnd()'],['../classnctl_1_1_hash_map.html#a1554ff101738f05ef55854883124b6e2',1,'nctl::HashMap::crEnd()'],['../classnctl_1_1_array.html#a18a7e6aae3a194e90803170b43ba3ab5',1,'nctl::Array::crEnd()']]], + ['cullingenabled_226',['cullingEnabled',['../structncine_1_1_application_1_1_rendering_settings.html#a100e0b0c1f4be066723b3a42bc3a41d4',1,'ncine::Application::RenderingSettings']]], + ['cullingrect_227',['cullingRect',['../classncine_1_1_viewport.html#a1359faeb634ff2e9ffb90eb528022e49',1,'ncine::Viewport']]], + ['currentanimation_228',['currentAnimation',['../classncine_1_1_animated_sprite.html#a22ee4e620ac465ee884e459c01407ca3',1,'ncine::AnimatedSprite::currentAnimation()'],['../classncine_1_1_animated_sprite.html#a6e0ae3538e6438c84566e5b4b4be06ad',1,'ncine::AnimatedSprite::currentAnimation() const']]], + ['currentdir_229',['currentDir',['../classncine_1_1_file_system.html#aadf5de3c30b94818d55d94f7827ea0fa',1,'ncine::FileSystem']]], + ['currentframeduration_230',['currentFrameDuration',['../classncine_1_1_i_frame_timer.html#ac1b749f31aeffe631cf7f336fd111acf',1,'ncine::IFrameTimer']]], + ['currentvideomode_231',['currentVideoMode',['../classncine_1_1_i_gfx_device.html#ad0caed385d0408a20062b4b96dc0327d',1,'ncine::IGfxDevice::currentVideoMode(unsigned int monitorIndex) const =0'],['../classncine_1_1_i_gfx_device.html#ae6f16d5a1c5f35b572cfb401e34d7297',1,'ncine::IGfxDevice::currentVideoMode() const']]], + ['currentvideomode_5f_232',['currentVideoMode_',['../classncine_1_1_i_gfx_device.html#a4fca24f27863b9abf8f7c43028f0f7da',1,'ncine::IGfxDevice']]] +]; diff --git a/master/search/all_3.html b/master/search/all_3.html new file mode 100644 index 0000000000..39767b85ba --- /dev/null +++ b/master/search/all_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/all_3.js b/master/search/all_3.js new file mode 100644 index 0000000000..c5bb242d29 --- /dev/null +++ b/master/search/all_3.js @@ -0,0 +1,55 @@ +var searchData= +[ + ['data_233',['data',['../classncine_1_1_color.html#a242ad63710611ea089df3d0c35852bd1',1,'ncine::Color::data()'],['../classnctl_1_1_static_string.html#ab89ad885afa7b1f357044b31f42ca7f3',1,'nctl::StaticString::data() const'],['../classnctl_1_1_static_string.html#a8c6d43547059af48e464b03109c96b52',1,'nctl::StaticString::data()'],['../classnctl_1_1_static_array.html#a7091701f186bdae5fc5c6b6713f5e30b',1,'nctl::StaticArray::data()'],['../classnctl_1_1_static_array.html#afb2ffc363208698fee827e650e5701e8',1,'nctl::StaticArray::data() const'],['../classnctl_1_1_array.html#a4335663313c781034960e1048459e887',1,'nctl::Array::data()'],['../classnctl_1_1_array.html#a8bd9a529c233f9a337c14c3e833077e2',1,'nctl::Array::data() const'],['../classncine_1_1_emscripten_local_file.html#ac626c343a6b8d211d6abaa26ca7dc775',1,'ncine::EmscriptenLocalFile::data()'],['../classncine_1_1_color_hdr.html#a4dccca8db1dff36bc9b05012e5198f34',1,'ncine::ColorHdr::data()'],['../classncine_1_1_color_hdr.html#abed1af8cbb83e2dbf761d4396e2266cf',1,'ncine::ColorHdr::data() const'],['../classncine_1_1_colorf.html#a0d970de08eb6eb3ab996b4032b94aeab',1,'ncine::Colorf::data()'],['../classncine_1_1_colorf.html#a791ecc7a8519dc0beb63b73ec685064c',1,'ncine::Colorf::data() const'],['../classncine_1_1_color.html#aa707809cc7881a4b55a90dfca79ab398',1,'ncine::Color::data()'],['../classnctl_1_1_string.html#a04e0b50713de7e24425fd9de28efaed1',1,'nctl::String::data()'],['../classnctl_1_1_string.html#a977a9ad077abc82b489591697f09912c',1,'nctl::String::data() const']]], + ['data_5f_234',['data_',['../classnctl_1_1_list_node.html#a91ba9113ab52310b1af36aba8d93c58d',1,'nctl::ListNode']]], + ['datapath_235',['dataPath',['../classncine_1_1_app_configuration.html#a77e31c5bc03406391b542d1d724f0f9e',1,'ncine::AppConfiguration::dataPath() const'],['../classncine_1_1_app_configuration.html#ae1aa60999bffbdb839caacc3e9acb0e6',1,'ncine::AppConfiguration::dataPath()'],['../classncine_1_1_file_system.html#a9dc89b7f7172edd33cee0eb5f0737c06',1,'ncine::FileSystem::dataPath()']]], + ['datasize_236',['dataSize',['../classncine_1_1_texture.html#a5fa624bb18c7cefe3cfcb07ed677f256',1,'ncine::Texture']]], + ['deadzonenormalize_237',['deadZoneNormalize',['../classncine_1_1_i_input_manager.html#a8022d3b38f641f5575787dffd493eb5d',1,'ncine::IInputManager']]], + ['deallocate_238',['deallocate',['../classnctl_1_1_i_allocator.html#ae2fdd6abd24fbb98f3cdeb3c30b553d4',1,'nctl::IAllocator']]], + ['debuginfo_239',['DebugInfo',['../structncine_1_1_lua_utils_1_1_run_info_1_1_debug_info.html',1,'ncine::LuaUtils::RunInfo']]], + ['debugoverlaysettings_240',['debugOverlaySettings',['../classncine_1_1_application.html#a3c1717eb16c8155f2335edb7b72e22c3',1,'ncine::Application']]], + ['defaultalignment_241',['DefaultAlignment',['../classnctl_1_1_i_allocator.html#a4a531c1a5f994e58a0b51686b4712aed',1,'nctl::IAllocator']]], + ['defaultdelete_242',['DefaultDelete',['../classnctl_1_1_default_delete.html',1,'nctl']]], + ['defaultdelete_3c_20t_5b_5d_3e_243',['DefaultDelete< T[]>',['../classnctl_1_1_default_delete_3_01_t_0f_0e_4.html',1,'nctl']]], + ['defaultdpi_244',['DefaultDpi',['../classncine_1_1_i_gfx_device.html#adada069ace00e1aefdea81b9d7bc01ba',1,'ncine::IGfxDevice']]], + ['defaultframeduration_245',['defaultFrameDuration',['../classncine_1_1_rect_animation.html#ae08a8ea2cd6c835647096cd4468762b1',1,'ncine::RectAnimation']]], + ['defaultstringlength_246',['DefaultStringLength',['../classncine_1_1_text_node.html#a0c5e20cbb290722577101e4832f8508b',1,'ncine::TextNode']]], + ['defershaderqueries_247',['deferShaderQueries',['../classncine_1_1_app_configuration.html#a0dc6242a487c89d55db7c7be538908eb',1,'ncine::AppConfiguration']]], + ['defrag_248',['defrag',['../classnctl_1_1_free_list_allocator.html#a26a9a4188d1fc3504510cd264c664390',1,'nctl::FreeListAllocator']]], + ['defragondeallocation_249',['defragOnDeallocation',['../classnctl_1_1_free_list_allocator.html#ae355fe35b43f8a22ea2f8f6ffef4bb95',1,'nctl::FreeListAllocator']]], + ['deletechildrenondestruction_250',['deleteChildrenOnDestruction',['../classncine_1_1_scene_node.html#a2fcc43e779a6d7ceb4343579d2be3528',1,'ncine::SceneNode']]], + ['deleteemptydir_251',['deleteEmptyDir',['../classncine_1_1_file_system.html#ae8f0528f59dd0fefa32761313547bfb9',1,'ncine::FileSystem']]], + ['deletefile_252',['deleteFile',['../classncine_1_1_file_system.html#a695211ed151e2e33b13d63c334de5c82',1,'ncine::FileSystem']]], + ['depthbits_253',['depthBits',['../classncine_1_1_display_mode.html#afd0dce7633f3f47874b7c39f36556074',1,'ncine::DisplayMode']]], + ['depthstencilformat_254',['depthStencilFormat',['../classncine_1_1_viewport.html#a60f28a0e7c2457cc2e1b01405103f540',1,'ncine::Viewport']]], + ['depthstencilformat_255',['DepthStencilFormat',['../classncine_1_1_viewport.html#ac00e6160e3bacd3bb9bf4f4746f54f02',1,'ncine::Viewport']]], + ['destblendingfactor_256',['destBlendingFactor',['../classncine_1_1_drawable_node.html#ab508ac1fc68ca5da573fd33578f9eef1',1,'ncine::DrawableNode']]], + ['destructhelpers_257',['destructHelpers',['../structnctl_1_1detail_1_1destruct_helpers.html',1,'nctl::detail']]], + ['destructhelpers_3c_20true_20_3e_258',['destructHelpers< true >',['../structnctl_1_1detail_1_1destruct_helpers_3_01true_01_4.html',1,'nctl::detail']]], + ['directfilterid_5f_259',['directFilterId_',['../classncine_1_1_i_audio_player.html#aea22f078f45a7d65afcaca7e234c403a',1,'ncine::IAudioPlayer']]], + ['direction_260',['direction',['../classncine_1_1_i_audio_player.html#a23d92f15caea1a4274762c69bd3bd073',1,'ncine::IAudioPlayer']]], + ['direction_5f_261',['direction_',['../classncine_1_1_i_audio_player.html#a94ae2465ec0e473e28f6b22de023a21b',1,'ncine::IAudioPlayer']]], + ['directory_262',['Directory',['../classncine_1_1_file_system_1_1_directory.html',1,'ncine::FileSystem']]], + ['dirname_263',['dirName',['../classncine_1_1_file_system.html#adac0ae2886c20b6862132aa9859755f9',1,'ncine::FileSystem']]], + ['dirtybitpositions_264',['DirtyBitPositions',['../classncine_1_1_scene_node.html#a07b9d35c1ca971cdf4b03654493ae533',1,'ncine::SceneNode']]], + ['dirtybits_5f_265',['dirtyBits_',['../classncine_1_1_scene_node.html#a856b29f97a5e912d20127825ea6903fe',1,'ncine::SceneNode']]], + ['disabled_266',['DISABLED',['../classncine_1_1_drawable_node.html#a78af82c1e3387546763cb57dda08b310a055c1a591abb0e8cd86dc969727bcc0b',1,'ncine::DrawableNode::DISABLED()'],['../classncine_1_1_i_input_manager.html#a1249b2dd851ac2b4a59f0cc51047842ba055c1a591abb0e8cd86dc969727bcc0b',1,'ncine::IInputManager::DISABLED()']]], + ['displaymode_267',['displayMode',['../classncine_1_1_i_gfx_device.html#a4d48730c6fa16d88851298b8676aca7d',1,'ncine::IGfxDevice']]], + ['displaymode_268',['DisplayMode',['../classncine_1_1_display_mode.html',1,'ncine']]], + ['displaymode_5f_269',['displayMode_',['../classncine_1_1_i_gfx_device.html#a3e50e3cf378a3d65d81d7ed079c085b1',1,'ncine::IGfxDevice']]], + ['displaysettings_270',['DisplaySettings',['../structncine_1_1_i_debug_overlay_1_1_display_settings.html',1,'ncine::IDebugOverlay']]], + ['distortionproperties_271',['distortionProperties',['../classncine_1_1_audio_effect_properties.html#aa81da140c7e12cd59bda5059773b35b1',1,'ncine::AudioEffectProperties::distortionProperties() const'],['../classncine_1_1_audio_effect_properties.html#a09228c6b370aa6de023ceeb1101edc3a',1,'ncine::AudioEffectProperties::distortionProperties()']]], + ['distortionproperties_272',['DistortionProperties',['../structncine_1_1_audio_effect_properties_1_1_distortion_properties.html',1,'ncine::AudioEffectProperties']]], + ['dpi_273',['dpi',['../structncine_1_1_i_gfx_device_1_1_monitor.html#ac2bdd0bf0b1265dfaa64d2d342cd90f8',1,'ncine::IGfxDevice::Monitor']]], + ['draw_274',['draw',['../classncine_1_1_drawable_node.html#ab8963b4e7de1e4db43dde68aa6e3319a',1,'ncine::DrawableNode::draw()'],['../classncine_1_1_scene_node.html#a5cdccf34ec1175a72b87bb975cf57329',1,'ncine::SceneNode::draw()'],['../classncine_1_1_text_node.html#add7dfbe188a4eda5e1448cacc5466307',1,'ncine::TextNode::draw()']]], + ['drawableaspect_275',['drawableAspect',['../classncine_1_1_i_gfx_device.html#a283641e4dbfadfc10fa6eb0830aba17a',1,'ncine::IGfxDevice']]], + ['drawableheight_276',['drawableHeight',['../classncine_1_1_i_gfx_device.html#a02bf336c798e60a1a96f1e286fbd557e',1,'ncine::IGfxDevice']]], + ['drawableheight_5f_277',['drawableHeight_',['../classncine_1_1_i_gfx_device.html#a0b435ed13d49faaab53b25855948e4cd',1,'ncine::IGfxDevice']]], + ['drawablenode_278',['DrawableNode',['../classncine_1_1_drawable_node.html#a6a1b75361610caa2114177a427318afa',1,'ncine::DrawableNode::DrawableNode(DrawableNode &&)'],['../classncine_1_1_drawable_node.html#abd235887a13d7d398afaad9cbe00f46c',1,'ncine::DrawableNode::DrawableNode(SceneNode *parent)'],['../classncine_1_1_drawable_node.html#ac81b2605b2084590bda453898b008742',1,'ncine::DrawableNode::DrawableNode()'],['../classncine_1_1_drawable_node.html#a75b87c25df312c1bee1d70377229eadd',1,'ncine::DrawableNode::DrawableNode(SceneNode *parent, const Vector2f &position)'],['../classncine_1_1_drawable_node.html#ad039356d7470fc409c8f4af727b64f6d',1,'ncine::DrawableNode::DrawableNode(SceneNode *parent, float xx, float yy)'],['../classncine_1_1_drawable_node.html#aa3833cae1082f59357d0d9e5ea8b478c',1,'ncine::DrawableNode::DrawableNode(const DrawableNode &other)'],['../classncine_1_1_drawable_node.html',1,'ncine::DrawableNode']]], + ['drawableresolution_279',['drawableResolution',['../classncine_1_1_i_gfx_device.html#a8fe498673cf307753ffb783796acf0f2',1,'ncine::IGfxDevice']]], + ['drawablescreenrect_280',['drawableScreenRect',['../classncine_1_1_i_gfx_device.html#a26aa3a003aec47e948167d260ae15132',1,'ncine::IGfxDevice']]], + ['drawablewidth_281',['drawableWidth',['../classncine_1_1_i_gfx_device.html#a373efa797fc322c5860edc63f4a057e5',1,'ncine::IGfxDevice']]], + ['drawablewidth_5f_282',['drawableWidth_',['../classncine_1_1_i_gfx_device.html#acd740f9a59d6234c4be6ca7445c1185a',1,'ncine::IGfxDevice']]], + ['dropevent_283',['DropEvent',['../classncine_1_1_drop_event.html',1,'ncine']]], + ['duration_284',['duration',['../classncine_1_1_audio_buffer.html#a9d90c361a506952575a89e5ee61f8c68',1,'ncine::AudioBuffer::duration()'],['../classncine_1_1_audio_buffer_player.html#a4cc595966c93984ffec8ef61dc95a0f9',1,'ncine::AudioBufferPlayer::duration()'],['../classncine_1_1_audio_stream.html#ab65e7372d936cb010b33063140d36c64',1,'ncine::AudioStream::duration()'],['../classncine_1_1_audio_stream_player.html#a7d9c7f7ce8781bddcf9b91ae647bf8d2',1,'ncine::AudioStreamPlayer::duration()'],['../classncine_1_1_i_audio_player.html#ad51744ae2a16028a9eb14a02da26fd7a',1,'ncine::IAudioPlayer::duration()']]] +]; diff --git a/master/search/all_4.html b/master/search/all_4.html new file mode 100644 index 0000000000..fc40463c89 --- /dev/null +++ b/master/search/all_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/all_4.js b/master/search/all_4.js new file mode 100644 index 0000000000..84445209a6 --- /dev/null +++ b/master/search/all_4.js @@ -0,0 +1,40 @@ +var searchData= +[ + ['eaxreverbproperties_285',['eaxReverbProperties',['../classncine_1_1_audio_effect_properties.html#aeb52c8245643ff217285ae22a3fd1d0f',1,'ncine::AudioEffectProperties::eaxReverbProperties() const'],['../classncine_1_1_audio_effect_properties.html#aeb4af5de6dce2ab97b9554df58c1f86c',1,'ncine::AudioEffectProperties::eaxReverbProperties()']]], + ['eaxreverbproperties_286',['EaxReverbProperties',['../structncine_1_1_audio_effect_properties_1_1_eax_reverb_properties.html',1,'ncine::AudioEffectProperties']]], + ['echoproperties_287',['echoProperties',['../classncine_1_1_audio_effect_properties.html#ad1612ee24146bc326509a9495539acb6',1,'ncine::AudioEffectProperties::echoProperties() const'],['../classncine_1_1_audio_effect_properties.html#a607e3c347eea3ff590099e69e2a846eb',1,'ncine::AudioEffectProperties::echoProperties()']]], + ['echoproperties_288',['EchoProperties',['../structncine_1_1_audio_effect_properties_1_1_echo_properties.html',1,'ncine::AudioEffectProperties']]], + ['edit_5fonly_289',['EDIT_ONLY',['../classncine_1_1_lua_state_manager.html#a827fa27232368ea58cb813a4d8666afbac559262f87d37a6ae88355863216362b',1,'ncine::LuaStateManager']]], + ['effectid_290',['effectId',['../classncine_1_1_audio_effect.html#ab5f45d325ea7f89c997e0ebf9ebcd55c',1,'ncine::AudioEffect']]], + ['effectslotid_291',['effectSlotId',['../classncine_1_1_audio_effect_slot.html#a829b863c4c62261caac2348169c71a96',1,'ncine::AudioEffectSlot']]], + ['effectslotid_5f_292',['effectSlotId_',['../classncine_1_1_i_audio_player.html#a5ef44f932cf68ae09d143335cf21e5f0',1,'ncine::IAudioPlayer']]], + ['emitparticles_293',['emitParticles',['../classncine_1_1_particle_system.html#a583808b6c98e187ea9c959195114f087',1,'ncine::ParticleSystem']]], + ['emplace_294',['emplace',['../classnctl_1_1_array.html#a9f177e3d4ee68e8b2086ef6c8530ffda',1,'nctl::Array::emplace()'],['../classnctl_1_1_hash_map.html#a63475773a33ae23d6e6e971040d483b0',1,'nctl::HashMap::emplace()'],['../classnctl_1_1_hash_map_list.html#a284de8b264fe953d7eafce186b7cbe78',1,'nctl::HashMapList::emplace()'],['../classnctl_1_1_static_array.html#a528880e44e1b8a790fd8c4d54d9033c0',1,'nctl::StaticArray::emplace()'],['../classnctl_1_1_static_hash_map.html#af5e463260d2b4dd28d31ca5c5fab73c2',1,'nctl::StaticHashMap::emplace()']]], + ['emplaceafter_295',['emplaceAfter',['../classnctl_1_1_list.html#ac80bc52aa9d0f1d944cb93f21cf26f6e',1,'nctl::List']]], + ['emplaceat_296',['emplaceAt',['../classnctl_1_1_array.html#ad2f3e0d8da1b7f4937c8c0fd51672988',1,'nctl::Array::emplaceAt()'],['../classnctl_1_1_static_array.html#a883feeb57ae7ef4bb16699fcc57cc321',1,'nctl::StaticArray::emplaceAt()']]], + ['emplaceback_297',['emplaceBack',['../classnctl_1_1_list.html#a5ee84b26055cae76f2b89836ed73ca33',1,'nctl::List::emplaceBack()'],['../classnctl_1_1_static_array.html#a2e451431eb46abd650edee16ebe68f16',1,'nctl::StaticArray::emplaceBack()'],['../classnctl_1_1_array.html#a8a302b958eaeb9a5ac9d354f8c5c1527',1,'nctl::Array::emplaceBack()']]], + ['emplacebefore_298',['emplaceBefore',['../classnctl_1_1_list.html#af8391acd69af48f9dec9ee25f3df5c24',1,'nctl::List']]], + ['emplacefront_299',['emplaceFront',['../classnctl_1_1_list.html#a8ff85f8475485c8f994081593349933e',1,'nctl::List']]], + ['emplaceindices_300',['emplaceIndices',['../classncine_1_1_mesh_sprite.html#aea38d934b6d68eaea80bd617b39f0cd9',1,'ncine::MeshSprite']]], + ['emplacevertices_301',['emplaceVertices',['../classncine_1_1_mesh_sprite.html#aeee19e6584274d6d069e5400fb3c0b52',1,'ncine::MeshSprite::emplaceVertices(unsigned int numElements, unsigned int bytesPerVertex)'],['../classncine_1_1_mesh_sprite.html#a122560f53d33befaa3e2c8a853a4b79f',1,'ncine::MeshSprite::emplaceVertices(unsigned int numElements)']]], + ['emscriptenlocalfile_302',['EmscriptenLocalFile',['../classncine_1_1_emscripten_local_file.html',1,'ncine']]], + ['enableaccelerometer_303',['enableAccelerometer',['../classncine_1_1_android_application.html#a5746ccb36a6dac06b1a9f7a01e742758',1,'ncine::AndroidApplication']]], + ['enabled_5f_304',['enabled_',['../classncine_1_1_particle_affector.html#a8bf657dc91f5da371ad50e5f4c9396ca',1,'ncine::ParticleAffector']]], + ['enablekerning_305',['enableKerning',['../classncine_1_1_text_node.html#aa5cb159d7b0aa2cd335e517776cf34bd',1,'ncine::TextNode']]], + ['end_306',['end',['../classnctl_1_1_static_string.html#a0ffee536b3b72c1fed4c7b2b2966a36d',1,'nctl::StaticString::end()'],['../classnctl_1_1_list.html#a8eaf64522c63b2b8f6ca3db978554a0d',1,'nctl::List::end()'],['../classnctl_1_1_sparse_set.html#a5807c0ad125cfb1c62158473c29fa02b',1,'nctl::SparseSet::end()'],['../classnctl_1_1_list.html#a583b73d4ec9797b43b32d90ba945a4c3',1,'nctl::List::end()'],['../classnctl_1_1_sparse_set.html#a0c4e3017b857d48c66471f16a8afe904',1,'nctl::SparseSet::end()'],['../classnctl_1_1_static_array.html#a181eb2753c2ef22b230796a7e4f1083b',1,'nctl::StaticArray::end()'],['../classnctl_1_1_static_array.html#a618c9c15544ee89459b62476ff72d388',1,'nctl::StaticArray::end() const'],['../classnctl_1_1_hash_set_list.html#a5cdfd4615d0c8004a4401d1e8c8b765a',1,'nctl::HashSetList::end()'],['../classnctl_1_1_static_hash_map.html#a7cdbe04ff31b9844a6fb58e25bec5d4e',1,'nctl::StaticHashMap::end()'],['../classnctl_1_1_static_hash_map.html#a9346235bbe849d803e9bda4b2076f259',1,'nctl::StaticHashMap::end() const'],['../classnctl_1_1_static_hash_set.html#a08b5c225ef17bf02b1d2990a545125be',1,'nctl::StaticHashSet::end()'],['../classnctl_1_1_static_hash_set.html#af8f43767ad404f3801f032b648dfdfb6',1,'nctl::StaticHashSet::end() const'],['../classnctl_1_1_static_string.html#a6c31f4fcfff769985bf485b01ab97f8c',1,'nctl::StaticString::end()'],['../classnctl_1_1_string.html#acf79c8c3a20ae54c52af4e0b1809a04d',1,'nctl::String::end()'],['../classnctl_1_1_array.html#ac27c1537f5f4a0ea73e4221588170c88',1,'nctl::Array::end()'],['../classnctl_1_1_string.html#a7446d7462dc732253ead2dda29a50947',1,'nctl::String::end()']]], + ['end_307',['END',['../classnctl_1_1_static_hash_set_iterator.html#add67548140b2fd7cb3fe7a681cf47a7fab1a326c06d88bf042f73d70f50197905',1,'nctl::StaticHashSetIterator']]], + ['end_308',['end',['../classnctl_1_1_hash_set_list.html#a454fa79e4533c4c1569bbbe902a49b6e',1,'nctl::HashSetList']]], + ['end_309',['END',['../classnctl_1_1_hash_map_iterator.html#a61bf8679917d49a161b6caf7538be365ab1a326c06d88bf042f73d70f50197905',1,'nctl::HashMapIterator::END()'],['../classnctl_1_1_hash_map_list_iterator.html#a3d7ab0e9064294ae36cd1e01357b6cf2ab1a326c06d88bf042f73d70f50197905',1,'nctl::HashMapListIterator::END()'],['../classnctl_1_1_hash_set_iterator.html#a24bf0609bf8822df16c32485aa244f5bab1a326c06d88bf042f73d70f50197905',1,'nctl::HashSetIterator::END()'],['../classnctl_1_1_hash_set_list_iterator.html#ae93df2b99a08dee8b7cb51a54cc89e6aab1a326c06d88bf042f73d70f50197905',1,'nctl::HashSetListIterator::END()'],['../classnctl_1_1_static_hash_map_iterator.html#a41678ddc2ebf298bae98bf90bb180e20ab1a326c06d88bf042f73d70f50197905',1,'nctl::StaticHashMapIterator::END()']]], + ['end_310',['end',['../classnctl_1_1_array.html#ae9577aaf2570f9be5b77e534a25f1c61',1,'nctl::Array::end()'],['../classnctl_1_1_hash_map.html#a862d4d2b7c15d373406a2b6f38c314fa',1,'nctl::HashMap::end()'],['../classnctl_1_1_hash_map.html#a13f9361c2839dcebbea050438045a639',1,'nctl::HashMap::end() const'],['../classnctl_1_1_hash_map_list.html#aa097521d12b224c675c233d8bacbc92c',1,'nctl::HashMapList::end()'],['../classnctl_1_1_hash_map_list.html#a493c87dd5a4f3c0607a58a95fc369aa4',1,'nctl::HashMapList::end() const'],['../classnctl_1_1_hash_set.html#a2b0e1b56f27372046d2dad22f2556bc7',1,'nctl::HashSet::end()'],['../classnctl_1_1_hash_set.html#a913ba896ba56c36c35690a6714f53cda',1,'nctl::HashSet::end() const']]], + ['enqueue_311',['enqueue',['../classncine_1_1_audio_stream.html#ad8b30d63c8dfcb7493ba79a0d72bbabb',1,'ncine::AudioStream']]], + ['enqueuecommand_312',['enqueueCommand',['../classncine_1_1_i_thread_pool.html#a5bb828dedda38e65833deea3e8a6a7ef',1,'ncine::IThreadPool::enqueueCommand()'],['../classncine_1_1_null_thread_pool.html#a01cc43f1d59797354706b861020ae445',1,'ncine::NullThreadPool::enqueueCommand()']]], + ['equalizerproperties_313',['equalizerProperties',['../classncine_1_1_audio_effect_properties.html#a0af01302ae804fc1011ab121be58e79e',1,'ncine::AudioEffectProperties::equalizerProperties() const'],['../classncine_1_1_audio_effect_properties.html#a2924df5037f5bc9acb2ad7b8a953816b',1,'ncine::AudioEffectProperties::equalizerProperties()']]], + ['equalizerproperties_314',['EqualizerProperties',['../structncine_1_1_audio_effect_properties_1_1_equalizer_properties.html',1,'ncine::AudioEffectProperties']]], + ['erase_315',['erase',['../classnctl_1_1_array.html#aa5088a9e824af88acce85d273f45257d',1,'nctl::Array::erase(Iterator position)'],['../classnctl_1_1_array.html#a254e6aa67fff90f772b1bafa6408b0b3',1,'nctl::Array::erase(Iterator first, const Iterator last)'],['../classnctl_1_1_list.html#ada1c889e00bc3c80455496004b07f6b8',1,'nctl::List::erase(ConstIterator position)'],['../classnctl_1_1_list.html#a519700c4dfd5b0c58c27eada96df0a2b',1,'nctl::List::erase(ConstIterator first, const ConstIterator last)'],['../classnctl_1_1_static_array.html#a76ff7dddb118b7aceb942a10a05fed83',1,'nctl::StaticArray::erase(Iterator position)'],['../classnctl_1_1_static_array.html#adeff7d5c7aea6e90cbcfedb72d79c5fb',1,'nctl::StaticArray::erase(Iterator first, const Iterator last)']]], + ['every_5fdraw_316',['EVERY_DRAW',['../classncine_1_1_viewport.html#af65ae2e288ca0cbad4d09a1b740622a6aa4b7435dc6234787c74d628199c653be',1,'ncine::Viewport']]], + ['every_5fframe_317',['EVERY_FRAME',['../classncine_1_1_viewport.html#af65ae2e288ca0cbad4d09a1b740622a6a761babdf63d6bab8b9a3802119390636',1,'ncine::Viewport']]], + ['execute_318',['execute',['../classncine_1_1_i_thread_command.html#aea2b527102932c81f32a7d0ac95f7338',1,'ncine::IThreadCommand']]], + ['exists_319',['exists',['../classncine_1_1_file_system.html#a301de2d828c8f714b8a72d7c54aa6f3c',1,'ncine::FileSystem']]], + ['extension_320',['extension',['../classncine_1_1_file_system.html#a5a33d201323b2c1d499f100b6dfb4a43',1,'ncine::FileSystem']]], + ['externaldatapath_321',['externalDataPath',['../classncine_1_1_android_application.html#a574aa361e14c03270c8d8f918a8573d2',1,'ncine::AndroidApplication']]] +]; diff --git a/master/search/all_5.html b/master/search/all_5.html new file mode 100644 index 0000000000..9dd9344b0d --- /dev/null +++ b/master/search/all_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/all_5.js b/master/search/all_5.js new file mode 100644 index 0000000000..ed3ec2fff2 --- /dev/null +++ b/master/search/all_5.js @@ -0,0 +1,66 @@ +var searchData= +[ + ['fasthashfunc_322',['FastHashFunc',['../classnctl_1_1_fast_hash_func.html',1,'nctl']]], + ['fasthashfunc_3c_20const_20char_20_2a_20_3e_323',['FastHashFunc< const char * >',['../classnctl_1_1_fast_hash_func_3_01const_01char_01_5_01_4.html',1,'nctl']]], + ['fasthashfunc_3c_20string_20_3e_324',['FastHashFunc< String >',['../classnctl_1_1_fast_hash_func_3_01_string_01_4.html',1,'nctl']]], + ['fastinteger_325',['fastInteger',['../classncine_1_1_random.html#ae5f2775282732cdcaa8e8a7606019f52',1,'ncine::Random']]], + ['fastreal_326',['fastReal',['../classncine_1_1_random.html#a561bd7a95ab33f205252c2789867d35b',1,'ncine::Random::fastReal(float min, float max)'],['../classncine_1_1_random.html#a01e20aced99af0a1ba15f2cf423209af',1,'ncine::Random::fastReal()']]], + ['fd_327',['fd',['../classncine_1_1_i_file.html#aecaa1ddd8ff1c7a04063aa2d102debd6',1,'ncine::IFile']]], + ['filedate_328',['FileDate',['../structncine_1_1_file_system_1_1_file_date.html',1,'ncine::FileSystem']]], + ['filedescriptor_5f_329',['fileDescriptor_',['../classncine_1_1_i_file.html#a7e4e865a76d9b9bc6143a1554f0b94b2',1,'ncine::IFile']]], + ['fileloglevel_330',['fileLogLevel',['../classncine_1_1_app_configuration.html#aac9ebc86670834a0b4636ad788c0f355',1,'ncine::AppConfiguration']]], + ['filename_331',['filename',['../classncine_1_1_i_file.html#a05152fbcaa169ace627b0dbbc0c7541a',1,'ncine::IFile::filename()'],['../classncine_1_1_emscripten_local_file.html#a92800c5a3e70318e8d65c9f5807e1921',1,'ncine::EmscriptenLocalFile::filename()']]], + ['filename_5f_332',['filename_',['../classncine_1_1_i_file.html#a792822c9f300bbb523b917705aa44fb6',1,'ncine::IFile']]], + ['filepointer_5f_333',['filePointer_',['../classncine_1_1_i_file.html#a49139ae1efc9e4916d6726ddd1c9bd12',1,'ncine::IFile']]], + ['filesize_334',['fileSize',['../classncine_1_1_file_system.html#a0a8fe0a1d1314de51bd7825797cc488d',1,'ncine::FileSystem']]], + ['filesize_5f_335',['fileSize_',['../classncine_1_1_i_file.html#a75f57abb3676e551b74bfb62b1ad3136',1,'ncine::IFile']]], + ['filesystem_336',['FileSystem',['../classncine_1_1_file_system.html',1,'ncine']]], + ['filetype_337',['FileType',['../classncine_1_1_i_file.html#ad049ac261e62d24ace7b735b2f07269f',1,'ncine::IFile']]], + ['filterid_338',['filterId',['../classncine_1_1_audio_filter.html#a9972469f33187f8018564ba02974fd39',1,'ncine::AudioFilter']]], + ['filtering_339',['Filtering',['../classncine_1_1_texture.html#aab00aa16b4d4f700e0f8719808ff9a26',1,'ncine::Texture']]], + ['find_340',['find',['../classnctl_1_1_hash_map_list.html#ac14638ddd64036bd0391b37e3b76a544',1,'nctl::HashMapList::find()'],['../classnctl_1_1_static_string.html#a061e8b7cf84169c54d8724bf3461c34a',1,'nctl::StaticString::find()'],['../classnctl_1_1_hash_map_list.html#a815a51398c6125b51543a333fd8808c8',1,'nctl::HashMapList::find()'],['../classnctl_1_1_hash_set.html#a1ead32bdaf2a460bc54903cbf7c85736',1,'nctl::HashSet::find(const K &key)'],['../classnctl_1_1_hash_set.html#accc59d30316242e02552185f5b0d0f9a',1,'nctl::HashSet::find(const K &key) const'],['../classnctl_1_1_hash_set_list.html#a70198354f4d6789927a698b7fb77954b',1,'nctl::HashSetList::find(const K &key)'],['../classnctl_1_1_hash_set_list.html#a178dd382ed5539c998eb4dacc8bec91e',1,'nctl::HashSetList::find(const K &key) const'],['../classnctl_1_1_sparse_set.html#a482ea527c20171fb77c004e90baed8b7',1,'nctl::SparseSet::find()'],['../classnctl_1_1_static_hash_map.html#a07dbe09b250036700d25d639fb13412b',1,'nctl::StaticHashMap::find(const K &key)'],['../classnctl_1_1_static_hash_map.html#a1dce194b60d048a395cb9d72a1965cc7',1,'nctl::StaticHashMap::find(const K &key) const'],['../classnctl_1_1_static_hash_set.html#a1a63576d1d0ff6d284d689963b7d22dd',1,'nctl::StaticHashSet::find(const K &key)'],['../classnctl_1_1_static_hash_set.html#ac199e1a960e9321a1681123846ec5937',1,'nctl::StaticHashSet::find(const K &key) const'],['../classnctl_1_1_static_string.html#ad0016e956845f31d4aa0c578806ee54f',1,'nctl::StaticString::find()'],['../classnctl_1_1_hash_map.html#acb57ff26b338fd87248401b719f33ae7',1,'nctl::HashMap::find(const K &key) const'],['../classnctl_1_1_hash_map.html#ac8dc7c685333cc35d7c052a692d2149d',1,'nctl::HashMap::find(const K &key)'],['../classnctl_1_1_static_string.html#a2ef4231f047b9e761d89f9824214b9ef',1,'nctl::StaticString::find()'],['../classnctl_1_1_string.html#af843b725bf90db4b84bca74e22b49db6',1,'nctl::String::find(const String &other) const'],['../classnctl_1_1_string.html#a3f33e9dc48cd566c07257bf2ec81525b',1,'nctl::String::find(const char *cString) const']]], + ['findfirstchar_341',['findFirstChar',['../classnctl_1_1_string.html#ab4b2ab4fc6bf832aa4e83809e0e1336b',1,'nctl::String::findFirstChar()'],['../classnctl_1_1_static_string.html#a5fd8562a30369c2070aee71859ad8a8a',1,'nctl::StaticString::findFirstChar()']]], + ['findfirstcharafterindex_342',['findFirstCharAfterIndex',['../classnctl_1_1_string.html#a5e0974c22885872278be238da372d349',1,'nctl::String::findFirstCharAfterIndex()'],['../classnctl_1_1_static_string.html#ac8aa7eed3ddcf7aaa599138b90aa081e',1,'nctl::StaticString::findFirstCharAfterIndex()']]], + ['findlastchar_343',['findLastChar',['../classnctl_1_1_string.html#a55ea0a0861beef24cb2279368940b8af',1,'nctl::String::findLastChar()'],['../classnctl_1_1_static_string.html#a23c075e31b093fee282fe598f751d79e',1,'nctl::StaticString::findLastChar()']]], + ['fitstrategy_344',['fitStrategy',['../classnctl_1_1_free_list_allocator.html#a78015efa861df084715e4966af7abd1e',1,'nctl::FreeListAllocator']]], + ['fitstrategy_345',['FitStrategy',['../classnctl_1_1_free_list_allocator.html#a8550f210fe7a97376c6c3c77e07a1172',1,'nctl::FreeListAllocator']]], + ['fixedbatchsize_346',['fixedBatchSize',['../classncine_1_1_app_configuration.html#a2a4651ce842ccd0fb35641210007e54d',1,'ncine::AppConfiguration']]], + ['fixedhashfunc_347',['FixedHashFunc',['../classnctl_1_1_fixed_hash_func.html',1,'nctl']]], + ['fixextension_348',['fixExtension',['../classncine_1_1_file_system.html#ab76cbfd510a7d49d3a0cd80a0ecfe627',1,'ncine::FileSystem']]], + ['flangerproperties_349',['flangerProperties',['../classncine_1_1_audio_effect_properties.html#ab5538ac60327155addec97739464b1fc',1,'ncine::AudioEffectProperties::flangerProperties()'],['../classncine_1_1_audio_effect_properties.html#aec9ebac367deff8c364c132782d39cda',1,'ncine::AudioEffectProperties::flangerProperties() const']]], + ['flangerproperties_350',['FlangerProperties',['../structncine_1_1_audio_effect_properties_1_1_flanger_properties.html',1,'ncine::AudioEffectProperties']]], + ['flashwindow_351',['flashWindow',['../classncine_1_1_i_gfx_device.html#ae0091f94447a2c22ca957ffecf304781',1,'ncine::IGfxDevice']]], + ['flip_352',['flip',['../classnctl_1_1_bit_set.html#a1e5cebd2688734187da21d96588de4cb',1,'nctl::BitSet']]], + ['flippedx_5f_353',['flippedX_',['../classncine_1_1_base_sprite.html#a0e14904d787a60ed13734dbc23782493',1,'ncine::BaseSprite']]], + ['flippedy_5f_354',['flippedY_',['../classncine_1_1_base_sprite.html#a68c3d130512b38529565f6d29e4fdd24',1,'ncine::BaseSprite']]], + ['fnv1ahashfunc_355',['FNV1aHashFunc',['../classnctl_1_1_f_n_v1a_hash_func.html',1,'nctl']]], + ['fnv1ahashfunc_3c_20const_20char_20_2a_20_3e_356',['FNV1aHashFunc< const char * >',['../classnctl_1_1_f_n_v1a_hash_func_3_01const_01char_01_5_01_4.html',1,'nctl']]], + ['fnv1ahashfunc_3c_20string_20_3e_357',['FNV1aHashFunc< String >',['../classnctl_1_1_f_n_v1a_hash_func_3_01_string_01_4.html',1,'nctl']]], + ['fnv1ahashfunc_3c_20unsigned_20short_20int_20_3e_358',['FNV1aHashFunc< unsigned short int >',['../classnctl_1_1_f_n_v1a_hash_func.html',1,'nctl']]], + ['fnv1ahashfunc_3c_20void_20_2a_20_3e_359',['FNV1aHashFunc< void * >',['../classnctl_1_1_f_n_v1a_hash_func.html',1,'nctl']]], + ['font_360',['Font',['../classncine_1_1_font.html#ac083f28a592e063c82fc15937dbee694',1,'ncine::Font::Font(const char *fntBufferName, const unsigned char *fntBufferPtr, unsigned long int fntBufferSize, const char *texBufferName, const unsigned char *texBufferPtr, unsigned long int texBufferSize)'],['../classncine_1_1_font.html#a01780c3ed1d9b728148c55588701bc64',1,'ncine::Font::Font(const char *fntFilename, Texture *texture)'],['../classncine_1_1_font.html#a39a64b733ee9df584aed9da4ee6300c3',1,'ncine::Font::Font(const char *fntBufferName, const unsigned char *fntBufferPtr, unsigned long int fntBufferSize, const char *texFilename)'],['../classncine_1_1_font.html#ab67d07c740d6f2e6bc4814e92f40f571',1,'ncine::Font::Font(const char *fntBufferName, const unsigned char *fntBufferPtr, unsigned long int fntBufferSize, Texture *texture)'],['../classncine_1_1_font.html#a86f2effe0bc32537669248b9d1583a0a',1,'ncine::Font::Font(const char *fntFilename)'],['../classncine_1_1_font.html#a879078eda2c16010b86c0080d8d9ac00',1,'ncine::Font::Font(const char *fntFilename, const char *texFilename)'],['../classncine_1_1_font.html#abe554b25d8f5f7d96b439c73d0f9e136',1,'ncine::Font::Font()']]], + ['font_361',['font',['../classncine_1_1_text_node.html#a534b02fb474615dd793f14368bd3619e',1,'ncine::TextNode']]], + ['font_362',['Font',['../classncine_1_1_font.html#af439a5c66ec42c4f5b8c93d1e2067fd7',1,'ncine::Font::Font()'],['../classncine_1_1_font.html',1,'ncine::Font']]], + ['format_363',['Format',['../classncine_1_1_texture.html#a293002562a6ec601bf69e17cb1f70512',1,'ncine::Texture']]], + ['format_364',['format',['../classncine_1_1_texture.html#a3be461d7a27e682b8747821e8a18c017',1,'ncine::Texture::format()'],['../classnctl_1_1_static_string.html#ab1cd053cc343aa04a68350e67f2fd3cd',1,'nctl::StaticString::format()'],['../classnctl_1_1_string.html#a8f5dcc7d99380162f410d26849b86632',1,'nctl::String::format()']]], + ['formatappend_365',['formatAppend',['../classnctl_1_1_static_string.html#aa70497f78e2951e847a670d901ead79c',1,'nctl::StaticString::formatAppend()'],['../classnctl_1_1_string.html#a0a861d1e073a96485a38998383212f32',1,'nctl::String::formatAppend()']]], + ['forwarditeratortag_366',['ForwardIteratorTag',['../structnctl_1_1_forward_iterator_tag.html',1,'nctl']]], + ['frame_367',['frame',['../classncine_1_1_animated_sprite.html#aab738121f5b4a396cb01a05f2a66ca93',1,'ncine::AnimatedSprite::frame()'],['../classncine_1_1_rect_animation.html#a67049dc5ae11369e405c4f6b2ae67e6f',1,'ncine::RectAnimation::frame() const']]], + ['frameduration_368',['frameDuration',['../classncine_1_1_rect_animation.html#a77ded0884f6928266d8b7646e97c8648',1,'ncine::RectAnimation']]], + ['framedurations_369',['frameDurations',['../classncine_1_1_rect_animation.html#a17d3c974f3500b3d4e9da251e8111b2e',1,'ncine::RectAnimation::frameDurations()'],['../classncine_1_1_rect_animation.html#a8d803666f2e627fb0bee47548f3684a6',1,'ncine::RectAnimation::frameDurations() const']]], + ['framelimit_370',['frameLimit',['../classncine_1_1_app_configuration.html#ada197eafd47b5a02cd79dbf2dcdcc0f8',1,'ncine::AppConfiguration']]], + ['frametimer_371',['frameTimer',['../classncine_1_1_application.html#a365cf7e0fa82c02ef0b9667dc2528614',1,'ncine::Application']]], + ['frametimerloginterval_372',['frameTimerLogInterval',['../classncine_1_1_app_configuration.html#a37591300c5b892edbd4cc14444cc14ea',1,'ncine::AppConfiguration']]], + ['freelistallocator_373',['FreeListAllocator',['../classnctl_1_1_free_list_allocator.html',1,'nctl']]], + ['freememory_374',['freeMemory',['../classnctl_1_1_i_allocator.html#aa32c2247841ce5ecd1fca16d7cd11b90',1,'nctl::IAllocator']]], + ['frequency_375',['frequency',['../classncine_1_1_audio_buffer.html#ac8c623d02bee3edb435088435912ce26',1,'ncine::AudioBuffer::frequency()'],['../classncine_1_1_audio_buffer_player.html#afd2a5d75ea54a9c91549d6ae6d17f05d',1,'ncine::AudioBufferPlayer::frequency()'],['../classncine_1_1_audio_stream.html#ae48cc5c6a1c474a4af00951e420d3319',1,'ncine::AudioStream::frequency()'],['../classncine_1_1_audio_stream_player.html#a59ef296673df29614ca94cbc616fddc4',1,'ncine::AudioStreamPlayer::frequency()'],['../classncine_1_1_i_audio_player.html#aeec32431d779c84b95c3f2ed1fe0e70e',1,'ncine::IAudioPlayer::frequency()']]], + ['frequencyshifterproperties_376',['frequencyShifterProperties',['../classncine_1_1_audio_effect_properties.html#abd730b527a5cb2566256e9e7bb91bdb7',1,'ncine::AudioEffectProperties::frequencyShifterProperties() const'],['../classncine_1_1_audio_effect_properties.html#a90b6ee4af2c5b77d9695fea778bc460f',1,'ncine::AudioEffectProperties::frequencyShifterProperties()']]], + ['frequencyshifterproperties_377',['FrequencyShifterProperties',['../structncine_1_1_audio_effect_properties_1_1_frequency_shifter_properties.html',1,'ncine::AudioEffectProperties']]], + ['from_5fstart_378',['FROM_START',['../classncine_1_1_rect_animation.html#a3e3d07baae76c946ae975f7dc9d740d4a5d2ab3b037600cb29bae8d22473facbc',1,'ncine::RectAnimation']]], + ['fromcentersize_379',['fromCenterSize',['../classncine_1_1_rect.html#a03fce6e8bdcf00f8abed4e2e95ab84d9',1,'ncine::Rect::fromCenterSize(const Vector2< T > &center, const Vector2< T > &size)'],['../classncine_1_1_rect.html#aafc15f50532ab8931fbf03126a5124ee',1,'ncine::Rect::fromCenterSize(T xx, T yy, T ww, T hh)']]], + ['fromid_380',['fromId',['../classncine_1_1_object.html#a8cb341bd336569c584bdf9156c850a0c',1,'ncine::Object']]], + ['fromminmax_381',['fromMinMax',['../classncine_1_1_rect.html#ad55e901fffe0b2ccf0b6aecfd29c2b58',1,'ncine::Rect::fromMinMax(T minX, T minY, T maxX, T maxY)'],['../classncine_1_1_rect.html#adaa8b027a1d875caf19e715ab9cfdf0e',1,'ncine::Rect::fromMinMax(const Vector2< T > &min, const Vector2< T > &max)']]], + ['front_382',['front',['../classnctl_1_1_array.html#a8fae363c848112a8dff7b278d2e20a3b',1,'nctl::Array::front() const'],['../classnctl_1_1_array.html#a1ef0726d4cc2f15bbfe6c92b3631673c',1,'nctl::Array::front()'],['../classnctl_1_1_list.html#a7498565fa928dd4f6e2e4c5e63b5e64d',1,'nctl::List::front() const'],['../classnctl_1_1_list.html#ab8d86963a7c8a5fb18178f1dd5d802e6',1,'nctl::List::front()'],['../classnctl_1_1_static_array.html#a4cf6598766169df8f10c616752b8b2d6',1,'nctl::StaticArray::front() const'],['../classnctl_1_1_static_array.html#ac93e2206d2e4a312cdcb71187e413c12',1,'nctl::StaticArray::front()']]], + ['full_383',['FULL',['../classncine_1_1_lua_state_manager.html#a827fa27232368ea58cb813a4d8666afbaba7de5bc6888294e5884b024a4c894f1',1,'ncine::LuaStateManager']]], + ['fullscreen_384',['fullScreen',['../classncine_1_1_app_configuration.html#a1a1eb2b7edefb23bcd81fee35c9f1ec2',1,'ncine::AppConfiguration']]] +]; diff --git a/master/search/all_6.html b/master/search/all_6.html new file mode 100644 index 0000000000..f1e516d75a --- /dev/null +++ b/master/search/all_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/all_6.js b/master/search/all_6.js new file mode 100644 index 0000000000..9778ecaa42 --- /dev/null +++ b/master/search/all_6.js @@ -0,0 +1,31 @@ +var searchData= +[ + ['g_385',['g',['../classncine_1_1_color.html#a48e838d6234ee46f825c1446cc9a1141',1,'ncine::Color::g()'],['../classncine_1_1_colorf.html#a5cb22b9e82b05d91675c1aa31d8eb256',1,'ncine::Colorf::g()'],['../classncine_1_1_color_hdr.html#a7e7ef06ec614343210c80fd657dd6ce1',1,'ncine::ColorHdr::g()']]], + ['gain_386',['gain',['../classncine_1_1_i_audio_player.html#a61db8eacf478d42d9e30b116906f3ba3',1,'ncine::IAudioPlayer::gain()'],['../classncine_1_1_audio_effect_slot.html#a08414e255b5e44046cba0bb6980ffa02',1,'ncine::AudioEffectSlot::gain()'],['../classncine_1_1_i_audio_device.html#a7a09047537a82ece9fa0fb0572560dbd',1,'ncine::IAudioDevice::gain()'],['../classncine_1_1_null_audio_device.html#af08123ea050f9af3839d9838221c96f7',1,'ncine::NullAudioDevice::gain()']]], + ['gain_5f_387',['gain_',['../classncine_1_1_i_audio_player.html#a606ab61bea83a4f2b580d1c0b43326ea',1,'ncine::IAudioPlayer']]], + ['gfxcapabilities_388',['gfxCapabilities',['../classncine_1_1_service_locator.html#a881411912dd640aa9c7a6088372fca01',1,'ncine::ServiceLocator']]], + ['gfxdevice_389',['gfxDevice',['../classncine_1_1_application.html#a0fe0fad9ae54de5c457f04f95e2a3bee',1,'ncine::Application']]], + ['glarrayintvalues_390',['GLArrayIntValues',['../structncine_1_1_i_gfx_capabilities_1_1_g_l_array_int_values.html',1,'ncine::IGfxCapabilities']]], + ['glcontextinfo_391',['glContextInfo',['../classncine_1_1_i_gfx_device.html#a689adb9b0f85370f92a50bc3cd6282a0',1,'ncine::IGfxDevice']]], + ['glcontextinfo_392',['GLContextInfo',['../structncine_1_1_i_gfx_device_1_1_g_l_context_info.html',1,'ncine::IGfxDevice']]], + ['glcontextinfo_5f_393',['glContextInfo_',['../classncine_1_1_i_gfx_device.html#a87fbd247e63c3a8d14139658177ff0b1',1,'ncine::IGfxDevice']]], + ['glcoreprofile_394',['glCoreProfile',['../classncine_1_1_app_configuration.html#a6bbbd52b67e1f6aedde732ab937aedbd',1,'ncine::AppConfiguration']]], + ['glextensions_395',['GLExtensions',['../structncine_1_1_i_gfx_capabilities_1_1_g_l_extensions.html',1,'ncine::IGfxCapabilities']]], + ['glforwardcompatible_396',['glForwardCompatible',['../classncine_1_1_app_configuration.html#ad88d5ec8fa57f819a8e42b911cb17746',1,'ncine::AppConfiguration']]], + ['glinfostrings_397',['glInfoStrings',['../classncine_1_1_i_gfx_capabilities.html#a4ca77945b83334eb0378a4777dbc1dab',1,'ncine::IGfxCapabilities::glInfoStrings()'],['../classncine_1_1_null_gfx_capabilities.html#a7960f0bb02f0b8a25f5745dfdbfa180f',1,'ncine::NullGfxCapabilities::glInfoStrings()']]], + ['glinfostrings_398',['GlInfoStrings',['../structncine_1_1_i_gfx_capabilities_1_1_gl_info_strings.html',1,'ncine::IGfxCapabilities']]], + ['glintvalues_399',['GLIntValues',['../structncine_1_1_i_gfx_capabilities_1_1_g_l_int_values.html',1,'ncine::IGfxCapabilities']]], + ['glmajorversion_400',['glMajorVersion',['../classncine_1_1_app_configuration.html#a6dd82b94ce15e2fc66495b2d127eba23',1,'ncine::AppConfiguration']]], + ['glminorversion_401',['glMinorVersion',['../classncine_1_1_app_configuration.html#a19ade5f69284fbefd257f0b746b22490',1,'ncine::AppConfiguration']]], + ['glversion_402',['glVersion',['../classncine_1_1_i_gfx_capabilities.html#ae00860a16dd61eeb8b89ac42b061eac9',1,'ncine::IGfxCapabilities::glVersion()'],['../classncine_1_1_null_gfx_capabilities.html#a936bdc9766d6bdb721a105aa5cdaca65',1,'ncine::NullGfxCapabilities::glVersion()']]], + ['glversion_403',['GLVersion',['../classncine_1_1_i_gfx_capabilities.html#a2d25b40e632ba3377f9fbfe3e77132c0',1,'ncine::IGfxCapabilities']]], + ['glyph_404',['glyph',['../classncine_1_1_font.html#adfbfae58f9f7c4c1b38012eeddc94787',1,'ncine::Font']]], + ['glyph_5fin_5falpha_405',['GLYPH_IN_ALPHA',['../classncine_1_1_font.html#a735257cb2d67a869321ca78922bee774ac3f41d4335f8001e38791691dda0a503',1,'ncine::Font']]], + ['glyph_5fin_5fred_406',['GLYPH_IN_RED',['../classncine_1_1_font.html#a735257cb2d67a869321ca78922bee774a9cae41236d13d44b6de15ca44c9ef2a2',1,'ncine::Font']]], + ['glyph_5fsprite_407',['GLYPH_SPRITE',['../classncine_1_1_font.html#a735257cb2d67a869321ca78922bee774ab1ecf50aee154cc519c4d9ee6cc98507',1,'ncine::Font']]], + ['gpuctxscope_408',['GpuCtxScope',['../classtracy_1_1_gpu_ctx_scope.html',1,'tracy']]], + ['greenbits_409',['greenBits',['../classncine_1_1_display_mode.html#ab2dd388af23add484c4edf38b855271b',1,'ncine::DisplayMode']]], + ['guisettings_410',['guiSettings',['../classncine_1_1_application.html#a4ed05de44b35fbc6a8c9678f993b5059',1,'ncine::Application']]], + ['guisettings_411',['GuiSettings',['../structncine_1_1_application_1_1_gui_settings.html',1,'ncine::Application']]], + ['guitexid_412',['guiTexId',['../classncine_1_1_texture.html#a001cae2dddc4b2bd1ef320f338b5d1b4',1,'ncine::Texture']]] +]; diff --git a/master/search/all_7.html b/master/search/all_7.html new file mode 100644 index 0000000000..8ddbf6c8e5 --- /dev/null +++ b/master/search/all_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/all_7.js b/master/search/all_7.js new file mode 100644 index 0000000000..b30c88c475 --- /dev/null +++ b/master/search/all_7.js @@ -0,0 +1,42 @@ +var searchData= +[ + ['h_413',['h',['../classncine_1_1_rect.html#a8e0a221c4ada7abb45c7348dd2f47ff3',1,'ncine::Rect']]], + ['handler_414',['handler',['../classncine_1_1_i_input_manager.html#a89d65300af9befdfb0138ddec50dd6bf',1,'ncine::IInputManager']]], + ['hasextension_415',['hasExtension',['../classncine_1_1_file_system.html#a1e7d416dd857749dd1178a86c14d23b8',1,'ncine::FileSystem::hasExtension()'],['../classncine_1_1_i_audio_device.html#a20c46517e4b886e62ecb2d229f22674e',1,'ncine::IAudioDevice::hasExtension()'],['../classncine_1_1_i_gfx_capabilities.html#aea7716d9d5ebce7f7e91ed7d963cbe3e',1,'ncine::IGfxCapabilities::hasExtension()']]], + ['hasfocus_416',['hasFocus',['../classncine_1_1_application.html#a1d03b7f576d8b0a706e7a711e2814a6a',1,'ncine::Application']]], + ['hash_417',['hash',['../classnctl_1_1_hash_set_iterator.html#acb0dad31954ef027d70e99cd97435e9a',1,'nctl::HashSetIterator::hash()'],['../classnctl_1_1_hash_map.html#a20d66e25bf5e50f385477c8d27b5c488',1,'nctl::HashMap::hash()'],['../classnctl_1_1_hash_map_iterator.html#ae610418e3c6d218be91272de9940af30',1,'nctl::HashMapIterator::hash()'],['../classnctl_1_1_hash_map_list.html#aac63306695cec847cc96a4a320d9541d',1,'nctl::HashMapList::hash()'],['../classnctl_1_1_hash_map_list_iterator.html#a495a562e8e3a7d6e42658faee479e4a6',1,'nctl::HashMapListIterator::hash()'],['../classnctl_1_1_hash_set.html#a098052f1e1ce7eb09df79c3418cdd223',1,'nctl::HashSet::hash()'],['../classnctl_1_1_hash_set_list.html#a0b599e2e76a3e25c1f07156d68a81ab1',1,'nctl::HashSetList::hash()'],['../classnctl_1_1_hash_set_list_iterator.html#afbdb3e9db6ec845d2bdd4adcfff7a474',1,'nctl::HashSetListIterator::hash()'],['../classnctl_1_1_static_hash_map.html#ac6e964aa27afc5c004a8b133252d50ee',1,'nctl::StaticHashMap::hash()'],['../classnctl_1_1_static_hash_map_iterator.html#a67f3a5fa4c6a6af744b1b9092084eb2a',1,'nctl::StaticHashMapIterator::hash()'],['../classnctl_1_1_static_hash_set.html#a08190547717dd89b65724d86d21bd14d',1,'nctl::StaticHashSet::hash()'],['../classnctl_1_1_static_hash_set_iterator.html#a8b19d05ae3475e6b8e945ffe1be9fe68',1,'nctl::StaticHashSetIterator::hash()']]], + ['hash64_418',['Hash64',['../classncine_1_1_hash64.html',1,'ncine']]], + ['hashfilestat_419',['hashFileStat',['../classncine_1_1_hash64.html#a01f8444503ac06b7fcd8503477be12c1',1,'ncine::Hash64']]], + ['hashmap_420',['HashMap',['../classnctl_1_1_hash_map.html#ab6fdfc7bb0e94ebc690556e615854bc5',1,'nctl::HashMap::HashMap(const HashMap &other)'],['../classnctl_1_1_hash_map.html#ab6e2c7ef185e1dcea689de715d8ad6bd',1,'nctl::HashMap::HashMap(HashMap &&other)'],['../classnctl_1_1_hash_map.html',1,'nctl::HashMap< K, T, HashFunc >']]], + ['hashmap_3c_20unsigned_20short_20int_2c_20fontglyph_20_3e_421',['HashMap< unsigned short int, FontGlyph >',['../classnctl_1_1_hash_map.html',1,'nctl']]], + ['hashmap_3c_20void_20_2a_2c_20luatypes_3a_3auserdatatype_20_3e_422',['HashMap< void *, LuaTypes::UserDataType >',['../classnctl_1_1_hash_map.html',1,'nctl']]], + ['hashmaphelpertraits_423',['HashMapHelperTraits',['../structnctl_1_1_hash_map_helper_traits.html',1,'nctl']]], + ['hashmaphelpertraits_3c_20k_2c_20t_2c_20hashfunc_2c_20false_20_3e_424',['HashMapHelperTraits< K, T, HashFunc, false >',['../structnctl_1_1_hash_map_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4.html',1,'nctl']]], + ['hashmaphelpertraits_3c_20k_2c_20t_2c_20hashfunc_2c_20true_20_3e_425',['HashMapHelperTraits< K, T, HashFunc, true >',['../structnctl_1_1_hash_map_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4.html',1,'nctl']]], + ['hashmapiterator_426',['HashMapIterator',['../classnctl_1_1_hash_map_iterator.html#a1dd48e812404a65c71d60aa5b320ed66',1,'nctl::HashMapIterator::HashMapIterator()'],['../classnctl_1_1_hash_map_iterator.html',1,'nctl::HashMapIterator< K, T, HashFunc, IsConst >']]], + ['hashmapiterator_3c_20k_2c_20t_2c_20hashfunc_2c_20true_20_3e_427',['HashMapIterator< K, T, HashFunc, true >',['../classnctl_1_1_hash_map_iterator.html#a8165d67a4c17cb9d2436b44f0b1dd8a0',1,'nctl::HashMapIterator']]], + ['hashmaplist_428',['HashMapList',['../classnctl_1_1_hash_map_list.html#aad01a34ae27f743c75fd489db2f1db80',1,'nctl::HashMapList::HashMapList(HashMapList &&other)'],['../classnctl_1_1_hash_map_list.html#a348edf0adc89951a9b7645c519a98225',1,'nctl::HashMapList::HashMapList(const HashMapList &other)'],['../classnctl_1_1_hash_map_list.html',1,'nctl::HashMapList< K, T, HashFunc >']]], + ['hashmaplisthelpertraits_429',['HashMapListHelperTraits',['../structnctl_1_1_hash_map_list_helper_traits.html',1,'nctl']]], + ['hashmaplisthelpertraits_3c_20k_2c_20t_2c_20hashfunc_2c_20false_20_3e_430',['HashMapListHelperTraits< K, T, HashFunc, false >',['../structnctl_1_1_hash_map_list_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4.html',1,'nctl']]], + ['hashmaplisthelpertraits_3c_20k_2c_20t_2c_20hashfunc_2c_20true_20_3e_431',['HashMapListHelperTraits< K, T, HashFunc, true >',['../structnctl_1_1_hash_map_list_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4.html',1,'nctl']]], + ['hashmaplistiterator_432',['HashMapListIterator',['../classnctl_1_1_hash_map_list_iterator.html#a0e40a755fca05842951e1bb3ccd590f0',1,'nctl::HashMapListIterator::HashMapListIterator()'],['../classnctl_1_1_hash_map_list_iterator.html',1,'nctl::HashMapListIterator< K, T, HashFunc, IsConst >']]], + ['hashmaplistiterator_3c_20k_2c_20t_2c_20hashfunc_2c_20true_20_3e_433',['HashMapListIterator< K, T, HashFunc, true >',['../classnctl_1_1_hash_map_list_iterator.html#af52453671758586ccc82b0b9b46a7c81',1,'nctl::HashMapListIterator']]], + ['hashset_434',['HashSet',['../classnctl_1_1_hash_set.html#addd501bef93d513dd93cf87acb1f561f',1,'nctl::HashSet::HashSet(const HashSet &other)'],['../classnctl_1_1_hash_set.html#ac61b9213e7e1c9d51fba3c4a9ef60b57',1,'nctl::HashSet::HashSet(HashSet &&other)'],['../classnctl_1_1_hash_set.html',1,'nctl::HashSet< K, HashFunc >']]], + ['hashsethelpertraits_435',['HashSetHelperTraits',['../structnctl_1_1_hash_set_helper_traits.html',1,'nctl']]], + ['hashsetiterator_436',['HashSetIterator',['../classnctl_1_1_hash_set_iterator.html',1,'nctl']]], + ['hashsetlist_437',['HashSetList',['../classnctl_1_1_hash_set_list.html#ad249fd4c372d3bf98d5b70ca99c2b9f8',1,'nctl::HashSetList::HashSetList(const HashSetList &other)'],['../classnctl_1_1_hash_set_list.html#af4025d439041ba02338f5d3d3d82ee21',1,'nctl::HashSetList::HashSetList(HashSetList &&other)'],['../classnctl_1_1_hash_set_list.html',1,'nctl::HashSetList< K, HashFunc >']]], + ['hashsetlisthelpertraits_438',['HashSetListHelperTraits',['../structnctl_1_1_hash_set_list_helper_traits.html',1,'nctl']]], + ['hashsetlistiterator_439',['HashSetListIterator',['../classnctl_1_1_hash_set_list_iterator.html',1,'nctl']]], + ['hashstring_440',['hashString',['../classncine_1_1_hash64.html#a217e5e128c0ea179f4ce6d195b3ee641',1,'ncine::Hash64']]], + ['hashstrings_441',['hashStrings',['../classncine_1_1_hash64.html#a65fbf676dd4dc0d6c0768bbdd90edc31',1,'ncine::Hash64']]], + ['hassource_442',['hasSource',['../classncine_1_1_i_audio_player.html#a059adaab0aa69af50aa9aea3a4cab1f9',1,'ncine::IAudioPlayer']]], + ['hasvsync_443',['hasVSync',['../classncine_1_1_display_mode.html#a940cda94181d47ed9afc484ae104e7af',1,'ncine::DisplayMode']]], + ['hatid_444',['hatId',['../classncine_1_1_joy_hat_event.html#aa6dc41d7ed6710ea545cf4c9d22f3078',1,'ncine::JoyHatEvent']]], + ['hatstate_445',['hatState',['../classncine_1_1_joy_hat_event.html#a6fe70948f6166fb3f746452ec7da25ae',1,'ncine::JoyHatEvent::hatState()'],['../classncine_1_1_joystick_state.html#ab6e942315f3285913b700d974d0789f5',1,'ncine::JoystickState::hatState()']]], + ['hatstate_446',['HatState',['../structncine_1_1_hat_state.html',1,'ncine']]], + ['height_447',['height',['../classncine_1_1_drawable_node.html#a72b31d7c99975aa0fcde166983d80519',1,'ncine::DrawableNode::height()'],['../classncine_1_1_viewport.html#a9b89fb094a5df3324d0b62c0044b0405',1,'ncine::Viewport::height()'],['../classncine_1_1_texture.html#af4f7b619b372409885893edac751ef93',1,'ncine::Texture::height()'],['../classncine_1_1_text_node.html#a3c8c3def1594ce971bf55fa48e7b5c10',1,'ncine::TextNode::height()'],['../classncine_1_1_i_gfx_device.html#aa14bde8f02c81beb2d1e39dbb9e03c54',1,'ncine::IGfxDevice::height()'],['../classncine_1_1_application.html#a0804ca1e3f370244cde624cbd371f389',1,'ncine::Application::height()']]], + ['height_5f_448',['height_',['../classncine_1_1_drawable_node.html#a724705ba38b58273b978846f7174b422',1,'ncine::DrawableNode::height_()'],['../classncine_1_1_i_gfx_device.html#a7f6da8012e4796198abab3ec580f45c2',1,'ncine::IGfxDevice::height_()']]], + ['heightint_449',['heightInt',['../classncine_1_1_application.html#a6b4445abd5978135d1b6165d2f934680',1,'ncine::Application']]], + ['hidden_450',['HIDDEN',['../classncine_1_1_i_input_manager.html#a1249b2dd851ac2b4a59f0cc51047842ba347e628a8f72626a0611ef842fe9d304',1,'ncine::IInputManager']]], + ['homepath_451',['homePath',['../classncine_1_1_file_system.html#a63c13ca24abf1e697b3955efa6c981b1',1,'ncine::FileSystem']]] +]; diff --git a/master/search/all_8.html b/master/search/all_8.html new file mode 100644 index 0000000000..83c55ae222 --- /dev/null +++ b/master/search/all_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/all_8.js b/master/search/all_8.js new file mode 100644 index 0000000000..b008babf10 --- /dev/null +++ b/master/search/all_8.js @@ -0,0 +1,142 @@ +var searchData= +[ + ['iallocator_452',['IAllocator',['../classnctl_1_1_i_allocator.html',1,'nctl']]], + ['iappeventhandler_453',['IAppEventHandler',['../classncine_1_1_i_app_event_handler.html',1,'ncine']]], + ['iaudiodevice_454',['IAudioDevice',['../classncine_1_1_i_audio_device.html',1,'ncine']]], + ['iaudioplayer_455',['IAudioPlayer',['../classncine_1_1_i_audio_player.html#adf6c9dc4aaaabe134ff6c397e6bb1117',1,'ncine::IAudioPlayer::IAudioPlayer()'],['../classncine_1_1_i_audio_player.html',1,'ncine::IAudioPlayer']]], + ['ibosize_456',['iboSize',['../classncine_1_1_app_configuration.html#a106b5eb5f63482224ab9b4f9bec6c792',1,'ncine::AppConfiguration']]], + ['id_457',['id',['../classncine_1_1_object.html#ac85f98b0431de8bd5fa08e52fdfe33b6',1,'ncine::Object']]], + ['idebugoverlay_458',['IDebugOverlay',['../classncine_1_1_i_debug_overlay.html#ae007b933f7c679e4124a4d2f03f782ff',1,'ncine::IDebugOverlay::IDebugOverlay()'],['../classncine_1_1_i_debug_overlay.html',1,'ncine::IDebugOverlay']]], + ['identity_459',['Identity',['../classncine_1_1_quaternion.html#aff505c800ae7ae43714d9f063a71f655',1,'ncine::Quaternion::Identity()'],['../classncine_1_1_matrix4x4.html#a07165b1b888dabd43aff165cc2892819',1,'ncine::Matrix4x4::Identity()']]], + ['identityhashfunc_460',['IdentityHashFunc',['../classnctl_1_1_identity_hash_func.html',1,'nctl']]], + ['ifile_461',['IFile',['../classncine_1_1_i_file.html#ae3e750c2f79685efffd16736e3f3dfe1',1,'ncine::IFile::IFile()'],['../classncine_1_1_i_file.html',1,'ncine::IFile']]], + ['iframetimer_462',['IFrameTimer',['../classncine_1_1_i_frame_timer.html',1,'ncine']]], + ['igfxcapabilities_463',['IGfxCapabilities',['../classncine_1_1_i_gfx_capabilities.html',1,'ncine']]], + ['igfxdevice_464',['IGfxDevice',['../classncine_1_1_i_gfx_device.html',1,'ncine']]], + ['iindexer_465',['IIndexer',['../classncine_1_1_i_indexer.html',1,'ncine']]], + ['iinputeventhandler_466',['IInputEventHandler',['../classncine_1_1_i_input_event_handler.html',1,'ncine']]], + ['iinputmanager_467',['IInputManager',['../classncine_1_1_i_input_manager.html',1,'ncine']]], + ['ilogger_468',['ILogger',['../classncine_1_1_i_logger.html',1,'ncine']]], + ['imguilayer_469',['imguiLayer',['../structncine_1_1_application_1_1_gui_settings.html#af9c85ce9a43db8232d3c5998a1d74e29',1,'ncine::Application::GuiSettings']]], + ['imguiviewport_470',['imguiViewport',['../structncine_1_1_application_1_1_gui_settings.html#aeeca7772c84aaef82bf719834a67dde9',1,'ncine::Application::GuiSettings']]], + ['indexer_471',['indexer',['../classncine_1_1_service_locator.html#a72909542a6ea023e68d2dd5f2b0dac4c',1,'ncine::ServiceLocator']]], + ['indices_472',['indices',['../classncine_1_1_mesh_sprite.html#aecfe6b8232b081d81e198532f7ba3783',1,'ncine::MeshSprite']]], + ['init_473',['init',['../classncine_1_1_texture.html#afe8dbe0927db87408b3e74e01c9dbde0',1,'ncine::Texture::init(const char *name, Format format, Vector2i size)'],['../classncine_1_1_texture.html#a7dc47c0df285dce0d8d3347b652b7471',1,'ncine::Texture::init(const char *name, Format format, int width, int height)'],['../classncine_1_1_texture.html#aaa759b8e8d1c3b7cd3d89ca4b809802b',1,'ncine::Texture::init(const char *name, Format format, int mipMapCount, Vector2i size)'],['../classncine_1_1_texture.html#a047a9aa5d1befc3ad126e79eb3a5d5ef',1,'ncine::Texture::init(const char *name, Format format, int mipMapCount, int width, int height)'],['../classncine_1_1_random.html#adb9fd261d43d42bbdae0ba9524cb3ecb',1,'ncine::Random::init()'],['../classncine_1_1_audio_buffer.html#a4ecb2b93f62caa046b993a3745fd2204',1,'ncine::AudioBuffer::init()']]], + ['initassetmanager_474',['initAssetManager',['../classncine_1_1_asset_file.html#aa0f5a6c81cec0dbc4128558c4d894c1c',1,'ncine::AssetFile']]], + ['initcommon_475',['initCommon',['../classncine_1_1_application.html#a1f5fb20bdd336ea540bfc72810a1cac3',1,'ncine::Application']]], + ['initglviewport_476',['initGLViewport',['../classncine_1_1_i_gfx_device.html#a5a90a34f2228cfee1f3b3e8a976d882d',1,'ncine::IGfxDevice']]], + ['initwindowscaling_477',['initWindowScaling',['../classncine_1_1_i_gfx_device.html#abc9077b2f6cbbbb3cb26e47e22b9a2a1',1,'ncine::IGfxDevice']]], + ['inlocalspace_478',['inLocalSpace',['../classncine_1_1_particle_system.html#a1a3396e5fdf711c3a18be925f24b7fae',1,'ncine::ParticleSystem']]], + ['inlocalspace_5f_479',['inLocalSpace_',['../classncine_1_1_particle.html#a655eafb8a95864d76db39df8dbbe62a8',1,'ncine::Particle']]], + ['inputmanager_480',['inputManager',['../classncine_1_1_application.html#aa3a8fd288f237be924bd4748c39e3bb8',1,'ncine::Application']]], + ['insert_481',['insert',['../classnctl_1_1_hash_map.html#ac02a9aafe66a57c3143d624756d57129',1,'nctl::HashMap::insert()'],['../classnctl_1_1_array.html#a93376337bb06668fb1e67db6e124bc72',1,'nctl::Array::insert()'],['../classnctl_1_1_static_hash_set.html#a9eadb54da77df85e0affc87cad0678a2',1,'nctl::StaticHashSet::insert(K &&key)'],['../classnctl_1_1_static_hash_set.html#a4ea1204baadc5bc89add710f6fa08d8f',1,'nctl::StaticHashSet::insert(const K &key)'],['../classnctl_1_1_static_hash_map.html#ae8d2cb9cb982f24f0a99d578dc27b581',1,'nctl::StaticHashMap::insert(const K &key, T &&value)'],['../classnctl_1_1_static_hash_map.html#ace28279a5e8dde0e6a906a520de8ae01',1,'nctl::StaticHashMap::insert(const K &key, const T &value)'],['../classnctl_1_1_static_array.html#a9ebd26b82f968cd2ee57ee9b708ee310',1,'nctl::StaticArray::insert(Iterator position, Iterator first, Iterator last)'],['../classnctl_1_1_static_array.html#aaf9877d2700f68d670d88dc877c71838',1,'nctl::StaticArray::insert(Iterator position, T &&value)'],['../classnctl_1_1_static_array.html#aca0319620f3b376a449e9eb8be4c6494',1,'nctl::StaticArray::insert(Iterator position, const T &value)'],['../classnctl_1_1_sparse_set.html#a31ef239eb9ab104cb8740d7b41e3998a',1,'nctl::SparseSet::insert()'],['../classnctl_1_1_list.html#aaf8398bc33bc058c87092e5de773afd5',1,'nctl::List::insert()'],['../classnctl_1_1_hash_set_list.html#acee499fca7e917f993794191934ca618',1,'nctl::HashSetList::insert(K &&key)'],['../classnctl_1_1_hash_set_list.html#a76416c7105d7ea02f2770c6594c81287',1,'nctl::HashSetList::insert(const K &key)'],['../classnctl_1_1_hash_set.html#a2179976b3d0749ababcd7d43d6fc813a',1,'nctl::HashSet::insert(K &&key)'],['../classnctl_1_1_hash_set.html#a9ebb766a2bd2aaa46125074e9f426a03',1,'nctl::HashSet::insert(const K &key)'],['../classnctl_1_1_hash_map_list.html#ac71eada81faa2439fe395aa08a146972',1,'nctl::HashMapList::insert(const K &key, T &&value)'],['../classnctl_1_1_hash_map_list.html#a97c2d40bb51699fa8df7eb8c231fbbff',1,'nctl::HashMapList::insert(const K &key, const T &value)'],['../classnctl_1_1_hash_map.html#a4c857e978f592310ea10a861024267ee',1,'nctl::HashMap::insert()'],['../classnctl_1_1_array.html#a6674998ae5498e46727652d008cafaa6',1,'nctl::Array::insert(Iterator position, Iterator first, Iterator last)'],['../classnctl_1_1_array.html#ac776bcded4b9c32961de10a3de6c9439',1,'nctl::Array::insert(Iterator position, const T &value)']]], + ['insertafter_482',['insertAfter',['../classnctl_1_1_list.html#aeeac6c30e57d8917c7cbfd881757a387',1,'nctl::List::insertAfter(const Iterator position, T &&element)'],['../classnctl_1_1_list.html#acc1c1597173fc4260297f8e0c863c366',1,'nctl::List::insertAfter(const Iterator position, const T &element)']]], + ['insertat_483',['insertAt',['../classnctl_1_1_static_array.html#a229740398fbff5db154d865f2965359c',1,'nctl::StaticArray::insertAt(unsigned int index, T &&element)'],['../classnctl_1_1_static_array.html#a1f323c0ebd8ac4189007b66aa7bd6a8e',1,'nctl::StaticArray::insertAt(unsigned int index, const T &element)'],['../classnctl_1_1_array.html#a8aa09ee105f291f5d9bb1f69cda7011a',1,'nctl::Array::insertAt(unsigned int index, T &&element)'],['../classnctl_1_1_array.html#a263995f83804b984984f7c9d6f8d7ad0',1,'nctl::Array::insertAt(unsigned int index, const T &element)']]], + ['insertbefore_484',['insertBefore',['../classnctl_1_1_list.html#a01e74204c98a3ea31109cc9bedf419b1',1,'nctl::List::insertBefore(const Iterator position, T &&element)'],['../classnctl_1_1_list.html#a7a59c96a5a607c98ac868fa8dd76d056',1,'nctl::List::insertBefore(const Iterator position, const T &element)']]], + ['insertrange_485',['insertRange',['../classnctl_1_1_static_array.html#a9f2ee3af76517937f9d7486be43ee9a4',1,'nctl::StaticArray::insertRange()'],['../classnctl_1_1_array.html#aae5e239a8cc59a4036ceaa4bd212d629',1,'nctl::Array::insertRange()']]], + ['int16frombe_486',['int16FromBE',['../classncine_1_1_i_file.html#aaedc3d964be1c2b5d75a95625d848c67',1,'ncine::IFile']]], + ['int16fromle_487',['int16FromLE',['../classncine_1_1_i_file.html#a1c99a4aa18154d0246414c4b14006e5d',1,'ncine::IFile']]], + ['int32frombe_488',['int32FromBE',['../classncine_1_1_i_file.html#aaa1b206a4c67a931899b01a6835a47c8',1,'ncine::IFile']]], + ['int32fromle_489',['int32FromLE',['../classncine_1_1_i_file.html#a63ff01ded0befcc32ca0fb442fa76ae5',1,'ncine::IFile']]], + ['int64frombe_490',['int64FromBE',['../classncine_1_1_i_file.html#a0e8cd38350999d1020d79a102ba21251',1,'ncine::IFile']]], + ['int64fromle_491',['int64FromLE',['../classncine_1_1_i_file.html#aa4567ddc468cf099bda2ccc4c54f1a77',1,'ncine::IFile']]], + ['integer_492',['integer',['../classncine_1_1_random.html#a7a433912c16acd72f4378fd114335b6e',1,'ncine::Random::integer()'],['../classncine_1_1_random.html#ae56856206e34a2dda9e794f85ca75cd5',1,'ncine::Random::integer(uint32_t min, uint32_t max)']]], + ['internaldatapath_493',['internalDataPath',['../classncine_1_1_android_application.html#a9eac28e5265e833b7873b614eb225873',1,'ncine::AndroidApplication']]], + ['intersect_494',['intersect',['../classncine_1_1_rect.html#ac530cf5b31c443fb4002f384e1ac1c3a',1,'ncine::Rect']]], + ['interval_495',['interval',['../classncine_1_1_application.html#a78f5fbcba85e930eec9afca0d46c3f12',1,'ncine::Application::interval()'],['../classncine_1_1_timer.html#a72f2bf8bb51f19d65643b559f33adc63',1,'ncine::Timer::interval()']]], + ['invalid_496',['invalid',['../structnctl_1_1_make_unique_return_3_01_t_0fsize_0e_00_01_deleter_01_4_1_1invalid.html',1,'nctl::MakeUniqueReturn< T[size], Deleter >']]], + ['invertsize_497',['invertSize',['../classncine_1_1_rect.html#aa08890e595fa34170fcc018d5a002680',1,'ncine::Rect']]], + ['isalive_498',['isAlive',['../classncine_1_1_particle.html#a0efc5c4abcc11fa485185dd46e475a7e',1,'ncine::Particle']]], + ['isbinarycacheenabled_499',['isBinaryCacheEnabled',['../classncine_1_1_shader.html#ac330bab35f2f081310f4f0af506d3a86',1,'ncine::Shader']]], + ['isblendingenabled_500',['isBlendingEnabled',['../classncine_1_1_drawable_node.html#ac76cec1cd4129170351f73ab04f35be3',1,'ncine::DrawableNode']]], + ['isbuttonpressed_501',['isButtonPressed',['../classncine_1_1_joy_mapped_state.html#a23396b43671f950ff3efa58adad8d62c',1,'ncine::JoyMappedState::isButtonPressed()'],['../classncine_1_1_joystick_state.html#a6abdbd8c067a1a39a9ee281dc68534d1',1,'ncine::JoystickState::isButtonPressed()']]], + ['ischromakeyenabled_502',['isChromaKeyEnabled',['../classncine_1_1_texture.html#abfd62f8f3f97c7ae3fb5aac61bfb7155',1,'ncine::Texture']]], + ['isclass_503',['isClass',['../structnctl_1_1is_class.html',1,'nctl']]], + ['isclass_3c_20t_2c_20typename_20detail_3a_3avoidtype_3c_20int_20t_3a_3a_2a_20_3e_3a_3atype_20_3e_504',['isClass< T, typename detail::voidType< int T::* >::type >',['../structnctl_1_1is_class_3_01_t_00_01typename_01detail_1_1void_type_3_01int_01_t_1_1_5_01_4_1_1type_01_4.html',1,'nctl']]], + ['iscompressed_505',['isCompressed',['../classncine_1_1_texture.html#aabcb28c01fce30c55778b14ca6c538da',1,'ncine::Texture']]], + ['isdestructible_506',['isDestructible',['../structnctl_1_1is_destructible.html',1,'nctl']]], + ['isdestructible_3c_20t_2c_20decltype_28declval_3c_20t_20_26_20_3e_28_29_2e_7et_28_29_29_3e_507',['isDestructible< T, decltype(declVal< T & >().~T())>',['../structnctl_1_1is_destructible_3_01_t_00_01decltype_07decl_val_3_01_t_01_6_01_4_07_08_8~_t_07_08_08_4.html',1,'nctl']]], + ['isdirectory_508',['isDirectory',['../classncine_1_1_file_system.html#a466a8508223bbcbbd6701a5250e6c2e6',1,'ncine::FileSystem']]], + ['isdoublebuffered_509',['isDoubleBuffered',['../classncine_1_1_display_mode.html#a0c66af1e370b9b9af2f6a983f19d5af7',1,'ncine::DisplayMode']]], + ['isdrawenabled_510',['isDrawEnabled',['../classncine_1_1_scene_node.html#aa4ca5eed4f307212d7096a07930de747',1,'ncine::SceneNode']]], + ['isempty_511',['isEmpty',['../classnctl_1_1_array.html#ac7ce4aea5c02679411fcd388f04903e0',1,'nctl::Array::isEmpty()'],['../classncine_1_1_null_indexer.html#a08aaa9597d007800a9f675c5b333c0ce',1,'ncine::NullIndexer::isEmpty()'],['../classncine_1_1_i_indexer.html#ac217cd733bab6c69edd172a525d3547e',1,'ncine::IIndexer::isEmpty()'],['../classnctl_1_1_hash_map.html#a806df70a5aae01387ff093b28ea3a5a4',1,'nctl::HashMap::isEmpty()'],['../classnctl_1_1_hash_map_list.html#a79fac86af1e887669abbfc3eb2eff478',1,'nctl::HashMapList::isEmpty()'],['../classnctl_1_1_hash_set_list.html#a8ab3da9f7b6c7f2290aea19b9bf94ecf',1,'nctl::HashSetList::isEmpty()'],['../classnctl_1_1_hash_set.html#a0b41cfb9c0d56939ffa3158c027db7ab',1,'nctl::HashSet::isEmpty()'],['../classnctl_1_1_list.html#aec6c9db80326bcfe7dd1a7e80765cabd',1,'nctl::List::isEmpty()'],['../classnctl_1_1_string.html#aa18c6f01f4011fb0ba75a02629e40b9d',1,'nctl::String::isEmpty()'],['../classnctl_1_1_static_string.html#a64a22ec794c51f19ee62c39a4fe77f08',1,'nctl::StaticString::isEmpty()'],['../classnctl_1_1_static_hash_set.html#a061cce5b9b85e70df5c575f54ae56c46',1,'nctl::StaticHashSet::isEmpty()'],['../classnctl_1_1_static_hash_map.html#a60f66566aea45d9950cb8dbf8852dcf2',1,'nctl::StaticHashMap::isEmpty()'],['../classnctl_1_1_static_array.html#a52fee637dc63a6d34a1004b056069f8f',1,'nctl::StaticArray::isEmpty()'],['../classnctl_1_1_sparse_set.html#ae229e1fe0c9265812ef491af4b664445',1,'nctl::SparseSet::isEmpty()'],['../structnctl_1_1is_empty.html',1,'nctl::isEmpty< T >']]], + ['isenabled_512',['isEnabled',['../classncine_1_1_scene_node.html#a0abbad7f091f4284052f591377e9500b',1,'ncine::SceneNode::isEnabled()'],['../classncine_1_1_particle_affector.html#a678df7b8ecc396b714bdaa8574633dec',1,'ncine::ParticleAffector::isEnabled()']]], + ['isequalto_513',['IsEqualTo',['../classnctl_1_1_is_equal_to.html',1,'nctl']]], + ['isexecutable_514',['isExecutable',['../classncine_1_1_file_system.html#a5e59a6fadf8aa8b9dfdd312d6f6b1757',1,'ncine::FileSystem']]], + ['isfile_515',['isFile',['../classncine_1_1_file_system.html#a710556e619af80b76953989b891ba5b2',1,'ncine::FileSystem']]], + ['isflippedx_516',['isFlippedX',['../classncine_1_1_base_sprite.html#ad039d3e64b3776f837fb5d9c54ae7ed0',1,'ncine::BaseSprite']]], + ['isflippedy_517',['isFlippedY',['../classncine_1_1_base_sprite.html#a30829951e59a746e68c2fcf51e3420e2',1,'ncine::BaseSprite']]], + ['isfullscreen_518',['isFullScreen',['../classncine_1_1_i_gfx_device.html#a113d366d601599227a06325e60cb8c50',1,'ncine::IGfxDevice']]], + ['isfullscreen_5f_519',['isFullScreen_',['../classncine_1_1_i_gfx_device.html#ad78a87c759157ad51e5c4b675cd1b0e5',1,'ncine::IGfxDevice']]], + ['isgreaterthan_520',['IsGreaterThan',['../classnctl_1_1_is_greater_than.html',1,'nctl']]], + ['ishidden_521',['isHidden',['../classncine_1_1_file_system.html#a06883a34b9a130b27d1ccd15be165c28',1,'ncine::FileSystem']]], + ['isinitialized_522',['isInitialized',['../classncine_1_1_android_application.html#af27f7759f658056c6c092236f2a59eee',1,'ncine::AndroidApplication']]], + ['isintegral_523',['isIntegral',['../structnctl_1_1is_integral.html',1,'nctl']]], + ['isintegral_3c_20bool_20_3e_524',['isIntegral< bool >',['../structnctl_1_1is_integral_3_01bool_01_4.html',1,'nctl']]], + ['isintegral_3c_20char_20_3e_525',['isIntegral< char >',['../structnctl_1_1is_integral_3_01char_01_4.html',1,'nctl']]], + ['isintegral_3c_20int_20_3e_526',['isIntegral< int >',['../structnctl_1_1is_integral_3_01int_01_4.html',1,'nctl']]], + ['isintegral_3c_20long_20_3e_527',['isIntegral< long >',['../structnctl_1_1is_integral_3_01long_01_4.html',1,'nctl']]], + ['isintegral_3c_20long_20long_20_3e_528',['isIntegral< long long >',['../structnctl_1_1is_integral_3_01long_01long_01_4.html',1,'nctl']]], + ['isintegral_3c_20short_20int_20_3e_529',['isIntegral< short int >',['../structnctl_1_1is_integral_3_01short_01int_01_4.html',1,'nctl']]], + ['isintegral_3c_20unsigned_20char_20_3e_530',['isIntegral< unsigned char >',['../structnctl_1_1is_integral_3_01unsigned_01char_01_4.html',1,'nctl']]], + ['isintegral_3c_20unsigned_20int_20_3e_531',['isIntegral< unsigned int >',['../structnctl_1_1is_integral_3_01unsigned_01int_01_4.html',1,'nctl']]], + ['isintegral_3c_20unsigned_20long_20_3e_532',['isIntegral< unsigned long >',['../structnctl_1_1is_integral_3_01unsigned_01long_01_4.html',1,'nctl']]], + ['isintegral_3c_20unsigned_20long_20long_20_3e_533',['isIntegral< unsigned long long >',['../structnctl_1_1is_integral_3_01unsigned_01long_01long_01_4.html',1,'nctl']]], + ['isintegral_3c_20unsigned_20short_20int_20_3e_534',['isIntegral< unsigned short int >',['../structnctl_1_1is_integral_3_01unsigned_01short_01int_01_4.html',1,'nctl']]], + ['isjoymapped_535',['isJoyMapped',['../classncine_1_1_i_input_manager.html#a4d1019a4cee6a0e610950ab5fa0330a5',1,'ncine::IInputManager']]], + ['isjoypresent_536',['isJoyPresent',['../classncine_1_1_i_input_manager.html#af815009d6471802191c4ad70f36e8644',1,'ncine::IInputManager']]], + ['iskeydown_537',['isKeyDown',['../classncine_1_1_keyboard_state.html#a3eda05c6cf71f78a33713d1248fe4abd',1,'ncine::KeyboardState']]], + ['islessthan_538',['IsLessThan',['../classnctl_1_1_is_less_than.html',1,'nctl']]], + ['islinked_539',['isLinked',['../classncine_1_1_shader.html#a914d91fe3eb59f930c0b0b7cef5e19cc',1,'ncine::Shader']]], + ['isloading_540',['isLoading',['../classncine_1_1_emscripten_local_file.html#ae47727113518618e3273b3d7034ce9da',1,'ncine::EmscriptenLocalFile']]], + ['islooping_541',['isLooping',['../classncine_1_1_i_audio_player.html#aa6a1d78eb7ec29752b4de66362ab8ae0',1,'ncine::IAudioPlayer']]], + ['islooping_5f_542',['isLooping_',['../classncine_1_1_i_audio_player.html#a6328d40d8fb2dc86a044c30f3965758e',1,'ncine::IAudioPlayer']]], + ['islvaluereference_543',['isLValueReference',['../structnctl_1_1is_l_value_reference.html',1,'nctl']]], + ['islvaluereference_3c_20t_20_26_20_3e_544',['isLValueReference< T & >',['../structnctl_1_1is_l_value_reference_3_01_t_01_6_01_4.html',1,'nctl']]], + ['isnotequalto_545',['IsNotEqualTo',['../classnctl_1_1_is_not_equal_to.html',1,'nctl']]], + ['isnotgreaterthan_546',['IsNotGreaterThan',['../classnctl_1_1_is_not_greater_than.html',1,'nctl']]], + ['isnotlessthan_547',['IsNotLessThan',['../classnctl_1_1_is_not_less_than.html',1,'nctl']]], + ['isopened_548',['isOpened',['../classncine_1_1_asset_file.html#a8d3ac8cf3dfb2fb683ec1f44e87d05b2',1,'ncine::AssetFile::isOpened()'],['../classncine_1_1_i_file.html#a4cab34176a3cc0041c9aa231ac5011a3',1,'ncine::IFile::isOpened()']]], + ['isparticlesupdateenabled_549',['isParticlesUpdateEnabled',['../classncine_1_1_particle_system.html#a4c5f2d57c19ff3d2450ff3879bfd964e',1,'ncine::ParticleSystem']]], + ['ispaused_550',['isPaused',['../classncine_1_1_animated_sprite.html#a9bb0dea5af30dc294f95488cfc44e240',1,'ncine::AnimatedSprite::isPaused()'],['../classncine_1_1_i_audio_player.html#a24ca2d1e00b8058a2a89f45096a36ff1',1,'ncine::IAudioPlayer::isPaused()'],['../classncine_1_1_rect_animation.html#a53e8c2d5035bd21f2acaaf7eff0ed25f',1,'ncine::RectAnimation::isPaused()']]], + ['isplaying_551',['isPlaying',['../classncine_1_1_i_audio_player.html#aa72d47a58b02657f4039714c0ba008e1',1,'ncine::IAudioPlayer']]], + ['isreadable_552',['isReadable',['../classncine_1_1_file_system.html#a152fe78adfba2b4909cd273c4c39a85e',1,'ncine::FileSystem']]], + ['isreadablefile_553',['isReadableFile',['../classncine_1_1_file_system.html#a7b264782d198c51512c4c0a55da6f9aa',1,'ncine::FileSystem']]], + ['isresizable_554',['isResizable',['../classncine_1_1_i_gfx_device.html#a12af58def1e90716c48dd03f441c8648',1,'ncine::IGfxDevice']]], + ['isresizable_5f_555',['isResizable_',['../classncine_1_1_i_gfx_device.html#a379a0d8460a3dc17ab60f3eb4a19cdc0',1,'ncine::IGfxDevice']]], + ['isrunning_556',['isRunning',['../classncine_1_1_timer.html#a892451fc2e56e907db2dbd72e30527b8',1,'ncine::Timer']]], + ['issourcelocked_557',['isSourceLocked',['../classncine_1_1_i_audio_player.html#aa64e36b442c37dd07145338c24674a30',1,'ncine::IAudioPlayer']]], + ['isstopped_558',['isStopped',['../classncine_1_1_i_audio_player.html#a2536fa21b29f60f9edf099aa32d9c7f9',1,'ncine::IAudioPlayer']]], + ['issuspended_559',['isSuspended',['../classncine_1_1_application.html#a858a81aad8b9722a3954b368f63b2793',1,'ncine::Application']]], + ['istriviallyconstructible_560',['isTriviallyConstructible',['../structnctl_1_1is_trivially_constructible.html',1,'nctl']]], + ['istriviallycopyable_561',['isTriviallyCopyable',['../structnctl_1_1is_trivially_copyable.html',1,'nctl']]], + ['istriviallydestructible_562',['isTriviallyDestructible',['../structnctl_1_1is_trivially_destructible.html',1,'nctl']]], + ['isupdateenabled_563',['isUpdateEnabled',['../classncine_1_1_scene_node.html#a2cfeef2846c06165c3cae5861b7f05ca',1,'ncine::SceneNode']]], + ['iswritable_564',['isWritable',['../classncine_1_1_file_system.html#a64b937fdff327db9cbd04a8117f7bff4',1,'ncine::FileSystem']]], + ['iswritablefile_565',['isWritableFile',['../classncine_1_1_file_system.html#a835196f06b2fd86f0fff74db703ff1e3',1,'ncine::FileSystem']]], + ['iterator_566',['Iterator',['../classnctl_1_1_array.html#a977f8da005a720f8c406bec6aeaf88cc',1,'nctl::Array::Iterator()'],['../classnctl_1_1_hash_map.html#a42458e5026b13b08396c7775325bcab3',1,'nctl::HashMap::Iterator()'],['../classnctl_1_1_hash_map_list.html#a57c438c32b948edd718607b6eb0bee36',1,'nctl::HashMapList::Iterator()'],['../classnctl_1_1_hash_set.html#a9e3cbdc50ca964f17481357a372d05d0',1,'nctl::HashSet::Iterator()'],['../classnctl_1_1_hash_set_list.html#aaa82e2a127f4375694c692f82663ed3f',1,'nctl::HashSetList::Iterator()'],['../classnctl_1_1_list.html#a03439fb2b3456a0fa9d304604e585b94',1,'nctl::List::Iterator()'],['../classnctl_1_1_static_array.html#a2965b439c63d7f73ff395cae82f912a0',1,'nctl::StaticArray::Iterator()'],['../classnctl_1_1_static_hash_map.html#ad610cabf832889bd7c67d5682e6ad3b9',1,'nctl::StaticHashMap::Iterator()'],['../classnctl_1_1_static_hash_set.html#a140c36720c5e7beac1f7348e70025af5',1,'nctl::StaticHashSet::Iterator()'],['../classnctl_1_1_static_string.html#a0bff23efe3579e4a48ca438a275c760d',1,'nctl::StaticString::Iterator()'],['../classnctl_1_1_string.html#a701145a53fbdf14cbbde6a852208a942',1,'nctl::String::Iterator()'],['../classnctl_1_1_sparse_set.html#a3515a9ee7502adf2782c294c6108125b',1,'nctl::SparseSet::Iterator()']]], + ['iteratorcategory_567',['IteratorCategory',['../structnctl_1_1_iterator_traits_3_01_string_iterator_3_01true_01_4_01_4.html#ad97775b1b207096dfc9e2399c38892c9',1,'nctl::IteratorTraits< StringIterator< true > >::IteratorCategory()'],['../structnctl_1_1_iterator_traits_3_01_string_iterator_3_01false_01_4_01_4.html#a194fce061f9be3a491972b8a68b24650',1,'nctl::IteratorTraits< StringIterator< false > >::IteratorCategory()'],['../structnctl_1_1_iterator_traits_3_01_static_hash_set_iterator_3_01_k_00_01_hash_func_00_01_capacity_01_4_01_4.html#a9cdf5037d403c005ce8c4c80e294dacb',1,'nctl::IteratorTraits< StaticHashSetIterator< K, HashFunc, Capacity > >::IteratorCategory()'],['../structnctl_1_1_iterator_traits_3_01_static_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01true_01_4_01_4.html#a08451fcf332e29a71ad751c8025eed40',1,'nctl::IteratorTraits< StaticHashMapIterator< K, T, HashFunc, Capacity, true > >::IteratorCategory()'],['../structnctl_1_1_iterator_traits_3_01_static_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01false_01_4_01_4.html#a7fadf8c799867e7fc1bfc0a52b87d649',1,'nctl::IteratorTraits< StaticHashMapIterator< K, T, HashFunc, Capacity, false > >::IteratorCategory()'],['../structnctl_1_1_iterator_traits_3_01_sparse_set_iterator_3_01_t_01_4_01_4.html#a39519c708a81a720249d6aced4425b74',1,'nctl::IteratorTraits< SparseSetIterator< T > >::IteratorCategory()'],['../structnctl_1_1_iterator_traits_3_01_reverse_iterator_3_01_iterator_01_4_01_4.html#ae68ed9a25cd00ac01c13165c69bf7be9',1,'nctl::IteratorTraits< ReverseIterator< Iterator > >::IteratorCategory()'],['../structnctl_1_1_iterator_traits_3_01_list_iterator_3_01_t_00_01true_01_4_01_4.html#ab182241cd9fd51073ffc43b5f5b1bf51',1,'nctl::IteratorTraits< ListIterator< T, true > >::IteratorCategory()'],['../structnctl_1_1_iterator_traits_3_01_list_iterator_3_01_t_00_01false_01_4_01_4.html#a158ef5d64904fa14bd265ad4483859cb',1,'nctl::IteratorTraits< ListIterator< T, false > >::IteratorCategory()'],['../structnctl_1_1_iterator_traits_3_01_hash_set_list_iterator_3_01_k_00_01_hash_func_01_4_01_4.html#a106031b92d4fb2e041721f5ff96e9fd3',1,'nctl::IteratorTraits< HashSetListIterator< K, HashFunc > >::IteratorCategory()'],['../structnctl_1_1_iterator_traits_3_01_hash_set_iterator_3_01_k_00_01_hash_func_01_4_01_4.html#a5ad6d9721894290c253ea2c4704ea997',1,'nctl::IteratorTraits< HashSetIterator< K, HashFunc > >::IteratorCategory()'],['../structnctl_1_1_iterator_traits_3_01_hash_map_list_iterator_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4_01_4.html#a182cd08588f6e56404732d24b355485c',1,'nctl::IteratorTraits< HashMapListIterator< K, T, HashFunc, true > >::IteratorCategory()'],['../structnctl_1_1_iterator_traits_3_01_hash_map_list_iterator_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4_01_4.html#a750ef2550554cfc2b0177bb96cdc653c',1,'nctl::IteratorTraits< HashMapListIterator< K, T, HashFunc, false > >::IteratorCategory()'],['../structnctl_1_1_iterator_traits_3_01_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4_01_4.html#aceb2449623728a09b54d92168490c9d5',1,'nctl::IteratorTraits< HashMapIterator< K, T, HashFunc, true > >::IteratorCategory()'],['../structnctl_1_1_iterator_traits_3_01_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4_01_4.html#a3c33d26a029613d5acaf3a649482ab3e',1,'nctl::IteratorTraits< HashMapIterator< K, T, HashFunc, false > >::IteratorCategory()'],['../structnctl_1_1_iterator_traits_3_01_array_iterator_3_01_t_00_01true_01_4_01_4.html#af6f799457e119e2cc457e0188ac35ae7',1,'nctl::IteratorTraits< ArrayIterator< T, true > >::IteratorCategory()'],['../structnctl_1_1_iterator_traits_3_01_array_iterator_3_01_t_00_01false_01_4_01_4.html#ade735a5985113bb23ce58382ba59c75b',1,'nctl::IteratorTraits< ArrayIterator< T, false > >::IteratorCategory()']]], + ['iteratortraits_568',['IteratorTraits',['../structnctl_1_1_iterator_traits.html',1,'nctl']]], + ['iteratortraits_3c_20arrayiterator_20_3e_569',['IteratorTraits< ArrayIterator >',['../structnctl_1_1_iterator_traits.html',1,'nctl']]], + ['iteratortraits_3c_20arrayiterator_3c_20t_2c_20false_20_3e_20_3e_570',['IteratorTraits< ArrayIterator< T, false > >',['../structnctl_1_1_iterator_traits_3_01_array_iterator_3_01_t_00_01false_01_4_01_4.html',1,'nctl']]], + ['iteratortraits_3c_20arrayiterator_3c_20t_2c_20true_20_3e_20_3e_571',['IteratorTraits< ArrayIterator< T, true > >',['../structnctl_1_1_iterator_traits_3_01_array_iterator_3_01_t_00_01true_01_4_01_4.html',1,'nctl']]], + ['iteratortraits_3c_20hashmapiterator_3c_20k_2c_20t_2c_20hashfunc_2c_20false_20_3e_20_3e_572',['IteratorTraits< HashMapIterator< K, T, HashFunc, false > >',['../structnctl_1_1_iterator_traits_3_01_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4_01_4.html',1,'nctl']]], + ['iteratortraits_3c_20hashmapiterator_3c_20k_2c_20t_2c_20hashfunc_2c_20true_20_3e_20_3e_573',['IteratorTraits< HashMapIterator< K, T, HashFunc, true > >',['../structnctl_1_1_iterator_traits_3_01_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4_01_4.html',1,'nctl']]], + ['iteratortraits_3c_20hashmaplistiterator_3c_20k_2c_20t_2c_20hashfunc_2c_20false_20_3e_20_3e_574',['IteratorTraits< HashMapListIterator< K, T, HashFunc, false > >',['../structnctl_1_1_iterator_traits_3_01_hash_map_list_iterator_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4_01_4.html',1,'nctl']]], + ['iteratortraits_3c_20hashmaplistiterator_3c_20k_2c_20t_2c_20hashfunc_2c_20true_20_3e_20_3e_575',['IteratorTraits< HashMapListIterator< K, T, HashFunc, true > >',['../structnctl_1_1_iterator_traits_3_01_hash_map_list_iterator_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4_01_4.html',1,'nctl']]], + ['iteratortraits_3c_20hashsetiterator_3c_20k_2c_20hashfunc_20_3e_20_3e_576',['IteratorTraits< HashSetIterator< K, HashFunc > >',['../structnctl_1_1_iterator_traits_3_01_hash_set_iterator_3_01_k_00_01_hash_func_01_4_01_4.html',1,'nctl']]], + ['iteratortraits_3c_20hashsetlistiterator_3c_20k_2c_20hashfunc_20_3e_20_3e_577',['IteratorTraits< HashSetListIterator< K, HashFunc > >',['../structnctl_1_1_iterator_traits_3_01_hash_set_list_iterator_3_01_k_00_01_hash_func_01_4_01_4.html',1,'nctl']]], + ['iteratortraits_3c_20listiterator_3c_20t_2c_20false_20_3e_20_3e_578',['IteratorTraits< ListIterator< T, false > >',['../structnctl_1_1_iterator_traits_3_01_list_iterator_3_01_t_00_01false_01_4_01_4.html',1,'nctl']]], + ['iteratortraits_3c_20listiterator_3c_20t_2c_20true_20_3e_20_3e_579',['IteratorTraits< ListIterator< T, true > >',['../structnctl_1_1_iterator_traits_3_01_list_iterator_3_01_t_00_01true_01_4_01_4.html',1,'nctl']]], + ['iteratortraits_3c_20reverseiterator_3c_20iterator_20_3e_20_3e_580',['IteratorTraits< ReverseIterator< Iterator > >',['../structnctl_1_1_iterator_traits_3_01_reverse_iterator_3_01_iterator_01_4_01_4.html',1,'nctl']]], + ['iteratortraits_3c_20sparsesetiterator_3c_20t_20_3e_20_3e_581',['IteratorTraits< SparseSetIterator< T > >',['../structnctl_1_1_iterator_traits_3_01_sparse_set_iterator_3_01_t_01_4_01_4.html',1,'nctl']]], + ['iteratortraits_3c_20statichashmapiterator_3c_20k_2c_20t_2c_20hashfunc_2c_20capacity_2c_20false_20_3e_20_3e_582',['IteratorTraits< StaticHashMapIterator< K, T, HashFunc, Capacity, false > >',['../structnctl_1_1_iterator_traits_3_01_static_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01false_01_4_01_4.html',1,'nctl']]], + ['iteratortraits_3c_20statichashmapiterator_3c_20k_2c_20t_2c_20hashfunc_2c_20capacity_2c_20true_20_3e_20_3e_583',['IteratorTraits< StaticHashMapIterator< K, T, HashFunc, Capacity, true > >',['../structnctl_1_1_iterator_traits_3_01_static_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01true_01_4_01_4.html',1,'nctl']]], + ['iteratortraits_3c_20statichashsetiterator_3c_20k_2c_20hashfunc_2c_20capacity_20_3e_20_3e_584',['IteratorTraits< StaticHashSetIterator< K, HashFunc, Capacity > >',['../structnctl_1_1_iterator_traits_3_01_static_hash_set_iterator_3_01_k_00_01_hash_func_00_01_capacity_01_4_01_4.html',1,'nctl']]], + ['iteratortraits_3c_20stringiterator_20_3e_585',['IteratorTraits< StringIterator >',['../structnctl_1_1_iterator_traits.html',1,'nctl']]], + ['iteratortraits_3c_20stringiterator_3c_20false_20_3e_20_3e_586',['IteratorTraits< StringIterator< false > >',['../structnctl_1_1_iterator_traits_3_01_string_iterator_3_01false_01_4_01_4.html',1,'nctl']]], + ['iteratortraits_3c_20stringiterator_3c_20true_20_3e_20_3e_587',['IteratorTraits< StringIterator< true > >',['../structnctl_1_1_iterator_traits_3_01_string_iterator_3_01true_01_4_01_4.html',1,'nctl']]], + ['itexturesaver_588',['ITextureSaver',['../classncine_1_1_i_texture_saver.html',1,'ncine']]], + ['ithreadcommand_589',['IThreadCommand',['../classncine_1_1_i_thread_command.html',1,'ncine']]], + ['ithreadpool_590',['IThreadPool',['../classncine_1_1_i_thread_pool.html',1,'ncine']]] +]; diff --git a/master/search/all_9.html b/master/search/all_9.html new file mode 100644 index 0000000000..1e263c134c --- /dev/null +++ b/master/search/all_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/all_9.js b/master/search/all_9.js new file mode 100644 index 0000000000..46e6eff9cf --- /dev/null +++ b/master/search/all_9.js @@ -0,0 +1,23 @@ +var searchData= +[ + ['jenkinshashfunc_591',['JenkinsHashFunc',['../classnctl_1_1_jenkins_hash_func.html',1,'nctl']]], + ['jenkinshashfunc_3c_20const_20char_20_2a_20_3e_592',['JenkinsHashFunc< const char * >',['../classnctl_1_1_jenkins_hash_func_3_01const_01char_01_5_01_4.html',1,'nctl']]], + ['jenkinshashfunc_3c_20string_20_3e_593',['JenkinsHashFunc< String >',['../classnctl_1_1_jenkins_hash_func_3_01_string_01_4.html',1,'nctl']]], + ['joinpath_594',['joinPath',['../classncine_1_1_file_system.html#ab32d9a3b3827adc51e2d685841f327b2',1,'ncine::FileSystem']]], + ['joyaxisevent_595',['JoyAxisEvent',['../classncine_1_1_joy_axis_event.html',1,'ncine']]], + ['joybuttonevent_596',['JoyButtonEvent',['../classncine_1_1_joy_button_event.html',1,'ncine']]], + ['joyconnectionevent_597',['JoyConnectionEvent',['../classncine_1_1_joy_connection_event.html',1,'ncine']]], + ['joyguid_598',['joyGuid',['../classncine_1_1_i_input_manager.html#a96b29264d20c8241e5957aa2b6a11cba',1,'ncine::IInputManager']]], + ['joyhatevent_599',['JoyHatEvent',['../classncine_1_1_joy_hat_event.html',1,'ncine']]], + ['joyid_600',['joyId',['../classncine_1_1_joy_button_event.html#ae2bc49a213332714a6329e62dd083cf6',1,'ncine::JoyButtonEvent::joyId()'],['../classncine_1_1_joy_hat_event.html#a8f908e2d8c1b4cb3f55737fa00af1446',1,'ncine::JoyHatEvent::joyId()'],['../classncine_1_1_joy_axis_event.html#a6bc5fbef47b1c385a7d702dcbc22ccaa',1,'ncine::JoyAxisEvent::joyId()'],['../classncine_1_1_joy_connection_event.html#a5ef3e0f99858021b0d26d27f083edbf4',1,'ncine::JoyConnectionEvent::joyId()'],['../classncine_1_1_joy_mapped_button_event.html#a558744f6deaea616e46637458d4b4a17',1,'ncine::JoyMappedButtonEvent::joyId()'],['../classncine_1_1_joy_mapped_axis_event.html#ac0ea9ae992569f48515e536fcff09cc5',1,'ncine::JoyMappedAxisEvent::joyId()']]], + ['joymappedaxisevent_601',['JoyMappedAxisEvent',['../classncine_1_1_joy_mapped_axis_event.html',1,'ncine']]], + ['joymappedbuttonevent_602',['JoyMappedButtonEvent',['../classncine_1_1_joy_mapped_button_event.html',1,'ncine']]], + ['joymappedstate_603',['joyMappedState',['../classncine_1_1_i_input_manager.html#af7a960ab809a00ccda2a32c15f6e79a9',1,'ncine::IInputManager']]], + ['joymappedstate_604',['JoyMappedState',['../classncine_1_1_joy_mapped_state.html',1,'ncine']]], + ['joyname_605',['joyName',['../classncine_1_1_i_input_manager.html#a3639e3e69d05fd4c730b91a5dcf72b99',1,'ncine::IInputManager']]], + ['joynumaxes_606',['joyNumAxes',['../classncine_1_1_i_input_manager.html#ab9a1685ce4c6324e2b0d860dd93e3de5',1,'ncine::IInputManager']]], + ['joynumbuttons_607',['joyNumButtons',['../classncine_1_1_i_input_manager.html#add8e9b1b1b9808984d39302bf71e5ae0',1,'ncine::IInputManager']]], + ['joynumhats_608',['joyNumHats',['../classncine_1_1_i_input_manager.html#a3e142e8fed57d833a6e51c14a570589e',1,'ncine::IInputManager']]], + ['joystickstate_609',['joystickState',['../classncine_1_1_i_input_manager.html#aab23fb7a9a5e1b4679fc676dc370d456',1,'ncine::IInputManager']]], + ['joystickstate_610',['JoystickState',['../classncine_1_1_joystick_state.html',1,'ncine']]] +]; diff --git a/master/search/all_a.html b/master/search/all_a.html new file mode 100644 index 0000000000..3a6cac108c --- /dev/null +++ b/master/search/all_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/all_a.js b/master/search/all_a.js new file mode 100644 index 0000000000..9c58fb3b36 --- /dev/null +++ b/master/search/all_a.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['key_611',['key',['../classnctl_1_1_hash_map_iterator.html#a68bfa634653dbf5787f5a4a803330cec',1,'nctl::HashMapIterator::key()'],['../classnctl_1_1_hash_map_list_iterator.html#a7d337f4b66ad9acafc7d4abc4d6e5bb8',1,'nctl::HashMapListIterator::key()'],['../classnctl_1_1_hash_set_iterator.html#ac9c67353ffb017716581b4bc9c72b843',1,'nctl::HashSetIterator::key()'],['../classnctl_1_1_hash_set_list_iterator.html#a749447c4c76e2ecded8c48e05a2d613c',1,'nctl::HashSetListIterator::key()'],['../classnctl_1_1_static_hash_map_iterator.html#a47edebb327722b2d3bb05081e7825162',1,'nctl::StaticHashMapIterator::key()'],['../classnctl_1_1_static_hash_set_iterator.html#ac431cfc3fe4c2ba2750400821d2ba303',1,'nctl::StaticHashSetIterator::key()']]], + ['keyboardevent_612',['KeyboardEvent',['../classncine_1_1_keyboard_event.html',1,'ncine']]], + ['keyboardstate_613',['keyboardState',['../classncine_1_1_i_input_manager.html#a8032712466e86636c83d0c9c0a6aabba',1,'ncine::IInputManager']]], + ['keyboardstate_614',['KeyboardState',['../classncine_1_1_keyboard_state.html',1,'ncine']]], + ['killparticles_615',['killParticles',['../classncine_1_1_particle_system.html#a55ac85c6021820e95bd9dd031e62beba',1,'ncine::ParticleSystem']]] +]; diff --git a/master/search/all_b.html b/master/search/all_b.html new file mode 100644 index 0000000000..130deb4ed9 --- /dev/null +++ b/master/search/all_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/all_b.js b/master/search/all_b.js new file mode 100644 index 0000000000..89addeee2f --- /dev/null +++ b/master/search/all_b.js @@ -0,0 +1,56 @@ +var searchData= +[ + ['lastaccesstime_616',['lastAccessTime',['../classncine_1_1_file_system.html#aec601291f187c183bf77f70386286628',1,'ncine::FileSystem']]], + ['lastframecleared_617',['lastFrameCleared',['../classncine_1_1_viewport.html#a685888393029454f2195651eac4a647e',1,'ncine::Viewport']]], + ['lastframecleared_5f_618',['lastFrameCleared_',['../classncine_1_1_viewport.html#ab2470a3cb1581a870d20cbb5f8dcad69',1,'ncine::Viewport']]], + ['lastframeduration_619',['lastFrameDuration',['../classncine_1_1_i_frame_timer.html#afadae338d63fb9e760a6de6ac0e4f09f',1,'ncine::IFrameTimer']]], + ['lastframerendered_620',['lastFrameRendered',['../classncine_1_1_drawable_node.html#a3490f723d0db0142981cd5eec81ab08b',1,'ncine::DrawableNode']]], + ['lastframerendered_5f_621',['lastFrameRendered_',['../classncine_1_1_drawable_node.html#a2cdcef96eb2e58289643269642d0289b',1,'ncine::DrawableNode']]], + ['lastframeupdated_622',['lastFrameUpdated',['../classncine_1_1_scene_node.html#a9bee02d74ef193819c26bcd10ad133d3',1,'ncine::SceneNode']]], + ['lastframeupdated_5f_623',['lastFrameUpdated_',['../classncine_1_1_scene_node.html#a411b2706416a0c65058daa4354eedc00',1,'ncine::SceneNode']]], + ['lastmodificationtime_624',['lastModificationTime',['../classncine_1_1_file_system.html#a5729408da2c57d7d565af956c8df2de1',1,'ncine::FileSystem']]], + ['layer_625',['layer',['../classncine_1_1_scene_node.html#ab879f89a482853a93c194d47d92f67e6',1,'ncine::SceneNode']]], + ['layer_5f_626',['layer_',['../classncine_1_1_scene_node.html#a8e3418fe0e0fe526e854ec7ebb59aad3',1,'ncine::SceneNode']]], + ['length_627',['length',['../classncine_1_1_asset_file.html#ade0de822f56800c9fe0c8979f72d63ef',1,'ncine::AssetFile::length()'],['../classnctl_1_1_static_string.html#a33918c34f282a4cf9e72e5cf891e52f8',1,'nctl::StaticString::length()'],['../classnctl_1_1_string.html#a8e48b62c55433de8d1d9dd4b1411f1c8',1,'nctl::String::length()']]], + ['life_5f_628',['life_',['../classncine_1_1_particle.html#a21274556f41d543bbefe4e2fe73a2b54',1,'ncine::Particle']]], + ['linearallocator_629',['LinearAllocator',['../classnctl_1_1_linear_allocator.html',1,'nctl']]], + ['lineheight_630',['lineHeight',['../classncine_1_1_font.html#a1a4ba512d90f6c4e1ecd0d9e62f00bee',1,'ncine::Font::lineHeight()'],['../classncine_1_1_text_node.html#a4f7edb887d25a20dacf6aa6d5e4586bc',1,'ncine::TextNode::lineHeight()']]], + ['list_631',['List',['../classnctl_1_1_list.html#ad465ed85633cd8b9dee09a698f42d2e2',1,'nctl::List::List(const List &other)'],['../classnctl_1_1_list.html#a4857bc216e9b8868fe61a41158014375',1,'nctl::List::List(List &&other)'],['../classnctl_1_1_list.html',1,'nctl::List< T >']]], + ['list_3c_20node_20_3e_632',['List< Node >',['../classnctl_1_1_list.html',1,'nctl']]], + ['listiterator_633',['ListIterator',['../classnctl_1_1_list_iterator.html#a4b521d4d5e2fe03600019d1150d17ea4',1,'nctl::ListIterator::ListIterator()'],['../classnctl_1_1_list_iterator.html',1,'nctl::ListIterator< T, IsConst >']]], + ['listiterator_3c_20t_2c_20true_20_3e_634',['ListIterator< T, true >',['../classnctl_1_1_list_iterator.html#aca439a0177ec7b9921fdc4f9d425761b',1,'nctl::ListIterator']]], + ['listnode_635',['ListNode',['../classnctl_1_1_list_node.html',1,'nctl']]], + ['load_636',['load',['../classncine_1_1_emscripten_local_file.html#a7e1c7022e4b9179b30eecdb1dd3e13bc',1,'ncine::EmscriptenLocalFile::load()'],['../classncine_1_1_emscripten_local_file.html#aac9ef3121584600d5e54657b9f533731',1,'ncine::EmscriptenLocalFile::load(const char *fileFilter)']]], + ['loadfactor_637',['loadFactor',['../classnctl_1_1_hash_map.html#ae652e68229ac9712f840677f52fcbe9c',1,'nctl::HashMap::loadFactor()'],['../classnctl_1_1_hash_map_list.html#a507d4702f3387a59a97b53a5c444b723',1,'nctl::HashMapList::loadFactor()'],['../classnctl_1_1_hash_set.html#a10e768f01c79929911dea2c0f8f017ef',1,'nctl::HashSet::loadFactor()'],['../classnctl_1_1_sparse_set.html#a5188ef4cb339042d9f883f1593e080b2',1,'nctl::SparseSet::loadFactor()'],['../classnctl_1_1_static_hash_map.html#a5e98f023f87611e0f1c6b7241990fc2a',1,'nctl::StaticHashMap::loadFactor()'],['../classnctl_1_1_static_hash_set.html#a749810d1e75634b88dacd671969e9746',1,'nctl::StaticHashSet::loadFactor()'],['../classnctl_1_1_hash_set_list.html#ac0daf550b6304aae5da259cd07e9c1a4',1,'nctl::HashSetList::loadFactor()']]], + ['loadfromfile_638',['loadFromFile',['../classncine_1_1_lua_state_manager.html#ac5c64ac657216e321c1d2660c912fb76',1,'ncine::LuaStateManager::loadFromFile(const char *filename)'],['../classncine_1_1_lua_state_manager.html#aa051bfadc13a3413e779d1cdde70ded8',1,'ncine::LuaStateManager::loadFromFile(const char *filename, const char *chunkName)'],['../classncine_1_1_lua_state_manager.html#a50ebc4140706af75ba8b1fbbd7a58d21',1,'ncine::LuaStateManager::loadFromFile(const char *filename, const char *chunkName, nctl::String *errorMsg)'],['../classncine_1_1_lua_state_manager.html#afda53f37e64f08214b1df50af4619917',1,'ncine::LuaStateManager::loadFromFile(const char *filename, const char *chunkName, nctl::String *errorMsg, int *status)']]], + ['loadfrommemory_639',['loadFromMemory',['../classncine_1_1_texture.html#a8934e86c2e6f3d6155b040eec61bd62c',1,'ncine::Texture::loadFromMemory()'],['../classncine_1_1_lua_state_manager.html#a0180da45f86f077322f66fe7f49a7fc2',1,'ncine::LuaStateManager::loadFromMemory(const char *bufferName, const char *bufferPtr, unsigned long int bufferSize)'],['../classncine_1_1_lua_state_manager.html#a2542405805b4a8a82c014a2c05200e55',1,'ncine::LuaStateManager::loadFromMemory(const char *bufferName, const char *bufferPtr, unsigned long int bufferSize, nctl::String *errorMsg)'],['../classncine_1_1_lua_state_manager.html#a2751753e5782f57c852f1b48699bc9a8',1,'ncine::LuaStateManager::loadFromMemory(const char *bufferName, const char *bufferPtr, unsigned long int bufferSize, nctl::String *errorMsg, int *status)']]], + ['loadfromsamples_640',['loadFromSamples',['../classncine_1_1_audio_buffer.html#a489a021009773f726f554dd0f0473720',1,'ncine::AudioBuffer']]], + ['loadfromtexels_641',['loadFromTexels',['../classncine_1_1_texture.html#abc08e4cc091e15753010f174f591376a',1,'ncine::Texture::loadFromTexels(const unsigned char *bufferPtr)'],['../classncine_1_1_texture.html#ab415b269ed15b376f38d7763faaf31fc',1,'ncine::Texture::loadFromTexels(const unsigned char *bufferPtr, unsigned int x, unsigned int y, unsigned int width, unsigned int height)'],['../classncine_1_1_texture.html#ab840e22a889e6fbc3ce7bba61511ab37',1,'ncine::Texture::loadFromTexels(const unsigned char *bufferPtr, Recti region)'],['../classncine_1_1_texture.html#a584bae16bc623c5d04a99222cf1223f1',1,'ncine::Texture::loadFromTexels(const unsigned char *bufferPtr, unsigned int level, unsigned int x, unsigned int y, unsigned int width, unsigned int height)'],['../classncine_1_1_texture.html#ae6b536a31273f431e854fb3d8832b5e7',1,'ncine::Texture::loadFromTexels(const unsigned char *bufferPtr, unsigned int level, Recti region)']]], + ['loadpreset_642',['loadPreset',['../structncine_1_1_audio_effect_properties_1_1_eax_reverb_properties.html#a7af97b2d1b007f660ca072c20a2b6e87',1,'ncine::AudioEffectProperties::EaxReverbProperties']]], + ['localmatrix_643',['localMatrix',['../classncine_1_1_scene_node.html#a7782bc01608769bb80b165adeff0b14c',1,'ncine::SceneNode']]], + ['localmatrix_5f_644',['localMatrix_',['../classncine_1_1_scene_node.html#a6780033879ba00a6276ac6ae6e5b8e8e',1,'ncine::SceneNode']]], + ['logfile_645',['logFile',['../classncine_1_1_app_configuration.html#a5db04a6449738f2aa82dc2115d1f86f0',1,'ncine::AppConfiguration']]], + ['logger_646',['logger',['../classncine_1_1_service_locator.html#a7ccf5b3811c30c464618a73607c7b714',1,'ncine::ServiceLocator']]], + ['loggingenabled_647',['loggingEnabled',['../classncine_1_1_i_frame_timer.html#a574fd6152b9a7866a2a02901c783898d',1,'ncine::IFrameTimer']]], + ['logginginterval_648',['loggingInterval',['../classncine_1_1_i_frame_timer.html#a0c0791eea2a944b7d73f3a024369d6a8',1,'ncine::IFrameTimer']]], + ['logicaldrives_649',['logicalDrives',['../classncine_1_1_file_system.html#a7b04d260d06f807d97d1fa1f405efaee',1,'ncine::FileSystem']]], + ['logicaldrivestrings_650',['logicalDriveStrings',['../classncine_1_1_file_system.html#aad1083a4ccebd75e638e0cde61210e1b',1,'ncine::FileSystem']]], + ['loglevel_651',['logLevel',['../classncine_1_1_i_frame_timer.html#aea0a8b92aaeca700cde48bbb58c23d2d',1,'ncine::IFrameTimer']]], + ['loglevel_652',['LogLevel',['../classncine_1_1_i_logger.html#affaac4a89a0679cb24f51be884c0dc44',1,'ncine::ILogger']]], + ['logonerrors_653',['logOnErrors',['../classncine_1_1_shader.html#a64a1c05f4ad6382aaf799ce9526db78b',1,'ncine::Shader']]], + ['logreport_654',['logReport',['../classncine_1_1_i_indexer.html#ab032ad9e82b181d6180b5d14f509b54d',1,'ncine::IIndexer::logReport()'],['../classncine_1_1_null_indexer.html#a9702af27861fa2f73a1731a77948daf2',1,'ncine::NullIndexer::logReport()']]], + ['logstring_655',['logString',['../classncine_1_1_i_logger.html#adf0af00c8adc4edc5085f4ab196264d1',1,'ncine::ILogger::logString()'],['../classncine_1_1_null_logger.html#a6befc973614d888714378a9507b25f3a',1,'ncine::NullLogger::logString()']]], + ['logstringcapacity_656',['logStringCapacity',['../classncine_1_1_i_logger.html#af26187169fc04cbb31b5e583ea04bd6e',1,'ncine::ILogger::logStringCapacity()'],['../classncine_1_1_null_logger.html#a201ffb67be11af63fed1a72a6cf9b7a1',1,'ncine::NullLogger::logStringCapacity()']]], + ['logstringlength_657',['logStringLength',['../classncine_1_1_i_logger.html#a2da411fa43fdbdeead6744711f61a946',1,'ncine::ILogger::logStringLength()'],['../classncine_1_1_null_logger.html#aea731eeb416278e4d5b6ca8b0425c8f0',1,'ncine::NullLogger::logStringLength()']]], + ['loopmode_658',['loopMode',['../classncine_1_1_rect_animation.html#ac1d8d6102a458afd2e1deea67f6a9e85',1,'ncine::RectAnimation']]], + ['loopmode_659',['LoopMode',['../classncine_1_1_rect_animation.html#a6c70ab38833425f047687f35e26ae53e',1,'ncine::RectAnimation']]], + ['luacolorutils_660',['LuaColorUtils',['../classncine_1_1_lua_color_utils.html',1,'ncine']]], + ['luaiappeventhandler_661',['LuaIAppEventHandler',['../classncine_1_1_lua_i_app_event_handler.html',1,'ncine']]], + ['luaiinputeventhandler_662',['LuaIInputEventHandler',['../classncine_1_1_lua_i_input_event_handler.html',1,'ncine']]], + ['luarectutils_663',['LuaRectUtils',['../classncine_1_1_lua_rect_utils.html',1,'ncine']]], + ['luastatemanager_664',['LuaStateManager',['../classncine_1_1_lua_state_manager.html',1,'ncine']]], + ['luauntrackeduserdata_665',['LuaUntrackedUserData',['../classncine_1_1_lua_untracked_user_data.html',1,'ncine']]], + ['luavector2utils_666',['LuaVector2Utils',['../classncine_1_1_lua_vector2_utils.html',1,'ncine']]], + ['luavector3utils_667',['LuaVector3Utils',['../classncine_1_1_lua_vector3_utils.html',1,'ncine']]], + ['luavector4utils_668',['LuaVector4Utils',['../classncine_1_1_lua_vector4_utils.html',1,'ncine']]] +]; diff --git a/master/search/all_c.html b/master/search/all_c.html new file mode 100644 index 0000000000..3dd5af06d5 --- /dev/null +++ b/master/search/all_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/all_c.js b/master/search/all_c.js new file mode 100644 index 0000000000..1ec60c10e6 --- /dev/null +++ b/master/search/all_c.js @@ -0,0 +1,73 @@ +var searchData= +[ + ['magfiltering_669',['magFiltering',['../classncine_1_1_texture.html#ac34a4712d26c313a4522999bb6fc3c58',1,'ncine::Texture']]], + ['makecurrent_670',['makeCurrent',['../classncine_1_1_qt5_widget.html#acd43bc94d3f87147e8da613cb002a42d',1,'ncine::Qt5Widget']]], + ['makeuniquereturn_671',['MakeUniqueReturn',['../structnctl_1_1_make_unique_return.html',1,'nctl']]], + ['makeuniquereturn_3c_20t_5b_5d_2c_20deleter_20_3e_672',['MakeUniqueReturn< T[], Deleter >',['../structnctl_1_1_make_unique_return_3_01_t_0f_0e_00_01_deleter_01_4.html',1,'nctl']]], + ['makeuniquereturn_3c_20t_5bsize_5d_2c_20deleter_20_3e_673',['MakeUniqueReturn< T[size], Deleter >',['../structnctl_1_1_make_unique_return_3_01_t_0fsize_0e_00_01_deleter_01_4.html',1,'nctl']]], + ['mallocallocator_674',['MallocAllocator',['../classnctl_1_1_malloc_allocator.html',1,'nctl']]], + ['matrix4x4_675',['Matrix4x4',['../classncine_1_1_matrix4x4.html',1,'ncine']]], + ['matrix4x4_3c_20float_20_3e_676',['Matrix4x4< float >',['../classncine_1_1_matrix4x4.html',1,'ncine']]], + ['max_677',['max',['../classncine_1_1_rect.html#a90e60efdceba4a9d8df03cb16aad7dff',1,'ncine::Rect']]], + ['maxautowahproperties_678',['maxAutoWahProperties',['../classncine_1_1_audio_effect_properties.html#a91d911104fc5f00ce26b672b24c9b03d',1,'ncine::AudioEffectProperties']]], + ['maxbatchsize_679',['maxBatchSize',['../structncine_1_1_application_1_1_rendering_settings.html#a90d38ca865f0899a9180d23e7fb4f40b',1,'ncine::Application::RenderingSettings']]], + ['maxchorusproperties_680',['maxChorusProperties',['../classncine_1_1_audio_effect_properties.html#a0c05eb62a099571e14470baa8f5f9ae0',1,'ncine::AudioEffectProperties']]], + ['maxcompressorproperties_681',['maxCompressorProperties',['../classncine_1_1_audio_effect_properties.html#afa5b345df0c09d9a19fd2f7654c45399',1,'ncine::AudioEffectProperties']]], + ['maxcstringlength_682',['MaxCStringLength',['../classnctl_1_1_string.html#aab47ac9aac97cfef460a281a434601b6',1,'nctl::String::MaxCStringLength()'],['../classnctl_1_1_static_string.html#a564da32d60f5204ed304002b63c68020',1,'nctl::StaticString::MaxCStringLength()']]], + ['maxdistortionproperties_683',['maxDistortionProperties',['../classncine_1_1_audio_effect_properties.html#af898c692f8799f3c5be5957f75bc285b',1,'ncine::AudioEffectProperties']]], + ['maxeaxreverbproperties_684',['maxEaxReverbProperties',['../classncine_1_1_audio_effect_properties.html#ad0ac66b61640d6886e5e533a3ad8b045',1,'ncine::AudioEffectProperties']]], + ['maxechoproperties_685',['maxEchoProperties',['../classncine_1_1_audio_effect_properties.html#ac038ea6b7557f1993a330a10e6fa9f7c',1,'ncine::AudioEffectProperties']]], + ['maxequalizerproperties_686',['maxEqualizerProperties',['../classncine_1_1_audio_effect_properties.html#abb32b839f8e3e3492b0e9d02b3bcf1cd',1,'ncine::AudioEffectProperties']]], + ['maxfilenamelength_687',['MaxFilenameLength',['../classncine_1_1_i_file.html#a5c8ca3d3093f2f486d11e2b744019521',1,'ncine::IFile']]], + ['maxflangerproperties_688',['maxFlangerProperties',['../classncine_1_1_audio_effect_properties.html#a146bdeecc5d2bb07f8bfc1fa699ff4e3',1,'ncine::AudioEffectProperties']]], + ['maxfrequencyshifterproperties_689',['maxFrequencyShifterProperties',['../classncine_1_1_audio_effect_properties.html#abd0e168851ee47ea0550ab58cdb2a010',1,'ncine::AudioEffectProperties']]], + ['maxnamelength_690',['MaxNameLength',['../classncine_1_1_object.html#a3323887be71f45a297895b9ac49f88ae',1,'ncine::Object::MaxNameLength()'],['../classnctl_1_1_i_allocator.html#ae0ad0e1984968bcfb162339cede27855',1,'nctl::IAllocator::MaxNameLength()']]], + ['maxnumsources_691',['maxNumSources',['../classncine_1_1_null_audio_device.html#a43b18bc5a088af40fe42fb63f05d131d',1,'ncine::NullAudioDevice::maxNumSources()'],['../classncine_1_1_i_audio_device.html#af9b9bd75d187e2568ee44e569a768c41',1,'ncine::IAudioDevice::maxNumSources()']]], + ['maxpathlength_692',['MaxPathLength',['../classncine_1_1_file_system.html#a6f0dd06a81923c9fcee4efad9af3f998',1,'ncine::FileSystem']]], + ['maxpitchshifterproperties_693',['maxPitchShifterProperties',['../classncine_1_1_audio_effect_properties.html#a391e28860a77d5ba191ac754e6ba1979',1,'ncine::AudioEffectProperties']]], + ['maxreverbproperties_694',['maxReverbProperties',['../classncine_1_1_audio_effect_properties.html#ac5bb2e5af572a47483b6c883a967ff90',1,'ncine::AudioEffectProperties']]], + ['maxringmodulatorproperties_695',['maxRingModulatorProperties',['../classncine_1_1_audio_effect_properties.html#a4197fc3b66582af5850712f28da9da52',1,'ncine::AudioEffectProperties']]], + ['maxvalue_696',['maxValue',['../classnctl_1_1_sparse_set.html#a8684072054db35eeab4b491314cd2cbe',1,'nctl::SparseSet']]], + ['maxvocalmorpherproperties_697',['maxVocalMorpherProperties',['../classncine_1_1_audio_effect_properties.html#a5f5580aab341a12ffed082f744334cf9',1,'ncine::AudioEffectProperties']]], + ['meshsprite_698',['MeshSprite',['../classncine_1_1_mesh_sprite.html#a5b38d8d1f99f0b199b6b24b7d012efd2',1,'ncine::MeshSprite::MeshSprite(SceneNode *parent, Texture *texture, float xx, float yy)'],['../classncine_1_1_mesh_sprite.html#ad3a075172d3750aa8db70f261ea335d6',1,'ncine::MeshSprite::MeshSprite(SceneNode *parent, Texture *texture, const Vector2f &position)'],['../classncine_1_1_mesh_sprite.html#a722dfc085e4343f07d0863fa75d1446c',1,'ncine::MeshSprite::MeshSprite(Texture *texture)'],['../classncine_1_1_mesh_sprite.html#ae48c8398ced013b82be2888524ff1e7b',1,'ncine::MeshSprite::MeshSprite(Texture *texture, float xx, float yy)'],['../classncine_1_1_mesh_sprite.html#a44efa59199aa0d3b09db9b8eb25f3169',1,'ncine::MeshSprite::MeshSprite(const MeshSprite &other)'],['../classncine_1_1_mesh_sprite.html#aa41b5c30a7f4d3ac706414015ae85f89',1,'ncine::MeshSprite::MeshSprite(MeshSprite &&)=default'],['../classncine_1_1_mesh_sprite.html#a0d133c5fb0312230f7319baa5c267935',1,'ncine::MeshSprite::MeshSprite(Texture *texture, const Vector2f &position)'],['../classncine_1_1_mesh_sprite.html#a6b2832af8975e85303edddfdd4f817f5',1,'ncine::MeshSprite::MeshSprite()'],['../classncine_1_1_mesh_sprite.html#a2e95f8b2f92103d32f628c86fb894294',1,'ncine::MeshSprite::MeshSprite(SceneNode *parent, Texture *texture)'],['../classncine_1_1_mesh_sprite.html',1,'ncine::MeshSprite']]], + ['microseconds_699',['microseconds',['../classncine_1_1_time_stamp.html#a495baff2dad370eb3c74ee4ded26bc3e',1,'ncine::TimeStamp']]], + ['microsecondsdouble_700',['microsecondsDouble',['../classncine_1_1_time_stamp.html#af4a776b54c11db52bf8da46c29a9b8d8',1,'ncine::TimeStamp']]], + ['microsecondsdoublesince_701',['microsecondsDoubleSince',['../classncine_1_1_time_stamp.html#ac062955e73286f411aff283409a3cc9a',1,'ncine::TimeStamp']]], + ['microsecondssince_702',['microsecondsSince',['../classncine_1_1_time_stamp.html#a2f6cfdedab184f8e4531bf2fbc49c75d',1,'ncine::TimeStamp']]], + ['milliseconds_703',['milliseconds',['../classncine_1_1_time_stamp.html#a422c8e4f616e067814e3e084226dd16e',1,'ncine::TimeStamp']]], + ['millisecondsdouble_704',['millisecondsDouble',['../classncine_1_1_time_stamp.html#a38169e5bf2a89ac9dfeac5f57088bc59',1,'ncine::TimeStamp']]], + ['millisecondsdoublesince_705',['millisecondsDoubleSince',['../classncine_1_1_time_stamp.html#a82b0991ea80a3ad63edc95a5052e4906',1,'ncine::TimeStamp']]], + ['millisecondssince_706',['millisecondsSince',['../classncine_1_1_time_stamp.html#a866ee3d7b1334e0fa8d030bb6036cd5d',1,'ncine::TimeStamp']]], + ['min_707',['min',['../classncine_1_1_rect.html#af5022198bf92cf31d9f8245eaeb5dba9',1,'ncine::Rect']]], + ['minautowahproperties_708',['minAutoWahProperties',['../classncine_1_1_audio_effect_properties.html#a23df671c5219abb0db3d2fa202935845',1,'ncine::AudioEffectProperties']]], + ['minbatchsize_709',['minBatchSize',['../structncine_1_1_application_1_1_rendering_settings.html#a51752f65f8584252b88cca6c93b6a577',1,'ncine::Application::RenderingSettings']]], + ['minchorusproperties_710',['minChorusProperties',['../classncine_1_1_audio_effect_properties.html#a0e6b233618d982cb03a02d41247ab436',1,'ncine::AudioEffectProperties']]], + ['mincompressorproperties_711',['minCompressorProperties',['../classncine_1_1_audio_effect_properties.html#a1df7a8e5550821e771b3e2e7f5b7e627',1,'ncine::AudioEffectProperties']]], + ['mindistortionproperties_712',['minDistortionProperties',['../classncine_1_1_audio_effect_properties.html#ab76d87493c459701771365cae5dd1561',1,'ncine::AudioEffectProperties']]], + ['mineaxreverbproperties_713',['minEaxReverbProperties',['../classncine_1_1_audio_effect_properties.html#a0817bf6079be53e79d9dd3f4578f63de',1,'ncine::AudioEffectProperties']]], + ['minechoproperties_714',['minEchoProperties',['../classncine_1_1_audio_effect_properties.html#a7ab80e6d38005bdb60699ad7635f5b47',1,'ncine::AudioEffectProperties']]], + ['minequalizerproperties_715',['minEqualizerProperties',['../classncine_1_1_audio_effect_properties.html#a49508f382308cca8d2a7c0435a784b7e',1,'ncine::AudioEffectProperties']]], + ['minfiltering_716',['minFiltering',['../classncine_1_1_texture.html#ab4b855c629465fee7fa05cb65b26fe24',1,'ncine::Texture']]], + ['minflangerproperties_717',['minFlangerProperties',['../classncine_1_1_audio_effect_properties.html#a81f27fc4197e55f79ac70adcc7bf29e8',1,'ncine::AudioEffectProperties']]], + ['minfrequencyshifterproperties_718',['minFrequencyShifterProperties',['../classncine_1_1_audio_effect_properties.html#a898d010d17c7ce07a6fb14115f8aedd6',1,'ncine::AudioEffectProperties']]], + ['minpitchshifterproperties_719',['minPitchShifterProperties',['../classncine_1_1_audio_effect_properties.html#a38a3c283c82ee51e036e5c3e4e0680fd',1,'ncine::AudioEffectProperties']]], + ['minreverbproperties_720',['minReverbProperties',['../classncine_1_1_audio_effect_properties.html#ad5351de2ce15ca918fd5e63706ff4feb',1,'ncine::AudioEffectProperties']]], + ['minringmodulatorproperties_721',['minRingModulatorProperties',['../classncine_1_1_audio_effect_properties.html#a37869c8e1e456e625dec0b0918e03af3',1,'ncine::AudioEffectProperties']]], + ['minrotation_722',['MinRotation',['../classncine_1_1_scene_node.html#afda0aae382fd89ca3aa3619e17349434',1,'ncine::SceneNode']]], + ['minvocalmorpherproperties_723',['minVocalMorpherProperties',['../classncine_1_1_audio_effect_properties.html#a9d643e25800f479e5863372c35da3041',1,'ncine::AudioEffectProperties']]], + ['mipmaplevels_724',['mipMapLevels',['../classncine_1_1_texture.html#af10e4979310a4b34d55b1584966f5f2f',1,'ncine::Texture']]], + ['mod_725',['mod',['../classncine_1_1_keyboard_event.html#a81b293e91690355d1e944361f4d8fcfd',1,'ncine::KeyboardEvent']]], + ['modulohashfunc_726',['ModuloHashFunc',['../classnctl_1_1_modulo_hash_func.html',1,'nctl']]], + ['monitor_727',['monitor',['../classncine_1_1_i_gfx_device.html#aa9b525a77544370e6ff3ea51d2e35dc6',1,'ncine::IGfxDevice::monitor() const'],['../classncine_1_1_i_gfx_device.html#a2c781bc25c4fa4b26f8a75e71c66d479',1,'ncine::IGfxDevice::monitor(unsigned int index) const']]], + ['monitor_728',['Monitor',['../structncine_1_1_i_gfx_device_1_1_monitor.html',1,'ncine::IGfxDevice']]], + ['monoaudiosources_729',['monoAudioSources',['../classncine_1_1_app_configuration.html#a9826ecd50f768bdd06f641b746962438',1,'ncine::AppConfiguration']]], + ['mousecursormode_730',['MouseCursorMode',['../classncine_1_1_i_input_manager.html#a1249b2dd851ac2b4a59f0cc51047842b',1,'ncine::IInputManager']]], + ['mousecursormode_731',['mouseCursorMode',['../classncine_1_1_i_input_manager.html#a6920ee6c7f8d7a10a086b3d3cc66c85d',1,'ncine::IInputManager']]], + ['mouseevent_732',['MouseEvent',['../classncine_1_1_mouse_event.html',1,'ncine']]], + ['mousestate_733',['mouseState',['../classncine_1_1_i_input_manager.html#a2bd35d6b9e8a37f83de8caffe3ed99c2',1,'ncine::IInputManager']]], + ['mousestate_734',['MouseState',['../classncine_1_1_mouse_state.html',1,'ncine']]], + ['move_735',['move',['../classncine_1_1_scene_node.html#aac5dfb16e5de8ab04015622eec0df2b9',1,'ncine::SceneNode::move(float x, float y)'],['../classncine_1_1_scene_node.html#a4bd99e4f2ccd8f01559ad65b33a309b2',1,'ncine::SceneNode::move(const Vector2f &position)']]], + ['movex_736',['moveX',['../classncine_1_1_scene_node.html#ab59f1b6fe560003926d2709ca81db760',1,'ncine::SceneNode']]], + ['movey_737',['moveY',['../classncine_1_1_scene_node.html#a138eec3febd30e2737b8cebcac2807f0',1,'ncine::SceneNode']]], + ['multiply_738',['MULTIPLY',['../classncine_1_1_drawable_node.html#a78af82c1e3387546763cb57dda08b310a080aaf8d817ada96fca7096b7b55bd30',1,'ncine::DrawableNode']]] +]; diff --git a/master/search/all_d.html b/master/search/all_d.html new file mode 100644 index 0000000000..af7f2f0f50 --- /dev/null +++ b/master/search/all_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/all_d.js b/master/search/all_d.js new file mode 100644 index 0000000000..24171fd0e3 --- /dev/null +++ b/master/search/all_d.js @@ -0,0 +1,50 @@ +var searchData= +[ + ['luatypes_739',['LuaTypes',['../namespacencine_1_1_lua_types.html',1,'ncine']]], + ['name_740',['name',['../structncine_1_1_i_gfx_device_1_1_monitor.html#aab20a56df0b455631cae0785081ba7e1',1,'ncine::IGfxDevice::Monitor::name()'],['../classncine_1_1_i_audio_device.html#a5c3b9c32ca4f5a726a39d987a34facf6',1,'ncine::IAudioDevice::name()'],['../classncine_1_1_null_audio_device.html#a7241904398b15b8f36c8293f011139c7',1,'ncine::NullAudioDevice::name()'],['../classncine_1_1_object.html#aa00d5267eb694e6bba3d6bdb6cc523cf',1,'ncine::Object::name()'],['../classnctl_1_1_i_allocator.html#a9b3300cfe18e83f6fe055f3ffe04a098',1,'nctl::IAllocator::name()']]], + ['nanoseconds_741',['nanoseconds',['../classncine_1_1_time_stamp.html#aa7c17d757054ddb712d4ae1835b76f03',1,'ncine::TimeStamp']]], + ['nanosecondsdouble_742',['nanosecondsDouble',['../classncine_1_1_time_stamp.html#a8e572cc9d9f1bf5ee5357b367c99f16c',1,'ncine::TimeStamp']]], + ['nanosecondsdoublesince_743',['nanosecondsDoubleSince',['../classncine_1_1_time_stamp.html#a52a2dc6428ff9e73d555472cc045c343',1,'ncine::TimeStamp']]], + ['nanosecondssince_744',['nanosecondsSince',['../classncine_1_1_time_stamp.html#a10840fc434484a0637390f4ebe803485',1,'ncine::TimeStamp']]], + ['never_745',['NEVER',['../classncine_1_1_viewport.html#af65ae2e288ca0cbad4d09a1b740622a6a443475558f0168dff92ecde26b98ae5a',1,'ncine::Viewport']]], + ['next_5f_746',['next_',['../classnctl_1_1_base_list_node.html#afb73e9db11dab762605e23fd604a39f9',1,'nctl::BaseListNode']]], + ['next_5fframe_5fonly_747',['NEXT_FRAME_ONLY',['../classncine_1_1_viewport.html#af65ae2e288ca0cbad4d09a1b740622a6afbca4e18f39ba359829b3866c35dc586',1,'ncine::Viewport']]], + ['no_5ftexture_748',['NO_TEXTURE',['../classncine_1_1_viewport.html#a12c083906885f6c2d1528f47a316f31ea6dda1d13ca27a41db41cc5174dfbc155',1,'ncine::Viewport']]], + ['node_749',['node',['../classncine_1_1_shader_state.html#a93cf6c7256baa036f7e2b5c93a731490',1,'ncine::ShaderState::node()'],['../classnctl_1_1_hash_map_iterator.html#aa0c2a5d388fea4b1add4ea1b0afbc861',1,'nctl::HashMapIterator::node()'],['../classnctl_1_1_hash_map_list_iterator.html#a00683614a6596cb1b57a3428180f20a7',1,'nctl::HashMapListIterator::node()'],['../classnctl_1_1_hash_set_list_iterator.html#a94a9c4e8cd275f6a879159a80f843a92',1,'nctl::HashSetListIterator::node()'],['../classnctl_1_1_static_hash_map_iterator.html#ac7c21f6937dccb2bbb416cfa45f12a6b',1,'nctl::StaticHashMapIterator::node()']]], + ['none_750',['NONE',['../classncine_1_1_lua_state_manager.html#a827fa27232368ea58cb813a4d8666afbab50339a10e1de285ac99d4c3990b8693',1,'ncine::LuaStateManager']]], + ['none_751',['none',['../classnctl_1_1_bit_set.html#a57300e339f6cf41d2a8e674e2fd8f3f9',1,'nctl::BitSet']]], + ['normal_752',['NORMAL',['../classncine_1_1_i_input_manager.html#a1249b2dd851ac2b4a59f0cc51047842ba1e23852820b9154316c7c06e2b7ba051',1,'ncine::IInputManager']]], + ['normvalue_753',['normValue',['../classncine_1_1_joy_axis_event.html#ac98e78708e34ac3014aca01228246e75',1,'ncine::JoyAxisEvent']]], + ['now_754',['now',['../classncine_1_1_time_stamp.html#a2b357a6c3219359affa5884b27e2c01f',1,'ncine::TimeStamp']]], + ['nuklearcontext_755',['NuklearContext',['../classncine_1_1_nuklear_context.html',1,'ncine']]], + ['nuklearlayer_756',['nuklearLayer',['../structncine_1_1_application_1_1_gui_settings.html#a3a457daeeba4664f3a9c69b575055fdf',1,'ncine::Application::GuiSettings']]], + ['nuklearviewport_757',['nuklearViewport',['../structncine_1_1_application_1_1_gui_settings.html#ae44f03afd639dca8bea667127a3e0e47',1,'ncine::Application::GuiSettings']]], + ['nullaudiodevice_758',['NullAudioDevice',['../classncine_1_1_null_audio_device.html',1,'ncine']]], + ['nullgfxcapabilities_759',['NullGfxCapabilities',['../classncine_1_1_null_gfx_capabilities.html',1,'ncine']]], + ['nullindexer_760',['NullIndexer',['../classncine_1_1_null_indexer.html',1,'ncine']]], + ['nulllogger_761',['NullLogger',['../classncine_1_1_null_logger.html',1,'ncine']]], + ['nullthreadpool_762',['NullThreadPool',['../classncine_1_1_null_thread_pool.html',1,'ncine']]], + ['numaliveparticles_763',['numAliveParticles',['../classncine_1_1_particle_system.html#a2e8a81c6926ce634d28c5e4e4a1bdc4f',1,'ncine::ParticleSystem']]], + ['numallocations_764',['numAllocations',['../classnctl_1_1_i_allocator.html#a65367665976ad51973125b6382fe864a',1,'nctl::IAllocator']]], + ['numanimations_765',['numAnimations',['../classncine_1_1_animated_sprite.html#a5d0b9cd751309590dcbf38c46423e3bb',1,'ncine::AnimatedSprite']]], + ['numavailablesources_766',['numAvailableSources',['../classncine_1_1_null_audio_device.html#a8862cfb1097743f8111b319dc7686157',1,'ncine::NullAudioDevice::numAvailableSources()'],['../classncine_1_1_i_audio_device.html#a686227b6fd701ef3a567fd4b4357da36',1,'ncine::IAudioDevice::numAvailableSources()']]], + ['numaxes_767',['NumAxes',['../classncine_1_1_joy_mapped_state.html#ade63cfc84bb872aea03a63b11a6b6b53',1,'ncine::JoyMappedState']]], + ['numbuttons_768',['NumButtons',['../classncine_1_1_joy_mapped_state.html#af5eac1b85c457bc6512ccb48a32ac4ca',1,'ncine::JoyMappedState']]], + ['numbytes_769',['numBytes',['../classncine_1_1_mesh_sprite.html#a0f867309f1b7cd18141961de469c1dd4',1,'ncine::MeshSprite']]], + ['numchannels_770',['numChannels',['../classncine_1_1_i_audio_player.html#af05964e822fa81e8a74a057eb558e87b',1,'ncine::IAudioPlayer::numChannels()'],['../classncine_1_1_texture.html#ac34794cd179aa374b2b02d1fe759f8b9',1,'ncine::Texture::numChannels()'],['../classncine_1_1_audio_stream_player.html#aaaad7e19779f4201a3d29ef299bd77ff',1,'ncine::AudioStreamPlayer::numChannels()'],['../classncine_1_1_audio_stream.html#af32381f949dd9e7ab20626a7a128b5ca',1,'ncine::AudioStream::numChannels()'],['../classncine_1_1_audio_buffer_player.html#a7d1ab58e49f103cd45ab1a5c5ab298fd',1,'ncine::AudioBufferPlayer::numChannels()'],['../classncine_1_1_audio_buffer.html#a12163c609170d3a52d5f77d14c90ff01',1,'ncine::AudioBuffer::numChannels()']]], + ['numcolorattachments_771',['numColorAttachments',['../classncine_1_1_viewport.html#a350794f4d98c7163bc7d394bc08eb30a',1,'ncine::Viewport']]], + ['numframes_772',['numFrames',['../classncine_1_1_animated_sprite.html#a7b5fc4ecfa9050b5a3398480b7460e3c',1,'ncine::AnimatedSprite::numFrames()'],['../classncine_1_1_application.html#a523b0b42286a90c78bfe055c9d25e0ec',1,'ncine::Application::numFrames()'],['../classncine_1_1_rect_animation.html#af6054ad4759573bd393254fa6e1cfca9',1,'ncine::RectAnimation::numFrames()']]], + ['numglyphs_773',['numGlyphs',['../classncine_1_1_font.html#a65856fd8b9454551b9b0c5a02ec32c47',1,'ncine::Font']]], + ['numindices_774',['numIndices',['../classncine_1_1_mesh_sprite.html#ab71cbdb67e0d45bc1e2d55fd47d28218',1,'ncine::MeshSprite']]], + ['numjoymappings_775',['numJoyMappings',['../classncine_1_1_i_input_manager.html#aa464776f0fbb86ef7edabb2c3fea38f8',1,'ncine::IInputManager']]], + ['numkernings_776',['numKernings',['../classncine_1_1_font.html#ac9974b4e23d747bff3427053b12f5f07',1,'ncine::Font']]], + ['nummonitors_777',['numMonitors',['../classncine_1_1_i_gfx_device.html#a90824e0f5d12670be3df4b87d74db614',1,'ncine::IGfxDevice']]], + ['numparticles_778',['numParticles',['../classncine_1_1_particle_system.html#ad5e294e7f0183206166ad795a82601a4',1,'ncine::ParticleSystem']]], + ['numplayers_779',['numPlayers',['../classncine_1_1_i_audio_device.html#a5d263e402c7e8f7e67b835f3a8f77e5b',1,'ncine::IAudioDevice::numPlayers()'],['../classncine_1_1_null_audio_device.html#a4c9942d76f797f1fce77dc3f5e58b46b',1,'ncine::NullAudioDevice::numPlayers()']]], + ['numsamples_780',['numSamples',['../classncine_1_1_i_audio_player.html#a42648aa19638c5d5f0c784f42053d5cb',1,'ncine::IAudioPlayer::numSamples()'],['../classncine_1_1_audio_stream_player.html#a5688ea85ac2247b8fd678fbc7233dac6',1,'ncine::AudioStreamPlayer::numSamples()'],['../classncine_1_1_audio_stream.html#a9d2279e0cb60552f2763ecbe7dea7475',1,'ncine::AudioStream::numSamples()'],['../classncine_1_1_audio_buffer_player.html#acfb8387c14c496470858c44a1100326d',1,'ncine::AudioBufferPlayer::numSamples()'],['../classncine_1_1_audio_buffer.html#a826e9710c67e1f1b4b64a225b9488681',1,'ncine::AudioBuffer::numSamples()']]], + ['numsamplesinstreambuffer_781',['numSamplesInStreamBuffer',['../classncine_1_1_audio_stream.html#a0902134440ced208718fe98358d7273b',1,'ncine::AudioStream::numSamplesInStreamBuffer()'],['../classncine_1_1_audio_stream_player.html#a12265dd6808cf2881ce1fd3ffbd845a4',1,'ncine::AudioStreamPlayer::numSamplesInStreamBuffer()']]], + ['numsteps_782',['numSteps',['../classncine_1_1_particle_affector.html#a4fc7353363efe8b7c848b90837d46f83',1,'ncine::ParticleAffector::numSteps()'],['../classncine_1_1_color_affector.html#a0cfc8f500e695a5c42a0799cadb8a90d',1,'ncine::ColorAffector::numSteps()'],['../classncine_1_1_size_affector.html#a48bedd28fc04e8e05fca73fcc64f87cc',1,'ncine::SizeAffector::numSteps()'],['../classncine_1_1_rotation_affector.html#a189b17fce781edf6287e23f607b416f5',1,'ncine::RotationAffector::numSteps()'],['../classncine_1_1_position_affector.html#a2e426c393d6c14c51ea105d3d9a54fca',1,'ncine::PositionAffector::numSteps()'],['../classncine_1_1_velocity_affector.html#ac5e66e928fc68a35eadec26b8fca4cfc',1,'ncine::VelocityAffector::numSteps()']]], + ['numvertices_783',['numVertices',['../classncine_1_1_mesh_sprite.html#aa49ffb234c0882137c8bbb32cd7c49f4',1,'ncine::MeshSprite']]], + ['numvideomodes_784',['numVideoModes',['../structncine_1_1_i_gfx_device_1_1_monitor.html#a848b74db16c5eb70bcf7e2f014a75a28',1,'ncine::IGfxDevice::Monitor']]], + ['pointermath_785',['PointerMath',['../namespacenctl_1_1_pointer_math.html',1,'nctl']]] +]; diff --git a/master/search/all_e.html b/master/search/all_e.html new file mode 100644 index 0000000000..e25df423a9 --- /dev/null +++ b/master/search/all_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/all_e.js b/master/search/all_e.js new file mode 100644 index 0000000000..221a3c0186 --- /dev/null +++ b/master/search/all_e.js @@ -0,0 +1,61 @@ +var searchData= +[ + ['obbpath_786',['obbPath',['../classncine_1_1_android_application.html#a0d2cbe2b4c963e6ca15bc7b8fc50066c',1,'ncine::AndroidApplication']]], + ['object_787',['Object',['../classncine_1_1_object.html',1,'ncine::Object'],['../classncine_1_1_object.html#a3349a457718986de5141e4ce958e7564',1,'ncine::Object::Object(ObjectType type)'],['../classncine_1_1_object.html#af0f051684c7cb5808104cebf49cb957c',1,'ncine::Object::Object(ObjectType type, const char *name)'],['../classncine_1_1_object.html#a595c3bae2d48857e8274adf5e6628f2e',1,'ncine::Object::Object(Object &&other)'],['../classncine_1_1_object.html#af1475b67e035edcb00e812345a6039dc',1,'ncine::Object::Object(const Object &other)']]], + ['object_788',['object',['../classncine_1_1_i_indexer.html#aaa3ca2f1620e44c0b123326452e89aa8',1,'ncine::IIndexer::object()'],['../classncine_1_1_null_indexer.html#a5247664f2b47be8b8c9f15a14d728b5a',1,'ncine::NullIndexer::object()']]], + ['objecttype_789',['ObjectType',['../classncine_1_1_object.html#a0559e2cfe7802fa475c2c77d0984d587',1,'ncine::Object']]], + ['onchangescalingfactor_790',['onChangeScalingFactor',['../classncine_1_1_i_app_event_handler.html#aa2c4e9c085ff1cda4549be2469230658',1,'ncine::IAppEventHandler']]], + ['ondrawviewport_791',['onDrawViewport',['../classncine_1_1_i_app_event_handler.html#ab0a9cba6d84d4f141d5eb7001202cf5c',1,'ncine::IAppEventHandler']]], + ['onfilesdropped_792',['onFilesDropped',['../classncine_1_1_i_input_event_handler.html#a2461f85feb7d17b4f107921f4d3b5665',1,'ncine::IInputEventHandler']]], + ['onframeend_793',['onFrameEnd',['../classncine_1_1_i_app_event_handler.html#ab71d0b68f73eb7b0dec14771be524846',1,'ncine::IAppEventHandler']]], + ['onframestart_794',['onFrameStart',['../classncine_1_1_i_app_event_handler.html#a26fe21a5205f9ec4b198a1785bc8fb04',1,'ncine::IAppEventHandler']]], + ['oninit_795',['onInit',['../classncine_1_1_i_app_event_handler.html#a5ed7187eafdfe51042e4a10a4e3002d7',1,'ncine::IAppEventHandler']]], + ['onjoyaxismoved_796',['onJoyAxisMoved',['../classncine_1_1_i_input_event_handler.html#a7753cc54864f9204eb8cb2c99b7f633c',1,'ncine::IInputEventHandler']]], + ['onjoybuttonpressed_797',['onJoyButtonPressed',['../classncine_1_1_i_input_event_handler.html#a65745cd39ad707fb5cb3a50e94a3f327',1,'ncine::IInputEventHandler']]], + ['onjoybuttonreleased_798',['onJoyButtonReleased',['../classncine_1_1_i_input_event_handler.html#a15b522de7bee581b56d1b5e12a9127ec',1,'ncine::IInputEventHandler']]], + ['onjoyconnected_799',['onJoyConnected',['../classncine_1_1_i_input_event_handler.html#a29cbdfbf0e5545b4e56ad4b1835aa1e7',1,'ncine::IInputEventHandler']]], + ['onjoydisconnected_800',['onJoyDisconnected',['../classncine_1_1_i_input_event_handler.html#a0d0821dd34348eeed7d26684e36f822a',1,'ncine::IInputEventHandler']]], + ['onjoyhatmoved_801',['onJoyHatMoved',['../classncine_1_1_i_input_event_handler.html#a9676fbaec7ea4663fec3dab936113394',1,'ncine::IInputEventHandler']]], + ['onjoymappedaxismoved_802',['onJoyMappedAxisMoved',['../classncine_1_1_i_input_event_handler.html#ab07069e44f3f1b5e90dadcc8a64624f7',1,'ncine::IInputEventHandler']]], + ['onjoymappedbuttonpressed_803',['onJoyMappedButtonPressed',['../classncine_1_1_i_input_event_handler.html#a1b7c9f1ea594e962759f6a938df9c97b',1,'ncine::IInputEventHandler']]], + ['onjoymappedbuttonreleased_804',['onJoyMappedButtonReleased',['../classncine_1_1_i_input_event_handler.html#a38a3860da958305fc9d7be52728ba093',1,'ncine::IInputEventHandler']]], + ['onkeypressed_805',['onKeyPressed',['../classncine_1_1_i_input_event_handler.html#acd56ad9e1245a0de861236205f1a813a',1,'ncine::IInputEventHandler']]], + ['onkeyreleased_806',['onKeyReleased',['../classncine_1_1_i_input_event_handler.html#a580b162e418251ce6b56e08ec6e32815',1,'ncine::IInputEventHandler']]], + ['onmousebuttonpressed_807',['onMouseButtonPressed',['../classncine_1_1_i_input_event_handler.html#a42535586f369813ef7da0126b1416448',1,'ncine::IInputEventHandler']]], + ['onmousebuttonreleased_808',['onMouseButtonReleased',['../classncine_1_1_i_input_event_handler.html#a107b9c8b313f81a0d9a9664dfef24512',1,'ncine::IInputEventHandler']]], + ['onmousemoved_809',['onMouseMoved',['../classncine_1_1_i_input_event_handler.html#adf782a9b03207a4bc988d464606fe103',1,'ncine::IInputEventHandler']]], + ['onpointerdown_810',['onPointerDown',['../classncine_1_1_i_input_event_handler.html#a5424ef98deadc1ca33836ed44406a488',1,'ncine::IInputEventHandler']]], + ['onpointerup_811',['onPointerUp',['../classncine_1_1_i_input_event_handler.html#a07ef20e2cdc157718316475407bca22d',1,'ncine::IInputEventHandler']]], + ['onpostupdate_812',['onPostUpdate',['../classncine_1_1_i_app_event_handler.html#ab5f61f188ad4d31945d6e54a8696e65f',1,'ncine::IAppEventHandler']]], + ['onpreinit_813',['onPreInit',['../classncine_1_1_i_app_event_handler.html#a087f831c5e3a213f824aa20fdebe7a1a',1,'ncine::IAppEventHandler']]], + ['onquitrequest_814',['onQuitRequest',['../classncine_1_1_i_input_event_handler.html#ac9739237ded6cca133a23a6509dedd1e',1,'ncine::IInputEventHandler']]], + ['onresizewindow_815',['onResizeWindow',['../classncine_1_1_i_app_event_handler.html#aafb8d723feafc5d2cc788bacceffd5c9',1,'ncine::IAppEventHandler']]], + ['onresume_816',['onResume',['../classncine_1_1_i_app_event_handler.html#a303454f9f3f97f7b08fa99b9865508fe',1,'ncine::IAppEventHandler']]], + ['onscrollinput_817',['onScrollInput',['../classncine_1_1_i_input_event_handler.html#a6c12028386d612e67716a76948a88fbc',1,'ncine::IInputEventHandler']]], + ['onshutdown_818',['onShutdown',['../classncine_1_1_i_app_event_handler.html#a09b62954ce624ed6d6735e3fc566ffd8',1,'ncine::IAppEventHandler']]], + ['onsuspend_819',['onSuspend',['../classncine_1_1_i_app_event_handler.html#a09470908b5701c46413f330fdd7e2a24',1,'ncine::IAppEventHandler']]], + ['ontextinput_820',['onTextInput',['../classncine_1_1_i_input_event_handler.html#ad913bc32a7446ee5f8b3a95133078555',1,'ncine::IInputEventHandler']]], + ['ontouchdown_821',['onTouchDown',['../classncine_1_1_i_input_event_handler.html#a74602f87bbcacf77e0ee6a98abcbb627',1,'ncine::IInputEventHandler']]], + ['ontouchmove_822',['onTouchMove',['../classncine_1_1_i_input_event_handler.html#a5e1cf6463f495f245e9ca70b831a83fa',1,'ncine::IInputEventHandler']]], + ['ontouchup_823',['onTouchUp',['../classncine_1_1_i_input_event_handler.html#aeecf79cf672655505d4b960eff79a5a8',1,'ncine::IInputEventHandler']]], + ['open_824',['open',['../classncine_1_1_asset_file.html#a8be579e265860e75b23f26ab19c3e791',1,'ncine::AssetFile::open()'],['../classncine_1_1_file_system_1_1_directory.html#a968afbc63b4de3db3671ce8c58133b39',1,'ncine::FileSystem::Directory::open()'],['../classncine_1_1_i_file.html#a6056ece817d969fce3b256b2ffea96d0',1,'ncine::IFile::open(unsigned char mode)=0']]], + ['openmode_825',['OpenMode',['../structncine_1_1_i_file_1_1_open_mode.html',1,'ncine::IFile']]], + ['operator_21_3d_826',['operator!=',['../classnctl_1_1_hash_map_iterator.html#a024911760e19404fcab68b319a9c561c',1,'nctl::HashMapIterator::operator!=()'],['../classnctl_1_1_string_iterator.html#aea095f0212761b9c0af78089e04442f6',1,'nctl::StringIterator::operator!=()'],['../classnctl_1_1_static_hash_set_iterator.html#a57dd54a4c5a2f08a3b20e6e845eae306',1,'nctl::StaticHashSetIterator::operator!=()'],['../classnctl_1_1_static_hash_map_iterator.html#ad0b676281a946943cd5eb5f0b68c52e8',1,'nctl::StaticHashMapIterator::operator!=()'],['../classnctl_1_1_sparse_set_iterator.html#a6313167589816ada466245b5f0bcb484',1,'nctl::SparseSetIterator::operator!=()'],['../classnctl_1_1_reverse_iterator.html#ab50413115c8356d44188eafdf43243d7',1,'nctl::ReverseIterator::operator!=()'],['../classnctl_1_1_reverse_iterator.html#a0fedb2c360e3297d4303c6d880cdcfc7',1,'nctl::ReverseIterator::operator!=()'],['../classnctl_1_1_list_iterator.html#a888d960155cc4ea1dca9a3e5966cc9d6',1,'nctl::ListIterator::operator!=()'],['../classnctl_1_1_hash_set_list_iterator.html#a5b497ff1663dc1bd9a1bea06a00dc87c',1,'nctl::HashSetListIterator::operator!=()'],['../classnctl_1_1_hash_set_iterator.html#aff14929723f132f26b4abadaafe3b8d2',1,'nctl::HashSetIterator::operator!=()'],['../classnctl_1_1_hash_map_list_iterator.html#a812e12055ef36755250130b1067a7c4c',1,'nctl::HashMapListIterator::operator!=()'],['../classnctl_1_1_array_iterator.html#a4563b4e41076676472859c3708806a93',1,'nctl::ArrayIterator::operator!=()']]], + ['operator_2a_827',['operator*',['../classnctl_1_1_list_iterator.html#aab671688140359575fa4a3b4b43aeef0',1,'nctl::ListIterator::operator*()'],['../classnctl_1_1_string_iterator.html#a3705be925bbc18321ad6e5d540baccc6',1,'nctl::StringIterator::operator*()'],['../classnctl_1_1_static_hash_set_iterator.html#ab750869418763b73199764531e15e8c4',1,'nctl::StaticHashSetIterator::operator*()'],['../classnctl_1_1_static_hash_map_iterator.html#a22d18e9c15d4878b5f6b86f12242497e',1,'nctl::StaticHashMapIterator::operator*()'],['../classnctl_1_1_sparse_set_iterator.html#ad7e66aa2dd1a9d419bccbcec660726d4',1,'nctl::SparseSetIterator::operator*()'],['../classnctl_1_1_reverse_iterator.html#a2196a014962084b0deac5f502f088d9d',1,'nctl::ReverseIterator::operator*()'],['../classnctl_1_1_hash_set_list_iterator.html#addd1d5ce363e04b0bebaf8cfe8be8b66',1,'nctl::HashSetListIterator::operator*()'],['../classnctl_1_1_hash_set_iterator.html#a3117e56e623e47340d76eadef3f2dc21',1,'nctl::HashSetIterator::operator*()'],['../classnctl_1_1_hash_map_list_iterator.html#af474f84f0c7123db9bd7464b97a582c0',1,'nctl::HashMapListIterator::operator*()'],['../classnctl_1_1_hash_map_iterator.html#aa908337525d8310432d522b30f6fd916',1,'nctl::HashMapIterator::operator*()'],['../classnctl_1_1_array_iterator.html#ae2226f1298471e7bcdefb94da7c2190b',1,'nctl::ArrayIterator::operator*()'],['../classncine_1_1_color_hdr.html#a7e2b944921c7c4d5573779967d8a4509',1,'ncine::ColorHdr::operator*()'],['../classncine_1_1_colorf.html#a606b50c117e134b4cfd5cc057ed7bab9',1,'ncine::Colorf::operator*()'],['../classncine_1_1_color.html#a8b7111ad9a063d7b080ee9a7ba1e86a1',1,'ncine::Color::operator*(float scalar) const']]], + ['operator_2a_3d_828',['operator*=',['../classncine_1_1_color.html#a518fc448ad3bdcb45a5b38ceb3c5806e',1,'ncine::Color::operator*=()'],['../classncine_1_1_colorf.html#a7beb72508fccd8d6c595b65b030634ad',1,'ncine::Colorf::operator*=()'],['../classncine_1_1_color_hdr.html#a02728fc7e6cd0d60b006d02679d2b4e9',1,'ncine::ColorHdr::operator*=()']]], + ['operator_2b_829',['operator+',['../classnctl_1_1_static_string.html#a982bbf3cbad0eed7e4b0425021db9ff1',1,'nctl::StaticString::operator+()'],['../classnctl_1_1_string_iterator.html#ad6eb07c77f47ed23081f0e5aaa1b962d',1,'nctl::StringIterator::operator+()'],['../classnctl_1_1_string.html#a2fbc8f624baa30a40d4a57d9ad6be6c5',1,'nctl::String::operator+()'],['../classnctl_1_1_string.html#a6371ae5bd6ffc5bc5d5eb4a0e3e45452',1,'nctl::String::operator+(const char *cString) const'],['../classnctl_1_1_string.html#a762da340586922573b9b31bf1f02b81c',1,'nctl::String::operator+(const String &other) const'],['../classnctl_1_1_static_string.html#a8ec17be35f02c9f9a3b3f2b2aa649aea',1,'nctl::StaticString::operator+(const char *cString) const'],['../classnctl_1_1_static_string.html#a74690bf5511e284062199f13f7d63706',1,'nctl::StaticString::operator+(const StaticString< U > &other) const'],['../classnctl_1_1_static_string.html#afc3bd97a685c3dcf10218b3e4653d1de',1,'nctl::StaticString::operator+(const StaticString &other) const'],['../classnctl_1_1_reverse_iterator.html#a4c4aaafe4acb8f4b13dae3b4b31d2f13',1,'nctl::ReverseIterator::operator+()'],['../classnctl_1_1_array_iterator.html#a649fac7a0be7c369e51389847b47eb39',1,'nctl::ArrayIterator::operator+()']]], + ['operator_2b_2b_830',['operator++',['../classnctl_1_1_list_iterator.html#a8ff6c2afd42fe652467c8908f4aa5d17',1,'nctl::ListIterator::operator++()'],['../classnctl_1_1_string_iterator.html#a5694f33c7041b9da714e72e8d73d2bfd',1,'nctl::StringIterator::operator++(int)'],['../classnctl_1_1_string_iterator.html#ac5274e3d12277f9e5584021f6f1dc5ea',1,'nctl::StringIterator::operator++()'],['../classnctl_1_1_static_hash_set_iterator.html#a3f7cd6b559bbdfb2320b9605fcd7f140',1,'nctl::StaticHashSetIterator::operator++(int)'],['../classnctl_1_1_static_hash_set_iterator.html#abe03b29dd1e3af1e16c88f96bd904d00',1,'nctl::StaticHashSetIterator::operator++()'],['../classnctl_1_1_static_hash_map_iterator.html#a969c19ca3102a7135f9b5cee2723ca65',1,'nctl::StaticHashMapIterator::operator++(int)'],['../classnctl_1_1_static_hash_map_iterator.html#a7bba2e2ccc6d13f8ce10a2c566a0c12b',1,'nctl::StaticHashMapIterator::operator++()'],['../classnctl_1_1_sparse_set_iterator.html#ac3bc1d92276ddc6137820ae2dc4d2243',1,'nctl::SparseSetIterator::operator++(int)'],['../classnctl_1_1_sparse_set_iterator.html#a1aabf798c8bf10846ba48d451e092c5f',1,'nctl::SparseSetIterator::operator++()'],['../classnctl_1_1_reverse_iterator.html#ae9be7f0acbeb9a5cc73bdcbc35a9329e',1,'nctl::ReverseIterator::operator++(int)'],['../classnctl_1_1_reverse_iterator.html#a5ec61f3769b3bd1a15384249ccbdd86f',1,'nctl::ReverseIterator::operator++()'],['../classnctl_1_1_list_iterator.html#a43c8fd6cea24c2fbd3dbc030c897b4db',1,'nctl::ListIterator::operator++()'],['../classnctl_1_1_hash_set_list_iterator.html#a145491a65bf6566098d9654f3fd4c2d6',1,'nctl::HashSetListIterator::operator++(int)'],['../classnctl_1_1_hash_set_list_iterator.html#a35c96320dfae891c40c40bd2e81ba318',1,'nctl::HashSetListIterator::operator++()'],['../classnctl_1_1_hash_set_iterator.html#a93134da29c490b4bd8704a4d12a9a1f9',1,'nctl::HashSetIterator::operator++(int)'],['../classnctl_1_1_hash_set_iterator.html#a07f2ea55a8aaf828c5755c3a8fa4029b',1,'nctl::HashSetIterator::operator++()'],['../classnctl_1_1_hash_map_list_iterator.html#ac86412d114bcae3b13e6481821e66433',1,'nctl::HashMapListIterator::operator++(int)'],['../classnctl_1_1_hash_map_list_iterator.html#ae3cb6b1561e3f6a0e4907aa0a1876ef8',1,'nctl::HashMapListIterator::operator++()'],['../classnctl_1_1_hash_map_iterator.html#a2e8fab6fe324479d3528a21a3fe4e9ea',1,'nctl::HashMapIterator::operator++(int)'],['../classnctl_1_1_hash_map_iterator.html#af82d13089db01991ea2134a5ced951c8',1,'nctl::HashMapIterator::operator++()'],['../classnctl_1_1_array_iterator.html#a4f7baba8740b3bceb51d6ddb0fe814b4',1,'nctl::ArrayIterator::operator++(int)'],['../classnctl_1_1_array_iterator.html#a0213548bac9d7b523cd2af7f2ddba4c5',1,'nctl::ArrayIterator::operator++()']]], + ['operator_2b_3d_831',['operator+=',['../classnctl_1_1_static_string.html#a4deecaf7ac27bec8208a9df2d416e383',1,'nctl::StaticString::operator+=()'],['../classnctl_1_1_string_iterator.html#ad687db39c01d7b207ed01d0c13c25931',1,'nctl::StringIterator::operator+=()'],['../classnctl_1_1_string.html#aa0cb1317902f03471bf3f9ad7567b0de',1,'nctl::String::operator+=(const char *cString)'],['../classnctl_1_1_string.html#a58b7ec7ec393586962848af3d00aa5e9',1,'nctl::String::operator+=(const String &other)'],['../classnctl_1_1_static_string.html#ac0991502bff2a001262aa39b4dac5727',1,'nctl::StaticString::operator+=(const StaticString< U > &other)'],['../classnctl_1_1_static_string.html#af106a4e7e4516fe545c5f12bdb8f4423',1,'nctl::StaticString::operator+=(const StaticString &other)'],['../classnctl_1_1_reverse_iterator.html#a6c1cd73ac508ba033d3ea7ae5d50f705',1,'nctl::ReverseIterator::operator+=()'],['../classnctl_1_1_array_iterator.html#a2a7c20984411bcc0da41244421034615',1,'nctl::ArrayIterator::operator+=(int n)']]], + ['operator_2d_832',['operator-',['../classnctl_1_1_array_iterator.html#a073177e311cbc1fda2c659b06317e25f',1,'nctl::ArrayIterator::operator-(int n) const'],['../classnctl_1_1_array_iterator.html#a4f03506e395c20076d0c1b654546956c',1,'nctl::ArrayIterator::operator-()'],['../classnctl_1_1_reverse_iterator.html#a2550114f56004fc02e09bbd43f1c1737',1,'nctl::ReverseIterator::operator-(int n) const'],['../classnctl_1_1_reverse_iterator.html#a28d2c551f7365c37b2b23df2590fb00c',1,'nctl::ReverseIterator::operator-()'],['../classnctl_1_1_reverse_iterator.html#aaa2d49fbbee43f535dec01229f7c0be1',1,'nctl::ReverseIterator::operator-()'],['../classnctl_1_1_string_iterator.html#a012c4d15faf3debc711f2aa60ebcbb6f',1,'nctl::StringIterator::operator-(int n) const'],['../classnctl_1_1_string_iterator.html#aea15b0d9d3e97ac0ff060f6a47ef5c2c',1,'nctl::StringIterator::operator-()']]], + ['operator_2d_2d_833',['operator--',['../classnctl_1_1_reverse_iterator.html#a389f7319436325f282cd40d588e63db2',1,'nctl::ReverseIterator::operator--()'],['../classnctl_1_1_reverse_iterator.html#a4dab6d5bdbe25d4553a4f512a77fd1d0',1,'nctl::ReverseIterator::operator--(int)'],['../classnctl_1_1_sparse_set_iterator.html#a746fa94911a91a3a6fa1c319c95beb93',1,'nctl::SparseSetIterator::operator--()'],['../classnctl_1_1_sparse_set_iterator.html#a38029c6ec7658969ae9716dcae3ebdbb',1,'nctl::SparseSetIterator::operator--(int)'],['../classnctl_1_1_static_hash_map_iterator.html#a9b6bd72dbe289792000f0a6c689d9b3e',1,'nctl::StaticHashMapIterator::operator--()'],['../classnctl_1_1_static_hash_map_iterator.html#a9beb0d31401295acac579ace47dadd32',1,'nctl::StaticHashMapIterator::operator--(int)'],['../classnctl_1_1_static_hash_set_iterator.html#a1d4b141caa163c4342b6ac773c3aab92',1,'nctl::StaticHashSetIterator::operator--()'],['../classnctl_1_1_static_hash_set_iterator.html#a736628a08a69e950c093229d5bc048ad',1,'nctl::StaticHashSetIterator::operator--(int)'],['../classnctl_1_1_string_iterator.html#adee6df29aa7ea61e284378a82bf5f1e9',1,'nctl::StringIterator::operator--()'],['../classnctl_1_1_string_iterator.html#a74db68c11e92df11e8c390404d27c8d6',1,'nctl::StringIterator::operator--(int)'],['../classnctl_1_1_hash_map_iterator.html#aa0adf951eaf7ee27e37e3c279231da35',1,'nctl::HashMapIterator::operator--()'],['../classnctl_1_1_list_iterator.html#a6219fec9fbc0c5bad6e297ee031968ec',1,'nctl::ListIterator::operator--()'],['../classnctl_1_1_list_iterator.html#aa00ae3a6f263c7d206d452c63d5491b3',1,'nctl::ListIterator::operator--(int)'],['../classnctl_1_1_array_iterator.html#a505249f6d2f5a06a409991533446102b',1,'nctl::ArrayIterator::operator--()'],['../classnctl_1_1_array_iterator.html#a1157e054096e04127883eb0e9a1e4390',1,'nctl::ArrayIterator::operator--(int)'],['../classnctl_1_1_hash_map_iterator.html#a597b618fec5b0680ddd609ae41e50a04',1,'nctl::HashMapIterator::operator--()'],['../classnctl_1_1_hash_map_list_iterator.html#aac139d1cd0c1bd9f0bd379fb796bb244',1,'nctl::HashMapListIterator::operator--()'],['../classnctl_1_1_hash_map_list_iterator.html#a3e4d514fb9a4ae3fa5f9d9882e71ac79',1,'nctl::HashMapListIterator::operator--(int)'],['../classnctl_1_1_hash_set_iterator.html#a01f8bbdfe3535f4765ebf7d072d5c9b3',1,'nctl::HashSetIterator::operator--()'],['../classnctl_1_1_hash_set_iterator.html#acc3033e78903e49ed3716b95919e20a3',1,'nctl::HashSetIterator::operator--(int)'],['../classnctl_1_1_hash_set_list_iterator.html#a80e597b117f72180a0bf62c9fa20c74c',1,'nctl::HashSetListIterator::operator--()'],['../classnctl_1_1_hash_set_list_iterator.html#a27028312d7656459def9cc2f243c64cb',1,'nctl::HashSetListIterator::operator--(int)']]], + ['operator_2d_3d_834',['operator-=',['../classnctl_1_1_array_iterator.html#a69c11f61ccff618eb9fb17eeb0c8c863',1,'nctl::ArrayIterator::operator-=()'],['../classnctl_1_1_reverse_iterator.html#ae1964866238b404caff954dcdbae2049',1,'nctl::ReverseIterator::operator-=()'],['../classnctl_1_1_string_iterator.html#a52e0c4c6093b1b51a8ccc0b1316f4032',1,'nctl::StringIterator::operator-=()']]], + ['operator_3c_835',['operator<',['../classnctl_1_1_array_iterator.html#a6813799135cb0105bf120f8109fe5ca2',1,'nctl::ArrayIterator::operator<()'],['../classnctl_1_1_reverse_iterator.html#adf1a91e2c53e08be37760974c989458e',1,'nctl::ReverseIterator::operator<()'],['../classnctl_1_1_reverse_iterator.html#ad09a9e4fb550e58013b5e72ee6b5363c',1,'nctl::ReverseIterator::operator<()'],['../classnctl_1_1_string_iterator.html#ac41ea9b264fd1f181ac44f8b14db4226',1,'nctl::StringIterator::operator<()']]], + ['operator_3c_3d_836',['operator<=',['../classnctl_1_1_array_iterator.html#ae1d6ec68ff55f50fe1b72e8c6bdcabb9',1,'nctl::ArrayIterator::operator<=()'],['../classnctl_1_1_string_iterator.html#ad4cd8324c17fd6a8cf9f76678c7789e8',1,'nctl::StringIterator::operator<=()'],['../classnctl_1_1_reverse_iterator.html#a22dcd6eeeccc7863941ef3893f11b012',1,'nctl::ReverseIterator::operator<=()'],['../classnctl_1_1_reverse_iterator.html#a3d71eddfea7307924fb9608809d5c22e',1,'nctl::ReverseIterator::operator<=()']]], + ['operator_3d_837',['operator=',['../classnctl_1_1_hash_map_list.html#ac7a4bd14b851ad42f61dc6917fa11826',1,'nctl::HashMapList::operator=()'],['../classncine_1_1_viewport.html#a16fe33d2694cddef2c3529055e3e2510',1,'ncine::Viewport::operator=()'],['../classnctl_1_1_array.html#ad4eec848456770b20e826d0a8d3ff5aa',1,'nctl::Array::operator=(const Array &other)'],['../classnctl_1_1_array.html#aa898c8aea3798c41305b150d8aaeb93a',1,'nctl::Array::operator=(Array &&other)'],['../classnctl_1_1_hash_map.html#a4dab3deb687d09b2a21fd4f60794ea36',1,'nctl::HashMap::operator=(const HashMap &other)'],['../classnctl_1_1_hash_map.html#a756547096e54dd3d998be71e8dcdae61',1,'nctl::HashMap::operator=(HashMap &&other)'],['../classnctl_1_1_hash_map_list.html#a0749afcba2ac40aaafd3b55a7c0ea053',1,'nctl::HashMapList::operator=()'],['../classncine_1_1_texture.html#a69f9695b56756526b72f15bc4009f195',1,'ncine::Texture::operator=()'],['../classnctl_1_1_hash_set.html#a1bf5bf558f5575c9d51eb624f3d60de6',1,'nctl::HashSet::operator=(const HashSet &other)'],['../classnctl_1_1_hash_set.html#af85765e671f0cb8ffe95eece7afd84e3',1,'nctl::HashSet::operator=(HashSet &&other)'],['../classnctl_1_1_hash_set_list.html#a30d2331de36b09287c6e18fba85d0332',1,'nctl::HashSetList::operator=(const HashSetList &other)'],['../classnctl_1_1_hash_set_list.html#ab5edac4ca839937aa84472c6775e3217',1,'nctl::HashSetList::operator=(HashSetList &&other)'],['../classnctl_1_1_list.html#a96af0b524ebfe8a7e9f180730bde07dd',1,'nctl::List::operator=(const List &other)'],['../classnctl_1_1_list.html#a24a99c8ae1d578a080e7c51bc48e0cd6',1,'nctl::List::operator=(List &&other)'],['../classnctl_1_1_sparse_set.html#abceeeaf5bba556e1758eecc71b6e520b',1,'nctl::SparseSet::operator=(const SparseSet &other)'],['../classnctl_1_1_sparse_set.html#a0cb81fbfb4f316391e9eaef5d93248b8',1,'nctl::SparseSet::operator=(SparseSet &&other)'],['../classnctl_1_1_static_array.html#ab674ce9d577a267a78a4188e1949c34e',1,'nctl::StaticArray::operator=(const StaticArray &other)'],['../classnctl_1_1_static_array.html#aa4e39238525d4e457d4e0a113a2739aa',1,'nctl::StaticArray::operator=(StaticArray &&other)'],['../classnctl_1_1_static_hash_map.html#a0cc63b54a0d0396a127256f6dcde9884',1,'nctl::StaticHashMap::operator=(const StaticHashMap &other)'],['../classnctl_1_1_static_hash_map.html#a39faba3e6f2806b5650ba23c9b557aa7',1,'nctl::StaticHashMap::operator=(StaticHashMap &&other)'],['../classnctl_1_1_static_hash_set.html#ad61bda78104fe89e85a2b1854caa989f',1,'nctl::StaticHashSet::operator=(const StaticHashSet &other)'],['../classnctl_1_1_static_hash_set.html#ad0ab1b34236d320a02d74973a58d9865',1,'nctl::StaticHashSet::operator=(StaticHashSet &&other)'],['../classnctl_1_1_static_string.html#a2b26f4cac5f7db8398d32d7f1942bddc',1,'nctl::StaticString::operator=(const StaticString &other)'],['../classnctl_1_1_static_string.html#a0dac04e8527b755da4ae9bd4696c2d1a',1,'nctl::StaticString::operator=(const StaticString< U > &other)'],['../classnctl_1_1_static_string.html#a7814e1286a48b75365a12698d8945974',1,'nctl::StaticString::operator=(const char *cString)'],['../classnctl_1_1_string.html#a404e9a31553f0b5bcbc676f533c325f5',1,'nctl::String::operator=(const String &other)'],['../classnctl_1_1_string.html#a2b62841c1efb9cbd668635b0377a8e6b',1,'nctl::String::operator=(String &&other)'],['../classnctl_1_1_string.html#a7154d41c96cd8b1133fa5673934fe278',1,'nctl::String::operator=(const char *cString)'],['../classnctl_1_1_static_string.html#a94f43b25d0d56e428a3d1d37f112b163',1,'nctl::StaticString::operator=()'],['../classncine_1_1_sprite.html#ab67b7ca4db90121519e9b259137b3180',1,'ncine::Sprite::operator=()'],['../classncine_1_1_text_node.html#a6be622df9469a81a756e7c338cf44121',1,'ncine::TextNode::operator=()'],['../classncine_1_1_animated_sprite.html#a4485ea929fa3d849cd6c3ae83f3c2478',1,'ncine::AnimatedSprite::operator=()'],['../classncine_1_1_audio_buffer.html#a74caa0b45237879f6bbaf22f72d4efec',1,'ncine::AudioBuffer::operator=()'],['../classncine_1_1_audio_buffer_player.html#ab18fab8323c150bbf4d31216f5c86fb8',1,'ncine::AudioBufferPlayer::operator=()'],['../classncine_1_1_audio_effect.html#aea8db4e7edf791911704a09e507bf063',1,'ncine::AudioEffect::operator=()'],['../classncine_1_1_audio_effect_properties.html#a713f240aba5a938d748a423638dca758',1,'ncine::AudioEffectProperties::operator=(AudioEffectProperties &&other)=default'],['../classncine_1_1_audio_effect_properties.html#aa14fe0cd69cd0446aa7ecacdf88a2316',1,'ncine::AudioEffectProperties::operator=(const AudioEffectProperties &)=default'],['../classncine_1_1_audio_effect_slot.html#aae29456dddb2327a843a22c014ffa0ee',1,'ncine::AudioEffectSlot::operator=()'],['../classncine_1_1_audio_filter.html#acfdd02724244cd5e113cfe1a2a59c908',1,'ncine::AudioFilter::operator=()'],['../classncine_1_1_audio_stream_player.html#adaf169be600df268313c4b1dcfecb2ac',1,'ncine::AudioStreamPlayer::operator=()'],['../classncine_1_1_base_sprite.html#a790761c247f6c9648424b38daea37335',1,'ncine::BaseSprite::operator=()'],['../classncine_1_1_color.html#aae5dfff8a763e29a276bf4479ad88008',1,'ncine::Color::operator=()'],['../classncine_1_1_colorf.html#ad62bcd2b46b9413a7ed39ef8104d54fe',1,'ncine::Colorf::operator=()'],['../classncine_1_1_color_hdr.html#a21264f4b663e1fd3e4c610f7f16d2f42',1,'ncine::ColorHdr::operator=()'],['../classncine_1_1_drawable_node.html#afc4c6ad31720e722100c772fb5ddd9e0',1,'ncine::DrawableNode::operator=()'],['../classncine_1_1_i_audio_player.html#aab5fb6ab92e4c3ab08ab81383ae8a4d3',1,'ncine::IAudioPlayer::operator=()'],['../classncine_1_1_scene_node.html#a9287492e01eb08fd1e8b349322896971',1,'ncine::SceneNode::operator=(const SceneNode &)=delete'],['../classncine_1_1_scene_node.html#afd341577cf1abb9ed72370a3f2b999b6',1,'ncine::SceneNode::operator=(SceneNode &&other)'],['../classncine_1_1_particle_system.html#a07ac191d9fe04581ee9da3213332e096',1,'ncine::ParticleSystem::operator=()'],['../classncine_1_1_velocity_affector.html#a8aeead824880d6953bccba65e8a381c2',1,'ncine::VelocityAffector::operator=()'],['../classncine_1_1_position_affector.html#ab2858b0d90763f8c49467baf40cd554e',1,'ncine::PositionAffector::operator=()'],['../classncine_1_1_rotation_affector.html#a84e7cb94d4f995a00422b263f0e02533',1,'ncine::RotationAffector::operator=()'],['../classncine_1_1_size_affector.html#affc2080de64c4ea648ad374a491f00f8',1,'ncine::SizeAffector::operator=()'],['../classncine_1_1_color_affector.html#acc4b65814f52a83721032fecffec7ba8',1,'ncine::ColorAffector::operator=()'],['../classncine_1_1_particle.html#addd2e25f4d5459e8ba7ea1e3ac770064',1,'ncine::Particle::operator=()'],['../classncine_1_1_object.html#adaa2cd5060629adee161b9dd8220cb9f',1,'ncine::Object::operator=()'],['../classncine_1_1_mesh_sprite.html#a44c3eceaae29ff00312dc4a33634c836',1,'ncine::MeshSprite::operator=()'],['../classncine_1_1_i_debug_overlay.html#acc70622ab1533c3940a0b435e3a8703c',1,'ncine::IDebugOverlay::operator=()'],['../classncine_1_1_font.html#aa897ab37a061ba3982ff7b505e4dd89b',1,'ncine::Font::operator=()']]], + ['operator_3d_3d_838',['operator==',['../classnctl_1_1_string_iterator.html#a8c9c1a619688d56b4bcc4cbdb6c1cba9',1,'nctl::StringIterator::operator==()'],['../classnctl_1_1_static_hash_set_iterator.html#ad943a71d89a142e42010ad2627549c5b',1,'nctl::StaticHashSetIterator::operator==()'],['../classnctl_1_1_static_hash_map_iterator.html#aa21ec778d6fbd7d1117ad1c40c665d18',1,'nctl::StaticHashMapIterator::operator==()'],['../classnctl_1_1_sparse_set_iterator.html#a259f275f4b5ae478dd9576a4e38af34f',1,'nctl::SparseSetIterator::operator==()'],['../classnctl_1_1_hash_map_list_iterator.html#a613d70134cc903c27d3e708f83d540b1',1,'nctl::HashMapListIterator::operator==()'],['../classnctl_1_1_reverse_iterator.html#a856a006f7d2a41073427a4c17fd0e122',1,'nctl::ReverseIterator::operator==()'],['../classnctl_1_1_reverse_iterator.html#a4753b05a30f65418e00dc7ae201a5e3a',1,'nctl::ReverseIterator::operator==()'],['../classnctl_1_1_hash_set_list_iterator.html#a5d8f0c6e3173919aa19182f6a1fb6354',1,'nctl::HashSetListIterator::operator==()'],['../classnctl_1_1_hash_set_iterator.html#afa05914846e22707cf59183375bbd8b3',1,'nctl::HashSetIterator::operator==()'],['../classnctl_1_1_hash_map_iterator.html#ac22230dcf9d95f1370ca814010bd9ee1',1,'nctl::HashMapIterator::operator==()'],['../classnctl_1_1_array_iterator.html#a8de59ff8d9d89902933a701a0d7b7df2',1,'nctl::ArrayIterator::operator==()'],['../classncine_1_1_rect.html#ad7f20143c5933653f0efdd3011bdf135',1,'ncine::Rect::operator==()'],['../classncine_1_1_color.html#ae506623f91c4941ee4f45c6b48fc1fc0',1,'ncine::Color::operator==()'],['../classnctl_1_1_list_iterator.html#a8e0b8536b466cf803b66311bfbb86177',1,'nctl::ListIterator::operator==()']]], + ['operator_3e_839',['operator>',['../classnctl_1_1_array_iterator.html#aa2210f8ca1ed8bdc2559a8997c43c226',1,'nctl::ArrayIterator::operator>()'],['../classnctl_1_1_reverse_iterator.html#ae73ef3122f1c6ff357e95be02e16f88b',1,'nctl::ReverseIterator::operator>()'],['../classnctl_1_1_reverse_iterator.html#a0784436d00d4d43e802d466bcac79f8f',1,'nctl::ReverseIterator::operator>()'],['../classnctl_1_1_string_iterator.html#abbbd6f87d364107d655a16bd0c37e110',1,'nctl::StringIterator::operator>()']]], + ['operator_3e_3d_840',['operator>=',['../classnctl_1_1_array_iterator.html#a3628f8e3b41a4597cdaf4a0a50bcea27',1,'nctl::ArrayIterator::operator>=()'],['../classnctl_1_1_string_iterator.html#a8afacc88276710a2595522deaa19c67c',1,'nctl::StringIterator::operator>=()'],['../classnctl_1_1_reverse_iterator.html#a34d9d47e74df6a4541f1641c1c02f090',1,'nctl::ReverseIterator::operator>=()'],['../classnctl_1_1_reverse_iterator.html#aee94a28057d7a444e9f23828f90e77bb',1,'nctl::ReverseIterator::operator>=()']]], + ['operator_5b_5d_841',['operator[]',['../classnctl_1_1_array.html#a6e1d83616ca85ee0df28436a965f7673',1,'nctl::Array::operator[]()'],['../classnctl_1_1_string_iterator.html#a7f1d43f7ab29c6f02b452babfa3059eb',1,'nctl::StringIterator::operator[]()'],['../classnctl_1_1_string.html#a0e53d6feb567bead09ee8e5a941ed0b6',1,'nctl::String::operator[](unsigned int index)'],['../classnctl_1_1_string.html#a214bcb6849e1925ea785c41562348301',1,'nctl::String::operator[](unsigned int index) const'],['../classnctl_1_1_static_string.html#a207e9e99745619bf11ec21e1412de619',1,'nctl::StaticString::operator[](unsigned int index)'],['../classnctl_1_1_static_string.html#a7c5ae2936539cfd8618ce82a97ce547a',1,'nctl::StaticString::operator[](unsigned int index) const'],['../classnctl_1_1_static_hash_map.html#afb60b9d42135af7aae798cb9f168c009',1,'nctl::StaticHashMap::operator[]()'],['../classnctl_1_1_static_array.html#a27df03e14af26be63193b94aae673156',1,'nctl::StaticArray::operator[](unsigned int index)'],['../classnctl_1_1_static_array.html#a5815deeb7e012c4e7f247bdd2e121653',1,'nctl::StaticArray::operator[](unsigned int index) const'],['../classnctl_1_1_reverse_iterator.html#a45a2ae205862be89846f935c9a3a33ac',1,'nctl::ReverseIterator::operator[]()'],['../classnctl_1_1_hash_map_list.html#a6876bb5c40efdca85ad5bdcf2945bfaf',1,'nctl::HashMapList::operator[]()'],['../classnctl_1_1_hash_map.html#a9e15682bed364bc2ae2b8272e160b4bd',1,'nctl::HashMap::operator[]()'],['../classnctl_1_1_array_iterator.html#ab7ab13ec960d9c996f2308b0ca6a06ad',1,'nctl::ArrayIterator::operator[]()'],['../classnctl_1_1_array.html#a2e6f48575a0ab465d0ec3f1b6abe88d3',1,'nctl::Array::operator[]()']]], + ['outputaudiofrequency_842',['outputAudioFrequency',['../classncine_1_1_app_configuration.html#acdb5cef0ab6539f8522807a83b4199d0',1,'ncine::AppConfiguration']]], + ['overlaps_843',['overlaps',['../classncine_1_1_rect.html#a7e30799e897b0b221011c8fa6423d9c3',1,'ncine::Rect']]] +]; diff --git a/master/search/all_f.html b/master/search/all_f.html new file mode 100644 index 0000000000..b23da6ce48 --- /dev/null +++ b/master/search/all_f.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/all_f.js b/master/search/all_f.js new file mode 100644 index 0000000000..9298cf1f9a --- /dev/null +++ b/master/search/all_f.js @@ -0,0 +1,50 @@ +var searchData= +[ + ['packagename_844',['packageName',['../classncine_1_1_android_application.html#ac3f0a1b3461d2c572c1b9492031eceab',1,'ncine::AndroidApplication']]], + ['pairimpl_845',['PairImpl',['../structnctl_1_1detail_1_1_pair_impl.html',1,'nctl::detail']]], + ['pairimpl_3c_20t_20_2a_2c_20defaultdelete_3c_20t_20_3e_20_3e_846',['PairImpl< T *, DefaultDelete< T > >',['../structnctl_1_1detail_1_1_pair_impl.html',1,'nctl::detail']]], + ['pairimpl_3c_20t_20_2a_2c_20deleter_20_3e_847',['PairImpl< T *, Deleter >',['../structnctl_1_1detail_1_1_pair_impl.html',1,'nctl::detail']]], + ['pairimpl_3c_20t1_2c_20t2_2c_20true_20_3e_848',['PairImpl< T1, T2, true >',['../structnctl_1_1detail_1_1_pair_impl_3_01_t1_00_01_t2_00_01true_01_4.html',1,'nctl::detail']]], + ['parent_849',['parent',['../classncine_1_1_scene_node.html#a14e2ee59fa37d89074e1303fb9c2f3f7',1,'ncine::SceneNode::parent()'],['../classncine_1_1_scene_node.html#a0805f89e0b5d0aa9043f66f5af39b540',1,'ncine::SceneNode::parent() const']]], + ['parent_5f_850',['parent_',['../classncine_1_1_scene_node.html#a23eaf096ebad0bf42c13c19e5140a66d',1,'ncine::SceneNode']]], + ['particle_851',['Particle',['../classncine_1_1_particle.html',1,'ncine::Particle'],['../classncine_1_1_particle.html#a6405db1a558354aefa8a1a3755c8c766',1,'ncine::Particle::Particle(const Particle &other)'],['../classncine_1_1_particle.html#ae4f3a844e56033145dfc2e307671e21e',1,'ncine::Particle::Particle(Particle &&)=default'],['../classncine_1_1_particle.html#a2335f5666223950dbebb5106712158f7',1,'ncine::Particle::Particle(SceneNode *parent, Texture *texture)']]], + ['particleaffector_852',['ParticleAffector',['../classncine_1_1_particle_affector.html',1,'ncine::ParticleAffector'],['../classncine_1_1_particle_affector.html#a7533247d3d8081f1c6653650bf5f2690',1,'ncine::ParticleAffector::ParticleAffector()']]], + ['particleinitializer_853',['ParticleInitializer',['../structncine_1_1_particle_initializer.html',1,'ncine']]], + ['particlesystem_854',['ParticleSystem',['../classncine_1_1_particle_system.html',1,'ncine::ParticleSystem'],['../classncine_1_1_particle_system.html#a0cb72e527fa2c6e1ee567d3bca5049da',1,'ncine::ParticleSystem::ParticleSystem(const ParticleSystem &other)'],['../classncine_1_1_particle_system.html#a7faaa869a2c9ce3bdb2d16e2a1141088',1,'ncine::ParticleSystem::ParticleSystem(ParticleSystem &&)'],['../classncine_1_1_particle_system.html#a076a4c10fdacc4422e56b81fbcea2e16',1,'ncine::ParticleSystem::ParticleSystem(SceneNode *parent, unsigned int count, Texture *texture, Recti texRect)'],['../classncine_1_1_particle_system.html#a62660b913b11c663f2ea1a5f6831630e',1,'ncine::ParticleSystem::ParticleSystem(SceneNode *parent, unsigned int count, Texture *texture)']]], + ['pause_855',['pause',['../classncine_1_1_i_audio_player.html#a321d0db977c4a00b99301f5efde44c56',1,'ncine::IAudioPlayer::pause()'],['../classncine_1_1_audio_stream_player.html#a35dcbd351845f5bd7593f13e843633de',1,'ncine::AudioStreamPlayer::pause()'],['../classncine_1_1_audio_buffer_player.html#a7c0803d0a567716893f229f10274a23e',1,'ncine::AudioBufferPlayer::pause()']]], + ['pausedevice_856',['pauseDevice',['../classncine_1_1_i_audio_device.html#a2395b216078cd42c54a439a9654f0607',1,'ncine::IAudioDevice::pauseDevice()'],['../classncine_1_1_null_audio_device.html#a39185068a86bf3e1a8bd417f8e9e3cec',1,'ncine::NullAudioDevice::pauseDevice()']]], + ['pauseplayers_857',['pausePlayers',['../classncine_1_1_i_audio_device.html#aa0696355d67b6991278fb3904b1356cd',1,'ncine::IAudioDevice::pausePlayers()=0'],['../classncine_1_1_i_audio_device.html#a87205a2c24c7ae722ce621ea5de8a1da',1,'ncine::IAudioDevice::pausePlayers(PlayerType playerType)=0'],['../classncine_1_1_null_audio_device.html#afa6f87999f50db9d1aef025b932471ac',1,'ncine::NullAudioDevice::pausePlayers() override'],['../classncine_1_1_null_audio_device.html#a5cbf4c3f92b0d1aa92b8fb1daacde72d',1,'ncine::NullAudioDevice::pausePlayers(PlayerType playerType) override']]], + ['pcapplication_858',['PCApplication',['../classncine_1_1_p_c_application.html',1,'ncine']]], + ['permission_859',['Permission',['../classncine_1_1_file_system.html#adf632e43add52e9e2c1d35acde29cd81',1,'ncine::FileSystem']]], + ['permissions_860',['permissions',['../classncine_1_1_file_system.html#ab015de57ced87b0d92b9390843f53765',1,'ncine::FileSystem']]], + ['pitch_861',['pitch',['../classncine_1_1_i_audio_player.html#a95f99e13e3e43fc0f05b83f224ca745f',1,'ncine::IAudioPlayer']]], + ['pitch_5f_862',['pitch_',['../classncine_1_1_i_audio_player.html#abba1338b704f1270de833f367b7fcaaf',1,'ncine::IAudioPlayer']]], + ['pitchshifterproperties_863',['PitchShifterProperties',['../structncine_1_1_audio_effect_properties_1_1_pitch_shifter_properties.html',1,'ncine::AudioEffectProperties']]], + ['pitchshifterproperties_864',['pitchShifterProperties',['../classncine_1_1_audio_effect_properties.html#aeccbb886e58c4dd01c11b93b960be626',1,'ncine::AudioEffectProperties::pitchShifterProperties() const'],['../classncine_1_1_audio_effect_properties.html#a41a297e0942cf8966e3e9ce727fe6c9a',1,'ncine::AudioEffectProperties::pitchShifterProperties()']]], + ['play_865',['play',['../classncine_1_1_audio_buffer_player.html#ade43fd69da00a3c2be93faddb7421ddf',1,'ncine::AudioBufferPlayer::play()'],['../classncine_1_1_audio_stream_player.html#a1e3a1fa02495c77166e41599f0a275dd',1,'ncine::AudioStreamPlayer::play()'],['../classncine_1_1_i_audio_player.html#a8983f611328125ea256fdd717002695f',1,'ncine::IAudioPlayer::play()']]], + ['player_866',['player',['../classncine_1_1_null_audio_device.html#a7efe7c055a6643994df93ae8b206354a',1,'ncine::NullAudioDevice::player()'],['../classncine_1_1_i_audio_device.html#aea64b7302eb77f54f764f9b68c26245b',1,'ncine::IAudioDevice::player(unsigned int index) const =0'],['../classncine_1_1_i_audio_device.html#af9af1c423db74a5b7145ec46b56ac9a7',1,'ncine::IAudioDevice::player(unsigned int index)=0'],['../classncine_1_1_null_audio_device.html#ac3d2e27cb049eb2d42214f7dec4f9bc2',1,'ncine::NullAudioDevice::player()']]], + ['playerstate_867',['PlayerState',['../classncine_1_1_i_audio_player.html#aaf1e31cf9f8d57b478bf785d4f48d058',1,'ncine::IAudioPlayer']]], + ['pngproperties_868',['PngProperties',['../structncine_1_1_texture_saver_png_1_1_png_properties.html',1,'ncine::TextureSaverPng']]], + ['pointer_869',['Pointer',['../structncine_1_1_touch_event_1_1_pointer.html',1,'ncine::TouchEvent::Pointer'],['../structnctl_1_1_iterator_traits_3_01_array_iterator_3_01_t_00_01true_01_4_01_4.html#a404eed547837a7642ca38400269d4c41',1,'nctl::IteratorTraits< ArrayIterator< T, true > >::Pointer()'],['../structnctl_1_1_iterator_traits_3_01_static_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01false_01_4_01_4.html#a06cc38491fcfda57d68ff9d2da8cb6eb',1,'nctl::IteratorTraits< StaticHashMapIterator< K, T, HashFunc, Capacity, false > >::Pointer()'],['../structnctl_1_1_iterator_traits_3_01_sparse_set_iterator_3_01_t_01_4_01_4.html#ad1d8cf83322b07be5a4db6ef79ce5010',1,'nctl::IteratorTraits< SparseSetIterator< T > >::Pointer()'],['../structnctl_1_1_iterator_traits_3_01_reverse_iterator_3_01_iterator_01_4_01_4.html#acef63e48e5239c4959e0c4bcbfb9ca68',1,'nctl::IteratorTraits< ReverseIterator< Iterator > >::Pointer()'],['../classnctl_1_1_reverse_iterator.html#a9254457c024846903a27612b90c896b5',1,'nctl::ReverseIterator::Pointer()'],['../structnctl_1_1_iterator_traits_3_01_list_iterator_3_01_t_00_01true_01_4_01_4.html#a4a2ceb69849662dd74abeb6a0dc373e6',1,'nctl::IteratorTraits< ListIterator< T, true > >::Pointer()'],['../structnctl_1_1_iterator_traits_3_01_list_iterator_3_01_t_00_01false_01_4_01_4.html#a8ae749665d986ecd17f19f9f7fd0e9e6',1,'nctl::IteratorTraits< ListIterator< T, false > >::Pointer()'],['../structnctl_1_1_iterator_traits_3_01_hash_set_list_iterator_3_01_k_00_01_hash_func_01_4_01_4.html#ae30db65c966ca1e947d79513eb0ae1db',1,'nctl::IteratorTraits< HashSetListIterator< K, HashFunc > >::Pointer()'],['../structnctl_1_1_iterator_traits_3_01_hash_set_iterator_3_01_k_00_01_hash_func_01_4_01_4.html#a05bf13e70f584f726cc565bdbfe66fdc',1,'nctl::IteratorTraits< HashSetIterator< K, HashFunc > >::Pointer()'],['../structnctl_1_1_iterator_traits_3_01_hash_map_list_iterator_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4_01_4.html#a568008f0080e97c109dfcf06e8796f48',1,'nctl::IteratorTraits< HashMapListIterator< K, T, HashFunc, true > >::Pointer()'],['../structnctl_1_1_iterator_traits_3_01_hash_map_list_iterator_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4_01_4.html#ae6e3590dc9d24f758281438b310a9465',1,'nctl::IteratorTraits< HashMapListIterator< K, T, HashFunc, false > >::Pointer()'],['../structnctl_1_1_iterator_traits_3_01_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4_01_4.html#a81a0eba3e7757751fdbb0b42150ba624',1,'nctl::IteratorTraits< HashMapIterator< K, T, HashFunc, true > >::Pointer()'],['../structnctl_1_1_iterator_traits_3_01_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4_01_4.html#a6411478bd82bd8351cef568ca35b00f1',1,'nctl::IteratorTraits< HashMapIterator< K, T, HashFunc, false > >::Pointer()'],['../structnctl_1_1_iterator_traits_3_01_array_iterator_3_01_t_00_01false_01_4_01_4.html#a1edfe9b84e11e6515b3001daaf10d5f8',1,'nctl::IteratorTraits< ArrayIterator< T, false > >::Pointer()'],['../classnctl_1_1_array_iterator.html#ae9f266028ccedd44936797d6ccd44252',1,'nctl::ArrayIterator::Pointer()'],['../structnctl_1_1_iterator_traits_3_01_static_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01true_01_4_01_4.html#a545951b42aa57c1e46e5ecf28a52d94a',1,'nctl::IteratorTraits< StaticHashMapIterator< K, T, HashFunc, Capacity, true > >::Pointer()'],['../structnctl_1_1_iterator_traits_3_01_static_hash_set_iterator_3_01_k_00_01_hash_func_00_01_capacity_01_4_01_4.html#a9d1a2fa91b0789a9abb1a38e32730933',1,'nctl::IteratorTraits< StaticHashSetIterator< K, HashFunc, Capacity > >::Pointer()'],['../structnctl_1_1_iterator_traits_3_01_string_iterator_3_01false_01_4_01_4.html#af9a3267fb0e8eb84bc8b6691489ebe50',1,'nctl::IteratorTraits< StringIterator< false > >::Pointer()'],['../structnctl_1_1_iterator_traits_3_01_string_iterator_3_01true_01_4_01_4.html#aee45a2abda35304565442c5f84cc8b0d',1,'nctl::IteratorTraits< StringIterator< true > >::Pointer()'],['../classnctl_1_1_string_iterator.html#acc5011914521c9960b610d27453ed163',1,'nctl::StringIterator::Pointer()']]], + ['poolallocator_870',['PoolAllocator',['../classnctl_1_1_pool_allocator.html',1,'nctl']]], + ['popback_871',['popBack',['../classnctl_1_1_array.html#ac2ba78cc3f0cf984ed78cadfda4c7935',1,'nctl::Array::popBack()'],['../classnctl_1_1_list.html#a7b83215cb32d5dd6465a6cd29e650501',1,'nctl::List::popBack()'],['../classnctl_1_1_static_array.html#a28607bb53bfa116a01ebac515b4dab3f',1,'nctl::StaticArray::popBack()']]], + ['popfront_872',['popFront',['../classnctl_1_1_list.html#af72095137e4fe9a746b55b9cfedb227f',1,'nctl::List']]], + ['position_873',['position',['../structncine_1_1_i_gfx_device_1_1_monitor.html#ab71da218bf863917b35416a80b8b19de',1,'ncine::IGfxDevice::Monitor::position()'],['../classncine_1_1_i_audio_device.html#a687db46050e0b60629ddb9489a4d6319',1,'ncine::IAudioDevice::position()'],['../classncine_1_1_null_audio_device.html#a1aad2888c6b217d0c943a523e93ededa',1,'ncine::NullAudioDevice::position()'],['../classncine_1_1_i_audio_player.html#a378adbe88c3cced547400dba01141daa',1,'ncine::IAudioPlayer::position()'],['../classncine_1_1_scene_node.html#a20985608cd335b092aeea64a73e93edf',1,'ncine::SceneNode::position()']]], + ['position_5f_874',['position_',['../classncine_1_1_i_audio_player.html#aa6a9e005a7b452d2820ec3f28b43a2b7',1,'ncine::IAudioPlayer::position_()'],['../classncine_1_1_scene_node.html#aa33cf2fbdc81614263850c068697332e',1,'ncine::SceneNode::position_()']]], + ['positionaffector_875',['PositionAffector',['../classncine_1_1_position_affector.html',1,'ncine::PositionAffector'],['../classncine_1_1_position_affector.html#a650a6d544924d937f614ed709102b4a1',1,'ncine::PositionAffector::PositionAffector(PositionAffector &&)=default'],['../classncine_1_1_position_affector.html#a004ada180e30913018d6c1cb7aa9ea64',1,'ncine::PositionAffector::PositionAffector(const PositionAffector &other)=default']]], + ['positionstep_876',['PositionStep',['../structncine_1_1_position_affector_1_1_position_step.html',1,'ncine::PositionAffector']]], + ['premultiplied_5falpha_877',['PREMULTIPLIED_ALPHA',['../classncine_1_1_drawable_node.html#a78af82c1e3387546763cb57dda08b310adeb6ce595975819bfa90d3a85bff1001',1,'ncine::DrawableNode']]], + ['previous_5f_878',['previous_',['../classnctl_1_1_base_list_node.html#a0c7db562e438caf8a22d9d7dc3404b14',1,'nctl::BaseListNode']]], + ['previousscalingfactor_5f_879',['previousScalingFactor_',['../classncine_1_1_i_gfx_device.html#a3d1ba57a59023c4a499bcbf9993088e5',1,'ncine::IGfxDevice']]], + ['primarymonitorindex_880',['primaryMonitorIndex',['../classncine_1_1_i_gfx_device.html#adb7b06667b8dc9f4c6449960c96e575e',1,'ncine::IGfxDevice']]], + ['processcommand_881',['processCommand',['../classncine_1_1_android_application.html#a8dfcac50fa0e6bfb4ce74a6e3988d6b8',1,'ncine::AndroidApplication']]], + ['profiletextupdatetime_882',['profileTextUpdateTime',['../classncine_1_1_app_configuration.html#aa39e4eefdfedf10e95d810c9523e178c',1,'ncine::AppConfiguration']]], + ['projection_883',['projection',['../classncine_1_1_camera.html#a8e5ac03eb3d06714a54434608da3ea2f',1,'ncine::Camera']]], + ['projectionvalues_884',['ProjectionValues',['../structncine_1_1_camera_1_1_projection_values.html',1,'ncine::Camera']]], + ['projectionvalues_885',['projectionValues',['../classncine_1_1_camera.html#a6d0ef80dc689a1e99c9a1d103354d431',1,'ncine::Camera']]], + ['properties_886',['Properties',['../structncine_1_1_audio_filter_1_1_properties.html',1,'ncine::AudioFilter::Properties'],['../structncine_1_1_i_texture_saver_1_1_properties.html',1,'ncine::ITextureSaver::Properties']]], + ['proxyallocator_887',['ProxyAllocator',['../classnctl_1_1_proxy_allocator.html',1,'nctl']]], + ['ptr_888',['ptr',['../classncine_1_1_i_file.html#a20357b9f9cef827949e1c82d33fd1b35',1,'ncine::IFile']]], + ['pushback_889',['pushBack',['../classnctl_1_1_array.html#adeed2784e9f30c04d336517e71708f02',1,'nctl::Array::pushBack(const T &element)'],['../classnctl_1_1_array.html#a2ec52e967d5bd6ee55f2587b67e8373c',1,'nctl::Array::pushBack(T &&element)'],['../classnctl_1_1_list.html#af16d2f07723443169cd690605602894d',1,'nctl::List::pushBack(const T &element)'],['../classnctl_1_1_list.html#a5464c71d75ebfb38783782a36b8868f8',1,'nctl::List::pushBack(T &&element)'],['../classnctl_1_1_static_array.html#a8384eba5715d2ecd6a49408991f4c501',1,'nctl::StaticArray::pushBack(const T &element)'],['../classnctl_1_1_static_array.html#a81d5d04c2dd68a66ad6d4a991fead69e',1,'nctl::StaticArray::pushBack(T &&element)']]], + ['pushfront_890',['pushFront',['../classnctl_1_1_list.html#a3266dea61a1cfc86ecefbf7ad0f7ac8e',1,'nctl::List::pushFront(const T &element)'],['../classnctl_1_1_list.html#a69ad5f011d6d73987a9faab1e9d0bf2e',1,'nctl::List::pushFront(T &&element)']]] +]; diff --git a/master/search/classes_0.html b/master/search/classes_0.html new file mode 100644 index 0000000000..af8159ee61 --- /dev/null +++ b/master/search/classes_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/classes_0.js b/master/search/classes_0.js new file mode 100644 index 0000000000..eb9ec9d04f --- /dev/null +++ b/master/search/classes_0.js @@ -0,0 +1,46 @@ +var searchData= +[ + ['addlvaluereference_1375',['addLValueReference',['../structnctl_1_1add_l_value_reference.html',1,'nctl']]], + ['addrvaluereference_1376',['addRValueReference',['../structnctl_1_1add_r_value_reference.html',1,'nctl']]], + ['alextensions_1377',['ALExtensions',['../structncine_1_1_i_audio_device_1_1_a_l_extensions.html',1,'ncine::IAudioDevice']]], + ['allochelpers_1378',['allocHelpers',['../structnctl_1_1detail_1_1alloc_helpers.html',1,'nctl::detail']]], + ['allochelpers_3c_20true_20_3e_1379',['allocHelpers< true >',['../structnctl_1_1detail_1_1alloc_helpers_3_01true_01_4.html',1,'nctl::detail']]], + ['allocmanager_1380',['AllocManager',['../classnctl_1_1_alloc_manager.html',1,'nctl']]], + ['allocmanagerinitializer_1381',['AllocManagerInitializer',['../classnctl_1_1_alloc_manager_initializer.html',1,'nctl']]], + ['androidapplication_1382',['AndroidApplication',['../classncine_1_1_android_application.html',1,'ncine']]], + ['animatedsprite_1383',['AnimatedSprite',['../classncine_1_1_animated_sprite.html',1,'ncine']]], + ['appconfiguration_1384',['AppConfiguration',['../classncine_1_1_app_configuration.html',1,'ncine']]], + ['application_1385',['Application',['../classncine_1_1_application.html',1,'ncine']]], + ['array_1386',['Array',['../classnctl_1_1_array.html',1,'nctl']]], + ['array_3c_20float_20_3e_1387',['Array< float >',['../classnctl_1_1_array.html',1,'nctl']]], + ['array_3c_20hashbucket_20_3e_1388',['Array< HashBucket >',['../classnctl_1_1_array.html',1,'nctl']]], + ['array_3c_20ncine_3a_3acoloraffector_3a_3acolorstep_20_3e_1389',['Array< ncine::ColorAffector::ColorStep >',['../classnctl_1_1_array.html',1,'nctl']]], + ['array_3c_20ncine_3a_3aluastatemanager_3a_3astatetomanager_20_3e_1390',['Array< ncine::LuaStateManager::StateToManager >',['../classnctl_1_1_array.html',1,'nctl']]], + ['array_3c_20ncine_3a_3aparticle_20_2a_20_3e_1391',['Array< ncine::Particle * >',['../classnctl_1_1_array.html',1,'nctl']]], + ['array_3c_20ncine_3a_3apositionaffector_3a_3apositionstep_20_3e_1392',['Array< ncine::PositionAffector::PositionStep >',['../classnctl_1_1_array.html',1,'nctl']]], + ['array_3c_20ncine_3a_3arectanimation_20_3e_1393',['Array< ncine::RectAnimation >',['../classnctl_1_1_array.html',1,'nctl']]], + ['array_3c_20ncine_3a_3arotationaffector_3a_3arotationstep_20_3e_1394',['Array< ncine::RotationAffector::RotationStep >',['../classnctl_1_1_array.html',1,'nctl']]], + ['array_3c_20ncine_3a_3ascenenode_20_2a_20_3e_1395',['Array< ncine::SceneNode * >',['../classnctl_1_1_array.html',1,'nctl']]], + ['array_3c_20ncine_3a_3asizeaffector_3a_3asizestep_20_3e_1396',['Array< ncine::SizeAffector::SizeStep >',['../classnctl_1_1_array.html',1,'nctl']]], + ['array_3c_20ncine_3a_3avelocityaffector_3a_3avelocitystep_20_3e_1397',['Array< ncine::VelocityAffector::VelocityStep >',['../classnctl_1_1_array.html',1,'nctl']]], + ['array_3c_20ncine_3a_3aviewport_20_2a_20_3e_1398',['Array< ncine::Viewport * >',['../classnctl_1_1_array.html',1,'nctl']]], + ['array_3c_20nctl_3a_3auniqueptr_3c_20ncine_3a_3aparticle_20_3e_20_3e_1399',['Array< nctl::UniquePtr< ncine::Particle > >',['../classnctl_1_1_array.html',1,'nctl']]], + ['array_3c_20nctl_3a_3auniqueptr_3c_20ncine_3a_3aparticleaffector_20_3e_20_3e_1400',['Array< nctl::UniquePtr< ncine::ParticleAffector > >',['../classnctl_1_1_array.html',1,'nctl']]], + ['array_3c_20rect_3c_20int_20_3e_20_3e_1401',['Array< Rect< int > >',['../classnctl_1_1_array.html',1,'nctl']]], + ['array_3c_20unsigned_20short_20_3e_1402',['Array< unsigned short >',['../classnctl_1_1_array.html',1,'nctl']]], + ['array_3c_20vertex_20_3e_1403',['Array< Vertex >',['../classnctl_1_1_array.html',1,'nctl']]], + ['arrayiterator_1404',['ArrayIterator',['../classnctl_1_1_array_iterator.html',1,'nctl']]], + ['assetfile_1405',['AssetFile',['../classncine_1_1_asset_file.html',1,'ncine']]], + ['atomic32_1406',['Atomic32',['../classnctl_1_1_atomic32.html',1,'nctl']]], + ['atomic64_1407',['Atomic64',['../classnctl_1_1_atomic64.html',1,'nctl']]], + ['attributes_1408',['Attributes',['../structncine_1_1_i_audio_device_1_1_attributes.html',1,'ncine::IAudioDevice']]], + ['audiobuffer_1409',['AudioBuffer',['../classncine_1_1_audio_buffer.html',1,'ncine']]], + ['audiobufferplayer_1410',['AudioBufferPlayer',['../classncine_1_1_audio_buffer_player.html',1,'ncine']]], + ['audioeffect_1411',['AudioEffect',['../classncine_1_1_audio_effect.html',1,'ncine']]], + ['audioeffectproperties_1412',['AudioEffectProperties',['../classncine_1_1_audio_effect_properties.html',1,'ncine']]], + ['audioeffectslot_1413',['AudioEffectSlot',['../classncine_1_1_audio_effect_slot.html',1,'ncine']]], + ['audiofilter_1414',['AudioFilter',['../classncine_1_1_audio_filter.html',1,'ncine']]], + ['audiostream_1415',['AudioStream',['../classncine_1_1_audio_stream.html',1,'ncine']]], + ['audiostreamplayer_1416',['AudioStreamPlayer',['../classncine_1_1_audio_stream_player.html',1,'ncine']]], + ['autowahproperties_1417',['AutoWahProperties',['../structncine_1_1_audio_effect_properties_1_1_auto_wah_properties.html',1,'ncine::AudioEffectProperties']]] +]; diff --git a/master/search/classes_1.html b/master/search/classes_1.html new file mode 100644 index 0000000000..576e916894 --- /dev/null +++ b/master/search/classes_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/classes_1.js b/master/search/classes_1.js new file mode 100644 index 0000000000..1c313f491d --- /dev/null +++ b/master/search/classes_1.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['baselistnode_1418',['BaseListNode',['../classnctl_1_1_base_list_node.html',1,'nctl']]], + ['basesprite_1419',['BaseSprite',['../classncine_1_1_base_sprite.html',1,'ncine']]], + ['bidirectionaliteratortag_1420',['BidirectionalIteratorTag',['../structnctl_1_1_bidirectional_iterator_tag.html',1,'nctl']]], + ['bitset_1421',['BitSet',['../classnctl_1_1_bit_set.html',1,'nctl']]], + ['bitset_3c_20uint8_5ft_20_3e_1422',['BitSet< uint8_t >',['../classnctl_1_1_bit_set.html',1,'nctl']]], + ['block_1423',['Block',['../structnctl_1_1_free_list_allocator_1_1_block.html',1,'nctl::FreeListAllocator']]] +]; diff --git a/master/search/classes_10.html b/master/search/classes_10.html new file mode 100644 index 0000000000..4af2c805ab --- /dev/null +++ b/master/search/classes_10.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/classes_10.js b/master/search/classes_10.js new file mode 100644 index 0000000000..5938346e6c --- /dev/null +++ b/master/search/classes_10.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['qt5widget_1624',['Qt5Widget',['../classncine_1_1_qt5_widget.html',1,'ncine']]], + ['quaternion_1625',['Quaternion',['../classncine_1_1_quaternion.html',1,'ncine']]] +]; diff --git a/master/search/classes_11.html b/master/search/classes_11.html new file mode 100644 index 0000000000..ed167c849b --- /dev/null +++ b/master/search/classes_11.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/classes_11.js b/master/search/classes_11.js new file mode 100644 index 0000000000..44ccf719be --- /dev/null +++ b/master/search/classes_11.js @@ -0,0 +1,24 @@ +var searchData= +[ + ['random_1626',['Random',['../classncine_1_1_random.html',1,'ncine']]], + ['randomaccessiteratortag_1627',['RandomAccessIteratorTag',['../structnctl_1_1_random_access_iterator_tag.html',1,'nctl']]], + ['rect_1628',['Rect',['../classncine_1_1_rect.html',1,'ncine']]], + ['rect_3c_20float_20_3e_1629',['Rect< float >',['../classncine_1_1_rect.html',1,'ncine']]], + ['rect_3c_20int_20_3e_1630',['Rect< int >',['../classncine_1_1_rect.html',1,'ncine']]], + ['rectanimation_1631',['RectAnimation',['../classncine_1_1_rect_animation.html',1,'ncine']]], + ['removeextent_1632',['removeExtent',['../structnctl_1_1remove_extent.html',1,'nctl']]], + ['removeextent_3c_20t_5b_5d_3e_1633',['removeExtent< T[]>',['../structnctl_1_1remove_extent_3_01_t_0f_0e_4.html',1,'nctl']]], + ['removeextent_3c_20t_5bn_5d_3e_1634',['removeExtent< T[N]>',['../structnctl_1_1remove_extent_3_01_t_0f_n_0e_4.html',1,'nctl']]], + ['removereference_1635',['removeReference',['../structnctl_1_1remove_reference.html',1,'nctl']]], + ['removereference_3c_20t_20_26_20_3e_1636',['removeReference< T & >',['../structnctl_1_1remove_reference_3_01_t_01_6_01_4.html',1,'nctl']]], + ['removereference_3c_20t_20_26_26_20_3e_1637',['removeReference< T && >',['../structnctl_1_1remove_reference_3_01_t_01_6_6_01_4.html',1,'nctl']]], + ['renderdoccapture_1638',['RenderDocCapture',['../classncine_1_1_render_doc_capture.html',1,'ncine']]], + ['renderingsettings_1639',['RenderingSettings',['../structncine_1_1_application_1_1_rendering_settings.html',1,'ncine::Application']]], + ['reverbproperties_1640',['ReverbProperties',['../structncine_1_1_audio_effect_properties_1_1_reverb_properties.html',1,'ncine::AudioEffectProperties']]], + ['reverseiterator_1641',['ReverseIterator',['../classnctl_1_1_reverse_iterator.html',1,'nctl']]], + ['reversionwrapper_1642',['ReversionWrapper',['../structnctl_1_1_reversion_wrapper.html',1,'nctl']]], + ['ringmodulatorproperties_1643',['RingModulatorProperties',['../structncine_1_1_audio_effect_properties_1_1_ring_modulator_properties.html',1,'ncine::AudioEffectProperties']]], + ['rotationaffector_1644',['RotationAffector',['../classncine_1_1_rotation_affector.html',1,'ncine']]], + ['rotationstep_1645',['RotationStep',['../structncine_1_1_rotation_affector_1_1_rotation_step.html',1,'ncine::RotationAffector']]], + ['runinfo_1646',['RunInfo',['../classncine_1_1_lua_utils_1_1_run_info.html',1,'ncine::LuaUtils']]] +]; diff --git a/master/search/classes_12.html b/master/search/classes_12.html new file mode 100644 index 0000000000..90bc9f579f --- /dev/null +++ b/master/search/classes_12.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/classes_12.js b/master/search/classes_12.js new file mode 100644 index 0000000000..e7cf47bd9b --- /dev/null +++ b/master/search/classes_12.js @@ -0,0 +1,34 @@ +var searchData= +[ + ['saxhashfunc_1647',['SaxHashFunc',['../classnctl_1_1_sax_hash_func.html',1,'nctl']]], + ['saxhashfunc_3c_20const_20char_20_2a_20_3e_1648',['SaxHashFunc< const char * >',['../classnctl_1_1_sax_hash_func_3_01const_01char_01_5_01_4.html',1,'nctl']]], + ['saxhashfunc_3c_20string_20_3e_1649',['SaxHashFunc< String >',['../classnctl_1_1_sax_hash_func_3_01_string_01_4.html',1,'nctl']]], + ['scenenode_1650',['SceneNode',['../classncine_1_1_scene_node.html',1,'ncine']]], + ['scrollevent_1651',['ScrollEvent',['../classncine_1_1_scroll_event.html',1,'ncine']]], + ['servicelocator_1652',['ServiceLocator',['../classncine_1_1_service_locator.html',1,'ncine']]], + ['shader_1653',['Shader',['../classncine_1_1_shader.html',1,'ncine']]], + ['shaderstate_1654',['ShaderState',['../classncine_1_1_shader_state.html',1,'ncine']]], + ['sharedptr_1655',['SharedPtr',['../classnctl_1_1_shared_ptr.html',1,'nctl']]], + ['sizeaffector_1656',['SizeAffector',['../classncine_1_1_size_affector.html',1,'ncine']]], + ['sizestep_1657',['SizeStep',['../structncine_1_1_size_affector_1_1_size_step.html',1,'ncine::SizeAffector']]], + ['sparseset_1658',['SparseSet',['../classnctl_1_1_sparse_set.html',1,'nctl']]], + ['sparsesetiterator_1659',['SparseSetIterator',['../classnctl_1_1_sparse_set_iterator.html',1,'nctl']]], + ['sprite_1660',['Sprite',['../classncine_1_1_sprite.html',1,'ncine']]], + ['stackallocator_1661',['StackAllocator',['../classnctl_1_1_stack_allocator.html',1,'nctl']]], + ['statetomanager_1662',['StateToManager',['../structncine_1_1_lua_state_manager_1_1_state_to_manager.html',1,'ncine::LuaStateManager']]], + ['staticarray_1663',['StaticArray',['../classnctl_1_1_static_array.html',1,'nctl']]], + ['staticarray_3c_20unsigned_20int_2c_20numbuffers_20_3e_1664',['StaticArray< unsigned int, NumBuffers >',['../classnctl_1_1_static_array.html',1,'nctl']]], + ['statichashmap_1665',['StaticHashMap',['../classnctl_1_1_static_hash_map.html',1,'nctl']]], + ['statichashmaphelpertraits_1666',['StaticHashMapHelperTraits',['../structnctl_1_1_static_hash_map_helper_traits.html',1,'nctl']]], + ['statichashmaphelpertraits_3c_20k_2c_20t_2c_20hashfunc_2c_20capacity_2c_20false_20_3e_1667',['StaticHashMapHelperTraits< K, T, HashFunc, Capacity, false >',['../structnctl_1_1_static_hash_map_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01false_01_4.html',1,'nctl']]], + ['statichashmaphelpertraits_3c_20k_2c_20t_2c_20hashfunc_2c_20capacity_2c_20true_20_3e_1668',['StaticHashMapHelperTraits< K, T, HashFunc, Capacity, true >',['../structnctl_1_1_static_hash_map_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01true_01_4.html',1,'nctl']]], + ['statichashmapiterator_1669',['StaticHashMapIterator',['../classnctl_1_1_static_hash_map_iterator.html',1,'nctl']]], + ['statichashset_1670',['StaticHashSet',['../classnctl_1_1_static_hash_set.html',1,'nctl']]], + ['statichashsethelpertraits_1671',['StaticHashSetHelperTraits',['../structnctl_1_1_static_hash_set_helper_traits.html',1,'nctl']]], + ['statichashsetiterator_1672',['StaticHashSetIterator',['../classnctl_1_1_static_hash_set_iterator.html',1,'nctl']]], + ['staticstring_1673',['StaticString',['../classnctl_1_1_static_string.html',1,'nctl']]], + ['staticstring_3c_20maxnamelength_20_3e_1674',['StaticString< MaxNameLength >',['../classnctl_1_1_static_string.html',1,'nctl']]], + ['statistics_1675',['Statistics',['../structncine_1_1_hash64_1_1_statistics.html',1,'ncine::Hash64']]], + ['string_1676',['String',['../classnctl_1_1_string.html',1,'nctl']]], + ['stringiterator_1677',['StringIterator',['../classnctl_1_1_string_iterator.html',1,'nctl']]] +]; diff --git a/master/search/classes_13.html b/master/search/classes_13.html new file mode 100644 index 0000000000..fadc16048b --- /dev/null +++ b/master/search/classes_13.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/classes_13.js b/master/search/classes_13.js new file mode 100644 index 0000000000..923246b13d --- /dev/null +++ b/master/search/classes_13.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['textinputevent_1678',['TextInputEvent',['../classncine_1_1_text_input_event.html',1,'ncine']]], + ['textnode_1679',['TextNode',['../classncine_1_1_text_node.html',1,'ncine']]], + ['texture_1680',['Texture',['../classncine_1_1_texture.html',1,'ncine']]], + ['texturesaverpng_1681',['TextureSaverPng',['../classncine_1_1_texture_saver_png.html',1,'ncine']]], + ['texturesaverwebp_1682',['TextureSaverWebP',['../classncine_1_1_texture_saver_web_p.html',1,'ncine']]], + ['timer_1683',['Timer',['../classncine_1_1_timer.html',1,'ncine']]], + ['timestamp_1684',['TimeStamp',['../classncine_1_1_time_stamp.html',1,'ncine']]], + ['timings_1685',['Timings',['../structncine_1_1_application_1_1_timings.html',1,'ncine::Application']]], + ['touchevent_1686',['TouchEvent',['../classncine_1_1_touch_event.html',1,'ncine']]], + ['typeidentity_1687',['typeIdentity',['../structnctl_1_1detail_1_1type_identity.html',1,'nctl::detail']]] +]; diff --git a/master/search/classes_14.html b/master/search/classes_14.html new file mode 100644 index 0000000000..ad373c80c9 --- /dev/null +++ b/master/search/classes_14.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/classes_14.js b/master/search/classes_14.js new file mode 100644 index 0000000000..3bb9d7ebfc --- /dev/null +++ b/master/search/classes_14.js @@ -0,0 +1,26 @@ +var searchData= +[ + ['uniqueptr_1688',['UniquePtr',['../classnctl_1_1_unique_ptr.html',1,'nctl']]], + ['uniqueptr_3c_20char_5b_5d_3e_1689',['UniquePtr< char[]>',['../classnctl_1_1_unique_ptr.html',1,'nctl']]], + ['uniqueptr_3c_20fontglyph_5b_5d_3e_1690',['UniquePtr< FontGlyph[]>',['../classnctl_1_1_unique_ptr.html',1,'nctl']]], + ['uniqueptr_3c_20frametimer_20_3e_1691',['UniquePtr< FrameTimer >',['../classnctl_1_1_unique_ptr.html',1,'nctl']]], + ['uniqueptr_3c_20glframebufferobject_20_3e_1692',['UniquePtr< GLFramebufferObject >',['../classnctl_1_1_unique_ptr.html',1,'nctl']]], + ['uniqueptr_3c_20glshaderprogram_20_3e_1693',['UniquePtr< GLShaderProgram >',['../classnctl_1_1_unique_ptr.html',1,'nctl']]], + ['uniqueptr_3c_20gltexture_20_3e_1694',['UniquePtr< GLTexture >',['../classnctl_1_1_unique_ptr.html',1,'nctl']]], + ['uniqueptr_3c_20iaudioreader_20_3e_1695',['UniquePtr< IAudioReader >',['../classnctl_1_1_unique_ptr.html',1,'nctl']]], + ['uniqueptr_3c_20ncine_3a_3aiappeventhandler_20_3e_1696',['UniquePtr< ncine::IAppEventHandler >',['../classnctl_1_1_unique_ptr.html',1,'nctl']]], + ['uniqueptr_3c_20ncine_3a_3aiaudiodevice_20_3e_1697',['UniquePtr< ncine::IAudioDevice >',['../classnctl_1_1_unique_ptr.html',1,'nctl']]], + ['uniqueptr_3c_20ncine_3a_3aidebugoverlay_20_3e_1698',['UniquePtr< ncine::IDebugOverlay >',['../classnctl_1_1_unique_ptr.html',1,'nctl']]], + ['uniqueptr_3c_20ncine_3a_3aigfxcapabilities_20_3e_1699',['UniquePtr< ncine::IGfxCapabilities >',['../classnctl_1_1_unique_ptr.html',1,'nctl']]], + ['uniqueptr_3c_20ncine_3a_3aigfxdevice_20_3e_1700',['UniquePtr< ncine::IGfxDevice >',['../classnctl_1_1_unique_ptr.html',1,'nctl']]], + ['uniqueptr_3c_20ncine_3a_3aiindexer_20_3e_1701',['UniquePtr< ncine::IIndexer >',['../classnctl_1_1_unique_ptr.html',1,'nctl']]], + ['uniqueptr_3c_20ncine_3a_3aiinputmanager_20_3e_1702',['UniquePtr< ncine::IInputManager >',['../classnctl_1_1_unique_ptr.html',1,'nctl']]], + ['uniqueptr_3c_20ncine_3a_3ailogger_20_3e_1703',['UniquePtr< ncine::ILogger >',['../classnctl_1_1_unique_ptr.html',1,'nctl']]], + ['uniqueptr_3c_20ncine_3a_3aithreadpool_20_3e_1704',['UniquePtr< ncine::IThreadPool >',['../classnctl_1_1_unique_ptr.html',1,'nctl']]], + ['uniqueptr_3c_20ncine_3a_3ascenenode_20_3e_1705',['UniquePtr< ncine::SceneNode >',['../classnctl_1_1_unique_ptr.html',1,'nctl']]], + ['uniqueptr_3c_20ncine_3a_3atexture_20_3e_1706',['UniquePtr< ncine::Texture >',['../classnctl_1_1_unique_ptr.html',1,'nctl']]], + ['uniqueptr_3c_20rendercommand_20_3e_1707',['UniquePtr< RenderCommand >',['../classnctl_1_1_unique_ptr.html',1,'nctl']]], + ['uniqueptr_3c_20renderqueue_20_3e_1708',['UniquePtr< RenderQueue >',['../classnctl_1_1_unique_ptr.html',1,'nctl']]], + ['uniqueptr_3c_20screenviewport_20_3e_1709',['UniquePtr< ScreenViewport >',['../classnctl_1_1_unique_ptr.html',1,'nctl']]], + ['uniqueptr_3c_20t_5b_5d_2c_20deleter_20_3e_1710',['UniquePtr< T[], Deleter >',['../classnctl_1_1_unique_ptr_3_01_t_0f_0e_00_01_deleter_01_4.html',1,'nctl']]] +]; diff --git a/master/search/classes_15.html b/master/search/classes_15.html new file mode 100644 index 0000000000..55e6be4618 --- /dev/null +++ b/master/search/classes_15.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/classes_15.js b/master/search/classes_15.js new file mode 100644 index 0000000000..5bb995a33c --- /dev/null +++ b/master/search/classes_15.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['vector2_1711',['Vector2',['../classncine_1_1_vector2.html',1,'ncine']]], + ['vector2_3c_20float_20_3e_1712',['Vector2< float >',['../classncine_1_1_vector2.html',1,'ncine']]], + ['vector2_3c_20int_20_3e_1713',['Vector2< int >',['../classncine_1_1_vector2.html',1,'ncine']]], + ['vector3_1714',['Vector3',['../classncine_1_1_vector3.html',1,'ncine']]], + ['vector3_3c_20float_20_3e_1715',['Vector3< float >',['../classncine_1_1_vector3.html',1,'ncine']]], + ['vector4_1716',['Vector4',['../classncine_1_1_vector4.html',1,'ncine']]], + ['velocityaffector_1717',['VelocityAffector',['../classncine_1_1_velocity_affector.html',1,'ncine']]], + ['velocitystep_1718',['VelocityStep',['../structncine_1_1_velocity_affector_1_1_velocity_step.html',1,'ncine::VelocityAffector']]], + ['vertex_1719',['Vertex',['../structncine_1_1_mesh_sprite_1_1_vertex.html',1,'ncine::MeshSprite']]], + ['vertexnotexture_1720',['VertexNoTexture',['../structncine_1_1_mesh_sprite_1_1_vertex_no_texture.html',1,'ncine::MeshSprite']]], + ['videomode_1721',['VideoMode',['../structncine_1_1_i_gfx_device_1_1_video_mode.html',1,'ncine::IGfxDevice']]], + ['viewport_1722',['Viewport',['../classncine_1_1_viewport.html',1,'ncine']]], + ['viewvalues_1723',['ViewValues',['../structncine_1_1_camera_1_1_view_values.html',1,'ncine::Camera']]], + ['vocalmorpherproperties_1724',['VocalMorpherProperties',['../structncine_1_1_audio_effect_properties_1_1_vocal_morpher_properties.html',1,'ncine::AudioEffectProperties']]], + ['voidtype_1725',['voidType',['../structnctl_1_1detail_1_1void_type.html',1,'nctl::detail']]] +]; diff --git a/master/search/classes_16.html b/master/search/classes_16.html new file mode 100644 index 0000000000..4ef8caf6bd --- /dev/null +++ b/master/search/classes_16.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/classes_16.js b/master/search/classes_16.js new file mode 100644 index 0000000000..8b4e017e72 --- /dev/null +++ b/master/search/classes_16.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['webpproperties_1726',['WebPProperties',['../structncine_1_1_texture_saver_web_p_1_1_web_p_properties.html',1,'ncine::TextureSaverWebP']]], + ['windowmode_1727',['WindowMode',['../structncine_1_1_i_gfx_device_1_1_window_mode.html',1,'ncine::IGfxDevice']]] +]; diff --git a/master/search/classes_2.html b/master/search/classes_2.html new file mode 100644 index 0000000000..956405e5a0 --- /dev/null +++ b/master/search/classes_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/classes_2.js b/master/search/classes_2.js new file mode 100644 index 0000000000..688f91f1f0 --- /dev/null +++ b/master/search/classes_2.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['camera_1424',['Camera',['../classncine_1_1_camera.html',1,'ncine']]], + ['chorusproperties_1425',['ChorusProperties',['../structncine_1_1_audio_effect_properties_1_1_chorus_properties.html',1,'ncine::AudioEffectProperties']]], + ['color_1426',['Color',['../classncine_1_1_color.html',1,'ncine']]], + ['coloraffector_1427',['ColorAffector',['../classncine_1_1_color_affector.html',1,'ncine']]], + ['colorf_1428',['Colorf',['../classncine_1_1_colorf.html',1,'ncine']]], + ['colorhdr_1429',['ColorHdr',['../classncine_1_1_color_hdr.html',1,'ncine']]], + ['colorstep_1430',['ColorStep',['../structncine_1_1_color_affector_1_1_color_step.html',1,'ncine::ColorAffector']]], + ['compressorproperties_1431',['CompressorProperties',['../structncine_1_1_audio_effect_properties_1_1_compressor_properties.html',1,'ncine::AudioEffectProperties']]], + ['constructhelpers_1432',['constructHelpers',['../structnctl_1_1detail_1_1construct_helpers.html',1,'nctl::detail']]], + ['constructhelpers_3c_20true_20_3e_1433',['constructHelpers< true >',['../structnctl_1_1detail_1_1construct_helpers_3_01true_01_4.html',1,'nctl::detail']]], + ['copyhelpers_1434',['copyHelpers',['../structnctl_1_1detail_1_1copy_helpers.html',1,'nctl::detail']]], + ['copyhelpers_3c_20true_20_3e_1435',['copyHelpers< true >',['../structnctl_1_1detail_1_1copy_helpers_3_01true_01_4.html',1,'nctl::detail']]] +]; diff --git a/master/search/classes_3.html b/master/search/classes_3.html new file mode 100644 index 0000000000..d33343bc11 --- /dev/null +++ b/master/search/classes_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/classes_3.js b/master/search/classes_3.js new file mode 100644 index 0000000000..5496e88591 --- /dev/null +++ b/master/search/classes_3.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['debuginfo_1436',['DebugInfo',['../structncine_1_1_lua_utils_1_1_run_info_1_1_debug_info.html',1,'ncine::LuaUtils::RunInfo']]], + ['defaultdelete_1437',['DefaultDelete',['../classnctl_1_1_default_delete.html',1,'nctl']]], + ['defaultdelete_3c_20t_5b_5d_3e_1438',['DefaultDelete< T[]>',['../classnctl_1_1_default_delete_3_01_t_0f_0e_4.html',1,'nctl']]], + ['destructhelpers_1439',['destructHelpers',['../structnctl_1_1detail_1_1destruct_helpers.html',1,'nctl::detail']]], + ['destructhelpers_3c_20true_20_3e_1440',['destructHelpers< true >',['../structnctl_1_1detail_1_1destruct_helpers_3_01true_01_4.html',1,'nctl::detail']]], + ['directory_1441',['Directory',['../classncine_1_1_file_system_1_1_directory.html',1,'ncine::FileSystem']]], + ['displaymode_1442',['DisplayMode',['../classncine_1_1_display_mode.html',1,'ncine']]], + ['displaysettings_1443',['DisplaySettings',['../structncine_1_1_i_debug_overlay_1_1_display_settings.html',1,'ncine::IDebugOverlay']]], + ['distortionproperties_1444',['DistortionProperties',['../structncine_1_1_audio_effect_properties_1_1_distortion_properties.html',1,'ncine::AudioEffectProperties']]], + ['drawablenode_1445',['DrawableNode',['../classncine_1_1_drawable_node.html',1,'ncine']]], + ['dropevent_1446',['DropEvent',['../classncine_1_1_drop_event.html',1,'ncine']]] +]; diff --git a/master/search/classes_4.html b/master/search/classes_4.html new file mode 100644 index 0000000000..8430b07fe3 --- /dev/null +++ b/master/search/classes_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/classes_4.js b/master/search/classes_4.js new file mode 100644 index 0000000000..dee1530736 --- /dev/null +++ b/master/search/classes_4.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['eaxreverbproperties_1447',['EaxReverbProperties',['../structncine_1_1_audio_effect_properties_1_1_eax_reverb_properties.html',1,'ncine::AudioEffectProperties']]], + ['echoproperties_1448',['EchoProperties',['../structncine_1_1_audio_effect_properties_1_1_echo_properties.html',1,'ncine::AudioEffectProperties']]], + ['emscriptenlocalfile_1449',['EmscriptenLocalFile',['../classncine_1_1_emscripten_local_file.html',1,'ncine']]], + ['equalizerproperties_1450',['EqualizerProperties',['../structncine_1_1_audio_effect_properties_1_1_equalizer_properties.html',1,'ncine::AudioEffectProperties']]] +]; diff --git a/master/search/classes_5.html b/master/search/classes_5.html new file mode 100644 index 0000000000..c2f1b767bc --- /dev/null +++ b/master/search/classes_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/classes_5.js b/master/search/classes_5.js new file mode 100644 index 0000000000..a88c8f4a9c --- /dev/null +++ b/master/search/classes_5.js @@ -0,0 +1,19 @@ +var searchData= +[ + ['fasthashfunc_1451',['FastHashFunc',['../classnctl_1_1_fast_hash_func.html',1,'nctl']]], + ['fasthashfunc_3c_20const_20char_20_2a_20_3e_1452',['FastHashFunc< const char * >',['../classnctl_1_1_fast_hash_func_3_01const_01char_01_5_01_4.html',1,'nctl']]], + ['fasthashfunc_3c_20string_20_3e_1453',['FastHashFunc< String >',['../classnctl_1_1_fast_hash_func_3_01_string_01_4.html',1,'nctl']]], + ['filedate_1454',['FileDate',['../structncine_1_1_file_system_1_1_file_date.html',1,'ncine::FileSystem']]], + ['filesystem_1455',['FileSystem',['../classncine_1_1_file_system.html',1,'ncine']]], + ['fixedhashfunc_1456',['FixedHashFunc',['../classnctl_1_1_fixed_hash_func.html',1,'nctl']]], + ['flangerproperties_1457',['FlangerProperties',['../structncine_1_1_audio_effect_properties_1_1_flanger_properties.html',1,'ncine::AudioEffectProperties']]], + ['fnv1ahashfunc_1458',['FNV1aHashFunc',['../classnctl_1_1_f_n_v1a_hash_func.html',1,'nctl']]], + ['fnv1ahashfunc_3c_20const_20char_20_2a_20_3e_1459',['FNV1aHashFunc< const char * >',['../classnctl_1_1_f_n_v1a_hash_func_3_01const_01char_01_5_01_4.html',1,'nctl']]], + ['fnv1ahashfunc_3c_20string_20_3e_1460',['FNV1aHashFunc< String >',['../classnctl_1_1_f_n_v1a_hash_func_3_01_string_01_4.html',1,'nctl']]], + ['fnv1ahashfunc_3c_20unsigned_20short_20int_20_3e_1461',['FNV1aHashFunc< unsigned short int >',['../classnctl_1_1_f_n_v1a_hash_func.html',1,'nctl']]], + ['fnv1ahashfunc_3c_20void_20_2a_20_3e_1462',['FNV1aHashFunc< void * >',['../classnctl_1_1_f_n_v1a_hash_func.html',1,'nctl']]], + ['font_1463',['Font',['../classncine_1_1_font.html',1,'ncine']]], + ['forwarditeratortag_1464',['ForwardIteratorTag',['../structnctl_1_1_forward_iterator_tag.html',1,'nctl']]], + ['freelistallocator_1465',['FreeListAllocator',['../classnctl_1_1_free_list_allocator.html',1,'nctl']]], + ['frequencyshifterproperties_1466',['FrequencyShifterProperties',['../structncine_1_1_audio_effect_properties_1_1_frequency_shifter_properties.html',1,'ncine::AudioEffectProperties']]] +]; diff --git a/master/search/classes_6.html b/master/search/classes_6.html new file mode 100644 index 0000000000..e39847ce8f --- /dev/null +++ b/master/search/classes_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/classes_6.js b/master/search/classes_6.js new file mode 100644 index 0000000000..f098f0501d --- /dev/null +++ b/master/search/classes_6.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['glarrayintvalues_1467',['GLArrayIntValues',['../structncine_1_1_i_gfx_capabilities_1_1_g_l_array_int_values.html',1,'ncine::IGfxCapabilities']]], + ['glcontextinfo_1468',['GLContextInfo',['../structncine_1_1_i_gfx_device_1_1_g_l_context_info.html',1,'ncine::IGfxDevice']]], + ['glextensions_1469',['GLExtensions',['../structncine_1_1_i_gfx_capabilities_1_1_g_l_extensions.html',1,'ncine::IGfxCapabilities']]], + ['glinfostrings_1470',['GlInfoStrings',['../structncine_1_1_i_gfx_capabilities_1_1_gl_info_strings.html',1,'ncine::IGfxCapabilities']]], + ['glintvalues_1471',['GLIntValues',['../structncine_1_1_i_gfx_capabilities_1_1_g_l_int_values.html',1,'ncine::IGfxCapabilities']]], + ['gpuctxscope_1472',['GpuCtxScope',['../classtracy_1_1_gpu_ctx_scope.html',1,'tracy']]], + ['guisettings_1473',['GuiSettings',['../structncine_1_1_application_1_1_gui_settings.html',1,'ncine::Application']]] +]; diff --git a/master/search/classes_7.html b/master/search/classes_7.html new file mode 100644 index 0000000000..a2c4d1a397 --- /dev/null +++ b/master/search/classes_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/classes_7.js b/master/search/classes_7.js new file mode 100644 index 0000000000..b67f253712 --- /dev/null +++ b/master/search/classes_7.js @@ -0,0 +1,23 @@ +var searchData= +[ + ['hash64_1474',['Hash64',['../classncine_1_1_hash64.html',1,'ncine']]], + ['hashmap_1475',['HashMap',['../classnctl_1_1_hash_map.html',1,'nctl']]], + ['hashmap_3c_20unsigned_20short_20int_2c_20fontglyph_20_3e_1476',['HashMap< unsigned short int, FontGlyph >',['../classnctl_1_1_hash_map.html',1,'nctl']]], + ['hashmap_3c_20void_20_2a_2c_20luatypes_3a_3auserdatatype_20_3e_1477',['HashMap< void *, LuaTypes::UserDataType >',['../classnctl_1_1_hash_map.html',1,'nctl']]], + ['hashmaphelpertraits_1478',['HashMapHelperTraits',['../structnctl_1_1_hash_map_helper_traits.html',1,'nctl']]], + ['hashmaphelpertraits_3c_20k_2c_20t_2c_20hashfunc_2c_20false_20_3e_1479',['HashMapHelperTraits< K, T, HashFunc, false >',['../structnctl_1_1_hash_map_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4.html',1,'nctl']]], + ['hashmaphelpertraits_3c_20k_2c_20t_2c_20hashfunc_2c_20true_20_3e_1480',['HashMapHelperTraits< K, T, HashFunc, true >',['../structnctl_1_1_hash_map_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4.html',1,'nctl']]], + ['hashmapiterator_1481',['HashMapIterator',['../classnctl_1_1_hash_map_iterator.html',1,'nctl']]], + ['hashmaplist_1482',['HashMapList',['../classnctl_1_1_hash_map_list.html',1,'nctl']]], + ['hashmaplisthelpertraits_1483',['HashMapListHelperTraits',['../structnctl_1_1_hash_map_list_helper_traits.html',1,'nctl']]], + ['hashmaplisthelpertraits_3c_20k_2c_20t_2c_20hashfunc_2c_20false_20_3e_1484',['HashMapListHelperTraits< K, T, HashFunc, false >',['../structnctl_1_1_hash_map_list_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4.html',1,'nctl']]], + ['hashmaplisthelpertraits_3c_20k_2c_20t_2c_20hashfunc_2c_20true_20_3e_1485',['HashMapListHelperTraits< K, T, HashFunc, true >',['../structnctl_1_1_hash_map_list_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4.html',1,'nctl']]], + ['hashmaplistiterator_1486',['HashMapListIterator',['../classnctl_1_1_hash_map_list_iterator.html',1,'nctl']]], + ['hashset_1487',['HashSet',['../classnctl_1_1_hash_set.html',1,'nctl']]], + ['hashsethelpertraits_1488',['HashSetHelperTraits',['../structnctl_1_1_hash_set_helper_traits.html',1,'nctl']]], + ['hashsetiterator_1489',['HashSetIterator',['../classnctl_1_1_hash_set_iterator.html',1,'nctl']]], + ['hashsetlist_1490',['HashSetList',['../classnctl_1_1_hash_set_list.html',1,'nctl']]], + ['hashsetlisthelpertraits_1491',['HashSetListHelperTraits',['../structnctl_1_1_hash_set_list_helper_traits.html',1,'nctl']]], + ['hashsetlistiterator_1492',['HashSetListIterator',['../classnctl_1_1_hash_set_list_iterator.html',1,'nctl']]], + ['hatstate_1493',['HatState',['../structncine_1_1_hat_state.html',1,'ncine']]] +]; diff --git a/master/search/classes_8.html b/master/search/classes_8.html new file mode 100644 index 0000000000..17003e4800 --- /dev/null +++ b/master/search/classes_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/classes_8.js b/master/search/classes_8.js new file mode 100644 index 0000000000..8ca626ddff --- /dev/null +++ b/master/search/classes_8.js @@ -0,0 +1,69 @@ +var searchData= +[ + ['iallocator_1494',['IAllocator',['../classnctl_1_1_i_allocator.html',1,'nctl']]], + ['iappeventhandler_1495',['IAppEventHandler',['../classncine_1_1_i_app_event_handler.html',1,'ncine']]], + ['iaudiodevice_1496',['IAudioDevice',['../classncine_1_1_i_audio_device.html',1,'ncine']]], + ['iaudioplayer_1497',['IAudioPlayer',['../classncine_1_1_i_audio_player.html',1,'ncine']]], + ['idebugoverlay_1498',['IDebugOverlay',['../classncine_1_1_i_debug_overlay.html',1,'ncine']]], + ['identityhashfunc_1499',['IdentityHashFunc',['../classnctl_1_1_identity_hash_func.html',1,'nctl']]], + ['ifile_1500',['IFile',['../classncine_1_1_i_file.html',1,'ncine']]], + ['iframetimer_1501',['IFrameTimer',['../classncine_1_1_i_frame_timer.html',1,'ncine']]], + ['igfxcapabilities_1502',['IGfxCapabilities',['../classncine_1_1_i_gfx_capabilities.html',1,'ncine']]], + ['igfxdevice_1503',['IGfxDevice',['../classncine_1_1_i_gfx_device.html',1,'ncine']]], + ['iindexer_1504',['IIndexer',['../classncine_1_1_i_indexer.html',1,'ncine']]], + ['iinputeventhandler_1505',['IInputEventHandler',['../classncine_1_1_i_input_event_handler.html',1,'ncine']]], + ['iinputmanager_1506',['IInputManager',['../classncine_1_1_i_input_manager.html',1,'ncine']]], + ['ilogger_1507',['ILogger',['../classncine_1_1_i_logger.html',1,'ncine']]], + ['invalid_1508',['invalid',['../structnctl_1_1_make_unique_return_3_01_t_0fsize_0e_00_01_deleter_01_4_1_1invalid.html',1,'nctl::MakeUniqueReturn< T[size], Deleter >']]], + ['isclass_1509',['isClass',['../structnctl_1_1is_class.html',1,'nctl']]], + ['isclass_3c_20t_2c_20typename_20detail_3a_3avoidtype_3c_20int_20t_3a_3a_2a_20_3e_3a_3atype_20_3e_1510',['isClass< T, typename detail::voidType< int T::* >::type >',['../structnctl_1_1is_class_3_01_t_00_01typename_01detail_1_1void_type_3_01int_01_t_1_1_5_01_4_1_1type_01_4.html',1,'nctl']]], + ['isdestructible_1511',['isDestructible',['../structnctl_1_1is_destructible.html',1,'nctl']]], + ['isdestructible_3c_20t_2c_20decltype_28declval_3c_20t_20_26_20_3e_28_29_2e_7et_28_29_29_3e_1512',['isDestructible< T, decltype(declVal< T & >().~T())>',['../structnctl_1_1is_destructible_3_01_t_00_01decltype_07decl_val_3_01_t_01_6_01_4_07_08_8~_t_07_08_08_4.html',1,'nctl']]], + ['isempty_1513',['isEmpty',['../structnctl_1_1is_empty.html',1,'nctl']]], + ['isequalto_1514',['IsEqualTo',['../classnctl_1_1_is_equal_to.html',1,'nctl']]], + ['isgreaterthan_1515',['IsGreaterThan',['../classnctl_1_1_is_greater_than.html',1,'nctl']]], + ['isintegral_1516',['isIntegral',['../structnctl_1_1is_integral.html',1,'nctl']]], + ['isintegral_3c_20bool_20_3e_1517',['isIntegral< bool >',['../structnctl_1_1is_integral_3_01bool_01_4.html',1,'nctl']]], + ['isintegral_3c_20char_20_3e_1518',['isIntegral< char >',['../structnctl_1_1is_integral_3_01char_01_4.html',1,'nctl']]], + ['isintegral_3c_20int_20_3e_1519',['isIntegral< int >',['../structnctl_1_1is_integral_3_01int_01_4.html',1,'nctl']]], + ['isintegral_3c_20long_20_3e_1520',['isIntegral< long >',['../structnctl_1_1is_integral_3_01long_01_4.html',1,'nctl']]], + ['isintegral_3c_20long_20long_20_3e_1521',['isIntegral< long long >',['../structnctl_1_1is_integral_3_01long_01long_01_4.html',1,'nctl']]], + ['isintegral_3c_20short_20int_20_3e_1522',['isIntegral< short int >',['../structnctl_1_1is_integral_3_01short_01int_01_4.html',1,'nctl']]], + ['isintegral_3c_20unsigned_20char_20_3e_1523',['isIntegral< unsigned char >',['../structnctl_1_1is_integral_3_01unsigned_01char_01_4.html',1,'nctl']]], + ['isintegral_3c_20unsigned_20int_20_3e_1524',['isIntegral< unsigned int >',['../structnctl_1_1is_integral_3_01unsigned_01int_01_4.html',1,'nctl']]], + ['isintegral_3c_20unsigned_20long_20_3e_1525',['isIntegral< unsigned long >',['../structnctl_1_1is_integral_3_01unsigned_01long_01_4.html',1,'nctl']]], + ['isintegral_3c_20unsigned_20long_20long_20_3e_1526',['isIntegral< unsigned long long >',['../structnctl_1_1is_integral_3_01unsigned_01long_01long_01_4.html',1,'nctl']]], + ['isintegral_3c_20unsigned_20short_20int_20_3e_1527',['isIntegral< unsigned short int >',['../structnctl_1_1is_integral_3_01unsigned_01short_01int_01_4.html',1,'nctl']]], + ['islessthan_1528',['IsLessThan',['../classnctl_1_1_is_less_than.html',1,'nctl']]], + ['islvaluereference_1529',['isLValueReference',['../structnctl_1_1is_l_value_reference.html',1,'nctl']]], + ['islvaluereference_3c_20t_20_26_20_3e_1530',['isLValueReference< T & >',['../structnctl_1_1is_l_value_reference_3_01_t_01_6_01_4.html',1,'nctl']]], + ['isnotequalto_1531',['IsNotEqualTo',['../classnctl_1_1_is_not_equal_to.html',1,'nctl']]], + ['isnotgreaterthan_1532',['IsNotGreaterThan',['../classnctl_1_1_is_not_greater_than.html',1,'nctl']]], + ['isnotlessthan_1533',['IsNotLessThan',['../classnctl_1_1_is_not_less_than.html',1,'nctl']]], + ['istriviallyconstructible_1534',['isTriviallyConstructible',['../structnctl_1_1is_trivially_constructible.html',1,'nctl']]], + ['istriviallycopyable_1535',['isTriviallyCopyable',['../structnctl_1_1is_trivially_copyable.html',1,'nctl']]], + ['istriviallydestructible_1536',['isTriviallyDestructible',['../structnctl_1_1is_trivially_destructible.html',1,'nctl']]], + ['iteratortraits_1537',['IteratorTraits',['../structnctl_1_1_iterator_traits.html',1,'nctl']]], + ['iteratortraits_3c_20arrayiterator_20_3e_1538',['IteratorTraits< ArrayIterator >',['../structnctl_1_1_iterator_traits.html',1,'nctl']]], + ['iteratortraits_3c_20arrayiterator_3c_20t_2c_20false_20_3e_20_3e_1539',['IteratorTraits< ArrayIterator< T, false > >',['../structnctl_1_1_iterator_traits_3_01_array_iterator_3_01_t_00_01false_01_4_01_4.html',1,'nctl']]], + ['iteratortraits_3c_20arrayiterator_3c_20t_2c_20true_20_3e_20_3e_1540',['IteratorTraits< ArrayIterator< T, true > >',['../structnctl_1_1_iterator_traits_3_01_array_iterator_3_01_t_00_01true_01_4_01_4.html',1,'nctl']]], + ['iteratortraits_3c_20hashmapiterator_3c_20k_2c_20t_2c_20hashfunc_2c_20false_20_3e_20_3e_1541',['IteratorTraits< HashMapIterator< K, T, HashFunc, false > >',['../structnctl_1_1_iterator_traits_3_01_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4_01_4.html',1,'nctl']]], + ['iteratortraits_3c_20hashmapiterator_3c_20k_2c_20t_2c_20hashfunc_2c_20true_20_3e_20_3e_1542',['IteratorTraits< HashMapIterator< K, T, HashFunc, true > >',['../structnctl_1_1_iterator_traits_3_01_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4_01_4.html',1,'nctl']]], + ['iteratortraits_3c_20hashmaplistiterator_3c_20k_2c_20t_2c_20hashfunc_2c_20false_20_3e_20_3e_1543',['IteratorTraits< HashMapListIterator< K, T, HashFunc, false > >',['../structnctl_1_1_iterator_traits_3_01_hash_map_list_iterator_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4_01_4.html',1,'nctl']]], + ['iteratortraits_3c_20hashmaplistiterator_3c_20k_2c_20t_2c_20hashfunc_2c_20true_20_3e_20_3e_1544',['IteratorTraits< HashMapListIterator< K, T, HashFunc, true > >',['../structnctl_1_1_iterator_traits_3_01_hash_map_list_iterator_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4_01_4.html',1,'nctl']]], + ['iteratortraits_3c_20hashsetiterator_3c_20k_2c_20hashfunc_20_3e_20_3e_1545',['IteratorTraits< HashSetIterator< K, HashFunc > >',['../structnctl_1_1_iterator_traits_3_01_hash_set_iterator_3_01_k_00_01_hash_func_01_4_01_4.html',1,'nctl']]], + ['iteratortraits_3c_20hashsetlistiterator_3c_20k_2c_20hashfunc_20_3e_20_3e_1546',['IteratorTraits< HashSetListIterator< K, HashFunc > >',['../structnctl_1_1_iterator_traits_3_01_hash_set_list_iterator_3_01_k_00_01_hash_func_01_4_01_4.html',1,'nctl']]], + ['iteratortraits_3c_20listiterator_3c_20t_2c_20false_20_3e_20_3e_1547',['IteratorTraits< ListIterator< T, false > >',['../structnctl_1_1_iterator_traits_3_01_list_iterator_3_01_t_00_01false_01_4_01_4.html',1,'nctl']]], + ['iteratortraits_3c_20listiterator_3c_20t_2c_20true_20_3e_20_3e_1548',['IteratorTraits< ListIterator< T, true > >',['../structnctl_1_1_iterator_traits_3_01_list_iterator_3_01_t_00_01true_01_4_01_4.html',1,'nctl']]], + ['iteratortraits_3c_20reverseiterator_3c_20iterator_20_3e_20_3e_1549',['IteratorTraits< ReverseIterator< Iterator > >',['../structnctl_1_1_iterator_traits_3_01_reverse_iterator_3_01_iterator_01_4_01_4.html',1,'nctl']]], + ['iteratortraits_3c_20sparsesetiterator_3c_20t_20_3e_20_3e_1550',['IteratorTraits< SparseSetIterator< T > >',['../structnctl_1_1_iterator_traits_3_01_sparse_set_iterator_3_01_t_01_4_01_4.html',1,'nctl']]], + ['iteratortraits_3c_20statichashmapiterator_3c_20k_2c_20t_2c_20hashfunc_2c_20capacity_2c_20false_20_3e_20_3e_1551',['IteratorTraits< StaticHashMapIterator< K, T, HashFunc, Capacity, false > >',['../structnctl_1_1_iterator_traits_3_01_static_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01false_01_4_01_4.html',1,'nctl']]], + ['iteratortraits_3c_20statichashmapiterator_3c_20k_2c_20t_2c_20hashfunc_2c_20capacity_2c_20true_20_3e_20_3e_1552',['IteratorTraits< StaticHashMapIterator< K, T, HashFunc, Capacity, true > >',['../structnctl_1_1_iterator_traits_3_01_static_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01true_01_4_01_4.html',1,'nctl']]], + ['iteratortraits_3c_20statichashsetiterator_3c_20k_2c_20hashfunc_2c_20capacity_20_3e_20_3e_1553',['IteratorTraits< StaticHashSetIterator< K, HashFunc, Capacity > >',['../structnctl_1_1_iterator_traits_3_01_static_hash_set_iterator_3_01_k_00_01_hash_func_00_01_capacity_01_4_01_4.html',1,'nctl']]], + ['iteratortraits_3c_20stringiterator_20_3e_1554',['IteratorTraits< StringIterator >',['../structnctl_1_1_iterator_traits.html',1,'nctl']]], + ['iteratortraits_3c_20stringiterator_3c_20false_20_3e_20_3e_1555',['IteratorTraits< StringIterator< false > >',['../structnctl_1_1_iterator_traits_3_01_string_iterator_3_01false_01_4_01_4.html',1,'nctl']]], + ['iteratortraits_3c_20stringiterator_3c_20true_20_3e_20_3e_1556',['IteratorTraits< StringIterator< true > >',['../structnctl_1_1_iterator_traits_3_01_string_iterator_3_01true_01_4_01_4.html',1,'nctl']]], + ['itexturesaver_1557',['ITextureSaver',['../classncine_1_1_i_texture_saver.html',1,'ncine']]], + ['ithreadcommand_1558',['IThreadCommand',['../classncine_1_1_i_thread_command.html',1,'ncine']]], + ['ithreadpool_1559',['IThreadPool',['../classncine_1_1_i_thread_pool.html',1,'ncine']]] +]; diff --git a/master/search/classes_9.html b/master/search/classes_9.html new file mode 100644 index 0000000000..b8afa8cba8 --- /dev/null +++ b/master/search/classes_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/classes_9.js b/master/search/classes_9.js new file mode 100644 index 0000000000..8fd5b9e00b --- /dev/null +++ b/master/search/classes_9.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['jenkinshashfunc_1560',['JenkinsHashFunc',['../classnctl_1_1_jenkins_hash_func.html',1,'nctl']]], + ['jenkinshashfunc_3c_20const_20char_20_2a_20_3e_1561',['JenkinsHashFunc< const char * >',['../classnctl_1_1_jenkins_hash_func_3_01const_01char_01_5_01_4.html',1,'nctl']]], + ['jenkinshashfunc_3c_20string_20_3e_1562',['JenkinsHashFunc< String >',['../classnctl_1_1_jenkins_hash_func_3_01_string_01_4.html',1,'nctl']]], + ['joyaxisevent_1563',['JoyAxisEvent',['../classncine_1_1_joy_axis_event.html',1,'ncine']]], + ['joybuttonevent_1564',['JoyButtonEvent',['../classncine_1_1_joy_button_event.html',1,'ncine']]], + ['joyconnectionevent_1565',['JoyConnectionEvent',['../classncine_1_1_joy_connection_event.html',1,'ncine']]], + ['joyhatevent_1566',['JoyHatEvent',['../classncine_1_1_joy_hat_event.html',1,'ncine']]], + ['joymappedaxisevent_1567',['JoyMappedAxisEvent',['../classncine_1_1_joy_mapped_axis_event.html',1,'ncine']]], + ['joymappedbuttonevent_1568',['JoyMappedButtonEvent',['../classncine_1_1_joy_mapped_button_event.html',1,'ncine']]], + ['joymappedstate_1569',['JoyMappedState',['../classncine_1_1_joy_mapped_state.html',1,'ncine']]], + ['joystickstate_1570',['JoystickState',['../classncine_1_1_joystick_state.html',1,'ncine']]] +]; diff --git a/master/search/classes_a.html b/master/search/classes_a.html new file mode 100644 index 0000000000..6788af2708 --- /dev/null +++ b/master/search/classes_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/classes_a.js b/master/search/classes_a.js new file mode 100644 index 0000000000..ea7f699ce9 --- /dev/null +++ b/master/search/classes_a.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['keyboardevent_1571',['KeyboardEvent',['../classncine_1_1_keyboard_event.html',1,'ncine']]], + ['keyboardstate_1572',['KeyboardState',['../classncine_1_1_keyboard_state.html',1,'ncine']]] +]; diff --git a/master/search/classes_b.html b/master/search/classes_b.html new file mode 100644 index 0000000000..3fcb49858f --- /dev/null +++ b/master/search/classes_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/classes_b.js b/master/search/classes_b.js new file mode 100644 index 0000000000..1ffa78df98 --- /dev/null +++ b/master/search/classes_b.js @@ -0,0 +1,17 @@ +var searchData= +[ + ['linearallocator_1573',['LinearAllocator',['../classnctl_1_1_linear_allocator.html',1,'nctl']]], + ['list_1574',['List',['../classnctl_1_1_list.html',1,'nctl']]], + ['list_3c_20node_20_3e_1575',['List< Node >',['../classnctl_1_1_list.html',1,'nctl']]], + ['listiterator_1576',['ListIterator',['../classnctl_1_1_list_iterator.html',1,'nctl']]], + ['listnode_1577',['ListNode',['../classnctl_1_1_list_node.html',1,'nctl']]], + ['luacolorutils_1578',['LuaColorUtils',['../classncine_1_1_lua_color_utils.html',1,'ncine']]], + ['luaiappeventhandler_1579',['LuaIAppEventHandler',['../classncine_1_1_lua_i_app_event_handler.html',1,'ncine']]], + ['luaiinputeventhandler_1580',['LuaIInputEventHandler',['../classncine_1_1_lua_i_input_event_handler.html',1,'ncine']]], + ['luarectutils_1581',['LuaRectUtils',['../classncine_1_1_lua_rect_utils.html',1,'ncine']]], + ['luastatemanager_1582',['LuaStateManager',['../classncine_1_1_lua_state_manager.html',1,'ncine']]], + ['luauntrackeduserdata_1583',['LuaUntrackedUserData',['../classncine_1_1_lua_untracked_user_data.html',1,'ncine']]], + ['luavector2utils_1584',['LuaVector2Utils',['../classncine_1_1_lua_vector2_utils.html',1,'ncine']]], + ['luavector3utils_1585',['LuaVector3Utils',['../classncine_1_1_lua_vector3_utils.html',1,'ncine']]], + ['luavector4utils_1586',['LuaVector4Utils',['../classncine_1_1_lua_vector4_utils.html',1,'ncine']]] +]; diff --git a/master/search/classes_c.html b/master/search/classes_c.html new file mode 100644 index 0000000000..2f7b1f3da0 --- /dev/null +++ b/master/search/classes_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/classes_c.js b/master/search/classes_c.js new file mode 100644 index 0000000000..71bbff7529 --- /dev/null +++ b/master/search/classes_c.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['makeuniquereturn_1587',['MakeUniqueReturn',['../structnctl_1_1_make_unique_return.html',1,'nctl']]], + ['makeuniquereturn_3c_20t_5b_5d_2c_20deleter_20_3e_1588',['MakeUniqueReturn< T[], Deleter >',['../structnctl_1_1_make_unique_return_3_01_t_0f_0e_00_01_deleter_01_4.html',1,'nctl']]], + ['makeuniquereturn_3c_20t_5bsize_5d_2c_20deleter_20_3e_1589',['MakeUniqueReturn< T[size], Deleter >',['../structnctl_1_1_make_unique_return_3_01_t_0fsize_0e_00_01_deleter_01_4.html',1,'nctl']]], + ['mallocallocator_1590',['MallocAllocator',['../classnctl_1_1_malloc_allocator.html',1,'nctl']]], + ['matrix4x4_1591',['Matrix4x4',['../classncine_1_1_matrix4x4.html',1,'ncine']]], + ['matrix4x4_3c_20float_20_3e_1592',['Matrix4x4< float >',['../classncine_1_1_matrix4x4.html',1,'ncine']]], + ['meshsprite_1593',['MeshSprite',['../classncine_1_1_mesh_sprite.html',1,'ncine']]], + ['modulohashfunc_1594',['ModuloHashFunc',['../classnctl_1_1_modulo_hash_func.html',1,'nctl']]], + ['monitor_1595',['Monitor',['../structncine_1_1_i_gfx_device_1_1_monitor.html',1,'ncine::IGfxDevice']]], + ['mouseevent_1596',['MouseEvent',['../classncine_1_1_mouse_event.html',1,'ncine']]], + ['mousestate_1597',['MouseState',['../classncine_1_1_mouse_state.html',1,'ncine']]] +]; diff --git a/master/search/classes_d.html b/master/search/classes_d.html new file mode 100644 index 0000000000..f9011e70f0 --- /dev/null +++ b/master/search/classes_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/classes_d.js b/master/search/classes_d.js new file mode 100644 index 0000000000..77d2aa374b --- /dev/null +++ b/master/search/classes_d.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['nuklearcontext_1598',['NuklearContext',['../classncine_1_1_nuklear_context.html',1,'ncine']]], + ['nullaudiodevice_1599',['NullAudioDevice',['../classncine_1_1_null_audio_device.html',1,'ncine']]], + ['nullgfxcapabilities_1600',['NullGfxCapabilities',['../classncine_1_1_null_gfx_capabilities.html',1,'ncine']]], + ['nullindexer_1601',['NullIndexer',['../classncine_1_1_null_indexer.html',1,'ncine']]], + ['nulllogger_1602',['NullLogger',['../classncine_1_1_null_logger.html',1,'ncine']]], + ['nullthreadpool_1603',['NullThreadPool',['../classncine_1_1_null_thread_pool.html',1,'ncine']]] +]; diff --git a/master/search/classes_e.html b/master/search/classes_e.html new file mode 100644 index 0000000000..bb33dcfa5b --- /dev/null +++ b/master/search/classes_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/classes_e.js b/master/search/classes_e.js new file mode 100644 index 0000000000..ff0a66cb68 --- /dev/null +++ b/master/search/classes_e.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['object_1604',['Object',['../classncine_1_1_object.html',1,'ncine']]], + ['openmode_1605',['OpenMode',['../structncine_1_1_i_file_1_1_open_mode.html',1,'ncine::IFile']]] +]; diff --git a/master/search/classes_f.html b/master/search/classes_f.html new file mode 100644 index 0000000000..d1b67daa61 --- /dev/null +++ b/master/search/classes_f.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/classes_f.js b/master/search/classes_f.js new file mode 100644 index 0000000000..00002b562a --- /dev/null +++ b/master/search/classes_f.js @@ -0,0 +1,21 @@ +var searchData= +[ + ['pairimpl_1606',['PairImpl',['../structnctl_1_1detail_1_1_pair_impl.html',1,'nctl::detail']]], + ['pairimpl_3c_20t_20_2a_2c_20defaultdelete_3c_20t_20_3e_20_3e_1607',['PairImpl< T *, DefaultDelete< T > >',['../structnctl_1_1detail_1_1_pair_impl.html',1,'nctl::detail']]], + ['pairimpl_3c_20t_20_2a_2c_20deleter_20_3e_1608',['PairImpl< T *, Deleter >',['../structnctl_1_1detail_1_1_pair_impl.html',1,'nctl::detail']]], + ['pairimpl_3c_20t1_2c_20t2_2c_20true_20_3e_1609',['PairImpl< T1, T2, true >',['../structnctl_1_1detail_1_1_pair_impl_3_01_t1_00_01_t2_00_01true_01_4.html',1,'nctl::detail']]], + ['particle_1610',['Particle',['../classncine_1_1_particle.html',1,'ncine']]], + ['particleaffector_1611',['ParticleAffector',['../classncine_1_1_particle_affector.html',1,'ncine']]], + ['particleinitializer_1612',['ParticleInitializer',['../structncine_1_1_particle_initializer.html',1,'ncine']]], + ['particlesystem_1613',['ParticleSystem',['../classncine_1_1_particle_system.html',1,'ncine']]], + ['pcapplication_1614',['PCApplication',['../classncine_1_1_p_c_application.html',1,'ncine']]], + ['pitchshifterproperties_1615',['PitchShifterProperties',['../structncine_1_1_audio_effect_properties_1_1_pitch_shifter_properties.html',1,'ncine::AudioEffectProperties']]], + ['pngproperties_1616',['PngProperties',['../structncine_1_1_texture_saver_png_1_1_png_properties.html',1,'ncine::TextureSaverPng']]], + ['pointer_1617',['Pointer',['../structncine_1_1_touch_event_1_1_pointer.html',1,'ncine::TouchEvent']]], + ['poolallocator_1618',['PoolAllocator',['../classnctl_1_1_pool_allocator.html',1,'nctl']]], + ['positionaffector_1619',['PositionAffector',['../classncine_1_1_position_affector.html',1,'ncine']]], + ['positionstep_1620',['PositionStep',['../structncine_1_1_position_affector_1_1_position_step.html',1,'ncine::PositionAffector']]], + ['projectionvalues_1621',['ProjectionValues',['../structncine_1_1_camera_1_1_projection_values.html',1,'ncine::Camera']]], + ['properties_1622',['Properties',['../structncine_1_1_audio_filter_1_1_properties.html',1,'ncine::AudioFilter::Properties'],['../structncine_1_1_i_texture_saver_1_1_properties.html',1,'ncine::ITextureSaver::Properties']]], + ['proxyallocator_1623',['ProxyAllocator',['../classnctl_1_1_proxy_allocator.html',1,'nctl']]] +]; diff --git a/master/search/close.svg b/master/search/close.svg new file mode 100644 index 0000000000..a933eea1a2 --- /dev/null +++ b/master/search/close.svg @@ -0,0 +1,31 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/master/search/enums_0.html b/master/search/enums_0.html new file mode 100644 index 0000000000..141fff57be --- /dev/null +++ b/master/search/enums_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/enums_0.js b/master/search/enums_0.js new file mode 100644 index 0000000000..1b95007a9f --- /dev/null +++ b/master/search/enums_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['alignment_2749',['Alignment',['../classncine_1_1_text_node.html#ad15fa8a462e0326caf05a7104913a8d3',1,'ncine::TextNode']]], + ['apitype_2750',['ApiType',['../classncine_1_1_lua_state_manager.html#a827fa27232368ea58cb813a4d8666afb',1,'ncine::LuaStateManager']]] +]; diff --git a/master/search/enums_1.html b/master/search/enums_1.html new file mode 100644 index 0000000000..d29f3b16de --- /dev/null +++ b/master/search/enums_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/enums_1.js b/master/search/enums_1.js new file mode 100644 index 0000000000..19c341da7b --- /dev/null +++ b/master/search/enums_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['blendingfactor_2751',['BlendingFactor',['../classncine_1_1_drawable_node.html#ad1b743c8686244269ac779b45e289d63',1,'ncine::DrawableNode']]], + ['blendingpreset_2752',['BlendingPreset',['../classncine_1_1_drawable_node.html#a78af82c1e3387546763cb57dda08b310',1,'ncine::DrawableNode']]] +]; diff --git a/master/search/enums_2.html b/master/search/enums_2.html new file mode 100644 index 0000000000..59aadf2cbb --- /dev/null +++ b/master/search/enums_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/enums_2.js b/master/search/enums_2.js new file mode 100644 index 0000000000..4e0bc1b1c9 --- /dev/null +++ b/master/search/enums_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['clearmode_2753',['ClearMode',['../classncine_1_1_viewport.html#af65ae2e288ca0cbad4d09a1b740622a6',1,'ncine::Viewport']]] +]; diff --git a/master/search/enums_3.html b/master/search/enums_3.html new file mode 100644 index 0000000000..87c1744308 --- /dev/null +++ b/master/search/enums_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/enums_3.js b/master/search/enums_3.js new file mode 100644 index 0000000000..5404484708 --- /dev/null +++ b/master/search/enums_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['depthstencilformat_2754',['DepthStencilFormat',['../classncine_1_1_viewport.html#ac00e6160e3bacd3bb9bf4f4746f54f02',1,'ncine::Viewport']]], + ['dirtybitpositions_2755',['DirtyBitPositions',['../classncine_1_1_scene_node.html#a07b9d35c1ca971cdf4b03654493ae533',1,'ncine::SceneNode']]] +]; diff --git a/master/search/enums_4.html b/master/search/enums_4.html new file mode 100644 index 0000000000..90dda139cb --- /dev/null +++ b/master/search/enums_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/enums_4.js b/master/search/enums_4.js new file mode 100644 index 0000000000..45b29e9ad2 --- /dev/null +++ b/master/search/enums_4.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['filetype_2756',['FileType',['../classncine_1_1_i_file.html#ad049ac261e62d24ace7b735b2f07269f',1,'ncine::IFile']]], + ['filtering_2757',['Filtering',['../classncine_1_1_texture.html#aab00aa16b4d4f700e0f8719808ff9a26',1,'ncine::Texture']]], + ['fitstrategy_2758',['FitStrategy',['../classnctl_1_1_free_list_allocator.html#a8550f210fe7a97376c6c3c77e07a1172',1,'nctl::FreeListAllocator']]], + ['format_2759',['Format',['../classncine_1_1_texture.html#a293002562a6ec601bf69e17cb1f70512',1,'ncine::Texture']]] +]; diff --git a/master/search/enums_5.html b/master/search/enums_5.html new file mode 100644 index 0000000000..c57b885903 --- /dev/null +++ b/master/search/enums_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/enums_5.js b/master/search/enums_5.js new file mode 100644 index 0000000000..1d7874e4df --- /dev/null +++ b/master/search/enums_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['glversion_2760',['GLVersion',['../classncine_1_1_i_gfx_capabilities.html#a2d25b40e632ba3377f9fbfe3e77132c0',1,'ncine::IGfxCapabilities']]] +]; diff --git a/master/search/enums_6.html b/master/search/enums_6.html new file mode 100644 index 0000000000..ea5e0a6826 --- /dev/null +++ b/master/search/enums_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/enums_6.js b/master/search/enums_6.js new file mode 100644 index 0000000000..1f72be7b20 --- /dev/null +++ b/master/search/enums_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['loglevel_2761',['LogLevel',['../classncine_1_1_i_logger.html#affaac4a89a0679cb24f51be884c0dc44',1,'ncine::ILogger']]], + ['loopmode_2762',['LoopMode',['../classncine_1_1_rect_animation.html#a6c70ab38833425f047687f35e26ae53e',1,'ncine::RectAnimation']]] +]; diff --git a/master/search/enums_7.html b/master/search/enums_7.html new file mode 100644 index 0000000000..d180875747 --- /dev/null +++ b/master/search/enums_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/enums_7.js b/master/search/enums_7.js new file mode 100644 index 0000000000..67facabe64 --- /dev/null +++ b/master/search/enums_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['mousecursormode_2763',['MouseCursorMode',['../classncine_1_1_i_input_manager.html#a1249b2dd851ac2b4a59f0cc51047842b',1,'ncine::IInputManager']]] +]; diff --git a/master/search/enums_8.html b/master/search/enums_8.html new file mode 100644 index 0000000000..71aad59ed7 --- /dev/null +++ b/master/search/enums_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/enums_8.js b/master/search/enums_8.js new file mode 100644 index 0000000000..e1761a3ffb --- /dev/null +++ b/master/search/enums_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['objecttype_2764',['ObjectType',['../classncine_1_1_object.html#a0559e2cfe7802fa475c2c77d0984d587',1,'ncine::Object']]] +]; diff --git a/master/search/enums_9.html b/master/search/enums_9.html new file mode 100644 index 0000000000..22c3d51d54 --- /dev/null +++ b/master/search/enums_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/enums_9.js b/master/search/enums_9.js new file mode 100644 index 0000000000..a9ac62c9aa --- /dev/null +++ b/master/search/enums_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['permission_2765',['Permission',['../classncine_1_1_file_system.html#adf632e43add52e9e2c1d35acde29cd81',1,'ncine::FileSystem']]], + ['playerstate_2766',['PlayerState',['../classncine_1_1_i_audio_player.html#aaf1e31cf9f8d57b478bf785d4f48d058',1,'ncine::IAudioPlayer']]] +]; diff --git a/master/search/enums_a.html b/master/search/enums_a.html new file mode 100644 index 0000000000..ca3b60e26f --- /dev/null +++ b/master/search/enums_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/enums_a.js b/master/search/enums_a.js new file mode 100644 index 0000000000..298ecf8fec --- /dev/null +++ b/master/search/enums_a.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['rendermode_2767',['RenderMode',['../classncine_1_1_font.html#a735257cb2d67a869321ca78922bee774',1,'ncine::Font']]], + ['rewindmode_2768',['RewindMode',['../classncine_1_1_rect_animation.html#a3e3d07baae76c946ae975f7dc9d740d4',1,'ncine::RectAnimation']]] +]; diff --git a/master/search/enums_b.html b/master/search/enums_b.html new file mode 100644 index 0000000000..e85817bade --- /dev/null +++ b/master/search/enums_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/enums_b.js b/master/search/enums_b.js new file mode 100644 index 0000000000..9448942f35 --- /dev/null +++ b/master/search/enums_b.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['sentineltaginit_2769',['SentinelTagInit',['../classnctl_1_1_hash_map_iterator.html#a32a98c33e956b8328df0bd1e7e649414',1,'nctl::HashMapIterator::SentinelTagInit()'],['../classnctl_1_1_hash_map_list_iterator.html#aed2c005b1172d6ba333ecfebb656213b',1,'nctl::HashMapListIterator::SentinelTagInit()'],['../classnctl_1_1_hash_set_iterator.html#a22b0704d2138e75d4c02eb8ffb2b67f7',1,'nctl::HashSetIterator::SentinelTagInit()'],['../classnctl_1_1_hash_set_list_iterator.html#a8f3fe18aeabf0abcd55bfdd687838751',1,'nctl::HashSetListIterator::SentinelTagInit()'],['../classnctl_1_1_static_hash_map_iterator.html#a81ed023987e026bdd88abaea9967ff1a',1,'nctl::StaticHashMapIterator::SentinelTagInit()'],['../classnctl_1_1_static_hash_set_iterator.html#a26d3df036539a27fe0da323f45929c5e',1,'nctl::StaticHashSetIterator::SentinelTagInit()']]], + ['standardlibraries_2770',['StandardLibraries',['../classncine_1_1_lua_state_manager.html#a5e6d84538b89fd895bb8c5c2eb00df0b',1,'ncine::LuaStateManager']]], + ['statebitpositions_2771',['StateBitPositions',['../classncine_1_1_viewport.html#a03e1c053a139049b8bdfa441af2d81c5',1,'ncine::Viewport']]], + ['statisticstracking_2772',['StatisticsTracking',['../classncine_1_1_lua_state_manager.html#a20ff61787178f03edd74fe1074b837d7',1,'ncine::LuaStateManager']]] +]; diff --git a/master/search/enums_c.html b/master/search/enums_c.html new file mode 100644 index 0000000000..2228acf1cb --- /dev/null +++ b/master/search/enums_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/enums_c.js b/master/search/enums_c.js new file mode 100644 index 0000000000..07d2391af7 --- /dev/null +++ b/master/search/enums_c.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['type_2773',['Type',['../classncine_1_1_viewport.html#a12c083906885f6c2d1528f47a316f31e',1,'ncine::Viewport']]] +]; diff --git a/master/search/enums_d.html b/master/search/enums_d.html new file mode 100644 index 0000000000..e6cbbbad1b --- /dev/null +++ b/master/search/enums_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/enums_d.js b/master/search/enums_d.js new file mode 100644 index 0000000000..61b699f26b --- /dev/null +++ b/master/search/enums_d.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['wrap_2774',['Wrap',['../classncine_1_1_texture.html#ad0bf273c6a5c406fe08b698b2ba75e74',1,'ncine::Texture']]] +]; diff --git a/master/search/enumvalues_0.html b/master/search/enumvalues_0.html new file mode 100644 index 0000000000..0d131d95b8 --- /dev/null +++ b/master/search/enumvalues_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/enumvalues_0.js b/master/search/enumvalues_0.js new file mode 100644 index 0000000000..476d70d08f --- /dev/null +++ b/master/search/enumvalues_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['additive_2775',['ADDITIVE',['../classncine_1_1_drawable_node.html#a78af82c1e3387546763cb57dda08b310a8d8c2c7c04ebe2b70bca10a3060ca491',1,'ncine::DrawableNode']]], + ['alpha_2776',['ALPHA',['../classncine_1_1_drawable_node.html#a78af82c1e3387546763cb57dda08b310a002101f8725e5c78d9f30d87f3fa4c87',1,'ncine::DrawableNode']]] +]; diff --git a/master/search/enumvalues_1.html b/master/search/enumvalues_1.html new file mode 100644 index 0000000000..cd9187ab3c --- /dev/null +++ b/master/search/enumvalues_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/enumvalues_1.js b/master/search/enumvalues_1.js new file mode 100644 index 0000000000..6b67b1469c --- /dev/null +++ b/master/search/enumvalues_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['backward_2777',['BACKWARD',['../classncine_1_1_rect_animation.html#a3e3d07baae76c946ae975f7dc9d740d4a6377b4908ae38f9a57fe9120cf179eb1',1,'ncine::RectAnimation']]], + ['beginning_2778',['BEGINNING',['../classnctl_1_1_hash_map_iterator.html#a61bf8679917d49a161b6caf7538be365a2fa24b6703b99278e867f0604b7ed4ed',1,'nctl::HashMapIterator::BEGINNING()'],['../classnctl_1_1_hash_map_list_iterator.html#a3d7ab0e9064294ae36cd1e01357b6cf2a2fa24b6703b99278e867f0604b7ed4ed',1,'nctl::HashMapListIterator::BEGINNING()'],['../classnctl_1_1_hash_set_iterator.html#a24bf0609bf8822df16c32485aa244f5ba2fa24b6703b99278e867f0604b7ed4ed',1,'nctl::HashSetIterator::BEGINNING()'],['../classnctl_1_1_hash_set_list_iterator.html#ae93df2b99a08dee8b7cb51a54cc89e6aa2fa24b6703b99278e867f0604b7ed4ed',1,'nctl::HashSetListIterator::BEGINNING()'],['../classnctl_1_1_static_hash_map_iterator.html#a41678ddc2ebf298bae98bf90bb180e20a2fa24b6703b99278e867f0604b7ed4ed',1,'nctl::StaticHashMapIterator::BEGINNING()'],['../classnctl_1_1_static_hash_set_iterator.html#add67548140b2fd7cb3fe7a681cf47a7fa2fa24b6703b99278e867f0604b7ed4ed',1,'nctl::StaticHashSetIterator::BEGINNING()']]] +]; diff --git a/master/search/enumvalues_2.html b/master/search/enumvalues_2.html new file mode 100644 index 0000000000..2b95d92047 --- /dev/null +++ b/master/search/enumvalues_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/enumvalues_2.js b/master/search/enumvalues_2.js new file mode 100644 index 0000000000..835902b0e9 --- /dev/null +++ b/master/search/enumvalues_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['constants_5fonly_2779',['CONSTANTS_ONLY',['../classncine_1_1_lua_state_manager.html#a827fa27232368ea58cb813a4d8666afba0b20176cc9de7adea90a3c1cbfae0405',1,'ncine::LuaStateManager']]] +]; diff --git a/master/search/enumvalues_3.html b/master/search/enumvalues_3.html new file mode 100644 index 0000000000..bc0ac8a975 --- /dev/null +++ b/master/search/enumvalues_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/enumvalues_3.js b/master/search/enumvalues_3.js new file mode 100644 index 0000000000..22142de11d --- /dev/null +++ b/master/search/enumvalues_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['disabled_2780',['DISABLED',['../classncine_1_1_drawable_node.html#a78af82c1e3387546763cb57dda08b310a055c1a591abb0e8cd86dc969727bcc0b',1,'ncine::DrawableNode::DISABLED()'],['../classncine_1_1_i_input_manager.html#a1249b2dd851ac2b4a59f0cc51047842ba055c1a591abb0e8cd86dc969727bcc0b',1,'ncine::IInputManager::DISABLED()']]] +]; diff --git a/master/search/enumvalues_4.html b/master/search/enumvalues_4.html new file mode 100644 index 0000000000..ef94dd8d71 --- /dev/null +++ b/master/search/enumvalues_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/enumvalues_4.js b/master/search/enumvalues_4.js new file mode 100644 index 0000000000..7e1a20bd13 --- /dev/null +++ b/master/search/enumvalues_4.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['edit_5fonly_2781',['EDIT_ONLY',['../classncine_1_1_lua_state_manager.html#a827fa27232368ea58cb813a4d8666afbac559262f87d37a6ae88355863216362b',1,'ncine::LuaStateManager']]], + ['end_2782',['END',['../classnctl_1_1_hash_map_iterator.html#a61bf8679917d49a161b6caf7538be365ab1a326c06d88bf042f73d70f50197905',1,'nctl::HashMapIterator::END()'],['../classnctl_1_1_hash_map_list_iterator.html#a3d7ab0e9064294ae36cd1e01357b6cf2ab1a326c06d88bf042f73d70f50197905',1,'nctl::HashMapListIterator::END()'],['../classnctl_1_1_hash_set_iterator.html#a24bf0609bf8822df16c32485aa244f5bab1a326c06d88bf042f73d70f50197905',1,'nctl::HashSetIterator::END()'],['../classnctl_1_1_hash_set_list_iterator.html#ae93df2b99a08dee8b7cb51a54cc89e6aab1a326c06d88bf042f73d70f50197905',1,'nctl::HashSetListIterator::END()'],['../classnctl_1_1_static_hash_map_iterator.html#a41678ddc2ebf298bae98bf90bb180e20ab1a326c06d88bf042f73d70f50197905',1,'nctl::StaticHashMapIterator::END()'],['../classnctl_1_1_static_hash_set_iterator.html#add67548140b2fd7cb3fe7a681cf47a7fab1a326c06d88bf042f73d70f50197905',1,'nctl::StaticHashSetIterator::END()']]], + ['every_5fdraw_2783',['EVERY_DRAW',['../classncine_1_1_viewport.html#af65ae2e288ca0cbad4d09a1b740622a6aa4b7435dc6234787c74d628199c653be',1,'ncine::Viewport']]], + ['every_5fframe_2784',['EVERY_FRAME',['../classncine_1_1_viewport.html#af65ae2e288ca0cbad4d09a1b740622a6a761babdf63d6bab8b9a3802119390636',1,'ncine::Viewport']]] +]; diff --git a/master/search/enumvalues_5.html b/master/search/enumvalues_5.html new file mode 100644 index 0000000000..1c2e2f33d1 --- /dev/null +++ b/master/search/enumvalues_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/enumvalues_5.js b/master/search/enumvalues_5.js new file mode 100644 index 0000000000..e5673bda3a --- /dev/null +++ b/master/search/enumvalues_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['from_5fstart_2785',['FROM_START',['../classncine_1_1_rect_animation.html#a3e3d07baae76c946ae975f7dc9d740d4a5d2ab3b037600cb29bae8d22473facbc',1,'ncine::RectAnimation']]], + ['full_2786',['FULL',['../classncine_1_1_lua_state_manager.html#a827fa27232368ea58cb813a4d8666afbaba7de5bc6888294e5884b024a4c894f1',1,'ncine::LuaStateManager']]] +]; diff --git a/master/search/enumvalues_6.html b/master/search/enumvalues_6.html new file mode 100644 index 0000000000..f985df91d9 --- /dev/null +++ b/master/search/enumvalues_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/enumvalues_6.js b/master/search/enumvalues_6.js new file mode 100644 index 0000000000..65dd59635e --- /dev/null +++ b/master/search/enumvalues_6.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['glyph_5fin_5falpha_2787',['GLYPH_IN_ALPHA',['../classncine_1_1_font.html#a735257cb2d67a869321ca78922bee774ac3f41d4335f8001e38791691dda0a503',1,'ncine::Font']]], + ['glyph_5fin_5fred_2788',['GLYPH_IN_RED',['../classncine_1_1_font.html#a735257cb2d67a869321ca78922bee774a9cae41236d13d44b6de15ca44c9ef2a2',1,'ncine::Font']]], + ['glyph_5fsprite_2789',['GLYPH_SPRITE',['../classncine_1_1_font.html#a735257cb2d67a869321ca78922bee774ab1ecf50aee154cc519c4d9ee6cc98507',1,'ncine::Font']]] +]; diff --git a/master/search/enumvalues_7.html b/master/search/enumvalues_7.html new file mode 100644 index 0000000000..7fdf663ddb --- /dev/null +++ b/master/search/enumvalues_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/enumvalues_7.js b/master/search/enumvalues_7.js new file mode 100644 index 0000000000..6064f4a772 --- /dev/null +++ b/master/search/enumvalues_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['hidden_2790',['HIDDEN',['../classncine_1_1_i_input_manager.html#a1249b2dd851ac2b4a59f0cc51047842ba347e628a8f72626a0611ef842fe9d304',1,'ncine::IInputManager']]] +]; diff --git a/master/search/enumvalues_8.html b/master/search/enumvalues_8.html new file mode 100644 index 0000000000..674ccda69a --- /dev/null +++ b/master/search/enumvalues_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/enumvalues_8.js b/master/search/enumvalues_8.js new file mode 100644 index 0000000000..077b9944bf --- /dev/null +++ b/master/search/enumvalues_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['multiply_2791',['MULTIPLY',['../classncine_1_1_drawable_node.html#a78af82c1e3387546763cb57dda08b310a080aaf8d817ada96fca7096b7b55bd30',1,'ncine::DrawableNode']]] +]; diff --git a/master/search/enumvalues_9.html b/master/search/enumvalues_9.html new file mode 100644 index 0000000000..60f15ee386 --- /dev/null +++ b/master/search/enumvalues_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/enumvalues_9.js b/master/search/enumvalues_9.js new file mode 100644 index 0000000000..d2b57a9cdd --- /dev/null +++ b/master/search/enumvalues_9.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['never_2792',['NEVER',['../classncine_1_1_viewport.html#af65ae2e288ca0cbad4d09a1b740622a6a443475558f0168dff92ecde26b98ae5a',1,'ncine::Viewport']]], + ['next_5fframe_5fonly_2793',['NEXT_FRAME_ONLY',['../classncine_1_1_viewport.html#af65ae2e288ca0cbad4d09a1b740622a6afbca4e18f39ba359829b3866c35dc586',1,'ncine::Viewport']]], + ['no_5ftexture_2794',['NO_TEXTURE',['../classncine_1_1_viewport.html#a12c083906885f6c2d1528f47a316f31ea6dda1d13ca27a41db41cc5174dfbc155',1,'ncine::Viewport']]], + ['none_2795',['NONE',['../classncine_1_1_lua_state_manager.html#a827fa27232368ea58cb813a4d8666afbab50339a10e1de285ac99d4c3990b8693',1,'ncine::LuaStateManager']]], + ['normal_2796',['NORMAL',['../classncine_1_1_i_input_manager.html#a1249b2dd851ac2b4a59f0cc51047842ba1e23852820b9154316c7c06e2b7ba051',1,'ncine::IInputManager']]] +]; diff --git a/master/search/enumvalues_a.html b/master/search/enumvalues_a.html new file mode 100644 index 0000000000..ce1064c727 --- /dev/null +++ b/master/search/enumvalues_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/enumvalues_a.js b/master/search/enumvalues_a.js new file mode 100644 index 0000000000..2cbea477fe --- /dev/null +++ b/master/search/enumvalues_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['premultiplied_5falpha_2797',['PREMULTIPLIED_ALPHA',['../classncine_1_1_drawable_node.html#a78af82c1e3387546763cb57dda08b310adeb6ce595975819bfa90d3a85bff1001',1,'ncine::DrawableNode']]] +]; diff --git a/master/search/enumvalues_b.html b/master/search/enumvalues_b.html new file mode 100644 index 0000000000..ec768e7fff --- /dev/null +++ b/master/search/enumvalues_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/enumvalues_b.js b/master/search/enumvalues_b.js new file mode 100644 index 0000000000..1cffb1b502 --- /dev/null +++ b/master/search/enumvalues_b.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['screen_2798',['SCREEN',['../classncine_1_1_viewport.html#a12c083906885f6c2d1528f47a316f31eab8640f4f990ba83d8d8bef816def1b80',1,'ncine::Viewport']]] +]; diff --git a/master/search/enumvalues_c.html b/master/search/enumvalues_c.html new file mode 100644 index 0000000000..bdb4e13152 --- /dev/null +++ b/master/search/enumvalues_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/enumvalues_c.js b/master/search/enumvalues_c.js new file mode 100644 index 0000000000..6683cc67c8 --- /dev/null +++ b/master/search/enumvalues_c.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['this_5fframe_5fonly_2799',['THIS_FRAME_ONLY',['../classncine_1_1_viewport.html#af65ae2e288ca0cbad4d09a1b740622a6a66f5a7a033098187466bc9b8c5a2325c',1,'ncine::Viewport']]] +]; diff --git a/master/search/enumvalues_d.html b/master/search/enumvalues_d.html new file mode 100644 index 0000000000..47a7615969 --- /dev/null +++ b/master/search/enumvalues_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/enumvalues_d.js b/master/search/enumvalues_d.js new file mode 100644 index 0000000000..49556e1940 --- /dev/null +++ b/master/search/enumvalues_d.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['with_5ftexture_2800',['WITH_TEXTURE',['../classncine_1_1_viewport.html#a12c083906885f6c2d1528f47a316f31eae0b0d982b7a660365c2e5a18d34b1556',1,'ncine::Viewport']]] +]; diff --git a/master/search/functions_0.html b/master/search/functions_0.html new file mode 100644 index 0000000000..eb4c5014c4 --- /dev/null +++ b/master/search/functions_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/functions_0.js b/master/search/functions_0.js new file mode 100644 index 0000000000..9b99e881ec --- /dev/null +++ b/master/search/functions_0.js @@ -0,0 +1,77 @@ +var searchData= +[ + ['a_1730',['a',['../classncine_1_1_colorf.html#ad13a20099c0c5d9f7c17e171c5faf05d',1,'ncine::Colorf::a()'],['../classncine_1_1_color.html#a6c344f61bcfcf52784ac27ddfd05b3b6',1,'ncine::Color::a()']]], + ['aabb_1731',['aabb',['../classncine_1_1_drawable_node.html#a76612334ec49a455ab3c6eab7047330b',1,'ncine::DrawableNode']]], + ['abgr_1732',['abgr',['../classncine_1_1_color.html#adf86bc9e76a57105ee90e5dab28ab61a',1,'ncine::Color']]], + ['absalpha_1733',['absAlpha',['../classncine_1_1_scene_node.html#a2f0c012c4fc9f6c4494768881e5fe969',1,'ncine::SceneNode']]], + ['absanchorpoint_1734',['absAnchorPoint',['../classncine_1_1_scene_node.html#a5ed27315b3547819b8e9f6d107563036',1,'ncine::SceneNode']]], + ['abscolor_1735',['absColor',['../classncine_1_1_scene_node.html#aae907bbae29c1c6d1c948f6106dae93e',1,'ncine::SceneNode']]], + ['absheight_1736',['absHeight',['../classncine_1_1_drawable_node.html#ad0ef2c8c4a250784a8c2b03e41fbde7a',1,'ncine::DrawableNode::absHeight()'],['../classncine_1_1_text_node.html#a3366960c703477939706ff21303aadc0',1,'ncine::TextNode::absHeight()']]], + ['abslayer_1737',['absLayer',['../classncine_1_1_scene_node.html#a81338b71f81523f8197a593b00854950',1,'ncine::SceneNode']]], + ['abslineheight_1738',['absLineHeight',['../classncine_1_1_text_node.html#a22870274f73a0c46cc1fec7669678c94',1,'ncine::TextNode']]], + ['absolutejoinpath_1739',['absoluteJoinPath',['../classncine_1_1_file_system.html#abccdc3406a7b400f6f75a17d5f4e4192',1,'ncine::FileSystem']]], + ['absolutepath_1740',['absolutePath',['../classncine_1_1_file_system.html#aa512485e458d587c7bed1fb2ae1b80d9',1,'ncine::FileSystem']]], + ['absposition_1741',['absPosition',['../classncine_1_1_scene_node.html#aea72d2f43fcf7ddd9916c0d4442c79f5',1,'ncine::SceneNode']]], + ['absrotation_1742',['absRotation',['../classncine_1_1_scene_node.html#af3c18a1b8b0030c51033ea0a139c8120',1,'ncine::SceneNode']]], + ['absscale_1743',['absScale',['../classncine_1_1_scene_node.html#ae0c054907b1ca37a9a8c85ede0070286',1,'ncine::SceneNode']]], + ['abssize_1744',['absSize',['../classncine_1_1_drawable_node.html#a72c7c09366182065f9488fc7563feed4',1,'ncine::DrawableNode']]], + ['abswidth_1745',['absWidth',['../classncine_1_1_drawable_node.html#ab8d8a808163443494d940a70e017b4a8',1,'ncine::DrawableNode::absWidth()'],['../classncine_1_1_text_node.html#aceaef72dcf76ea0e9ef6238469134153',1,'ncine::TextNode::absWidth()']]], + ['addaffector_1746',['addAffector',['../classncine_1_1_particle_system.html#ab59a5deeeb2065d601bbea3a2b869de0',1,'ncine::ParticleSystem']]], + ['addanimation_1747',['addAnimation',['../classncine_1_1_animated_sprite.html#a573a96b460b479499eb8c8bda68cb564',1,'ncine::AnimatedSprite::addAnimation(const RectAnimation &anim)'],['../classncine_1_1_animated_sprite.html#a37ddec47d2f75dc629964188d3270d31',1,'ncine::AnimatedSprite::addAnimation(RectAnimation &&anim)']]], + ['addchildnode_1748',['addChildNode',['../classncine_1_1_scene_node.html#aa558ea962fbe909ad525bca13f046cd3',1,'ncine::SceneNode']]], + ['addjoymappingsfromfile_1749',['addJoyMappingsFromFile',['../classncine_1_1_i_input_manager.html#a7fa1e8923dbb6e29b0ae23340bba4b64',1,'ncine::IInputManager']]], + ['addjoymappingsfromstrings_1750',['addJoyMappingsFromStrings',['../classncine_1_1_i_input_manager.html#ac56c53896a81dca4a90fb17df2f37c4e',1,'ncine::IInputManager']]], + ['addobject_1751',['addObject',['../classncine_1_1_i_indexer.html#ad84435ec43d8b25906d2f382c7bb2db3',1,'ncine::IIndexer::addObject()'],['../classncine_1_1_null_indexer.html#a74f6b158fcfaa1648c1b21b94f49a7d8',1,'ncine::NullIndexer::addObject()']]], + ['addpermissions_1752',['addPermissions',['../classncine_1_1_file_system.html#ae6284f5fc4c8dbe419685d5ec8a71b96',1,'ncine::FileSystem']]], + ['addrect_1753',['addRect',['../classncine_1_1_rect_animation.html#a8dd0c579dc90e758a05605c23acc72d1',1,'ncine::RectAnimation::addRect(const Recti &rect)'],['../classncine_1_1_rect_animation.html#ae960a9cdfbcc5fd58450b2348502e414',1,'ncine::RectAnimation::addRect(int x, int y, int w, int h)'],['../classncine_1_1_rect_animation.html#aa80cca962b0c84e0c66b1d8f10a2a56d',1,'ncine::RectAnimation::addRect(int x, int y, int w, int h, float frameDuration)'],['../classncine_1_1_rect_animation.html#a9736c0542b4df36c36a62dff3dcaa14c',1,'ncine::RectAnimation::addRect(const Recti &rect, float frameDuration)']]], + ['addrects_1754',['addRects',['../classncine_1_1_rect_animation.html#a8d9475ffa175d9051abaeee82596c8d8',1,'ncine::RectAnimation::addRects(const Vector2i &size, const Recti &srcRect, unsigned int rectsToSkip, const Vector2i &padding, float frameDuration)'],['../classncine_1_1_rect_animation.html#aba03baaa3370886508be381c88867a5d',1,'ncine::RectAnimation::addRects(const Vector2i &size, const Recti &srcRect, unsigned int rectsToSkip)'],['../classncine_1_1_rect_animation.html#a6e289df8e07638589aebcd73a4f90d88',1,'ncine::RectAnimation::addRects(const Vector2i &size, const Recti &srcRect)']]], + ['affect_1755',['affect',['../classncine_1_1_velocity_affector.html#a2e0bc8571310ba3131b692776b860f54',1,'ncine::VelocityAffector::affect()'],['../classncine_1_1_position_affector.html#a371edb3f03e0173a6c96187f6fd8b11f',1,'ncine::PositionAffector::affect()'],['../classncine_1_1_color_affector.html#a620f6d75f744d6d2b5d620dd2777fc9b',1,'ncine::ColorAffector::affect()'],['../classncine_1_1_rotation_affector.html#ad66f35bbe9d3f1ab87bbb5f257345c39',1,'ncine::RotationAffector::affect()'],['../classncine_1_1_particle_affector.html#a5a23a12d31dd0ccdf55534527ee8fad8',1,'ncine::ParticleAffector::affect(Particle *particle, float normalizedAge)=0'],['../classncine_1_1_particle_affector.html#abb502af507b3920944c69b93eae31203',1,'ncine::ParticleAffector::affect(Particle *particle)'],['../classncine_1_1_size_affector.html#af5b9c5b908734edf03275e2ad939830c',1,'ncine::SizeAffector::affect()']]], + ['affectors_1756',['affectors',['../classncine_1_1_particle_system.html#a4a3c90963a81184fe1dd0d94b7321662',1,'ncine::ParticleSystem::affectors()'],['../classncine_1_1_particle_system.html#a33d3895ed91a82eec89b85ecc2f848fa',1,'ncine::ParticleSystem::affectors() const']]], + ['alignment_1757',['alignment',['../classncine_1_1_text_node.html#ab1fd5332757e00c8edf0c54a56f07e2b',1,'ncine::TextNode']]], + ['all_1758',['all',['../classnctl_1_1_bit_set.html#af9d2b6efefd168c463d485b1aab5f3d9',1,'nctl::BitSet']]], + ['allocate_1759',['allocate',['../classnctl_1_1_i_allocator.html#ab379ab0d8c9cda39d76ea06965ad8996',1,'nctl::IAllocator']]], + ['alpha_1760',['alpha',['../classncine_1_1_scene_node.html#a6e7edd280d0b4f849e81eb1d91b52d0f',1,'ncine::SceneNode']]], + ['alphabits_1761',['alphaBits',['../classncine_1_1_display_mode.html#a0a6abaf1be2e9e278152cfa3278208f3',1,'ncine::DisplayMode']]], + ['anchorpoint_1762',['anchorPoint',['../classncine_1_1_drawable_node.html#a9fdc3d479066781f5dd786bb03e906f7',1,'ncine::DrawableNode']]], + ['animatedsprite_1763',['AnimatedSprite',['../classncine_1_1_animated_sprite.html#a0c46c2293abac49b6d2eb2b08598963a',1,'ncine::AnimatedSprite::AnimatedSprite(Texture *texture, float xx, float yy)'],['../classncine_1_1_animated_sprite.html#a24cab392d9e378bb6258561ce362e061',1,'ncine::AnimatedSprite::AnimatedSprite(const AnimatedSprite &other)'],['../classncine_1_1_animated_sprite.html#aa8deaf661503751a6441d1f6c86c14bc',1,'ncine::AnimatedSprite::AnimatedSprite(AnimatedSprite &&)=default'],['../classncine_1_1_animated_sprite.html#ac9e052d9dce4d5c94bd1662d0950035a',1,'ncine::AnimatedSprite::AnimatedSprite(Texture *texture, const Vector2f &position)'],['../classncine_1_1_animated_sprite.html#aacdf6a72d79d9cd8d10868561e95e829',1,'ncine::AnimatedSprite::AnimatedSprite(SceneNode *parent, Texture *texture, float xx, float yy)'],['../classncine_1_1_animated_sprite.html#acaf4f384d25c46484edc7d257be1a8a6',1,'ncine::AnimatedSprite::AnimatedSprite(Texture *texture)'],['../classncine_1_1_animated_sprite.html#afbebac5b916029f3d28cbbd3cf287276',1,'ncine::AnimatedSprite::AnimatedSprite(SceneNode *parent, Texture *texture)'],['../classncine_1_1_animated_sprite.html#adb385156b0e5e9023c62a34af5d67d55',1,'ncine::AnimatedSprite::AnimatedSprite()'],['../classncine_1_1_animated_sprite.html#a415bd54954cd48bbae36d642cb7b0428',1,'ncine::AnimatedSprite::AnimatedSprite(SceneNode *parent, Texture *texture, const Vector2f &position)']]], + ['animationindex_1764',['animationIndex',['../classncine_1_1_animated_sprite.html#afb2877b77b4ff373046ab62ddefd79e9',1,'ncine::AnimatedSprite']]], + ['animations_1765',['animations',['../classncine_1_1_animated_sprite.html#a84a70165163877045aa382cbabd4e149',1,'ncine::AnimatedSprite::animations()'],['../classncine_1_1_animated_sprite.html#a99993114c726603b3a9a0cfd95f309b5',1,'ncine::AnimatedSprite::animations() const']]], + ['any_1766',['any',['../classnctl_1_1_bit_set.html#a0bf9d762d0448764809c58b6fb050c3c',1,'nctl::BitSet']]], + ['appconfiguration_1767',['AppConfiguration',['../classncine_1_1_app_configuration.html#acfa836699ff14029fe75a014a8e836ed',1,'ncine::AppConfiguration']]], + ['appconfiguration_1768',['appConfiguration',['../classncine_1_1_application.html#ab3013f4a13fd6942d5d04b86401f57a9',1,'ncine::Application']]], + ['append_1769',['append',['../classnctl_1_1_static_string.html#ab85f6a626b7e557a1d0c4e1b44cb1354',1,'nctl::StaticString::append(const StaticString &other)'],['../classnctl_1_1_static_string.html#a55174fa02f957d6af3bfa057efdd9351',1,'nctl::StaticString::append(const StaticString< U > &other)'],['../classnctl_1_1_static_string.html#a4c08b071f99e9ec43a0478eb6054a771',1,'nctl::StaticString::append(const char *cString)'],['../classnctl_1_1_string.html#ad1d9121afd285dbdf41f3381f2e12a12',1,'nctl::String::append(const String &other)'],['../classnctl_1_1_string.html#a41e7ab33e58c5d95c7256a37c4a6b0f9',1,'nctl::String::append(const char *cString)']]], + ['applyeffect_1770',['applyEffect',['../classncine_1_1_audio_effect_slot.html#ae6a84751fc9b6567442b99745a898d6b',1,'ncine::AudioEffectSlot']]], + ['applyproperties_1771',['applyProperties',['../classncine_1_1_audio_effect.html#a02a5a7f5d91e618e63becc8ec53f415d',1,'ncine::AudioEffect::applyProperties()'],['../classncine_1_1_audio_filter.html#a07344c1886af1f77e61751199df915c9',1,'ncine::AudioFilter::applyProperties()']]], + ['applysourceproperties_1772',['applySourceProperties',['../classncine_1_1_i_audio_player.html#a5434a90c79eafd0471b25596976dc8df',1,'ncine::IAudioPlayer']]], + ['areaffectorsenabled_1773',['areAffectorsEnabled',['../classncine_1_1_particle_system.html#a67825080b5a2c511efda4a3a207d9478',1,'ncine::ParticleSystem']]], + ['argb_1774',['argb',['../classncine_1_1_color.html#a0dd0d247c199a2668fd43c1f550258c8',1,'ncine::Color']]], + ['argc_1775',['argc',['../classncine_1_1_app_configuration.html#a5efb053b8be6bbd0485debc53e56cfea',1,'ncine::AppConfiguration']]], + ['argv_1776',['argv',['../classncine_1_1_app_configuration.html#a17ceb9434471ec517da5fae9ce3c6bb2',1,'ncine::AppConfiguration']]], + ['array_1777',['Array',['../classnctl_1_1_array.html#a8161fd9cf18abcf3a0ea4570f22ee53e',1,'nctl::Array::Array(Array &&other)'],['../classnctl_1_1_array.html#ac9ed9eae7df604774e186d7c5393b250',1,'nctl::Array::Array(const Array &other)'],['../classnctl_1_1_array.html#aa3d023ab04e4c7fd5095a5abcfd6d26d',1,'nctl::Array::Array(unsigned int capacity, ArrayMode mode)'],['../classnctl_1_1_array.html#a9eec10d5cf8e4bfb76c89163c214516d',1,'nctl::Array::Array(unsigned int capacity)'],['../classnctl_1_1_array.html#a4e2158fc1a5a0c4d3b58ca6857a193b1',1,'nctl::Array::Array()']]], + ['arrayiterator_1778',['ArrayIterator',['../classnctl_1_1_array_iterator.html#af9865f06250011128a57aa7e52a16abb',1,'nctl::ArrayIterator']]], + ['arrayvalue_1779',['arrayValue',['../classncine_1_1_i_gfx_capabilities.html#aad15b615357afb2b9b12cbfbf8178697',1,'ncine::IGfxCapabilities']]], + ['aspect_1780',['aspect',['../classncine_1_1_i_gfx_device.html#a4f160540be30380d05f29e3d0ce0afe5',1,'ncine::IGfxDevice']]], + ['assetfile_1781',['AssetFile',['../classncine_1_1_asset_file.html#a529d2020a0d00690856ff2baadf04ca8',1,'ncine::AssetFile']]], + ['assetpath_1782',['assetPath',['../classncine_1_1_asset_file.html#a4bb6c0b209b50d0c281e716da8a6d075',1,'ncine::AssetFile']]], + ['assign_1783',['assign',['../classnctl_1_1_static_string.html#a2781a12a0ac789902d76a2d9d1b7e2c3',1,'nctl::StaticString::assign()'],['../classnctl_1_1_string.html#a6f717dbe0dbf5d029b7df80c966a9070',1,'nctl::String::assign(const char *source, unsigned int numChar)'],['../classnctl_1_1_string.html#a8eba6f69e5b98deff52e8efd538bf932',1,'nctl::String::assign(const String &source)'],['../classnctl_1_1_string.html#a6fdb297366bf1a8eb598aca5037caaea',1,'nctl::String::assign(const String &source, unsigned int srcChar, unsigned int numChar)'],['../classnctl_1_1_static_string.html#a831a65bb117539af56c1c7a710fc489a',1,'nctl::StaticString::assign(const StaticString< U > &source)'],['../classnctl_1_1_static_string.html#aaf84df953fb47b9f74d6533f5f63b5d8',1,'nctl::StaticString::assign(const StaticString &source, unsigned int srcChar, unsigned int numChar)'],['../classnctl_1_1_static_string.html#a7b0c6a361398bf6210caa3e1fe982edc',1,'nctl::StaticString::assign(const StaticString< U > &source, unsigned int srcChar, unsigned int numChar)'],['../classnctl_1_1_static_string.html#ae4a87c7d43692ba705e85d80c3443678',1,'nctl::StaticString::assign(const char *source, unsigned int numChar)']]], + ['at_1784',['at',['../classnctl_1_1_static_string.html#afee7cc68fcf6817e23db5a24c8173d1c',1,'nctl::StaticString::at()'],['../classnctl_1_1_string.html#acd20c46c4d005af2be3733d5934d08e4',1,'nctl::String::at(unsigned int index)'],['../classnctl_1_1_string.html#aaad05906bd3d670b8b9c0b922b73dad7',1,'nctl::String::at(unsigned int index) const'],['../classnctl_1_1_static_string.html#abad48923d6f21bbee787fb85a3f3a1c4',1,'nctl::StaticString::at()'],['../classnctl_1_1_static_array.html#a438f7e6e35675df8f6c1b8f0da98ac9a',1,'nctl::StaticArray::at(unsigned int index)'],['../classnctl_1_1_static_array.html#a78665e240668cb6d14673de915eb012a',1,'nctl::StaticArray::at(unsigned int index) const'],['../classnctl_1_1_array.html#a4cb4680962693ce972f56a0fa0492deb',1,'nctl::Array::at(unsigned int index)'],['../classnctl_1_1_array.html#af9a6027709f448a249697a7ffd90eb92',1,'nctl::Array::at(unsigned int index) const']]], + ['attributes_1785',['attributes',['../classncine_1_1_i_audio_device.html#af6a4a2d5fa00c9d95ef02b416ddafd17',1,'ncine::IAudioDevice::attributes()'],['../classncine_1_1_null_audio_device.html#a726eba084d752f4022611d64fe7eadb7',1,'ncine::NullAudioDevice::attributes()']]], + ['audiobuffer_1786',['audioBuffer',['../classncine_1_1_audio_buffer_player.html#a5260fb97e7969843e9229caccb307b1a',1,'ncine::AudioBufferPlayer']]], + ['audiobuffer_1787',['AudioBuffer',['../classncine_1_1_audio_buffer.html#a35d5d7a893bf45de6cef669dad3a17af',1,'ncine::AudioBuffer::AudioBuffer(const char *bufferName, const unsigned char *bufferPtr, unsigned long int bufferSize)'],['../classncine_1_1_audio_buffer.html#ae8db960bd3149a5b3066a481ab1165dc',1,'ncine::AudioBuffer::AudioBuffer(AudioBuffer &&other)'],['../classncine_1_1_audio_buffer.html#a1e04581802f21b948d5a7505d358309d',1,'ncine::AudioBuffer::AudioBuffer()'],['../classncine_1_1_audio_buffer.html#a486fcd33697e8e695945ef2d7ce9409a',1,'ncine::AudioBuffer::AudioBuffer(const char *filename)']]], + ['audiobufferplayer_1788',['AudioBufferPlayer',['../classncine_1_1_audio_buffer_player.html#afe6d9726378bc6967aa746118c9a600b',1,'ncine::AudioBufferPlayer::AudioBufferPlayer()'],['../classncine_1_1_audio_buffer_player.html#a4e6750b0bd94e29525ae44ad1ec21b08',1,'ncine::AudioBufferPlayer::AudioBufferPlayer(AudioBuffer *audioBuffer)'],['../classncine_1_1_audio_buffer_player.html#a10ac8fa8f08dfb07c5dc8f5df8b4dcef',1,'ncine::AudioBufferPlayer::AudioBufferPlayer(AudioBufferPlayer &&)=default']]], + ['audiodevice_1789',['audioDevice',['../classncine_1_1_service_locator.html#aaca22f75b46a4eafd10538b907de3e56',1,'ncine::ServiceLocator']]], + ['audioeffect_1790',['AudioEffect',['../classncine_1_1_audio_effect.html#a385ec9dbc1c32b473bb0fba61326d9c4',1,'ncine::AudioEffect::AudioEffect()'],['../classncine_1_1_audio_effect.html#a6721c71eec3ff656b28fce94e465e7b6',1,'ncine::AudioEffect::AudioEffect(Type type)'],['../classncine_1_1_audio_effect.html#aa5b1c1074bd88a0db9ffd7d61a3e7426',1,'ncine::AudioEffect::AudioEffect(AudioEffect &&other)']]], + ['audioeffectproperties_1791',['AudioEffectProperties',['../classncine_1_1_audio_effect_properties.html#a9026e74ad71d4b7dce5b441ed10b1d25',1,'ncine::AudioEffectProperties::AudioEffectProperties()'],['../classncine_1_1_audio_effect_properties.html#a423053782a363cb2b25add259c2b144f',1,'ncine::AudioEffectProperties::AudioEffectProperties(AudioEffect::Type type)'],['../classncine_1_1_audio_effect_properties.html#a5d2bc235098da78a60b6c5f5a2987c86',1,'ncine::AudioEffectProperties::AudioEffectProperties(AudioEffectProperties &&other)=default'],['../classncine_1_1_audio_effect_properties.html#aeebfedf42c41b0862045ad9d11dd251d',1,'ncine::AudioEffectProperties::AudioEffectProperties(const AudioEffectProperties &)=default']]], + ['audioeffectslot_1792',['AudioEffectSlot',['../classncine_1_1_audio_effect_slot.html#aa9dfa46f177f905d8b2b56976714443c',1,'ncine::AudioEffectSlot::AudioEffectSlot()'],['../classncine_1_1_audio_effect_slot.html#a82a364de8d8cae64b72f055f9cbdea64',1,'ncine::AudioEffectSlot::AudioEffectSlot(AudioEffectSlot &&other)']]], + ['audiofilter_1793',['AudioFilter',['../classncine_1_1_audio_filter.html#a302061e52377e0237cd074f9dacd6749',1,'ncine::AudioFilter::AudioFilter(AudioFilter &&other)'],['../classncine_1_1_audio_filter.html#a1074ad54fdc715171a6dc15ffbf03ca3',1,'ncine::AudioFilter::AudioFilter(Type type)'],['../classncine_1_1_audio_filter.html#a1504b106209f57a0c731c5e66320ac21',1,'ncine::AudioFilter::AudioFilter()']]], + ['audiostreamplayer_1794',['AudioStreamPlayer',['../classncine_1_1_audio_stream_player.html#ac4ef009101aa3caaab8255ef99a27b44',1,'ncine::AudioStreamPlayer::AudioStreamPlayer()'],['../classncine_1_1_audio_stream_player.html#aabe33107dab30c7b94afde8d57263f17',1,'ncine::AudioStreamPlayer::AudioStreamPlayer(const char *bufferName, const unsigned char *bufferPtr, unsigned long int bufferSize)'],['../classncine_1_1_audio_stream_player.html#a3af964c87d30aad1407d37476da1dd7a',1,'ncine::AudioStreamPlayer::AudioStreamPlayer(const char *filename)'],['../classncine_1_1_audio_stream_player.html#a7b746e152dd976cfa272360c2eff3aff',1,'ncine::AudioStreamPlayer::AudioStreamPlayer(AudioStreamPlayer &&)=default']]], + ['autosuspension_1795',['autoSuspension',['../classncine_1_1_application.html#a37e63ec5d92280fe4d3cd3e5fa0e8a0a',1,'ncine::Application']]], + ['autowahproperties_1796',['autoWahProperties',['../classncine_1_1_audio_effect_properties.html#ae339f719b87396a5610aa5b9e8fcd535',1,'ncine::AudioEffectProperties::autoWahProperties() const'],['../classncine_1_1_audio_effect_properties.html#afe2c677512c722256bfdddeb5ccca73a',1,'ncine::AudioEffectProperties::autoWahProperties()']]], + ['auxsendauto_1797',['auxSendAuto',['../classncine_1_1_audio_effect_slot.html#acc0052deea6f128410a56ac01c3a706c',1,'ncine::AudioEffectSlot']]], + ['averageenabled_1798',['averageEnabled',['../classncine_1_1_i_frame_timer.html#a8655d33793fa4516db0b02420b16532b',1,'ncine::IFrameTimer']]], + ['averagefps_1799',['averageFps',['../classncine_1_1_i_frame_timer.html#a108526cce614053fc680db50fdbf5895',1,'ncine::IFrameTimer']]], + ['averageframetime_1800',['averageFrameTime',['../classncine_1_1_i_frame_timer.html#a61fbb414ab2abfa06c47181c6f78f5e3',1,'ncine::IFrameTimer']]], + ['averageinterval_1801',['averageInterval',['../classncine_1_1_i_frame_timer.html#afc4f35550b760771eee40f246a3d65fd',1,'ncine::IFrameTimer']]], + ['axisnormvalue_1802',['axisNormValue',['../classncine_1_1_joystick_state.html#a0a79036af1285dac11564d2fa900e7cf',1,'ncine::JoystickState']]], + ['axisvalue_1803',['axisValue',['../classncine_1_1_joystick_state.html#a6ced33f05833432465d0fb7eef79ea55',1,'ncine::JoystickState::axisValue()'],['../classncine_1_1_joy_mapped_state.html#a74c2eecbcedd2036c27783eebf5fde0b',1,'ncine::JoyMappedState::axisValue()']]] +]; diff --git a/master/search/functions_1.html b/master/search/functions_1.html new file mode 100644 index 0000000000..ef4088b89b --- /dev/null +++ b/master/search/functions_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/functions_1.js b/master/search/functions_1.js new file mode 100644 index 0000000000..bb842188c3 --- /dev/null +++ b/master/search/functions_1.js @@ -0,0 +1,20 @@ +var searchData= +[ + ['b_1804',['b',['../classncine_1_1_colorf.html#a8f2b0781b6eb5bb8905b8358a9f3fe85',1,'ncine::Colorf::b()'],['../classncine_1_1_color_hdr.html#a1c1f46d78a13259e830e428f0c1e0bef',1,'ncine::ColorHdr::b()'],['../classncine_1_1_color.html#aea6572114d4abe167e7e43aef2516f10',1,'ncine::Color::b()']]], + ['back_1805',['back',['../classnctl_1_1_array.html#a0e919f696c4c28a1338a041a40c377b8',1,'nctl::Array::back() const'],['../classnctl_1_1_array.html#a4fb4d7c244bed38ff2e2e5bb7017b592',1,'nctl::Array::back()'],['../classnctl_1_1_list.html#acab294ca9db7f04a58303c32e86435ed',1,'nctl::List::back() const'],['../classnctl_1_1_list.html#a30a7730fe471027164cc78496c490594',1,'nctl::List::back()'],['../classnctl_1_1_static_array.html#ad81054d322d4366e372ef8c357b9eafc',1,'nctl::StaticArray::back() const'],['../classnctl_1_1_static_array.html#a7d3893f0d502d931dfabcf8fa14e5a81',1,'nctl::StaticArray::back()']]], + ['base_1806',['base',['../classncine_1_1_font.html#a3f17f7eb1339f0eb0ab960ddc3b050e6',1,'ncine::Font::base()'],['../classnctl_1_1_i_allocator.html#a8fd0206ed4cfba631e0b5de5a3f4bb9f',1,'nctl::IAllocator::base()'],['../classnctl_1_1_reverse_iterator.html#a5da304e0a7d8897fb8e21b1a8a049ac3',1,'nctl::ReverseIterator::base()']]], + ['basename_1807',['baseName',['../classncine_1_1_file_system.html#a39c1a69ff795b4cf40a6d8df860db572',1,'ncine::FileSystem']]], + ['basescale_1808',['baseScale',['../classncine_1_1_size_affector.html#aa1a5b82023d1a4b9b103512c20a4cb61',1,'ncine::SizeAffector']]], + ['basesprite_1809',['BaseSprite',['../classncine_1_1_base_sprite.html#a48458f5cff97c9f29eff1d6e69345a9c',1,'ncine::BaseSprite::BaseSprite(SceneNode *parent, Texture *texture, float xx, float yy)'],['../classncine_1_1_base_sprite.html#ae97640019cd797f0877bfc42543fd54d',1,'ncine::BaseSprite::BaseSprite(const BaseSprite &other)'],['../classncine_1_1_base_sprite.html#a72d7a8be8395dd5914e18930faecd0c5',1,'ncine::BaseSprite::BaseSprite(SceneNode *parent, Texture *texture, const Vector2f &position)'],['../classncine_1_1_base_sprite.html#a2e391c04b61f75cb395c8348f86f8a1a',1,'ncine::BaseSprite::BaseSprite(BaseSprite &&)=default']]], + ['begin_1810',['begin',['../classnctl_1_1_static_hash_map.html#afde07da31e0795da850db065849c75aa',1,'nctl::StaticHashMap::begin()'],['../classnctl_1_1_string.html#a9ac5f5c75b8ffe9ffde2f8b681e4a778',1,'nctl::String::begin() const'],['../classnctl_1_1_string.html#abc6fca16bae46d0d6bf7115cf3f005a3',1,'nctl::String::begin()'],['../classnctl_1_1_static_string.html#a72b017b740b6b3d99ab8fae9b544ea46',1,'nctl::StaticString::begin() const'],['../classnctl_1_1_static_string.html#a1ab28ced09572ff09fbf3f57c10d3dff',1,'nctl::StaticString::begin()'],['../classnctl_1_1_static_hash_set.html#a7613389d4a56ee5171156ed021a1a279',1,'nctl::StaticHashSet::begin() const'],['../classnctl_1_1_static_hash_set.html#a49b421b8dbfc1b103d08a2b0b2006f25',1,'nctl::StaticHashSet::begin()'],['../classnctl_1_1_static_hash_map.html#a13eb0c17b20f5401c0178eb8ab8db646',1,'nctl::StaticHashMap::begin()'],['../classnctl_1_1_static_array.html#ac07b1cc20ddfb7dc0f257e329d28ac89',1,'nctl::StaticArray::begin() const'],['../classnctl_1_1_static_array.html#a854d8041534d5be804baaf97d7d9e79d',1,'nctl::StaticArray::begin()'],['../classnctl_1_1_sparse_set.html#a1f4b039876d496df866b15fa19bc569d',1,'nctl::SparseSet::begin() const'],['../classnctl_1_1_sparse_set.html#a5616e7eb9fcdab2812dca05fc5de0b89',1,'nctl::SparseSet::begin()'],['../classnctl_1_1_hash_map.html#a2f934be0e958d0c9f5b2eed6625de8b8',1,'nctl::HashMap::begin()'],['../classnctl_1_1_list.html#a2afb4cefe00503eddb6ec3110d6cb5dc',1,'nctl::List::begin()'],['../classnctl_1_1_array.html#a2d4319f3628397e0c7b56e6ee7b4c40b',1,'nctl::Array::begin()'],['../classnctl_1_1_array.html#a1c3640c9ec21c67633d4f09b256f985a',1,'nctl::Array::begin() const'],['../classnctl_1_1_hash_map.html#af14cb3ef6c2efa3be860685e9a126681',1,'nctl::HashMap::begin()'],['../classnctl_1_1_hash_map_list.html#a7025fc85e724d93f8c6c381f46c1b3f7',1,'nctl::HashMapList::begin()'],['../classnctl_1_1_hash_map_list.html#a7f668877d10dc7cf6d1f29b89edf144c',1,'nctl::HashMapList::begin() const'],['../classnctl_1_1_hash_set.html#a8d259fe2de327eb67f3af150889142c4',1,'nctl::HashSet::begin()'],['../classnctl_1_1_hash_set.html#a4c4d4178dbdb90fc2d6758f6afc14b63',1,'nctl::HashSet::begin() const'],['../classnctl_1_1_hash_set_list.html#aab4e28186e00bc560f5270b708000c52',1,'nctl::HashSetList::begin()'],['../classnctl_1_1_hash_set_list.html#a7171498bed2cc2dfb5f9170ff5afdfa1',1,'nctl::HashSetList::begin() const'],['../classnctl_1_1_list.html#a38db99682627b809755388c82eb270be',1,'nctl::List::begin()']]], + ['bgra_1811',['bgra',['../classncine_1_1_color.html#a9fe0a36b3bdf1b0d03a6f19c74724f9b',1,'ncine::Color']]], + ['bluebits_1812',['blueBits',['../classncine_1_1_display_mode.html#a122e7a8e71be582f41a3686778bfe1df',1,'ncine::DisplayMode']]], + ['bucket_1813',['bucket',['../classnctl_1_1_hash_map_list.html#a441bb5e0c46f2000b63fd0b10a7139e2',1,'nctl::HashMapList::bucket()'],['../classnctl_1_1_hash_set_list.html#ab2e3761dc865e0e0a12a3955a1121c90',1,'nctl::HashSetList::bucket()']]], + ['bucketamount_1814',['bucketAmount',['../classnctl_1_1_hash_map_list.html#a885c1bada58343ff476d67d7f08cf770',1,'nctl::HashMapList::bucketAmount()'],['../classnctl_1_1_hash_set_list.html#ab9cc43bf106de257933296046c60c584',1,'nctl::HashSetList::bucketAmount() const']]], + ['bucketsize_1815',['bucketSize',['../classnctl_1_1_hash_set_list.html#abe510accaba1f873fd219f0d96bac9b7',1,'nctl::HashSetList::bucketSize()'],['../classnctl_1_1_hash_map_list.html#a4fb0d93a1881bd40bc33f706dcd949d6',1,'nctl::HashMapList::bucketSize()']]], + ['bufferid_1816',['bufferId',['../classncine_1_1_audio_buffer.html#a5cfecde2e73eb24cf93151b8f0d97f1a',1,'ncine::AudioBuffer::bufferId()'],['../classncine_1_1_audio_buffer_player.html#aded180743ebbaf6a23279f53dfd94f72',1,'ncine::AudioBufferPlayer::bufferId()'],['../classncine_1_1_audio_stream.html#a8c755d69fe5fc8e182fa15cb72efd590',1,'ncine::AudioStream::bufferId()'],['../classncine_1_1_audio_stream_player.html#ac44b1267f6eb7de51be26dbdf04bc49b',1,'ncine::AudioStreamPlayer::bufferId()'],['../classncine_1_1_i_audio_player.html#afa5bbc5aa1e721edae3e8b97d4f6dc73',1,'ncine::IAudioPlayer::bufferId()']]], + ['bufferptr_1817',['bufferPtr',['../classncine_1_1_i_file.html#ac4cdb3ab1f4540917a60f3074c1113e8',1,'ncine::IFile::bufferPtr() const'],['../classncine_1_1_i_file.html#ab952c7c0c47fe8cd9e9dab4786c2a7d6',1,'ncine::IFile::bufferPtr()']]], + ['buffersize_1818',['bufferSize',['../classncine_1_1_audio_buffer_player.html#ab7be4b061b25bcf98e92a97f79b86954',1,'ncine::AudioBufferPlayer::bufferSize()'],['../classncine_1_1_i_audio_player.html#acad4e8cb44123e88d2c8575a6d2e0569',1,'ncine::IAudioPlayer::bufferSize()'],['../classncine_1_1_audio_stream_player.html#a3b16f0c399c8699a51b58264120f26e6',1,'ncine::AudioStreamPlayer::bufferSize()'],['../classncine_1_1_audio_stream.html#adabfa9da9d164a70547d174d2bba7558',1,'ncine::AudioStream::bufferSize()'],['../classncine_1_1_audio_buffer.html#af352ddd2feba0d1af486f70aeace672f',1,'ncine::AudioBuffer::bufferSize() const']]], + ['bytespersample_1819',['bytesPerSample',['../classncine_1_1_audio_buffer.html#a9e5d3e8399cf9d5b759967761dcd4fab',1,'ncine::AudioBuffer::bytesPerSample()'],['../classncine_1_1_audio_buffer_player.html#aa084dc5db8d238b78f83faf9dfe324ed',1,'ncine::AudioBufferPlayer::bytesPerSample()'],['../classncine_1_1_audio_stream.html#a03632b5a49d08f41b9706df7543fa0ac',1,'ncine::AudioStream::bytesPerSample()'],['../classncine_1_1_audio_stream_player.html#a9afe9691559dfd708c871375b3a0bd0f',1,'ncine::AudioStreamPlayer::bytesPerSample()'],['../classncine_1_1_i_audio_player.html#a9749f3a99b6fe8fbe62b9a6b0697177d',1,'ncine::IAudioPlayer::bytesPerSample()']]], + ['bytespervertex_1820',['bytesPerVertex',['../classncine_1_1_mesh_sprite.html#a2c7517ed391709e185c676260eb67d9c',1,'ncine::MeshSprite']]] +]; diff --git a/master/search/functions_10.html b/master/search/functions_10.html new file mode 100644 index 0000000000..1bdc125722 --- /dev/null +++ b/master/search/functions_10.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/functions_10.js b/master/search/functions_10.js new file mode 100644 index 0000000000..3f7f2d795d --- /dev/null +++ b/master/search/functions_10.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['quit_2254',['quit',['../classncine_1_1_application.html#ad057c44ada576793aabaf6a3e6cc8bd0',1,'ncine::Application']]] +]; diff --git a/master/search/functions_11.html b/master/search/functions_11.html new file mode 100644 index 0000000000..188076ef28 --- /dev/null +++ b/master/search/functions_11.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/functions_11.js b/master/search/functions_11.js new file mode 100644 index 0000000000..02c8803454 --- /dev/null +++ b/master/search/functions_11.js @@ -0,0 +1,73 @@ +var searchData= +[ + ['r_2255',['r',['../classncine_1_1_colorf.html#ad67f359ac02b4a380d7d0b56a8d08d09',1,'ncine::Colorf::r()'],['../classncine_1_1_color.html#ae6f9e8ca271d1825d580e5833bcc7297',1,'ncine::Color::r()'],['../classncine_1_1_color_hdr.html#a749ba2d528245a477ca086eb78c70f7e',1,'ncine::ColorHdr::r()']]], + ['random_2256',['Random',['../classncine_1_1_random.html#a8d5511decc385a7c978aff30fba9a0d7',1,'ncine::Random::Random()'],['../classncine_1_1_random.html#ae0019dc6b370c713cdc9afb8561938a4',1,'ncine::Random::Random(uint64_t initState, uint64_t initSequence)']]], + ['rbegin_2257',['rBegin',['../classnctl_1_1_static_hash_map.html#a41ad9e50af92c078908e51cbedda3746',1,'nctl::StaticHashMap::rBegin()'],['../classnctl_1_1_string.html#ae6d659f561e99c7e7b84cf3ec5b55fbf',1,'nctl::String::rBegin() const'],['../classnctl_1_1_string.html#aa012d0ff100c508faae3a5122d2b5617',1,'nctl::String::rBegin()'],['../classnctl_1_1_static_string.html#aacc3041dd804b5083b456b3a547d9288',1,'nctl::StaticString::rBegin() const'],['../classnctl_1_1_static_string.html#a4b99920443f38d7d808b0b4f5809e31f',1,'nctl::StaticString::rBegin()'],['../classnctl_1_1_static_hash_set.html#ae2a0626bcf739a98ef645b3be31efe27',1,'nctl::StaticHashSet::rBegin() const'],['../classnctl_1_1_static_hash_set.html#ae8ee951fd4a9039c6e285f760fdda978',1,'nctl::StaticHashSet::rBegin()'],['../classnctl_1_1_static_hash_map.html#a50457b81d144f91a45e2f6533b19072d',1,'nctl::StaticHashMap::rBegin()'],['../classnctl_1_1_static_array.html#a4b41f25869f433f4c4fbc450416d00a5',1,'nctl::StaticArray::rBegin() const'],['../classnctl_1_1_static_array.html#ac5a07a9b9d26af4896eaf0f3e2831fc0',1,'nctl::StaticArray::rBegin()'],['../classnctl_1_1_sparse_set.html#abbf608ca3fa3696c51084d7032ed299a',1,'nctl::SparseSet::rBegin() const'],['../classnctl_1_1_sparse_set.html#aab78adc6764386e7b10753289aa1a0f5',1,'nctl::SparseSet::rBegin()'],['../classnctl_1_1_list.html#ad54036d1587b9463e4f2c6b7b0cd41c3',1,'nctl::List::rBegin()'],['../classnctl_1_1_hash_set_list.html#a135a0e3b14fc5cef2d700c5af7ac2303',1,'nctl::HashSetList::rBegin() const'],['../classnctl_1_1_hash_set_list.html#a8ae77d9810f75d0ffb4d84c662381441',1,'nctl::HashSetList::rBegin()'],['../classnctl_1_1_hash_set.html#a7194a502f68516c05f4a8dc97032590a',1,'nctl::HashSet::rBegin() const'],['../classnctl_1_1_hash_set.html#ac2c5abdb4bcbb96fa1690439e2d04d06',1,'nctl::HashSet::rBegin()'],['../classnctl_1_1_hash_map_list.html#a899fb6e8bd73ee1ed88ce4cbfe1a627d',1,'nctl::HashMapList::rBegin() const'],['../classnctl_1_1_hash_map_list.html#af9c555f49fafa8a1765dcdb9dae5d526',1,'nctl::HashMapList::rBegin()'],['../classnctl_1_1_hash_map.html#a71dd04022302ada942a9113f30c2fbdf',1,'nctl::HashMap::rBegin() const'],['../classnctl_1_1_hash_map.html#a90a2179f754570c323f88544c8a92c71',1,'nctl::HashMap::rBegin()'],['../classnctl_1_1_array.html#a61333ba3c836dd6e16c9626aadaa8ce5',1,'nctl::Array::rBegin() const'],['../classnctl_1_1_array.html#a265f5fbf503e9ba6333d72a935e78ec7',1,'nctl::Array::rBegin()'],['../classnctl_1_1_list.html#a617dde31fc6e91512dfe0e56a1d05672',1,'nctl::List::rBegin()']]], + ['read_2258',['read',['../classncine_1_1_asset_file.html#a163ad84fe0a6e5afc80dac8fee617dc8',1,'ncine::AssetFile::read()'],['../classncine_1_1_i_file.html#a44e3c943ec929136a73394f0f49ad04a',1,'ncine::IFile::read()'],['../classncine_1_1_emscripten_local_file.html#ac38187352485f0a4282e0a5336e8485b',1,'ncine::EmscriptenLocalFile::read()']]], + ['readnext_2259',['readNext',['../classncine_1_1_file_system_1_1_directory.html#af0fe2caeda11aaefffb5249e933f5fe2',1,'ncine::FileSystem::Directory']]], + ['real_2260',['real',['../classncine_1_1_random.html#aae7bf3ee5c209f291716435d86fb56f3',1,'ncine::Random::real()'],['../classncine_1_1_random.html#a2926e97ff76739b4109eb36ba29be3d7',1,'ncine::Random::real(float min, float max)']]], + ['reallocate_2261',['reallocate',['../classnctl_1_1_i_allocator.html#af09723cf52b1ebb06ba8da3a23365327',1,'nctl::IAllocator']]], + ['rect_2262',['rect',['../classncine_1_1_rect_animation.html#a8766f2c94f3095c2e72feb6e0a911c07',1,'ncine::RectAnimation::rect()'],['../classncine_1_1_texture.html#a5f6f64d31702a4e4b7633681f6600414',1,'ncine::Texture::rect()']]], + ['rect_2263',['Rect',['../classncine_1_1_rect.html#ad3c945c971220a8e2e4abc7991ee8d27',1,'ncine::Rect::Rect()'],['../classncine_1_1_rect.html#a510613d4b3894bf001ea2594ead5e647',1,'ncine::Rect::Rect(T xx, T yy, T ww, T hh)'],['../classncine_1_1_rect.html#ab49ec1f941b89682a9340f6904328e8c',1,'ncine::Rect::Rect(const Vector2< T > &point, const Vector2< T > &size)']]], + ['rectangles_2264',['rectangles',['../classncine_1_1_rect_animation.html#ad9d7b3c76b83019094093c6ba759434a',1,'ncine::RectAnimation::rectangles()'],['../classncine_1_1_rect_animation.html#a5922fa31c7c791f738034e91c269a78c',1,'ncine::RectAnimation::rectangles() const']]], + ['rectanimation_2265',['RectAnimation',['../classncine_1_1_rect_animation.html#a6de48ab1c94114c19f29826197266693',1,'ncine::RectAnimation::RectAnimation()'],['../classncine_1_1_rect_animation.html#a4923fae4b97715134efc54d79233f227',1,'ncine::RectAnimation::RectAnimation(float defaultFrameDuration, LoopMode loopMode, RewindMode rewindMode)']]], + ['redbits_2266',['redBits',['../classncine_1_1_display_mode.html#a46c384cdbdaa91e1f712fe7c37ab9040',1,'ncine::DisplayMode']]], + ['registeraudiodevice_2267',['registerAudioDevice',['../classncine_1_1_service_locator.html#a1f8c8920d5d978a2d03916f5e63b18fc',1,'ncine::ServiceLocator']]], + ['registerbatchedshader_2268',['registerBatchedShader',['../classncine_1_1_shader.html#ab4ec5dedc419d032856e40020c31b98d',1,'ncine::Shader']]], + ['registergfxcapabilities_2269',['registerGfxCapabilities',['../classncine_1_1_service_locator.html#a5453c64fa81633bf256db6501b87a593',1,'ncine::ServiceLocator']]], + ['registerindexer_2270',['registerIndexer',['../classncine_1_1_service_locator.html#a92f1e3929d2d0acd78a48c1074f82e65',1,'ncine::ServiceLocator']]], + ['registerlogger_2271',['registerLogger',['../classncine_1_1_service_locator.html#abd18a64e8ad291ff6610f683ca1c65cd',1,'ncine::ServiceLocator']]], + ['registerplayer_2272',['registerPlayer',['../classncine_1_1_i_audio_device.html#a7797e53dc5f586eeae2abff1d744de83',1,'ncine::IAudioDevice::registerPlayer()'],['../classncine_1_1_null_audio_device.html#ab11b7ea8d1bb9b82af92dd1f7bc113e2',1,'ncine::NullAudioDevice::registerPlayer()']]], + ['registerthreadpool_2273',['registerThreadPool',['../classncine_1_1_service_locator.html#ae9281101a1243d707e8b6db50df31e6c',1,'ncine::ServiceLocator']]], + ['rehash_2274',['rehash',['../classnctl_1_1_hash_map.html#abcd9e35c1c06bda195717a0bf606ea7e',1,'nctl::HashMap::rehash()'],['../classnctl_1_1_hash_map_list.html#aaa338f3a7e1e1266b19cab1e2bc678c8',1,'nctl::HashMapList::rehash()'],['../classnctl_1_1_hash_set.html#a80ee6580201911575af792f1552db6c8',1,'nctl::HashSet::rehash()'],['../classnctl_1_1_hash_set_list.html#a38586a566e466e3b0a06eba549ab9071',1,'nctl::HashSetList::rehash()'],['../classnctl_1_1_sparse_set.html#a2b2d5beb10ee24b3ef271bb7e7af0218',1,'nctl::SparseSet::rehash()']]], + ['remove_2275',['remove',['../classnctl_1_1_static_hash_set.html#a6d11a07b3e182010fa86fb94e72906a0',1,'nctl::StaticHashSet::remove()'],['../classnctl_1_1_static_hash_map.html#aa8fd45bfb6ad02b253056243f6c6d3db',1,'nctl::StaticHashMap::remove()'],['../classnctl_1_1_sparse_set.html#a1962338d31cd90870075e0aec19a8d93',1,'nctl::SparseSet::remove()'],['../classnctl_1_1_hash_set_list.html#a4709520ceaffd631808f66d1d164f7f0',1,'nctl::HashSetList::remove()'],['../classnctl_1_1_hash_set.html#a59c68334025edd82a9559d22a5eca4c9',1,'nctl::HashSet::remove()'],['../classnctl_1_1_hash_map_list.html#ad3f40803f6a43ff150a9e1a3c2e0e4dc',1,'nctl::HashMapList::remove()'],['../classnctl_1_1_hash_map.html#a3926e00d350440192441f378d3648f86',1,'nctl::HashMap::remove()'],['../classnctl_1_1_list.html#ab126ca316157d2acfcd228cfd97eb432',1,'nctl::List::remove()']]], + ['removeallchildrennodes_2276',['removeAllChildrenNodes',['../classncine_1_1_scene_node.html#a906c46b3f4f5eeb18f9271d90cf27a8e',1,'ncine::SceneNode']]], + ['removealltextures_2277',['removeAllTextures',['../classncine_1_1_viewport.html#a913c94cc9eef30500ff1d7bc489106c6',1,'ncine::Viewport']]], + ['removeat_2278',['removeAt',['../classnctl_1_1_array.html#a94dbe1c315c899c97fd64c16cc5113a1',1,'nctl::Array::removeAt()'],['../classnctl_1_1_static_array.html#a6c1df4941114586939a1565c4e70f693',1,'nctl::StaticArray::removeAt()']]], + ['removechildnode_2279',['removeChildNode',['../classncine_1_1_scene_node.html#aab6e1cb79070723f1562c90d9da7db90',1,'ncine::SceneNode']]], + ['removechildnodeat_2280',['removeChildNodeAt',['../classncine_1_1_scene_node.html#a7f079d4183255459da9b2e2839c7cd47',1,'ncine::SceneNode']]], + ['removeif_2281',['removeIf',['../classnctl_1_1_list.html#ace0f04174affffa1e82e6ab7a2776859',1,'nctl::List']]], + ['removeobject_2282',['removeObject',['../classncine_1_1_i_indexer.html#a54da6968e8b002f1eeec044b724fa6e0',1,'ncine::IIndexer::removeObject()'],['../classncine_1_1_null_indexer.html#ade6bd5c59cc46bb55e791cd6a9dda647',1,'ncine::NullIndexer::removeObject()']]], + ['removepermissions_2283',['removePermissions',['../classncine_1_1_file_system.html#a7e400d7dd986adc2f7a86201866400e6',1,'ncine::FileSystem']]], + ['removerange_2284',['removeRange',['../classnctl_1_1_array.html#a2e07602c5d0cf652342fd24a9a35b951',1,'nctl::Array::removeRange()'],['../classnctl_1_1_static_array.html#aaec8befaaf1ced6879568adc864de925',1,'nctl::StaticArray::removeRange()']]], + ['removestep_2285',['removeStep',['../classncine_1_1_velocity_affector.html#a605ad78bcdd9533677893064581d3813',1,'ncine::VelocityAffector::removeStep()'],['../classncine_1_1_position_affector.html#a0ea314f0d4a83d6d3b1b1ac8ba37c05c',1,'ncine::PositionAffector::removeStep()'],['../classncine_1_1_rotation_affector.html#a81cfbe76f3716f8b3515565eb1a2839d',1,'ncine::RotationAffector::removeStep()'],['../classncine_1_1_color_affector.html#a66781b467b066166a83ca6c8e58e39c9',1,'ncine::ColorAffector::removeStep()'],['../classncine_1_1_size_affector.html#a2b653bfe37906edcb0d3441db56499fe',1,'ncine::SizeAffector::removeStep()'],['../classncine_1_1_particle_affector.html#a8f695479da8ead9701b936c959b32dfd',1,'ncine::ParticleAffector::removeStep()']]], + ['rename_2286',['rename',['../classncine_1_1_file_system.html#af8d878160882923ab0d0f6197990f772',1,'ncine::FileSystem']]], + ['rend_2287',['rEnd',['../classnctl_1_1_static_hash_set.html#ae3121faf1d18b7bd3280044209d924f6',1,'nctl::StaticHashSet::rEnd()'],['../classnctl_1_1_string.html#a937bd6835427fc112364afe61c4e1c2f',1,'nctl::String::rEnd() const'],['../classnctl_1_1_string.html#a1897913a0539a1bb2e92932cf5d3754e',1,'nctl::String::rEnd()'],['../classnctl_1_1_static_string.html#a4828bf2d3af20d46e378dbd9c7271098',1,'nctl::StaticString::rEnd() const'],['../classnctl_1_1_static_string.html#ac8b1cced75bfd3c21fddf7dbac564c08',1,'nctl::StaticString::rEnd()'],['../classnctl_1_1_static_hash_set.html#af35b41b5ffe23a1fb72522d62e6e3cd2',1,'nctl::StaticHashSet::rEnd()'],['../classnctl_1_1_static_hash_map.html#accba49c1c7a930ded07967bad4ac29d8',1,'nctl::StaticHashMap::rEnd() const'],['../classnctl_1_1_static_hash_map.html#a6c8669f41b01b44230f4afd2385a946f',1,'nctl::StaticHashMap::rEnd()'],['../classnctl_1_1_static_array.html#a4eb3ec3fe6dfc7e24cb3213f70175a23',1,'nctl::StaticArray::rEnd() const'],['../classnctl_1_1_static_array.html#a5e767e9b6d6d8d84f7cb64a5d09ccd64',1,'nctl::StaticArray::rEnd()'],['../classnctl_1_1_sparse_set.html#a51c41c8b44ced9de2820005e8093727b',1,'nctl::SparseSet::rEnd() const'],['../classnctl_1_1_sparse_set.html#a64ea7143ffebee9e54195946e7997167',1,'nctl::SparseSet::rEnd()'],['../classnctl_1_1_list.html#a65e7e6f3c03b7818bf6d1ae5f325ccee',1,'nctl::List::rEnd()'],['../classnctl_1_1_hash_set_list.html#a74546aeaed4688c99ce3c6d28841a4fb',1,'nctl::HashSetList::rEnd() const'],['../classnctl_1_1_hash_set_list.html#af5a81ea00209826d4991f601c8e46321',1,'nctl::HashSetList::rEnd()'],['../classnctl_1_1_hash_set.html#ae9b5cb30b81a9efbeda78b9d55284443',1,'nctl::HashSet::rEnd() const'],['../classnctl_1_1_hash_set.html#a32a2f7cff35111a5ef25eec5d6c3ff22',1,'nctl::HashSet::rEnd()'],['../classnctl_1_1_hash_map_list.html#a0b56bbb152178aac7f13216e7b37be5b',1,'nctl::HashMapList::rEnd() const'],['../classnctl_1_1_hash_map_list.html#ada6ee82f3d4f8bd0c1bcf3afbaec4e03',1,'nctl::HashMapList::rEnd()'],['../classnctl_1_1_hash_map.html#a4c3ae84bd039fe2e25cddbe0c6ca8be1',1,'nctl::HashMap::rEnd() const'],['../classnctl_1_1_hash_map.html#ad6e28d7e61920e1738cebd8fd1f1252d',1,'nctl::HashMap::rEnd()'],['../classnctl_1_1_array.html#aee7d2114d3234432956a4d11495d466b',1,'nctl::Array::rEnd() const'],['../classnctl_1_1_array.html#a4c84215ffd57d94368b9e4a0ce789939',1,'nctl::Array::rEnd()'],['../classnctl_1_1_list.html#a91eea77e48248ec89365543b7ab3cac4',1,'nctl::List::rEnd()']]], + ['renderingsettings_2288',['renderingSettings',['../classncine_1_1_application.html#a7b7e2b0d986c414d52b907d3cbbbf061',1,'ncine::Application']]], + ['rendermode_2289',['renderMode',['../classncine_1_1_font.html#a69b3a0079b515195cd1e7270bb89c625',1,'ncine::Font::renderMode()'],['../classncine_1_1_text_node.html#ad6aa6e328bb6ad054e55da88362c6dc9',1,'ncine::TextNode::renderMode()']]], + ['replace_2290',['replace',['../classnctl_1_1_static_string.html#a21dad0b9d7ec0751da0e03acb5bf0998',1,'nctl::StaticString::replace(const StaticString &source, unsigned int srcChar, unsigned int numChar, unsigned int destChar)'],['../classnctl_1_1_static_string.html#a55b3543253eec99de49b9ed8480c654f',1,'nctl::StaticString::replace(const StaticString< U > &source, unsigned int srcChar, unsigned int numChar, unsigned int destChar)'],['../classnctl_1_1_static_string.html#a9183406857d30072b840ddd39aef8e54',1,'nctl::StaticString::replace(const char *source, unsigned int numChar, unsigned int destChar)'],['../classnctl_1_1_string.html#a6e265070a55255eea0502f208eb65fed',1,'nctl::String::replace(const String &source, unsigned int srcChar, unsigned int numChar, unsigned int destChar)'],['../classnctl_1_1_string.html#a8950132836347cb8bb169efc31d6a874',1,'nctl::String::replace(const char *source, unsigned int numChar, unsigned int destChar)']]], + ['reset_2291',['reset',['../classncine_1_1_timer.html#a9f20cf492255892f45955b51c0fdce41',1,'ncine::Timer::reset()'],['../classnctl_1_1_bit_set.html#a26650622274ad27537944fe43ce0c3da',1,'nctl::BitSet::reset()'],['../classnctl_1_1_bit_set.html#a2426b61f5d832055dcd6a48978b79a73',1,'nctl::BitSet::reset(unsigned int pos)']]], + ['resetautowahproperties_2292',['resetAutoWahProperties',['../classncine_1_1_audio_effect_properties.html#a0c3ed840c3a7ce3808ff2a27ad9eb4e5',1,'ncine::AudioEffectProperties']]], + ['resetchorusproperties_2293',['resetChorusProperties',['../classncine_1_1_audio_effect_properties.html#a919a72c5b91454e07d15d3af82ffc852',1,'ncine::AudioEffectProperties']]], + ['resetcompressorproperties_2294',['resetCompressorProperties',['../classncine_1_1_audio_effect_properties.html#a4278dc0b2d73b73ef82cba5e69910c78',1,'ncine::AudioEffectProperties']]], + ['resetdistortionproperties_2295',['resetDistortionProperties',['../classncine_1_1_audio_effect_properties.html#a46737b4f04624061a2308ca5e541c3f7',1,'ncine::AudioEffectProperties']]], + ['reseteaxreverbproperties_2296',['resetEaxReverbProperties',['../classncine_1_1_audio_effect_properties.html#ac0916f78454dca273ea3ca97ce626bde',1,'ncine::AudioEffectProperties']]], + ['resetechoproperties_2297',['resetEchoProperties',['../classncine_1_1_audio_effect_properties.html#a5f6753a75330ec18c2b4ad82125397bf',1,'ncine::AudioEffectProperties']]], + ['resetequalizerproperties_2298',['resetEqualizerProperties',['../classncine_1_1_audio_effect_properties.html#a4c55a44c35776822fc447bc4e411f4c8',1,'ncine::AudioEffectProperties']]], + ['resetflangerproperties_2299',['resetFlangerProperties',['../classncine_1_1_audio_effect_properties.html#a3abf2fa89e72b70e8f6649f8b86458ea',1,'ncine::AudioEffectProperties']]], + ['resetfrequencyshifterproperties_2300',['resetFrequencyShifterProperties',['../classncine_1_1_audio_effect_properties.html#a6314288798b880a1b1c01d59219865a2',1,'ncine::AudioEffectProperties']]], + ['resetpitchshifterproperties_2301',['resetPitchShifterProperties',['../classncine_1_1_audio_effect_properties.html#a99b34095c686fb395ffa780d6815a9f2',1,'ncine::AudioEffectProperties']]], + ['resetreverbproperties_2302',['resetReverbProperties',['../classncine_1_1_audio_effect_properties.html#a0b0cbd4ee2a9e39aba142efa2751b0fe',1,'ncine::AudioEffectProperties']]], + ['resetringmodulatorproperties_2303',['resetRingModulatorProperties',['../classncine_1_1_audio_effect_properties.html#acaf249c75f713ce39e55d50b1399e69a',1,'ncine::AudioEffectProperties']]], + ['resetshader_2304',['resetShader',['../classncine_1_1_shader_state.html#a20b513e71ac6ab6a77f44148e0c7cecc',1,'ncine::ShaderState']]], + ['resettexture_2305',['resetTexture',['../classncine_1_1_base_sprite.html#ac4707cdba84051e41caedc5cba478712',1,'ncine::BaseSprite']]], + ['resetvocalmorpherproperties_2306',['resetVocalMorpherProperties',['../classncine_1_1_audio_effect_properties.html#a1f1541e3ec0a498b3739df40aa5200b4',1,'ncine::AudioEffectProperties']]], + ['resizescreenviewport_2307',['resizeScreenViewport',['../classncine_1_1_application.html#a343b4c139161cdc5ad9499df65eb677f',1,'ncine::Application']]], + ['resolution_2308',['resolution',['../classncine_1_1_application.html#a3b4d6e86fffccae67ac17c75645a8813',1,'ncine::Application::resolution()'],['../classncine_1_1_i_gfx_device.html#ae552e1170456d0a19054cfd213a7afa1',1,'ncine::IGfxDevice::resolution()']]], + ['resolutionint_2309',['resolutionInt',['../classncine_1_1_application.html#a35dacbad2bfcf6a65ff891bdec97fe72',1,'ncine::Application']]], + ['resume_2310',['resume',['../classncine_1_1_application.html#a1b3c625dc7d504bae6a963e78acf70d7',1,'ncine::Application']]], + ['resumedevice_2311',['resumeDevice',['../classncine_1_1_i_audio_device.html#ae7e6fa932719f2522aef58993942eeab',1,'ncine::IAudioDevice::resumeDevice()'],['../classncine_1_1_null_audio_device.html#a154a277f2f893699be99a216fdf2b428',1,'ncine::NullAudioDevice::resumeDevice()']]], + ['resumeplayers_2312',['resumePlayers',['../classncine_1_1_i_audio_device.html#acf8d6db4605077975f95d6c20c576450',1,'ncine::IAudioDevice::resumePlayers()'],['../classncine_1_1_null_audio_device.html#a3c737def21864c3ca8f25b16aa39e3b2',1,'ncine::NullAudioDevice::resumePlayers()']]], + ['retrieveinfolog_2313',['retrieveInfoLog',['../classncine_1_1_shader.html#aaa173c18dd050850b925efc66c20e6d9',1,'ncine::Shader']]], + ['retrieveinfologlength_2314',['retrieveInfoLogLength',['../classncine_1_1_shader.html#a0a49d597fa2ce8576809abbc49986288',1,'ncine::Shader']]], + ['reverbproperties_2315',['reverbProperties',['../classncine_1_1_audio_effect_properties.html#afc11f667c886ce5bab437d5b5fce2a80',1,'ncine::AudioEffectProperties::reverbProperties()'],['../classncine_1_1_audio_effect_properties.html#a98a0b141da9ef22557c857b98365a5d9',1,'ncine::AudioEffectProperties::reverbProperties() const']]], + ['reverseiterator_2316',['ReverseIterator',['../classnctl_1_1_reverse_iterator.html#a503cf189adaaf61877ea78a5a10a2986',1,'nctl::ReverseIterator']]], + ['rewindmode_2317',['rewindMode',['../classncine_1_1_rect_animation.html#ac791228585a3900fb7872ed1f802ac3a',1,'ncine::RectAnimation']]], + ['rgba_2318',['rgba',['../classncine_1_1_color.html#aec2142db3d40d3bdef82b462fd46e42c',1,'ncine::Color']]], + ['ringmodulatorproperties_2319',['ringModulatorProperties',['../classncine_1_1_audio_effect_properties.html#afd64d46daabb8bdf82db03aebb142750',1,'ncine::AudioEffectProperties::ringModulatorProperties() const'],['../classncine_1_1_audio_effect_properties.html#a2de4261ddfd218a623b86140a5359420',1,'ncine::AudioEffectProperties::ringModulatorProperties()']]], + ['rootnode_2320',['rootNode',['../classncine_1_1_application.html#a33e9164d639a545f0e95639db55e9286',1,'ncine::Application::rootNode()'],['../classncine_1_1_viewport.html#a791430a4b6675825d9c201ea6d7ac41e',1,'ncine::Viewport::rootNode() const'],['../classncine_1_1_viewport.html#abcf9fdc9136a60e1a93675e2f65d5102',1,'ncine::Viewport::rootNode()']]], + ['rotation_2321',['rotation',['../classncine_1_1_scene_node.html#a127ac655240e7ac1b39849fec04accbf',1,'ncine::SceneNode']]], + ['rotationaffector_2322',['RotationAffector',['../classncine_1_1_rotation_affector.html#a2f2b94e45195f4b34cd8f0b5ed6ac255',1,'ncine::RotationAffector::RotationAffector(RotationAffector &&)=default'],['../classncine_1_1_rotation_affector.html#ae2569afc05a164971243be2522cb440f',1,'ncine::RotationAffector::RotationAffector(const RotationAffector &other)=default']]], + ['runfromfile_2323',['runFromFile',['../classncine_1_1_lua_state_manager.html#aef24acea5dfadb03974eba0cff8a86df',1,'ncine::LuaStateManager::runFromFile(const char *filename, const char *chunkName, nctl::String *errorMsg, int *status, LuaUtils::RunInfo *runInfo)'],['../classncine_1_1_lua_state_manager.html#af0671ac0dc717329ecf152c6bad872e5',1,'ncine::LuaStateManager::runFromFile(const char *filename, const char *chunkName, nctl::String *errorMsg)'],['../classncine_1_1_lua_state_manager.html#ac926085ef8f8c37c0637a7eee613361e',1,'ncine::LuaStateManager::runFromFile(const char *filename, const char *chunkName)'],['../classncine_1_1_lua_state_manager.html#a63f524bce590af7eea5c1984c4923365',1,'ncine::LuaStateManager::runFromFile(const char *filename)']]], + ['runfrommemory_2324',['runFromMemory',['../classncine_1_1_lua_state_manager.html#a5ae8b7f8e52779812d18f76747d0f39b',1,'ncine::LuaStateManager::runFromMemory(const char *bufferName, const char *bufferPtr, unsigned long int bufferSize, nctl::String *errorMsg, int *status, LuaUtils::RunInfo *runInfo)'],['../classncine_1_1_lua_state_manager.html#ab711002e521d00d92c0bee72a4a991cc',1,'ncine::LuaStateManager::runFromMemory(const char *bufferName, const char *bufferPtr, unsigned long int bufferSize, nctl::String *errorMsg)'],['../classncine_1_1_lua_state_manager.html#a3057a81f11a8ca3a994a444203219246',1,'ncine::LuaStateManager::runFromMemory(const char *bufferName, const char *bufferPtr, unsigned long int bufferSize)']]] +]; diff --git a/master/search/functions_12.html b/master/search/functions_12.html new file mode 100644 index 0000000000..eb29d8f9a3 --- /dev/null +++ b/master/search/functions_12.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/functions_12.js b/master/search/functions_12.js new file mode 100644 index 0000000000..3dfd844dc2 --- /dev/null +++ b/master/search/functions_12.js @@ -0,0 +1,184 @@ +var searchData= +[ + ['sampleoffset_2325',['sampleOffset',['../classncine_1_1_i_audio_player.html#af06a9dc5293a41bd1f78cd49d2d3248a',1,'ncine::IAudioPlayer']]], + ['sampleoffsetinstream_2326',['sampleOffsetInStream',['../classncine_1_1_audio_stream_player.html#af3891910a40a0c6c64c632528a06b265',1,'ncine::AudioStreamPlayer']]], + ['save_2327',['save',['../classncine_1_1_emscripten_local_file.html#aaa34b39d7d437211081bff0332434d4b',1,'ncine::EmscriptenLocalFile']]], + ['savepath_2328',['savePath',['../classncine_1_1_file_system.html#a8ef39f60d9826ec12788739c58b2bfa0',1,'ncine::FileSystem']]], + ['savetomemory_2329',['saveToMemory',['../classncine_1_1_texture.html#aecd47485d055fffcde9888fc00c1b7a3',1,'ncine::Texture::saveToMemory(unsigned char *bufferPtr, unsigned int level)'],['../classncine_1_1_texture.html#af975bba6b4df5de7a9b7fe2f97186a27',1,'ncine::Texture::saveToMemory(unsigned char *bufferPtr)']]], + ['scale_2330',['scale',['../classncine_1_1_scene_node.html#a61c257c771fa4d01c520f811ca9a9b9a',1,'ncine::SceneNode']]], + ['scanhashstring_2331',['scanHashString',['../classncine_1_1_hash64.html#a32e6f7176136936b6762fa2e082ab5e6',1,'ncine::Hash64::scanHashString(const char *string, unsigned int length) const'],['../classncine_1_1_hash64.html#a3945b4c01f231f3941b68054fa022596',1,'ncine::Hash64::scanHashString(const char *string) const']]], + ['scenenode_2332',['SceneNode',['../classncine_1_1_scene_node.html#a220c7d04e4c996924805a7890d8fe65b',1,'ncine::SceneNode::SceneNode(SceneNode *parent, float x, float y)'],['../classncine_1_1_scene_node.html#a2c37c4f629a76b0d9f474b3bf8ce6f83',1,'ncine::SceneNode::SceneNode(SceneNode *parent, const Vector2f &position)'],['../classncine_1_1_scene_node.html#a00056a6e7c8c492999dac3bb3f1b3035',1,'ncine::SceneNode::SceneNode(SceneNode *parent)'],['../classncine_1_1_scene_node.html#a3ecd166c467c9f75d56dbc22ffe8bc13',1,'ncine::SceneNode::SceneNode()'],['../classncine_1_1_scene_node.html#a5d9fb82664cbfdbd2e348f1aa35904b7',1,'ncine::SceneNode::SceneNode(SceneNode &&other)'],['../classncine_1_1_scene_node.html#a2fb53012d1f07ec33d24e06dc0304b6a',1,'ncine::SceneNode::SceneNode(const SceneNode &other)']]], + ['scissorrect_2333',['scissorRect',['../classncine_1_1_viewport.html#a3cdc9b89ceb55404e981b633c828aae1',1,'ncine::Viewport']]], + ['screenrect_2334',['screenRect',['../classncine_1_1_i_gfx_device.html#af1f8a476ee5e4096b49c7e3ddde550c3',1,'ncine::IGfxDevice']]], + ['screenviewport_2335',['screenViewport',['../classncine_1_1_application.html#af80d48701bf172e0b8d5711238c3a530',1,'ncine::Application']]], + ['sdkversion_2336',['sdkVersion',['../classncine_1_1_android_application.html#a10df808604549b16ff6410d20979a411',1,'ncine::AndroidApplication']]], + ['seconds_2337',['seconds',['../classncine_1_1_time_stamp.html#a4beba13f138a64dea26c06277f5f6bc9',1,'ncine::TimeStamp']]], + ['secondsdouble_2338',['secondsDouble',['../classncine_1_1_time_stamp.html#aef71b70a675717f832cc6e6258d0533a',1,'ncine::TimeStamp']]], + ['secondsdoublesince_2339',['secondsDoubleSince',['../classncine_1_1_time_stamp.html#a2b6232ee3b27c7d739ec8b234e6ca95d',1,'ncine::TimeStamp']]], + ['secondssince_2340',['secondsSince',['../classncine_1_1_time_stamp.html#a9cc96b908873fe81077df0042f528361',1,'ncine::TimeStamp']]], + ['seek_2341',['seek',['../classncine_1_1_asset_file.html#a6d1e0ca4b181bda9592fd4223ecc913b',1,'ncine::AssetFile::seek()'],['../classncine_1_1_i_file.html#a0200c3997edd0a86abf8e3bc36676ded',1,'ncine::IFile::seek()']]], + ['set_2342',['set',['../classnctl_1_1_bit_set.html#ae1779a4ef81f23beb68086cfcb9ec9e8',1,'nctl::BitSet::set()'],['../classncine_1_1_color.html#a969ec9ae4fb24ba601f917f56be7ac39',1,'ncine::Color::set()'],['../classnctl_1_1_bit_set.html#a3f749db699d67c31340194fff303445f',1,'nctl::BitSet::set(unsigned int pos)'],['../classnctl_1_1_bit_set.html#a5b82442b585602d267513e1b57a8d68d',1,'nctl::BitSet::set()'],['../classncine_1_1_rect.html#aca5bbb7c34f3605421439436440d3117',1,'ncine::Rect::set(const Vector2< T > &point, const Vector2< T > &size)'],['../classncine_1_1_rect.html#a1fc23c19fe0f06e1f5bb8ebfab8b31ae',1,'ncine::Rect::set(T xx, T yy, T ww, T hh)'],['../classncine_1_1_color_hdr.html#a99c07986749dcd40c45de2ab272aad2d',1,'ncine::ColorHdr::set()'],['../classncine_1_1_colorf.html#a7592754aca675dada0f34e2e4e2eddc6',1,'ncine::Colorf::set(float red, float green, float blue)'],['../classncine_1_1_colorf.html#a47cae422cf251b13107c203a78025d9a',1,'ncine::Colorf::set(float red, float green, float blue, float alpha)'],['../classncine_1_1_color.html#aea1747d4415ba8b24af37c29673a94e9',1,'ncine::Color::set(unsigned int hex)'],['../classncine_1_1_color.html#a403b43bbf1d1887ac72bce4b30576891',1,'ncine::Color::set(unsigned int red, unsigned int green, unsigned int blue, unsigned int alpha)']]], + ['setabsanchorpoint_2343',['setAbsAnchorPoint',['../classncine_1_1_scene_node.html#a1b5a16ed15363ded568de3539f83a0a5',1,'ncine::SceneNode::setAbsAnchorPoint(float x, float y)'],['../classncine_1_1_scene_node.html#a54713c328848aef83d34370391b6015e',1,'ncine::SceneNode::setAbsAnchorPoint(const Vector2f &point)']]], + ['setaffectorsenabled_2344',['setAffectorsEnabled',['../classncine_1_1_particle_system.html#a511aa56d6e82d9806d30c1382baace60',1,'ncine::ParticleSystem']]], + ['setalignment_2345',['setAlignment',['../classncine_1_1_text_node.html#ae37076ab03fde4cfae193a564882b29f',1,'ncine::TextNode']]], + ['setalpha_2346',['setAlpha',['../classncine_1_1_color.html#a54d957988edc9a93dc6c014245fbfc7e',1,'ncine::Color::setAlpha()'],['../classncine_1_1_colorf.html#a889dcaa89a526f74119a0f8555b9532b',1,'ncine::Colorf::setAlpha()'],['../classncine_1_1_scene_node.html#a6817540f40f3006f5c1424c1330d6211',1,'ncine::SceneNode::setAlpha(unsigned char alpha)']]], + ['setalphaf_2347',['setAlphaF',['../classncine_1_1_scene_node.html#acc929f2f34e2cf82268f26b67bd43013',1,'ncine::SceneNode']]], + ['setanchorpoint_2348',['setAnchorPoint',['../classncine_1_1_particle_system.html#af3673e9dcccc1b0d7df72afa8344d552',1,'ncine::ParticleSystem::setAnchorPoint()'],['../classncine_1_1_drawable_node.html#a78da50406ea6e91bb8815a05cca89adc',1,'ncine::DrawableNode::setAnchorPoint(const Vector2f &point)'],['../classncine_1_1_drawable_node.html#aa7f8223f6ba4846206a625ac8606ef28',1,'ncine::DrawableNode::setAnchorPoint(float xx, float yy)'],['../classncine_1_1_particle_system.html#a0a75d4bbb40652c7ee46ef5d5ccda088',1,'ncine::ParticleSystem::setAnchorPoint()']]], + ['setanimationindex_2349',['setAnimationIndex',['../classncine_1_1_animated_sprite.html#a82e267492c35a7394227680bb6ebeeec',1,'ncine::AnimatedSprite']]], + ['setattribute_2350',['setAttribute',['../classncine_1_1_shader.html#adf938ee13e1fd4704f4d63d27c94ef2e',1,'ncine::Shader']]], + ['setaudiobuffer_2351',['setAudioBuffer',['../classncine_1_1_audio_buffer_player.html#a1a37ce14e528cfa462f2bc8c00fb7f30',1,'ncine::AudioBufferPlayer']]], + ['setautosuspension_2352',['setAutoSuspension',['../classncine_1_1_application.html#a1bd79bf98decec17e26525aff81e223a',1,'ncine::Application']]], + ['setautowahproperties_2353',['setAutoWahProperties',['../classncine_1_1_audio_effect_properties.html#a212fdea1f4af37688721b3458e689725',1,'ncine::AudioEffectProperties']]], + ['setauxsendauto_2354',['setAuxSendAuto',['../classncine_1_1_audio_effect_slot.html#a412da8fc5b1c7e8f4d05c36a30503fe0',1,'ncine::AudioEffectSlot']]], + ['setaverageinterval_2355',['setAverageInterval',['../classncine_1_1_i_frame_timer.html#a86c23cde8b2998f7f0274297382e4eec',1,'ncine::IFrameTimer']]], + ['setbasescale_2356',['setBaseScale',['../classncine_1_1_size_affector.html#ad078db794d1f1dce916222fc1a1f3d0c',1,'ncine::SizeAffector::setBaseScale(float baseScale)'],['../classncine_1_1_size_affector.html#ae4b23fc8cdc1db0714dc19e7312c1623',1,'ncine::SizeAffector::setBaseScale(const Vector2f &baseScale)']]], + ['setbinarycacheenabled_2357',['setBinaryCacheEnabled',['../classncine_1_1_shader.html#a9246dfc82239af20a9423d004ecca681',1,'ncine::Shader']]], + ['setblendingenabled_2358',['setBlendingEnabled',['../classncine_1_1_drawable_node.html#ade1c933643abe9a79a272d14a9c42d0e',1,'ncine::DrawableNode']]], + ['setblendingfactors_2359',['setBlendingFactors',['../classncine_1_1_drawable_node.html#a21671eb999a029eb9d0af871feb0fe90',1,'ncine::DrawableNode::setBlendingFactors()'],['../classncine_1_1_particle_system.html#a70b12ad97f3888fb64ca4e249efb4318',1,'ncine::ParticleSystem::setBlendingFactors()']]], + ['setblendingpreset_2360',['setBlendingPreset',['../classncine_1_1_drawable_node.html#a0093386ed375ebec4a77ea8d824cfdc5',1,'ncine::DrawableNode::setBlendingPreset()'],['../classncine_1_1_particle_system.html#af18191b5a24aa27e4e17c1fbaeb7ac8d',1,'ncine::ParticleSystem::setBlendingPreset()']]], + ['setcamera_2361',['setCamera',['../classncine_1_1_viewport.html#a002710a85b41c5659f73ba1472f93c58',1,'ncine::Viewport']]], + ['setcapacity_2362',['setCapacity',['../classnctl_1_1_array.html#ad52067f00d0ff4e1096f9d4d019bc10f',1,'nctl::Array::setCapacity()'],['../classnctl_1_1_string.html#ada2afe758a252691dbb089c3333539d9',1,'nctl::String::setCapacity()']]], + ['setcenter_2363',['setCenter',['../classncine_1_1_rect.html#ad68eaa1ea20ca3f297bdda142ac42b5e',1,'ncine::Rect::setCenter(float cx, float cy)'],['../classncine_1_1_rect.html#a2a997bd529c63f4b9ffdb10256df0033',1,'ncine::Rect::setCenter(const Vector2< T > &center)']]], + ['setcentersize_2364',['setCenterSize',['../classncine_1_1_rect.html#a8091d293b1a07a79c093ae5b5df349a2',1,'ncine::Rect::setCenterSize(T xx, T yy, T ww, T hh)'],['../classncine_1_1_rect.html#acedcf45300837279e3bd2240845f846f',1,'ncine::Rect::setCenterSize(const Vector2< T > &center, const Vector2< T > &size)']]], + ['setchorusproperties_2365',['setChorusProperties',['../classncine_1_1_audio_effect_properties.html#a190e8b48cb2e1f9f30402a583d2a0759',1,'ncine::AudioEffectProperties']]], + ['setchromakeycolor_2366',['setChromaKeyColor',['../classncine_1_1_texture.html#a8d8fa0e9bf3ba6a7de2a6087fdcc9b17',1,'ncine::Texture::setChromaKeyColor(const Color &chromaKeyColor)'],['../classncine_1_1_texture.html#acf149ac2e13b6a18ff8eda86043eb65e',1,'ncine::Texture::setChromaKeyColor(const Colorf &chromaKeyColor)']]], + ['setchromakeyenabled_2367',['setChromaKeyEnabled',['../classncine_1_1_texture.html#a9c1c14fcf8d828640ec3172ebc2cd525',1,'ncine::Texture']]], + ['setclearcolor_2368',['setClearColor',['../classncine_1_1_viewport.html#abe1b168e6d92690ee7cca3bdb875cf56',1,'ncine::Viewport::setClearColor(float red, float green, float blue, float alpha)'],['../classncine_1_1_viewport.html#ae540fcc19aa4889f785e69474130c5a5',1,'ncine::Viewport::setClearColor(const Colorf &color)']]], + ['setclearmode_2369',['setClearMode',['../classncine_1_1_viewport.html#aab403d2f29b0bf0a2c1deac98c670eae',1,'ncine::Viewport']]], + ['setcloseondestruction_2370',['setCloseOnDestruction',['../classncine_1_1_i_file.html#a2e92361cf8fa0b99d08b35c9feb03b97',1,'ncine::IFile']]], + ['setcolor_2371',['setColor',['../classncine_1_1_scene_node.html#ab4cc5425a9c6b1f85f72f6ed1e13846a',1,'ncine::SceneNode::setColor(Color color)'],['../classncine_1_1_scene_node.html#ac7c2308c960ac98909db3c32aabb5a4b',1,'ncine::SceneNode::setColor(Colorf color)'],['../classncine_1_1_scene_node.html#a1cc6cafa339247b2e5b9c3bbbba2fdd1',1,'ncine::SceneNode::setColor(unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha)']]], + ['setcolorf_2372',['setColorF',['../classncine_1_1_scene_node.html#a11f22301cd5195870d9fb61d54697e94',1,'ncine::SceneNode']]], + ['setcompressorproperties_2373',['setCompressorProperties',['../classncine_1_1_audio_effect_properties.html#ac72a905bdb932ed2b610d88aab47ff3e',1,'ncine::AudioEffectProperties']]], + ['setconeinnerangle_2374',['setConeInnerAngle',['../classncine_1_1_i_audio_player.html#a0248d551cf12f3be8b1cb60e9f91e9d7',1,'ncine::IAudioPlayer']]], + ['setconeouterangle_2375',['setConeOuterAngle',['../classncine_1_1_i_audio_player.html#aae2868f7072c66c37678ffd251bdce37',1,'ncine::IAudioPlayer']]], + ['setconeoutergain_2376',['setConeOuterGain',['../classncine_1_1_i_audio_player.html#a66eb6ceeaee4094c93baf608361f81db',1,'ncine::IAudioPlayer']]], + ['setcopyonreallocation_2377',['setCopyOnReallocation',['../classnctl_1_1_i_allocator.html#afcc81dce4fb3f9a2c79beb38b4b94957',1,'nctl::IAllocator']]], + ['setcurrentdir_2378',['setCurrentDir',['../classncine_1_1_file_system.html#ad7d2c6f00099e963afe08bc132551fb6',1,'ncine::FileSystem']]], + ['setdefaultframeduration_2379',['setDefaultFrameDuration',['../classncine_1_1_rect_animation.html#a176b9034c294475cc6e494f555ecf4be',1,'ncine::RectAnimation']]], + ['setdefragondeallocation_2380',['setDefragOnDeallocation',['../classnctl_1_1_free_list_allocator.html#ae21ca298edc297e172572c5ac3f7a040',1,'nctl::FreeListAllocator']]], + ['setdeletechildrenondestruction_2381',['setDeleteChildrenOnDestruction',['../classncine_1_1_scene_node.html#ad6bc44e0355dd0dde1a57d8a942bec33',1,'ncine::SceneNode']]], + ['setdepthstencilformat_2382',['setDepthStencilFormat',['../classncine_1_1_viewport.html#a515550d5f77e83a9a978957d9364f9a2',1,'ncine::Viewport']]], + ['setdirection_2383',['setDirection',['../classncine_1_1_i_audio_player.html#a1ea4c555f5fcd7e7901a877972cbdfc3',1,'ncine::IAudioPlayer::setDirection(const Vector3f &direction)'],['../classncine_1_1_i_audio_player.html#a74460e4ebe3d4d4ecb26fba8f7a22d6f',1,'ncine::IAudioPlayer::setDirection(float x, float y, float z)']]], + ['setdistortionproperties_2384',['setDistortionProperties',['../classncine_1_1_audio_effect_properties.html#af9f5d98af71e30806386b364d91434ce',1,'ncine::AudioEffectProperties']]], + ['setdrawenabled_2385',['setDrawEnabled',['../classncine_1_1_scene_node.html#a7dd9a2b2e1c837ee07369d991cf5e770',1,'ncine::SceneNode']]], + ['seteaxreverbproperties_2386',['setEaxReverbProperties',['../classncine_1_1_audio_effect_properties.html#a249e377bb250677e77f7dc3033ad654f',1,'ncine::AudioEffectProperties']]], + ['setechoproperties_2387',['setEchoProperties',['../classncine_1_1_audio_effect_properties.html#ac5d37c04405fe42991361bff8dc74877',1,'ncine::AudioEffectProperties']]], + ['setenabled_2388',['setEnabled',['../classncine_1_1_particle_affector.html#a1234626447d16c884ccf4198b288bd95',1,'ncine::ParticleAffector::setEnabled()'],['../classncine_1_1_scene_node.html#a3fe6436fb29736110ebed14f03dd4eff',1,'ncine::SceneNode::setEnabled()']]], + ['setequalizerproperties_2389',['setEqualizerProperties',['../classncine_1_1_audio_effect_properties.html#a7463012dfb5f29fd386896e4a974bce7',1,'ncine::AudioEffectProperties']]], + ['setfitstrategy_2390',['setFitStrategy',['../classnctl_1_1_free_list_allocator.html#a62f771daf3e22ded6162a0485cdd9131',1,'nctl::FreeListAllocator']]], + ['setflangerproperties_2391',['setFlangerProperties',['../classncine_1_1_audio_effect_properties.html#a541ea99c8962d129410de427ea8ed013',1,'ncine::AudioEffectProperties']]], + ['setflippedx_2392',['setFlippedX',['../classncine_1_1_base_sprite.html#a9426de574b97c0172bf7cb0f2cf7b954',1,'ncine::BaseSprite::setFlippedX()'],['../classncine_1_1_particle_system.html#ac7fb6070dfd0cd5d3bb5e6d325b40f86',1,'ncine::ParticleSystem::setFlippedX()']]], + ['setflippedy_2393',['setFlippedY',['../classncine_1_1_base_sprite.html#a2a1681b7e93448cca53adcdbf056b7ce',1,'ncine::BaseSprite::setFlippedY()'],['../classncine_1_1_particle_system.html#a4137753b0d9767f67ce9a875fae54761',1,'ncine::ParticleSystem::setFlippedY()']]], + ['setfocus_2394',['setFocus',['../classncine_1_1_application.html#ae61fbcc3d36afb2422968a97a251df67',1,'ncine::Application']]], + ['setfont_2395',['setFont',['../classncine_1_1_text_node.html#a03e5bc640213534c2efd8586eb3d9990',1,'ncine::TextNode']]], + ['setframe_2396',['setFrame',['../classncine_1_1_rect_animation.html#a4ee29bcdc9ee6743d84355b85a669060',1,'ncine::RectAnimation::setFrame()'],['../classncine_1_1_animated_sprite.html#a9b561f62415daf2fde7fa73168162189',1,'ncine::AnimatedSprite::setFrame()']]], + ['setfrequencyshifterproperties_2397',['setFrequencyShifterProperties',['../classncine_1_1_audio_effect_properties.html#ac711cdbd80c97faf4145e078f1dddae6',1,'ncine::AudioEffectProperties']]], + ['setfullscreen_2398',['setFullScreen',['../classncine_1_1_i_gfx_device.html#a56e3c04e3064c7671b487691362b7b32',1,'ncine::IGfxDevice']]], + ['setgain_2399',['setGain',['../classncine_1_1_audio_effect_slot.html#ab746c29ca920d8822003910d3e0b05c4',1,'ncine::AudioEffectSlot::setGain()'],['../classncine_1_1_i_audio_device.html#af57e19326b760905f6ced5e4ef6cef53',1,'ncine::IAudioDevice::setGain()'],['../classncine_1_1_null_audio_device.html#a6de5dcfdc583e8e9f55fa01d4ded5f57',1,'ncine::NullAudioDevice::setGain()'],['../classncine_1_1_i_audio_player.html#a54d7e04921f2c086f48ced4f82c53c3c',1,'ncine::IAudioPlayer::setGain()']]], + ['setglframebufferlabel_2400',['setGLFramebufferLabel',['../classncine_1_1_viewport.html#ae1d31271185a9892579f20bad2e9465b',1,'ncine::Viewport']]], + ['setglshaderprogramlabel_2401',['setGLShaderProgramLabel',['../classncine_1_1_shader.html#af94b762450dab10934ae1ceb569f147c',1,'ncine::Shader']]], + ['setgltexturelabel_2402',['setGLTextureLabel',['../classncine_1_1_texture.html#a407a8ee5a7e9ab2a563200e6f589d322',1,'ncine::Texture']]], + ['sethandler_2403',['setHandler',['../classncine_1_1_i_input_manager.html#ad988a448ca325db249386cd3635099ea',1,'ncine::IInputManager']]], + ['sethidden_2404',['setHidden',['../classncine_1_1_file_system.html#a9590c84a48d25bb17495478ee36a80ad',1,'ncine::FileSystem']]], + ['setindices_2405',['setIndices',['../classncine_1_1_mesh_sprite.html#ad9255b12419076cfe9bb78cb8e01114c',1,'ncine::MeshSprite::setIndices(unsigned int numIndices, const unsigned short *indices)'],['../classncine_1_1_mesh_sprite.html#a5629a7e3da0570db4c7af3041cf54c86',1,'ncine::MeshSprite::setIndices(const MeshSprite &meshSprite)']]], + ['setinlocalspace_2406',['setInLocalSpace',['../classncine_1_1_particle_system.html#a5b4bec2c5001d7e04889ab82233684ae',1,'ncine::ParticleSystem']]], + ['setlayer_2407',['setLayer',['../classncine_1_1_particle_system.html#ae5e72af79972e8c894c6f000e162875a',1,'ncine::ParticleSystem::setLayer()'],['../classncine_1_1_scene_node.html#af7ebfa1df874cf52fff754587a0b45e9',1,'ncine::SceneNode::setLayer()']]], + ['setlength_2408',['setLength',['../classnctl_1_1_string.html#a54e1164a4be2d77f287f62f4b8a0e245',1,'nctl::String::setLength()'],['../classnctl_1_1_static_string.html#ad277cae195caf7d69b9e39660db05d21',1,'nctl::StaticString::setLength()']]], + ['setlineheight_2409',['setLineHeight',['../classncine_1_1_text_node.html#a5760b076b8cf25ce4ef445a53e1ef287',1,'ncine::TextNode']]], + ['setloadedcallback_2410',['setLoadedCallback',['../classncine_1_1_emscripten_local_file.html#a3cd1508e6f65f363e48bbf5ba5d350e5',1,'ncine::EmscriptenLocalFile::setLoadedCallback(LoadedCallbackType *loadedCallback, void *userData)'],['../classncine_1_1_emscripten_local_file.html#adddb4da22c8be42ec959e4d34f60cd4a',1,'ncine::EmscriptenLocalFile::setLoadedCallback(LoadedCallbackType *loadedCallback)']]], + ['setlocalmatrix_2411',['setLocalMatrix',['../classncine_1_1_scene_node.html#a84ec315f52f0086772108a5a3453aa5a',1,'ncine::SceneNode']]], + ['setlogginginterval_2412',['setLoggingInterval',['../classncine_1_1_i_frame_timer.html#ac5d6b844ed3a7ca50578785f24f6ed88',1,'ncine::IFrameTimer']]], + ['setloglevel_2413',['setLogLevel',['../classncine_1_1_i_frame_timer.html#a23d3f64d265b2a65b26901f62d81e598',1,'ncine::IFrameTimer']]], + ['setlogonerrors_2414',['setLogOnErrors',['../classncine_1_1_shader.html#a406dd13b58cbce4c7525e8b469b3459e',1,'ncine::Shader']]], + ['setlooping_2415',['setLooping',['../classncine_1_1_i_audio_player.html#a3e0b598a392f69f4060c54790940951b',1,'ncine::IAudioPlayer']]], + ['setloopmode_2416',['setLoopMode',['../classncine_1_1_rect_animation.html#af3768dc9fe32f7d04259b5915f621889',1,'ncine::RectAnimation']]], + ['setmagfiltering_2417',['setMagFiltering',['../classncine_1_1_texture.html#a3c1f1530118be66d6795f0ce900e5e01',1,'ncine::Texture']]], + ['setminfiltering_2418',['setMinFiltering',['../classncine_1_1_texture.html#a656cd90486c41691d7026520ad223ad6',1,'ncine::Texture']]], + ['setminmax_2419',['setMinMax',['../classncine_1_1_rect.html#af2f2c31cae1b9f6d6a1b046e52d48763',1,'ncine::Rect::setMinMax(T minX, T minY, T maxX, T maxY)'],['../classncine_1_1_rect.html#a4a0895b4111dcff9d8160cedbfdda6d7',1,'ncine::Rect::setMinMax(const Vector2< T > &min, const Vector2< T > &max)']]], + ['setmousecursormode_2420',['setMouseCursorMode',['../classncine_1_1_i_input_manager.html#af19ecc5929357fee73e6ee3fc9a14f38',1,'ncine::IInputManager']]], + ['setname_2421',['setName',['../classncine_1_1_object.html#a8961ac00afc96e3a5ca6a42f14d2a6e8',1,'ncine::Object']]], + ['setnode_2422',['setNode',['../classncine_1_1_shader_state.html#a2b18d00b76190cc2c692d70ff96c4e4a',1,'ncine::ShaderState']]], + ['setobject_2423',['setObject',['../classncine_1_1_i_indexer.html#a0102a8d777ed275acbbdeb283289cfb6',1,'ncine::IIndexer::setObject()'],['../classncine_1_1_null_indexer.html#a7120faddc3f4c3c4f321025669e70cc3',1,'ncine::NullIndexer::setObject()']]], + ['setorthoprojection_2424',['setOrthoProjection',['../classncine_1_1_camera.html#a50ce5ad4b18335ccc29d65b2c7d6a200',1,'ncine::Camera::setOrthoProjection(float left, float right, float top, float bottom)'],['../classncine_1_1_camera.html#aa09860d5332c1e62845dbbfe208f9ab5',1,'ncine::Camera::setOrthoProjection(const ProjectionValues &values)']]], + ['setparent_2425',['setParent',['../classncine_1_1_scene_node.html#acd1e285fe740af7a55e7209ccf17c3ec',1,'ncine::SceneNode']]], + ['setparticlesupdateenabled_2426',['setParticlesUpdateEnabled',['../classncine_1_1_particle_system.html#a2de810248bdc45f318eed79c79e92306',1,'ncine::ParticleSystem']]], + ['setpaused_2427',['setPaused',['../classncine_1_1_animated_sprite.html#a4765ef4d7d8ed7e961bb4386169f60b9',1,'ncine::AnimatedSprite::setPaused()'],['../classncine_1_1_rect_animation.html#aa5954200c58fe770e5f331210bd9feb2',1,'ncine::RectAnimation::setPaused()']]], + ['setpitch_2428',['setPitch',['../classncine_1_1_i_audio_player.html#a1071dc4b6c3cd1067c32b71787451149',1,'ncine::IAudioPlayer']]], + ['setpitchshifterproperties_2429',['setPitchShifterProperties',['../classncine_1_1_audio_effect_properties.html#a1d60eddea1786bb7a83a6a919bdb4f4d',1,'ncine::AudioEffectProperties']]], + ['setposition_2430',['setPosition',['../classncine_1_1_i_audio_player.html#a4156748b2654b99048b02e01e681d6f9',1,'ncine::IAudioPlayer::setPosition()'],['../classncine_1_1_scene_node.html#a4a89c3bab30cc257a43607ad6720238e',1,'ncine::SceneNode::setPosition(const Vector2f &position)'],['../classncine_1_1_scene_node.html#a79cc185998606da3379cdeb70ba328b9',1,'ncine::SceneNode::setPosition(float x, float y)'],['../classncine_1_1_i_audio_player.html#a26b96043a2cdd1b3cafd2c733d7dcea3',1,'ncine::IAudioPlayer::setPosition()'],['../classncine_1_1_null_audio_device.html#aa9ba4bab929a987e32a697fc90ea4376',1,'ncine::NullAudioDevice::setPosition(float x, float y, float z) override'],['../classncine_1_1_null_audio_device.html#af20b88acdce33a0ce60214b49b0fc695',1,'ncine::NullAudioDevice::setPosition(const Vector3f &position) override'],['../classncine_1_1_i_audio_device.html#aa7aacfbaeab51da82a5144c717d91ffe',1,'ncine::IAudioDevice::setPosition(float x, float y, float z)=0'],['../classncine_1_1_i_audio_device.html#a5511f7d40a722aae77cc268d9eeda942',1,'ncine::IAudioDevice::setPosition(const Vector3f &position)=0']]], + ['setpositionx_2431',['setPositionX',['../classncine_1_1_scene_node.html#acb1e1c7d584a642ccd526724884e2b14',1,'ncine::SceneNode']]], + ['setpositiony_2432',['setPositionY',['../classncine_1_1_scene_node.html#a69bef1981ed73387f942196cc26cb50b',1,'ncine::SceneNode']]], + ['setrendermode_2433',['setRenderMode',['../classncine_1_1_text_node.html#a3494ce705911d294bfd48468c23ba90d',1,'ncine::TextNode']]], + ['setreverbproperties_2434',['setReverbProperties',['../classncine_1_1_audio_effect_properties.html#a39057936625caf471ce46d20bd41126c',1,'ncine::AudioEffectProperties']]], + ['setrewindmode_2435',['setRewindMode',['../classncine_1_1_rect_animation.html#aa1ab7bb4db4c45f73ea28a04a9819ee5',1,'ncine::RectAnimation']]], + ['setringmodulatorproperties_2436',['setRingModulatorProperties',['../classncine_1_1_audio_effect_properties.html#aa74aedbbe71c115e01b03a79dff93b43',1,'ncine::AudioEffectProperties']]], + ['setrootnode_2437',['setRootNode',['../classncine_1_1_viewport.html#a368c75af36793d2686ac15f35f5da97e',1,'ncine::Viewport']]], + ['setrotation_2438',['setRotation',['../classncine_1_1_scene_node.html#adda41419d0c9e18fbf298ac8fb10b712',1,'ncine::SceneNode']]], + ['setsampleoffset_2439',['setSampleOffset',['../classncine_1_1_i_audio_player.html#ac23a2110db3a4deb77ec8b2d04fde7f0',1,'ncine::IAudioPlayer']]], + ['setscale_2440',['setScale',['../classncine_1_1_scene_node.html#a7f925e3626b0e076cce4e709ea97b478',1,'ncine::SceneNode::setScale(float scaleFactorX, float scaleFactorY)'],['../classncine_1_1_scene_node.html#aae171d5860a39a886b7bc323a1f9968a',1,'ncine::SceneNode::setScale(const Vector2f &scaleFactor)'],['../classncine_1_1_scene_node.html#a67a30f1ff8ef615cef2747646b5cfdce',1,'ncine::SceneNode::setScale(float scaleFactor)']]], + ['setscissorrect_2441',['setScissorRect',['../classncine_1_1_viewport.html#ac6ba4c10e690ea6ed7dbad0c1252aed0',1,'ncine::Viewport::setScissorRect(Recti scissorRect)'],['../classncine_1_1_viewport.html#a3355d4c0cb3b637fc22d6cdb9bd89e04',1,'ncine::Viewport::setScissorRect(int x, int y, int width, int height)'],['../classncine_1_1_viewport.html#add8b814ee0bd3a93d6d0d407c3eb5fe7',1,'ncine::Viewport::setScissorRect(const Vector2i &size)'],['../classncine_1_1_viewport.html#a2405884478e4845c514766f1643414f5',1,'ncine::Viewport::setScissorRect(int width, int height)']]], + ['setshader_2442',['setShader',['../classncine_1_1_shader_state.html#a7deb3a81aef39796e3e80c11b547d548',1,'ncine::ShaderState']]], + ['setshouldupdate_2443',['setShouldUpdate',['../classncine_1_1_qt5_widget.html#ae17e09fcaa08c6f69a95044a9a1cb447',1,'ncine::Qt5Widget']]], + ['setsize_2444',['setSize',['../classncine_1_1_base_sprite.html#a159b6188d175581f3b2c4082c48ad2e0',1,'ncine::BaseSprite::setSize(float width, float height)'],['../classncine_1_1_base_sprite.html#ae255a7ed28e8899c78ac95014f9ddb36',1,'ncine::BaseSprite::setSize(const Vector2f &size)'],['../classncine_1_1_rect.html#a04eb3397e491493f42bd9bfbfeb632c4',1,'ncine::Rect::setSize(float ww, float hh)'],['../classncine_1_1_rect.html#a58a46956266cfa9497f7c2e36b4a79dc',1,'ncine::Rect::setSize(const Vector2< T > &size)'],['../classnctl_1_1_array.html#a00a23ff3efc876c996b4015c754e0a13',1,'nctl::Array::setSize()'],['../classnctl_1_1_static_array.html#ac92514aa01957fcdd63063fb6e7e5f88',1,'nctl::StaticArray::setSize()']]], + ['setsourcelocked_2445',['setSourceLocked',['../classncine_1_1_i_audio_player.html#a4a485976dd3245ade40736d6b7985404',1,'ncine::IAudioPlayer']]], + ['setstring_2446',['setString',['../classncine_1_1_text_node.html#ae8b8aa041aa9ea1ceb8c70e0535a6326',1,'ncine::TextNode::setString(const char *string)'],['../classncine_1_1_text_node.html#a6d029f55837eb042d2dd38493f66e0d4',1,'ncine::TextNode::setString(const nctl::String &string)']]], + ['setsuspended_2447',['setSuspended',['../classncine_1_1_application.html#a46fa6cfeb02a0882602b816f65a41c70',1,'ncine::Application']]], + ['setswapinterval_2448',['setSwapInterval',['../classncine_1_1_i_gfx_device.html#a62898ed71b19bf8ccd7d750fa48a50de',1,'ncine::IGfxDevice']]], + ['settexrect_2449',['setTexRect',['../classncine_1_1_base_sprite.html#a4f18eb9759c26221479eb31e7eff5e49',1,'ncine::BaseSprite::setTexRect()'],['../classncine_1_1_particle_system.html#a1cba0c4009fc382d2d4c830091b31f79',1,'ncine::ParticleSystem::setTexRect()']]], + ['settexture_2450',['setTexture',['../classncine_1_1_viewport.html#aabb1d862aea40ffcf0cc2d1c6d1a4285',1,'ncine::Viewport::setTexture(unsigned int index, Texture *texture)'],['../classncine_1_1_viewport.html#a1fedb4a90ce015834702bf8f2d41d377',1,'ncine::Viewport::setTexture(Texture *texture)'],['../classncine_1_1_shader_state.html#aa3373bad60939e0e05f9f5cc4ddcc242',1,'ncine::ShaderState::setTexture(const Texture *texture)'],['../classncine_1_1_shader_state.html#af3f4df852faf806cdc1033864a97aad4',1,'ncine::ShaderState::setTexture(unsigned int unit, const Texture *texture)'],['../classncine_1_1_particle_system.html#acf0e3262a3c37c99c2169708ead171c6',1,'ncine::ParticleSystem::setTexture()'],['../classncine_1_1_font.html#a7657570ff44612d5189422245bd81b3f',1,'ncine::Font::setTexture()'],['../classncine_1_1_base_sprite.html#a3b85a851918132e5f904b66095ab3262',1,'ncine::BaseSprite::setTexture()']]], + ['settype_2451',['setType',['../classncine_1_1_audio_effect_properties.html#a0598001e0e1fe579b612f80017093fd3',1,'ncine::AudioEffectProperties']]], + ['setupdateenabled_2452',['setUpdateEnabled',['../classncine_1_1_scene_node.html#a384f6838d9a46bd4671fa01270ed0ac5',1,'ncine::SceneNode']]], + ['setvec_2453',['setVec',['../classncine_1_1_color.html#a6dad534a0f67a476dbe62c67823ba404',1,'ncine::Color::setVec()'],['../classncine_1_1_colorf.html#a8baa423d65c98f8dc0aa7e576a0cfcbd',1,'ncine::Colorf::setVec()'],['../classncine_1_1_color_hdr.html#a401be49dde32555a38f77f29a63b412a',1,'ncine::ColorHdr::setVec()']]], + ['setvelocity_2454',['setVelocity',['../classncine_1_1_i_audio_player.html#aba1cf62b75ff3402e2509ce203066517',1,'ncine::IAudioPlayer::setVelocity(float x, float y, float z)'],['../classncine_1_1_i_audio_player.html#ae1174ec9ffe5bcd65c24b64b4d9fe3a5',1,'ncine::IAudioPlayer::setVelocity(const Vector3f &velocity)'],['../classncine_1_1_null_audio_device.html#a9364284fc7dd59453a7d44a752c36c8e',1,'ncine::NullAudioDevice::setVelocity()'],['../classncine_1_1_i_audio_device.html#ad8868b175082eca67ffc1b39b49be075',1,'ncine::IAudioDevice::setVelocity()'],['../classncine_1_1_null_audio_device.html#aa3fe9a9a910fcc9b36e92af965c2e163',1,'ncine::NullAudioDevice::setVelocity()'],['../classncine_1_1_i_audio_device.html#acdb6c5499af0b052a4c15493bd0eea76',1,'ncine::IAudioDevice::setVelocity()']]], + ['setvertices_2455',['setVertices',['../classncine_1_1_mesh_sprite.html#ad5ca272c071e119de27ba5808fb9d104',1,'ncine::MeshSprite::setVertices(unsigned int numVertices, unsigned int bytesPerVertex, const void *vertexData)'],['../classncine_1_1_mesh_sprite.html#a5cf5ff17077d1e7c36674aff6a19786e',1,'ncine::MeshSprite::setVertices(unsigned int numVertices, const Vertex *vertices)'],['../classncine_1_1_mesh_sprite.html#af6b8ae2f3bb60aa204ed4b1262b77b0d',1,'ncine::MeshSprite::setVertices(unsigned int numVertices, const VertexNoTexture *vertices)'],['../classncine_1_1_mesh_sprite.html#a2d3da4b4e5c81309c9204363cb23f39d',1,'ncine::MeshSprite::setVertices(const MeshSprite &meshSprite)']]], + ['setvideomode_2456',['setVideoMode',['../classncine_1_1_i_gfx_device.html#aa307286cfd7a46015d00064a4136cdca',1,'ncine::IGfxDevice']]], + ['setview_2457',['setView',['../classncine_1_1_camera.html#a9e462e6c68dc7bdea682441d2cc9eb7d',1,'ncine::Camera::setView(const Vector2f &pos, float rotation, float scale)'],['../classncine_1_1_camera.html#aa99cb1e8259b22c3c1c9bb3081bbbef1',1,'ncine::Camera::setView(float x, float y, float rotation, float scale)'],['../classncine_1_1_camera.html#ab99220bd5d5f6f0487c647eca36e2d7b',1,'ncine::Camera::setView(const ViewValues &values)']]], + ['setviewportrect_2458',['setViewportRect',['../classncine_1_1_viewport.html#a856833200cc5023194d4839f27f40037',1,'ncine::Viewport::setViewportRect(Recti viewportRect)'],['../classncine_1_1_viewport.html#a8e1dc97dcaf1d16718f1c12e71065b9e',1,'ncine::Viewport::setViewportRect(int width, int height)'],['../classncine_1_1_viewport.html#a34bfc3490233cf96c8c66d313a6764ff',1,'ncine::Viewport::setViewportRect(const Vector2i &size)'],['../classncine_1_1_viewport.html#a9fd42d990167a182d34cfb8629001bdc',1,'ncine::Viewport::setViewportRect(int x, int y, int width, int height)']]], + ['setvisitorderstate_2459',['setVisitOrderState',['../classncine_1_1_scene_node.html#ae5c0eea6eef3b4565cf409f19ee2f9fd',1,'ncine::SceneNode']]], + ['setvocalmorpherproperties_2460',['setVocalMorpherProperties',['../classncine_1_1_audio_effect_properties.html#a3878710ec8d4bad784596000542d95bc',1,'ncine::AudioEffectProperties']]], + ['setwindowicon_2461',['setWindowIcon',['../classncine_1_1_i_gfx_device.html#a65200028269aef2731a29fd0517edb91',1,'ncine::IGfxDevice']]], + ['setwindowposition_2462',['setWindowPosition',['../classncine_1_1_i_gfx_device.html#acc9479881d568651190ab19818264956',1,'ncine::IGfxDevice::setWindowPosition(int x, int y)=0'],['../classncine_1_1_i_gfx_device.html#a3e75adb79d913cf08779cad8a536ed4b',1,'ncine::IGfxDevice::setWindowPosition(Vector2i position)']]], + ['setwindowsize_2463',['setWindowSize',['../classncine_1_1_i_gfx_device.html#ae92a88625236b239af382b8b4137d4e6',1,'ncine::IGfxDevice::setWindowSize(Vector2i size)'],['../classncine_1_1_i_gfx_device.html#a53669e4c0abeb0d75d34e9ec12ce4e83',1,'ncine::IGfxDevice::setWindowSize(int width, int height)=0']]], + ['setwindowtitle_2464',['setWindowTitle',['../classncine_1_1_i_gfx_device.html#aed77aaec2a0395d7b92c8e259384ca3f',1,'ncine::IGfxDevice']]], + ['setworldmatrix_2465',['setWorldMatrix',['../classncine_1_1_scene_node.html#a6c855453c22b849bfafa034472a10a50',1,'ncine::SceneNode']]], + ['setwrap_2466',['setWrap',['../classncine_1_1_texture.html#a02ef0373ad837c24b25ab95445d2b3fa',1,'ncine::Texture']]], + ['shader_2467',['Shader',['../classncine_1_1_shader.html#a58b2e7a0e030eb7922bd73402082dd34',1,'ncine::Shader']]], + ['shader_2468',['shader',['../classncine_1_1_shader_state.html#a00daaf37f82a2e0bdf5074c2247229f4',1,'ncine::ShaderState']]], + ['shaderhaschanged_2469',['shaderHasChanged',['../classncine_1_1_base_sprite.html#a0450d7bfe2285774a9b10a969d07d84c',1,'ncine::BaseSprite::shaderHasChanged()'],['../classncine_1_1_drawable_node.html#a417b2d61a4d54d6d3256c15d9eb4e45e',1,'ncine::DrawableNode::shaderHasChanged()']]], + ['shaderstate_2470',['ShaderState',['../classncine_1_1_shader_state.html#a4d75ce41eda55c80ed5b038a7d995cf0',1,'ncine::ShaderState']]], + ['shouldquit_2471',['shouldQuit',['../classncine_1_1_application.html#a80dbf05602e176458498e4c6307f91ba',1,'ncine::Application']]], + ['shrinktofit_2472',['shrinkToFit',['../classnctl_1_1_string.html#a2ee66edbfb73bde199d3267bc844751b',1,'nctl::String::shrinkToFit()'],['../classnctl_1_1_array.html#a5d093bb1cf828bd7c0759d1132693a9f',1,'nctl::Array::shrinkToFit()']]], + ['shutdowncommon_2473',['shutdownCommon',['../classncine_1_1_application.html#aebd92dd6c66c4bc75e6e0ae3774cce6c',1,'ncine::Application']]], + ['size_2474',['size',['../classnctl_1_1_static_hash_set.html#a3bcc0f01b413c95cf85783cdf7ac8106',1,'nctl::StaticHashSet::size()'],['../classnctl_1_1_static_hash_map.html#acd646d140507fdc586274186faa90774',1,'nctl::StaticHashMap::size()'],['../classnctl_1_1_static_array.html#aeb048a7e8ca63ae38e2e44516bb8a80d',1,'nctl::StaticArray::size()'],['../classnctl_1_1_sparse_set.html#ac9e65e43473ab99177ed57205e51b9b6',1,'nctl::SparseSet::size()'],['../classnctl_1_1_list.html#ae7a7fa469a5e887353c4b9f3416471dd',1,'nctl::List::size()'],['../classnctl_1_1_i_allocator.html#addd9078f91902937cefb2b5d2e5379fa',1,'nctl::IAllocator::size()'],['../classnctl_1_1_hash_set_list.html#a54ee5befef5c5e2a708559450aa5247e',1,'nctl::HashSetList::size()'],['../classnctl_1_1_hash_set.html#af4c4ae2906f35ebc15ec5a4615a7b597',1,'nctl::HashSet::size()'],['../classnctl_1_1_hash_map_list.html#adc6ef59e163f65007dc381cfc779ce32',1,'nctl::HashMapList::size()'],['../classnctl_1_1_bit_set.html#aece1bce2ab19ab226839bce6f093a122',1,'nctl::BitSet::size()'],['../classnctl_1_1_hash_map.html#ac863d0500854a3964c4fa12cdcdf2f9a',1,'nctl::HashMap::size()'],['../classncine_1_1_drawable_node.html#a197117efd4de823017db739d6a74731c',1,'ncine::DrawableNode::size()'],['../classncine_1_1_emscripten_local_file.html#a96610e3643c441d07796a3e410d63e8a',1,'ncine::EmscriptenLocalFile::size()'],['../classncine_1_1_i_file.html#a71befbc335aebbc513813286ee463500',1,'ncine::IFile::size()'],['../classncine_1_1_i_indexer.html#ac8e12b0bb4aade0e8a0f28a63baba5af',1,'ncine::IIndexer::size()'],['../classncine_1_1_texture.html#a10114a65de0fd0a1284efc797db4cc2b',1,'ncine::Texture::size()'],['../classncine_1_1_viewport.html#ab9265e92fd67039b376dbfc3409a2b30',1,'ncine::Viewport::size()'],['../classnctl_1_1_array.html#a9ecbda1e7f173e73a6c7a6610f81607f',1,'nctl::Array::size()'],['../classncine_1_1_null_indexer.html#abe70bf6f6477e1d7fc507f63587d9723',1,'ncine::NullIndexer::size()']]], + ['sizeaffector_2475',['SizeAffector',['../classncine_1_1_size_affector.html#aa941ff595bf8125aec24033d806c5e74',1,'ncine::SizeAffector::SizeAffector()'],['../classncine_1_1_size_affector.html#ad03b5bfa690e89aaab5e10d192adba82',1,'ncine::SizeAffector::SizeAffector(float baseScale)'],['../classncine_1_1_size_affector.html#ad080eb4e70ecf7029aa2dd18f1af635f',1,'ncine::SizeAffector::SizeAffector(float baseScaleX, float baseScaleY)'],['../classncine_1_1_size_affector.html#ad1a4c3751256cb77cee14de688318703',1,'ncine::SizeAffector::SizeAffector(const Vector2f &baseScale)'],['../classncine_1_1_size_affector.html#abd845001b52afdef6386c4ce8aea9603',1,'ncine::SizeAffector::SizeAffector(SizeAffector &&)=default'],['../classncine_1_1_size_affector.html#aa92765be47c6510b8f131da0de351017',1,'ncine::SizeAffector::SizeAffector(const SizeAffector &other)=default']]], + ['sleep_2476',['sleep',['../classncine_1_1_timer.html#a8519853b1f0a184d89f47a4754f025d7',1,'ncine::Timer']]], + ['sourceid_2477',['sourceId',['../classncine_1_1_i_audio_player.html#a3d97283068632ade412ab3c30eacd4c0',1,'ncine::IAudioPlayer']]], + ['sparseset_2478',['SparseSet',['../classnctl_1_1_sparse_set.html#ac3e08cb4f1c2417f72519734cc6a170c',1,'nctl::SparseSet::SparseSet(const SparseSet &other)'],['../classnctl_1_1_sparse_set.html#af7ac1bd5e9b4c3c4ea78fcd0cdae2888',1,'nctl::SparseSet::SparseSet(SparseSet &&other)']]], + ['splice_2479',['splice',['../classnctl_1_1_list.html#a0b76cf9994498f61428e79aad9d978ab',1,'nctl::List::splice(Iterator position, List &source)'],['../classnctl_1_1_list.html#ad4ec26c55efaf51bc11d8fe6b57b723e',1,'nctl::List::splice(Iterator position, List &source, Iterator it)'],['../classnctl_1_1_list.html#a1e496f96f4f12269f996575316310f93',1,'nctl::List::splice(Iterator position, List &source, Iterator first, Iterator last)']]], + ['sprite_2480',['Sprite',['../classncine_1_1_sprite.html#a512bf1c9ccad4dbceb1b4c3bbd4400f8',1,'ncine::Sprite::Sprite(const Sprite &other)'],['../classncine_1_1_sprite.html#aaa3fe76ac8ff7cb6bdea4328a987c60b',1,'ncine::Sprite::Sprite(Sprite &&)=default'],['../classncine_1_1_sprite.html#a233efd6b8f30757d43586221d83f4a7a',1,'ncine::Sprite::Sprite(Texture *texture)'],['../classncine_1_1_sprite.html#af35b027116be88624a883b094d88afff',1,'ncine::Sprite::Sprite(Texture *texture, const Vector2f &position)'],['../classncine_1_1_sprite.html#a86acf82da983b5511dd3973a201b4fb9',1,'ncine::Sprite::Sprite(Texture *texture, float xx, float yy)'],['../classncine_1_1_sprite.html#a171e60581c1451ea79ffcbd0f2ae1bba',1,'ncine::Sprite::Sprite(SceneNode *parent, Texture *texture, const Vector2f &position)'],['../classncine_1_1_sprite.html#a86aaf68bc3f116d0e1fa5b9812be1aff',1,'ncine::Sprite::Sprite(SceneNode *parent, Texture *texture, float xx, float yy)'],['../classncine_1_1_sprite.html#a1645a27098a2f6fd6efb6d7ce60c0363',1,'ncine::Sprite::Sprite(SceneNode *parent, Texture *texture)'],['../classncine_1_1_sprite.html#a9b7973b7d7e54f9511ef430e221207a4',1,'ncine::Sprite::Sprite()']]], + ['srcblendingfactor_2481',['srcBlendingFactor',['../classncine_1_1_drawable_node.html#a15b4a8f10b7bc3d78785b233c3a3f89c',1,'ncine::DrawableNode']]], + ['start_2482',['start',['../classncine_1_1_android_application.html#a4159e1e50135ea264505e0f085a2e4a5',1,'ncine::AndroidApplication::start()'],['../classncine_1_1_p_c_application.html#a84b1d9e765491e384e26536efffdd4c5',1,'ncine::PCApplication::start()'],['../classncine_1_1_timer.html#aa49204c4137fe953efd4aace26b0ab34',1,'ncine::Timer::start()']]], + ['state_2483',['state',['../classncine_1_1_i_audio_player.html#a44521b6b48a8500b2313531cdc056ad9',1,'ncine::IAudioPlayer']]], + ['staticarray_2484',['StaticArray',['../classnctl_1_1_static_array.html#afc269b7bf09db804034bf12235bd5c0e',1,'nctl::StaticArray::StaticArray()'],['../classnctl_1_1_static_array.html#a89840032113bdbeee8937855696c66f4',1,'nctl::StaticArray::StaticArray(StaticArrayMode mode)'],['../classnctl_1_1_static_array.html#a0624f07bf5a8ab8f4ef0bb840530b4d6',1,'nctl::StaticArray::StaticArray(const StaticArray &other)'],['../classnctl_1_1_static_array.html#adfdfee63398d8a8e8f999d9ed605887d',1,'nctl::StaticArray::StaticArray(StaticArray &&other)']]], + ['statichashmap_2485',['StaticHashMap',['../classnctl_1_1_static_hash_map.html#ab752b1491edfbbb645972584ca827d24',1,'nctl::StaticHashMap::StaticHashMap(const StaticHashMap &other)'],['../classnctl_1_1_static_hash_map.html#a7e917be3de2ab947b59497c3c01189ca',1,'nctl::StaticHashMap::StaticHashMap(StaticHashMap &&other)']]], + ['statichashmapiterator_2486',['StaticHashMapIterator',['../classnctl_1_1_static_hash_map_iterator.html#ab4e83e468167adfd959536fcf0f22230',1,'nctl::StaticHashMapIterator']]], + ['statichashset_2487',['StaticHashSet',['../classnctl_1_1_static_hash_set.html#ab56abe7904063420c8aa0b8547ec6dbc',1,'nctl::StaticHashSet::StaticHashSet(StaticHashSet &&other)'],['../classnctl_1_1_static_hash_set.html#a9bdad1dba3e26cf07ecc84aab333b882',1,'nctl::StaticHashSet::StaticHashSet(const StaticHashSet &other)']]], + ['staticstring_2488',['StaticString',['../classnctl_1_1_static_string.html#a89a68e7744db5a86d4dfff147efc3b08',1,'nctl::StaticString::StaticString()'],['../classnctl_1_1_static_string.html#a82aece6f002f8ffa2b6a8699af2d9964',1,'nctl::StaticString::StaticString(const char *cString)'],['../classnctl_1_1_static_string.html#a2e344c6a1f22de437da0ce14c427c1bb',1,'nctl::StaticString::StaticString(const StaticString &other)'],['../classnctl_1_1_static_string.html#a800f3280320a74a5c79972c04956d9ce',1,'nctl::StaticString::StaticString(const StaticString< U > &other)']]], + ['statistics_2489',['statistics',['../classncine_1_1_hash64.html#ac8fc9184ee49d070a8a17182c060c280',1,'ncine::Hash64']]], + ['stencilbits_2490',['stencilBits',['../classncine_1_1_display_mode.html#ae7684608ca66d7e1aa5b86b11783abf5',1,'ncine::DisplayMode']]], + ['step_2491',['step',['../classncine_1_1_application.html#ab852af89ad3bea67e0d262b43751ec69',1,'ncine::Application']]], + ['stop_2492',['stop',['../classncine_1_1_i_audio_player.html#ac2d54f04e6095ea98fd6c0e353236656',1,'ncine::IAudioPlayer::stop()'],['../classncine_1_1_timer.html#ac001019d4ff9687539ef276b154c9e4f',1,'ncine::Timer::stop()'],['../classncine_1_1_audio_stream_player.html#ae5243ad2107eeb9c3687b2e3cd1c065f',1,'ncine::AudioStreamPlayer::stop()'],['../classncine_1_1_audio_stream.html#a38246a80bd7eecbf30acd04bb3eb3d4a',1,'ncine::AudioStream::stop()'],['../classncine_1_1_audio_buffer_player.html#a3cf5dcf778ec10aafb358ed963c9a497',1,'ncine::AudioBufferPlayer::stop()']]], + ['stopplayers_2493',['stopPlayers',['../classncine_1_1_i_audio_device.html#a0d36f3e918e285a1a0d69a3bdb3a7932',1,'ncine::IAudioDevice::stopPlayers()=0'],['../classncine_1_1_i_audio_device.html#abe0660a0f49a95bea5c18243b32ccc13',1,'ncine::IAudioDevice::stopPlayers(PlayerType playerType)=0'],['../classncine_1_1_null_audio_device.html#ad2f8ec426a9cab5fbf62f01440ea49da',1,'ncine::NullAudioDevice::stopPlayers() override'],['../classncine_1_1_null_audio_device.html#a15278691420e85b312c22f72f6d26136',1,'ncine::NullAudioDevice::stopPlayers(PlayerType playerType) override']]], + ['streambuffersize_2494',['streamBufferSize',['../classncine_1_1_audio_stream.html#a61950f890d8861c899dd7559f4fc5a17',1,'ncine::AudioStream::streamBufferSize()'],['../classncine_1_1_audio_stream_player.html#ab8ece94b280e747dd1302f697989b934',1,'ncine::AudioStreamPlayer::streamBufferSize()']]], + ['string_2495',['String',['../classnctl_1_1_string.html#ad2922e6acc2ad37d294acd8cbbb583b3',1,'nctl::String']]], + ['string_2496',['string',['../classncine_1_1_text_node.html#a98f5bb6f43f3e971fb731c105f1f70fa',1,'ncine::TextNode::string()'],['../classncine_1_1_text_node.html#aaed37f7c1997730e9a2e0e4e67138af0',1,'ncine::TextNode::string() const']]], + ['string_2497',['String',['../classnctl_1_1_string.html#ad0a33959a6a4b8eef9a2fa47bb686d79',1,'nctl::String::String(String &&other)'],['../classnctl_1_1_string.html#a8be440e78e6e9b078d39c5c44a2cea42',1,'nctl::String::String(const String &other)'],['../classnctl_1_1_string.html#a7802027fed987eef1ad0b7c1debc5067',1,'nctl::String::String(const char *cString)'],['../classnctl_1_1_string.html#ad0c5d18ac9422005c272358e610699df',1,'nctl::String::String(unsigned int capacity, StringMode mode)'],['../classnctl_1_1_string.html#abf5c075a964f1d1684919c39b4acf4af',1,'nctl::String::String(StringMode mode)'],['../classnctl_1_1_string.html#ad284c2f666d107ec7dd76b89ffd92972',1,'nctl::String::String()'],['../classnctl_1_1_string.html#ac5022bd1104e891a4224eafee74dc660',1,'nctl::String::String(const char *cString, StringMode mode)']]], + ['stringiterator_2498',['StringIterator',['../classnctl_1_1_string_iterator.html#a2ce1172e97d907ef3ad7c027ecae56af',1,'nctl::StringIterator']]], + ['stype_2499',['sType',['../classncine_1_1_object.html#a8960d2d0df46d7e3b6bc04ab21f87a0c',1,'ncine::Object']]], + ['suspend_2500',['suspend',['../classncine_1_1_application.html#a9c0a9ab89fdbbe83d3ee95afabcd901b',1,'ncine::Application']]], + ['swap_2501',['swap',['../classnctl_1_1_hash_map.html#a2c426499b918cb9c55eae254c7a5b3b4',1,'nctl::HashMap::swap()'],['../classnctl_1_1_string.html#a639ecfadb3c3d9bf60d38d28df07fccf',1,'nctl::String::swap()'],['../classnctl_1_1_sparse_set.html#af44e93006c46259ee6486f83dce7154b',1,'nctl::SparseSet::swap()'],['../classnctl_1_1_list.html#a4a0db08b291600115ddc469fe660b766',1,'nctl::List::swap()'],['../classnctl_1_1_hash_set.html#acbf88bfe2bbcdee745bc761b03d4b5df',1,'nctl::HashSet::swap()'],['../classnctl_1_1_array.html#a63608e034c5ed7b4cb8ed25cd53957c2',1,'nctl::Array::swap()']]], + ['swapchildpointer_2502',['swapChildPointer',['../classncine_1_1_scene_node.html#a7204864765a4becdc1bca88882cb85a5',1,'ncine::SceneNode']]], + ['swapchildrennodes_2503',['swapChildrenNodes',['../classncine_1_1_scene_node.html#a22853db10e98431a0f3890bd14707ffd',1,'ncine::SceneNode']]], + ['swapnodeback_2504',['swapNodeBack',['../classncine_1_1_scene_node.html#a7eaafcbe9f546895cabe3ddd03ba8101',1,'ncine::SceneNode']]], + ['swapnodeforward_2505',['swapNodeForward',['../classncine_1_1_scene_node.html#a60cb39746d36315350d9e6e73b6516b6',1,'ncine::SceneNode']]] +]; diff --git a/master/search/functions_13.html b/master/search/functions_13.html new file mode 100644 index 0000000000..3da2ea69cf --- /dev/null +++ b/master/search/functions_13.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/functions_13.js b/master/search/functions_13.js new file mode 100644 index 0000000000..9a11206908 --- /dev/null +++ b/master/search/functions_13.js @@ -0,0 +1,24 @@ +var searchData= +[ + ['tell_2506',['tell',['../classncine_1_1_i_file.html#a4de731cff02783ec12ce519777e02b2d',1,'ncine::IFile::tell()'],['../classncine_1_1_asset_file.html#a6f3620bc57a7c3d4a5945337a8c84b9f',1,'ncine::AssetFile::tell()']]], + ['test_2507',['test',['../classnctl_1_1_bit_set.html#afb2898a74cf995f0797e1b3ce670f676',1,'nctl::BitSet']]], + ['texrect_2508',['texRect',['../classncine_1_1_base_sprite.html#a26f07a30eb3c9d4f0ec2fd292e14b5cf',1,'ncine::BaseSprite']]], + ['textnode_2509',['TextNode',['../classncine_1_1_text_node.html#a17095bc5febc22611e7421c910834023',1,'ncine::TextNode::TextNode(TextNode &&)=default'],['../classncine_1_1_text_node.html#a759e7d2e49e31ba2a04248dca88e3911',1,'ncine::TextNode::TextNode(const TextNode &other)']]], + ['texture_2510',['Texture',['../classncine_1_1_texture.html#a14346f072ed8ed79fbfe73fc96557ecf',1,'ncine::Texture']]], + ['texture_2511',['texture',['../classncine_1_1_viewport.html#a9b1aac0946d5197d57ea758dff82a373',1,'ncine::Viewport::texture()'],['../classncine_1_1_viewport.html#ace3e169f2a6048e22fee6787d20fc0e2',1,'ncine::Viewport::texture(unsigned int index)'],['../classncine_1_1_font.html#a4472bd8882a7c3d42b018bc2b7566a31',1,'ncine::Font::texture()'],['../classncine_1_1_font.html#a69c0d6093e79e78f975c31f494e7f9fe',1,'ncine::Font::texture() const'],['../classncine_1_1_base_sprite.html#a94f8fab1e3c751e27629d6be61dda345',1,'ncine::BaseSprite::texture()']]], + ['texture_2512',['Texture',['../classncine_1_1_texture.html#a62f9f16f3992fe329ce6a35c3935fcac',1,'ncine::Texture::Texture(Texture &&)'],['../classncine_1_1_texture.html#a7f622fa63591fde50cd2b37002d99b52',1,'ncine::Texture::Texture(const char *filename)'],['../classncine_1_1_texture.html#afc17c27a67593833b0c33081bcad3465',1,'ncine::Texture::Texture(const char *name, Format format, Vector2i size)'],['../classncine_1_1_texture.html#abd3b1cc4d2d0fc634143bcf1c278757c',1,'ncine::Texture::Texture(const char *name, Format format, int width, int height)'],['../classncine_1_1_texture.html#a9921d96fc6d207f94a2e225628a3e6b0',1,'ncine::Texture::Texture(const char *name, Format format, int mipMapCount, Vector2i size)'],['../classncine_1_1_texture.html#aecdd5c43b69d34a4704433c12fab3876',1,'ncine::Texture::Texture(const char *name, Format format, int mipMapCount, int width, int height)'],['../classncine_1_1_texture.html#a350ae96364626c1c4a1be2d8dc7f3e8a',1,'ncine::Texture::Texture()']]], + ['texturehaschanged_2513',['textureHasChanged',['../classncine_1_1_base_sprite.html#a122d7490bf8dd9da705c685f3a3dcc4b',1,'ncine::BaseSprite']]], + ['texturesize_2514',['textureSize',['../classncine_1_1_font.html#a9f3e853cb800402e6bc3ccfc12a7eda2',1,'ncine::Font']]], + ['threadpool_2515',['threadPool',['../classncine_1_1_service_locator.html#ad7d39ec88b37dd026c0086996d6efc84',1,'ncine::ServiceLocator']]], + ['ticks_2516',['ticks',['../classncine_1_1_time_stamp.html#a3191a0952f624328556f8c0f18e44ce5',1,'ncine::TimeStamp']]], + ['timesince_2517',['timeSince',['../classncine_1_1_time_stamp.html#a756a0918bbbef4e0f5805bdee6f885ef',1,'ncine::TimeStamp']]], + ['timings_2518',['timings',['../classncine_1_1_application.html#a092bd96fe363c0cb19edaed541f2bea8',1,'ncine::Application']]], + ['togglesoftinput_2519',['toggleSoftInput',['../classncine_1_1_android_application.html#a044fe6a457c89f3a278b83676bcbd836',1,'ncine::AndroidApplication']]], + ['total_2520',['total',['../classncine_1_1_timer.html#a2236c2e6878e8fac26e72930968a0ea6',1,'ncine::Timer']]], + ['totalnumberframes_2521',['totalNumberFrames',['../classncine_1_1_i_frame_timer.html#aa41d15ffe84d70736f45fcdee5e7d7e8',1,'ncine::IFrameTimer']]], + ['totalprocessedbuffers_2522',['totalProcessedBuffers',['../classncine_1_1_audio_stream.html#a636e7f147f9d5835e0535d0e2222130f',1,'ncine::AudioStream']]], + ['tryopen_2523',['tryOpen',['../classncine_1_1_asset_file.html#aab4271c386d99f4ee956a8217ffb7962',1,'ncine::AssetFile']]], + ['tryopendirectory_2524',['tryOpenDirectory',['../classncine_1_1_asset_file.html#ac9adf1214c12de44201aebb8acb1b339',1,'ncine::AssetFile']]], + ['tryopenfile_2525',['tryOpenFile',['../classncine_1_1_asset_file.html#a4dcfac79c109ae19fdf40525f806f3db',1,'ncine::AssetFile']]], + ['type_2526',['type',['../classncine_1_1_audio_effect.html#a69d1590a8fde02c60c2dd2607cd2f29c',1,'ncine::AudioEffect::type()'],['../classncine_1_1_audio_effect_properties.html#adc85852d1420c0733e5c702ff42fb14b',1,'ncine::AudioEffectProperties::type()'],['../classncine_1_1_audio_filter.html#afd5d183c786e0f1f51f9905621d68214',1,'ncine::AudioFilter::type()'],['../classncine_1_1_i_file.html#a9d8be824821e1ca83461ba50b03820e8',1,'ncine::IFile::type()'],['../classncine_1_1_object.html#ae9933d9ca04758549f0d06fb7b0943d8',1,'ncine::Object::type()'],['../classncine_1_1_particle_affector.html#a4ee1335afd45509f8f03aa2b7c88cf44',1,'ncine::ParticleAffector::type()'],['../classncine_1_1_viewport.html#aefa0d6bf552ccda2b0c81ed06d0f8b65',1,'ncine::Viewport::type()']]] +]; diff --git a/master/search/functions_14.html b/master/search/functions_14.html new file mode 100644 index 0000000000..29237b44cd --- /dev/null +++ b/master/search/functions_14.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/functions_14.js b/master/search/functions_14.js new file mode 100644 index 0000000000..08c8bd3576 --- /dev/null +++ b/master/search/functions_14.js @@ -0,0 +1,29 @@ +var searchData= +[ + ['uniqueindices_2527',['uniqueIndices',['../classncine_1_1_mesh_sprite.html#a3c75cb015050fbbbda78011ba7c03a62',1,'ncine::MeshSprite']]], + ['uniquevertices_2528',['uniqueVertices',['../classncine_1_1_mesh_sprite.html#a74686e888313b015fcebd76e086d6e4b',1,'ncine::MeshSprite']]], + ['unlinkchildnode_2529',['unlinkChildNode',['../classncine_1_1_scene_node.html#a6a190ef4fd6f9d7d25075c6e9cb8f147',1,'ncine::SceneNode']]], + ['unorderederase_2530',['unorderedErase',['../classnctl_1_1_array.html#afb08ea0392e1ef8d969636068f8ca3f0',1,'nctl::Array::unorderedErase(Iterator position)'],['../classnctl_1_1_array.html#ae8a9d9dc35c48601fa6c83df8ff4a9a0',1,'nctl::Array::unorderedErase(Iterator first, const Iterator last)'],['../classnctl_1_1_static_array.html#a4f0e72ecc62fd0e07ce025a9d527356a',1,'nctl::StaticArray::unorderedErase(Iterator position)'],['../classnctl_1_1_static_array.html#aea68ee8cec1e4a9a0e42d5ca089df233',1,'nctl::StaticArray::unorderedErase(Iterator first, const Iterator last)']]], + ['unorderedremoveat_2531',['unorderedRemoveAt',['../classnctl_1_1_array.html#a240e919fb2fe12fe7832d9cee5ac97be',1,'nctl::Array::unorderedRemoveAt()'],['../classnctl_1_1_static_array.html#a843c943ad38a18f125c93cd157c6387b',1,'nctl::StaticArray::unorderedRemoveAt()']]], + ['unorderedremoverange_2532',['unorderedRemoveRange',['../classnctl_1_1_array.html#a6897e9cabe5d74bc668be469f1d96fd9',1,'nctl::Array::unorderedRemoveRange()'],['../classnctl_1_1_static_array.html#abc95d55b4601fc52e6dddb018b664114',1,'nctl::StaticArray::unorderedRemoveRange()']]], + ['unregisterall_2533',['unregisterAll',['../classncine_1_1_service_locator.html#a8c6600577d8394a5361248ad136f494c',1,'ncine::ServiceLocator']]], + ['unregisteraudiodevice_2534',['unregisterAudioDevice',['../classncine_1_1_service_locator.html#aa90a89f5a59077a9aff52c6ed6d8a501',1,'ncine::ServiceLocator']]], + ['unregistergfxcapabilities_2535',['unregisterGfxCapabilities',['../classncine_1_1_service_locator.html#ab97b4fb4c7487811d87dda1880c157c8',1,'ncine::ServiceLocator']]], + ['unregisterindexer_2536',['unregisterIndexer',['../classncine_1_1_service_locator.html#a41464268126606d97accba4e59962f04',1,'ncine::ServiceLocator']]], + ['unregisterlogger_2537',['unregisterLogger',['../classncine_1_1_service_locator.html#ae81b0770b12bf3028cb8aa1c84d04b51',1,'ncine::ServiceLocator']]], + ['unregisterplayer_2538',['unregisterPlayer',['../classncine_1_1_i_audio_device.html#a3e6b63e5c618ce8718acc023b61e63d5',1,'ncine::IAudioDevice::unregisterPlayer()'],['../classncine_1_1_null_audio_device.html#a4ef5a91a1a9e4f725655a2a65b381c37',1,'ncine::NullAudioDevice::unregisterPlayer()']]], + ['unregisterthreadpool_2539',['unregisterThreadPool',['../classncine_1_1_service_locator.html#a4fa689c9af82f0522f5bbf55757f4150',1,'ncine::ServiceLocator']]], + ['update_2540',['update',['../classncine_1_1_scene_node.html#aef0e1b931cda677c0e051d240cb98c83',1,'ncine::SceneNode::update()'],['../classncine_1_1_particle_system.html#a9f119093d6fb28863e0f0edc30ef708a',1,'ncine::ParticleSystem::update()'],['../classncine_1_1_animated_sprite.html#a3df5accc00df4e2aaec63b8bb151b45d',1,'ncine::AnimatedSprite::update()']]], + ['updateaabb_2541',['updateAabb',['../classncine_1_1_drawable_node.html#a33ba2084d93031328b200744c04fe485',1,'ncine::DrawableNode']]], + ['updateculling_2542',['updateCulling',['../classncine_1_1_drawable_node.html#a0911c8e9e324dcd03da68392093367eb',1,'ncine::DrawableNode']]], + ['updateframe_2543',['updateFrame',['../classncine_1_1_rect_animation.html#aafb598490c406568d4dd0bda2359b716',1,'ncine::RectAnimation']]], + ['updateframeprojectionmatrix_2544',['updateFrameProjectionMatrix',['../classncine_1_1_camera.html#a53238e354b5c67d0930e862704f0c4ac',1,'ncine::Camera']]], + ['updateframeviewmatrix_2545',['updateFrameViewMatrix',['../classncine_1_1_camera.html#a3fa1f16f76417096d1a10553ebb66adc',1,'ncine::Camera']]], + ['updatemonitors_2546',['updateMonitors',['../classncine_1_1_i_gfx_device.html#ade9afde5ab9fb4b39d2c46e3727c7c6a',1,'ncine::IGfxDevice']]], + ['updateplayers_2547',['updatePlayers',['../classncine_1_1_i_audio_device.html#afe94cb504b027853bb93e861605937cf',1,'ncine::IAudioDevice::updatePlayers()'],['../classncine_1_1_null_audio_device.html#a133e9ded9fc208fc79bb5e2245ad00b2',1,'ncine::NullAudioDevice::updatePlayers()']]], + ['updaterendercommand_2548',['updateRenderCommand',['../classncine_1_1_drawable_node.html#a9f7b14db9747d4e619efb6bde5553e58',1,'ncine::DrawableNode::updateRenderCommand()'],['../classncine_1_1_base_sprite.html#a203e9e13d90350bc78798f2946c6a629',1,'ncine::BaseSprite::updateRenderCommand()']]], + ['updatescalingfactor_2549',['updateScalingFactor',['../classncine_1_1_application.html#a6602fe13683ba1c96ece7960c58cf190',1,'ncine::Application']]], + ['updatestate_2550',['updateState',['../classncine_1_1_audio_buffer_player.html#a85c9ccfcc21f98a2b3556895ab2f3b45',1,'ncine::AudioBufferPlayer::updateState()'],['../classncine_1_1_audio_stream_player.html#ab3f96c427677ce2b1f21848c8a2ab568',1,'ncine::AudioStreamPlayer::updateState()'],['../classncine_1_1_i_audio_player.html#aa06fbf87452af42c637cbed2e8ccc453',1,'ncine::IAudioPlayer::updateState()']]], + ['usedmemory_2551',['usedMemory',['../classnctl_1_1_i_allocator.html#a8a8c7b68537065a6159ef99e11f8a429',1,'nctl::IAllocator']]], + ['utf8tocodepoint_2552',['utf8ToCodePoint',['../classnctl_1_1_static_string.html#afa50073a475d643c835d8ae54c7d26ab',1,'nctl::StaticString::utf8ToCodePoint(unsigned int position, unsigned int &codePoint, unsigned int *codeUnits) const'],['../classnctl_1_1_static_string.html#a55e98c0e1e4c30c57e1c77dbe0c92d74',1,'nctl::StaticString::utf8ToCodePoint(unsigned int position, unsigned int &codePoint) const'],['../classnctl_1_1_string.html#a52bef6340dbd5fafa146f8c605e6476f',1,'nctl::String::utf8ToCodePoint(unsigned int position, unsigned int &codePoint, unsigned int *codeUnits) const'],['../classnctl_1_1_string.html#a58a2fb574c706a5aff4dc6ed2355108c',1,'nctl::String::utf8ToCodePoint(unsigned int position, unsigned int &codePoint) const']]] +]; diff --git a/master/search/functions_15.html b/master/search/functions_15.html new file mode 100644 index 0000000000..6d5decd705 --- /dev/null +++ b/master/search/functions_15.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/functions_15.js b/master/search/functions_15.js new file mode 100644 index 0000000000..0c662976d3 --- /dev/null +++ b/master/search/functions_15.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['validateminmax_2553',['validateMinMax',['../structncine_1_1_particle_initializer.html#ae642a5dc76391b8533a7b31171acc0b2',1,'ncine::ParticleInitializer']]], + ['value_2554',['value',['../classncine_1_1_i_gfx_capabilities.html#adb743a36e25ad7d30480a715e07190ee',1,'ncine::IGfxCapabilities::value()'],['../classnctl_1_1_hash_map_iterator.html#a2ca4ec064c69142589948abbefaef6e1',1,'nctl::HashMapIterator::value()'],['../classnctl_1_1_hash_map_list_iterator.html#ab9186ae014081101551ba57908f978bc',1,'nctl::HashMapListIterator::value()'],['../classnctl_1_1_static_hash_map_iterator.html#a6ace65488d0ec1a69bb50938d64a250e',1,'nctl::StaticHashMapIterator::value()']]], + ['velocity_2555',['velocity',['../classncine_1_1_i_audio_device.html#adefd040086204ebc89ff28cd12c6b4c0',1,'ncine::IAudioDevice::velocity()'],['../classncine_1_1_null_audio_device.html#a1c7fb978511e3411182f4dd688a63438',1,'ncine::NullAudioDevice::velocity()'],['../classncine_1_1_i_audio_player.html#a0a70a2a9c3ea2dba1119a8358084980b',1,'ncine::IAudioPlayer::velocity()']]], + ['velocityaffector_2556',['VelocityAffector',['../classncine_1_1_velocity_affector.html#a49f5d9284669e07d211bf1123e573ff5',1,'ncine::VelocityAffector::VelocityAffector(VelocityAffector &&)=default'],['../classncine_1_1_velocity_affector.html#a319bba689228e73202ec1e9859b43835',1,'ncine::VelocityAffector::VelocityAffector(const VelocityAffector &other)=default']]], + ['vertices_2557',['vertices',['../classncine_1_1_mesh_sprite.html#aebfd74d7a146551d089e8e8c11361a53',1,'ncine::MeshSprite']]], + ['view_2558',['view',['../classncine_1_1_camera.html#aa9c87c8721b820b0dac673e5ae0f9a65',1,'ncine::Camera']]], + ['viewport_2559',['Viewport',['../classncine_1_1_viewport.html#a3e0a93af012edb0dcc254545e2891aa1',1,'ncine::Viewport::Viewport(const char *name, Texture *texture, DepthStencilFormat depthStencilFormat)'],['../classncine_1_1_viewport.html#a39c1bf57f1267d5a47f751755460c36c',1,'ncine::Viewport::Viewport(const Viewport &)=delete'],['../classncine_1_1_viewport.html#aa9d28a109f6561bff94a6c49dd366434',1,'ncine::Viewport::Viewport()'],['../classncine_1_1_viewport.html#a559d2b9573909cd1a8783d4a580445bb',1,'ncine::Viewport::Viewport(Texture *texture)'],['../classncine_1_1_viewport.html#a0c6e0239627fa5d3234557aae80c51e5',1,'ncine::Viewport::Viewport(const char *name, Texture *texture)'],['../classncine_1_1_viewport.html#ab00ebe72f12f0f3cbe1a22ba4d8e47ce',1,'ncine::Viewport::Viewport(Texture *texture, DepthStencilFormat depthStencilFormat)']]], + ['viewportrect_2560',['viewportRect',['../classncine_1_1_viewport.html#a876418478cdbaf8b8c60c01dfe4f356f',1,'ncine::Viewport']]], + ['viewvalues_2561',['viewValues',['../classncine_1_1_camera.html#a8ff1f3bf22e0e6f89d7c07fbe66dca3f',1,'ncine::Camera']]], + ['visit_2562',['visit',['../classncine_1_1_scene_node.html#a4d86a8165b2642cb3312c7e313e1a48c',1,'ncine::SceneNode']]], + ['visitorderindex_2563',['visitOrderIndex',['../classncine_1_1_scene_node.html#acb3ca42e38b5dd80cb5a2c54684bd497',1,'ncine::SceneNode']]], + ['visitorderstate_2564',['visitOrderState',['../classncine_1_1_scene_node.html#a26cb4cc42126716b67179b4025f861b4',1,'ncine::SceneNode']]], + ['vocalmorpherproperties_2565',['vocalMorpherProperties',['../classncine_1_1_audio_effect_properties.html#ae7cbb652b1e1629c33485737b53bf5df',1,'ncine::AudioEffectProperties::vocalMorpherProperties() const'],['../classncine_1_1_audio_effect_properties.html#a0199c06925017ba58570b9d994b2b0cf',1,'ncine::AudioEffectProperties::vocalMorpherProperties()']]] +]; diff --git a/master/search/functions_16.html b/master/search/functions_16.html new file mode 100644 index 0000000000..5aed7d093d --- /dev/null +++ b/master/search/functions_16.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/functions_16.js b/master/search/functions_16.js new file mode 100644 index 0000000000..49da147409 --- /dev/null +++ b/master/search/functions_16.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['width_2566',['width',['../classncine_1_1_drawable_node.html#a691c2651ec965846dd2a3bc7d0153412',1,'ncine::DrawableNode::width()'],['../classncine_1_1_i_gfx_device.html#a9462311420514039915f4e827be105b0',1,'ncine::IGfxDevice::width()'],['../classncine_1_1_text_node.html#a5efdc820ce6a01d89cd77c5875e9ae71',1,'ncine::TextNode::width()'],['../classncine_1_1_texture.html#a3d914ec3917a88b92c3762beb6fc4e2b',1,'ncine::Texture::width()'],['../classncine_1_1_viewport.html#a67de3253442accd74a27c23635b96221',1,'ncine::Viewport::width()'],['../classncine_1_1_application.html#aebd772b4f50f75a50dcb6906a72d48b5',1,'ncine::Application::width() const']]], + ['widthint_2567',['widthInt',['../classncine_1_1_application.html#adc6fc2bcc5b27bd2d4034f037b31dfff',1,'ncine::Application']]], + ['windowmonitorindex_2568',['windowMonitorIndex',['../classncine_1_1_i_gfx_device.html#a34217ec5fedf2e315cbe9515beabd13a',1,'ncine::IGfxDevice']]], + ['windowposition_2569',['windowPosition',['../classncine_1_1_i_gfx_device.html#a7ba520232eead92a3bd53c68e7b661c5',1,'ncine::IGfxDevice']]], + ['windowpositionx_2570',['windowPositionX',['../classncine_1_1_i_gfx_device.html#af5140c3961a36d8b3b1d7f3ba4b1e598',1,'ncine::IGfxDevice']]], + ['windowpositiony_2571',['windowPositionY',['../classncine_1_1_i_gfx_device.html#a9c63c424d4b39d8304f21125dde7b4d5',1,'ncine::IGfxDevice']]], + ['windowscalingfactor_2572',['windowScalingFactor',['../classncine_1_1_i_gfx_device.html#a19c52e522b44e80819faaffbe73843f0',1,'ncine::IGfxDevice']]], + ['withkerning_2573',['withKerning',['../classncine_1_1_text_node.html#a48fe2e4c0338fbdf4e06ca264bb43869',1,'ncine::TextNode']]], + ['worldmatrix_2574',['worldMatrix',['../classncine_1_1_scene_node.html#a5985d5073a48edd22d2018a680b33d0a',1,'ncine::SceneNode']]], + ['wrap_2575',['wrap',['../classncine_1_1_texture.html#a610bd9b538ea6dec1834db02d1de7faf',1,'ncine::Texture']]], + ['write_2576',['write',['../classncine_1_1_asset_file.html#a9ee967cbad190a7ce895438c023c18bc',1,'ncine::AssetFile::write()'],['../classncine_1_1_emscripten_local_file.html#a7f239a8250b434169cd9756859133c80',1,'ncine::EmscriptenLocalFile::write()'],['../classncine_1_1_i_file.html#a37a5d4dc0889fcf165acf25ba611e19a',1,'ncine::IFile::write()'],['../classncine_1_1_i_logger.html#a0b54183a87800b29e4c750ab9d836a92',1,'ncine::ILogger::write()'],['../classncine_1_1_null_logger.html#a9b32bcd00eb16314782aba43c47fa1c3',1,'ncine::NullLogger::write()']]] +]; diff --git a/master/search/functions_17.html b/master/search/functions_17.html new file mode 100644 index 0000000000..ad6d5a7af6 --- /dev/null +++ b/master/search/functions_17.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/functions_17.js b/master/search/functions_17.js new file mode 100644 index 0000000000..a8097deaf2 --- /dev/null +++ b/master/search/functions_17.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['_7eiappeventhandler_2577',['~IAppEventHandler',['../classncine_1_1_i_app_event_handler.html#a60bdbc73fa5bd1f1c4812da8cea06fbf',1,'ncine::IAppEventHandler']]], + ['_7eiframetimer_2578',['~IFrameTimer',['../classncine_1_1_i_frame_timer.html#ac4978b3e9e1014529a9410677aad013d',1,'ncine::IFrameTimer']]], + ['_7eobject_2579',['~Object',['../classncine_1_1_object.html#aa4864ad75f0e8ae399ab57826705ca99',1,'ncine::Object']]], + ['_7escenenode_2580',['~SceneNode',['../classncine_1_1_scene_node.html#a28a7ff4e2c219be33ec4ca9509e65265',1,'ncine::SceneNode']]] +]; diff --git a/master/search/functions_2.html b/master/search/functions_2.html new file mode 100644 index 0000000000..ca5aa10e6c --- /dev/null +++ b/master/search/functions_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/functions_2.js b/master/search/functions_2.js new file mode 100644 index 0000000000..271961dce0 --- /dev/null +++ b/master/search/functions_2.js @@ -0,0 +1,59 @@ +var searchData= +[ + ['cachepath_1821',['cachePath',['../classncine_1_1_file_system.html#aca21eb1bcfe940f5ef8ed3636401dbfa',1,'ncine::FileSystem']]], + ['calculateboundaries_1822',['calculateBoundaries',['../classncine_1_1_text_node.html#a40b79e79d50436a9fbdc52ffde5d4220',1,'ncine::TextNode']]], + ['camera_1823',['camera',['../classncine_1_1_viewport.html#a566f8a17b46e3968b27cf01f5a16386e',1,'ncine::Viewport']]], + ['camera_1824',['Camera',['../classncine_1_1_camera.html#a0f5011e6953b1f02edd23d049d333f23',1,'ncine::Camera']]], + ['camera_1825',['camera',['../classncine_1_1_viewport.html#a55c832f6ddfb6aabf748db3238ea6b9e',1,'ncine::Viewport']]], + ['capacity_1826',['capacity',['../classnctl_1_1_static_hash_set.html#af69b8e3fde43274516e9f02fd828d908',1,'nctl::StaticHashSet::capacity()'],['../classnctl_1_1_string.html#a12fd4df52da92fb7e79e6b21096d45ca',1,'nctl::String::capacity()'],['../classnctl_1_1_static_string.html#a69711ee24c3bb245763fed238ece5dae',1,'nctl::StaticString::capacity()'],['../classnctl_1_1_static_hash_map.html#ab46c69527897c68cfc9fef3cd7562d8e',1,'nctl::StaticHashMap::capacity()'],['../classnctl_1_1_static_array.html#a4562bdc99a25e15cf732d18570af2a9e',1,'nctl::StaticArray::capacity()'],['../classnctl_1_1_sparse_set.html#a7371f6647e315d6bfbe4ebcaa7b01a26',1,'nctl::SparseSet::capacity()'],['../classnctl_1_1_hash_set.html#aebe3cd0dcfb48b0621f8b25468fe86b3',1,'nctl::HashSet::capacity()'],['../classnctl_1_1_hash_map.html#a8a82098219e8c5b0a4556567cf8263dd',1,'nctl::HashMap::capacity()'],['../classnctl_1_1_array.html#af7512859ae9df0eec3def66ad7964354',1,'nctl::Array::capacity()']]], + ['cbegin_1827',['cBegin',['../classnctl_1_1_static_string.html#ab7f2dc962454452beaf61fa24b4d5185',1,'nctl::StaticString::cBegin()'],['../classnctl_1_1_string.html#a64fb899360dde76cb0ecc3bf4ceb888b',1,'nctl::String::cBegin()'],['../classnctl_1_1_static_hash_set.html#a1e697857850a2a72116359121dfb2941',1,'nctl::StaticHashSet::cBegin()'],['../classnctl_1_1_static_hash_map.html#a1e7232f426ca2739d68074031965ba15',1,'nctl::StaticHashMap::cBegin()'],['../classnctl_1_1_static_array.html#ab447c866222ea600d08e5e3f28715d92',1,'nctl::StaticArray::cBegin()'],['../classnctl_1_1_sparse_set.html#a200d87c1fdbcaefc8eec39e11855c8ee',1,'nctl::SparseSet::cBegin()'],['../classnctl_1_1_hash_set_list.html#a3baaeaf26d2b5bdc7a6082e58fc1b6a9',1,'nctl::HashSetList::cBegin()'],['../classnctl_1_1_hash_set.html#a0b7db897019b0d292ab69cc65deffbdb',1,'nctl::HashSet::cBegin()'],['../classnctl_1_1_hash_map_list.html#a457be0a53616b328176ec594f6b3945f',1,'nctl::HashMapList::cBegin()'],['../classnctl_1_1_hash_map.html#aad6e9d45e5fb1765abee0a6e60fbb532',1,'nctl::HashMap::cBegin()'],['../classnctl_1_1_array.html#a66244b6b5bf56bdb40aa55dd64647b0f',1,'nctl::Array::cBegin()'],['../classnctl_1_1_list.html#a45327e034c5329bd8cc7e81692ed38d6',1,'nctl::List::cBegin()']]], + ['cend_1828',['cEnd',['../classnctl_1_1_static_array.html#a935d594ef36c6a8183165165fa644ad3',1,'nctl::StaticArray::cEnd()'],['../classnctl_1_1_string.html#a576cb8ce91047bb8fbc6af6cfae6792e',1,'nctl::String::cEnd()'],['../classnctl_1_1_static_string.html#a806027bb3c511f253c4412f64fdab524',1,'nctl::StaticString::cEnd()'],['../classnctl_1_1_static_hash_set.html#a156762b71914fc35988989f0bf2b5a22',1,'nctl::StaticHashSet::cEnd()'],['../classnctl_1_1_static_hash_map.html#af5215936f74c2e937ce0d9bc52976c51',1,'nctl::StaticHashMap::cEnd()'],['../classnctl_1_1_sparse_set.html#ae5c7a0f093e961928f9c2979bdb12e8e',1,'nctl::SparseSet::cEnd()'],['../classnctl_1_1_list.html#a0a58933822084dee6b919769d06b7f13',1,'nctl::List::cEnd()'],['../classnctl_1_1_hash_set_list.html#a9304e5aa1eb3fa9000688f7ba1e13c4d',1,'nctl::HashSetList::cEnd()'],['../classnctl_1_1_hash_set.html#a3f156cb2d815498a8e1b4bbd1c869f8b',1,'nctl::HashSet::cEnd()'],['../classnctl_1_1_hash_map_list.html#a840a98630c761cce565124ce7175a5b8',1,'nctl::HashMapList::cEnd()'],['../classnctl_1_1_hash_map.html#a94dc782a4c6a0624a8f4f4c73169f58f',1,'nctl::HashMap::cEnd()'],['../classnctl_1_1_array.html#a7f6fd046548bafa9c61ec83cf0b04801',1,'nctl::Array::cEnd()']]], + ['center_1829',['center',['../classncine_1_1_rect.html#a66c20f70809f162551f07716a394f741',1,'ncine::Rect']]], + ['chain_1830',['chain',['../classncine_1_1_viewport.html#a53eddd8331cffa7a52202f580524ac4d',1,'ncine::Viewport']]], + ['changepermissions_1831',['changePermissions',['../classncine_1_1_file_system.html#ab7941767499c7f8387cca2363bdf8ac0',1,'ncine::FileSystem']]], + ['childorderindex_1832',['childOrderIndex',['../classncine_1_1_scene_node.html#a4a6d5939d5d212d55c9fd662e809b1ad',1,'ncine::SceneNode']]], + ['children_1833',['children',['../classncine_1_1_scene_node.html#a61e79f956e8cbfc9fe5d6bd9228f8cd3',1,'ncine::SceneNode::children()'],['../classncine_1_1_scene_node.html#abf6c5b50a144de3e6d42b0e89ac5f895',1,'ncine::SceneNode::children() const']]], + ['chorusproperties_1834',['chorusProperties',['../classncine_1_1_audio_effect_properties.html#a42cb55962ccc92d7d79bbb399d9ac03e',1,'ncine::AudioEffectProperties::chorusProperties() const'],['../classncine_1_1_audio_effect_properties.html#a9141ce2b425d5eeb69cb42161c051a74',1,'ncine::AudioEffectProperties::chorusProperties()']]], + ['chromakeycolor_1835',['chromaKeyColor',['../classncine_1_1_texture.html#a1261152a1f1e418a8ddfed9c4c3292d0',1,'ncine::Texture']]], + ['clamp_1836',['clamp',['../classncine_1_1_color_hdr.html#a6c7d17936702760acaabaac9a256a2ae',1,'ncine::ColorHdr']]], + ['clamped_1837',['clamped',['../classncine_1_1_color_hdr.html#a8b2bb8d84edd604c39490dc5d154e22a',1,'ncine::ColorHdr']]], + ['clear_1838',['clear',['../classnctl_1_1_static_hash_set.html#a2f1c88a0f633f53bafe7c63237d58273',1,'nctl::StaticHashSet::clear()'],['../classnctl_1_1_string.html#a73daa1675a39cb9107ecfe57e6446bbb',1,'nctl::String::clear()'],['../classnctl_1_1_static_string.html#a9482af5199f343e25351fe4105c19ffb',1,'nctl::StaticString::clear()'],['../classnctl_1_1_static_hash_map.html#ae2ec716e39f76b44e86e98155cd85f8d',1,'nctl::StaticHashMap::clear()'],['../classnctl_1_1_static_array.html#a6e15600bc8a2e596705e4c7e6679bca5',1,'nctl::StaticArray::clear()'],['../classnctl_1_1_sparse_set.html#ae8b5c32f3c99988b1f0344f468ad75e5',1,'nctl::SparseSet::clear()'],['../classnctl_1_1_linear_allocator.html#a8ede58c0141dca132a2a08a9a01ad0cd',1,'nctl::LinearAllocator::clear()'],['../classnctl_1_1_hash_set_list.html#a9b25fc8733d921f88ef3a59a9ae7d5ad',1,'nctl::HashSetList::clear()'],['../classnctl_1_1_hash_set.html#a8a560cd63982568a7ca838af39a56b09',1,'nctl::HashSet::clear()'],['../classnctl_1_1_array.html#a3c641ad5de8312afe24b65c03c36b3fc',1,'nctl::Array::clear()'],['../classnctl_1_1_hash_map_list.html#aaee2d51c5e4f46a68552f1af90753277',1,'nctl::HashMapList::clear()'],['../classnctl_1_1_hash_map.html#aee03e9013a04ae778fd3df5b294b414d',1,'nctl::HashMap::clear()'],['../classnctl_1_1_list.html#a9eaa8ab9f8deb8dd387037873442d3e2',1,'nctl::List::clear()']]], + ['clearaffectors_1839',['clearAffectors',['../classncine_1_1_particle_system.html#ae2a5212725ea5c9118f5ee92b386b3bf',1,'ncine::ParticleSystem']]], + ['clearanimations_1840',['clearAnimations',['../classncine_1_1_animated_sprite.html#ac34d1903556cd0fcc7a3e2b88c8589c0',1,'ncine::AnimatedSprite']]], + ['clearcolor_1841',['clearColor',['../classncine_1_1_viewport.html#a906737ef31e74f3156d1b883218b236b',1,'ncine::Viewport']]], + ['clearlogstring_1842',['clearLogString',['../classncine_1_1_i_logger.html#a2a757e37336dc411b4a5b43bd2166e6c',1,'ncine::ILogger::clearLogString()'],['../classncine_1_1_null_logger.html#adf36744b9216c71f6279a52761e1a456',1,'ncine::NullLogger::clearLogString()']]], + ['clearmode_1843',['clearMode',['../classncine_1_1_viewport.html#a56ec817c2dd28358b7dfc8cc4a8d2043',1,'ncine::Viewport']]], + ['clearstatistics_1844',['clearStatistics',['../classncine_1_1_hash64.html#a75694cd3a4a4491547bc0fcccb63729a',1,'ncine::Hash64']]], + ['clearsteps_1845',['clearSteps',['../classncine_1_1_velocity_affector.html#ab984568abc6c99e8ae6fec3432b3862d',1,'ncine::VelocityAffector::clearSteps()'],['../classncine_1_1_color_affector.html#a639fc03b6ab89e11b1a6278b5d80a4dd',1,'ncine::ColorAffector::clearSteps()'],['../classncine_1_1_position_affector.html#aa66ad2f8bdffa0dc5c477b8c82767e49',1,'ncine::PositionAffector::clearSteps()'],['../classncine_1_1_size_affector.html#ae963e196603692f211dc8ec69e60817a',1,'ncine::SizeAffector::clearSteps()'],['../classncine_1_1_particle_affector.html#a9ec6fd7ef66b0f09035b6c6581b91d2b',1,'ncine::ParticleAffector::clearSteps()'],['../classncine_1_1_rotation_affector.html#abc56e011fd76326ba5dd0f63256feabe',1,'ncine::RotationAffector::clearSteps()']]], + ['clone_1846',['clone',['../classncine_1_1_velocity_affector.html#a430c87bb074e949d94bef0e71de5134b',1,'ncine::VelocityAffector::clone()'],['../classncine_1_1_text_node.html#ae84cb8e240de45dee84171a4e24f6abe',1,'ncine::TextNode::clone()'],['../classncine_1_1_sprite.html#aa2fd79369d3e4a2e5a38bcebb17df519',1,'ncine::Sprite::clone()'],['../classncine_1_1_scene_node.html#a4d90626df516b15601f2cb55a0ac2f4d',1,'ncine::SceneNode::clone()'],['../classncine_1_1_particle_system.html#ac334bfedca04447aa9a7249687b50cf0',1,'ncine::ParticleSystem::clone()'],['../classncine_1_1_position_affector.html#abe9ea32d4428a263069ff8686e2d9b29',1,'ncine::PositionAffector::clone()'],['../classncine_1_1_rotation_affector.html#ad72fa64c50529741711571dc94bec7a9',1,'ncine::RotationAffector::clone()'],['../classncine_1_1_size_affector.html#ae5ab44dd1c620f88683a2127918aa42d',1,'ncine::SizeAffector::clone()'],['../classncine_1_1_color_affector.html#af6ac6cc5daf94f15e2daaf7be6841eae',1,'ncine::ColorAffector::clone()'],['../classncine_1_1_particle.html#a1f7da18403558b067ae3d924fa22cf54',1,'ncine::Particle::clone()'],['../classncine_1_1_mesh_sprite.html#a3274bbcdd311f0f2c0d22994fb0b6be1',1,'ncine::MeshSprite::clone()'],['../classncine_1_1_animated_sprite.html#aa1cd4b69b28f1c4c7f2ca6807fa3cd30',1,'ncine::AnimatedSprite::clone()']]], + ['close_1847',['close',['../classncine_1_1_asset_file.html#ab38b6cc43696b0664170c04831563d83',1,'ncine::AssetFile::close()'],['../classncine_1_1_file_system_1_1_directory.html#add3d8c9975b11392717b6b43b0e56539',1,'ncine::FileSystem::Directory::close()'],['../classncine_1_1_i_file.html#a12ba96536aba93ca645d57dd42b79692',1,'ncine::IFile::close()']]], + ['color_1848',['Color',['../classncine_1_1_color.html#aa3fbe786b6a83fd0c43950555de5e140',1,'ncine::Color::Color(const Colorf &color)'],['../classncine_1_1_color.html#a45012102e905607ed60650d357cbbcc8',1,'ncine::Color::Color(const unsigned int channels[NumChannels])'],['../classncine_1_1_color.html#aa5dc3acb5953e56680c3237c094e04ef',1,'ncine::Color::Color(unsigned int hex)'],['../classncine_1_1_color.html#a660310876d5d618cd70ab1e53d5b33f2',1,'ncine::Color::Color(unsigned int red, unsigned int green, unsigned int blue)'],['../classncine_1_1_color.html#a3291f2c8b80193d871954674fd34e1aa',1,'ncine::Color::Color(unsigned int red, unsigned int green, unsigned int blue, unsigned int alpha)']]], + ['color_1849',['color',['../classncine_1_1_scene_node.html#a78e761495223506338a5cf554e31c3d1',1,'ncine::SceneNode']]], + ['color_1850',['Color',['../classncine_1_1_color.html#a3d05c1156f2e04dbc9e569d392721ea4',1,'ncine::Color']]], + ['coloraffector_1851',['ColorAffector',['../classncine_1_1_color_affector.html#a2213cc991ffe5386071902a389512876',1,'ncine::ColorAffector::ColorAffector(ColorAffector &&)=default'],['../classncine_1_1_color_affector.html#a7dc7bab1690122f45d799406e71d70dd',1,'ncine::ColorAffector::ColorAffector(const ColorAffector &other)=default']]], + ['colorf_1852',['Colorf',['../classncine_1_1_colorf.html#ad7e95ccf7c127e37adf635abd1d60fd9',1,'ncine::Colorf::Colorf()'],['../classncine_1_1_colorf.html#a47703edba7ac1fa73d83ea46c21aa808',1,'ncine::Colorf::Colorf(float red, float green, float blue)'],['../classncine_1_1_colorf.html#ab7fc911a43f99f2a1814c10c20b23754',1,'ncine::Colorf::Colorf(float red, float green, float blue, float alpha)'],['../classncine_1_1_colorf.html#a9ba244d25b4fa6b238808656501c6ad4',1,'ncine::Colorf::Colorf(const float channels[NumChannels])'],['../classncine_1_1_colorf.html#a09d0f178508fb77a44e7d4af6a072a66',1,'ncine::Colorf::Colorf(const Color &color)'],['../classncine_1_1_colorf.html#a8bd7321f7ea15def33a41ab0059e7e05',1,'ncine::Colorf::Colorf(const ColorHdr &color)']]], + ['colorhdr_1853',['ColorHdr',['../classncine_1_1_color_hdr.html#aceae0f480d35e7425bbc348173ad58c7',1,'ncine::ColorHdr::ColorHdr()'],['../classncine_1_1_color_hdr.html#a460d3e3939b2f7350f5e44c9fadb5bfe',1,'ncine::ColorHdr::ColorHdr(float red, float green, float blue)'],['../classncine_1_1_color_hdr.html#a90e38cda69c6d1930373af01d0f38399',1,'ncine::ColorHdr::ColorHdr(const float channels[NumChannels])'],['../classncine_1_1_color_hdr.html#a287b579743f9986890a550d5488de292',1,'ncine::ColorHdr::ColorHdr(const Colorf &color)']]], + ['compare_1854',['compare',['../classnctl_1_1_static_string.html#a0b35fcd4daee19ac872d25cfad0f3924',1,'nctl::StaticString::compare()'],['../classnctl_1_1_string.html#a89c9a2a0bcf2272215afca29453e0e99',1,'nctl::String::compare(const char *cString) const'],['../classnctl_1_1_string.html#a06105f0caa749e7993618896d55627eb',1,'nctl::String::compare(const String &other) const'],['../classnctl_1_1_static_string.html#ac50e4d20f48c304f7dbff887b012c4ea',1,'nctl::StaticString::compare(const char *cString) const'],['../classnctl_1_1_static_string.html#aa85b886b04e0752bfa4eb8b8a715bd4f',1,'nctl::StaticString::compare(const StaticString< U > &other) const']]], + ['compressorproperties_1855',['compressorProperties',['../classncine_1_1_audio_effect_properties.html#a152b6d227d35553f8ccdfd92e9cb7c8d',1,'ncine::AudioEffectProperties::compressorProperties() const'],['../classncine_1_1_audio_effect_properties.html#a4d89b5a16bde36c65101a14b6ae17678',1,'ncine::AudioEffectProperties::compressorProperties()']]], + ['coneinnerangle_1856',['coneInnerAngle',['../classncine_1_1_i_audio_player.html#a664a19147300fd475c521ff120a5a81d',1,'ncine::IAudioPlayer']]], + ['coneouterangle_1857',['coneOuterAngle',['../classncine_1_1_i_audio_player.html#ac8f4de74bb51071018087d35f6c69d05',1,'ncine::IAudioPlayer']]], + ['coneoutergain_1858',['coneOuterGain',['../classncine_1_1_i_audio_player.html#ab1cc64b866a936878c17ed0f235b4edd',1,'ncine::IAudioPlayer']]], + ['containingmonitorindex_1859',['containingMonitorIndex',['../classncine_1_1_i_gfx_device.html#a19070363d35ad369aecb01e6e40bbd8d',1,'ncine::IGfxDevice::containingMonitorIndex(int x, int y, int width, int height) const'],['../classncine_1_1_i_gfx_device.html#a2e8df6be966a6f8b7fc5521f54421938',1,'ncine::IGfxDevice::containingMonitorIndex(const Vector2i &point) const'],['../classncine_1_1_i_gfx_device.html#a695f15cddc7079b56be82806b4d1de54',1,'ncine::IGfxDevice::containingMonitorIndex(int x, int y) const'],['../classncine_1_1_i_gfx_device.html#aa3eeffebf91009e794138e775c0e98b7',1,'ncine::IGfxDevice::containingMonitorIndex(const Recti &rect) const'],['../classncine_1_1_i_gfx_device.html#ac32a429033949eeded046b330078f13a',1,'ncine::IGfxDevice::containingMonitorIndex(const WindowMode &windowMode) const']]], + ['contains_1860',['contains',['../classnctl_1_1_static_hash_map.html#ad28636803ad0a6698973cc4c802564d1',1,'nctl::StaticHashMap::contains()'],['../classnctl_1_1_static_hash_set.html#afd24e7ca839f62726b170a064838e7cd',1,'nctl::StaticHashSet::contains()'],['../classnctl_1_1_sparse_set.html#a59567f59aca285bf4871330dd5874b31',1,'nctl::SparseSet::contains()'],['../classnctl_1_1_hash_set_list.html#ae363a458e9d90ca332ed965a0540a67d',1,'nctl::HashSetList::contains()'],['../classnctl_1_1_hash_set.html#acfaae746a14b23aea11ef2f6354ceb69',1,'nctl::HashSet::contains()'],['../classnctl_1_1_hash_map_list.html#ae0178db612fbb689320ac104920858ab',1,'nctl::HashMapList::contains()'],['../classnctl_1_1_hash_map.html#a504159821cc30560480e845828ec9c93',1,'nctl::HashMap::contains()'],['../classncine_1_1_rect.html#ac564901abd0ddb8429437e118fe6b60e',1,'ncine::Rect::contains(const Rect< T > &rect) const'],['../classncine_1_1_rect.html#a83f6cd3f687d7cbb5efc3c92c5f2db39',1,'ncine::Rect::contains(const Vector2< T > &p) const'],['../classncine_1_1_rect.html#a987b7c3c64fc310e95c076bddbc9ee65',1,'ncine::Rect::contains(T px, T py) const']]], + ['copy_1861',['copy',['../classncine_1_1_file_system.html#af8d53eecf0b21cc03e75d0939eab9a31',1,'ncine::FileSystem::copy()'],['../classnctl_1_1_static_string.html#a3220283d90cb87a1d7c6d7c191744810',1,'nctl::StaticString::copy(char *dest, unsigned int srcChar, unsigned int numChar) const'],['../classnctl_1_1_static_string.html#a2906f4e1fbdb5af12c4096f0fc03b905',1,'nctl::StaticString::copy(char *dest) const'],['../classnctl_1_1_string.html#a12b9f700af195b7e669aed97119764ae',1,'nctl::String::copy(char *dest, unsigned int srcChar, unsigned int numChar) const'],['../classnctl_1_1_string.html#a6da1f3f69a640c1085a54f68afeede38',1,'nctl::String::copy(char *dest) const']]], + ['copyindices_1862',['copyIndices',['../classncine_1_1_mesh_sprite.html#aa800e875dafc96f1f2e88b21913e2515',1,'ncine::MeshSprite::copyIndices(unsigned int numIndices, const unsigned short *indices)'],['../classncine_1_1_mesh_sprite.html#a7687793fcbe0b215141b2c3d515178ea',1,'ncine::MeshSprite::copyIndices(const MeshSprite &meshSprite)']]], + ['copyonreallocation_1863',['copyOnReallocation',['../classnctl_1_1_i_allocator.html#ade34eb64bf6d49abfa59bca5c8dec880',1,'nctl::IAllocator']]], + ['copyvertices_1864',['copyVertices',['../classncine_1_1_mesh_sprite.html#aa3d0b486caec7701887f69b7325f6223',1,'ncine::MeshSprite::copyVertices(unsigned int numVertices, const Vertex *vertices)'],['../classncine_1_1_mesh_sprite.html#ad78539ecfb2ef00d47803d59881ee72d',1,'ncine::MeshSprite::copyVertices(unsigned int numVertices, const VertexNoTexture *vertices)'],['../classncine_1_1_mesh_sprite.html#aadc61d0e12c0c2cea003bb6c9f3e02ac',1,'ncine::MeshSprite::copyVertices(const MeshSprite &meshSprite)'],['../classncine_1_1_mesh_sprite.html#aa0e6b10104a0fa1a7309c38830b199df',1,'ncine::MeshSprite::copyVertices(unsigned int numVertices, unsigned int bytesPerVertex, const void *vertexData)']]], + ['count_1865',['count',['../classnctl_1_1_bit_set.html#a42ab7a360d3eff34a257ff8db4c156c3',1,'nctl::BitSet']]], + ['crbegin_1866',['crBegin',['../classnctl_1_1_sparse_set.html#a0ecdb6b279f7f6d02cf993576a0409d4',1,'nctl::SparseSet::crBegin()'],['../classnctl_1_1_string.html#a5f08367ec8a92a4b0dbd6f6a0aeb8106',1,'nctl::String::crBegin()'],['../classnctl_1_1_static_string.html#af28242d1f454e1a6c7900276f0df960d',1,'nctl::StaticString::crBegin()'],['../classnctl_1_1_static_hash_set.html#a8967bb5f5d08e6a53653f0fa419e5429',1,'nctl::StaticHashSet::crBegin()'],['../classnctl_1_1_static_hash_map.html#a0d9b1272ba775a8b088ea058d6605193',1,'nctl::StaticHashMap::crBegin()'],['../classnctl_1_1_static_array.html#a72396053b05691c5959b54dcd24d19cf',1,'nctl::StaticArray::crBegin()'],['../classnctl_1_1_list.html#a43eea492a742ced2ed2a5003240eb419',1,'nctl::List::crBegin()'],['../classnctl_1_1_hash_set_list.html#a5e6a2ba8db5b8a46e17ea96eb248fb5d',1,'nctl::HashSetList::crBegin()'],['../classnctl_1_1_hash_set.html#a4535de14b8296b7782c84fafdcffc9f0',1,'nctl::HashSet::crBegin()'],['../classnctl_1_1_hash_map_list.html#a499e85ccc2e02b932fba6dc99d9310f5',1,'nctl::HashMapList::crBegin()'],['../classnctl_1_1_hash_map.html#ad9c4b082da24368d7db48ea9a15da463',1,'nctl::HashMap::crBegin()'],['../classnctl_1_1_array.html#ab862faadc6efa34fc477d00fa5b133fc',1,'nctl::Array::crBegin()']]], + ['createdir_1867',['createDir',['../classncine_1_1_file_system.html#ad8b2ee1449e8772ab49bd509c8ab8310',1,'ncine::FileSystem']]], + ['createfilehandle_1868',['createFileHandle',['../classncine_1_1_i_file.html#a7f4d608c5089dd8768282f7a382d28a9',1,'ncine::IFile']]], + ['createfrommemory_1869',['createFromMemory',['../classncine_1_1_i_file.html#aa9897ba0da6041723313b648f78e6596',1,'ncine::IFile::createFromMemory(unsigned long int bufferSize)'],['../classncine_1_1_i_file.html#abedc002c071e996fe46ff791f50ce82b',1,'ncine::IFile::createFromMemory(nctl::UniquePtr< unsigned char[]> buffer, unsigned long int bufferSize)'],['../classncine_1_1_i_file.html#a7819af8c71e35ba3b153a2ab94b4ec92',1,'ncine::IFile::createFromMemory(const char *bufferName, nctl::UniquePtr< unsigned char[]> buffer, unsigned long int bufferSize)'],['../classncine_1_1_i_file.html#a0d47e2e49fac6a74ea569f221874bfc2',1,'ncine::IFile::createFromMemory(const char *bufferName, unsigned long int bufferSize)'],['../classncine_1_1_i_file.html#a38f3abc2abe9b54b00633d816fc7f316',1,'ncine::IFile::createFromMemory(unsigned char *bufferPtr, unsigned long int bufferSize)'],['../classncine_1_1_i_file.html#a13636dc34143b75e461657a4ed1ddb47',1,'ncine::IFile::createFromMemory(const char *bufferName, const unsigned char *bufferPtr, unsigned long int bufferSize)'],['../classncine_1_1_i_file.html#a58902a169bb62201f6a9805303d40017',1,'ncine::IFile::createFromMemory(const char *bufferName, unsigned char *bufferPtr, unsigned long int bufferSize)'],['../classncine_1_1_i_file.html#aec76e7c4da4b90cd40a5866132378edb',1,'ncine::IFile::createFromMemory(const unsigned char *bufferPtr, unsigned long int bufferSize)']]], + ['createverticesfromtexels_1870',['createVerticesFromTexels',['../classncine_1_1_mesh_sprite.html#aa0b070cf7851c7d5ce094df9f4f4156b',1,'ncine::MeshSprite::createVerticesFromTexels(unsigned int numVertices, const Vector2f *points, TextureCutMode cutMode)'],['../classncine_1_1_mesh_sprite.html#a224db9921f714c895fdb594caa16e8a5',1,'ncine::MeshSprite::createVerticesFromTexels(unsigned int numVertices, const Vector2f *points)']]], + ['crend_1871',['crEnd',['../classnctl_1_1_sparse_set.html#a4d3212f54e1177f8fa6f9de71fc87e9d',1,'nctl::SparseSet::crEnd()'],['../classnctl_1_1_string.html#a02ff0ec870bbc65e8ef9035ce8a6bc18',1,'nctl::String::crEnd()'],['../classnctl_1_1_static_string.html#a95bbcb361c5a2866e690f1ab803472b6',1,'nctl::StaticString::crEnd()'],['../classnctl_1_1_static_hash_set.html#a487252bce955e201a66c859b6ff1f994',1,'nctl::StaticHashSet::crEnd()'],['../classnctl_1_1_static_hash_map.html#a247177bc2cdc06c450e7818225a46b50',1,'nctl::StaticHashMap::crEnd()'],['../classnctl_1_1_static_array.html#a9e34ab5a27ef5c49b59c4c45dddf32c9',1,'nctl::StaticArray::crEnd()'],['../classnctl_1_1_list.html#a982e3d62b7c97a165da447000df92017',1,'nctl::List::crEnd()'],['../classnctl_1_1_hash_set_list.html#acc56c77d5a792204ae7c64003c174b09',1,'nctl::HashSetList::crEnd()'],['../classnctl_1_1_hash_set.html#a1f261ffcdfae80f4b3d541913e068e14',1,'nctl::HashSet::crEnd()'],['../classnctl_1_1_hash_map_list.html#a9f2e4ae557671f37b119675feb739c59',1,'nctl::HashMapList::crEnd()'],['../classnctl_1_1_hash_map.html#a1554ff101738f05ef55854883124b6e2',1,'nctl::HashMap::crEnd()'],['../classnctl_1_1_array.html#a18a7e6aae3a194e90803170b43ba3ab5',1,'nctl::Array::crEnd()']]], + ['cullingrect_1872',['cullingRect',['../classncine_1_1_viewport.html#a1359faeb634ff2e9ffb90eb528022e49',1,'ncine::Viewport']]], + ['currentanimation_1873',['currentAnimation',['../classncine_1_1_animated_sprite.html#a22ee4e620ac465ee884e459c01407ca3',1,'ncine::AnimatedSprite::currentAnimation()'],['../classncine_1_1_animated_sprite.html#a6e0ae3538e6438c84566e5b4b4be06ad',1,'ncine::AnimatedSprite::currentAnimation() const']]], + ['currentdir_1874',['currentDir',['../classncine_1_1_file_system.html#aadf5de3c30b94818d55d94f7827ea0fa',1,'ncine::FileSystem']]], + ['currentframeduration_1875',['currentFrameDuration',['../classncine_1_1_i_frame_timer.html#ac1b749f31aeffe631cf7f336fd111acf',1,'ncine::IFrameTimer']]], + ['currentvideomode_1876',['currentVideoMode',['../classncine_1_1_i_gfx_device.html#ad0caed385d0408a20062b4b96dc0327d',1,'ncine::IGfxDevice::currentVideoMode(unsigned int monitorIndex) const =0'],['../classncine_1_1_i_gfx_device.html#ae6f16d5a1c5f35b572cfb401e34d7297',1,'ncine::IGfxDevice::currentVideoMode() const']]] +]; diff --git a/master/search/functions_3.html b/master/search/functions_3.html new file mode 100644 index 0000000000..d79f55b8e3 --- /dev/null +++ b/master/search/functions_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/functions_3.js b/master/search/functions_3.js new file mode 100644 index 0000000000..0bc44a362a --- /dev/null +++ b/master/search/functions_3.js @@ -0,0 +1,30 @@ +var searchData= +[ + ['data_1877',['data',['../classnctl_1_1_string.html#a977a9ad077abc82b489591697f09912c',1,'nctl::String::data()'],['../classncine_1_1_color.html#aa707809cc7881a4b55a90dfca79ab398',1,'ncine::Color::data()'],['../classnctl_1_1_string.html#a04e0b50713de7e24425fd9de28efaed1',1,'nctl::String::data()'],['../classnctl_1_1_static_string.html#ab89ad885afa7b1f357044b31f42ca7f3',1,'nctl::StaticString::data() const'],['../classnctl_1_1_static_string.html#a8c6d43547059af48e464b03109c96b52',1,'nctl::StaticString::data()'],['../classnctl_1_1_static_array.html#a7091701f186bdae5fc5c6b6713f5e30b',1,'nctl::StaticArray::data()'],['../classnctl_1_1_static_array.html#afb2ffc363208698fee827e650e5701e8',1,'nctl::StaticArray::data() const'],['../classnctl_1_1_array.html#a4335663313c781034960e1048459e887',1,'nctl::Array::data()'],['../classncine_1_1_emscripten_local_file.html#ac626c343a6b8d211d6abaa26ca7dc775',1,'ncine::EmscriptenLocalFile::data()'],['../classncine_1_1_color.html#a242ad63710611ea089df3d0c35852bd1',1,'ncine::Color::data()'],['../classncine_1_1_colorf.html#a791ecc7a8519dc0beb63b73ec685064c',1,'ncine::Colorf::data() const'],['../classncine_1_1_colorf.html#a0d970de08eb6eb3ab996b4032b94aeab',1,'ncine::Colorf::data()'],['../classncine_1_1_color_hdr.html#abed1af8cbb83e2dbf761d4396e2266cf',1,'ncine::ColorHdr::data() const'],['../classncine_1_1_color_hdr.html#a4dccca8db1dff36bc9b05012e5198f34',1,'ncine::ColorHdr::data()'],['../classnctl_1_1_array.html#a8bd9a529c233f9a337c14c3e833077e2',1,'nctl::Array::data()']]], + ['datapath_1878',['dataPath',['../classncine_1_1_app_configuration.html#a77e31c5bc03406391b542d1d724f0f9e',1,'ncine::AppConfiguration::dataPath() const'],['../classncine_1_1_app_configuration.html#ae1aa60999bffbdb839caacc3e9acb0e6',1,'ncine::AppConfiguration::dataPath()'],['../classncine_1_1_file_system.html#a9dc89b7f7172edd33cee0eb5f0737c06',1,'ncine::FileSystem::dataPath()']]], + ['datasize_1879',['dataSize',['../classncine_1_1_texture.html#a5fa624bb18c7cefe3cfcb07ed677f256',1,'ncine::Texture']]], + ['deadzonenormalize_1880',['deadZoneNormalize',['../classncine_1_1_i_input_manager.html#a8022d3b38f641f5575787dffd493eb5d',1,'ncine::IInputManager']]], + ['deallocate_1881',['deallocate',['../classnctl_1_1_i_allocator.html#ae2fdd6abd24fbb98f3cdeb3c30b553d4',1,'nctl::IAllocator']]], + ['debugoverlaysettings_1882',['debugOverlaySettings',['../classncine_1_1_application.html#a3c1717eb16c8155f2335edb7b72e22c3',1,'ncine::Application']]], + ['defaultframeduration_1883',['defaultFrameDuration',['../classncine_1_1_rect_animation.html#ae08a8ea2cd6c835647096cd4468762b1',1,'ncine::RectAnimation']]], + ['defrag_1884',['defrag',['../classnctl_1_1_free_list_allocator.html#a26a9a4188d1fc3504510cd264c664390',1,'nctl::FreeListAllocator']]], + ['defragondeallocation_1885',['defragOnDeallocation',['../classnctl_1_1_free_list_allocator.html#ae355fe35b43f8a22ea2f8f6ffef4bb95',1,'nctl::FreeListAllocator']]], + ['deletechildrenondestruction_1886',['deleteChildrenOnDestruction',['../classncine_1_1_scene_node.html#a2fcc43e779a6d7ceb4343579d2be3528',1,'ncine::SceneNode']]], + ['deleteemptydir_1887',['deleteEmptyDir',['../classncine_1_1_file_system.html#ae8f0528f59dd0fefa32761313547bfb9',1,'ncine::FileSystem']]], + ['deletefile_1888',['deleteFile',['../classncine_1_1_file_system.html#a695211ed151e2e33b13d63c334de5c82',1,'ncine::FileSystem']]], + ['depthbits_1889',['depthBits',['../classncine_1_1_display_mode.html#afd0dce7633f3f47874b7c39f36556074',1,'ncine::DisplayMode']]], + ['depthstencilformat_1890',['depthStencilFormat',['../classncine_1_1_viewport.html#a60f28a0e7c2457cc2e1b01405103f540',1,'ncine::Viewport']]], + ['destblendingfactor_1891',['destBlendingFactor',['../classncine_1_1_drawable_node.html#ab508ac1fc68ca5da573fd33578f9eef1',1,'ncine::DrawableNode']]], + ['direction_1892',['direction',['../classncine_1_1_i_audio_player.html#a23d92f15caea1a4274762c69bd3bd073',1,'ncine::IAudioPlayer']]], + ['dirname_1893',['dirName',['../classncine_1_1_file_system.html#adac0ae2886c20b6862132aa9859755f9',1,'ncine::FileSystem']]], + ['displaymode_1894',['displayMode',['../classncine_1_1_i_gfx_device.html#a4d48730c6fa16d88851298b8676aca7d',1,'ncine::IGfxDevice']]], + ['distortionproperties_1895',['distortionProperties',['../classncine_1_1_audio_effect_properties.html#aa81da140c7e12cd59bda5059773b35b1',1,'ncine::AudioEffectProperties::distortionProperties() const'],['../classncine_1_1_audio_effect_properties.html#a09228c6b370aa6de023ceeb1101edc3a',1,'ncine::AudioEffectProperties::distortionProperties()']]], + ['draw_1896',['draw',['../classncine_1_1_drawable_node.html#ab8963b4e7de1e4db43dde68aa6e3319a',1,'ncine::DrawableNode::draw()'],['../classncine_1_1_scene_node.html#a5cdccf34ec1175a72b87bb975cf57329',1,'ncine::SceneNode::draw()'],['../classncine_1_1_text_node.html#add7dfbe188a4eda5e1448cacc5466307',1,'ncine::TextNode::draw()']]], + ['drawableaspect_1897',['drawableAspect',['../classncine_1_1_i_gfx_device.html#a283641e4dbfadfc10fa6eb0830aba17a',1,'ncine::IGfxDevice']]], + ['drawableheight_1898',['drawableHeight',['../classncine_1_1_i_gfx_device.html#a02bf336c798e60a1a96f1e286fbd557e',1,'ncine::IGfxDevice']]], + ['drawablenode_1899',['DrawableNode',['../classncine_1_1_drawable_node.html#ad039356d7470fc409c8f4af727b64f6d',1,'ncine::DrawableNode::DrawableNode(SceneNode *parent, float xx, float yy)'],['../classncine_1_1_drawable_node.html#aa3833cae1082f59357d0d9e5ea8b478c',1,'ncine::DrawableNode::DrawableNode(const DrawableNode &other)'],['../classncine_1_1_drawable_node.html#a6a1b75361610caa2114177a427318afa',1,'ncine::DrawableNode::DrawableNode(DrawableNode &&)'],['../classncine_1_1_drawable_node.html#ac81b2605b2084590bda453898b008742',1,'ncine::DrawableNode::DrawableNode()'],['../classncine_1_1_drawable_node.html#abd235887a13d7d398afaad9cbe00f46c',1,'ncine::DrawableNode::DrawableNode(SceneNode *parent)'],['../classncine_1_1_drawable_node.html#a75b87c25df312c1bee1d70377229eadd',1,'ncine::DrawableNode::DrawableNode(SceneNode *parent, const Vector2f &position)']]], + ['drawableresolution_1900',['drawableResolution',['../classncine_1_1_i_gfx_device.html#a8fe498673cf307753ffb783796acf0f2',1,'ncine::IGfxDevice']]], + ['drawablescreenrect_1901',['drawableScreenRect',['../classncine_1_1_i_gfx_device.html#a26aa3a003aec47e948167d260ae15132',1,'ncine::IGfxDevice']]], + ['drawablewidth_1902',['drawableWidth',['../classncine_1_1_i_gfx_device.html#a373efa797fc322c5860edc63f4a057e5',1,'ncine::IGfxDevice']]], + ['duration_1903',['duration',['../classncine_1_1_audio_buffer.html#a9d90c361a506952575a89e5ee61f8c68',1,'ncine::AudioBuffer::duration()'],['../classncine_1_1_audio_buffer_player.html#a4cc595966c93984ffec8ef61dc95a0f9',1,'ncine::AudioBufferPlayer::duration()'],['../classncine_1_1_audio_stream.html#ab65e7372d936cb010b33063140d36c64',1,'ncine::AudioStream::duration()'],['../classncine_1_1_audio_stream_player.html#a7d9c7f7ce8781bddcf9b91ae647bf8d2',1,'ncine::AudioStreamPlayer::duration()'],['../classncine_1_1_i_audio_player.html#ad51744ae2a16028a9eb14a02da26fd7a',1,'ncine::IAudioPlayer::duration()']]] +]; diff --git a/master/search/functions_4.html b/master/search/functions_4.html new file mode 100644 index 0000000000..1657cad0d4 --- /dev/null +++ b/master/search/functions_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/functions_4.js b/master/search/functions_4.js new file mode 100644 index 0000000000..679e7c198e --- /dev/null +++ b/master/search/functions_4.js @@ -0,0 +1,27 @@ +var searchData= +[ + ['eaxreverbproperties_1904',['eaxReverbProperties',['../classncine_1_1_audio_effect_properties.html#aeb4af5de6dce2ab97b9554df58c1f86c',1,'ncine::AudioEffectProperties::eaxReverbProperties()'],['../classncine_1_1_audio_effect_properties.html#aeb52c8245643ff217285ae22a3fd1d0f',1,'ncine::AudioEffectProperties::eaxReverbProperties() const']]], + ['echoproperties_1905',['echoProperties',['../classncine_1_1_audio_effect_properties.html#a607e3c347eea3ff590099e69e2a846eb',1,'ncine::AudioEffectProperties::echoProperties()'],['../classncine_1_1_audio_effect_properties.html#ad1612ee24146bc326509a9495539acb6',1,'ncine::AudioEffectProperties::echoProperties() const']]], + ['effectid_1906',['effectId',['../classncine_1_1_audio_effect.html#ab5f45d325ea7f89c997e0ebf9ebcd55c',1,'ncine::AudioEffect']]], + ['effectslotid_1907',['effectSlotId',['../classncine_1_1_audio_effect_slot.html#a829b863c4c62261caac2348169c71a96',1,'ncine::AudioEffectSlot']]], + ['emitparticles_1908',['emitParticles',['../classncine_1_1_particle_system.html#a583808b6c98e187ea9c959195114f087',1,'ncine::ParticleSystem']]], + ['emplace_1909',['emplace',['../classnctl_1_1_static_array.html#a528880e44e1b8a790fd8c4d54d9033c0',1,'nctl::StaticArray::emplace()'],['../classnctl_1_1_static_hash_map.html#af5e463260d2b4dd28d31ca5c5fab73c2',1,'nctl::StaticHashMap::emplace()'],['../classnctl_1_1_hash_map_list.html#a284de8b264fe953d7eafce186b7cbe78',1,'nctl::HashMapList::emplace()'],['../classnctl_1_1_hash_map.html#a63475773a33ae23d6e6e971040d483b0',1,'nctl::HashMap::emplace()'],['../classnctl_1_1_array.html#a9f177e3d4ee68e8b2086ef6c8530ffda',1,'nctl::Array::emplace()']]], + ['emplaceafter_1910',['emplaceAfter',['../classnctl_1_1_list.html#ac80bc52aa9d0f1d944cb93f21cf26f6e',1,'nctl::List']]], + ['emplaceat_1911',['emplaceAt',['../classnctl_1_1_array.html#ad2f3e0d8da1b7f4937c8c0fd51672988',1,'nctl::Array::emplaceAt()'],['../classnctl_1_1_static_array.html#a883feeb57ae7ef4bb16699fcc57cc321',1,'nctl::StaticArray::emplaceAt()']]], + ['emplaceback_1912',['emplaceBack',['../classnctl_1_1_array.html#a8a302b958eaeb9a5ac9d354f8c5c1527',1,'nctl::Array::emplaceBack()'],['../classnctl_1_1_list.html#a5ee84b26055cae76f2b89836ed73ca33',1,'nctl::List::emplaceBack()'],['../classnctl_1_1_static_array.html#a2e451431eb46abd650edee16ebe68f16',1,'nctl::StaticArray::emplaceBack()']]], + ['emplacebefore_1913',['emplaceBefore',['../classnctl_1_1_list.html#af8391acd69af48f9dec9ee25f3df5c24',1,'nctl::List']]], + ['emplacefront_1914',['emplaceFront',['../classnctl_1_1_list.html#a8ff85f8475485c8f994081593349933e',1,'nctl::List']]], + ['emplaceindices_1915',['emplaceIndices',['../classncine_1_1_mesh_sprite.html#aea38d934b6d68eaea80bd617b39f0cd9',1,'ncine::MeshSprite']]], + ['emplacevertices_1916',['emplaceVertices',['../classncine_1_1_mesh_sprite.html#aeee19e6584274d6d069e5400fb3c0b52',1,'ncine::MeshSprite::emplaceVertices(unsigned int numElements, unsigned int bytesPerVertex)'],['../classncine_1_1_mesh_sprite.html#a122560f53d33befaa3e2c8a853a4b79f',1,'ncine::MeshSprite::emplaceVertices(unsigned int numElements)']]], + ['enableaccelerometer_1917',['enableAccelerometer',['../classncine_1_1_android_application.html#a5746ccb36a6dac06b1a9f7a01e742758',1,'ncine::AndroidApplication']]], + ['enablekerning_1918',['enableKerning',['../classncine_1_1_text_node.html#aa5cb159d7b0aa2cd335e517776cf34bd',1,'ncine::TextNode']]], + ['end_1919',['end',['../classnctl_1_1_sparse_set.html#a0c4e3017b857d48c66471f16a8afe904',1,'nctl::SparseSet::end()'],['../classnctl_1_1_static_array.html#a181eb2753c2ef22b230796a7e4f1083b',1,'nctl::StaticArray::end()'],['../classnctl_1_1_static_array.html#a618c9c15544ee89459b62476ff72d388',1,'nctl::StaticArray::end() const'],['../classnctl_1_1_static_hash_map.html#a7cdbe04ff31b9844a6fb58e25bec5d4e',1,'nctl::StaticHashMap::end()'],['../classnctl_1_1_hash_set.html#a913ba896ba56c36c35690a6714f53cda',1,'nctl::HashSet::end()'],['../classnctl_1_1_static_hash_map.html#a9346235bbe849d803e9bda4b2076f259',1,'nctl::StaticHashMap::end()'],['../classnctl_1_1_static_hash_set.html#a08b5c225ef17bf02b1d2990a545125be',1,'nctl::StaticHashSet::end()'],['../classnctl_1_1_static_hash_set.html#af8f43767ad404f3801f032b648dfdfb6',1,'nctl::StaticHashSet::end() const'],['../classnctl_1_1_static_string.html#a0ffee536b3b72c1fed4c7b2b2966a36d',1,'nctl::StaticString::end()'],['../classnctl_1_1_static_string.html#a6c31f4fcfff769985bf485b01ab97f8c',1,'nctl::StaticString::end() const'],['../classnctl_1_1_string.html#acf79c8c3a20ae54c52af4e0b1809a04d',1,'nctl::String::end()'],['../classnctl_1_1_string.html#a7446d7462dc732253ead2dda29a50947',1,'nctl::String::end() const'],['../classnctl_1_1_list.html#a8eaf64522c63b2b8f6ca3db978554a0d',1,'nctl::List::end() const'],['../classnctl_1_1_list.html#a583b73d4ec9797b43b32d90ba945a4c3',1,'nctl::List::end()'],['../classnctl_1_1_hash_set_list.html#a5cdfd4615d0c8004a4401d1e8c8b765a',1,'nctl::HashSetList::end() const'],['../classnctl_1_1_hash_set_list.html#a454fa79e4533c4c1569bbbe902a49b6e',1,'nctl::HashSetList::end()'],['../classnctl_1_1_hash_set.html#a2b0e1b56f27372046d2dad22f2556bc7',1,'nctl::HashSet::end()'],['../classnctl_1_1_hash_map_list.html#a493c87dd5a4f3c0607a58a95fc369aa4',1,'nctl::HashMapList::end() const'],['../classnctl_1_1_hash_map_list.html#aa097521d12b224c675c233d8bacbc92c',1,'nctl::HashMapList::end()'],['../classnctl_1_1_hash_map.html#a13f9361c2839dcebbea050438045a639',1,'nctl::HashMap::end() const'],['../classnctl_1_1_hash_map.html#a862d4d2b7c15d373406a2b6f38c314fa',1,'nctl::HashMap::end()'],['../classnctl_1_1_array.html#ac27c1537f5f4a0ea73e4221588170c88',1,'nctl::Array::end() const'],['../classnctl_1_1_array.html#ae9577aaf2570f9be5b77e534a25f1c61',1,'nctl::Array::end()'],['../classnctl_1_1_sparse_set.html#a5807c0ad125cfb1c62158473c29fa02b',1,'nctl::SparseSet::end()']]], + ['enqueue_1920',['enqueue',['../classncine_1_1_audio_stream.html#ad8b30d63c8dfcb7493ba79a0d72bbabb',1,'ncine::AudioStream']]], + ['enqueuecommand_1921',['enqueueCommand',['../classncine_1_1_i_thread_pool.html#a5bb828dedda38e65833deea3e8a6a7ef',1,'ncine::IThreadPool::enqueueCommand()'],['../classncine_1_1_null_thread_pool.html#a01cc43f1d59797354706b861020ae445',1,'ncine::NullThreadPool::enqueueCommand()']]], + ['equalizerproperties_1922',['equalizerProperties',['../classncine_1_1_audio_effect_properties.html#a0af01302ae804fc1011ab121be58e79e',1,'ncine::AudioEffectProperties::equalizerProperties() const'],['../classncine_1_1_audio_effect_properties.html#a2924df5037f5bc9acb2ad7b8a953816b',1,'ncine::AudioEffectProperties::equalizerProperties()']]], + ['erase_1923',['erase',['../classnctl_1_1_array.html#aa5088a9e824af88acce85d273f45257d',1,'nctl::Array::erase(Iterator position)'],['../classnctl_1_1_array.html#a254e6aa67fff90f772b1bafa6408b0b3',1,'nctl::Array::erase(Iterator first, const Iterator last)'],['../classnctl_1_1_list.html#ada1c889e00bc3c80455496004b07f6b8',1,'nctl::List::erase(ConstIterator position)'],['../classnctl_1_1_list.html#a519700c4dfd5b0c58c27eada96df0a2b',1,'nctl::List::erase(ConstIterator first, const ConstIterator last)'],['../classnctl_1_1_static_array.html#a76ff7dddb118b7aceb942a10a05fed83',1,'nctl::StaticArray::erase(Iterator position)'],['../classnctl_1_1_static_array.html#adeff7d5c7aea6e90cbcfedb72d79c5fb',1,'nctl::StaticArray::erase(Iterator first, const Iterator last)']]], + ['execute_1924',['execute',['../classncine_1_1_i_thread_command.html#aea2b527102932c81f32a7d0ac95f7338',1,'ncine::IThreadCommand']]], + ['exists_1925',['exists',['../classncine_1_1_file_system.html#a301de2d828c8f714b8a72d7c54aa6f3c',1,'ncine::FileSystem']]], + ['extension_1926',['extension',['../classncine_1_1_file_system.html#a5a33d201323b2c1d499f100b6dfb4a43',1,'ncine::FileSystem']]], + ['externaldatapath_1927',['externalDataPath',['../classncine_1_1_android_application.html#a574aa361e14c03270c8d8f918a8573d2',1,'ncine::AndroidApplication']]] +]; diff --git a/master/search/functions_5.html b/master/search/functions_5.html new file mode 100644 index 0000000000..9301d6b9c1 --- /dev/null +++ b/master/search/functions_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/functions_5.js b/master/search/functions_5.js new file mode 100644 index 0000000000..daaa8198f8 --- /dev/null +++ b/master/search/functions_5.js @@ -0,0 +1,33 @@ +var searchData= +[ + ['fastinteger_1928',['fastInteger',['../classncine_1_1_random.html#ae5f2775282732cdcaa8e8a7606019f52',1,'ncine::Random']]], + ['fastreal_1929',['fastReal',['../classncine_1_1_random.html#a01e20aced99af0a1ba15f2cf423209af',1,'ncine::Random::fastReal()'],['../classncine_1_1_random.html#a561bd7a95ab33f205252c2789867d35b',1,'ncine::Random::fastReal(float min, float max)']]], + ['fd_1930',['fd',['../classncine_1_1_i_file.html#aecaa1ddd8ff1c7a04063aa2d102debd6',1,'ncine::IFile']]], + ['filename_1931',['filename',['../classncine_1_1_emscripten_local_file.html#a92800c5a3e70318e8d65c9f5807e1921',1,'ncine::EmscriptenLocalFile::filename()'],['../classncine_1_1_i_file.html#a05152fbcaa169ace627b0dbbc0c7541a',1,'ncine::IFile::filename()']]], + ['filesize_1932',['fileSize',['../classncine_1_1_file_system.html#a0a8fe0a1d1314de51bd7825797cc488d',1,'ncine::FileSystem']]], + ['filterid_1933',['filterId',['../classncine_1_1_audio_filter.html#a9972469f33187f8018564ba02974fd39',1,'ncine::AudioFilter']]], + ['find_1934',['find',['../classnctl_1_1_static_string.html#ad0016e956845f31d4aa0c578806ee54f',1,'nctl::StaticString::find()'],['../classnctl_1_1_string.html#a3f33e9dc48cd566c07257bf2ec81525b',1,'nctl::String::find(const char *cString) const'],['../classnctl_1_1_string.html#af843b725bf90db4b84bca74e22b49db6',1,'nctl::String::find(const String &other) const'],['../classnctl_1_1_static_string.html#a2ef4231f047b9e761d89f9824214b9ef',1,'nctl::StaticString::find(const char *cString) const'],['../classnctl_1_1_static_string.html#a061e8b7cf84169c54d8724bf3461c34a',1,'nctl::StaticString::find(const StaticString< U > &other) const'],['../classnctl_1_1_static_hash_set.html#ac199e1a960e9321a1681123846ec5937',1,'nctl::StaticHashSet::find(const K &key) const'],['../classnctl_1_1_static_hash_set.html#a1a63576d1d0ff6d284d689963b7d22dd',1,'nctl::StaticHashSet::find(const K &key)'],['../classnctl_1_1_static_hash_map.html#a1dce194b60d048a395cb9d72a1965cc7',1,'nctl::StaticHashMap::find(const K &key) const'],['../classnctl_1_1_static_hash_map.html#a07dbe09b250036700d25d639fb13412b',1,'nctl::StaticHashMap::find(const K &key)'],['../classnctl_1_1_hash_set_list.html#a178dd382ed5539c998eb4dacc8bec91e',1,'nctl::HashSetList::find(const K &key) const'],['../classnctl_1_1_hash_set_list.html#a70198354f4d6789927a698b7fb77954b',1,'nctl::HashSetList::find(const K &key)'],['../classnctl_1_1_hash_set.html#accc59d30316242e02552185f5b0d0f9a',1,'nctl::HashSet::find()'],['../classnctl_1_1_hash_map.html#ac8dc7c685333cc35d7c052a692d2149d',1,'nctl::HashMap::find()'],['../classnctl_1_1_hash_set.html#a1ead32bdaf2a460bc54903cbf7c85736',1,'nctl::HashSet::find()'],['../classnctl_1_1_hash_map_list.html#a815a51398c6125b51543a333fd8808c8',1,'nctl::HashMapList::find(const K &key) const'],['../classnctl_1_1_hash_map_list.html#ac14638ddd64036bd0391b37e3b76a544',1,'nctl::HashMapList::find(const K &key)'],['../classnctl_1_1_hash_map.html#acb57ff26b338fd87248401b719f33ae7',1,'nctl::HashMap::find()'],['../classnctl_1_1_sparse_set.html#a482ea527c20171fb77c004e90baed8b7',1,'nctl::SparseSet::find()']]], + ['findfirstchar_1935',['findFirstChar',['../classnctl_1_1_static_string.html#a5fd8562a30369c2070aee71859ad8a8a',1,'nctl::StaticString::findFirstChar()'],['../classnctl_1_1_string.html#ab4b2ab4fc6bf832aa4e83809e0e1336b',1,'nctl::String::findFirstChar()']]], + ['findfirstcharafterindex_1936',['findFirstCharAfterIndex',['../classnctl_1_1_static_string.html#ac8aa7eed3ddcf7aaa599138b90aa081e',1,'nctl::StaticString::findFirstCharAfterIndex()'],['../classnctl_1_1_string.html#a5e0974c22885872278be238da372d349',1,'nctl::String::findFirstCharAfterIndex()']]], + ['findlastchar_1937',['findLastChar',['../classnctl_1_1_static_string.html#a23c075e31b093fee282fe598f751d79e',1,'nctl::StaticString::findLastChar()'],['../classnctl_1_1_string.html#a55ea0a0861beef24cb2279368940b8af',1,'nctl::String::findLastChar()']]], + ['fitstrategy_1938',['fitStrategy',['../classnctl_1_1_free_list_allocator.html#a78015efa861df084715e4966af7abd1e',1,'nctl::FreeListAllocator']]], + ['fixextension_1939',['fixExtension',['../classncine_1_1_file_system.html#ab76cbfd510a7d49d3a0cd80a0ecfe627',1,'ncine::FileSystem']]], + ['flangerproperties_1940',['flangerProperties',['../classncine_1_1_audio_effect_properties.html#aec9ebac367deff8c364c132782d39cda',1,'ncine::AudioEffectProperties::flangerProperties() const'],['../classncine_1_1_audio_effect_properties.html#ab5538ac60327155addec97739464b1fc',1,'ncine::AudioEffectProperties::flangerProperties()']]], + ['flashwindow_1941',['flashWindow',['../classncine_1_1_i_gfx_device.html#ae0091f94447a2c22ca957ffecf304781',1,'ncine::IGfxDevice']]], + ['flip_1942',['flip',['../classnctl_1_1_bit_set.html#a1e5cebd2688734187da21d96588de4cb',1,'nctl::BitSet']]], + ['font_1943',['font',['../classncine_1_1_text_node.html#a534b02fb474615dd793f14368bd3619e',1,'ncine::TextNode']]], + ['font_1944',['Font',['../classncine_1_1_font.html#af439a5c66ec42c4f5b8c93d1e2067fd7',1,'ncine::Font::Font(Font &&)'],['../classncine_1_1_font.html#a01780c3ed1d9b728148c55588701bc64',1,'ncine::Font::Font(const char *fntFilename, Texture *texture)'],['../classncine_1_1_font.html#a879078eda2c16010b86c0080d8d9ac00',1,'ncine::Font::Font(const char *fntFilename, const char *texFilename)'],['../classncine_1_1_font.html#a86f2effe0bc32537669248b9d1583a0a',1,'ncine::Font::Font(const char *fntFilename)'],['../classncine_1_1_font.html#ac083f28a592e063c82fc15937dbee694',1,'ncine::Font::Font(const char *fntBufferName, const unsigned char *fntBufferPtr, unsigned long int fntBufferSize, const char *texBufferName, const unsigned char *texBufferPtr, unsigned long int texBufferSize)'],['../classncine_1_1_font.html#a39a64b733ee9df584aed9da4ee6300c3',1,'ncine::Font::Font(const char *fntBufferName, const unsigned char *fntBufferPtr, unsigned long int fntBufferSize, const char *texFilename)'],['../classncine_1_1_font.html#abe554b25d8f5f7d96b439c73d0f9e136',1,'ncine::Font::Font()'],['../classncine_1_1_font.html#ab67d07c740d6f2e6bc4814e92f40f571',1,'ncine::Font::Font(const char *fntBufferName, const unsigned char *fntBufferPtr, unsigned long int fntBufferSize, Texture *texture)']]], + ['format_1945',['format',['../classncine_1_1_texture.html#a3be461d7a27e682b8747821e8a18c017',1,'ncine::Texture::format()'],['../classnctl_1_1_static_string.html#ab1cd053cc343aa04a68350e67f2fd3cd',1,'nctl::StaticString::format()'],['../classnctl_1_1_string.html#a8f5dcc7d99380162f410d26849b86632',1,'nctl::String::format()']]], + ['formatappend_1946',['formatAppend',['../classnctl_1_1_static_string.html#aa70497f78e2951e847a670d901ead79c',1,'nctl::StaticString::formatAppend()'],['../classnctl_1_1_string.html#a0a861d1e073a96485a38998383212f32',1,'nctl::String::formatAppend()']]], + ['frame_1947',['frame',['../classncine_1_1_animated_sprite.html#aab738121f5b4a396cb01a05f2a66ca93',1,'ncine::AnimatedSprite::frame()'],['../classncine_1_1_rect_animation.html#a67049dc5ae11369e405c4f6b2ae67e6f',1,'ncine::RectAnimation::frame() const']]], + ['frameduration_1948',['frameDuration',['../classncine_1_1_rect_animation.html#a77ded0884f6928266d8b7646e97c8648',1,'ncine::RectAnimation']]], + ['framedurations_1949',['frameDurations',['../classncine_1_1_rect_animation.html#a17d3c974f3500b3d4e9da251e8111b2e',1,'ncine::RectAnimation::frameDurations()'],['../classncine_1_1_rect_animation.html#a8d803666f2e627fb0bee47548f3684a6',1,'ncine::RectAnimation::frameDurations() const']]], + ['frametimer_1950',['frameTimer',['../classncine_1_1_application.html#a365cf7e0fa82c02ef0b9667dc2528614',1,'ncine::Application']]], + ['freememory_1951',['freeMemory',['../classnctl_1_1_i_allocator.html#aa32c2247841ce5ecd1fca16d7cd11b90',1,'nctl::IAllocator']]], + ['frequency_1952',['frequency',['../classncine_1_1_i_audio_player.html#aeec32431d779c84b95c3f2ed1fe0e70e',1,'ncine::IAudioPlayer::frequency()'],['../classncine_1_1_audio_buffer_player.html#afd2a5d75ea54a9c91549d6ae6d17f05d',1,'ncine::AudioBufferPlayer::frequency()'],['../classncine_1_1_audio_stream_player.html#a59ef296673df29614ca94cbc616fddc4',1,'ncine::AudioStreamPlayer::frequency()'],['../classncine_1_1_audio_stream.html#ae48cc5c6a1c474a4af00951e420d3319',1,'ncine::AudioStream::frequency()'],['../classncine_1_1_audio_buffer.html#ac8c623d02bee3edb435088435912ce26',1,'ncine::AudioBuffer::frequency()']]], + ['frequencyshifterproperties_1953',['frequencyShifterProperties',['../classncine_1_1_audio_effect_properties.html#abd730b527a5cb2566256e9e7bb91bdb7',1,'ncine::AudioEffectProperties::frequencyShifterProperties() const'],['../classncine_1_1_audio_effect_properties.html#a90b6ee4af2c5b77d9695fea778bc460f',1,'ncine::AudioEffectProperties::frequencyShifterProperties()']]], + ['fromcentersize_1954',['fromCenterSize',['../classncine_1_1_rect.html#aafc15f50532ab8931fbf03126a5124ee',1,'ncine::Rect::fromCenterSize(T xx, T yy, T ww, T hh)'],['../classncine_1_1_rect.html#a03fce6e8bdcf00f8abed4e2e95ab84d9',1,'ncine::Rect::fromCenterSize(const Vector2< T > &center, const Vector2< T > &size)']]], + ['fromid_1955',['fromId',['../classncine_1_1_object.html#a8cb341bd336569c584bdf9156c850a0c',1,'ncine::Object']]], + ['fromminmax_1956',['fromMinMax',['../classncine_1_1_rect.html#ad55e901fffe0b2ccf0b6aecfd29c2b58',1,'ncine::Rect::fromMinMax(T minX, T minY, T maxX, T maxY)'],['../classncine_1_1_rect.html#adaa8b027a1d875caf19e715ab9cfdf0e',1,'ncine::Rect::fromMinMax(const Vector2< T > &min, const Vector2< T > &max)']]], + ['front_1957',['front',['../classnctl_1_1_array.html#a8fae363c848112a8dff7b278d2e20a3b',1,'nctl::Array::front() const'],['../classnctl_1_1_array.html#a1ef0726d4cc2f15bbfe6c92b3631673c',1,'nctl::Array::front()'],['../classnctl_1_1_list.html#a7498565fa928dd4f6e2e4c5e63b5e64d',1,'nctl::List::front() const'],['../classnctl_1_1_list.html#ab8d86963a7c8a5fb18178f1dd5d802e6',1,'nctl::List::front()'],['../classnctl_1_1_static_array.html#a4cf6598766169df8f10c616752b8b2d6',1,'nctl::StaticArray::front() const'],['../classnctl_1_1_static_array.html#ac93e2206d2e4a312cdcb71187e413c12',1,'nctl::StaticArray::front()']]] +]; diff --git a/master/search/functions_6.html b/master/search/functions_6.html new file mode 100644 index 0000000000..9c4f5fc654 --- /dev/null +++ b/master/search/functions_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/functions_6.js b/master/search/functions_6.js new file mode 100644 index 0000000000..49b0ae795c --- /dev/null +++ b/master/search/functions_6.js @@ -0,0 +1,18 @@ +var searchData= +[ + ['g_1958',['g',['../classncine_1_1_colorf.html#a5cb22b9e82b05d91675c1aa31d8eb256',1,'ncine::Colorf::g()'],['../classncine_1_1_color_hdr.html#a7e7ef06ec614343210c80fd657dd6ce1',1,'ncine::ColorHdr::g()'],['../classncine_1_1_color.html#a48e838d6234ee46f825c1446cc9a1141',1,'ncine::Color::g()']]], + ['gain_1959',['gain',['../classncine_1_1_audio_effect_slot.html#a08414e255b5e44046cba0bb6980ffa02',1,'ncine::AudioEffectSlot::gain()'],['../classncine_1_1_i_audio_device.html#a7a09047537a82ece9fa0fb0572560dbd',1,'ncine::IAudioDevice::gain()'],['../classncine_1_1_null_audio_device.html#af08123ea050f9af3839d9838221c96f7',1,'ncine::NullAudioDevice::gain()'],['../classncine_1_1_i_audio_player.html#a61db8eacf478d42d9e30b116906f3ba3',1,'ncine::IAudioPlayer::gain()']]], + ['gfxcapabilities_1960',['gfxCapabilities',['../classncine_1_1_service_locator.html#a881411912dd640aa9c7a6088372fca01',1,'ncine::ServiceLocator']]], + ['gfxdevice_1961',['gfxDevice',['../classncine_1_1_application.html#a0fe0fad9ae54de5c457f04f95e2a3bee',1,'ncine::Application']]], + ['glcontextinfo_1962',['glContextInfo',['../classncine_1_1_i_gfx_device.html#a689adb9b0f85370f92a50bc3cd6282a0',1,'ncine::IGfxDevice']]], + ['glcoreprofile_1963',['glCoreProfile',['../classncine_1_1_app_configuration.html#a6bbbd52b67e1f6aedde732ab937aedbd',1,'ncine::AppConfiguration']]], + ['glforwardcompatible_1964',['glForwardCompatible',['../classncine_1_1_app_configuration.html#ad88d5ec8fa57f819a8e42b911cb17746',1,'ncine::AppConfiguration']]], + ['glinfostrings_1965',['glInfoStrings',['../classncine_1_1_i_gfx_capabilities.html#a4ca77945b83334eb0378a4777dbc1dab',1,'ncine::IGfxCapabilities::glInfoStrings()'],['../classncine_1_1_null_gfx_capabilities.html#a7960f0bb02f0b8a25f5745dfdbfa180f',1,'ncine::NullGfxCapabilities::glInfoStrings()']]], + ['glmajorversion_1966',['glMajorVersion',['../classncine_1_1_app_configuration.html#a6dd82b94ce15e2fc66495b2d127eba23',1,'ncine::AppConfiguration']]], + ['glminorversion_1967',['glMinorVersion',['../classncine_1_1_app_configuration.html#a19ade5f69284fbefd257f0b746b22490',1,'ncine::AppConfiguration']]], + ['glversion_1968',['glVersion',['../classncine_1_1_i_gfx_capabilities.html#ae00860a16dd61eeb8b89ac42b061eac9',1,'ncine::IGfxCapabilities::glVersion()'],['../classncine_1_1_null_gfx_capabilities.html#a936bdc9766d6bdb721a105aa5cdaca65',1,'ncine::NullGfxCapabilities::glVersion()']]], + ['glyph_1969',['glyph',['../classncine_1_1_font.html#adfbfae58f9f7c4c1b38012eeddc94787',1,'ncine::Font']]], + ['greenbits_1970',['greenBits',['../classncine_1_1_display_mode.html#ab2dd388af23add484c4edf38b855271b',1,'ncine::DisplayMode']]], + ['guisettings_1971',['guiSettings',['../classncine_1_1_application.html#a4ed05de44b35fbc6a8c9678f993b5059',1,'ncine::Application']]], + ['guitexid_1972',['guiTexId',['../classncine_1_1_texture.html#a001cae2dddc4b2bd1ef320f338b5d1b4',1,'ncine::Texture']]] +]; diff --git a/master/search/functions_7.html b/master/search/functions_7.html new file mode 100644 index 0000000000..46b5c0f613 --- /dev/null +++ b/master/search/functions_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/functions_7.js b/master/search/functions_7.js new file mode 100644 index 0000000000..f07959d366 --- /dev/null +++ b/master/search/functions_7.js @@ -0,0 +1,22 @@ +var searchData= +[ + ['handler_1973',['handler',['../classncine_1_1_i_input_manager.html#a89d65300af9befdfb0138ddec50dd6bf',1,'ncine::IInputManager']]], + ['hasextension_1974',['hasExtension',['../classncine_1_1_file_system.html#a1e7d416dd857749dd1178a86c14d23b8',1,'ncine::FileSystem::hasExtension()'],['../classncine_1_1_i_gfx_capabilities.html#aea7716d9d5ebce7f7e91ed7d963cbe3e',1,'ncine::IGfxCapabilities::hasExtension()'],['../classncine_1_1_i_audio_device.html#a20c46517e4b886e62ecb2d229f22674e',1,'ncine::IAudioDevice::hasExtension()']]], + ['hasfocus_1975',['hasFocus',['../classncine_1_1_application.html#a1d03b7f576d8b0a706e7a711e2814a6a',1,'ncine::Application']]], + ['hash_1976',['hash',['../classnctl_1_1_hash_set_list_iterator.html#afbdb3e9db6ec845d2bdd4adcfff7a474',1,'nctl::HashSetListIterator::hash()'],['../classnctl_1_1_static_hash_set_iterator.html#a8b19d05ae3475e6b8e945ffe1be9fe68',1,'nctl::StaticHashSetIterator::hash()'],['../classnctl_1_1_static_hash_set.html#a08190547717dd89b65724d86d21bd14d',1,'nctl::StaticHashSet::hash()'],['../classnctl_1_1_static_hash_map_iterator.html#a67f3a5fa4c6a6af744b1b9092084eb2a',1,'nctl::StaticHashMapIterator::hash()'],['../classnctl_1_1_static_hash_map.html#ac6e964aa27afc5c004a8b133252d50ee',1,'nctl::StaticHashMap::hash()'],['../classnctl_1_1_hash_set_list.html#a0b599e2e76a3e25c1f07156d68a81ab1',1,'nctl::HashSetList::hash()'],['../classnctl_1_1_hash_set_iterator.html#acb0dad31954ef027d70e99cd97435e9a',1,'nctl::HashSetIterator::hash()'],['../classnctl_1_1_hash_set.html#a098052f1e1ce7eb09df79c3418cdd223',1,'nctl::HashSet::hash()'],['../classnctl_1_1_hash_map_list_iterator.html#a495a562e8e3a7d6e42658faee479e4a6',1,'nctl::HashMapListIterator::hash()'],['../classnctl_1_1_hash_map_list.html#aac63306695cec847cc96a4a320d9541d',1,'nctl::HashMapList::hash()'],['../classnctl_1_1_hash_map_iterator.html#ae610418e3c6d218be91272de9940af30',1,'nctl::HashMapIterator::hash()'],['../classnctl_1_1_hash_map.html#a20d66e25bf5e50f385477c8d27b5c488',1,'nctl::HashMap::hash()']]], + ['hashfilestat_1977',['hashFileStat',['../classncine_1_1_hash64.html#a01f8444503ac06b7fcd8503477be12c1',1,'ncine::Hash64']]], + ['hashmap_1978',['HashMap',['../classnctl_1_1_hash_map.html#ab6fdfc7bb0e94ebc690556e615854bc5',1,'nctl::HashMap::HashMap(const HashMap &other)'],['../classnctl_1_1_hash_map.html#ab6e2c7ef185e1dcea689de715d8ad6bd',1,'nctl::HashMap::HashMap(HashMap &&other)']]], + ['hashmapiterator_1979',['HashMapIterator',['../classnctl_1_1_hash_map_iterator.html#a1dd48e812404a65c71d60aa5b320ed66',1,'nctl::HashMapIterator']]], + ['hashmaplist_1980',['HashMapList',['../classnctl_1_1_hash_map_list.html#aad01a34ae27f743c75fd489db2f1db80',1,'nctl::HashMapList::HashMapList(HashMapList &&other)'],['../classnctl_1_1_hash_map_list.html#a348edf0adc89951a9b7645c519a98225',1,'nctl::HashMapList::HashMapList(const HashMapList &other)']]], + ['hashmaplistiterator_1981',['HashMapListIterator',['../classnctl_1_1_hash_map_list_iterator.html#a0e40a755fca05842951e1bb3ccd590f0',1,'nctl::HashMapListIterator']]], + ['hashset_1982',['HashSet',['../classnctl_1_1_hash_set.html#addd501bef93d513dd93cf87acb1f561f',1,'nctl::HashSet::HashSet(const HashSet &other)'],['../classnctl_1_1_hash_set.html#ac61b9213e7e1c9d51fba3c4a9ef60b57',1,'nctl::HashSet::HashSet(HashSet &&other)']]], + ['hashsetlist_1983',['HashSetList',['../classnctl_1_1_hash_set_list.html#ad249fd4c372d3bf98d5b70ca99c2b9f8',1,'nctl::HashSetList::HashSetList(const HashSetList &other)'],['../classnctl_1_1_hash_set_list.html#af4025d439041ba02338f5d3d3d82ee21',1,'nctl::HashSetList::HashSetList(HashSetList &&other)']]], + ['hashstring_1984',['hashString',['../classncine_1_1_hash64.html#a217e5e128c0ea179f4ce6d195b3ee641',1,'ncine::Hash64']]], + ['hashstrings_1985',['hashStrings',['../classncine_1_1_hash64.html#a65fbf676dd4dc0d6c0768bbdd90edc31',1,'ncine::Hash64']]], + ['hassource_1986',['hasSource',['../classncine_1_1_i_audio_player.html#a059adaab0aa69af50aa9aea3a4cab1f9',1,'ncine::IAudioPlayer']]], + ['hasvsync_1987',['hasVSync',['../classncine_1_1_display_mode.html#a940cda94181d47ed9afc484ae104e7af',1,'ncine::DisplayMode']]], + ['hatstate_1988',['hatState',['../classncine_1_1_joystick_state.html#ab6e942315f3285913b700d974d0789f5',1,'ncine::JoystickState']]], + ['height_1989',['height',['../classncine_1_1_application.html#a0804ca1e3f370244cde624cbd371f389',1,'ncine::Application::height()'],['../classncine_1_1_drawable_node.html#a72b31d7c99975aa0fcde166983d80519',1,'ncine::DrawableNode::height()'],['../classncine_1_1_i_gfx_device.html#aa14bde8f02c81beb2d1e39dbb9e03c54',1,'ncine::IGfxDevice::height()'],['../classncine_1_1_text_node.html#a3c8c3def1594ce971bf55fa48e7b5c10',1,'ncine::TextNode::height()'],['../classncine_1_1_texture.html#af4f7b619b372409885893edac751ef93',1,'ncine::Texture::height()'],['../classncine_1_1_viewport.html#a9b89fb094a5df3324d0b62c0044b0405',1,'ncine::Viewport::height()']]], + ['heightint_1990',['heightInt',['../classncine_1_1_application.html#a6b4445abd5978135d1b6165d2f934680',1,'ncine::Application']]], + ['homepath_1991',['homePath',['../classncine_1_1_file_system.html#a63c13ca24abf1e697b3955efa6c981b1',1,'ncine::FileSystem']]] +]; diff --git a/master/search/functions_8.html b/master/search/functions_8.html new file mode 100644 index 0000000000..31a1d9503e --- /dev/null +++ b/master/search/functions_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/functions_8.js b/master/search/functions_8.js new file mode 100644 index 0000000000..3df06bf481 --- /dev/null +++ b/master/search/functions_8.js @@ -0,0 +1,71 @@ +var searchData= +[ + ['iaudioplayer_1992',['IAudioPlayer',['../classncine_1_1_i_audio_player.html#adf6c9dc4aaaabe134ff6c397e6bb1117',1,'ncine::IAudioPlayer']]], + ['id_1993',['id',['../classncine_1_1_object.html#ac85f98b0431de8bd5fa08e52fdfe33b6',1,'ncine::Object']]], + ['idebugoverlay_1994',['IDebugOverlay',['../classncine_1_1_i_debug_overlay.html#ae007b933f7c679e4124a4d2f03f782ff',1,'ncine::IDebugOverlay']]], + ['ifile_1995',['IFile',['../classncine_1_1_i_file.html#ae3e750c2f79685efffd16736e3f3dfe1',1,'ncine::IFile']]], + ['indexer_1996',['indexer',['../classncine_1_1_service_locator.html#a72909542a6ea023e68d2dd5f2b0dac4c',1,'ncine::ServiceLocator']]], + ['indices_1997',['indices',['../classncine_1_1_mesh_sprite.html#aecfe6b8232b081d81e198532f7ba3783',1,'ncine::MeshSprite']]], + ['init_1998',['init',['../classncine_1_1_audio_buffer.html#a4ecb2b93f62caa046b993a3745fd2204',1,'ncine::AudioBuffer::init()'],['../classncine_1_1_random.html#adb9fd261d43d42bbdae0ba9524cb3ecb',1,'ncine::Random::init()'],['../classncine_1_1_texture.html#a047a9aa5d1befc3ad126e79eb3a5d5ef',1,'ncine::Texture::init(const char *name, Format format, int mipMapCount, int width, int height)'],['../classncine_1_1_texture.html#aaa759b8e8d1c3b7cd3d89ca4b809802b',1,'ncine::Texture::init(const char *name, Format format, int mipMapCount, Vector2i size)'],['../classncine_1_1_texture.html#a7dc47c0df285dce0d8d3347b652b7471',1,'ncine::Texture::init(const char *name, Format format, int width, int height)'],['../classncine_1_1_texture.html#afe8dbe0927db87408b3e74e01c9dbde0',1,'ncine::Texture::init(const char *name, Format format, Vector2i size)']]], + ['initassetmanager_1999',['initAssetManager',['../classncine_1_1_asset_file.html#aa0f5a6c81cec0dbc4128558c4d894c1c',1,'ncine::AssetFile']]], + ['initcommon_2000',['initCommon',['../classncine_1_1_application.html#a1f5fb20bdd336ea540bfc72810a1cac3',1,'ncine::Application']]], + ['initglviewport_2001',['initGLViewport',['../classncine_1_1_i_gfx_device.html#a5a90a34f2228cfee1f3b3e8a976d882d',1,'ncine::IGfxDevice']]], + ['initwindowscaling_2002',['initWindowScaling',['../classncine_1_1_i_gfx_device.html#abc9077b2f6cbbbb3cb26e47e22b9a2a1',1,'ncine::IGfxDevice']]], + ['inlocalspace_2003',['inLocalSpace',['../classncine_1_1_particle_system.html#a1a3396e5fdf711c3a18be925f24b7fae',1,'ncine::ParticleSystem']]], + ['inputmanager_2004',['inputManager',['../classncine_1_1_application.html#aa3a8fd288f237be924bd4748c39e3bb8',1,'ncine::Application']]], + ['insert_2005',['insert',['../classnctl_1_1_static_hash_set.html#a9eadb54da77df85e0affc87cad0678a2',1,'nctl::StaticHashSet::insert(K &&key)'],['../classnctl_1_1_static_hash_set.html#a4ea1204baadc5bc89add710f6fa08d8f',1,'nctl::StaticHashSet::insert(const K &key)'],['../classnctl_1_1_static_hash_map.html#ae8d2cb9cb982f24f0a99d578dc27b581',1,'nctl::StaticHashMap::insert(const K &key, T &&value)'],['../classnctl_1_1_static_hash_map.html#ace28279a5e8dde0e6a906a520de8ae01',1,'nctl::StaticHashMap::insert(const K &key, const T &value)'],['../classnctl_1_1_static_array.html#a9ebd26b82f968cd2ee57ee9b708ee310',1,'nctl::StaticArray::insert(Iterator position, Iterator first, Iterator last)'],['../classnctl_1_1_static_array.html#aaf9877d2700f68d670d88dc877c71838',1,'nctl::StaticArray::insert(Iterator position, T &&value)'],['../classnctl_1_1_static_array.html#aca0319620f3b376a449e9eb8be4c6494',1,'nctl::StaticArray::insert(Iterator position, const T &value)'],['../classnctl_1_1_sparse_set.html#a31ef239eb9ab104cb8740d7b41e3998a',1,'nctl::SparseSet::insert()'],['../classnctl_1_1_list.html#aaf8398bc33bc058c87092e5de773afd5',1,'nctl::List::insert()'],['../classnctl_1_1_hash_set_list.html#acee499fca7e917f993794191934ca618',1,'nctl::HashSetList::insert()'],['../classnctl_1_1_hash_set.html#a2179976b3d0749ababcd7d43d6fc813a',1,'nctl::HashSet::insert()'],['../classnctl_1_1_hash_set_list.html#a76416c7105d7ea02f2770c6594c81287',1,'nctl::HashSetList::insert()'],['../classnctl_1_1_array.html#ac776bcded4b9c32961de10a3de6c9439',1,'nctl::Array::insert(Iterator position, const T &value)'],['../classnctl_1_1_array.html#a93376337bb06668fb1e67db6e124bc72',1,'nctl::Array::insert(Iterator position, T &&value)'],['../classnctl_1_1_array.html#a6674998ae5498e46727652d008cafaa6',1,'nctl::Array::insert(Iterator position, Iterator first, Iterator last)'],['../classnctl_1_1_hash_map.html#ac02a9aafe66a57c3143d624756d57129',1,'nctl::HashMap::insert(const K &key, const T &value)'],['../classnctl_1_1_hash_map.html#a4c857e978f592310ea10a861024267ee',1,'nctl::HashMap::insert(const K &key, T &&value)'],['../classnctl_1_1_hash_map_list.html#a97c2d40bb51699fa8df7eb8c231fbbff',1,'nctl::HashMapList::insert(const K &key, const T &value)'],['../classnctl_1_1_hash_map_list.html#ac71eada81faa2439fe395aa08a146972',1,'nctl::HashMapList::insert(const K &key, T &&value)'],['../classnctl_1_1_hash_set.html#a9ebb766a2bd2aaa46125074e9f426a03',1,'nctl::HashSet::insert()']]], + ['insertafter_2006',['insertAfter',['../classnctl_1_1_list.html#acc1c1597173fc4260297f8e0c863c366',1,'nctl::List::insertAfter(const Iterator position, const T &element)'],['../classnctl_1_1_list.html#aeeac6c30e57d8917c7cbfd881757a387',1,'nctl::List::insertAfter(const Iterator position, T &&element)']]], + ['insertat_2007',['insertAt',['../classnctl_1_1_array.html#a263995f83804b984984f7c9d6f8d7ad0',1,'nctl::Array::insertAt(unsigned int index, const T &element)'],['../classnctl_1_1_array.html#a8aa09ee105f291f5d9bb1f69cda7011a',1,'nctl::Array::insertAt(unsigned int index, T &&element)'],['../classnctl_1_1_static_array.html#a1f323c0ebd8ac4189007b66aa7bd6a8e',1,'nctl::StaticArray::insertAt(unsigned int index, const T &element)'],['../classnctl_1_1_static_array.html#a229740398fbff5db154d865f2965359c',1,'nctl::StaticArray::insertAt(unsigned int index, T &&element)']]], + ['insertbefore_2008',['insertBefore',['../classnctl_1_1_list.html#a7a59c96a5a607c98ac868fa8dd76d056',1,'nctl::List::insertBefore(const Iterator position, const T &element)'],['../classnctl_1_1_list.html#a01e74204c98a3ea31109cc9bedf419b1',1,'nctl::List::insertBefore(const Iterator position, T &&element)']]], + ['insertrange_2009',['insertRange',['../classnctl_1_1_array.html#aae5e239a8cc59a4036ceaa4bd212d629',1,'nctl::Array::insertRange()'],['../classnctl_1_1_static_array.html#a9f2ee3af76517937f9d7486be43ee9a4',1,'nctl::StaticArray::insertRange()']]], + ['int16frombe_2010',['int16FromBE',['../classncine_1_1_i_file.html#aaedc3d964be1c2b5d75a95625d848c67',1,'ncine::IFile']]], + ['int16fromle_2011',['int16FromLE',['../classncine_1_1_i_file.html#a1c99a4aa18154d0246414c4b14006e5d',1,'ncine::IFile']]], + ['int32frombe_2012',['int32FromBE',['../classncine_1_1_i_file.html#aaa1b206a4c67a931899b01a6835a47c8',1,'ncine::IFile']]], + ['int32fromle_2013',['int32FromLE',['../classncine_1_1_i_file.html#a63ff01ded0befcc32ca0fb442fa76ae5',1,'ncine::IFile']]], + ['int64frombe_2014',['int64FromBE',['../classncine_1_1_i_file.html#a0e8cd38350999d1020d79a102ba21251',1,'ncine::IFile']]], + ['int64fromle_2015',['int64FromLE',['../classncine_1_1_i_file.html#aa4567ddc468cf099bda2ccc4c54f1a77',1,'ncine::IFile']]], + ['integer_2016',['integer',['../classncine_1_1_random.html#a7a433912c16acd72f4378fd114335b6e',1,'ncine::Random::integer()'],['../classncine_1_1_random.html#ae56856206e34a2dda9e794f85ca75cd5',1,'ncine::Random::integer(uint32_t min, uint32_t max)']]], + ['internaldatapath_2017',['internalDataPath',['../classncine_1_1_android_application.html#a9eac28e5265e833b7873b614eb225873',1,'ncine::AndroidApplication']]], + ['intersect_2018',['intersect',['../classncine_1_1_rect.html#ac530cf5b31c443fb4002f384e1ac1c3a',1,'ncine::Rect']]], + ['interval_2019',['interval',['../classncine_1_1_application.html#a78f5fbcba85e930eec9afca0d46c3f12',1,'ncine::Application::interval()'],['../classncine_1_1_timer.html#a72f2bf8bb51f19d65643b559f33adc63',1,'ncine::Timer::interval()']]], + ['invertsize_2020',['invertSize',['../classncine_1_1_rect.html#aa08890e595fa34170fcc018d5a002680',1,'ncine::Rect']]], + ['isalive_2021',['isAlive',['../classncine_1_1_particle.html#a0efc5c4abcc11fa485185dd46e475a7e',1,'ncine::Particle']]], + ['isbinarycacheenabled_2022',['isBinaryCacheEnabled',['../classncine_1_1_shader.html#ac330bab35f2f081310f4f0af506d3a86',1,'ncine::Shader']]], + ['isblendingenabled_2023',['isBlendingEnabled',['../classncine_1_1_drawable_node.html#ac76cec1cd4129170351f73ab04f35be3',1,'ncine::DrawableNode']]], + ['isbuttonpressed_2024',['isButtonPressed',['../classncine_1_1_joystick_state.html#a6abdbd8c067a1a39a9ee281dc68534d1',1,'ncine::JoystickState::isButtonPressed()'],['../classncine_1_1_joy_mapped_state.html#a23396b43671f950ff3efa58adad8d62c',1,'ncine::JoyMappedState::isButtonPressed()']]], + ['ischromakeyenabled_2025',['isChromaKeyEnabled',['../classncine_1_1_texture.html#abfd62f8f3f97c7ae3fb5aac61bfb7155',1,'ncine::Texture']]], + ['iscompressed_2026',['isCompressed',['../classncine_1_1_texture.html#aabcb28c01fce30c55778b14ca6c538da',1,'ncine::Texture']]], + ['isdirectory_2027',['isDirectory',['../classncine_1_1_file_system.html#a466a8508223bbcbbd6701a5250e6c2e6',1,'ncine::FileSystem']]], + ['isdoublebuffered_2028',['isDoubleBuffered',['../classncine_1_1_display_mode.html#a0c66af1e370b9b9af2f6a983f19d5af7',1,'ncine::DisplayMode']]], + ['isdrawenabled_2029',['isDrawEnabled',['../classncine_1_1_scene_node.html#aa4ca5eed4f307212d7096a07930de747',1,'ncine::SceneNode']]], + ['isempty_2030',['isEmpty',['../classncine_1_1_i_indexer.html#ac217cd733bab6c69edd172a525d3547e',1,'ncine::IIndexer::isEmpty()'],['../classncine_1_1_null_indexer.html#a08aaa9597d007800a9f675c5b333c0ce',1,'ncine::NullIndexer::isEmpty()'],['../classnctl_1_1_array.html#ac7ce4aea5c02679411fcd388f04903e0',1,'nctl::Array::isEmpty()'],['../classnctl_1_1_hash_map.html#a806df70a5aae01387ff093b28ea3a5a4',1,'nctl::HashMap::isEmpty()'],['../classnctl_1_1_hash_map_list.html#a79fac86af1e887669abbfc3eb2eff478',1,'nctl::HashMapList::isEmpty()'],['../classnctl_1_1_hash_set.html#a0b41cfb9c0d56939ffa3158c027db7ab',1,'nctl::HashSet::isEmpty()'],['../classnctl_1_1_hash_set_list.html#a8ab3da9f7b6c7f2290aea19b9bf94ecf',1,'nctl::HashSetList::isEmpty()'],['../classnctl_1_1_list.html#aec6c9db80326bcfe7dd1a7e80765cabd',1,'nctl::List::isEmpty()'],['../classnctl_1_1_sparse_set.html#ae229e1fe0c9265812ef491af4b664445',1,'nctl::SparseSet::isEmpty()'],['../classnctl_1_1_static_array.html#a52fee637dc63a6d34a1004b056069f8f',1,'nctl::StaticArray::isEmpty()'],['../classnctl_1_1_static_hash_map.html#a60f66566aea45d9950cb8dbf8852dcf2',1,'nctl::StaticHashMap::isEmpty()'],['../classnctl_1_1_static_hash_set.html#a061cce5b9b85e70df5c575f54ae56c46',1,'nctl::StaticHashSet::isEmpty()'],['../classnctl_1_1_static_string.html#a64a22ec794c51f19ee62c39a4fe77f08',1,'nctl::StaticString::isEmpty()'],['../classnctl_1_1_string.html#aa18c6f01f4011fb0ba75a02629e40b9d',1,'nctl::String::isEmpty()']]], + ['isenabled_2031',['isEnabled',['../classncine_1_1_particle_affector.html#a678df7b8ecc396b714bdaa8574633dec',1,'ncine::ParticleAffector::isEnabled()'],['../classncine_1_1_scene_node.html#a0abbad7f091f4284052f591377e9500b',1,'ncine::SceneNode::isEnabled()']]], + ['isexecutable_2032',['isExecutable',['../classncine_1_1_file_system.html#a5e59a6fadf8aa8b9dfdd312d6f6b1757',1,'ncine::FileSystem']]], + ['isfile_2033',['isFile',['../classncine_1_1_file_system.html#a710556e619af80b76953989b891ba5b2',1,'ncine::FileSystem']]], + ['isflippedx_2034',['isFlippedX',['../classncine_1_1_base_sprite.html#ad039d3e64b3776f837fb5d9c54ae7ed0',1,'ncine::BaseSprite']]], + ['isflippedy_2035',['isFlippedY',['../classncine_1_1_base_sprite.html#a30829951e59a746e68c2fcf51e3420e2',1,'ncine::BaseSprite']]], + ['isfullscreen_2036',['isFullScreen',['../classncine_1_1_i_gfx_device.html#a113d366d601599227a06325e60cb8c50',1,'ncine::IGfxDevice']]], + ['ishidden_2037',['isHidden',['../classncine_1_1_file_system.html#a06883a34b9a130b27d1ccd15be165c28',1,'ncine::FileSystem']]], + ['isinitialized_2038',['isInitialized',['../classncine_1_1_android_application.html#af27f7759f658056c6c092236f2a59eee',1,'ncine::AndroidApplication']]], + ['isjoymapped_2039',['isJoyMapped',['../classncine_1_1_i_input_manager.html#a4d1019a4cee6a0e610950ab5fa0330a5',1,'ncine::IInputManager']]], + ['isjoypresent_2040',['isJoyPresent',['../classncine_1_1_i_input_manager.html#af815009d6471802191c4ad70f36e8644',1,'ncine::IInputManager']]], + ['iskeydown_2041',['isKeyDown',['../classncine_1_1_keyboard_state.html#a3eda05c6cf71f78a33713d1248fe4abd',1,'ncine::KeyboardState']]], + ['islinked_2042',['isLinked',['../classncine_1_1_shader.html#a914d91fe3eb59f930c0b0b7cef5e19cc',1,'ncine::Shader']]], + ['isloading_2043',['isLoading',['../classncine_1_1_emscripten_local_file.html#ae47727113518618e3273b3d7034ce9da',1,'ncine::EmscriptenLocalFile']]], + ['islooping_2044',['isLooping',['../classncine_1_1_i_audio_player.html#aa6a1d78eb7ec29752b4de66362ab8ae0',1,'ncine::IAudioPlayer']]], + ['isopened_2045',['isOpened',['../classncine_1_1_i_file.html#a4cab34176a3cc0041c9aa231ac5011a3',1,'ncine::IFile::isOpened()'],['../classncine_1_1_asset_file.html#a8d3ac8cf3dfb2fb683ec1f44e87d05b2',1,'ncine::AssetFile::isOpened()']]], + ['isparticlesupdateenabled_2046',['isParticlesUpdateEnabled',['../classncine_1_1_particle_system.html#a4c5f2d57c19ff3d2450ff3879bfd964e',1,'ncine::ParticleSystem']]], + ['ispaused_2047',['isPaused',['../classncine_1_1_animated_sprite.html#a9bb0dea5af30dc294f95488cfc44e240',1,'ncine::AnimatedSprite::isPaused()'],['../classncine_1_1_i_audio_player.html#a24ca2d1e00b8058a2a89f45096a36ff1',1,'ncine::IAudioPlayer::isPaused()'],['../classncine_1_1_rect_animation.html#a53e8c2d5035bd21f2acaaf7eff0ed25f',1,'ncine::RectAnimation::isPaused()']]], + ['isplaying_2048',['isPlaying',['../classncine_1_1_i_audio_player.html#aa72d47a58b02657f4039714c0ba008e1',1,'ncine::IAudioPlayer']]], + ['isreadable_2049',['isReadable',['../classncine_1_1_file_system.html#a152fe78adfba2b4909cd273c4c39a85e',1,'ncine::FileSystem']]], + ['isreadablefile_2050',['isReadableFile',['../classncine_1_1_file_system.html#a7b264782d198c51512c4c0a55da6f9aa',1,'ncine::FileSystem']]], + ['isresizable_2051',['isResizable',['../classncine_1_1_i_gfx_device.html#a12af58def1e90716c48dd03f441c8648',1,'ncine::IGfxDevice']]], + ['isrunning_2052',['isRunning',['../classncine_1_1_timer.html#a892451fc2e56e907db2dbd72e30527b8',1,'ncine::Timer']]], + ['issourcelocked_2053',['isSourceLocked',['../classncine_1_1_i_audio_player.html#aa64e36b442c37dd07145338c24674a30',1,'ncine::IAudioPlayer']]], + ['isstopped_2054',['isStopped',['../classncine_1_1_i_audio_player.html#a2536fa21b29f60f9edf099aa32d9c7f9',1,'ncine::IAudioPlayer']]], + ['issuspended_2055',['isSuspended',['../classncine_1_1_application.html#a858a81aad8b9722a3954b368f63b2793',1,'ncine::Application']]], + ['isupdateenabled_2056',['isUpdateEnabled',['../classncine_1_1_scene_node.html#a2cfeef2846c06165c3cae5861b7f05ca',1,'ncine::SceneNode']]], + ['iswritable_2057',['isWritable',['../classncine_1_1_file_system.html#a64b937fdff327db9cbd04a8117f7bff4',1,'ncine::FileSystem']]], + ['iswritablefile_2058',['isWritableFile',['../classncine_1_1_file_system.html#a835196f06b2fd86f0fff74db703ff1e3',1,'ncine::FileSystem']]], + ['iteratorcategory_2059',['IteratorCategory',['../structnctl_1_1_iterator_traits_3_01_string_iterator_3_01true_01_4_01_4.html#ad97775b1b207096dfc9e2399c38892c9',1,'nctl::IteratorTraits< StringIterator< true > >::IteratorCategory()'],['../structnctl_1_1_iterator_traits_3_01_string_iterator_3_01false_01_4_01_4.html#a194fce061f9be3a491972b8a68b24650',1,'nctl::IteratorTraits< StringIterator< false > >::IteratorCategory()'],['../structnctl_1_1_iterator_traits_3_01_static_hash_set_iterator_3_01_k_00_01_hash_func_00_01_capacity_01_4_01_4.html#a9cdf5037d403c005ce8c4c80e294dacb',1,'nctl::IteratorTraits< StaticHashSetIterator< K, HashFunc, Capacity > >::IteratorCategory()'],['../structnctl_1_1_iterator_traits_3_01_static_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01true_01_4_01_4.html#a08451fcf332e29a71ad751c8025eed40',1,'nctl::IteratorTraits< StaticHashMapIterator< K, T, HashFunc, Capacity, true > >::IteratorCategory()'],['../structnctl_1_1_iterator_traits_3_01_static_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01false_01_4_01_4.html#a7fadf8c799867e7fc1bfc0a52b87d649',1,'nctl::IteratorTraits< StaticHashMapIterator< K, T, HashFunc, Capacity, false > >::IteratorCategory()'],['../structnctl_1_1_iterator_traits_3_01_sparse_set_iterator_3_01_t_01_4_01_4.html#a39519c708a81a720249d6aced4425b74',1,'nctl::IteratorTraits< SparseSetIterator< T > >::IteratorCategory()'],['../structnctl_1_1_iterator_traits_3_01_reverse_iterator_3_01_iterator_01_4_01_4.html#ae68ed9a25cd00ac01c13165c69bf7be9',1,'nctl::IteratorTraits< ReverseIterator< Iterator > >::IteratorCategory()'],['../structnctl_1_1_iterator_traits_3_01_list_iterator_3_01_t_00_01true_01_4_01_4.html#ab182241cd9fd51073ffc43b5f5b1bf51',1,'nctl::IteratorTraits< ListIterator< T, true > >::IteratorCategory()'],['../structnctl_1_1_iterator_traits_3_01_list_iterator_3_01_t_00_01false_01_4_01_4.html#a158ef5d64904fa14bd265ad4483859cb',1,'nctl::IteratorTraits< ListIterator< T, false > >::IteratorCategory()'],['../structnctl_1_1_iterator_traits_3_01_hash_set_list_iterator_3_01_k_00_01_hash_func_01_4_01_4.html#a106031b92d4fb2e041721f5ff96e9fd3',1,'nctl::IteratorTraits< HashSetListIterator< K, HashFunc > >::IteratorCategory()'],['../structnctl_1_1_iterator_traits_3_01_hash_set_iterator_3_01_k_00_01_hash_func_01_4_01_4.html#a5ad6d9721894290c253ea2c4704ea997',1,'nctl::IteratorTraits< HashSetIterator< K, HashFunc > >::IteratorCategory()'],['../structnctl_1_1_iterator_traits_3_01_hash_map_list_iterator_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4_01_4.html#a182cd08588f6e56404732d24b355485c',1,'nctl::IteratorTraits< HashMapListIterator< K, T, HashFunc, true > >::IteratorCategory()'],['../structnctl_1_1_iterator_traits_3_01_hash_map_list_iterator_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4_01_4.html#a750ef2550554cfc2b0177bb96cdc653c',1,'nctl::IteratorTraits< HashMapListIterator< K, T, HashFunc, false > >::IteratorCategory()'],['../structnctl_1_1_iterator_traits_3_01_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4_01_4.html#aceb2449623728a09b54d92168490c9d5',1,'nctl::IteratorTraits< HashMapIterator< K, T, HashFunc, true > >::IteratorCategory()'],['../structnctl_1_1_iterator_traits_3_01_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4_01_4.html#a3c33d26a029613d5acaf3a649482ab3e',1,'nctl::IteratorTraits< HashMapIterator< K, T, HashFunc, false > >::IteratorCategory()'],['../structnctl_1_1_iterator_traits_3_01_array_iterator_3_01_t_00_01true_01_4_01_4.html#af6f799457e119e2cc457e0188ac35ae7',1,'nctl::IteratorTraits< ArrayIterator< T, true > >::IteratorCategory()'],['../structnctl_1_1_iterator_traits_3_01_array_iterator_3_01_t_00_01false_01_4_01_4.html#ade735a5985113bb23ce58382ba59c75b',1,'nctl::IteratorTraits< ArrayIterator< T, false > >::IteratorCategory()']]] +]; diff --git a/master/search/functions_9.html b/master/search/functions_9.html new file mode 100644 index 0000000000..9a8e4290c9 --- /dev/null +++ b/master/search/functions_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/functions_9.js b/master/search/functions_9.js new file mode 100644 index 0000000000..88115bcb5e --- /dev/null +++ b/master/search/functions_9.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['joinpath_2060',['joinPath',['../classncine_1_1_file_system.html#ab32d9a3b3827adc51e2d685841f327b2',1,'ncine::FileSystem']]], + ['joyguid_2061',['joyGuid',['../classncine_1_1_i_input_manager.html#a96b29264d20c8241e5957aa2b6a11cba',1,'ncine::IInputManager']]], + ['joymappedstate_2062',['joyMappedState',['../classncine_1_1_i_input_manager.html#af7a960ab809a00ccda2a32c15f6e79a9',1,'ncine::IInputManager']]], + ['joyname_2063',['joyName',['../classncine_1_1_i_input_manager.html#a3639e3e69d05fd4c730b91a5dcf72b99',1,'ncine::IInputManager']]], + ['joynumaxes_2064',['joyNumAxes',['../classncine_1_1_i_input_manager.html#ab9a1685ce4c6324e2b0d860dd93e3de5',1,'ncine::IInputManager']]], + ['joynumbuttons_2065',['joyNumButtons',['../classncine_1_1_i_input_manager.html#add8e9b1b1b9808984d39302bf71e5ae0',1,'ncine::IInputManager']]], + ['joynumhats_2066',['joyNumHats',['../classncine_1_1_i_input_manager.html#a3e142e8fed57d833a6e51c14a570589e',1,'ncine::IInputManager']]], + ['joystickstate_2067',['joystickState',['../classncine_1_1_i_input_manager.html#aab23fb7a9a5e1b4679fc676dc370d456',1,'ncine::IInputManager']]] +]; diff --git a/master/search/functions_a.html b/master/search/functions_a.html new file mode 100644 index 0000000000..5ecc152cab --- /dev/null +++ b/master/search/functions_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/functions_a.js b/master/search/functions_a.js new file mode 100644 index 0000000000..16f199b9a7 --- /dev/null +++ b/master/search/functions_a.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['key_2068',['key',['../classnctl_1_1_hash_map_iterator.html#a68bfa634653dbf5787f5a4a803330cec',1,'nctl::HashMapIterator::key()'],['../classnctl_1_1_hash_map_list_iterator.html#a7d337f4b66ad9acafc7d4abc4d6e5bb8',1,'nctl::HashMapListIterator::key()'],['../classnctl_1_1_hash_set_iterator.html#ac9c67353ffb017716581b4bc9c72b843',1,'nctl::HashSetIterator::key()'],['../classnctl_1_1_hash_set_list_iterator.html#a749447c4c76e2ecded8c48e05a2d613c',1,'nctl::HashSetListIterator::key()'],['../classnctl_1_1_static_hash_map_iterator.html#a47edebb327722b2d3bb05081e7825162',1,'nctl::StaticHashMapIterator::key()'],['../classnctl_1_1_static_hash_set_iterator.html#ac431cfc3fe4c2ba2750400821d2ba303',1,'nctl::StaticHashSetIterator::key()']]], + ['keyboardstate_2069',['keyboardState',['../classncine_1_1_i_input_manager.html#a8032712466e86636c83d0c9c0a6aabba',1,'ncine::IInputManager']]], + ['killparticles_2070',['killParticles',['../classncine_1_1_particle_system.html#a55ac85c6021820e95bd9dd031e62beba',1,'ncine::ParticleSystem']]] +]; diff --git a/master/search/functions_b.html b/master/search/functions_b.html new file mode 100644 index 0000000000..e301fedd7d --- /dev/null +++ b/master/search/functions_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/functions_b.js b/master/search/functions_b.js new file mode 100644 index 0000000000..cf2d352430 --- /dev/null +++ b/master/search/functions_b.js @@ -0,0 +1,34 @@ +var searchData= +[ + ['lastaccesstime_2071',['lastAccessTime',['../classncine_1_1_file_system.html#aec601291f187c183bf77f70386286628',1,'ncine::FileSystem']]], + ['lastframecleared_2072',['lastFrameCleared',['../classncine_1_1_viewport.html#a685888393029454f2195651eac4a647e',1,'ncine::Viewport']]], + ['lastframeduration_2073',['lastFrameDuration',['../classncine_1_1_i_frame_timer.html#afadae338d63fb9e760a6de6ac0e4f09f',1,'ncine::IFrameTimer']]], + ['lastframerendered_2074',['lastFrameRendered',['../classncine_1_1_drawable_node.html#a3490f723d0db0142981cd5eec81ab08b',1,'ncine::DrawableNode']]], + ['lastframeupdated_2075',['lastFrameUpdated',['../classncine_1_1_scene_node.html#a9bee02d74ef193819c26bcd10ad133d3',1,'ncine::SceneNode']]], + ['lastmodificationtime_2076',['lastModificationTime',['../classncine_1_1_file_system.html#a5729408da2c57d7d565af956c8df2de1',1,'ncine::FileSystem']]], + ['layer_2077',['layer',['../classncine_1_1_scene_node.html#ab879f89a482853a93c194d47d92f67e6',1,'ncine::SceneNode']]], + ['length_2078',['length',['../classncine_1_1_asset_file.html#ade0de822f56800c9fe0c8979f72d63ef',1,'ncine::AssetFile::length()'],['../classnctl_1_1_static_string.html#a33918c34f282a4cf9e72e5cf891e52f8',1,'nctl::StaticString::length()'],['../classnctl_1_1_string.html#a8e48b62c55433de8d1d9dd4b1411f1c8',1,'nctl::String::length()']]], + ['lineheight_2079',['lineHeight',['../classncine_1_1_font.html#a1a4ba512d90f6c4e1ecd0d9e62f00bee',1,'ncine::Font::lineHeight()'],['../classncine_1_1_text_node.html#a4f7edb887d25a20dacf6aa6d5e4586bc',1,'ncine::TextNode::lineHeight()']]], + ['list_2080',['List',['../classnctl_1_1_list.html#ad465ed85633cd8b9dee09a698f42d2e2',1,'nctl::List::List(const List &other)'],['../classnctl_1_1_list.html#a4857bc216e9b8868fe61a41158014375',1,'nctl::List::List(List &&other)']]], + ['listiterator_2081',['ListIterator',['../classnctl_1_1_list_iterator.html#a4b521d4d5e2fe03600019d1150d17ea4',1,'nctl::ListIterator']]], + ['load_2082',['load',['../classncine_1_1_emscripten_local_file.html#a7e1c7022e4b9179b30eecdb1dd3e13bc',1,'ncine::EmscriptenLocalFile::load()'],['../classncine_1_1_emscripten_local_file.html#aac9ef3121584600d5e54657b9f533731',1,'ncine::EmscriptenLocalFile::load(const char *fileFilter)']]], + ['loadfactor_2083',['loadFactor',['../classnctl_1_1_hash_map.html#ae652e68229ac9712f840677f52fcbe9c',1,'nctl::HashMap::loadFactor()'],['../classnctl_1_1_hash_map_list.html#a507d4702f3387a59a97b53a5c444b723',1,'nctl::HashMapList::loadFactor()'],['../classnctl_1_1_hash_set.html#a10e768f01c79929911dea2c0f8f017ef',1,'nctl::HashSet::loadFactor()'],['../classnctl_1_1_hash_set_list.html#ac0daf550b6304aae5da259cd07e9c1a4',1,'nctl::HashSetList::loadFactor()'],['../classnctl_1_1_sparse_set.html#a5188ef4cb339042d9f883f1593e080b2',1,'nctl::SparseSet::loadFactor()'],['../classnctl_1_1_static_hash_map.html#a5e98f023f87611e0f1c6b7241990fc2a',1,'nctl::StaticHashMap::loadFactor()'],['../classnctl_1_1_static_hash_set.html#a749810d1e75634b88dacd671969e9746',1,'nctl::StaticHashSet::loadFactor()']]], + ['loadfromfile_2084',['loadFromFile',['../classncine_1_1_lua_state_manager.html#afda53f37e64f08214b1df50af4619917',1,'ncine::LuaStateManager::loadFromFile(const char *filename, const char *chunkName, nctl::String *errorMsg, int *status)'],['../classncine_1_1_lua_state_manager.html#a50ebc4140706af75ba8b1fbbd7a58d21',1,'ncine::LuaStateManager::loadFromFile(const char *filename, const char *chunkName, nctl::String *errorMsg)'],['../classncine_1_1_lua_state_manager.html#aa051bfadc13a3413e779d1cdde70ded8',1,'ncine::LuaStateManager::loadFromFile(const char *filename, const char *chunkName)'],['../classncine_1_1_lua_state_manager.html#ac5c64ac657216e321c1d2660c912fb76',1,'ncine::LuaStateManager::loadFromFile(const char *filename)']]], + ['loadfrommemory_2085',['loadFromMemory',['../classncine_1_1_lua_state_manager.html#a2751753e5782f57c852f1b48699bc9a8',1,'ncine::LuaStateManager::loadFromMemory()'],['../classncine_1_1_texture.html#a8934e86c2e6f3d6155b040eec61bd62c',1,'ncine::Texture::loadFromMemory()'],['../classncine_1_1_lua_state_manager.html#a2542405805b4a8a82c014a2c05200e55',1,'ncine::LuaStateManager::loadFromMemory(const char *bufferName, const char *bufferPtr, unsigned long int bufferSize, nctl::String *errorMsg)'],['../classncine_1_1_lua_state_manager.html#a0180da45f86f077322f66fe7f49a7fc2',1,'ncine::LuaStateManager::loadFromMemory(const char *bufferName, const char *bufferPtr, unsigned long int bufferSize)']]], + ['loadfromsamples_2086',['loadFromSamples',['../classncine_1_1_audio_buffer.html#a489a021009773f726f554dd0f0473720',1,'ncine::AudioBuffer']]], + ['loadfromtexels_2087',['loadFromTexels',['../classncine_1_1_texture.html#abc08e4cc091e15753010f174f591376a',1,'ncine::Texture::loadFromTexels(const unsigned char *bufferPtr)'],['../classncine_1_1_texture.html#ab415b269ed15b376f38d7763faaf31fc',1,'ncine::Texture::loadFromTexels(const unsigned char *bufferPtr, unsigned int x, unsigned int y, unsigned int width, unsigned int height)'],['../classncine_1_1_texture.html#ab840e22a889e6fbc3ce7bba61511ab37',1,'ncine::Texture::loadFromTexels(const unsigned char *bufferPtr, Recti region)'],['../classncine_1_1_texture.html#a584bae16bc623c5d04a99222cf1223f1',1,'ncine::Texture::loadFromTexels(const unsigned char *bufferPtr, unsigned int level, unsigned int x, unsigned int y, unsigned int width, unsigned int height)'],['../classncine_1_1_texture.html#ae6b536a31273f431e854fb3d8832b5e7',1,'ncine::Texture::loadFromTexels(const unsigned char *bufferPtr, unsigned int level, Recti region)']]], + ['loadpreset_2088',['loadPreset',['../structncine_1_1_audio_effect_properties_1_1_eax_reverb_properties.html#a7af97b2d1b007f660ca072c20a2b6e87',1,'ncine::AudioEffectProperties::EaxReverbProperties']]], + ['localmatrix_2089',['localMatrix',['../classncine_1_1_scene_node.html#a7782bc01608769bb80b165adeff0b14c',1,'ncine::SceneNode']]], + ['logger_2090',['logger',['../classncine_1_1_service_locator.html#a7ccf5b3811c30c464618a73607c7b714',1,'ncine::ServiceLocator']]], + ['loggingenabled_2091',['loggingEnabled',['../classncine_1_1_i_frame_timer.html#a574fd6152b9a7866a2a02901c783898d',1,'ncine::IFrameTimer']]], + ['logginginterval_2092',['loggingInterval',['../classncine_1_1_i_frame_timer.html#a0c0791eea2a944b7d73f3a024369d6a8',1,'ncine::IFrameTimer']]], + ['logicaldrives_2093',['logicalDrives',['../classncine_1_1_file_system.html#a7b04d260d06f807d97d1fa1f405efaee',1,'ncine::FileSystem']]], + ['logicaldrivestrings_2094',['logicalDriveStrings',['../classncine_1_1_file_system.html#aad1083a4ccebd75e638e0cde61210e1b',1,'ncine::FileSystem']]], + ['loglevel_2095',['logLevel',['../classncine_1_1_i_frame_timer.html#aea0a8b92aaeca700cde48bbb58c23d2d',1,'ncine::IFrameTimer']]], + ['logonerrors_2096',['logOnErrors',['../classncine_1_1_shader.html#a64a1c05f4ad6382aaf799ce9526db78b',1,'ncine::Shader']]], + ['logreport_2097',['logReport',['../classncine_1_1_i_indexer.html#ab032ad9e82b181d6180b5d14f509b54d',1,'ncine::IIndexer::logReport()'],['../classncine_1_1_null_indexer.html#a9702af27861fa2f73a1731a77948daf2',1,'ncine::NullIndexer::logReport()']]], + ['logstring_2098',['logString',['../classncine_1_1_i_logger.html#adf0af00c8adc4edc5085f4ab196264d1',1,'ncine::ILogger::logString()'],['../classncine_1_1_null_logger.html#a6befc973614d888714378a9507b25f3a',1,'ncine::NullLogger::logString()']]], + ['logstringcapacity_2099',['logStringCapacity',['../classncine_1_1_i_logger.html#af26187169fc04cbb31b5e583ea04bd6e',1,'ncine::ILogger::logStringCapacity()'],['../classncine_1_1_null_logger.html#a201ffb67be11af63fed1a72a6cf9b7a1',1,'ncine::NullLogger::logStringCapacity()']]], + ['logstringlength_2100',['logStringLength',['../classncine_1_1_i_logger.html#a2da411fa43fdbdeead6744711f61a946',1,'ncine::ILogger::logStringLength()'],['../classncine_1_1_null_logger.html#aea731eeb416278e4d5b6ca8b0425c8f0',1,'ncine::NullLogger::logStringLength()']]], + ['loopmode_2101',['loopMode',['../classncine_1_1_rect_animation.html#ac1d8d6102a458afd2e1deea67f6a9e85',1,'ncine::RectAnimation']]] +]; diff --git a/master/search/functions_c.html b/master/search/functions_c.html new file mode 100644 index 0000000000..c4f3268770 --- /dev/null +++ b/master/search/functions_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/functions_c.js b/master/search/functions_c.js new file mode 100644 index 0000000000..516c2d003e --- /dev/null +++ b/master/search/functions_c.js @@ -0,0 +1,52 @@ +var searchData= +[ + ['magfiltering_2102',['magFiltering',['../classncine_1_1_texture.html#ac34a4712d26c313a4522999bb6fc3c58',1,'ncine::Texture']]], + ['makecurrent_2103',['makeCurrent',['../classncine_1_1_qt5_widget.html#acd43bc94d3f87147e8da613cb002a42d',1,'ncine::Qt5Widget']]], + ['max_2104',['max',['../classncine_1_1_rect.html#a90e60efdceba4a9d8df03cb16aad7dff',1,'ncine::Rect']]], + ['maxautowahproperties_2105',['maxAutoWahProperties',['../classncine_1_1_audio_effect_properties.html#a91d911104fc5f00ce26b672b24c9b03d',1,'ncine::AudioEffectProperties']]], + ['maxchorusproperties_2106',['maxChorusProperties',['../classncine_1_1_audio_effect_properties.html#a0c05eb62a099571e14470baa8f5f9ae0',1,'ncine::AudioEffectProperties']]], + ['maxcompressorproperties_2107',['maxCompressorProperties',['../classncine_1_1_audio_effect_properties.html#afa5b345df0c09d9a19fd2f7654c45399',1,'ncine::AudioEffectProperties']]], + ['maxdistortionproperties_2108',['maxDistortionProperties',['../classncine_1_1_audio_effect_properties.html#af898c692f8799f3c5be5957f75bc285b',1,'ncine::AudioEffectProperties']]], + ['maxeaxreverbproperties_2109',['maxEaxReverbProperties',['../classncine_1_1_audio_effect_properties.html#ad0ac66b61640d6886e5e533a3ad8b045',1,'ncine::AudioEffectProperties']]], + ['maxechoproperties_2110',['maxEchoProperties',['../classncine_1_1_audio_effect_properties.html#ac038ea6b7557f1993a330a10e6fa9f7c',1,'ncine::AudioEffectProperties']]], + ['maxequalizerproperties_2111',['maxEqualizerProperties',['../classncine_1_1_audio_effect_properties.html#abb32b839f8e3e3492b0e9d02b3bcf1cd',1,'ncine::AudioEffectProperties']]], + ['maxflangerproperties_2112',['maxFlangerProperties',['../classncine_1_1_audio_effect_properties.html#a146bdeecc5d2bb07f8bfc1fa699ff4e3',1,'ncine::AudioEffectProperties']]], + ['maxfrequencyshifterproperties_2113',['maxFrequencyShifterProperties',['../classncine_1_1_audio_effect_properties.html#abd0e168851ee47ea0550ab58cdb2a010',1,'ncine::AudioEffectProperties']]], + ['maxnumsources_2114',['maxNumSources',['../classncine_1_1_i_audio_device.html#af9b9bd75d187e2568ee44e569a768c41',1,'ncine::IAudioDevice::maxNumSources()'],['../classncine_1_1_null_audio_device.html#a43b18bc5a088af40fe42fb63f05d131d',1,'ncine::NullAudioDevice::maxNumSources()']]], + ['maxpitchshifterproperties_2115',['maxPitchShifterProperties',['../classncine_1_1_audio_effect_properties.html#a391e28860a77d5ba191ac754e6ba1979',1,'ncine::AudioEffectProperties']]], + ['maxreverbproperties_2116',['maxReverbProperties',['../classncine_1_1_audio_effect_properties.html#ac5bb2e5af572a47483b6c883a967ff90',1,'ncine::AudioEffectProperties']]], + ['maxringmodulatorproperties_2117',['maxRingModulatorProperties',['../classncine_1_1_audio_effect_properties.html#a4197fc3b66582af5850712f28da9da52',1,'ncine::AudioEffectProperties']]], + ['maxvalue_2118',['maxValue',['../classnctl_1_1_sparse_set.html#a8684072054db35eeab4b491314cd2cbe',1,'nctl::SparseSet']]], + ['maxvocalmorpherproperties_2119',['maxVocalMorpherProperties',['../classncine_1_1_audio_effect_properties.html#a5f5580aab341a12ffed082f744334cf9',1,'ncine::AudioEffectProperties']]], + ['meshsprite_2120',['MeshSprite',['../classncine_1_1_mesh_sprite.html#a6b2832af8975e85303edddfdd4f817f5',1,'ncine::MeshSprite::MeshSprite()'],['../classncine_1_1_mesh_sprite.html#a2e95f8b2f92103d32f628c86fb894294',1,'ncine::MeshSprite::MeshSprite(SceneNode *parent, Texture *texture)'],['../classncine_1_1_mesh_sprite.html#a722dfc085e4343f07d0863fa75d1446c',1,'ncine::MeshSprite::MeshSprite(Texture *texture)'],['../classncine_1_1_mesh_sprite.html#a5b38d8d1f99f0b199b6b24b7d012efd2',1,'ncine::MeshSprite::MeshSprite(SceneNode *parent, Texture *texture, float xx, float yy)'],['../classncine_1_1_mesh_sprite.html#ad3a075172d3750aa8db70f261ea335d6',1,'ncine::MeshSprite::MeshSprite(SceneNode *parent, Texture *texture, const Vector2f &position)'],['../classncine_1_1_mesh_sprite.html#ae48c8398ced013b82be2888524ff1e7b',1,'ncine::MeshSprite::MeshSprite(Texture *texture, float xx, float yy)'],['../classncine_1_1_mesh_sprite.html#a0d133c5fb0312230f7319baa5c267935',1,'ncine::MeshSprite::MeshSprite(Texture *texture, const Vector2f &position)'],['../classncine_1_1_mesh_sprite.html#aa41b5c30a7f4d3ac706414015ae85f89',1,'ncine::MeshSprite::MeshSprite(MeshSprite &&)=default'],['../classncine_1_1_mesh_sprite.html#a44efa59199aa0d3b09db9b8eb25f3169',1,'ncine::MeshSprite::MeshSprite(const MeshSprite &other)']]], + ['microseconds_2121',['microseconds',['../classncine_1_1_time_stamp.html#a495baff2dad370eb3c74ee4ded26bc3e',1,'ncine::TimeStamp']]], + ['microsecondsdouble_2122',['microsecondsDouble',['../classncine_1_1_time_stamp.html#af4a776b54c11db52bf8da46c29a9b8d8',1,'ncine::TimeStamp']]], + ['microsecondsdoublesince_2123',['microsecondsDoubleSince',['../classncine_1_1_time_stamp.html#ac062955e73286f411aff283409a3cc9a',1,'ncine::TimeStamp']]], + ['microsecondssince_2124',['microsecondsSince',['../classncine_1_1_time_stamp.html#a2f6cfdedab184f8e4531bf2fbc49c75d',1,'ncine::TimeStamp']]], + ['milliseconds_2125',['milliseconds',['../classncine_1_1_time_stamp.html#a422c8e4f616e067814e3e084226dd16e',1,'ncine::TimeStamp']]], + ['millisecondsdouble_2126',['millisecondsDouble',['../classncine_1_1_time_stamp.html#a38169e5bf2a89ac9dfeac5f57088bc59',1,'ncine::TimeStamp']]], + ['millisecondsdoublesince_2127',['millisecondsDoubleSince',['../classncine_1_1_time_stamp.html#a82b0991ea80a3ad63edc95a5052e4906',1,'ncine::TimeStamp']]], + ['millisecondssince_2128',['millisecondsSince',['../classncine_1_1_time_stamp.html#a866ee3d7b1334e0fa8d030bb6036cd5d',1,'ncine::TimeStamp']]], + ['min_2129',['min',['../classncine_1_1_rect.html#af5022198bf92cf31d9f8245eaeb5dba9',1,'ncine::Rect']]], + ['minautowahproperties_2130',['minAutoWahProperties',['../classncine_1_1_audio_effect_properties.html#a23df671c5219abb0db3d2fa202935845',1,'ncine::AudioEffectProperties']]], + ['minchorusproperties_2131',['minChorusProperties',['../classncine_1_1_audio_effect_properties.html#a0e6b233618d982cb03a02d41247ab436',1,'ncine::AudioEffectProperties']]], + ['mincompressorproperties_2132',['minCompressorProperties',['../classncine_1_1_audio_effect_properties.html#a1df7a8e5550821e771b3e2e7f5b7e627',1,'ncine::AudioEffectProperties']]], + ['mindistortionproperties_2133',['minDistortionProperties',['../classncine_1_1_audio_effect_properties.html#ab76d87493c459701771365cae5dd1561',1,'ncine::AudioEffectProperties']]], + ['mineaxreverbproperties_2134',['minEaxReverbProperties',['../classncine_1_1_audio_effect_properties.html#a0817bf6079be53e79d9dd3f4578f63de',1,'ncine::AudioEffectProperties']]], + ['minechoproperties_2135',['minEchoProperties',['../classncine_1_1_audio_effect_properties.html#a7ab80e6d38005bdb60699ad7635f5b47',1,'ncine::AudioEffectProperties']]], + ['minequalizerproperties_2136',['minEqualizerProperties',['../classncine_1_1_audio_effect_properties.html#a49508f382308cca8d2a7c0435a784b7e',1,'ncine::AudioEffectProperties']]], + ['minfiltering_2137',['minFiltering',['../classncine_1_1_texture.html#ab4b855c629465fee7fa05cb65b26fe24',1,'ncine::Texture']]], + ['minflangerproperties_2138',['minFlangerProperties',['../classncine_1_1_audio_effect_properties.html#a81f27fc4197e55f79ac70adcc7bf29e8',1,'ncine::AudioEffectProperties']]], + ['minfrequencyshifterproperties_2139',['minFrequencyShifterProperties',['../classncine_1_1_audio_effect_properties.html#a898d010d17c7ce07a6fb14115f8aedd6',1,'ncine::AudioEffectProperties']]], + ['minpitchshifterproperties_2140',['minPitchShifterProperties',['../classncine_1_1_audio_effect_properties.html#a38a3c283c82ee51e036e5c3e4e0680fd',1,'ncine::AudioEffectProperties']]], + ['minreverbproperties_2141',['minReverbProperties',['../classncine_1_1_audio_effect_properties.html#ad5351de2ce15ca918fd5e63706ff4feb',1,'ncine::AudioEffectProperties']]], + ['minringmodulatorproperties_2142',['minRingModulatorProperties',['../classncine_1_1_audio_effect_properties.html#a37869c8e1e456e625dec0b0918e03af3',1,'ncine::AudioEffectProperties']]], + ['minvocalmorpherproperties_2143',['minVocalMorpherProperties',['../classncine_1_1_audio_effect_properties.html#a9d643e25800f479e5863372c35da3041',1,'ncine::AudioEffectProperties']]], + ['mipmaplevels_2144',['mipMapLevels',['../classncine_1_1_texture.html#af10e4979310a4b34d55b1584966f5f2f',1,'ncine::Texture']]], + ['monitor_2145',['monitor',['../classncine_1_1_i_gfx_device.html#a2c781bc25c4fa4b26f8a75e71c66d479',1,'ncine::IGfxDevice::monitor(unsigned int index) const'],['../classncine_1_1_i_gfx_device.html#aa9b525a77544370e6ff3ea51d2e35dc6',1,'ncine::IGfxDevice::monitor() const']]], + ['mousecursormode_2146',['mouseCursorMode',['../classncine_1_1_i_input_manager.html#a6920ee6c7f8d7a10a086b3d3cc66c85d',1,'ncine::IInputManager']]], + ['mousestate_2147',['mouseState',['../classncine_1_1_i_input_manager.html#a2bd35d6b9e8a37f83de8caffe3ed99c2',1,'ncine::IInputManager']]], + ['move_2148',['move',['../classncine_1_1_scene_node.html#aac5dfb16e5de8ab04015622eec0df2b9',1,'ncine::SceneNode::move(float x, float y)'],['../classncine_1_1_scene_node.html#a4bd99e4f2ccd8f01559ad65b33a309b2',1,'ncine::SceneNode::move(const Vector2f &position)']]], + ['movex_2149',['moveX',['../classncine_1_1_scene_node.html#ab59f1b6fe560003926d2709ca81db760',1,'ncine::SceneNode']]], + ['movey_2150',['moveY',['../classncine_1_1_scene_node.html#a138eec3febd30e2737b8cebcac2807f0',1,'ncine::SceneNode']]] +]; diff --git a/master/search/functions_d.html b/master/search/functions_d.html new file mode 100644 index 0000000000..7a1ed065d7 --- /dev/null +++ b/master/search/functions_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/functions_d.js b/master/search/functions_d.js new file mode 100644 index 0000000000..ff6c7ec049 --- /dev/null +++ b/master/search/functions_d.js @@ -0,0 +1,30 @@ +var searchData= +[ + ['name_2151',['name',['../classncine_1_1_null_audio_device.html#a7241904398b15b8f36c8293f011139c7',1,'ncine::NullAudioDevice::name()'],['../classncine_1_1_object.html#aa00d5267eb694e6bba3d6bdb6cc523cf',1,'ncine::Object::name()'],['../classnctl_1_1_i_allocator.html#a9b3300cfe18e83f6fe055f3ffe04a098',1,'nctl::IAllocator::name()'],['../classncine_1_1_i_audio_device.html#a5c3b9c32ca4f5a726a39d987a34facf6',1,'ncine::IAudioDevice::name()']]], + ['nanoseconds_2152',['nanoseconds',['../classncine_1_1_time_stamp.html#aa7c17d757054ddb712d4ae1835b76f03',1,'ncine::TimeStamp']]], + ['nanosecondsdouble_2153',['nanosecondsDouble',['../classncine_1_1_time_stamp.html#a8e572cc9d9f1bf5ee5357b367c99f16c',1,'ncine::TimeStamp']]], + ['nanosecondsdoublesince_2154',['nanosecondsDoubleSince',['../classncine_1_1_time_stamp.html#a52a2dc6428ff9e73d555472cc045c343',1,'ncine::TimeStamp']]], + ['nanosecondssince_2155',['nanosecondsSince',['../classncine_1_1_time_stamp.html#a10840fc434484a0637390f4ebe803485',1,'ncine::TimeStamp']]], + ['node_2156',['node',['../classnctl_1_1_static_hash_map_iterator.html#ac7c21f6937dccb2bbb416cfa45f12a6b',1,'nctl::StaticHashMapIterator::node()'],['../classnctl_1_1_hash_set_list_iterator.html#a94a9c4e8cd275f6a879159a80f843a92',1,'nctl::HashSetListIterator::node()'],['../classnctl_1_1_hash_map_list_iterator.html#a00683614a6596cb1b57a3428180f20a7',1,'nctl::HashMapListIterator::node()'],['../classnctl_1_1_hash_map_iterator.html#aa0c2a5d388fea4b1add4ea1b0afbc861',1,'nctl::HashMapIterator::node()'],['../classncine_1_1_shader_state.html#a93cf6c7256baa036f7e2b5c93a731490',1,'ncine::ShaderState::node()']]], + ['none_2157',['none',['../classnctl_1_1_bit_set.html#a57300e339f6cf41d2a8e674e2fd8f3f9',1,'nctl::BitSet']]], + ['now_2158',['now',['../classncine_1_1_time_stamp.html#a2b357a6c3219359affa5884b27e2c01f',1,'ncine::TimeStamp']]], + ['numaliveparticles_2159',['numAliveParticles',['../classncine_1_1_particle_system.html#a2e8a81c6926ce634d28c5e4e4a1bdc4f',1,'ncine::ParticleSystem']]], + ['numallocations_2160',['numAllocations',['../classnctl_1_1_i_allocator.html#a65367665976ad51973125b6382fe864a',1,'nctl::IAllocator']]], + ['numanimations_2161',['numAnimations',['../classncine_1_1_animated_sprite.html#a5d0b9cd751309590dcbf38c46423e3bb',1,'ncine::AnimatedSprite']]], + ['numavailablesources_2162',['numAvailableSources',['../classncine_1_1_i_audio_device.html#a686227b6fd701ef3a567fd4b4357da36',1,'ncine::IAudioDevice::numAvailableSources()'],['../classncine_1_1_null_audio_device.html#a8862cfb1097743f8111b319dc7686157',1,'ncine::NullAudioDevice::numAvailableSources()']]], + ['numbytes_2163',['numBytes',['../classncine_1_1_mesh_sprite.html#a0f867309f1b7cd18141961de469c1dd4',1,'ncine::MeshSprite']]], + ['numchannels_2164',['numChannels',['../classncine_1_1_texture.html#ac34794cd179aa374b2b02d1fe759f8b9',1,'ncine::Texture::numChannels()'],['../classncine_1_1_i_audio_player.html#af05964e822fa81e8a74a057eb558e87b',1,'ncine::IAudioPlayer::numChannels()'],['../classncine_1_1_audio_stream_player.html#aaaad7e19779f4201a3d29ef299bd77ff',1,'ncine::AudioStreamPlayer::numChannels()'],['../classncine_1_1_audio_buffer_player.html#a7d1ab58e49f103cd45ab1a5c5ab298fd',1,'ncine::AudioBufferPlayer::numChannels()'],['../classncine_1_1_audio_buffer.html#a12163c609170d3a52d5f77d14c90ff01',1,'ncine::AudioBuffer::numChannels()'],['../classncine_1_1_audio_stream.html#af32381f949dd9e7ab20626a7a128b5ca',1,'ncine::AudioStream::numChannels()']]], + ['numcolorattachments_2165',['numColorAttachments',['../classncine_1_1_viewport.html#a350794f4d98c7163bc7d394bc08eb30a',1,'ncine::Viewport']]], + ['numframes_2166',['numFrames',['../classncine_1_1_animated_sprite.html#a7b5fc4ecfa9050b5a3398480b7460e3c',1,'ncine::AnimatedSprite::numFrames()'],['../classncine_1_1_application.html#a523b0b42286a90c78bfe055c9d25e0ec',1,'ncine::Application::numFrames()'],['../classncine_1_1_rect_animation.html#af6054ad4759573bd393254fa6e1cfca9',1,'ncine::RectAnimation::numFrames()']]], + ['numglyphs_2167',['numGlyphs',['../classncine_1_1_font.html#a65856fd8b9454551b9b0c5a02ec32c47',1,'ncine::Font']]], + ['numindices_2168',['numIndices',['../classncine_1_1_mesh_sprite.html#ab71cbdb67e0d45bc1e2d55fd47d28218',1,'ncine::MeshSprite']]], + ['numjoymappings_2169',['numJoyMappings',['../classncine_1_1_i_input_manager.html#aa464776f0fbb86ef7edabb2c3fea38f8',1,'ncine::IInputManager']]], + ['numkernings_2170',['numKernings',['../classncine_1_1_font.html#ac9974b4e23d747bff3427053b12f5f07',1,'ncine::Font']]], + ['nummonitors_2171',['numMonitors',['../classncine_1_1_i_gfx_device.html#a90824e0f5d12670be3df4b87d74db614',1,'ncine::IGfxDevice']]], + ['numparticles_2172',['numParticles',['../classncine_1_1_particle_system.html#ad5e294e7f0183206166ad795a82601a4',1,'ncine::ParticleSystem']]], + ['numplayers_2173',['numPlayers',['../classncine_1_1_null_audio_device.html#a4c9942d76f797f1fce77dc3f5e58b46b',1,'ncine::NullAudioDevice::numPlayers()'],['../classncine_1_1_i_audio_device.html#a5d263e402c7e8f7e67b835f3a8f77e5b',1,'ncine::IAudioDevice::numPlayers()']]], + ['numsamples_2174',['numSamples',['../classncine_1_1_audio_buffer.html#a826e9710c67e1f1b4b64a225b9488681',1,'ncine::AudioBuffer::numSamples()'],['../classncine_1_1_audio_buffer_player.html#acfb8387c14c496470858c44a1100326d',1,'ncine::AudioBufferPlayer::numSamples()'],['../classncine_1_1_audio_stream.html#a9d2279e0cb60552f2763ecbe7dea7475',1,'ncine::AudioStream::numSamples()'],['../classncine_1_1_audio_stream_player.html#a5688ea85ac2247b8fd678fbc7233dac6',1,'ncine::AudioStreamPlayer::numSamples()'],['../classncine_1_1_i_audio_player.html#a42648aa19638c5d5f0c784f42053d5cb',1,'ncine::IAudioPlayer::numSamples()']]], + ['numsamplesinstreambuffer_2175',['numSamplesInStreamBuffer',['../classncine_1_1_audio_stream.html#a0902134440ced208718fe98358d7273b',1,'ncine::AudioStream::numSamplesInStreamBuffer()'],['../classncine_1_1_audio_stream_player.html#a12265dd6808cf2881ce1fd3ffbd845a4',1,'ncine::AudioStreamPlayer::numSamplesInStreamBuffer()']]], + ['numsteps_2176',['numSteps',['../classncine_1_1_particle_affector.html#a4fc7353363efe8b7c848b90837d46f83',1,'ncine::ParticleAffector::numSteps()'],['../classncine_1_1_color_affector.html#a0cfc8f500e695a5c42a0799cadb8a90d',1,'ncine::ColorAffector::numSteps()'],['../classncine_1_1_size_affector.html#a48bedd28fc04e8e05fca73fcc64f87cc',1,'ncine::SizeAffector::numSteps()'],['../classncine_1_1_rotation_affector.html#a189b17fce781edf6287e23f607b416f5',1,'ncine::RotationAffector::numSteps()'],['../classncine_1_1_position_affector.html#a2e426c393d6c14c51ea105d3d9a54fca',1,'ncine::PositionAffector::numSteps()'],['../classncine_1_1_velocity_affector.html#ac5e66e928fc68a35eadec26b8fca4cfc',1,'ncine::VelocityAffector::numSteps()']]], + ['numvertices_2177',['numVertices',['../classncine_1_1_mesh_sprite.html#aa49ffb234c0882137c8bbb32cd7c49f4',1,'ncine::MeshSprite']]] +]; diff --git a/master/search/functions_e.html b/master/search/functions_e.html new file mode 100644 index 0000000000..22d2a6bf55 --- /dev/null +++ b/master/search/functions_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/functions_e.js b/master/search/functions_e.js new file mode 100644 index 0000000000..f3313baba0 --- /dev/null +++ b/master/search/functions_e.js @@ -0,0 +1,54 @@ +var searchData= +[ + ['obbpath_2178',['obbPath',['../classncine_1_1_android_application.html#a0d2cbe2b4c963e6ca15bc7b8fc50066c',1,'ncine::AndroidApplication']]], + ['object_2179',['Object',['../classncine_1_1_object.html#a3349a457718986de5141e4ce958e7564',1,'ncine::Object']]], + ['object_2180',['object',['../classncine_1_1_null_indexer.html#a5247664f2b47be8b8c9f15a14d728b5a',1,'ncine::NullIndexer::object()'],['../classncine_1_1_i_indexer.html#aaa3ca2f1620e44c0b123326452e89aa8',1,'ncine::IIndexer::object()']]], + ['object_2181',['Object',['../classncine_1_1_object.html#a595c3bae2d48857e8274adf5e6628f2e',1,'ncine::Object::Object(Object &&other)'],['../classncine_1_1_object.html#af1475b67e035edcb00e812345a6039dc',1,'ncine::Object::Object(const Object &other)'],['../classncine_1_1_object.html#af0f051684c7cb5808104cebf49cb957c',1,'ncine::Object::Object(ObjectType type, const char *name)']]], + ['onchangescalingfactor_2182',['onChangeScalingFactor',['../classncine_1_1_i_app_event_handler.html#aa2c4e9c085ff1cda4549be2469230658',1,'ncine::IAppEventHandler']]], + ['ondrawviewport_2183',['onDrawViewport',['../classncine_1_1_i_app_event_handler.html#ab0a9cba6d84d4f141d5eb7001202cf5c',1,'ncine::IAppEventHandler']]], + ['onfilesdropped_2184',['onFilesDropped',['../classncine_1_1_i_input_event_handler.html#a2461f85feb7d17b4f107921f4d3b5665',1,'ncine::IInputEventHandler']]], + ['onframeend_2185',['onFrameEnd',['../classncine_1_1_i_app_event_handler.html#ab71d0b68f73eb7b0dec14771be524846',1,'ncine::IAppEventHandler']]], + ['onframestart_2186',['onFrameStart',['../classncine_1_1_i_app_event_handler.html#a26fe21a5205f9ec4b198a1785bc8fb04',1,'ncine::IAppEventHandler']]], + ['oninit_2187',['onInit',['../classncine_1_1_i_app_event_handler.html#a5ed7187eafdfe51042e4a10a4e3002d7',1,'ncine::IAppEventHandler']]], + ['onjoyaxismoved_2188',['onJoyAxisMoved',['../classncine_1_1_i_input_event_handler.html#a7753cc54864f9204eb8cb2c99b7f633c',1,'ncine::IInputEventHandler']]], + ['onjoybuttonpressed_2189',['onJoyButtonPressed',['../classncine_1_1_i_input_event_handler.html#a65745cd39ad707fb5cb3a50e94a3f327',1,'ncine::IInputEventHandler']]], + ['onjoybuttonreleased_2190',['onJoyButtonReleased',['../classncine_1_1_i_input_event_handler.html#a15b522de7bee581b56d1b5e12a9127ec',1,'ncine::IInputEventHandler']]], + ['onjoyconnected_2191',['onJoyConnected',['../classncine_1_1_i_input_event_handler.html#a29cbdfbf0e5545b4e56ad4b1835aa1e7',1,'ncine::IInputEventHandler']]], + ['onjoydisconnected_2192',['onJoyDisconnected',['../classncine_1_1_i_input_event_handler.html#a0d0821dd34348eeed7d26684e36f822a',1,'ncine::IInputEventHandler']]], + ['onjoyhatmoved_2193',['onJoyHatMoved',['../classncine_1_1_i_input_event_handler.html#a9676fbaec7ea4663fec3dab936113394',1,'ncine::IInputEventHandler']]], + ['onjoymappedaxismoved_2194',['onJoyMappedAxisMoved',['../classncine_1_1_i_input_event_handler.html#ab07069e44f3f1b5e90dadcc8a64624f7',1,'ncine::IInputEventHandler']]], + ['onjoymappedbuttonpressed_2195',['onJoyMappedButtonPressed',['../classncine_1_1_i_input_event_handler.html#a1b7c9f1ea594e962759f6a938df9c97b',1,'ncine::IInputEventHandler']]], + ['onjoymappedbuttonreleased_2196',['onJoyMappedButtonReleased',['../classncine_1_1_i_input_event_handler.html#a38a3860da958305fc9d7be52728ba093',1,'ncine::IInputEventHandler']]], + ['onkeypressed_2197',['onKeyPressed',['../classncine_1_1_i_input_event_handler.html#acd56ad9e1245a0de861236205f1a813a',1,'ncine::IInputEventHandler']]], + ['onkeyreleased_2198',['onKeyReleased',['../classncine_1_1_i_input_event_handler.html#a580b162e418251ce6b56e08ec6e32815',1,'ncine::IInputEventHandler']]], + ['onmousebuttonpressed_2199',['onMouseButtonPressed',['../classncine_1_1_i_input_event_handler.html#a42535586f369813ef7da0126b1416448',1,'ncine::IInputEventHandler']]], + ['onmousebuttonreleased_2200',['onMouseButtonReleased',['../classncine_1_1_i_input_event_handler.html#a107b9c8b313f81a0d9a9664dfef24512',1,'ncine::IInputEventHandler']]], + ['onmousemoved_2201',['onMouseMoved',['../classncine_1_1_i_input_event_handler.html#adf782a9b03207a4bc988d464606fe103',1,'ncine::IInputEventHandler']]], + ['onpointerdown_2202',['onPointerDown',['../classncine_1_1_i_input_event_handler.html#a5424ef98deadc1ca33836ed44406a488',1,'ncine::IInputEventHandler']]], + ['onpointerup_2203',['onPointerUp',['../classncine_1_1_i_input_event_handler.html#a07ef20e2cdc157718316475407bca22d',1,'ncine::IInputEventHandler']]], + ['onpostupdate_2204',['onPostUpdate',['../classncine_1_1_i_app_event_handler.html#ab5f61f188ad4d31945d6e54a8696e65f',1,'ncine::IAppEventHandler']]], + ['onpreinit_2205',['onPreInit',['../classncine_1_1_i_app_event_handler.html#a087f831c5e3a213f824aa20fdebe7a1a',1,'ncine::IAppEventHandler']]], + ['onquitrequest_2206',['onQuitRequest',['../classncine_1_1_i_input_event_handler.html#ac9739237ded6cca133a23a6509dedd1e',1,'ncine::IInputEventHandler']]], + ['onresizewindow_2207',['onResizeWindow',['../classncine_1_1_i_app_event_handler.html#aafb8d723feafc5d2cc788bacceffd5c9',1,'ncine::IAppEventHandler']]], + ['onresume_2208',['onResume',['../classncine_1_1_i_app_event_handler.html#a303454f9f3f97f7b08fa99b9865508fe',1,'ncine::IAppEventHandler']]], + ['onscrollinput_2209',['onScrollInput',['../classncine_1_1_i_input_event_handler.html#a6c12028386d612e67716a76948a88fbc',1,'ncine::IInputEventHandler']]], + ['onshutdown_2210',['onShutdown',['../classncine_1_1_i_app_event_handler.html#a09b62954ce624ed6d6735e3fc566ffd8',1,'ncine::IAppEventHandler']]], + ['onsuspend_2211',['onSuspend',['../classncine_1_1_i_app_event_handler.html#a09470908b5701c46413f330fdd7e2a24',1,'ncine::IAppEventHandler']]], + ['ontextinput_2212',['onTextInput',['../classncine_1_1_i_input_event_handler.html#ad913bc32a7446ee5f8b3a95133078555',1,'ncine::IInputEventHandler']]], + ['ontouchdown_2213',['onTouchDown',['../classncine_1_1_i_input_event_handler.html#a74602f87bbcacf77e0ee6a98abcbb627',1,'ncine::IInputEventHandler']]], + ['ontouchmove_2214',['onTouchMove',['../classncine_1_1_i_input_event_handler.html#a5e1cf6463f495f245e9ca70b831a83fa',1,'ncine::IInputEventHandler']]], + ['ontouchup_2215',['onTouchUp',['../classncine_1_1_i_input_event_handler.html#aeecf79cf672655505d4b960eff79a5a8',1,'ncine::IInputEventHandler']]], + ['open_2216',['open',['../classncine_1_1_asset_file.html#a8be579e265860e75b23f26ab19c3e791',1,'ncine::AssetFile::open()'],['../classncine_1_1_file_system_1_1_directory.html#a968afbc63b4de3db3671ce8c58133b39',1,'ncine::FileSystem::Directory::open()'],['../classncine_1_1_i_file.html#a6056ece817d969fce3b256b2ffea96d0',1,'ncine::IFile::open()']]], + ['operator_2a_2217',['operator*',['../classnctl_1_1_string_iterator.html#a3705be925bbc18321ad6e5d540baccc6',1,'nctl::StringIterator::operator*()'],['../classnctl_1_1_static_hash_set_iterator.html#ab750869418763b73199764531e15e8c4',1,'nctl::StaticHashSetIterator::operator*()'],['../classnctl_1_1_static_hash_map_iterator.html#a22d18e9c15d4878b5f6b86f12242497e',1,'nctl::StaticHashMapIterator::operator*()'],['../classnctl_1_1_sparse_set_iterator.html#ad7e66aa2dd1a9d419bccbcec660726d4',1,'nctl::SparseSetIterator::operator*()'],['../classnctl_1_1_reverse_iterator.html#a2196a014962084b0deac5f502f088d9d',1,'nctl::ReverseIterator::operator*()'],['../classnctl_1_1_list_iterator.html#aab671688140359575fa4a3b4b43aeef0',1,'nctl::ListIterator::operator*()'],['../classnctl_1_1_hash_set_list_iterator.html#addd1d5ce363e04b0bebaf8cfe8be8b66',1,'nctl::HashSetListIterator::operator*()'],['../classnctl_1_1_hash_map_list_iterator.html#af474f84f0c7123db9bd7464b97a582c0',1,'nctl::HashMapListIterator::operator*()'],['../classnctl_1_1_hash_map_iterator.html#aa908337525d8310432d522b30f6fd916',1,'nctl::HashMapIterator::operator*()'],['../classnctl_1_1_array_iterator.html#ae2226f1298471e7bcdefb94da7c2190b',1,'nctl::ArrayIterator::operator*()'],['../classncine_1_1_color_hdr.html#a7e2b944921c7c4d5573779967d8a4509',1,'ncine::ColorHdr::operator*()'],['../classncine_1_1_colorf.html#a606b50c117e134b4cfd5cc057ed7bab9',1,'ncine::Colorf::operator*()'],['../classncine_1_1_color.html#a8b7111ad9a063d7b080ee9a7ba1e86a1',1,'ncine::Color::operator*()'],['../classnctl_1_1_hash_set_iterator.html#a3117e56e623e47340d76eadef3f2dc21',1,'nctl::HashSetIterator::operator*()']]], + ['operator_2a_3d_2218',['operator*=',['../classncine_1_1_color.html#a518fc448ad3bdcb45a5b38ceb3c5806e',1,'ncine::Color::operator*=()'],['../classncine_1_1_colorf.html#a7beb72508fccd8d6c595b65b030634ad',1,'ncine::Colorf::operator*=()'],['../classncine_1_1_color_hdr.html#a02728fc7e6cd0d60b006d02679d2b4e9',1,'ncine::ColorHdr::operator*=()']]], + ['operator_2b_2219',['operator+',['../classnctl_1_1_static_string.html#a8ec17be35f02c9f9a3b3f2b2aa649aea',1,'nctl::StaticString::operator+()'],['../classnctl_1_1_string_iterator.html#ad6eb07c77f47ed23081f0e5aaa1b962d',1,'nctl::StringIterator::operator+()'],['../classnctl_1_1_string.html#a6371ae5bd6ffc5bc5d5eb4a0e3e45452',1,'nctl::String::operator+(const char *cString) const'],['../classnctl_1_1_string.html#a762da340586922573b9b31bf1f02b81c',1,'nctl::String::operator+(const String &other) const'],['../classnctl_1_1_static_string.html#a74690bf5511e284062199f13f7d63706',1,'nctl::StaticString::operator+(const StaticString< U > &other) const'],['../classnctl_1_1_static_string.html#afc3bd97a685c3dcf10218b3e4653d1de',1,'nctl::StaticString::operator+(const StaticString &other) const'],['../classnctl_1_1_reverse_iterator.html#a4c4aaafe4acb8f4b13dae3b4b31d2f13',1,'nctl::ReverseIterator::operator+()'],['../classnctl_1_1_array_iterator.html#a649fac7a0be7c369e51389847b47eb39',1,'nctl::ArrayIterator::operator+()']]], + ['operator_2b_2b_2220',['operator++',['../classnctl_1_1_hash_set_iterator.html#a07f2ea55a8aaf828c5755c3a8fa4029b',1,'nctl::HashSetIterator::operator++()'],['../classnctl_1_1_string_iterator.html#a5694f33c7041b9da714e72e8d73d2bfd',1,'nctl::StringIterator::operator++(int)'],['../classnctl_1_1_string_iterator.html#ac5274e3d12277f9e5584021f6f1dc5ea',1,'nctl::StringIterator::operator++()'],['../classnctl_1_1_static_hash_set_iterator.html#a3f7cd6b559bbdfb2320b9605fcd7f140',1,'nctl::StaticHashSetIterator::operator++(int)'],['../classnctl_1_1_static_hash_set_iterator.html#abe03b29dd1e3af1e16c88f96bd904d00',1,'nctl::StaticHashSetIterator::operator++()'],['../classnctl_1_1_static_hash_map_iterator.html#a969c19ca3102a7135f9b5cee2723ca65',1,'nctl::StaticHashMapIterator::operator++(int)'],['../classnctl_1_1_static_hash_map_iterator.html#a7bba2e2ccc6d13f8ce10a2c566a0c12b',1,'nctl::StaticHashMapIterator::operator++()'],['../classnctl_1_1_sparse_set_iterator.html#ac3bc1d92276ddc6137820ae2dc4d2243',1,'nctl::SparseSetIterator::operator++(int)'],['../classnctl_1_1_sparse_set_iterator.html#a1aabf798c8bf10846ba48d451e092c5f',1,'nctl::SparseSetIterator::operator++()'],['../classnctl_1_1_reverse_iterator.html#ae9be7f0acbeb9a5cc73bdcbc35a9329e',1,'nctl::ReverseIterator::operator++(int)'],['../classnctl_1_1_reverse_iterator.html#a5ec61f3769b3bd1a15384249ccbdd86f',1,'nctl::ReverseIterator::operator++()'],['../classnctl_1_1_list_iterator.html#a43c8fd6cea24c2fbd3dbc030c897b4db',1,'nctl::ListIterator::operator++()'],['../classnctl_1_1_array_iterator.html#a0213548bac9d7b523cd2af7f2ddba4c5',1,'nctl::ArrayIterator::operator++()'],['../classnctl_1_1_array_iterator.html#a4f7baba8740b3bceb51d6ddb0fe814b4',1,'nctl::ArrayIterator::operator++(int)'],['../classnctl_1_1_hash_map_iterator.html#af82d13089db01991ea2134a5ced951c8',1,'nctl::HashMapIterator::operator++()'],['../classnctl_1_1_hash_map_iterator.html#a2e8fab6fe324479d3528a21a3fe4e9ea',1,'nctl::HashMapIterator::operator++(int)'],['../classnctl_1_1_hash_map_list_iterator.html#ae3cb6b1561e3f6a0e4907aa0a1876ef8',1,'nctl::HashMapListIterator::operator++()'],['../classnctl_1_1_hash_map_list_iterator.html#ac86412d114bcae3b13e6481821e66433',1,'nctl::HashMapListIterator::operator++(int)'],['../classnctl_1_1_hash_set_iterator.html#a93134da29c490b4bd8704a4d12a9a1f9',1,'nctl::HashSetIterator::operator++()'],['../classnctl_1_1_hash_set_list_iterator.html#a35c96320dfae891c40c40bd2e81ba318',1,'nctl::HashSetListIterator::operator++()'],['../classnctl_1_1_hash_set_list_iterator.html#a145491a65bf6566098d9654f3fd4c2d6',1,'nctl::HashSetListIterator::operator++(int)'],['../classnctl_1_1_list_iterator.html#a8ff6c2afd42fe652467c8908f4aa5d17',1,'nctl::ListIterator::operator++()']]], + ['operator_2b_3d_2221',['operator+=',['../classnctl_1_1_array_iterator.html#a2a7c20984411bcc0da41244421034615',1,'nctl::ArrayIterator::operator+=()'],['../classnctl_1_1_reverse_iterator.html#a6c1cd73ac508ba033d3ea7ae5d50f705',1,'nctl::ReverseIterator::operator+=()'],['../classnctl_1_1_static_string.html#af106a4e7e4516fe545c5f12bdb8f4423',1,'nctl::StaticString::operator+=(const StaticString &other)'],['../classnctl_1_1_static_string.html#ac0991502bff2a001262aa39b4dac5727',1,'nctl::StaticString::operator+=(const StaticString< U > &other)'],['../classnctl_1_1_static_string.html#a4deecaf7ac27bec8208a9df2d416e383',1,'nctl::StaticString::operator+=(const char *cString)'],['../classnctl_1_1_string.html#a58b7ec7ec393586962848af3d00aa5e9',1,'nctl::String::operator+=(const String &other)'],['../classnctl_1_1_string.html#aa0cb1317902f03471bf3f9ad7567b0de',1,'nctl::String::operator+=(const char *cString)'],['../classnctl_1_1_string_iterator.html#ad687db39c01d7b207ed01d0c13c25931',1,'nctl::StringIterator::operator+=(int n)']]], + ['operator_2d_2222',['operator-',['../classnctl_1_1_string_iterator.html#a012c4d15faf3debc711f2aa60ebcbb6f',1,'nctl::StringIterator::operator-()'],['../classnctl_1_1_array_iterator.html#a073177e311cbc1fda2c659b06317e25f',1,'nctl::ArrayIterator::operator-()'],['../classnctl_1_1_reverse_iterator.html#a2550114f56004fc02e09bbd43f1c1737',1,'nctl::ReverseIterator::operator-()']]], + ['operator_2d_2d_2223',['operator--',['../classnctl_1_1_static_hash_set_iterator.html#a736628a08a69e950c093229d5bc048ad',1,'nctl::StaticHashSetIterator::operator--()'],['../classnctl_1_1_string_iterator.html#a74db68c11e92df11e8c390404d27c8d6',1,'nctl::StringIterator::operator--(int)'],['../classnctl_1_1_string_iterator.html#adee6df29aa7ea61e284378a82bf5f1e9',1,'nctl::StringIterator::operator--()'],['../classnctl_1_1_static_hash_set_iterator.html#a1d4b141caa163c4342b6ac773c3aab92',1,'nctl::StaticHashSetIterator::operator--()'],['../classnctl_1_1_static_hash_map_iterator.html#a9beb0d31401295acac579ace47dadd32',1,'nctl::StaticHashMapIterator::operator--(int)'],['../classnctl_1_1_static_hash_map_iterator.html#a9b6bd72dbe289792000f0a6c689d9b3e',1,'nctl::StaticHashMapIterator::operator--()'],['../classnctl_1_1_sparse_set_iterator.html#a38029c6ec7658969ae9716dcae3ebdbb',1,'nctl::SparseSetIterator::operator--(int)'],['../classnctl_1_1_sparse_set_iterator.html#a746fa94911a91a3a6fa1c319c95beb93',1,'nctl::SparseSetIterator::operator--()'],['../classnctl_1_1_reverse_iterator.html#a4dab6d5bdbe25d4553a4f512a77fd1d0',1,'nctl::ReverseIterator::operator--(int)'],['../classnctl_1_1_reverse_iterator.html#a389f7319436325f282cd40d588e63db2',1,'nctl::ReverseIterator::operator--()'],['../classnctl_1_1_list_iterator.html#aa00ae3a6f263c7d206d452c63d5491b3',1,'nctl::ListIterator::operator--()'],['../classnctl_1_1_hash_set_list_iterator.html#a27028312d7656459def9cc2f243c64cb',1,'nctl::HashSetListIterator::operator--()'],['../classnctl_1_1_array_iterator.html#a505249f6d2f5a06a409991533446102b',1,'nctl::ArrayIterator::operator--()'],['../classnctl_1_1_array_iterator.html#a1157e054096e04127883eb0e9a1e4390',1,'nctl::ArrayIterator::operator--(int)'],['../classnctl_1_1_hash_map_iterator.html#a597b618fec5b0680ddd609ae41e50a04',1,'nctl::HashMapIterator::operator--()'],['../classnctl_1_1_list_iterator.html#a6219fec9fbc0c5bad6e297ee031968ec',1,'nctl::ListIterator::operator--()'],['../classnctl_1_1_hash_map_iterator.html#aa0adf951eaf7ee27e37e3c279231da35',1,'nctl::HashMapIterator::operator--()'],['../classnctl_1_1_hash_map_list_iterator.html#aac139d1cd0c1bd9f0bd379fb796bb244',1,'nctl::HashMapListIterator::operator--()'],['../classnctl_1_1_hash_map_list_iterator.html#a3e4d514fb9a4ae3fa5f9d9882e71ac79',1,'nctl::HashMapListIterator::operator--(int)'],['../classnctl_1_1_hash_set_iterator.html#a01f8bbdfe3535f4765ebf7d072d5c9b3',1,'nctl::HashSetIterator::operator--()'],['../classnctl_1_1_hash_set_iterator.html#acc3033e78903e49ed3716b95919e20a3',1,'nctl::HashSetIterator::operator--(int)'],['../classnctl_1_1_hash_set_list_iterator.html#a80e597b117f72180a0bf62c9fa20c74c',1,'nctl::HashSetListIterator::operator--()']]], + ['operator_2d_3d_2224',['operator-=',['../classnctl_1_1_array_iterator.html#a69c11f61ccff618eb9fb17eeb0c8c863',1,'nctl::ArrayIterator::operator-=()'],['../classnctl_1_1_reverse_iterator.html#ae1964866238b404caff954dcdbae2049',1,'nctl::ReverseIterator::operator-=()'],['../classnctl_1_1_string_iterator.html#a52e0c4c6093b1b51a8ccc0b1316f4032',1,'nctl::StringIterator::operator-=()']]], + ['operator_3d_2225',['operator=',['../classnctl_1_1_list.html#a96af0b524ebfe8a7e9f180730bde07dd',1,'nctl::List::operator=()'],['../classnctl_1_1_hash_set_list.html#ab5edac4ca839937aa84472c6775e3217',1,'nctl::HashSetList::operator=(HashSetList &&other)'],['../classnctl_1_1_hash_set_list.html#a30d2331de36b09287c6e18fba85d0332',1,'nctl::HashSetList::operator=(const HashSetList &other)'],['../classnctl_1_1_hash_set.html#af85765e671f0cb8ffe95eece7afd84e3',1,'nctl::HashSet::operator=(HashSet &&other)'],['../classnctl_1_1_hash_set.html#a1bf5bf558f5575c9d51eb624f3d60de6',1,'nctl::HashSet::operator=(const HashSet &other)'],['../classnctl_1_1_list.html#a24a99c8ae1d578a080e7c51bc48e0cd6',1,'nctl::List::operator=()'],['../classnctl_1_1_hash_map_list.html#ac7a4bd14b851ad42f61dc6917fa11826',1,'nctl::HashMapList::operator=(HashMapList &&other)'],['../classnctl_1_1_hash_map_list.html#a0749afcba2ac40aaafd3b55a7c0ea053',1,'nctl::HashMapList::operator=(const HashMapList &other)'],['../classnctl_1_1_hash_map.html#a756547096e54dd3d998be71e8dcdae61',1,'nctl::HashMap::operator=(HashMap &&other)'],['../classnctl_1_1_hash_map.html#a4dab3deb687d09b2a21fd4f60794ea36',1,'nctl::HashMap::operator=(const HashMap &other)'],['../classnctl_1_1_array.html#aa898c8aea3798c41305b150d8aaeb93a',1,'nctl::Array::operator=(Array &&other)'],['../classnctl_1_1_array.html#ad4eec848456770b20e826d0a8d3ff5aa',1,'nctl::Array::operator=(const Array &other)'],['../classncine_1_1_viewport.html#a16fe33d2694cddef2c3529055e3e2510',1,'ncine::Viewport::operator=()'],['../classncine_1_1_velocity_affector.html#a8aeead824880d6953bccba65e8a381c2',1,'ncine::VelocityAffector::operator=()'],['../classncine_1_1_texture.html#a69f9695b56756526b72f15bc4009f195',1,'ncine::Texture::operator=()'],['../classnctl_1_1_sparse_set.html#abceeeaf5bba556e1758eecc71b6e520b',1,'nctl::SparseSet::operator=(const SparseSet &other)'],['../classnctl_1_1_sparse_set.html#a0cb81fbfb4f316391e9eaef5d93248b8',1,'nctl::SparseSet::operator=(SparseSet &&other)'],['../classnctl_1_1_static_array.html#ab674ce9d577a267a78a4188e1949c34e',1,'nctl::StaticArray::operator=(const StaticArray &other)'],['../classnctl_1_1_static_array.html#aa4e39238525d4e457d4e0a113a2739aa',1,'nctl::StaticArray::operator=(StaticArray &&other)'],['../classnctl_1_1_static_hash_map.html#a0cc63b54a0d0396a127256f6dcde9884',1,'nctl::StaticHashMap::operator=(const StaticHashMap &other)'],['../classnctl_1_1_static_hash_map.html#a39faba3e6f2806b5650ba23c9b557aa7',1,'nctl::StaticHashMap::operator=(StaticHashMap &&other)'],['../classnctl_1_1_static_hash_set.html#ad61bda78104fe89e85a2b1854caa989f',1,'nctl::StaticHashSet::operator=(const StaticHashSet &other)'],['../classnctl_1_1_static_hash_set.html#ad0ab1b34236d320a02d74973a58d9865',1,'nctl::StaticHashSet::operator=(StaticHashSet &&other)'],['../classnctl_1_1_static_string.html#a2b26f4cac5f7db8398d32d7f1942bddc',1,'nctl::StaticString::operator=(const StaticString &other)'],['../classnctl_1_1_static_string.html#a0dac04e8527b755da4ae9bd4696c2d1a',1,'nctl::StaticString::operator=(const StaticString< U > &other)'],['../classnctl_1_1_static_string.html#a7814e1286a48b75365a12698d8945974',1,'nctl::StaticString::operator=(const char *cString)'],['../classnctl_1_1_string.html#a404e9a31553f0b5bcbc676f533c325f5',1,'nctl::String::operator=(const String &other)'],['../classnctl_1_1_string.html#a2b62841c1efb9cbd668635b0377a8e6b',1,'nctl::String::operator=(String &&other)'],['../classnctl_1_1_string.html#a7154d41c96cd8b1133fa5673934fe278',1,'nctl::String::operator=(const char *cString)'],['../classnctl_1_1_static_string.html#a94f43b25d0d56e428a3d1d37f112b163',1,'nctl::StaticString::operator=()'],['../classncine_1_1_sprite.html#ab67b7ca4db90121519e9b259137b3180',1,'ncine::Sprite::operator=()'],['../classncine_1_1_animated_sprite.html#a4485ea929fa3d849cd6c3ae83f3c2478',1,'ncine::AnimatedSprite::operator=()'],['../classncine_1_1_audio_buffer.html#a74caa0b45237879f6bbaf22f72d4efec',1,'ncine::AudioBuffer::operator=()'],['../classncine_1_1_audio_buffer_player.html#ab18fab8323c150bbf4d31216f5c86fb8',1,'ncine::AudioBufferPlayer::operator=()'],['../classncine_1_1_audio_effect.html#aea8db4e7edf791911704a09e507bf063',1,'ncine::AudioEffect::operator=()'],['../classncine_1_1_audio_effect_properties.html#a713f240aba5a938d748a423638dca758',1,'ncine::AudioEffectProperties::operator=(AudioEffectProperties &&other)=default'],['../classncine_1_1_audio_effect_properties.html#aa14fe0cd69cd0446aa7ecacdf88a2316',1,'ncine::AudioEffectProperties::operator=(const AudioEffectProperties &)=default'],['../classncine_1_1_audio_effect_slot.html#aae29456dddb2327a843a22c014ffa0ee',1,'ncine::AudioEffectSlot::operator=()'],['../classncine_1_1_audio_filter.html#acfdd02724244cd5e113cfe1a2a59c908',1,'ncine::AudioFilter::operator=()'],['../classncine_1_1_audio_stream_player.html#adaf169be600df268313c4b1dcfecb2ac',1,'ncine::AudioStreamPlayer::operator=()'],['../classncine_1_1_base_sprite.html#a790761c247f6c9648424b38daea37335',1,'ncine::BaseSprite::operator=()'],['../classncine_1_1_color.html#aae5dfff8a763e29a276bf4479ad88008',1,'ncine::Color::operator=()'],['../classncine_1_1_colorf.html#ad62bcd2b46b9413a7ed39ef8104d54fe',1,'ncine::Colorf::operator=()'],['../classncine_1_1_color_hdr.html#a21264f4b663e1fd3e4c610f7f16d2f42',1,'ncine::ColorHdr::operator=()'],['../classncine_1_1_drawable_node.html#afc4c6ad31720e722100c772fb5ddd9e0',1,'ncine::DrawableNode::operator=()'],['../classncine_1_1_i_audio_player.html#aab5fb6ab92e4c3ab08ab81383ae8a4d3',1,'ncine::IAudioPlayer::operator=()'],['../classncine_1_1_i_debug_overlay.html#acc70622ab1533c3940a0b435e3a8703c',1,'ncine::IDebugOverlay::operator=()'],['../classncine_1_1_mesh_sprite.html#a44c3eceaae29ff00312dc4a33634c836',1,'ncine::MeshSprite::operator=()'],['../classncine_1_1_object.html#adaa2cd5060629adee161b9dd8220cb9f',1,'ncine::Object::operator=()'],['../classncine_1_1_particle.html#addd2e25f4d5459e8ba7ea1e3ac770064',1,'ncine::Particle::operator=()'],['../classncine_1_1_color_affector.html#acc4b65814f52a83721032fecffec7ba8',1,'ncine::ColorAffector::operator=()'],['../classncine_1_1_size_affector.html#affc2080de64c4ea648ad374a491f00f8',1,'ncine::SizeAffector::operator=()'],['../classncine_1_1_rotation_affector.html#a84e7cb94d4f995a00422b263f0e02533',1,'ncine::RotationAffector::operator=()'],['../classncine_1_1_position_affector.html#ab2858b0d90763f8c49467baf40cd554e',1,'ncine::PositionAffector::operator=()'],['../classncine_1_1_particle_system.html#a07ac191d9fe04581ee9da3213332e096',1,'ncine::ParticleSystem::operator=()'],['../classncine_1_1_scene_node.html#afd341577cf1abb9ed72370a3f2b999b6',1,'ncine::SceneNode::operator=(SceneNode &&other)'],['../classncine_1_1_scene_node.html#a9287492e01eb08fd1e8b349322896971',1,'ncine::SceneNode::operator=(const SceneNode &)=delete'],['../classncine_1_1_text_node.html#a6be622df9469a81a756e7c338cf44121',1,'ncine::TextNode::operator=()'],['../classncine_1_1_font.html#aa897ab37a061ba3982ff7b505e4dd89b',1,'ncine::Font::operator=()']]], + ['operator_3d_3d_2226',['operator==',['../classncine_1_1_rect.html#ad7f20143c5933653f0efdd3011bdf135',1,'ncine::Rect::operator==()'],['../classncine_1_1_color.html#ae506623f91c4941ee4f45c6b48fc1fc0',1,'ncine::Color::operator==()']]], + ['operator_5b_5d_2227',['operator[]',['../classnctl_1_1_array.html#a6e1d83616ca85ee0df28436a965f7673',1,'nctl::Array::operator[](unsigned int index) const'],['../classnctl_1_1_array.html#a2e6f48575a0ab465d0ec3f1b6abe88d3',1,'nctl::Array::operator[](unsigned int index)'],['../classnctl_1_1_array_iterator.html#ab7ab13ec960d9c996f2308b0ca6a06ad',1,'nctl::ArrayIterator::operator[]()'],['../classnctl_1_1_hash_map.html#a9e15682bed364bc2ae2b8272e160b4bd',1,'nctl::HashMap::operator[]()'],['../classnctl_1_1_hash_map_list.html#a6876bb5c40efdca85ad5bdcf2945bfaf',1,'nctl::HashMapList::operator[]()'],['../classnctl_1_1_reverse_iterator.html#a45a2ae205862be89846f935c9a3a33ac',1,'nctl::ReverseIterator::operator[]()'],['../classnctl_1_1_static_array.html#a5815deeb7e012c4e7f247bdd2e121653',1,'nctl::StaticArray::operator[](unsigned int index) const'],['../classnctl_1_1_static_array.html#a27df03e14af26be63193b94aae673156',1,'nctl::StaticArray::operator[](unsigned int index)'],['../classnctl_1_1_static_hash_map.html#afb60b9d42135af7aae798cb9f168c009',1,'nctl::StaticHashMap::operator[]()'],['../classnctl_1_1_static_string.html#a7c5ae2936539cfd8618ce82a97ce547a',1,'nctl::StaticString::operator[](unsigned int index) const'],['../classnctl_1_1_static_string.html#a207e9e99745619bf11ec21e1412de619',1,'nctl::StaticString::operator[](unsigned int index)'],['../classnctl_1_1_string.html#a214bcb6849e1925ea785c41562348301',1,'nctl::String::operator[](unsigned int index) const'],['../classnctl_1_1_string.html#a0e53d6feb567bead09ee8e5a941ed0b6',1,'nctl::String::operator[](unsigned int index)'],['../classnctl_1_1_string_iterator.html#a7f1d43f7ab29c6f02b452babfa3059eb',1,'nctl::StringIterator::operator[]()']]], + ['overlaps_2228',['overlaps',['../classncine_1_1_rect.html#a7e30799e897b0b221011c8fa6423d9c3',1,'ncine::Rect']]] +]; diff --git a/master/search/functions_f.html b/master/search/functions_f.html new file mode 100644 index 0000000000..54b7dee083 --- /dev/null +++ b/master/search/functions_f.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/functions_f.js b/master/search/functions_f.js new file mode 100644 index 0000000000..7a335e665c --- /dev/null +++ b/master/search/functions_f.js @@ -0,0 +1,28 @@ +var searchData= +[ + ['packagename_2229',['packageName',['../classncine_1_1_android_application.html#ac3f0a1b3461d2c572c1b9492031eceab',1,'ncine::AndroidApplication']]], + ['parent_2230',['parent',['../classncine_1_1_scene_node.html#a0805f89e0b5d0aa9043f66f5af39b540',1,'ncine::SceneNode::parent() const'],['../classncine_1_1_scene_node.html#a14e2ee59fa37d89074e1303fb9c2f3f7',1,'ncine::SceneNode::parent()']]], + ['particle_2231',['Particle',['../classncine_1_1_particle.html#a2335f5666223950dbebb5106712158f7',1,'ncine::Particle::Particle(SceneNode *parent, Texture *texture)'],['../classncine_1_1_particle.html#ae4f3a844e56033145dfc2e307671e21e',1,'ncine::Particle::Particle(Particle &&)=default'],['../classncine_1_1_particle.html#a6405db1a558354aefa8a1a3755c8c766',1,'ncine::Particle::Particle(const Particle &other)']]], + ['particleaffector_2232',['ParticleAffector',['../classncine_1_1_particle_affector.html#a7533247d3d8081f1c6653650bf5f2690',1,'ncine::ParticleAffector']]], + ['particlesystem_2233',['ParticleSystem',['../classncine_1_1_particle_system.html#a62660b913b11c663f2ea1a5f6831630e',1,'ncine::ParticleSystem::ParticleSystem(SceneNode *parent, unsigned int count, Texture *texture)'],['../classncine_1_1_particle_system.html#a076a4c10fdacc4422e56b81fbcea2e16',1,'ncine::ParticleSystem::ParticleSystem(SceneNode *parent, unsigned int count, Texture *texture, Recti texRect)'],['../classncine_1_1_particle_system.html#a7faaa869a2c9ce3bdb2d16e2a1141088',1,'ncine::ParticleSystem::ParticleSystem(ParticleSystem &&)'],['../classncine_1_1_particle_system.html#a0cb72e527fa2c6e1ee567d3bca5049da',1,'ncine::ParticleSystem::ParticleSystem(const ParticleSystem &other)']]], + ['pause_2234',['pause',['../classncine_1_1_audio_buffer_player.html#a7c0803d0a567716893f229f10274a23e',1,'ncine::AudioBufferPlayer::pause()'],['../classncine_1_1_audio_stream_player.html#a35dcbd351845f5bd7593f13e843633de',1,'ncine::AudioStreamPlayer::pause()'],['../classncine_1_1_i_audio_player.html#a321d0db977c4a00b99301f5efde44c56',1,'ncine::IAudioPlayer::pause()']]], + ['pausedevice_2235',['pauseDevice',['../classncine_1_1_i_audio_device.html#a2395b216078cd42c54a439a9654f0607',1,'ncine::IAudioDevice::pauseDevice()'],['../classncine_1_1_null_audio_device.html#a39185068a86bf3e1a8bd417f8e9e3cec',1,'ncine::NullAudioDevice::pauseDevice()']]], + ['pauseplayers_2236',['pausePlayers',['../classncine_1_1_i_audio_device.html#aa0696355d67b6991278fb3904b1356cd',1,'ncine::IAudioDevice::pausePlayers()=0'],['../classncine_1_1_i_audio_device.html#a87205a2c24c7ae722ce621ea5de8a1da',1,'ncine::IAudioDevice::pausePlayers(PlayerType playerType)=0'],['../classncine_1_1_null_audio_device.html#afa6f87999f50db9d1aef025b932471ac',1,'ncine::NullAudioDevice::pausePlayers() override'],['../classncine_1_1_null_audio_device.html#a5cbf4c3f92b0d1aa92b8fb1daacde72d',1,'ncine::NullAudioDevice::pausePlayers(PlayerType playerType) override']]], + ['permissions_2237',['permissions',['../classncine_1_1_file_system.html#ab015de57ced87b0d92b9390843f53765',1,'ncine::FileSystem']]], + ['pitch_2238',['pitch',['../classncine_1_1_i_audio_player.html#a95f99e13e3e43fc0f05b83f224ca745f',1,'ncine::IAudioPlayer']]], + ['pitchshifterproperties_2239',['pitchShifterProperties',['../classncine_1_1_audio_effect_properties.html#aeccbb886e58c4dd01c11b93b960be626',1,'ncine::AudioEffectProperties::pitchShifterProperties() const'],['../classncine_1_1_audio_effect_properties.html#a41a297e0942cf8966e3e9ce727fe6c9a',1,'ncine::AudioEffectProperties::pitchShifterProperties()']]], + ['play_2240',['play',['../classncine_1_1_audio_buffer_player.html#ade43fd69da00a3c2be93faddb7421ddf',1,'ncine::AudioBufferPlayer::play()'],['../classncine_1_1_audio_stream_player.html#a1e3a1fa02495c77166e41599f0a275dd',1,'ncine::AudioStreamPlayer::play()'],['../classncine_1_1_i_audio_player.html#a8983f611328125ea256fdd717002695f',1,'ncine::IAudioPlayer::play()']]], + ['player_2241',['player',['../classncine_1_1_i_audio_device.html#aea64b7302eb77f54f764f9b68c26245b',1,'ncine::IAudioDevice::player()'],['../classncine_1_1_null_audio_device.html#a7efe7c055a6643994df93ae8b206354a',1,'ncine::NullAudioDevice::player()'],['../classncine_1_1_i_audio_device.html#af9af1c423db74a5b7145ec46b56ac9a7',1,'ncine::IAudioDevice::player()'],['../classncine_1_1_null_audio_device.html#ac3d2e27cb049eb2d42214f7dec4f9bc2',1,'ncine::NullAudioDevice::player()']]], + ['popback_2242',['popBack',['../classnctl_1_1_array.html#ac2ba78cc3f0cf984ed78cadfda4c7935',1,'nctl::Array::popBack()'],['../classnctl_1_1_list.html#a7b83215cb32d5dd6465a6cd29e650501',1,'nctl::List::popBack()'],['../classnctl_1_1_static_array.html#a28607bb53bfa116a01ebac515b4dab3f',1,'nctl::StaticArray::popBack()']]], + ['popfront_2243',['popFront',['../classnctl_1_1_list.html#af72095137e4fe9a746b55b9cfedb227f',1,'nctl::List']]], + ['position_2244',['position',['../classncine_1_1_i_audio_device.html#a687db46050e0b60629ddb9489a4d6319',1,'ncine::IAudioDevice::position()'],['../classncine_1_1_null_audio_device.html#a1aad2888c6b217d0c943a523e93ededa',1,'ncine::NullAudioDevice::position()'],['../classncine_1_1_i_audio_player.html#a378adbe88c3cced547400dba01141daa',1,'ncine::IAudioPlayer::position()'],['../classncine_1_1_scene_node.html#a20985608cd335b092aeea64a73e93edf',1,'ncine::SceneNode::position()']]], + ['positionaffector_2245',['PositionAffector',['../classncine_1_1_position_affector.html#a650a6d544924d937f614ed709102b4a1',1,'ncine::PositionAffector::PositionAffector(PositionAffector &&)=default'],['../classncine_1_1_position_affector.html#a004ada180e30913018d6c1cb7aa9ea64',1,'ncine::PositionAffector::PositionAffector(const PositionAffector &other)=default']]], + ['primarymonitorindex_2246',['primaryMonitorIndex',['../classncine_1_1_i_gfx_device.html#adb7b06667b8dc9f4c6449960c96e575e',1,'ncine::IGfxDevice']]], + ['processcommand_2247',['processCommand',['../classncine_1_1_android_application.html#a8dfcac50fa0e6bfb4ce74a6e3988d6b8',1,'ncine::AndroidApplication']]], + ['profiletextupdatetime_2248',['profileTextUpdateTime',['../classncine_1_1_app_configuration.html#aa39e4eefdfedf10e95d810c9523e178c',1,'ncine::AppConfiguration']]], + ['projection_2249',['projection',['../classncine_1_1_camera.html#a8e5ac03eb3d06714a54434608da3ea2f',1,'ncine::Camera']]], + ['projectionvalues_2250',['projectionValues',['../classncine_1_1_camera.html#a6d0ef80dc689a1e99c9a1d103354d431',1,'ncine::Camera']]], + ['ptr_2251',['ptr',['../classncine_1_1_i_file.html#a20357b9f9cef827949e1c82d33fd1b35',1,'ncine::IFile']]], + ['pushback_2252',['pushBack',['../classnctl_1_1_array.html#adeed2784e9f30c04d336517e71708f02',1,'nctl::Array::pushBack(const T &element)'],['../classnctl_1_1_array.html#a2ec52e967d5bd6ee55f2587b67e8373c',1,'nctl::Array::pushBack(T &&element)'],['../classnctl_1_1_list.html#af16d2f07723443169cd690605602894d',1,'nctl::List::pushBack(const T &element)'],['../classnctl_1_1_list.html#a5464c71d75ebfb38783782a36b8868f8',1,'nctl::List::pushBack(T &&element)'],['../classnctl_1_1_static_array.html#a8384eba5715d2ecd6a49408991f4c501',1,'nctl::StaticArray::pushBack(const T &element)'],['../classnctl_1_1_static_array.html#a81d5d04c2dd68a66ad6d4a991fead69e',1,'nctl::StaticArray::pushBack(T &&element)']]], + ['pushfront_2253',['pushFront',['../classnctl_1_1_list.html#a3266dea61a1cfc86ecefbf7ad0f7ac8e',1,'nctl::List::pushFront(const T &element)'],['../classnctl_1_1_list.html#a69ad5f011d6d73987a9faab1e9d0bf2e',1,'nctl::List::pushFront(T &&element)']]] +]; diff --git a/master/search/mag_sel.svg b/master/search/mag_sel.svg new file mode 100644 index 0000000000..03626f64a0 --- /dev/null +++ b/master/search/mag_sel.svg @@ -0,0 +1,74 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/master/search/namespaces_0.html b/master/search/namespaces_0.html new file mode 100644 index 0000000000..21db2c3a56 --- /dev/null +++ b/master/search/namespaces_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/namespaces_0.js b/master/search/namespaces_0.js new file mode 100644 index 0000000000..74dbcb675e --- /dev/null +++ b/master/search/namespaces_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['luatypes_1728',['LuaTypes',['../namespacencine_1_1_lua_types.html',1,'ncine']]], + ['pointermath_1729',['PointerMath',['../namespacenctl_1_1_pointer_math.html',1,'nctl']]] +]; diff --git a/master/search/nomatches.html b/master/search/nomatches.html new file mode 100644 index 0000000000..2b9360b6bd --- /dev/null +++ b/master/search/nomatches.html @@ -0,0 +1,13 @@ + + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/master/search/related_0.html b/master/search/related_0.html new file mode 100644 index 0000000000..506aaecc0c --- /dev/null +++ b/master/search/related_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/related_0.js b/master/search/related_0.js new file mode 100644 index 0000000000..0be57b29d3 --- /dev/null +++ b/master/search/related_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['appconfiguration_2801',['AppConfiguration',['../classncine_1_1_file_system.html#a4bb78ad191cbc6c68de76b1123fa136c',1,'ncine::FileSystem']]], + ['arrayiterator_3c_20t_2c_20true_20_3e_2802',['ArrayIterator< T, true >',['../classnctl_1_1_array_iterator.html#ab9764433b26602b98a98875460cb7b67',1,'nctl::ArrayIterator']]] +]; diff --git a/master/search/related_1.html b/master/search/related_1.html new file mode 100644 index 0000000000..605d4b78f7 --- /dev/null +++ b/master/search/related_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/related_1.js b/master/search/related_1.js new file mode 100644 index 0000000000..6c4902cf14 --- /dev/null +++ b/master/search/related_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['hashmapiterator_3c_20k_2c_20t_2c_20hashfunc_2c_20true_20_3e_2803',['HashMapIterator< K, T, HashFunc, true >',['../classnctl_1_1_hash_map_iterator.html#a8165d67a4c17cb9d2436b44f0b1dd8a0',1,'nctl::HashMapIterator']]], + ['hashmaplistiterator_3c_20k_2c_20t_2c_20hashfunc_2c_20true_20_3e_2804',['HashMapListIterator< K, T, HashFunc, true >',['../classnctl_1_1_hash_map_list_iterator.html#af52453671758586ccc82b0b9b46a7c81',1,'nctl::HashMapListIterator']]] +]; diff --git a/master/search/related_2.html b/master/search/related_2.html new file mode 100644 index 0000000000..6d6ae33091 --- /dev/null +++ b/master/search/related_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/related_2.js b/master/search/related_2.js new file mode 100644 index 0000000000..3786eb78f0 --- /dev/null +++ b/master/search/related_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['listiterator_3c_20t_2c_20true_20_3e_2805',['ListIterator< T, true >',['../classnctl_1_1_list_iterator.html#aca439a0177ec7b9921fdc4f9d425761b',1,'nctl::ListIterator']]] +]; diff --git a/master/search/related_3.html b/master/search/related_3.html new file mode 100644 index 0000000000..e6c5d179be --- /dev/null +++ b/master/search/related_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/related_3.js b/master/search/related_3.js new file mode 100644 index 0000000000..e58d43f0c8 --- /dev/null +++ b/master/search/related_3.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['operator_21_3d_2806',['operator!=',['../classnctl_1_1_hash_map_iterator.html#a024911760e19404fcab68b319a9c561c',1,'nctl::HashMapIterator::operator!=()'],['../classnctl_1_1_array_iterator.html#a4563b4e41076676472859c3708806a93',1,'nctl::ArrayIterator::operator!=()'],['../classnctl_1_1_string_iterator.html#aea095f0212761b9c0af78089e04442f6',1,'nctl::StringIterator::operator!=()'],['../classnctl_1_1_static_hash_set_iterator.html#a57dd54a4c5a2f08a3b20e6e845eae306',1,'nctl::StaticHashSetIterator::operator!=()'],['../classnctl_1_1_static_hash_map_iterator.html#ad0b676281a946943cd5eb5f0b68c52e8',1,'nctl::StaticHashMapIterator::operator!=()'],['../classnctl_1_1_sparse_set_iterator.html#a6313167589816ada466245b5f0bcb484',1,'nctl::SparseSetIterator::operator!=()'],['../classnctl_1_1_reverse_iterator.html#ab50413115c8356d44188eafdf43243d7',1,'nctl::ReverseIterator::operator!=()'],['../classnctl_1_1_list_iterator.html#a888d960155cc4ea1dca9a3e5966cc9d6',1,'nctl::ListIterator::operator!=()'],['../classnctl_1_1_hash_set_list_iterator.html#a5b497ff1663dc1bd9a1bea06a00dc87c',1,'nctl::HashSetListIterator::operator!=()'],['../classnctl_1_1_hash_set_iterator.html#aff14929723f132f26b4abadaafe3b8d2',1,'nctl::HashSetIterator::operator!=()'],['../classnctl_1_1_hash_map_list_iterator.html#a812e12055ef36755250130b1067a7c4c',1,'nctl::HashMapListIterator::operator!=()'],['../classnctl_1_1_reverse_iterator.html#a0fedb2c360e3297d4303c6d880cdcfc7',1,'nctl::ReverseIterator::operator!=()']]], + ['operator_2b_2807',['operator+',['../classnctl_1_1_static_string.html#a982bbf3cbad0eed7e4b0425021db9ff1',1,'nctl::StaticString::operator+()'],['../classnctl_1_1_string.html#a2fbc8f624baa30a40d4a57d9ad6be6c5',1,'nctl::String::operator+()']]], + ['operator_2d_2808',['operator-',['../classnctl_1_1_reverse_iterator.html#a28d2c551f7365c37b2b23df2590fb00c',1,'nctl::ReverseIterator::operator-()'],['../classnctl_1_1_string_iterator.html#aea15b0d9d3e97ac0ff060f6a47ef5c2c',1,'nctl::StringIterator::operator-()'],['../classnctl_1_1_reverse_iterator.html#aaa2d49fbbee43f535dec01229f7c0be1',1,'nctl::ReverseIterator::operator-()'],['../classnctl_1_1_array_iterator.html#a4f03506e395c20076d0c1b654546956c',1,'nctl::ArrayIterator::operator-()']]], + ['operator_3c_2809',['operator<',['../classnctl_1_1_array_iterator.html#a6813799135cb0105bf120f8109fe5ca2',1,'nctl::ArrayIterator::operator<()'],['../classnctl_1_1_reverse_iterator.html#adf1a91e2c53e08be37760974c989458e',1,'nctl::ReverseIterator::operator<()'],['../classnctl_1_1_reverse_iterator.html#ad09a9e4fb550e58013b5e72ee6b5363c',1,'nctl::ReverseIterator::operator<()'],['../classnctl_1_1_string_iterator.html#ac41ea9b264fd1f181ac44f8b14db4226',1,'nctl::StringIterator::operator<()']]], + ['operator_3c_3d_2810',['operator<=',['../classnctl_1_1_string_iterator.html#ad4cd8324c17fd6a8cf9f76678c7789e8',1,'nctl::StringIterator::operator<=()'],['../classnctl_1_1_reverse_iterator.html#a3d71eddfea7307924fb9608809d5c22e',1,'nctl::ReverseIterator::operator<=()'],['../classnctl_1_1_array_iterator.html#ae1d6ec68ff55f50fe1b72e8c6bdcabb9',1,'nctl::ArrayIterator::operator<=()'],['../classnctl_1_1_reverse_iterator.html#a22dcd6eeeccc7863941ef3893f11b012',1,'nctl::ReverseIterator::operator<=()']]], + ['operator_3d_3d_2811',['operator==',['../classnctl_1_1_static_hash_map_iterator.html#aa21ec778d6fbd7d1117ad1c40c665d18',1,'nctl::StaticHashMapIterator::operator==()'],['../classnctl_1_1_string_iterator.html#a8c9c1a619688d56b4bcc4cbdb6c1cba9',1,'nctl::StringIterator::operator==()'],['../classnctl_1_1_static_hash_set_iterator.html#ad943a71d89a142e42010ad2627549c5b',1,'nctl::StaticHashSetIterator::operator==()'],['../classnctl_1_1_sparse_set_iterator.html#a259f275f4b5ae478dd9576a4e38af34f',1,'nctl::SparseSetIterator::operator==()'],['../classnctl_1_1_reverse_iterator.html#a856a006f7d2a41073427a4c17fd0e122',1,'nctl::ReverseIterator::operator==()'],['../classnctl_1_1_reverse_iterator.html#a4753b05a30f65418e00dc7ae201a5e3a',1,'nctl::ReverseIterator::operator==()'],['../classnctl_1_1_list_iterator.html#a8e0b8536b466cf803b66311bfbb86177',1,'nctl::ListIterator::operator==()'],['../classnctl_1_1_hash_set_list_iterator.html#a5d8f0c6e3173919aa19182f6a1fb6354',1,'nctl::HashSetListIterator::operator==()'],['../classnctl_1_1_hash_set_iterator.html#afa05914846e22707cf59183375bbd8b3',1,'nctl::HashSetIterator::operator==()'],['../classnctl_1_1_hash_map_list_iterator.html#a613d70134cc903c27d3e708f83d540b1',1,'nctl::HashMapListIterator::operator==()'],['../classnctl_1_1_hash_map_iterator.html#ac22230dcf9d95f1370ca814010bd9ee1',1,'nctl::HashMapIterator::operator==()'],['../classnctl_1_1_array_iterator.html#a8de59ff8d9d89902933a701a0d7b7df2',1,'nctl::ArrayIterator::operator==()']]], + ['operator_3e_2812',['operator>',['../classnctl_1_1_array_iterator.html#aa2210f8ca1ed8bdc2559a8997c43c226',1,'nctl::ArrayIterator::operator>()'],['../classnctl_1_1_reverse_iterator.html#ae73ef3122f1c6ff357e95be02e16f88b',1,'nctl::ReverseIterator::operator>()'],['../classnctl_1_1_reverse_iterator.html#a0784436d00d4d43e802d466bcac79f8f',1,'nctl::ReverseIterator::operator>()'],['../classnctl_1_1_string_iterator.html#abbbd6f87d364107d655a16bd0c37e110',1,'nctl::StringIterator::operator>()']]], + ['operator_3e_3d_2813',['operator>=',['../classnctl_1_1_array_iterator.html#a3628f8e3b41a4597cdaf4a0a50bcea27',1,'nctl::ArrayIterator::operator>=()'],['../classnctl_1_1_reverse_iterator.html#aee94a28057d7a444e9f23828f90e77bb',1,'nctl::ReverseIterator::operator>=()'],['../classnctl_1_1_reverse_iterator.html#a34d9d47e74df6a4541f1641c1c02f090',1,'nctl::ReverseIterator::operator>=()'],['../classnctl_1_1_string_iterator.html#a8afacc88276710a2595522deaa19c67c',1,'nctl::StringIterator::operator>=()']]] +]; diff --git a/master/search/related_4.html b/master/search/related_4.html new file mode 100644 index 0000000000..ed79c3b25d --- /dev/null +++ b/master/search/related_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/related_4.js b/master/search/related_4.js new file mode 100644 index 0000000000..4db8247260 --- /dev/null +++ b/master/search/related_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['statichashmapiterator_3c_20k_2c_20t_2c_20hashfunc_2c_20capacity_2c_20true_20_3e_2814',['StaticHashMapIterator< K, T, HashFunc, Capacity, true >',['../classnctl_1_1_static_hash_map_iterator.html#af51287d83ffaf8509dfecdde45d35817',1,'nctl::StaticHashMapIterator']]], + ['stringiterator_3c_20true_20_3e_2815',['StringIterator< true >',['../classnctl_1_1_string_iterator.html#a3cd070048f16ccc963def23fa25228b8',1,'nctl::StringIterator']]] +]; diff --git a/master/search/related_5.html b/master/search/related_5.html new file mode 100644 index 0000000000..c48055800d --- /dev/null +++ b/master/search/related_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/related_5.js b/master/search/related_5.js new file mode 100644 index 0000000000..637827b2f1 --- /dev/null +++ b/master/search/related_5.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['texturesaverpng_2816',['TextureSaverPng',['../classncine_1_1_i_file.html#ad07f24112aa511546b56d67c24790f14',1,'ncine::IFile']]], + ['theapplication_2817',['theApplication',['../classncine_1_1_android_application.html#a60420cff34021c7033147b60126b4119',1,'ncine::AndroidApplication::theApplication()'],['../classncine_1_1_p_c_application.html#a60420cff34021c7033147b60126b4119',1,'ncine::PCApplication::theApplication()']]], + ['theservicelocator_2818',['theServiceLocator',['../classncine_1_1_service_locator.html#a082ba9eb0edfb7c0c459ec9c7ccbecc2',1,'ncine::ServiceLocator']]] +]; diff --git a/master/search/search.css b/master/search/search.css new file mode 100644 index 0000000000..5a9b70ca2c --- /dev/null +++ b/master/search/search.css @@ -0,0 +1,257 @@ +/*---------------- Search Box */ + +#MSearchBox { + white-space : nowrap; + background: white; + border-radius: 0.65em; + box-shadow: inset 0.5px 0.5px 3px 0px #555; + z-index: 102; +} + +#MSearchBox .left { + display: inline-block; + vertical-align: middle; + height: 1.4em; +} + +#MSearchSelect { + display: inline-block; + vertical-align: middle; + height: 1.4em; + padding: 0 0 0 0.3em; + margin: 0; +} + +#MSearchField { + display: inline-block; + vertical-align: middle; + width: 7.5em; + height: 1.1em; + margin: 0 0.15em; + padding: 0; + line-height: 1em; + border:none; + color: #909090; + outline: none; + font-family: Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; + border-radius: 0px; + background: none; +} + + +#MSearchBox .right { + display: inline-block; + vertical-align: middle; + width: 1.4em; + height: 1.4em; +} + +#MSearchClose { + display: none; + font-size: inherit; + background : none; + border: none; + margin: 0; + padding: 0; + outline: none; + +} + +#MSearchCloseImg { + height: 1.4em; + padding: 0.3em; + margin: 0; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +#main-menu > li:last-child { + /* This
  • object is the parent of the search bar */ + display: flex; + justify-content: center; + align-items: center; + height: 36px; + margin-right: 1em; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #BACE90; + background-color: #FBFCF9; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #728C3D; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #F4F7EE; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #7B9742; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #7B9742; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; + font-family: Arial, Verdana, sans-serif; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; + font-family: Arial, Verdana, sans-serif; +} + +.SRResult { + display: none; +} + +div.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F5F8F0; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/master/search/search.js b/master/search/search.js new file mode 100644 index 0000000000..fb226f734e --- /dev/null +++ b/master/search/search.js @@ -0,0 +1,816 @@ +/* + @licstart The following is the entire license notice for the JavaScript code in this file. + + The MIT License (MIT) + + Copyright (C) 1997-2020 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software + and associated documentation files (the "Software"), to deal in the Software without restriction, + including without limitation the rights to use, copy, modify, merge, publish, distribute, + sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or + substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING + BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, + DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + this.extension; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches' + this.extension; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline-block'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName.toLowerCase() == 'div' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName.toLowerCase() == 'div' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; e(R!W8j_r#qQ#gnr4kAxdU#F0+OBry$Z+ z_0PMi;P|#{d%mw(dnw=jM%@$onTJa%@6Nm3`;2S#nwtVFJI#`U@2Q@@JCCctagvF- z8H=anvo~dTmJ2YA%wA6IHRv%{vxvUm|R)kgZeo zmX%Zb;mpflGZdXCTAgit`||AFzkI#z&(3d4(htA?U2FOL4WF6wY&TB#n3n*I4+hl| z*NBpo#FA92vEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/master/search/search_r.png b/master/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..1af5d21ee13e070d7600f1c4657fde843b953a69 GIT binary patch literal 553 zcmeAS@N?(olHy`uVBq!ia0vp^LO?9c!2%@BXHTsJQY`6?zK#qG8~eHcB(ehe3dtTp zz6=bxGZ+|(`xqD=STHa&U1eaXVrO7DwS|Gf*oA>XrmV$GYcEhOQT(QLuS{~ooZ2P@v=Xc@RKW@Irliv8_;wroU0*)0O?temdsA~70jrdux+`@W7 z-N(<(C)L?hOO?KV{>8(jC{hpKsws)#Fh zvsO>IB+gb@b+rGWaO&!a9Z{!U+fV*s7TS>fdt&j$L%^U@Epd$~Nl7e8wMs5Z1yT$~ z28I^8hDN#u<{^fLRz?<9hUVG^237_Jy7tbuQ8eV{r(~v8;?@w8^gA7>fx*+&&t;uc GLK6VEQpiUD literal 0 HcmV?d00001 diff --git a/master/search/searchdata.js b/master/search/searchdata.js new file mode 100644 index 0000000000..80ddc0e0ac --- /dev/null +++ b/master/search/searchdata.js @@ -0,0 +1,39 @@ +var indexSectionsWithContent = +{ + 0: "abcdefghijklmnopqrstuvwxyz~", + 1: "abcdefghijklmnopqrstuvw", + 2: "n", + 3: "abcdefghijklmnopqrstuvw~", + 4: "abcdefghijlmnoprstuvwxyz", + 5: "ciprv", + 6: "abcdfglmoprstw", + 7: "abcdefghmnpstw", + 8: "ahlost" +}; + +var indexSectionNames = +{ + 0: "all", + 1: "classes", + 2: "namespaces", + 3: "functions", + 4: "variables", + 5: "typedefs", + 6: "enums", + 7: "enumvalues", + 8: "related" +}; + +var indexSectionLabels = +{ + 0: "All", + 1: "Classes", + 2: "Namespaces", + 3: "Functions", + 4: "Variables", + 5: "Typedefs", + 6: "Enumerations", + 7: "Enumerator", + 8: "Friends" +}; + diff --git a/master/search/typedefs_0.html b/master/search/typedefs_0.html new file mode 100644 index 0000000000..a4684c4ad2 --- /dev/null +++ b/master/search/typedefs_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/typedefs_0.js b/master/search/typedefs_0.js new file mode 100644 index 0000000000..bd14ef4f20 --- /dev/null +++ b/master/search/typedefs_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['constiterator_2742',['ConstIterator',['../classnctl_1_1_hash_map.html#a0d94db54dd4791d1e44c2222d6e0edd6',1,'nctl::HashMap::ConstIterator()'],['../classnctl_1_1_array.html#a5628e9ea35209c5e5e4b63d043de74e9',1,'nctl::Array::ConstIterator()'],['../classnctl_1_1_string.html#a5778c536fa5df460e3f320e0a18d84c4',1,'nctl::String::ConstIterator()'],['../classnctl_1_1_static_string.html#a652a7e6d58608f6538dcae384b60f106',1,'nctl::StaticString::ConstIterator()'],['../classnctl_1_1_static_hash_set.html#ab8c0efd1d733b4ca89d9c655dbf50f79',1,'nctl::StaticHashSet::ConstIterator()'],['../classnctl_1_1_static_hash_map.html#a5a98f7f5e45a4d26d9fddd5ee06a0bb4',1,'nctl::StaticHashMap::ConstIterator()'],['../classnctl_1_1_static_array.html#a0b87605da750ae93b604bf46b23c4d5b',1,'nctl::StaticArray::ConstIterator()'],['../classnctl_1_1_sparse_set.html#a3f9ae2eae2ebea321bba33b555b1192b',1,'nctl::SparseSet::ConstIterator()'],['../classnctl_1_1_list.html#a5380cb7ed37250c5d2abc31347362b0a',1,'nctl::List::ConstIterator()'],['../classnctl_1_1_hash_set_list.html#a2f58392974ff371b4adbbf19ccbb32d1',1,'nctl::HashSetList::ConstIterator()'],['../classnctl_1_1_hash_set.html#a347cb1b07cfcadd89b36256e7d13e429',1,'nctl::HashSet::ConstIterator()'],['../classnctl_1_1_hash_map_list.html#a6d7981e22a764fd77e996d313eb361c5',1,'nctl::HashMapList::ConstIterator()']]], + ['constreverseiterator_2743',['ConstReverseIterator',['../classnctl_1_1_string.html#a6f3a057d1e1de491f28968b79f3342a0',1,'nctl::String::ConstReverseIterator()'],['../classnctl_1_1_static_string.html#aab874897425aaaa95334484cd42cc557',1,'nctl::StaticString::ConstReverseIterator()'],['../classnctl_1_1_static_hash_set.html#a21dd6f0ab672687b793e66f28f4feb8c',1,'nctl::StaticHashSet::ConstReverseIterator()'],['../classnctl_1_1_static_hash_map.html#a98639995ec6431558605b0fa44639111',1,'nctl::StaticHashMap::ConstReverseIterator()'],['../classnctl_1_1_static_array.html#aa5b7325044431924e05a094fe153bf39',1,'nctl::StaticArray::ConstReverseIterator()'],['../classnctl_1_1_sparse_set.html#a729f33143183e43bb8691d017caf166b',1,'nctl::SparseSet::ConstReverseIterator()'],['../classnctl_1_1_list.html#aa82b724a685584cd6809025fe42acd40',1,'nctl::List::ConstReverseIterator()'],['../classnctl_1_1_hash_set_list.html#a1fd87394ff67ea1253144caf95412616',1,'nctl::HashSetList::ConstReverseIterator()'],['../classnctl_1_1_hash_set.html#ad6459c693d6c2ea6260c216dfe25fc5c',1,'nctl::HashSet::ConstReverseIterator()'],['../classnctl_1_1_hash_map_list.html#a5a3caec76f1b6e924816ac74c9052366',1,'nctl::HashMapList::ConstReverseIterator()'],['../classnctl_1_1_hash_map.html#a47d8d49d1dd543d2ab47cb29992b95f8',1,'nctl::HashMap::ConstReverseIterator()'],['../classnctl_1_1_array.html#a0f52e1bcd986740a328e013dfdfc7f81',1,'nctl::Array::ConstReverseIterator()']]] +]; diff --git a/master/search/typedefs_1.html b/master/search/typedefs_1.html new file mode 100644 index 0000000000..46cf01e62b --- /dev/null +++ b/master/search/typedefs_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/typedefs_1.js b/master/search/typedefs_1.js new file mode 100644 index 0000000000..d0179326a3 --- /dev/null +++ b/master/search/typedefs_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['iterator_2744',['Iterator',['../classnctl_1_1_array.html#a977f8da005a720f8c406bec6aeaf88cc',1,'nctl::Array::Iterator()'],['../classnctl_1_1_hash_map.html#a42458e5026b13b08396c7775325bcab3',1,'nctl::HashMap::Iterator()'],['../classnctl_1_1_hash_map_list.html#a57c438c32b948edd718607b6eb0bee36',1,'nctl::HashMapList::Iterator()'],['../classnctl_1_1_hash_set.html#a9e3cbdc50ca964f17481357a372d05d0',1,'nctl::HashSet::Iterator()'],['../classnctl_1_1_hash_set_list.html#aaa82e2a127f4375694c692f82663ed3f',1,'nctl::HashSetList::Iterator()'],['../classnctl_1_1_list.html#a03439fb2b3456a0fa9d304604e585b94',1,'nctl::List::Iterator()'],['../classnctl_1_1_sparse_set.html#a3515a9ee7502adf2782c294c6108125b',1,'nctl::SparseSet::Iterator()'],['../classnctl_1_1_static_array.html#a2965b439c63d7f73ff395cae82f912a0',1,'nctl::StaticArray::Iterator()'],['../classnctl_1_1_static_hash_map.html#ad610cabf832889bd7c67d5682e6ad3b9',1,'nctl::StaticHashMap::Iterator()'],['../classnctl_1_1_static_hash_set.html#a140c36720c5e7beac1f7348e70025af5',1,'nctl::StaticHashSet::Iterator()'],['../classnctl_1_1_static_string.html#a0bff23efe3579e4a48ca438a275c760d',1,'nctl::StaticString::Iterator()'],['../classnctl_1_1_string.html#a701145a53fbdf14cbbde6a852208a942',1,'nctl::String::Iterator()']]] +]; diff --git a/master/search/typedefs_2.html b/master/search/typedefs_2.html new file mode 100644 index 0000000000..6835ee65b4 --- /dev/null +++ b/master/search/typedefs_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/typedefs_2.js b/master/search/typedefs_2.js new file mode 100644 index 0000000000..4afbd8ec23 --- /dev/null +++ b/master/search/typedefs_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['pointer_2745',['Pointer',['../structnctl_1_1_iterator_traits_3_01_list_iterator_3_01_t_00_01true_01_4_01_4.html#a4a2ceb69849662dd74abeb6a0dc373e6',1,'nctl::IteratorTraits< ListIterator< T, true > >::Pointer()'],['../classnctl_1_1_string_iterator.html#acc5011914521c9960b610d27453ed163',1,'nctl::StringIterator::Pointer()'],['../structnctl_1_1_iterator_traits_3_01_string_iterator_3_01true_01_4_01_4.html#aee45a2abda35304565442c5f84cc8b0d',1,'nctl::IteratorTraits< StringIterator< true > >::Pointer()'],['../structnctl_1_1_iterator_traits_3_01_string_iterator_3_01false_01_4_01_4.html#af9a3267fb0e8eb84bc8b6691489ebe50',1,'nctl::IteratorTraits< StringIterator< false > >::Pointer()'],['../structnctl_1_1_iterator_traits_3_01_static_hash_set_iterator_3_01_k_00_01_hash_func_00_01_capacity_01_4_01_4.html#a9d1a2fa91b0789a9abb1a38e32730933',1,'nctl::IteratorTraits< StaticHashSetIterator< K, HashFunc, Capacity > >::Pointer()'],['../structnctl_1_1_iterator_traits_3_01_static_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01true_01_4_01_4.html#a545951b42aa57c1e46e5ecf28a52d94a',1,'nctl::IteratorTraits< StaticHashMapIterator< K, T, HashFunc, Capacity, true > >::Pointer()'],['../structnctl_1_1_iterator_traits_3_01_static_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01false_01_4_01_4.html#a06cc38491fcfda57d68ff9d2da8cb6eb',1,'nctl::IteratorTraits< StaticHashMapIterator< K, T, HashFunc, Capacity, false > >::Pointer()'],['../structnctl_1_1_iterator_traits_3_01_sparse_set_iterator_3_01_t_01_4_01_4.html#ad1d8cf83322b07be5a4db6ef79ce5010',1,'nctl::IteratorTraits< SparseSetIterator< T > >::Pointer()'],['../structnctl_1_1_iterator_traits_3_01_reverse_iterator_3_01_iterator_01_4_01_4.html#acef63e48e5239c4959e0c4bcbfb9ca68',1,'nctl::IteratorTraits< ReverseIterator< Iterator > >::Pointer()'],['../classnctl_1_1_reverse_iterator.html#a9254457c024846903a27612b90c896b5',1,'nctl::ReverseIterator::Pointer()'],['../classnctl_1_1_array_iterator.html#ae9f266028ccedd44936797d6ccd44252',1,'nctl::ArrayIterator::Pointer()'],['../structnctl_1_1_iterator_traits_3_01_list_iterator_3_01_t_00_01false_01_4_01_4.html#a8ae749665d986ecd17f19f9f7fd0e9e6',1,'nctl::IteratorTraits< ListIterator< T, false > >::Pointer()'],['../structnctl_1_1_iterator_traits_3_01_hash_set_list_iterator_3_01_k_00_01_hash_func_01_4_01_4.html#ae30db65c966ca1e947d79513eb0ae1db',1,'nctl::IteratorTraits< HashSetListIterator< K, HashFunc > >::Pointer()'],['../structnctl_1_1_iterator_traits_3_01_hash_set_iterator_3_01_k_00_01_hash_func_01_4_01_4.html#a05bf13e70f584f726cc565bdbfe66fdc',1,'nctl::IteratorTraits< HashSetIterator< K, HashFunc > >::Pointer()'],['../structnctl_1_1_iterator_traits_3_01_hash_map_list_iterator_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4_01_4.html#a568008f0080e97c109dfcf06e8796f48',1,'nctl::IteratorTraits< HashMapListIterator< K, T, HashFunc, true > >::Pointer()'],['../structnctl_1_1_iterator_traits_3_01_hash_map_list_iterator_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4_01_4.html#ae6e3590dc9d24f758281438b310a9465',1,'nctl::IteratorTraits< HashMapListIterator< K, T, HashFunc, false > >::Pointer()'],['../structnctl_1_1_iterator_traits_3_01_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4_01_4.html#a81a0eba3e7757751fdbb0b42150ba624',1,'nctl::IteratorTraits< HashMapIterator< K, T, HashFunc, true > >::Pointer()'],['../structnctl_1_1_iterator_traits_3_01_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4_01_4.html#a6411478bd82bd8351cef568ca35b00f1',1,'nctl::IteratorTraits< HashMapIterator< K, T, HashFunc, false > >::Pointer()'],['../structnctl_1_1_iterator_traits_3_01_array_iterator_3_01_t_00_01true_01_4_01_4.html#a404eed547837a7642ca38400269d4c41',1,'nctl::IteratorTraits< ArrayIterator< T, true > >::Pointer()'],['../structnctl_1_1_iterator_traits_3_01_array_iterator_3_01_t_00_01false_01_4_01_4.html#a1edfe9b84e11e6515b3001daaf10d5f8',1,'nctl::IteratorTraits< ArrayIterator< T, false > >::Pointer()']]] +]; diff --git a/master/search/typedefs_3.html b/master/search/typedefs_3.html new file mode 100644 index 0000000000..017004765b --- /dev/null +++ b/master/search/typedefs_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/typedefs_3.js b/master/search/typedefs_3.js new file mode 100644 index 0000000000..b6b2295717 --- /dev/null +++ b/master/search/typedefs_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['reference_2746',['Reference',['../structnctl_1_1_iterator_traits_3_01_array_iterator_3_01_t_00_01false_01_4_01_4.html#a2f446447c4ca2ba2f581ec1fef9f2e4d',1,'nctl::IteratorTraits< ArrayIterator< T, false > >::Reference()'],['../classnctl_1_1_string_iterator.html#aa232b29b2b2e18bd7523b8d0a72db935',1,'nctl::StringIterator::Reference()'],['../structnctl_1_1_iterator_traits_3_01_string_iterator_3_01true_01_4_01_4.html#ae578051a516bc24e1a44133baef680a0',1,'nctl::IteratorTraits< StringIterator< true > >::Reference()'],['../structnctl_1_1_iterator_traits_3_01_string_iterator_3_01false_01_4_01_4.html#abe9d9c1b815ea557f529bac3ecf9b095',1,'nctl::IteratorTraits< StringIterator< false > >::Reference()'],['../structnctl_1_1_iterator_traits_3_01_static_hash_set_iterator_3_01_k_00_01_hash_func_00_01_capacity_01_4_01_4.html#a7315f7fd52e246826609f774f4bafc22',1,'nctl::IteratorTraits< StaticHashSetIterator< K, HashFunc, Capacity > >::Reference()'],['../classnctl_1_1_static_hash_set_iterator.html#a291b8148bf3b1c3e5370e8ee672170bc',1,'nctl::StaticHashSetIterator::Reference()'],['../structnctl_1_1_iterator_traits_3_01_static_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01true_01_4_01_4.html#a0d1bc580bf952599e6f05b8c6f693509',1,'nctl::IteratorTraits< StaticHashMapIterator< K, T, HashFunc, Capacity, true > >::Reference()'],['../structnctl_1_1_iterator_traits_3_01_static_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01false_01_4_01_4.html#a82fc04eea0d1180bf364e8f61550ba8f',1,'nctl::IteratorTraits< StaticHashMapIterator< K, T, HashFunc, Capacity, false > >::Reference()'],['../classnctl_1_1_static_hash_map_iterator.html#a7faf247aa70f3437343d2769390c7e17',1,'nctl::StaticHashMapIterator::Reference()'],['../structnctl_1_1_iterator_traits_3_01_sparse_set_iterator_3_01_t_01_4_01_4.html#a2b0add30fd1cd0272e6ad7e40b409f70',1,'nctl::IteratorTraits< SparseSetIterator< T > >::Reference()'],['../classnctl_1_1_sparse_set_iterator.html#a9e6d122a56d39000f0833ac5735137a5',1,'nctl::SparseSetIterator::Reference()'],['../structnctl_1_1_iterator_traits_3_01_reverse_iterator_3_01_iterator_01_4_01_4.html#abf3e821626fa23d022f396dbdaa7bbd4',1,'nctl::IteratorTraits< ReverseIterator< Iterator > >::Reference()'],['../classnctl_1_1_reverse_iterator.html#a10c5ffe214db5db1ced2ac36eb76cff3',1,'nctl::ReverseIterator::Reference()'],['../structnctl_1_1_iterator_traits_3_01_list_iterator_3_01_t_00_01true_01_4_01_4.html#ad79de2f423c66ae362f9c99b4e98e123',1,'nctl::IteratorTraits< ListIterator< T, true > >::Reference()'],['../classnctl_1_1_list_iterator.html#a2a01b088d5e68928ac7f1426c2e9d21e',1,'nctl::ListIterator::Reference()'],['../classnctl_1_1_array_iterator.html#a4a406418e4f01a4aba92bfd3f50a211c',1,'nctl::ArrayIterator::Reference()'],['../structnctl_1_1_iterator_traits_3_01_array_iterator_3_01_t_00_01true_01_4_01_4.html#aa7f22aee2ff6876a5e1892b74b7bff51',1,'nctl::IteratorTraits< ArrayIterator< T, true > >::Reference()'],['../classnctl_1_1_hash_map_iterator.html#a36df88b26498a9425e365f87929998eb',1,'nctl::HashMapIterator::Reference()'],['../structnctl_1_1_iterator_traits_3_01_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4_01_4.html#ad7ea048413704513d4e6c6e111ac7780',1,'nctl::IteratorTraits< HashMapIterator< K, T, HashFunc, false > >::Reference()'],['../structnctl_1_1_iterator_traits_3_01_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4_01_4.html#a0f1fd91074935ac1a81ffc6275b10c38',1,'nctl::IteratorTraits< HashMapIterator< K, T, HashFunc, true > >::Reference()'],['../classnctl_1_1_hash_map_list_iterator.html#a7afd44d0f11db0e7dadfa51bbe04bf97',1,'nctl::HashMapListIterator::Reference()'],['../structnctl_1_1_iterator_traits_3_01_hash_map_list_iterator_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4_01_4.html#a349f0d4b87964c5f38ec3bb615609180',1,'nctl::IteratorTraits< HashMapListIterator< K, T, HashFunc, true > >::Reference()'],['../classnctl_1_1_hash_set_iterator.html#a73a554e691bad6d885c6327c82de1e9d',1,'nctl::HashSetIterator::Reference()'],['../structnctl_1_1_iterator_traits_3_01_hash_set_iterator_3_01_k_00_01_hash_func_01_4_01_4.html#a247e82244577cd9f4a8f73fce09efe83',1,'nctl::IteratorTraits< HashSetIterator< K, HashFunc > >::Reference()'],['../classnctl_1_1_hash_set_list_iterator.html#ad22d0f27bc6c68ad8120118e5b0ef21e',1,'nctl::HashSetListIterator::Reference()'],['../structnctl_1_1_iterator_traits_3_01_hash_set_list_iterator_3_01_k_00_01_hash_func_01_4_01_4.html#a04c9e704b5ff1b723e05258b9bac1f54',1,'nctl::IteratorTraits< HashSetListIterator< K, HashFunc > >::Reference()'],['../structnctl_1_1_iterator_traits_3_01_list_iterator_3_01_t_00_01false_01_4_01_4.html#a497d07ffb52e4794321eec3e56c601a6',1,'nctl::IteratorTraits< ListIterator< T, false > >::Reference()'],['../structnctl_1_1_iterator_traits_3_01_hash_map_list_iterator_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4_01_4.html#a1bc849882addc64923f86608d236c7a4',1,'nctl::IteratorTraits< HashMapListIterator< K, T, HashFunc, false > >::Reference()']]], + ['reverseiterator_2747',['ReverseIterator',['../classnctl_1_1_string.html#a785fbc0abe3cdd8aceb187e141c1bd63',1,'nctl::String::ReverseIterator()'],['../classnctl_1_1_static_string.html#a381f71b884f9233076307795964e85eb',1,'nctl::StaticString::ReverseIterator()'],['../classnctl_1_1_static_hash_set.html#a416ce5c1df7f6273ad552e032f110afa',1,'nctl::StaticHashSet::ReverseIterator()'],['../classnctl_1_1_static_hash_map.html#adce71beb0c037f15c26ca5ab02541a84',1,'nctl::StaticHashMap::ReverseIterator()'],['../classnctl_1_1_static_array.html#acc1ad65e8e4e6425bd754d098472539a',1,'nctl::StaticArray::ReverseIterator()'],['../classnctl_1_1_sparse_set.html#afa8106c13e1df8fc6c4a405a739758bc',1,'nctl::SparseSet::ReverseIterator()'],['../classnctl_1_1_list.html#aaff52cf986ccbe54eb25d4e2f4301cc1',1,'nctl::List::ReverseIterator()'],['../classnctl_1_1_hash_set_list.html#ab5feb39736d2d3bd2a9f79b88a2debb7',1,'nctl::HashSetList::ReverseIterator()'],['../classnctl_1_1_hash_set.html#a17d87403cde193815c6449e058912cf4',1,'nctl::HashSet::ReverseIterator()'],['../classnctl_1_1_hash_map_list.html#a816afa8ead2c90d0c51363142b5c1f96',1,'nctl::HashMapList::ReverseIterator()'],['../classnctl_1_1_hash_map.html#a21f6f46b6db6da955bc1d5f63e4039af',1,'nctl::HashMap::ReverseIterator()'],['../classnctl_1_1_array.html#acb1e98c7c038f4f988a9de6397f41ba4',1,'nctl::Array::ReverseIterator()']]] +]; diff --git a/master/search/typedefs_4.html b/master/search/typedefs_4.html new file mode 100644 index 0000000000..81466a5d25 --- /dev/null +++ b/master/search/typedefs_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/typedefs_4.js b/master/search/typedefs_4.js new file mode 100644 index 0000000000..f0974d3f92 --- /dev/null +++ b/master/search/typedefs_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['valuetype_2748',['ValueType',['../structnctl_1_1_iterator_traits_3_01_list_iterator_3_01_t_00_01false_01_4_01_4.html#a9a36995893718b04e9ca85d6e640bb4e',1,'nctl::IteratorTraits< ListIterator< T, false > >::ValueType()'],['../structnctl_1_1_iterator_traits_3_01_string_iterator_3_01true_01_4_01_4.html#ad738503f1c29c4a78bb9bf20238d43a1',1,'nctl::IteratorTraits< StringIterator< true > >::ValueType()'],['../structnctl_1_1_iterator_traits_3_01_string_iterator_3_01false_01_4_01_4.html#a3b427b734500fcf7722ea4c5eb412e3f',1,'nctl::IteratorTraits< StringIterator< false > >::ValueType()'],['../structnctl_1_1_iterator_traits_3_01_static_hash_set_iterator_3_01_k_00_01_hash_func_00_01_capacity_01_4_01_4.html#a903f6b6c22987b38e6f693e8ed192327',1,'nctl::IteratorTraits< StaticHashSetIterator< K, HashFunc, Capacity > >::ValueType()'],['../structnctl_1_1_iterator_traits_3_01_static_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01true_01_4_01_4.html#a69ef6838f5589124f7e93abd2e1fdf81',1,'nctl::IteratorTraits< StaticHashMapIterator< K, T, HashFunc, Capacity, true > >::ValueType()'],['../structnctl_1_1_iterator_traits_3_01_static_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01false_01_4_01_4.html#a2fa46dbf2c510836d7b38746c1342d76',1,'nctl::IteratorTraits< StaticHashMapIterator< K, T, HashFunc, Capacity, false > >::ValueType()'],['../structnctl_1_1_iterator_traits_3_01_sparse_set_iterator_3_01_t_01_4_01_4.html#a22515ae6133eed447eef261c63950bb7',1,'nctl::IteratorTraits< SparseSetIterator< T > >::ValueType()'],['../structnctl_1_1_iterator_traits_3_01_reverse_iterator_3_01_iterator_01_4_01_4.html#aad3db8090e8917302ade16145ac4397a',1,'nctl::IteratorTraits< ReverseIterator< Iterator > >::ValueType()'],['../structnctl_1_1_iterator_traits_3_01_list_iterator_3_01_t_00_01true_01_4_01_4.html#acdb7975d6d11318afa343aebd54973c4',1,'nctl::IteratorTraits< ListIterator< T, true > >::ValueType()'],['../structnctl_1_1_iterator_traits_3_01_array_iterator_3_01_t_00_01false_01_4_01_4.html#a6e26e673bd5fb9b40777f532742b801f',1,'nctl::IteratorTraits< ArrayIterator< T, false > >::ValueType()'],['../structnctl_1_1_iterator_traits_3_01_hash_set_list_iterator_3_01_k_00_01_hash_func_01_4_01_4.html#ac57350c60a2d549699af7ba678fe2270',1,'nctl::IteratorTraits< HashSetListIterator< K, HashFunc > >::ValueType()'],['../structnctl_1_1_iterator_traits_3_01_hash_set_iterator_3_01_k_00_01_hash_func_01_4_01_4.html#ac71aa7782f613db6afdc618d4406f61e',1,'nctl::IteratorTraits< HashSetIterator< K, HashFunc > >::ValueType()'],['../structnctl_1_1_iterator_traits_3_01_hash_map_list_iterator_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4_01_4.html#a544f1f2b7c0a0bfd6363760ad838a12d',1,'nctl::IteratorTraits< HashMapListIterator< K, T, HashFunc, true > >::ValueType()'],['../structnctl_1_1_iterator_traits_3_01_hash_map_list_iterator_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4_01_4.html#a39ea68f297aea1b0dfa4be529aa7b836',1,'nctl::IteratorTraits< HashMapListIterator< K, T, HashFunc, false > >::ValueType()'],['../structnctl_1_1_iterator_traits_3_01_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4_01_4.html#aa6bc2931532dc8ec040f5bb40b7a3dfb',1,'nctl::IteratorTraits< HashMapIterator< K, T, HashFunc, true > >::ValueType()'],['../structnctl_1_1_iterator_traits_3_01_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4_01_4.html#a8ce7f0f4d4a2ea7f462f5fc63a21d736',1,'nctl::IteratorTraits< HashMapIterator< K, T, HashFunc, false > >::ValueType()'],['../structnctl_1_1_iterator_traits_3_01_array_iterator_3_01_t_00_01true_01_4_01_4.html#ae98973b06c1a1c3371783254f92d3c91',1,'nctl::IteratorTraits< ArrayIterator< T, true > >::ValueType()']]] +]; diff --git a/master/search/variables_0.html b/master/search/variables_0.html new file mode 100644 index 0000000000..1e477c08c4 --- /dev/null +++ b/master/search/variables_0.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/variables_0.js b/master/search/variables_0.js new file mode 100644 index 0000000000..037b7df76d --- /dev/null +++ b/master/search/variables_0.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['aabb_5f_2581',['aabb_',['../classncine_1_1_drawable_node.html#a972e103478205157b74bbac1e33bf022',1,'ncine::DrawableNode']]], + ['abscolor_5f_2582',['absColor_',['../classncine_1_1_scene_node.html#a98c2b2a83adf02307f04556ffe4eeaa3',1,'ncine::SceneNode']]], + ['abslayer_5f_2583',['absLayer_',['../classncine_1_1_scene_node.html#aa0175be8f70ec7dfd15dbcde8d323f10',1,'ncine::SceneNode']]], + ['absposition_5f_2584',['absPosition_',['../classncine_1_1_scene_node.html#a2b4ac91b3b4837b70192e60e484abaf5',1,'ncine::SceneNode']]], + ['absrotation_5f_2585',['absRotation_',['../classncine_1_1_scene_node.html#ad268ade19ca3071cfe45289b23692ad0',1,'ncine::SceneNode']]], + ['absscalefactor_5f_2586',['absScaleFactor_',['../classncine_1_1_scene_node.html#a88b2c968ec5c457433feee78cefb559e',1,'ncine::SceneNode']]], + ['airabsorptionfactor_5f_2587',['airAbsorptionFactor_',['../classncine_1_1_i_audio_player.html#a0a1ff251d214ccd9544a81a628a52b55',1,'ncine::IAudioPlayer']]], + ['anchorpoint_5f_2588',['anchorPoint_',['../classncine_1_1_scene_node.html#a4e56af0c16394f559e3ca1f9df9326d2',1,'ncine::SceneNode']]], + ['auxfilterid_5f_2589',['auxFilterId_',['../classncine_1_1_i_audio_player.html#a00452b0990291a17d7f4601586f8ffbe',1,'ncine::IAudioPlayer']]], + ['axisid_2590',['axisId',['../classncine_1_1_joy_axis_event.html#a7d1fd9f94303ecb3c7bf7fa0e8321915',1,'ncine::JoyAxisEvent']]], + ['axisname_2591',['axisName',['../classncine_1_1_joy_mapped_axis_event.html#ac1c70dd7cb0497d9ce638c69726131af',1,'ncine::JoyMappedAxisEvent']]] +]; diff --git a/master/search/variables_1.html b/master/search/variables_1.html new file mode 100644 index 0000000000..ea73d9a494 --- /dev/null +++ b/master/search/variables_1.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/variables_1.js b/master/search/variables_1.js new file mode 100644 index 0000000000..3aee769ffc --- /dev/null +++ b/master/search/variables_1.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['backendscaleswindowsize_5f_2592',['backendScalesWindowSize_',['../classncine_1_1_i_gfx_device.html#af6b1c152bf5f3b6ba7ceb0f73f0477e4',1,'ncine::IGfxDevice']]], + ['batchingenabled_2593',['batchingEnabled',['../structncine_1_1_application_1_1_rendering_settings.html#a1de883852f071076eb5c94564c3ca304',1,'ncine::Application::RenderingSettings']]], + ['batchingwithindices_2594',['batchingWithIndices',['../structncine_1_1_application_1_1_rendering_settings.html#a34161b68f640b2db0e51bbba5f196ab6',1,'ncine::Application::RenderingSettings']]], + ['buttonid_2595',['buttonId',['../classncine_1_1_joy_button_event.html#aad379e7640b068e90716fdabf5e89208',1,'ncine::JoyButtonEvent']]], + ['buttonname_2596',['buttonName',['../classncine_1_1_joy_mapped_button_event.html#af66bce342f9914a90f4eb4ea1698a2e7',1,'ncine::JoyMappedButtonEvent']]] +]; diff --git a/master/search/variables_10.html b/master/search/variables_10.html new file mode 100644 index 0000000000..dc9920b6d4 --- /dev/null +++ b/master/search/variables_10.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/variables_10.js b/master/search/variables_10.js new file mode 100644 index 0000000000..5c62cb4ae3 --- /dev/null +++ b/master/search/variables_10.js @@ -0,0 +1,20 @@ +var searchData= +[ + ['scale_2690',['scale',['../structncine_1_1_i_gfx_device_1_1_monitor.html#a64f5d9e1dd326881dbd81c626a26c759',1,'ncine::IGfxDevice::Monitor']]], + ['scalefactor_5f_2691',['scaleFactor_',['../classncine_1_1_scene_node.html#ae89693e286f5729d5f8c2ab3bc9896bd',1,'ncine::SceneNode']]], + ['scancode_2692',['scancode',['../classncine_1_1_keyboard_event.html#a5cc6e2423c478cc965845a144af80d52',1,'ncine::KeyboardEvent']]], + ['shadercachedirname_2693',['shaderCacheDirname',['../classncine_1_1_app_configuration.html#a2e6e46983ea9200409ab8e9128647126',1,'ncine::AppConfiguration']]], + ['shouldcloseondestruction_5f_2694',['shouldCloseOnDestruction_',['../classncine_1_1_i_file.html#a94041fcb5be9a471174a540dc8a12391',1,'ncine::IFile']]], + ['shoulddeletechildrenondestruction_5f_2695',['shouldDeleteChildrenOnDestruction_',['../classncine_1_1_scene_node.html#a836ceb325e50d36488171ac4fe6083d9',1,'ncine::SceneNode']]], + ['showinfotext_2696',['showInfoText',['../structncine_1_1_i_debug_overlay_1_1_display_settings.html#a6f868577a161d72ba32e94f12f005583',1,'ncine::IDebugOverlay::DisplaySettings']]], + ['showinterface_2697',['showInterface',['../structncine_1_1_i_debug_overlay_1_1_display_settings.html#a4478af7683fb52330b8ff69532afbb0a',1,'ncine::IDebugOverlay::DisplaySettings']]], + ['showprofilergraphs_2698',['showProfilerGraphs',['../structncine_1_1_i_debug_overlay_1_1_display_settings.html#a16bffe7bf0b48e6dc156a8d29ea4c8ed',1,'ncine::IDebugOverlay::DisplaySettings']]], + ['sourceid_5f_2699',['sourceId_',['../classncine_1_1_i_audio_player.html#ac726fc5e36b0a95e59b1bc6612cfb059',1,'ncine::IAudioPlayer']]], + ['sourcelocked_5f_2700',['sourceLocked_',['../classncine_1_1_i_audio_player.html#a792ab55ef117ef5d5e6ff41d5b60effa',1,'ncine::IAudioPlayer']]], + ['startinglife_2701',['startingLife',['../classncine_1_1_particle.html#a31b44ef90a924225f03edbeb113e8cec',1,'ncine::Particle']]], + ['startingrotation_2702',['startingRotation',['../classncine_1_1_particle.html#ae9c0f47df361dd7346adb397b9e1b5d4',1,'ncine::Particle']]], + ['state_5f_2703',['state_',['../classncine_1_1_i_audio_player.html#a2820a278c4c176041fc696e202a49b6c',1,'ncine::IAudioPlayer']]], + ['statebits_5f_2704',['stateBits_',['../classncine_1_1_viewport.html#a1f55adc4215bc071278dcab1da1c3578',1,'ncine::Viewport']]], + ['stereoaudiosources_2705',['stereoAudioSources',['../classncine_1_1_app_configuration.html#a2dff14c306eae809a89c147e3ad5d77f',1,'ncine::AppConfiguration']]], + ['sym_2706',['sym',['../classncine_1_1_keyboard_event.html#ac11d9d60cccef321bea19f5b7c484ab8',1,'ncine::KeyboardEvent']]] +]; diff --git a/master/search/variables_11.html b/master/search/variables_11.html new file mode 100644 index 0000000000..704bcb1879 --- /dev/null +++ b/master/search/variables_11.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/variables_11.js b/master/search/variables_11.js new file mode 100644 index 0000000000..9fe009f11e --- /dev/null +++ b/master/search/variables_11.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['texrect_5f_2707',['texRect_',['../classncine_1_1_base_sprite.html#a534738fc0a176e5184a2ac3e66ff29b5',1,'ncine::BaseSprite']]], + ['text_2708',['text',['../classncine_1_1_text_input_event.html#a053c6bf572cd457827a009f6d257655a',1,'ncine::TextInputEvent']]], + ['texture_5f_2709',['texture_',['../classncine_1_1_base_sprite.html#a0d2de67137146ca2c73981910ef29bea',1,'ncine::BaseSprite']]], + ['type_5f_2710',['type_',['../classncine_1_1_i_file.html#a5350514d0358e9d154f34215c442b931',1,'ncine::IFile::type_()'],['../classncine_1_1_object.html#adaa96983790a2e67e1c7dd35ba65d8cb',1,'ncine::Object::type_()'],['../classncine_1_1_particle_affector.html#acb9b6ede8af4799f853a2d87269b39f8',1,'ncine::ParticleAffector::type_()']]] +]; diff --git a/master/search/variables_12.html b/master/search/variables_12.html new file mode 100644 index 0000000000..a3a32eb8e7 --- /dev/null +++ b/master/search/variables_12.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/variables_12.js b/master/search/variables_12.js new file mode 100644 index 0000000000..b4c8402c61 --- /dev/null +++ b/master/search/variables_12.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['usebinaryshadercache_2711',['useBinaryShaderCache',['../classncine_1_1_app_configuration.html#a500b00626e2a2771aac631a75b11cf9b',1,'ncine::AppConfiguration']]], + ['usebuffermapping_2712',['useBufferMapping',['../classncine_1_1_app_configuration.html#a1950578165d72c3a71d2a937d9e8cddc',1,'ncine::AppConfiguration']]] +]; diff --git a/master/search/variables_13.html b/master/search/variables_13.html new file mode 100644 index 0000000000..7d05bd863b --- /dev/null +++ b/master/search/variables_13.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/variables_13.js b/master/search/variables_13.js new file mode 100644 index 0000000000..49e0fe4a14 --- /dev/null +++ b/master/search/variables_13.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['value_2713',['value',['../classncine_1_1_joy_axis_event.html#a8e3aa632dbf3aa09413a46ab7ca0efe2',1,'ncine::JoyAxisEvent::value()'],['../classncine_1_1_joy_mapped_axis_event.html#a12e012caf9fc08031b17efb8073dbd9d',1,'ncine::JoyMappedAxisEvent::value()']]], + ['vaopoolsize_2714',['vaoPoolSize',['../classncine_1_1_app_configuration.html#ac17249174c4668988c2d686daff63464',1,'ncine::AppConfiguration']]], + ['vbosize_2715',['vboSize',['../classncine_1_1_app_configuration.html#a15dcf2a7ff3d9d96cf1e9193af56eaef',1,'ncine::AppConfiguration']]], + ['velocity_5f_2716',['velocity_',['../classncine_1_1_i_audio_player.html#a5061a9d884894c7779a416bf22f2a956',1,'ncine::IAudioPlayer::velocity_()'],['../classncine_1_1_particle.html#a67338c7ce276f53f75db9b2014784637',1,'ncine::Particle::velocity_()']]], + ['videomodes_2717',['videoModes',['../structncine_1_1_i_gfx_device_1_1_monitor.html#aa84025363bcc26446062dd409182e402',1,'ncine::IGfxDevice::Monitor']]], + ['visitorderindex_5f_2718',['visitOrderIndex_',['../classncine_1_1_scene_node.html#a9d480e671115a86b75fd5ec50ec81ee8',1,'ncine::SceneNode']]], + ['visitorderstate_5f_2719',['visitOrderState_',['../classncine_1_1_scene_node.html#a6697cae84029ac5cd4a9643493903b88',1,'ncine::SceneNode']]] +]; diff --git a/master/search/variables_14.html b/master/search/variables_14.html new file mode 100644 index 0000000000..ab9e0fa9b2 --- /dev/null +++ b/master/search/variables_14.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/variables_14.js b/master/search/variables_14.js new file mode 100644 index 0000000000..8aaabd989a --- /dev/null +++ b/master/search/variables_14.js @@ -0,0 +1,19 @@ +var searchData= +[ + ['w_2720',['w',['../classncine_1_1_rect.html#ab62b88957dd3df5f0ef8e9a4a37e09c2',1,'ncine::Rect']]], + ['waxis_2721',['WAxis',['../classncine_1_1_vector4.html#ae7c5bcd20c90734e5bc6556ab6b7f279',1,'ncine::Vector4']]], + ['width_5f_2722',['width_',['../classncine_1_1_drawable_node.html#a96b0806b276c54946a8772b60780e4df',1,'ncine::DrawableNode::width_()'],['../classncine_1_1_i_gfx_device.html#a5fdba72b1fee0409d03cb5966300ca60',1,'ncine::IGfxDevice::width_()']]], + ['windowiconfilename_2723',['windowIconFilename',['../classncine_1_1_app_configuration.html#aa011fc81b111e2e0ba6e63205d29ca95',1,'ncine::AppConfiguration']]], + ['windowposition_2724',['windowPosition',['../classncine_1_1_app_configuration.html#a866c04d398c78f4002712ec41e6e3f4b',1,'ncine::AppConfiguration']]], + ['windowscaling_2725',['windowScaling',['../classncine_1_1_app_configuration.html#aa315ef2fd051718fdc626e1ecb4175ac',1,'ncine::AppConfiguration']]], + ['windowtitle_2726',['windowTitle',['../classncine_1_1_app_configuration.html#aa5bd1eee8738ae8bd500ce37e818fc5a',1,'ncine::AppConfiguration']]], + ['withaudio_2727',['withAudio',['../classncine_1_1_app_configuration.html#ac714fc84d81825618c4563c23df20aad',1,'ncine::AppConfiguration']]], + ['withconsolecolors_2728',['withConsoleColors',['../classncine_1_1_app_configuration.html#aa5bc40ade2a26eae28ade2d618bd5dea',1,'ncine::AppConfiguration']]], + ['withdebugoverlay_2729',['withDebugOverlay',['../classncine_1_1_app_configuration.html#ad39881685310b03a86bd31d7b106f7a9',1,'ncine::AppConfiguration']]], + ['withgldebugcontext_2730',['withGlDebugContext',['../classncine_1_1_app_configuration.html#a593009b3cdb7aa46d40835da55506dfe',1,'ncine::AppConfiguration']]], + ['withscenegraph_2731',['withScenegraph',['../classncine_1_1_app_configuration.html#ac6038feeb10b63e151078fd9083607ed',1,'ncine::AppConfiguration']]], + ['withthreads_2732',['withThreads',['../classncine_1_1_app_configuration.html#a3c5b9b0c0c81a05ba0a54db00a616ea6',1,'ncine::AppConfiguration']]], + ['withvisitorder_5f_2733',['withVisitOrder_',['../classncine_1_1_scene_node.html#ae70d692f95f6851c2f2f0271e253e71e',1,'ncine::SceneNode']]], + ['withvsync_2734',['withVSync',['../classncine_1_1_app_configuration.html#a83615e6d170c8b4c6f40578cd6f25532',1,'ncine::AppConfiguration']]], + ['worldmatrix_5f_2735',['worldMatrix_',['../classncine_1_1_scene_node.html#afe2c6faf5ee5a454f2446032268dd0e0',1,'ncine::SceneNode']]] +]; diff --git a/master/search/variables_15.html b/master/search/variables_15.html new file mode 100644 index 0000000000..45b78e3d9e --- /dev/null +++ b/master/search/variables_15.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/variables_15.js b/master/search/variables_15.js new file mode 100644 index 0000000000..e91f1d9ac1 --- /dev/null +++ b/master/search/variables_15.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['x_2736',['x',['../classncine_1_1_mouse_state.html#a6f74bfeb01bcb74a6216cbb26ee22112',1,'ncine::MouseState::x()'],['../classncine_1_1_mouse_event.html#ae77c4e19f87e9d4554d18ff7a9843fee',1,'ncine::MouseEvent::x()'],['../classncine_1_1_scroll_event.html#a1c64f92c916474c734aed548be07d0a6',1,'ncine::ScrollEvent::x()'],['../classncine_1_1_rect.html#ab61a999279575d8932154b4f07279968',1,'ncine::Rect::x()']]], + ['xaxis_2737',['XAxis',['../classncine_1_1_vector2.html#a98b3261c8e917a7bf893f4c6121e2355',1,'ncine::Vector2::XAxis()'],['../classncine_1_1_vector3.html#a8a1a481bca77243451b36ac64943a9e7',1,'ncine::Vector3::XAxis()'],['../classncine_1_1_vector4.html#aca554dee9b9d1a950e1923680038c0a4',1,'ncine::Vector4::XAxis()']]] +]; diff --git a/master/search/variables_16.html b/master/search/variables_16.html new file mode 100644 index 0000000000..8d9f8780cc --- /dev/null +++ b/master/search/variables_16.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/variables_16.js b/master/search/variables_16.js new file mode 100644 index 0000000000..2b1b1cf813 --- /dev/null +++ b/master/search/variables_16.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['y_2738',['y',['../classncine_1_1_mouse_state.html#a25f29eac7025995a6ed6731ba4fcd983',1,'ncine::MouseState::y()'],['../classncine_1_1_mouse_event.html#a8d18be71f74ba229a9513319e9730f68',1,'ncine::MouseEvent::y()'],['../classncine_1_1_scroll_event.html#ac109a954defbaf55b4def0037ecc6130',1,'ncine::ScrollEvent::y()'],['../classncine_1_1_rect.html#a8e80ffd7a415ae1f0ee6046b4501b959',1,'ncine::Rect::y()']]], + ['yaxis_2739',['YAxis',['../classncine_1_1_vector2.html#ac08ca9c0dfe8fd6cae4d14e73be233ea',1,'ncine::Vector2::YAxis()'],['../classncine_1_1_vector3.html#a6d6d3983d2a99199f86b3d2c77b67f8d',1,'ncine::Vector3::YAxis()'],['../classncine_1_1_vector4.html#a924435e0339d7039a06c153d79049e36',1,'ncine::Vector4::YAxis()']]] +]; diff --git a/master/search/variables_17.html b/master/search/variables_17.html new file mode 100644 index 0000000000..b91024bd04 --- /dev/null +++ b/master/search/variables_17.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/variables_17.js b/master/search/variables_17.js new file mode 100644 index 0000000000..ca381b3a53 --- /dev/null +++ b/master/search/variables_17.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['zaxis_2740',['ZAxis',['../classncine_1_1_vector3.html#a59051f5b6caf8e4b7975e77aeb5336cf',1,'ncine::Vector3::ZAxis()'],['../classncine_1_1_vector4.html#af68953f31d9c8e2e686759bb1739c424',1,'ncine::Vector4::ZAxis()']]], + ['zero_2741',['Zero',['../classncine_1_1_matrix4x4.html#a3bcaa8009e42306b46bdbdd0b0c6b496',1,'ncine::Matrix4x4::Zero()'],['../classncine_1_1_quaternion.html#a00bfd663dfb10e25abc81f6b1400fdf9',1,'ncine::Quaternion::Zero()'],['../classncine_1_1_vector2.html#a3792a09be76ec6c649ecfed8e1b73725',1,'ncine::Vector2::Zero()'],['../classncine_1_1_vector3.html#a2dc1a2ee5b45e206f96631295e7ddb9d',1,'ncine::Vector3::Zero()'],['../classncine_1_1_vector4.html#a31683327f964fe45b9c4d3cf8b4663d6',1,'ncine::Vector4::Zero()']]] +]; diff --git a/master/search/variables_2.html b/master/search/variables_2.html new file mode 100644 index 0000000000..0580462e9c --- /dev/null +++ b/master/search/variables_2.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/variables_2.js b/master/search/variables_2.js new file mode 100644 index 0000000000..36e56e0254 --- /dev/null +++ b/master/search/variables_2.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['camera_5f_2597',['camera_',['../classncine_1_1_viewport.html#ab0c547e180c3f449236b6e3545b2fe0a',1,'ncine::Viewport']]], + ['chain_5f_2598',['chain_',['../classncine_1_1_viewport.html#a65b57a706fb905405a17d88b3139785e',1,'ncine::Viewport']]], + ['childorderindex_5f_2599',['childOrderIndex_',['../classncine_1_1_scene_node.html#a2ba951717434f76544e3e34ac1333bbf',1,'ncine::SceneNode']]], + ['children_5f_2600',['children_',['../classncine_1_1_scene_node.html#ac3f30b0abf46419ec534c525c72b6317',1,'ncine::SceneNode']]], + ['color_5f_2601',['color_',['../classncine_1_1_scene_node.html#afd74c6a4d8c920391dcf642a2412fa3a',1,'ncine::SceneNode']]], + ['compilebatchedshaderstwice_2602',['compileBatchedShadersTwice',['../classncine_1_1_app_configuration.html#a8d702c9aa15d43ae1472448275ba349f',1,'ncine::AppConfiguration']]], + ['coneinnerangle_5f_2603',['coneInnerAngle_',['../classncine_1_1_i_audio_player.html#afca7e0ccc0fa812cd23121732e344237',1,'ncine::IAudioPlayer']]], + ['coneouterangle_5f_2604',['coneOuterAngle_',['../classncine_1_1_i_audio_player.html#a5c8e1a47d4ff5e014db627ba5da0123c',1,'ncine::IAudioPlayer']]], + ['coneoutergain_5f_2605',['coneOuterGain_',['../classncine_1_1_i_audio_player.html#a751d4963be679bc5f01ed23111643a94',1,'ncine::IAudioPlayer']]], + ['coneoutergainhf_5f_2606',['coneOuterGainHF_',['../classncine_1_1_i_audio_player.html#a3b955705c4e5404f825091fdf46c3203',1,'ncine::IAudioPlayer']]], + ['consoleloglevel_2607',['consoleLogLevel',['../classncine_1_1_app_configuration.html#a47c1843f4e6cead24be12b15beed05f9',1,'ncine::AppConfiguration']]], + ['cullingenabled_2608',['cullingEnabled',['../structncine_1_1_application_1_1_rendering_settings.html#a100e0b0c1f4be066723b3a42bc3a41d4',1,'ncine::Application::RenderingSettings']]], + ['currentvideomode_5f_2609',['currentVideoMode_',['../classncine_1_1_i_gfx_device.html#a4fca24f27863b9abf8f7c43028f0f7da',1,'ncine::IGfxDevice']]] +]; diff --git a/master/search/variables_3.html b/master/search/variables_3.html new file mode 100644 index 0000000000..0d69e76193 --- /dev/null +++ b/master/search/variables_3.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/variables_3.js b/master/search/variables_3.js new file mode 100644 index 0000000000..6b2e2ff546 --- /dev/null +++ b/master/search/variables_3.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['data_5f_2610',['data_',['../classnctl_1_1_list_node.html#a91ba9113ab52310b1af36aba8d93c58d',1,'nctl::ListNode']]], + ['defaultalignment_2611',['DefaultAlignment',['../classnctl_1_1_i_allocator.html#a4a531c1a5f994e58a0b51686b4712aed',1,'nctl::IAllocator']]], + ['defaultdpi_2612',['DefaultDpi',['../classncine_1_1_i_gfx_device.html#adada069ace00e1aefdea81b9d7bc01ba',1,'ncine::IGfxDevice']]], + ['defaultstringlength_2613',['DefaultStringLength',['../classncine_1_1_text_node.html#a0c5e20cbb290722577101e4832f8508b',1,'ncine::TextNode']]], + ['defershaderqueries_2614',['deferShaderQueries',['../classncine_1_1_app_configuration.html#a0dc6242a487c89d55db7c7be538908eb',1,'ncine::AppConfiguration']]], + ['directfilterid_5f_2615',['directFilterId_',['../classncine_1_1_i_audio_player.html#aea22f078f45a7d65afcaca7e234c403a',1,'ncine::IAudioPlayer']]], + ['direction_5f_2616',['direction_',['../classncine_1_1_i_audio_player.html#a94ae2465ec0e473e28f6b22de023a21b',1,'ncine::IAudioPlayer']]], + ['dirtybits_5f_2617',['dirtyBits_',['../classncine_1_1_scene_node.html#a856b29f97a5e912d20127825ea6903fe',1,'ncine::SceneNode']]], + ['displaymode_5f_2618',['displayMode_',['../classncine_1_1_i_gfx_device.html#a3e50e3cf378a3d65d81d7ed079c085b1',1,'ncine::IGfxDevice']]], + ['dpi_2619',['dpi',['../structncine_1_1_i_gfx_device_1_1_monitor.html#ac2bdd0bf0b1265dfaa64d2d342cd90f8',1,'ncine::IGfxDevice::Monitor']]], + ['drawableheight_5f_2620',['drawableHeight_',['../classncine_1_1_i_gfx_device.html#a0b435ed13d49faaab53b25855948e4cd',1,'ncine::IGfxDevice']]], + ['drawablewidth_5f_2621',['drawableWidth_',['../classncine_1_1_i_gfx_device.html#acd740f9a59d6234c4be6ca7445c1185a',1,'ncine::IGfxDevice']]] +]; diff --git a/master/search/variables_4.html b/master/search/variables_4.html new file mode 100644 index 0000000000..a4b6506bb5 --- /dev/null +++ b/master/search/variables_4.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/variables_4.js b/master/search/variables_4.js new file mode 100644 index 0000000000..ff2260c8b4 --- /dev/null +++ b/master/search/variables_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['effectslotid_5f_2622',['effectSlotId_',['../classncine_1_1_i_audio_player.html#a5ef44f932cf68ae09d143335cf21e5f0',1,'ncine::IAudioPlayer']]], + ['enabled_5f_2623',['enabled_',['../classncine_1_1_particle_affector.html#a8bf657dc91f5da371ad50e5f4c9396ca',1,'ncine::ParticleAffector']]] +]; diff --git a/master/search/variables_5.html b/master/search/variables_5.html new file mode 100644 index 0000000000..7e345d16c9 --- /dev/null +++ b/master/search/variables_5.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/variables_5.js b/master/search/variables_5.js new file mode 100644 index 0000000000..e9d5b2cd64 --- /dev/null +++ b/master/search/variables_5.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['filedescriptor_5f_2624',['fileDescriptor_',['../classncine_1_1_i_file.html#a7e4e865a76d9b9bc6143a1554f0b94b2',1,'ncine::IFile']]], + ['fileloglevel_2625',['fileLogLevel',['../classncine_1_1_app_configuration.html#aac9ebc86670834a0b4636ad788c0f355',1,'ncine::AppConfiguration']]], + ['filename_5f_2626',['filename_',['../classncine_1_1_i_file.html#a792822c9f300bbb523b917705aa44fb6',1,'ncine::IFile']]], + ['filepointer_5f_2627',['filePointer_',['../classncine_1_1_i_file.html#a49139ae1efc9e4916d6726ddd1c9bd12',1,'ncine::IFile']]], + ['filesize_5f_2628',['fileSize_',['../classncine_1_1_i_file.html#a75f57abb3676e551b74bfb62b1ad3136',1,'ncine::IFile']]], + ['fixedbatchsize_2629',['fixedBatchSize',['../classncine_1_1_app_configuration.html#a2a4651ce842ccd0fb35641210007e54d',1,'ncine::AppConfiguration']]], + ['flippedx_5f_2630',['flippedX_',['../classncine_1_1_base_sprite.html#a0e14904d787a60ed13734dbc23782493',1,'ncine::BaseSprite']]], + ['flippedy_5f_2631',['flippedY_',['../classncine_1_1_base_sprite.html#a68c3d130512b38529565f6d29e4fdd24',1,'ncine::BaseSprite']]], + ['framelimit_2632',['frameLimit',['../classncine_1_1_app_configuration.html#ada197eafd47b5a02cd79dbf2dcdcc0f8',1,'ncine::AppConfiguration']]], + ['frametimerloginterval_2633',['frameTimerLogInterval',['../classncine_1_1_app_configuration.html#a37591300c5b892edbd4cc14444cc14ea',1,'ncine::AppConfiguration']]], + ['fullscreen_2634',['fullScreen',['../classncine_1_1_app_configuration.html#a1a1eb2b7edefb23bcd81fee35c9f1ec2',1,'ncine::AppConfiguration']]] +]; diff --git a/master/search/variables_6.html b/master/search/variables_6.html new file mode 100644 index 0000000000..7d48e75e27 --- /dev/null +++ b/master/search/variables_6.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/variables_6.js b/master/search/variables_6.js new file mode 100644 index 0000000000..d1335657a7 --- /dev/null +++ b/master/search/variables_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['gain_5f_2635',['gain_',['../classncine_1_1_i_audio_player.html#a606ab61bea83a4f2b580d1c0b43326ea',1,'ncine::IAudioPlayer']]], + ['glcontextinfo_5f_2636',['glContextInfo_',['../classncine_1_1_i_gfx_device.html#a87fbd247e63c3a8d14139658177ff0b1',1,'ncine::IGfxDevice']]] +]; diff --git a/master/search/variables_7.html b/master/search/variables_7.html new file mode 100644 index 0000000000..5c26340927 --- /dev/null +++ b/master/search/variables_7.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/variables_7.js b/master/search/variables_7.js new file mode 100644 index 0000000000..89ee4dfed5 --- /dev/null +++ b/master/search/variables_7.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['h_2637',['h',['../classncine_1_1_rect.html#a8e0a221c4ada7abb45c7348dd2f47ff3',1,'ncine::Rect']]], + ['hatid_2638',['hatId',['../classncine_1_1_joy_hat_event.html#aa6dc41d7ed6710ea545cf4c9d22f3078',1,'ncine::JoyHatEvent']]], + ['hatstate_2639',['hatState',['../classncine_1_1_joy_hat_event.html#a6fe70948f6166fb3f746452ec7da25ae',1,'ncine::JoyHatEvent']]], + ['height_5f_2640',['height_',['../classncine_1_1_drawable_node.html#a724705ba38b58273b978846f7174b422',1,'ncine::DrawableNode::height_()'],['../classncine_1_1_i_gfx_device.html#a7f6da8012e4796198abab3ec580f45c2',1,'ncine::IGfxDevice::height_()']]] +]; diff --git a/master/search/variables_8.html b/master/search/variables_8.html new file mode 100644 index 0000000000..dc9ec54a5b --- /dev/null +++ b/master/search/variables_8.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/variables_8.js b/master/search/variables_8.js new file mode 100644 index 0000000000..8a4102a3db --- /dev/null +++ b/master/search/variables_8.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['ibosize_2641',['iboSize',['../classncine_1_1_app_configuration.html#a106b5eb5f63482224ab9b4f9bec6c792',1,'ncine::AppConfiguration']]], + ['identity_2642',['Identity',['../classncine_1_1_matrix4x4.html#a07165b1b888dabd43aff165cc2892819',1,'ncine::Matrix4x4::Identity()'],['../classncine_1_1_quaternion.html#aff505c800ae7ae43714d9f063a71f655',1,'ncine::Quaternion::Identity()']]], + ['imguilayer_2643',['imguiLayer',['../structncine_1_1_application_1_1_gui_settings.html#af9c85ce9a43db8232d3c5998a1d74e29',1,'ncine::Application::GuiSettings']]], + ['imguiviewport_2644',['imguiViewport',['../structncine_1_1_application_1_1_gui_settings.html#aeeca7772c84aaef82bf719834a67dde9',1,'ncine::Application::GuiSettings']]], + ['inlocalspace_5f_2645',['inLocalSpace_',['../classncine_1_1_particle.html#a655eafb8a95864d76db39df8dbbe62a8',1,'ncine::Particle']]], + ['isfullscreen_5f_2646',['isFullScreen_',['../classncine_1_1_i_gfx_device.html#ad78a87c759157ad51e5c4b675cd1b0e5',1,'ncine::IGfxDevice']]], + ['islooping_5f_2647',['isLooping_',['../classncine_1_1_i_audio_player.html#a6328d40d8fb2dc86a044c30f3965758e',1,'ncine::IAudioPlayer']]], + ['isresizable_5f_2648',['isResizable_',['../classncine_1_1_i_gfx_device.html#a379a0d8460a3dc17ab60f3eb4a19cdc0',1,'ncine::IGfxDevice']]] +]; diff --git a/master/search/variables_9.html b/master/search/variables_9.html new file mode 100644 index 0000000000..7b0147509e --- /dev/null +++ b/master/search/variables_9.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/variables_9.js b/master/search/variables_9.js new file mode 100644 index 0000000000..7633910b4b --- /dev/null +++ b/master/search/variables_9.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['joyid_2649',['joyId',['../classncine_1_1_joy_button_event.html#ae2bc49a213332714a6329e62dd083cf6',1,'ncine::JoyButtonEvent::joyId()'],['../classncine_1_1_joy_hat_event.html#a8f908e2d8c1b4cb3f55737fa00af1446',1,'ncine::JoyHatEvent::joyId()'],['../classncine_1_1_joy_axis_event.html#a6bc5fbef47b1c385a7d702dcbc22ccaa',1,'ncine::JoyAxisEvent::joyId()'],['../classncine_1_1_joy_connection_event.html#a5ef3e0f99858021b0d26d27f083edbf4',1,'ncine::JoyConnectionEvent::joyId()'],['../classncine_1_1_joy_mapped_button_event.html#a558744f6deaea616e46637458d4b4a17',1,'ncine::JoyMappedButtonEvent::joyId()'],['../classncine_1_1_joy_mapped_axis_event.html#ac0ea9ae992569f48515e536fcff09cc5',1,'ncine::JoyMappedAxisEvent::joyId()']]] +]; diff --git a/master/search/variables_a.html b/master/search/variables_a.html new file mode 100644 index 0000000000..52a724d191 --- /dev/null +++ b/master/search/variables_a.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/variables_a.js b/master/search/variables_a.js new file mode 100644 index 0000000000..7a50ce8e7c --- /dev/null +++ b/master/search/variables_a.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['lastframecleared_5f_2650',['lastFrameCleared_',['../classncine_1_1_viewport.html#ab2470a3cb1581a870d20cbb5f8dcad69',1,'ncine::Viewport']]], + ['lastframerendered_5f_2651',['lastFrameRendered_',['../classncine_1_1_drawable_node.html#a2cdcef96eb2e58289643269642d0289b',1,'ncine::DrawableNode']]], + ['lastframeupdated_5f_2652',['lastFrameUpdated_',['../classncine_1_1_scene_node.html#a411b2706416a0c65058daa4354eedc00',1,'ncine::SceneNode']]], + ['layer_5f_2653',['layer_',['../classncine_1_1_scene_node.html#a8e3418fe0e0fe526e854ec7ebb59aad3',1,'ncine::SceneNode']]], + ['life_5f_2654',['life_',['../classncine_1_1_particle.html#a21274556f41d543bbefe4e2fe73a2b54',1,'ncine::Particle']]], + ['localmatrix_5f_2655',['localMatrix_',['../classncine_1_1_scene_node.html#a6780033879ba00a6276ac6ae6e5b8e8e',1,'ncine::SceneNode']]], + ['logfile_2656',['logFile',['../classncine_1_1_app_configuration.html#a5db04a6449738f2aa82dc2115d1f86f0',1,'ncine::AppConfiguration']]] +]; diff --git a/master/search/variables_b.html b/master/search/variables_b.html new file mode 100644 index 0000000000..f376b27af1 --- /dev/null +++ b/master/search/variables_b.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/variables_b.js b/master/search/variables_b.js new file mode 100644 index 0000000000..b3b631efcc --- /dev/null +++ b/master/search/variables_b.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['maxbatchsize_2657',['maxBatchSize',['../structncine_1_1_application_1_1_rendering_settings.html#a90d38ca865f0899a9180d23e7fb4f40b',1,'ncine::Application::RenderingSettings']]], + ['maxcstringlength_2658',['MaxCStringLength',['../classnctl_1_1_static_string.html#a564da32d60f5204ed304002b63c68020',1,'nctl::StaticString::MaxCStringLength()'],['../classnctl_1_1_string.html#aab47ac9aac97cfef460a281a434601b6',1,'nctl::String::MaxCStringLength()']]], + ['maxfilenamelength_2659',['MaxFilenameLength',['../classncine_1_1_i_file.html#a5c8ca3d3093f2f486d11e2b744019521',1,'ncine::IFile']]], + ['maxnamelength_2660',['MaxNameLength',['../classncine_1_1_object.html#a3323887be71f45a297895b9ac49f88ae',1,'ncine::Object::MaxNameLength()'],['../classnctl_1_1_i_allocator.html#ae0ad0e1984968bcfb162339cede27855',1,'nctl::IAllocator::MaxNameLength()']]], + ['maxpathlength_2661',['MaxPathLength',['../classncine_1_1_file_system.html#a6f0dd06a81923c9fcee4efad9af3f998',1,'ncine::FileSystem']]], + ['minbatchsize_2662',['minBatchSize',['../structncine_1_1_application_1_1_rendering_settings.html#a51752f65f8584252b88cca6c93b6a577',1,'ncine::Application::RenderingSettings']]], + ['minrotation_2663',['MinRotation',['../classncine_1_1_scene_node.html#afda0aae382fd89ca3aa3619e17349434',1,'ncine::SceneNode']]], + ['mod_2664',['mod',['../classncine_1_1_keyboard_event.html#a81b293e91690355d1e944361f4d8fcfd',1,'ncine::KeyboardEvent']]], + ['monoaudiosources_2665',['monoAudioSources',['../classncine_1_1_app_configuration.html#a9826ecd50f768bdd06f641b746962438',1,'ncine::AppConfiguration']]] +]; diff --git a/master/search/variables_c.html b/master/search/variables_c.html new file mode 100644 index 0000000000..6019eba96b --- /dev/null +++ b/master/search/variables_c.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/variables_c.js b/master/search/variables_c.js new file mode 100644 index 0000000000..f053c9da44 --- /dev/null +++ b/master/search/variables_c.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['name_2666',['name',['../structncine_1_1_i_gfx_device_1_1_monitor.html#aab20a56df0b455631cae0785081ba7e1',1,'ncine::IGfxDevice::Monitor']]], + ['next_5f_2667',['next_',['../classnctl_1_1_base_list_node.html#afb73e9db11dab762605e23fd604a39f9',1,'nctl::BaseListNode']]], + ['normvalue_2668',['normValue',['../classncine_1_1_joy_axis_event.html#ac98e78708e34ac3014aca01228246e75',1,'ncine::JoyAxisEvent']]], + ['nuklearlayer_2669',['nuklearLayer',['../structncine_1_1_application_1_1_gui_settings.html#a3a457daeeba4664f3a9c69b575055fdf',1,'ncine::Application::GuiSettings']]], + ['nuklearviewport_2670',['nuklearViewport',['../structncine_1_1_application_1_1_gui_settings.html#ae44f03afd639dca8bea667127a3e0e47',1,'ncine::Application::GuiSettings']]], + ['numaxes_2671',['NumAxes',['../classncine_1_1_joy_mapped_state.html#ade63cfc84bb872aea03a63b11a6b6b53',1,'ncine::JoyMappedState']]], + ['numbuttons_2672',['NumButtons',['../classncine_1_1_joy_mapped_state.html#af5eac1b85c457bc6512ccb48a32ac4ca',1,'ncine::JoyMappedState']]], + ['numvideomodes_2673',['numVideoModes',['../structncine_1_1_i_gfx_device_1_1_monitor.html#a848b74db16c5eb70bcf7e2f014a75a28',1,'ncine::IGfxDevice::Monitor']]] +]; diff --git a/master/search/variables_d.html b/master/search/variables_d.html new file mode 100644 index 0000000000..f61ae7511a --- /dev/null +++ b/master/search/variables_d.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/variables_d.js b/master/search/variables_d.js new file mode 100644 index 0000000000..068ea55c3c --- /dev/null +++ b/master/search/variables_d.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['outputaudiofrequency_2674',['outputAudioFrequency',['../classncine_1_1_app_configuration.html#acdb5cef0ab6539f8522807a83b4199d0',1,'ncine::AppConfiguration']]] +]; diff --git a/master/search/variables_e.html b/master/search/variables_e.html new file mode 100644 index 0000000000..7bfd372150 --- /dev/null +++ b/master/search/variables_e.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/variables_e.js b/master/search/variables_e.js new file mode 100644 index 0000000000..791668dd70 --- /dev/null +++ b/master/search/variables_e.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['parent_5f_2675',['parent_',['../classncine_1_1_scene_node.html#a23eaf096ebad0bf42c13c19e5140a66d',1,'ncine::SceneNode']]], + ['pitch_5f_2676',['pitch_',['../classncine_1_1_i_audio_player.html#abba1338b704f1270de833f367b7fcaaf',1,'ncine::IAudioPlayer']]], + ['position_2677',['position',['../structncine_1_1_i_gfx_device_1_1_monitor.html#ab71da218bf863917b35416a80b8b19de',1,'ncine::IGfxDevice::Monitor']]], + ['position_5f_2678',['position_',['../classncine_1_1_i_audio_player.html#aa6a9e005a7b452d2820ec3f28b43a2b7',1,'ncine::IAudioPlayer::position_()'],['../classncine_1_1_scene_node.html#aa33cf2fbdc81614263850c068697332e',1,'ncine::SceneNode::position_()']]], + ['previous_5f_2679',['previous_',['../classnctl_1_1_base_list_node.html#a0c7db562e438caf8a22d9d7dc3404b14',1,'nctl::BaseListNode']]], + ['previousscalingfactor_5f_2680',['previousScalingFactor_',['../classncine_1_1_i_gfx_device.html#a3d1ba57a59023c4a499bcbf9993088e5',1,'ncine::IGfxDevice']]] +]; diff --git a/master/search/variables_f.html b/master/search/variables_f.html new file mode 100644 index 0000000000..d97920d081 --- /dev/null +++ b/master/search/variables_f.html @@ -0,0 +1,37 @@ + + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/master/search/variables_f.js b/master/search/variables_f.js new file mode 100644 index 0000000000..4907bffe59 --- /dev/null +++ b/master/search/variables_f.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['refreshrate_2681',['refreshRate',['../classncine_1_1_app_configuration.html#a7cc99cc63c979ebbd2d24b8feffd35e4',1,'ncine::AppConfiguration']]], + ['rendercommand_5f_2682',['renderCommand_',['../classncine_1_1_drawable_node.html#a8a762aa7da39b426a956afdb0fc5dc05',1,'ncine::DrawableNode']]], + ['rendercommandpoolsize_2683',['renderCommandPoolSize',['../classncine_1_1_app_configuration.html#a604baf63f3c2a11c29e023052c4f1481',1,'ncine::AppConfiguration']]], + ['renderqueue_5f_2684',['renderQueue_',['../classncine_1_1_viewport.html#afcb7f7af45a49e0042dfc928533f9bb5',1,'ncine::Viewport']]], + ['resizable_2685',['resizable',['../classncine_1_1_app_configuration.html#a58af6e4dbab2c62675b25f640713ac71',1,'ncine::AppConfiguration']]], + ['resolution_2686',['resolution',['../classncine_1_1_app_configuration.html#ada0d329fa16c79eee2fc306397237f95',1,'ncine::AppConfiguration']]], + ['roomroolofffactor_5f_2687',['roomRooloffFactor_',['../classncine_1_1_i_audio_player.html#a43e07ea2c916e0532adfd2c0de945c42',1,'ncine::IAudioPlayer']]], + ['rootnode_5f_2688',['rootNode_',['../classncine_1_1_viewport.html#a5f8c86660919de890ccddfb959393f17',1,'ncine::Viewport']]], + ['rotation_5f_2689',['rotation_',['../classncine_1_1_scene_node.html#ab205fb0f0c2c8747737babb962197bbd',1,'ncine::SceneNode']]] +]; diff --git a/master/splitbar.png b/master/splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..2e0374d687b8888480679b23dbcb28c17b667dc6 GIT binary patch literal 311 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf@Vh`rgikGHxG> z%?)OVwO%!3SsfY~weg;YM93DN=J$uUmFcF%ANd#Zm__m$_pzm{r@!)r%}a{5E~xYW z@ge)Z`GvXbSG_!a`|{_zf0yj3+_S4rqMYHAr;q^2h<(ZWs%!7Qm2Y0YNW<^<;>7=t zeyk|3EQ>x9e)Z>qKR@d1U-H(Qy*~W^R^Vlmx9eV~?(RMx-mk_uQH6B$h5s+(3@+RI UIWyyxfg!=*>FVdQ&MBb@00fC~i2wiq literal 0 HcmV?d00001 diff --git a/master/structncine_1_1_application_1_1_gui_settings-members.html b/master/structncine_1_1_application_1_1_gui_settings-members.html new file mode 100644 index 0000000000..ef75198494 --- /dev/null +++ b/master/structncine_1_1_application_1_1_gui_settings-members.html @@ -0,0 +1,89 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    ncine::Application::GuiSettings Member List
    +
    + + + + + diff --git a/master/structncine_1_1_application_1_1_gui_settings.html b/master/structncine_1_1_application_1_1_gui_settings.html new file mode 100644 index 0000000000..6038b2c906 --- /dev/null +++ b/master/structncine_1_1_application_1_1_gui_settings.html @@ -0,0 +1,172 @@ + + + + + + + +nCine: ncine::Application::GuiSettings Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::Application::GuiSettings Struct Reference
    +
    +
    + +

    GUI settings (for ImGui and Nuklear) that can be changed at run-time. + More...

    + +

    #include <Application.h>

    +
    +Collaboration diagram for ncine::Application::GuiSettings:
    +
    +
    Collaboration graph
    + + + + + + + + + + + + + + + + + + + +
    [legend]
    + + + + + + + + + + + + + + +

    +Public Attributes

    +uint16_t imguiLayer
     ImGui drawable node layer.
     
    +uint16_t nuklearLayer
     Nuklear drawable node layer.
     
    ViewportimguiViewport
     ImGui viewport. More...
     
    ViewportnuklearViewport
     Nuklear viewport. More...
     
    +

    Detailed Description

    +

    GUI settings (for ImGui and Nuklear) that can be changed at run-time.

    +

    Member Data Documentation

    + +

    ◆ imguiViewport

    + +
    +
    + + + + +
    Viewport* ncine::Application::GuiSettings::imguiViewport
    +
    + +

    ImGui viewport.

    +
    Note
    The viewport should mirror the screen dimensions or mouse input would not work. Setting nullptr is the same as setting the screen
    + +
    +
    + +

    ◆ nuklearViewport

    + +
    +
    + + + + +
    Viewport* ncine::Application::GuiSettings::nuklearViewport
    +
    + +

    Nuklear viewport.

    +
    Note
    The viewport should mirror the screen dimensions or mouse input would not work. Setting nullptr is the same as setting the screen
    + +
    +
    +
    The documentation for this struct was generated from the following files: +
    + + + + diff --git a/master/structncine_1_1_application_1_1_gui_settings__coll__graph.map b/master/structncine_1_1_application_1_1_gui_settings__coll__graph.map new file mode 100644 index 0000000000..0d61c16a93 --- /dev/null +++ b/master/structncine_1_1_application_1_1_gui_settings__coll__graph.map @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/master/structncine_1_1_application_1_1_gui_settings__coll__graph.md5 b/master/structncine_1_1_application_1_1_gui_settings__coll__graph.md5 new file mode 100644 index 0000000000..287ef8ebe0 --- /dev/null +++ b/master/structncine_1_1_application_1_1_gui_settings__coll__graph.md5 @@ -0,0 +1 @@ +f87e3dc4465463deececaf2f0df8fc4c \ No newline at end of file diff --git a/master/structncine_1_1_application_1_1_gui_settings__coll__graph.png b/master/structncine_1_1_application_1_1_gui_settings__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..4bd47e07542ece80fabff2dac1b912abde88008b GIT binary patch literal 108604 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

    v6Aul}-t%eR9b`eFNxbSK0@V*MRW|zavxBP9 zyOes?w5Q0O6q9%?t(q*!xKgt`#J6mLo*fo(cwt{d(xfCh6{Wm_qv>La@D2S;{2J21 ztEicR9##-mR_F@vudNNK8~U}da2~iO^1FfgwQ5&#j~e~*i>fVcFukGU4=PWD_-^ud zI4&JaI?xCEJyfSyqX>Wx-4Eb3;@{Db+YLKBm+af;MZPmDMY%a^v*uN+Jpus1g%3-b z5W#k7stjwmtbziclJ6{p=kMRb^A;A4Al{;*+wq-v!@wUDR3-iG42eW{>gXYrlR?O7 z+AAy}1%`8RQd4PB5hDWwSYKU<0eD$pRu`|2cH1m?Y&i2OuPh7+KJdO$Hx$XId>Ii6 zP7}c>4_Lxe4Mk%T6MLY#K$rNy93=h+oVsQ8_1n z9s35F6U-lKh4&o9Fv@>bG}bWTpJ)R>bGnw67CN6{pHZw>0;#6K9(Dk)4wn>^l4BKERMF{r!(_aj8WaGQUK!<+}(Ca2E zk8(hm1;Amo$KV00@~?*8Pa{%2;jro@b78UC3V`!3q(HfXm5nHHkOgI3M)SB9J!{0P zi3oLojLVZ;3H<2fd)*V6bsDE&7CqIZ>``G^YwOC$;;Di=}vB5h|zo0dI1Z^ z=09C&P~5ZrC-x?-lm}K7Y^rb#q&lWH+Gz=FO3~?Tr^iSPbRQQ;M^3}U_7cWBKG z4z?2Gk`BuY1aIcy`Qfd|#uoLHuboM;Nbv8Vo$PW?`c(Vm2t;TS&Z7JBB^7)$j!${D zZ~0)uZIR7SbmS9Zsexhr+6+A-jCZ^I;WRV&PtFL?JGM?veNl6DH@J7Q&_iXn73$a5 zXHbzLo-V>%Hpyp%8}}H>FBIM@nyR`dE5Fk4>H;I1lX&~(k25F#NU*Lg*;eBgZ#7lf zYdO4LpOUr)&_)PWR>|D|s5qQ=t-L{qt**rwXLgGTZ(j9V&t9Ag-pAd`yQCfj z(b?JA?1{xoAO?OvjSlUw|h5~yYJ4s6T8x?b1}c-t3#TehTn2u z?as~#sXCk6nnx83UJF=3ETILxgsG*YQ^k8bMv37sg5<~NN1d!jol=)>0~vjU%Im>r4RPDrjJw<&BoGNYAn~h;0#yS4Ssk}78?4pD$iEqvm@09VnXhA zxYS%c^+$pgt3KUM5d~{4FKex!eBjNAQi_x|0z;*)@?#J5DA@}xZsSb=7rz+u)*I2@ z(>%(S&|I$^E)%ZKs7>2a#`NuZ(*+@3-o~`@vNBtvt;m_DZy*KAnuWP0Z`lhY%s`|od zl&05_drwa2bEBqFlwL==UQxD&^5c}H>#3*W$*VUPi}N$qcm)TAZL4eOdfj{Uhpg^8 z>yFzGl;KIBMnhG^=FSA=eilrOHIcu!vV)(UUsl(^d`pY$8)efo7t*@Et=3Dbv2nhl z(DUmLT+EP-wySg&TW;&s*d^w2nl&5}(7Ye@!n^Lv&QuOJEuGC5y2yT@>yv-f4K=p~KVbrci`+y}Ya?*pIDj zB|jaVJJK#p!vcYkOr)I$dBR?FDAe~0wywM^uI+Vk4Cea6pgwk7pXHRWw0uK{|7i)k znZ{o)yqe71{AvpfzF;9|R3$!{?8hFlS6kLC!G5>@o+f2eKf&VcXL>7{8?0odwk{y~ zL{dX0LSyp=MMt$c8mSqMH+?QS>Xn*%6i z-}UfEKP7yx)BonSlnDHd*BCuUA{|vf Le&~^^#g+d8lE{AB literal 0 HcmV?d00001 diff --git a/master/structncine_1_1_application_1_1_rendering_settings-members.html b/master/structncine_1_1_application_1_1_rendering_settings-members.html new file mode 100644 index 0000000000..9ea58b92a3 --- /dev/null +++ b/master/structncine_1_1_application_1_1_rendering_settings-members.html @@ -0,0 +1,90 @@ + + + + + + + +nCine: Member List + + + + + + + + + +

    +
    +
    +
    ncine::Application::RenderingSettings Member List
    +
    + + + + + diff --git a/master/structncine_1_1_application_1_1_rendering_settings.html b/master/structncine_1_1_application_1_1_rendering_settings.html new file mode 100644 index 0000000000..0ce87182fc --- /dev/null +++ b/master/structncine_1_1_application_1_1_rendering_settings.html @@ -0,0 +1,118 @@ + + + + + + + +nCine: ncine::Application::RenderingSettings Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::Application::RenderingSettings Struct Reference
    +
    +
    + +

    Rendering settings that can be changed at run-time. + More...

    + +

    #include <Application.h>

    + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +bool batchingEnabled
     True if batching is enabled.
     
    +bool batchingWithIndices
     True if using indices for vertex batching.
     
    +bool cullingEnabled
     True if node culling is enabled.
     
    +unsigned int minBatchSize
     Minimum size for a batch to be collected.
     
    +unsigned int maxBatchSize
     Maximum size for a batch before a forced split.
     
    +

    Detailed Description

    +

    Rendering settings that can be changed at run-time.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structncine_1_1_application_1_1_timings-members.html b/master/structncine_1_1_application_1_1_timings-members.html new file mode 100644 index 0000000000..18d09330b1 --- /dev/null +++ b/master/structncine_1_1_application_1_1_timings-members.html @@ -0,0 +1,97 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    ncine::Application::Timings Member List
    +
    +
    + +

    This is the complete list of members for ncine::Application::Timings, including all inherited members.

    + + + + + + + + + + + + + + +
    APP_INIT enum value (defined in ncine::Application::Timings)ncine::Application::Timings
    COUNT enum value (defined in ncine::Application::Timings)ncine::Application::Timings
    DRAW enum value (defined in ncine::Application::Timings)ncine::Application::Timings
    FRAME_END enum value (defined in ncine::Application::Timings)ncine::Application::Timings
    FRAME_START enum value (defined in ncine::Application::Timings)ncine::Application::Timings
    IMGUI enum value (defined in ncine::Application::Timings)ncine::Application::Timings
    INIT_COMMON enum value (defined in ncine::Application::Timings)ncine::Application::Timings
    NUKLEAR enum value (defined in ncine::Application::Timings)ncine::Application::Timings
    POST_UPDATE enum value (defined in ncine::Application::Timings)ncine::Application::Timings
    PRE_INIT enum value (defined in ncine::Application::Timings)ncine::Application::Timings
    UPDATE enum value (defined in ncine::Application::Timings)ncine::Application::Timings
    UPDATE_VISIT_DRAW enum value (defined in ncine::Application::Timings)ncine::Application::Timings
    VISIT enum value (defined in ncine::Application::Timings)ncine::Application::Timings
    + + + + diff --git a/master/structncine_1_1_application_1_1_timings.html b/master/structncine_1_1_application_1_1_timings.html new file mode 100644 index 0000000000..aa1eed6b13 --- /dev/null +++ b/master/structncine_1_1_application_1_1_timings.html @@ -0,0 +1,111 @@ + + + + + + + +nCine: ncine::Application::Timings Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::Application::Timings Struct Reference
    +
    +
    + + + + +

    +Public Types

    enum  {
    +  PRE_INIT +, INIT_COMMON +, APP_INIT +, FRAME_START +,
    +  UPDATE_VISIT_DRAW +, UPDATE +, POST_UPDATE +, VISIT +,
    +  DRAW +, IMGUI +, NUKLEAR +, FRAME_END +,
    +  COUNT +
    + }
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structncine_1_1_audio_effect_properties_1_1_auto_wah_properties-members.html b/master/structncine_1_1_audio_effect_properties_1_1_auto_wah_properties-members.html new file mode 100644 index 0000000000..e78f91fcc7 --- /dev/null +++ b/master/structncine_1_1_audio_effect_properties_1_1_auto_wah_properties-members.html @@ -0,0 +1,89 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    ncine::AudioEffectProperties::AutoWahProperties Member List
    +
    + + + + + diff --git a/master/structncine_1_1_audio_effect_properties_1_1_auto_wah_properties.html b/master/structncine_1_1_audio_effect_properties_1_1_auto_wah_properties.html new file mode 100644 index 0000000000..97930c68fb --- /dev/null +++ b/master/structncine_1_1_audio_effect_properties_1_1_auto_wah_properties.html @@ -0,0 +1,104 @@ + + + + + + + +nCine: ncine::AudioEffectProperties::AutoWahProperties Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::AudioEffectProperties::AutoWahProperties Struct Reference
    +
    +
    + + + + + + + + + + +

    +Public Attributes

    +float attackTime
     
    +float releaseTime
     
    +float resonance
     
    +float peakGain
     
    +
    The documentation for this struct was generated from the following files: +
    + + + + diff --git a/master/structncine_1_1_audio_effect_properties_1_1_chorus_properties-members.html b/master/structncine_1_1_audio_effect_properties_1_1_chorus_properties-members.html new file mode 100644 index 0000000000..1745688b49 --- /dev/null +++ b/master/structncine_1_1_audio_effect_properties_1_1_chorus_properties-members.html @@ -0,0 +1,91 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    ncine::AudioEffectProperties::ChorusProperties Member List
    +
    + + + + + diff --git a/master/structncine_1_1_audio_effect_properties_1_1_chorus_properties.html b/master/structncine_1_1_audio_effect_properties_1_1_chorus_properties.html new file mode 100644 index 0000000000..a526c2b6f6 --- /dev/null +++ b/master/structncine_1_1_audio_effect_properties_1_1_chorus_properties.html @@ -0,0 +1,110 @@ + + + + + + + +nCine: ncine::AudioEffectProperties::ChorusProperties Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::AudioEffectProperties::ChorusProperties Struct Reference
    +
    +
    + + + + + + + + + + + + + + +

    +Public Attributes

    +int waveform
     
    +int phase
     
    +float rate
     
    +float depth
     
    +float feedback
     
    +float delay
     
    +
    The documentation for this struct was generated from the following files: +
    + + + + diff --git a/master/structncine_1_1_audio_effect_properties_1_1_compressor_properties-members.html b/master/structncine_1_1_audio_effect_properties_1_1_compressor_properties-members.html new file mode 100644 index 0000000000..0584246d76 --- /dev/null +++ b/master/structncine_1_1_audio_effect_properties_1_1_compressor_properties-members.html @@ -0,0 +1,86 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    ncine::AudioEffectProperties::CompressorProperties Member List
    +
    + + + + + diff --git a/master/structncine_1_1_audio_effect_properties_1_1_compressor_properties.html b/master/structncine_1_1_audio_effect_properties_1_1_compressor_properties.html new file mode 100644 index 0000000000..a449fb03dd --- /dev/null +++ b/master/structncine_1_1_audio_effect_properties_1_1_compressor_properties.html @@ -0,0 +1,95 @@ + + + + + + + +nCine: ncine::AudioEffectProperties::CompressorProperties Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::AudioEffectProperties::CompressorProperties Struct Reference
    +
    +
    + + + + +

    +Public Attributes

    +int onOff
     
    +
    The documentation for this struct was generated from the following files: +
    + + + + diff --git a/master/structncine_1_1_audio_effect_properties_1_1_distortion_properties-members.html b/master/structncine_1_1_audio_effect_properties_1_1_distortion_properties-members.html new file mode 100644 index 0000000000..8ba6bccc34 --- /dev/null +++ b/master/structncine_1_1_audio_effect_properties_1_1_distortion_properties-members.html @@ -0,0 +1,90 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    ncine::AudioEffectProperties::DistortionProperties Member List
    +
    + + + + + diff --git a/master/structncine_1_1_audio_effect_properties_1_1_distortion_properties.html b/master/structncine_1_1_audio_effect_properties_1_1_distortion_properties.html new file mode 100644 index 0000000000..f336351b21 --- /dev/null +++ b/master/structncine_1_1_audio_effect_properties_1_1_distortion_properties.html @@ -0,0 +1,107 @@ + + + + + + + +nCine: ncine::AudioEffectProperties::DistortionProperties Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::AudioEffectProperties::DistortionProperties Struct Reference
    +
    +
    + + + + + + + + + + + + +

    +Public Attributes

    +float edge
     
    +float gain
     
    +float lowpassCutoff
     
    +float eqCenter
     
    +float eqBandwidth
     
    +
    The documentation for this struct was generated from the following files: +
    + + + + diff --git a/master/structncine_1_1_audio_effect_properties_1_1_eax_reverb_properties-members.html b/master/structncine_1_1_audio_effect_properties_1_1_eax_reverb_properties-members.html new file mode 100644 index 0000000000..e7ef691017 --- /dev/null +++ b/master/structncine_1_1_audio_effect_properties_1_1_eax_reverb_properties-members.html @@ -0,0 +1,111 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    ncine::AudioEffectProperties::EaxReverbProperties Member List
    +
    +
    + +

    This is the complete list of members for ncine::AudioEffectProperties::EaxReverbProperties, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    airAbsorptionGainHF (defined in ncine::AudioEffectProperties::EaxReverbProperties)ncine::AudioEffectProperties::EaxReverbProperties
    decayHFLimit (defined in ncine::AudioEffectProperties::EaxReverbProperties)ncine::AudioEffectProperties::EaxReverbProperties
    decayHFRatio (defined in ncine::AudioEffectProperties::EaxReverbProperties)ncine::AudioEffectProperties::EaxReverbProperties
    decayLFRatio (defined in ncine::AudioEffectProperties::EaxReverbProperties)ncine::AudioEffectProperties::EaxReverbProperties
    decayTime (defined in ncine::AudioEffectProperties::EaxReverbProperties)ncine::AudioEffectProperties::EaxReverbProperties
    density (defined in ncine::AudioEffectProperties::EaxReverbProperties)ncine::AudioEffectProperties::EaxReverbProperties
    diffusion (defined in ncine::AudioEffectProperties::EaxReverbProperties)ncine::AudioEffectProperties::EaxReverbProperties
    EaxReverbProperties() (defined in ncine::AudioEffectProperties::EaxReverbProperties)ncine::AudioEffectProperties::EaxReverbProperties
    echoDepth (defined in ncine::AudioEffectProperties::EaxReverbProperties)ncine::AudioEffectProperties::EaxReverbProperties
    echoTime (defined in ncine::AudioEffectProperties::EaxReverbProperties)ncine::AudioEffectProperties::EaxReverbProperties
    gain (defined in ncine::AudioEffectProperties::EaxReverbProperties)ncine::AudioEffectProperties::EaxReverbProperties
    gainHF (defined in ncine::AudioEffectProperties::EaxReverbProperties)ncine::AudioEffectProperties::EaxReverbProperties
    gainLF (defined in ncine::AudioEffectProperties::EaxReverbProperties)ncine::AudioEffectProperties::EaxReverbProperties
    hfReference (defined in ncine::AudioEffectProperties::EaxReverbProperties)ncine::AudioEffectProperties::EaxReverbProperties
    lateReverbDelay (defined in ncine::AudioEffectProperties::EaxReverbProperties)ncine::AudioEffectProperties::EaxReverbProperties
    lateReverbGain (defined in ncine::AudioEffectProperties::EaxReverbProperties)ncine::AudioEffectProperties::EaxReverbProperties
    lateReverbPan (defined in ncine::AudioEffectProperties::EaxReverbProperties)ncine::AudioEffectProperties::EaxReverbProperties
    lfReference (defined in ncine::AudioEffectProperties::EaxReverbProperties)ncine::AudioEffectProperties::EaxReverbProperties
    loadPreset(const EfxReverbPresets preset)ncine::AudioEffectProperties::EaxReverbProperties
    MaxPan (defined in ncine::AudioEffectProperties::EaxReverbProperties)ncine::AudioEffectProperties::EaxReverbPropertiesstatic
    MinPan (defined in ncine::AudioEffectProperties::EaxReverbProperties)ncine::AudioEffectProperties::EaxReverbPropertiesstatic
    modulationDepth (defined in ncine::AudioEffectProperties::EaxReverbProperties)ncine::AudioEffectProperties::EaxReverbProperties
    modulationTime (defined in ncine::AudioEffectProperties::EaxReverbProperties)ncine::AudioEffectProperties::EaxReverbProperties
    reflectionsDelay (defined in ncine::AudioEffectProperties::EaxReverbProperties)ncine::AudioEffectProperties::EaxReverbProperties
    reflectionsGain (defined in ncine::AudioEffectProperties::EaxReverbProperties)ncine::AudioEffectProperties::EaxReverbProperties
    reflectionsPan (defined in ncine::AudioEffectProperties::EaxReverbProperties)ncine::AudioEffectProperties::EaxReverbProperties
    roomRolloffFactor (defined in ncine::AudioEffectProperties::EaxReverbProperties)ncine::AudioEffectProperties::EaxReverbProperties
    + + + + diff --git a/master/structncine_1_1_audio_effect_properties_1_1_eax_reverb_properties.html b/master/structncine_1_1_audio_effect_properties_1_1_eax_reverb_properties.html new file mode 100644 index 0000000000..33b1d43f24 --- /dev/null +++ b/master/structncine_1_1_audio_effect_properties_1_1_eax_reverb_properties.html @@ -0,0 +1,179 @@ + + + + + + + +nCine: ncine::AudioEffectProperties::EaxReverbProperties Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::AudioEffectProperties::EaxReverbProperties Struct Reference
    +
    +
    + + + + + +

    +Public Member Functions

    +DLL_PUBLIC void loadPreset (const EfxReverbPresets preset)
     Loads and sets the effect properties from an EFX reverb preset.
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +float density
     
    +float diffusion
     
    +float gain
     
    +float gainHF
     
    +float gainLF
     
    +float decayTime
     
    +float decayHFRatio
     
    +float decayLFRatio
     
    +float reflectionsGain
     
    +float reflectionsDelay
     
    +float reflectionsPan [3]
     
    +float lateReverbGain
     
    +float lateReverbDelay
     
    +float lateReverbPan [3]
     
    +float echoTime
     
    +float echoDepth
     
    +float modulationTime
     
    +float modulationDepth
     
    +float airAbsorptionGainHF
     
    +float hfReference
     
    +float lfReference
     
    +float roomRolloffFactor
     
    +int decayHFLimit
     
    + + + + + +

    +Static Public Attributes

    +static const float MinPan = -1024.0f
     
    +static const float MaxPan = 1024.0f
     
    +
    The documentation for this struct was generated from the following files: +
    + + + + diff --git a/master/structncine_1_1_audio_effect_properties_1_1_echo_properties-members.html b/master/structncine_1_1_audio_effect_properties_1_1_echo_properties-members.html new file mode 100644 index 0000000000..c12297730c --- /dev/null +++ b/master/structncine_1_1_audio_effect_properties_1_1_echo_properties-members.html @@ -0,0 +1,90 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    ncine::AudioEffectProperties::EchoProperties Member List
    +
    + + + + + diff --git a/master/structncine_1_1_audio_effect_properties_1_1_echo_properties.html b/master/structncine_1_1_audio_effect_properties_1_1_echo_properties.html new file mode 100644 index 0000000000..c79b426355 --- /dev/null +++ b/master/structncine_1_1_audio_effect_properties_1_1_echo_properties.html @@ -0,0 +1,107 @@ + + + + + + + +nCine: ncine::AudioEffectProperties::EchoProperties Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::AudioEffectProperties::EchoProperties Struct Reference
    +
    +
    + + + + + + + + + + + + +

    +Public Attributes

    +float delay
     
    +float lrDelay
     
    +float damping
     
    +float feedback
     
    +float spread
     
    +
    The documentation for this struct was generated from the following files: +
    + + + + diff --git a/master/structncine_1_1_audio_effect_properties_1_1_equalizer_properties-members.html b/master/structncine_1_1_audio_effect_properties_1_1_equalizer_properties-members.html new file mode 100644 index 0000000000..1d5862431c --- /dev/null +++ b/master/structncine_1_1_audio_effect_properties_1_1_equalizer_properties-members.html @@ -0,0 +1,95 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    ncine::AudioEffectProperties::EqualizerProperties Member List
    +
    + + + + + diff --git a/master/structncine_1_1_audio_effect_properties_1_1_equalizer_properties.html b/master/structncine_1_1_audio_effect_properties_1_1_equalizer_properties.html new file mode 100644 index 0000000000..8301c90e7b --- /dev/null +++ b/master/structncine_1_1_audio_effect_properties_1_1_equalizer_properties.html @@ -0,0 +1,122 @@ + + + + + + + +nCine: ncine::AudioEffectProperties::EqualizerProperties Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::AudioEffectProperties::EqualizerProperties Struct Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +float lowGain
     
    +float lowCutoff
     
    +float mid1Gain
     
    +float mid1Center
     
    +float mid1Width
     
    +float mid2Gain
     
    +float mid2Center
     
    +float mid2Width
     
    +float highGain
     
    +float highCutoff
     
    +
    The documentation for this struct was generated from the following files: +
    + + + + diff --git a/master/structncine_1_1_audio_effect_properties_1_1_flanger_properties-members.html b/master/structncine_1_1_audio_effect_properties_1_1_flanger_properties-members.html new file mode 100644 index 0000000000..b8f257dcd2 --- /dev/null +++ b/master/structncine_1_1_audio_effect_properties_1_1_flanger_properties-members.html @@ -0,0 +1,91 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    ncine::AudioEffectProperties::FlangerProperties Member List
    +
    + + + + + diff --git a/master/structncine_1_1_audio_effect_properties_1_1_flanger_properties.html b/master/structncine_1_1_audio_effect_properties_1_1_flanger_properties.html new file mode 100644 index 0000000000..cce87c0a35 --- /dev/null +++ b/master/structncine_1_1_audio_effect_properties_1_1_flanger_properties.html @@ -0,0 +1,110 @@ + + + + + + + +nCine: ncine::AudioEffectProperties::FlangerProperties Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::AudioEffectProperties::FlangerProperties Struct Reference
    +
    +
    + + + + + + + + + + + + + + +

    +Public Attributes

    +int waveform
     
    +int phase
     
    +float rate
     
    +float depth
     
    +float feedback
     
    +float delay
     
    +
    The documentation for this struct was generated from the following files: +
    + + + + diff --git a/master/structncine_1_1_audio_effect_properties_1_1_frequency_shifter_properties-members.html b/master/structncine_1_1_audio_effect_properties_1_1_frequency_shifter_properties-members.html new file mode 100644 index 0000000000..e2b249cf9c --- /dev/null +++ b/master/structncine_1_1_audio_effect_properties_1_1_frequency_shifter_properties-members.html @@ -0,0 +1,88 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    ncine::AudioEffectProperties::FrequencyShifterProperties Member List
    +
    + + + + + diff --git a/master/structncine_1_1_audio_effect_properties_1_1_frequency_shifter_properties.html b/master/structncine_1_1_audio_effect_properties_1_1_frequency_shifter_properties.html new file mode 100644 index 0000000000..3099623a53 --- /dev/null +++ b/master/structncine_1_1_audio_effect_properties_1_1_frequency_shifter_properties.html @@ -0,0 +1,101 @@ + + + + + + + +nCine: ncine::AudioEffectProperties::FrequencyShifterProperties Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::AudioEffectProperties::FrequencyShifterProperties Struct Reference
    +
    +
    + + + + + + + + +

    +Public Attributes

    +float frequency
     
    +int leftDirection
     
    +int rightDirection
     
    +
    The documentation for this struct was generated from the following files: +
    + + + + diff --git a/master/structncine_1_1_audio_effect_properties_1_1_pitch_shifter_properties-members.html b/master/structncine_1_1_audio_effect_properties_1_1_pitch_shifter_properties-members.html new file mode 100644 index 0000000000..a090ad8633 --- /dev/null +++ b/master/structncine_1_1_audio_effect_properties_1_1_pitch_shifter_properties-members.html @@ -0,0 +1,87 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    ncine::AudioEffectProperties::PitchShifterProperties Member List
    +
    + + + + + diff --git a/master/structncine_1_1_audio_effect_properties_1_1_pitch_shifter_properties.html b/master/structncine_1_1_audio_effect_properties_1_1_pitch_shifter_properties.html new file mode 100644 index 0000000000..669b2d803c --- /dev/null +++ b/master/structncine_1_1_audio_effect_properties_1_1_pitch_shifter_properties.html @@ -0,0 +1,98 @@ + + + + + + + +nCine: ncine::AudioEffectProperties::PitchShifterProperties Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::AudioEffectProperties::PitchShifterProperties Struct Reference
    +
    +
    + + + + + + +

    +Public Attributes

    +int coarseTune
     
    +int fineTune
     
    +
    The documentation for this struct was generated from the following files: +
    + + + + diff --git a/master/structncine_1_1_audio_effect_properties_1_1_reverb_properties-members.html b/master/structncine_1_1_audio_effect_properties_1_1_reverb_properties-members.html new file mode 100644 index 0000000000..9edeac5d9d --- /dev/null +++ b/master/structncine_1_1_audio_effect_properties_1_1_reverb_properties-members.html @@ -0,0 +1,98 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    ncine::AudioEffectProperties::ReverbProperties Member List
    +
    +
    + +

    This is the complete list of members for ncine::AudioEffectProperties::ReverbProperties, including all inherited members.

    + + + + + + + + + + + + + + + +
    airAbsorptionGainHF (defined in ncine::AudioEffectProperties::ReverbProperties)ncine::AudioEffectProperties::ReverbProperties
    decayHFLimit (defined in ncine::AudioEffectProperties::ReverbProperties)ncine::AudioEffectProperties::ReverbProperties
    decayHFRatio (defined in ncine::AudioEffectProperties::ReverbProperties)ncine::AudioEffectProperties::ReverbProperties
    decayTime (defined in ncine::AudioEffectProperties::ReverbProperties)ncine::AudioEffectProperties::ReverbProperties
    density (defined in ncine::AudioEffectProperties::ReverbProperties)ncine::AudioEffectProperties::ReverbProperties
    diffusion (defined in ncine::AudioEffectProperties::ReverbProperties)ncine::AudioEffectProperties::ReverbProperties
    gain (defined in ncine::AudioEffectProperties::ReverbProperties)ncine::AudioEffectProperties::ReverbProperties
    gainHF (defined in ncine::AudioEffectProperties::ReverbProperties)ncine::AudioEffectProperties::ReverbProperties
    lateReverbDelay (defined in ncine::AudioEffectProperties::ReverbProperties)ncine::AudioEffectProperties::ReverbProperties
    lateReverbGain (defined in ncine::AudioEffectProperties::ReverbProperties)ncine::AudioEffectProperties::ReverbProperties
    reflectionsDelay (defined in ncine::AudioEffectProperties::ReverbProperties)ncine::AudioEffectProperties::ReverbProperties
    reflectionsGain (defined in ncine::AudioEffectProperties::ReverbProperties)ncine::AudioEffectProperties::ReverbProperties
    ReverbProperties() (defined in ncine::AudioEffectProperties::ReverbProperties)ncine::AudioEffectProperties::ReverbProperties
    roomRolloffFactor (defined in ncine::AudioEffectProperties::ReverbProperties)ncine::AudioEffectProperties::ReverbProperties
    + + + + diff --git a/master/structncine_1_1_audio_effect_properties_1_1_reverb_properties.html b/master/structncine_1_1_audio_effect_properties_1_1_reverb_properties.html new file mode 100644 index 0000000000..a6bcfff235 --- /dev/null +++ b/master/structncine_1_1_audio_effect_properties_1_1_reverb_properties.html @@ -0,0 +1,131 @@ + + + + + + + +nCine: ncine::AudioEffectProperties::ReverbProperties Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::AudioEffectProperties::ReverbProperties Struct Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +float density
     
    +float diffusion
     
    +float gain
     
    +float gainHF
     
    +float decayTime
     
    +float decayHFRatio
     
    +float reflectionsGain
     
    +float reflectionsDelay
     
    +float lateReverbGain
     
    +float lateReverbDelay
     
    +float airAbsorptionGainHF
     
    +float roomRolloffFactor
     
    +int decayHFLimit
     
    +
    The documentation for this struct was generated from the following files: +
    + + + + diff --git a/master/structncine_1_1_audio_effect_properties_1_1_ring_modulator_properties-members.html b/master/structncine_1_1_audio_effect_properties_1_1_ring_modulator_properties-members.html new file mode 100644 index 0000000000..0d7658b088 --- /dev/null +++ b/master/structncine_1_1_audio_effect_properties_1_1_ring_modulator_properties-members.html @@ -0,0 +1,88 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    ncine::AudioEffectProperties::RingModulatorProperties Member List
    +
    + + + + + diff --git a/master/structncine_1_1_audio_effect_properties_1_1_ring_modulator_properties.html b/master/structncine_1_1_audio_effect_properties_1_1_ring_modulator_properties.html new file mode 100644 index 0000000000..bacdcf5b07 --- /dev/null +++ b/master/structncine_1_1_audio_effect_properties_1_1_ring_modulator_properties.html @@ -0,0 +1,101 @@ + + + + + + + +nCine: ncine::AudioEffectProperties::RingModulatorProperties Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::AudioEffectProperties::RingModulatorProperties Struct Reference
    +
    +
    + + + + + + + + +

    +Public Attributes

    +float frequency
     
    +float highpassCutoff
     
    +int waveform
     
    +
    The documentation for this struct was generated from the following files: +
    + + + + diff --git a/master/structncine_1_1_audio_effect_properties_1_1_vocal_morpher_properties-members.html b/master/structncine_1_1_audio_effect_properties_1_1_vocal_morpher_properties-members.html new file mode 100644 index 0000000000..ec061f617b --- /dev/null +++ b/master/structncine_1_1_audio_effect_properties_1_1_vocal_morpher_properties-members.html @@ -0,0 +1,91 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    ncine::AudioEffectProperties::VocalMorpherProperties Member List
    +
    + + + + + diff --git a/master/structncine_1_1_audio_effect_properties_1_1_vocal_morpher_properties.html b/master/structncine_1_1_audio_effect_properties_1_1_vocal_morpher_properties.html new file mode 100644 index 0000000000..eed5c409c4 --- /dev/null +++ b/master/structncine_1_1_audio_effect_properties_1_1_vocal_morpher_properties.html @@ -0,0 +1,110 @@ + + + + + + + +nCine: ncine::AudioEffectProperties::VocalMorpherProperties Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::AudioEffectProperties::VocalMorpherProperties Struct Reference
    +
    +
    + + + + + + + + + + + + + + +

    +Public Attributes

    +int phonemeA
     
    +int phonemeACoarseTuning
     
    +int phonemeB
     
    +int phonemeBCoarseTuning
     
    +int waveform
     
    +float rate
     
    +
    The documentation for this struct was generated from the following files: +
    + + + + diff --git a/master/structncine_1_1_audio_filter_1_1_properties-members.html b/master/structncine_1_1_audio_filter_1_1_properties-members.html new file mode 100644 index 0000000000..81daab0db5 --- /dev/null +++ b/master/structncine_1_1_audio_filter_1_1_properties-members.html @@ -0,0 +1,88 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    ncine::AudioFilter::Properties Member List
    +
    + + + + + diff --git a/master/structncine_1_1_audio_filter_1_1_properties.html b/master/structncine_1_1_audio_filter_1_1_properties.html new file mode 100644 index 0000000000..72c95911a3 --- /dev/null +++ b/master/structncine_1_1_audio_filter_1_1_properties.html @@ -0,0 +1,103 @@ + + + + + + + +nCine: ncine::AudioFilter::Properties Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::AudioFilter::Properties Struct Reference
    +
    +
    + + + + + + + + + + +

    +Public Attributes

    +Type type = Type::NULL_FILTER
     
    +float gain = 1.0f
     
    +float gainLF = 1.0f
     
    +float gainHF = 1.0f
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structncine_1_1_camera_1_1_projection_values-members.html b/master/structncine_1_1_camera_1_1_projection_values-members.html new file mode 100644 index 0000000000..20abc793c9 --- /dev/null +++ b/master/structncine_1_1_camera_1_1_projection_values-members.html @@ -0,0 +1,92 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    ncine::Camera::ProjectionValues Member List
    +
    + + + + + diff --git a/master/structncine_1_1_camera_1_1_projection_values.html b/master/structncine_1_1_camera_1_1_projection_values.html new file mode 100644 index 0000000000..4aeab73017 --- /dev/null +++ b/master/structncine_1_1_camera_1_1_projection_values.html @@ -0,0 +1,116 @@ + + + + + + + +nCine: ncine::Camera::ProjectionValues Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::Camera::ProjectionValues Struct Reference
    +
    +
    + + + + +

    +Public Member Functions

    ProjectionValues (float ll, float rr, float tt, float bb)
     
    + + + + + + + + + + + + + +

    +Public Attributes

    +float left
     
    +float right
     
    +float top
     
    +float bottom
     
    +float near = -1.0f
     
    +float far = 1.0f
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structncine_1_1_camera_1_1_view_values-members.html b/master/structncine_1_1_camera_1_1_view_values-members.html new file mode 100644 index 0000000000..d6a24a6434 --- /dev/null +++ b/master/structncine_1_1_camera_1_1_view_values-members.html @@ -0,0 +1,89 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    ncine::Camera::ViewValues Member List
    +
    +
    + +

    This is the complete list of members for ncine::Camera::ViewValues, including all inherited members.

    + + + + + + +
    position (defined in ncine::Camera::ViewValues)ncine::Camera::ViewValues
    rotation (defined in ncine::Camera::ViewValues)ncine::Camera::ViewValues
    scale (defined in ncine::Camera::ViewValues)ncine::Camera::ViewValues
    ViewValues() (defined in ncine::Camera::ViewValues)ncine::Camera::ViewValuesinline
    ViewValues(float xx, float yy, float rr, float ss) (defined in ncine::Camera::ViewValues)ncine::Camera::ViewValuesinline
    + + + + diff --git a/master/structncine_1_1_camera_1_1_view_values.html b/master/structncine_1_1_camera_1_1_view_values.html new file mode 100644 index 0000000000..72d61b9c01 --- /dev/null +++ b/master/structncine_1_1_camera_1_1_view_values.html @@ -0,0 +1,116 @@ + + + + + + + +nCine: ncine::Camera::ViewValues Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::Camera::ViewValues Struct Reference
    +
    +
    +
    +Collaboration diagram for ncine::Camera::ViewValues:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    + + + + +

    +Public Member Functions

    ViewValues (float xx, float yy, float rr, float ss)
     
    + + + + + + + +

    +Public Attributes

    +Vector2f position
     
    +float rotation
     
    +float scale
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structncine_1_1_camera_1_1_view_values__coll__graph.map b/master/structncine_1_1_camera_1_1_view_values__coll__graph.map new file mode 100644 index 0000000000..9ec5bd0677 --- /dev/null +++ b/master/structncine_1_1_camera_1_1_view_values__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/structncine_1_1_camera_1_1_view_values__coll__graph.md5 b/master/structncine_1_1_camera_1_1_view_values__coll__graph.md5 new file mode 100644 index 0000000000..75087277ea --- /dev/null +++ b/master/structncine_1_1_camera_1_1_view_values__coll__graph.md5 @@ -0,0 +1 @@ +89c9239eb7a2000dd6f9258b6b942db7 \ No newline at end of file diff --git a/master/structncine_1_1_camera_1_1_view_values__coll__graph.png b/master/structncine_1_1_camera_1_1_view_values__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..12514bc74174465625b26cfeebcede53bbb2e7bd GIT binary patch literal 5564 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 F{{UIu$Ljz9 literal 0 HcmV?d00001 diff --git a/master/structncine_1_1_color_affector_1_1_color_step-members.html b/master/structncine_1_1_color_affector_1_1_color_step-members.html new file mode 100644 index 0000000000..8ff76eaab0 --- /dev/null +++ b/master/structncine_1_1_color_affector_1_1_color_step-members.html @@ -0,0 +1,88 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    ncine::ColorAffector::ColorStep Member List
    +
    +
    + +

    This is the complete list of members for ncine::ColorAffector::ColorStep, including all inherited members.

    + + + + + +
    age (defined in ncine::ColorAffector::ColorStep)ncine::ColorAffector::ColorStep
    color (defined in ncine::ColorAffector::ColorStep)ncine::ColorAffector::ColorStep
    ColorStep() (defined in ncine::ColorAffector::ColorStep)ncine::ColorAffector::ColorStepinline
    ColorStep(float newAge, const Colorf &newColor) (defined in ncine::ColorAffector::ColorStep)ncine::ColorAffector::ColorStepinline
    + + + + diff --git a/master/structncine_1_1_color_affector_1_1_color_step.html b/master/structncine_1_1_color_affector_1_1_color_step.html new file mode 100644 index 0000000000..b2602b6107 --- /dev/null +++ b/master/structncine_1_1_color_affector_1_1_color_step.html @@ -0,0 +1,113 @@ + + + + + + + +nCine: ncine::ColorAffector::ColorStep Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::ColorAffector::ColorStep Struct Reference
    +
    +
    +
    +Collaboration diagram for ncine::ColorAffector::ColorStep:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    + + + + +

    +Public Member Functions

    ColorStep (float newAge, const Colorf &newColor)
     
    + + + + + +

    +Public Attributes

    +float age
     
    +Colorf color
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structncine_1_1_color_affector_1_1_color_step__coll__graph.map b/master/structncine_1_1_color_affector_1_1_color_step__coll__graph.map new file mode 100644 index 0000000000..73caac3e33 --- /dev/null +++ b/master/structncine_1_1_color_affector_1_1_color_step__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/structncine_1_1_color_affector_1_1_color_step__coll__graph.md5 b/master/structncine_1_1_color_affector_1_1_color_step__coll__graph.md5 new file mode 100644 index 0000000000..a4ad270d2d --- /dev/null +++ b/master/structncine_1_1_color_affector_1_1_color_step__coll__graph.md5 @@ -0,0 +1 @@ +e9da11ef8700ae82b4716013d5bc6b0e \ No newline at end of file diff --git a/master/structncine_1_1_color_affector_1_1_color_step__coll__graph.png b/master/structncine_1_1_color_affector_1_1_color_step__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..d0eca467652c5098a693442a22534afe2b0a8d74 GIT binary patch literal 8607 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 NUP#En3&jk4{~uWRi+lh8 literal 0 HcmV?d00001 diff --git a/master/structncine_1_1_file_system_1_1_file_date-members.html b/master/structncine_1_1_file_system_1_1_file_date-members.html new file mode 100644 index 0000000000..da61ad667b --- /dev/null +++ b/master/structncine_1_1_file_system_1_1_file_date-members.html @@ -0,0 +1,91 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    ncine::FileSystem::FileDate Member List
    +
    + + + + + diff --git a/master/structncine_1_1_file_system_1_1_file_date.html b/master/structncine_1_1_file_system_1_1_file_date.html new file mode 100644 index 0000000000..034a11960f --- /dev/null +++ b/master/structncine_1_1_file_system_1_1_file_date.html @@ -0,0 +1,112 @@ + + + + + + + +nCine: ncine::FileSystem::FileDate Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::FileSystem::FileDate Struct Reference
    +
    +
    + + + + + + + + + + + + + + + + +

    +Public Attributes

    +int year
     
    +int month
     
    +int day
     
    +int weekDay
     
    +int hour
     
    +int minute
     
    +int second
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structncine_1_1_hash64_1_1_statistics-members.html b/master/structncine_1_1_hash64_1_1_statistics-members.html new file mode 100644 index 0000000000..18f5807fdd --- /dev/null +++ b/master/structncine_1_1_hash64_1_1_statistics-members.html @@ -0,0 +1,89 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    ncine::Hash64::Statistics Member List
    +
    +
    + +

    This is the complete list of members for ncine::Hash64::Statistics, including all inherited members.

    + + + + + + +
    HashedCharacters (defined in ncine::Hash64::Statistics)ncine::Hash64::Statisticsmutable
    HashedFiles (defined in ncine::Hash64::Statistics)ncine::Hash64::Statisticsmutable
    HashedStrings (defined in ncine::Hash64::Statistics)ncine::Hash64::Statisticsmutable
    HashStringCalls (defined in ncine::Hash64::Statistics)ncine::Hash64::Statisticsmutable
    ScannedHashStrings (defined in ncine::Hash64::Statistics)ncine::Hash64::Statisticsmutable
    + + + + diff --git a/master/structncine_1_1_hash64_1_1_statistics.html b/master/structncine_1_1_hash64_1_1_statistics.html new file mode 100644 index 0000000000..fcf0f02139 --- /dev/null +++ b/master/structncine_1_1_hash64_1_1_statistics.html @@ -0,0 +1,113 @@ + + + + + + + +nCine: ncine::Hash64::Statistics Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::Hash64::Statistics Struct Reference
    +
    +
    + +

    The statistics about hashing requests. + More...

    + +

    #include <Hash64.h>

    + + + + + + + + + + + + +

    +Public Attributes

    +unsigned int HashStringCalls = 0
     
    +unsigned int HashedStrings = 0
     
    +unsigned int HashedCharacters = 0
     
    +unsigned int HashedFiles = 0
     
    +unsigned int ScannedHashStrings = 0
     
    +

    Detailed Description

    +

    The statistics about hashing requests.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structncine_1_1_hat_state-members.html b/master/structncine_1_1_hat_state-members.html new file mode 100644 index 0000000000..eb2d31be09 --- /dev/null +++ b/master/structncine_1_1_hat_state-members.html @@ -0,0 +1,93 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    ncine::HatState Member List
    +
    +
    + +

    This is the complete list of members for ncine::HatState, including all inherited members.

    + + + + + + + + + + +
    CENTERED enum value (defined in ncine::HatState)ncine::HatState
    DOWN enum value (defined in ncine::HatState)ncine::HatState
    LEFT enum value (defined in ncine::HatState)ncine::HatState
    LEFT_DOWN enum value (defined in ncine::HatState)ncine::HatState
    LEFT_UP enum value (defined in ncine::HatState)ncine::HatState
    RIGHT enum value (defined in ncine::HatState)ncine::HatState
    RIGHT_DOWN enum value (defined in ncine::HatState)ncine::HatState
    RIGHT_UP enum value (defined in ncine::HatState)ncine::HatState
    UP enum value (defined in ncine::HatState)ncine::HatState
    + + + + diff --git a/master/structncine_1_1_hat_state.html b/master/structncine_1_1_hat_state.html new file mode 100644 index 0000000000..5a5d411862 --- /dev/null +++ b/master/structncine_1_1_hat_state.html @@ -0,0 +1,113 @@ + + + + + + + +nCine: ncine::HatState Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::HatState Struct Reference
    +
    +
    + +

    A structure containing joystick hat values. + More...

    + +

    #include <InputEvents.h>

    + + + + +

    +Public Types

    enum  {
    +  CENTERED = 0 +, UP = 1 +, RIGHT = 2 +, DOWN = 4 +,
    +  LEFT = 8 +, RIGHT_UP = RIGHT | UP +, RIGHT_DOWN = RIGHT | DOWN +, LEFT_UP = LEFT | UP +,
    +  LEFT_DOWN = LEFT | DOWN +
    + }
     
    +

    Detailed Description

    +

    A structure containing joystick hat values.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structncine_1_1_i_audio_device_1_1_a_l_extensions-members.html b/master/structncine_1_1_i_audio_device_1_1_a_l_extensions-members.html new file mode 100644 index 0000000000..b264e3837b --- /dev/null +++ b/master/structncine_1_1_i_audio_device_1_1_a_l_extensions-members.html @@ -0,0 +1,90 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    ncine::IAudioDevice::ALExtensions Member List
    +
    +
    + +

    This is the complete list of members for ncine::IAudioDevice::ALExtensions, including all inherited members.

    + + + + + + + +
    COUNT enum value (defined in ncine::IAudioDevice::ALExtensions)ncine::IAudioDevice::ALExtensions
    Enum enum name (defined in ncine::IAudioDevice::ALExtensions)ncine::IAudioDevice::ALExtensions
    EXT_EFX enum value (defined in ncine::IAudioDevice::ALExtensions)ncine::IAudioDevice::ALExtensions
    SOFT_DEFERRED_UPDATES enum value (defined in ncine::IAudioDevice::ALExtensions)ncine::IAudioDevice::ALExtensions
    SOFT_PAUSE_DEVICE enum value (defined in ncine::IAudioDevice::ALExtensions)ncine::IAudioDevice::ALExtensions
    SOFT_SOURCE_SPATIALIZE enum value (defined in ncine::IAudioDevice::ALExtensions)ncine::IAudioDevice::ALExtensions
    + + + + diff --git a/master/structncine_1_1_i_audio_device_1_1_a_l_extensions.html b/master/structncine_1_1_i_audio_device_1_1_a_l_extensions.html new file mode 100644 index 0000000000..368a1a4c96 --- /dev/null +++ b/master/structncine_1_1_i_audio_device_1_1_a_l_extensions.html @@ -0,0 +1,108 @@ + + + + + + + +nCine: ncine::IAudioDevice::ALExtensions Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::IAudioDevice::ALExtensions Struct Reference
    +
    +
    + +

    OpenAL queryable extensions. + More...

    + +

    #include <IAudioDevice.h>

    + + + + +

    +Public Types

    enum  Enum {
    +  EXT_EFX = 0 +, SOFT_PAUSE_DEVICE +, SOFT_DEFERRED_UPDATES +, SOFT_SOURCE_SPATIALIZE +,
    +  COUNT +
    + }
     
    +

    Detailed Description

    +

    OpenAL queryable extensions.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structncine_1_1_i_audio_device_1_1_attributes-members.html b/master/structncine_1_1_i_audio_device_1_1_attributes-members.html new file mode 100644 index 0000000000..249660bc05 --- /dev/null +++ b/master/structncine_1_1_i_audio_device_1_1_attributes-members.html @@ -0,0 +1,95 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    ncine::IAudioDevice::Attributes Member List
    +
    + + + + + diff --git a/master/structncine_1_1_i_audio_device_1_1_attributes.html b/master/structncine_1_1_i_audio_device_1_1_attributes.html new file mode 100644 index 0000000000..665772a9e3 --- /dev/null +++ b/master/structncine_1_1_i_audio_device_1_1_attributes.html @@ -0,0 +1,131 @@ + + + + + + + +nCine: ncine::IAudioDevice::Attributes Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::IAudioDevice::Attributes Struct Reference
    +
    +
    + +

    Audio device attributes class. + More...

    + +

    #include <IAudioDevice.h>

    + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +const char * deviceName = nullptr
     
    +int majorVersion = 0
     
    +int minorVersion = 0
     
    +int outputFrequency = 0
     
    +int numMonoSources = 0
     
    +int numStereoSources = 0
     
    +int refreshRate = 0
     
    +int synchronous = 0
     
    +int efxMajorVersion = 0
     
    +int efxMinorVersion = 0
     
    +int maxAuxiliarySends = 0
     
    +

    Detailed Description

    +

    Audio device attributes class.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structncine_1_1_i_debug_overlay_1_1_display_settings-members.html b/master/structncine_1_1_i_debug_overlay_1_1_display_settings-members.html new file mode 100644 index 0000000000..443c536144 --- /dev/null +++ b/master/structncine_1_1_i_debug_overlay_1_1_display_settings-members.html @@ -0,0 +1,88 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    ncine::IDebugOverlay::DisplaySettings Member List
    +
    + + + + + diff --git a/master/structncine_1_1_i_debug_overlay_1_1_display_settings.html b/master/structncine_1_1_i_debug_overlay_1_1_display_settings.html new file mode 100644 index 0000000000..2f7191bf3a --- /dev/null +++ b/master/structncine_1_1_i_debug_overlay_1_1_display_settings.html @@ -0,0 +1,103 @@ + + + + + + + +nCine: ncine::IDebugOverlay::DisplaySettings Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::IDebugOverlay::DisplaySettings Struct Reference
    +
    +
    + + + + + + + + + + + +

    +Public Attributes

    +bool showProfilerGraphs
     True if showing the profiler graphs.
     
    +bool showInfoText
     True if showing the information text.
     
    +bool showInterface
     True if showing the debug interface.
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structncine_1_1_i_file_1_1_open_mode-members.html b/master/structncine_1_1_i_file_1_1_open_mode-members.html new file mode 100644 index 0000000000..e2f4dd4648 --- /dev/null +++ b/master/structncine_1_1_i_file_1_1_open_mode-members.html @@ -0,0 +1,88 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    ncine::IFile::OpenMode Member List
    +
    +
    + +

    This is the complete list of members for ncine::IFile::OpenMode, including all inherited members.

    + + + + + +
    BINARY enum value (defined in ncine::IFile::OpenMode)ncine::IFile::OpenMode
    FD enum value (defined in ncine::IFile::OpenMode)ncine::IFile::OpenMode
    READ enum value (defined in ncine::IFile::OpenMode)ncine::IFile::OpenMode
    WRITE enum value (defined in ncine::IFile::OpenMode)ncine::IFile::OpenMode
    + + + + diff --git a/master/structncine_1_1_i_file_1_1_open_mode.html b/master/structncine_1_1_i_file_1_1_open_mode.html new file mode 100644 index 0000000000..e1d6550509 --- /dev/null +++ b/master/structncine_1_1_i_file_1_1_open_mode.html @@ -0,0 +1,104 @@ + + + + + + + +nCine: ncine::IFile::OpenMode Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::IFile::OpenMode Struct Reference
    +
    +
    + +

    Open mode bitmask. + More...

    + +

    #include <IFile.h>

    + + + + +

    +Public Types

    enum  { FD = 1 +, READ = 2 +, WRITE = 4 +, BINARY = 8 + }
     
    +

    Detailed Description

    +

    Open mode bitmask.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structncine_1_1_i_gfx_capabilities_1_1_g_l_array_int_values-members.html b/master/structncine_1_1_i_gfx_capabilities_1_1_g_l_array_int_values-members.html new file mode 100644 index 0000000000..5878499cf1 --- /dev/null +++ b/master/structncine_1_1_i_gfx_capabilities_1_1_g_l_array_int_values-members.html @@ -0,0 +1,87 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    ncine::IGfxCapabilities::GLArrayIntValues Member List
    +
    +
    + +

    This is the complete list of members for ncine::IGfxCapabilities::GLArrayIntValues, including all inherited members.

    + + + + +
    COUNT enum value (defined in ncine::IGfxCapabilities::GLArrayIntValues)ncine::IGfxCapabilities::GLArrayIntValues
    Enum enum name (defined in ncine::IGfxCapabilities::GLArrayIntValues)ncine::IGfxCapabilities::GLArrayIntValues
    PROGRAM_BINARY_FORMATS enum value (defined in ncine::IGfxCapabilities::GLArrayIntValues)ncine::IGfxCapabilities::GLArrayIntValues
    + + + + diff --git a/master/structncine_1_1_i_gfx_capabilities_1_1_g_l_array_int_values.html b/master/structncine_1_1_i_gfx_capabilities_1_1_g_l_array_int_values.html new file mode 100644 index 0000000000..ca0f1ff2c8 --- /dev/null +++ b/master/structncine_1_1_i_gfx_capabilities_1_1_g_l_array_int_values.html @@ -0,0 +1,102 @@ + + + + + + + +nCine: ncine::IGfxCapabilities::GLArrayIntValues Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::IGfxCapabilities::GLArrayIntValues Struct Reference
    +
    +
    + +

    OpenGL queryable runtime integer array values. + More...

    + +

    #include <IGfxCapabilities.h>

    + + + + +

    +Public Types

    enum  Enum { PROGRAM_BINARY_FORMATS = 0 +, COUNT + }
     
    +

    Detailed Description

    +

    OpenGL queryable runtime integer array values.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structncine_1_1_i_gfx_capabilities_1_1_g_l_extensions-members.html b/master/structncine_1_1_i_gfx_capabilities_1_1_g_l_extensions-members.html new file mode 100644 index 0000000000..9e56c5f401 --- /dev/null +++ b/master/structncine_1_1_i_gfx_capabilities_1_1_g_l_extensions-members.html @@ -0,0 +1,94 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    ncine::IGfxCapabilities::GLExtensions Member List
    +
    +
    + +

    This is the complete list of members for ncine::IGfxCapabilities::GLExtensions, including all inherited members.

    + + + + + + + + + + + +
    AMD_COMPRESSED_ATC_TEXTURE enum value (defined in ncine::IGfxCapabilities::GLExtensions)ncine::IGfxCapabilities::GLExtensions
    ARB_GET_PROGRAM_BINARY enum value (defined in ncine::IGfxCapabilities::GLExtensions)ncine::IGfxCapabilities::GLExtensions
    ARB_TEXTURE_STORAGE enum value (defined in ncine::IGfxCapabilities::GLExtensions)ncine::IGfxCapabilities::GLExtensions
    COUNT enum value (defined in ncine::IGfxCapabilities::GLExtensions)ncine::IGfxCapabilities::GLExtensions
    Enum enum name (defined in ncine::IGfxCapabilities::GLExtensions)ncine::IGfxCapabilities::GLExtensions
    EXT_TEXTURE_COMPRESSION_S3TC enum value (defined in ncine::IGfxCapabilities::GLExtensions)ncine::IGfxCapabilities::GLExtensions
    IMG_TEXTURE_COMPRESSION_PVRTC enum value (defined in ncine::IGfxCapabilities::GLExtensions)ncine::IGfxCapabilities::GLExtensions
    KHR_DEBUG enum value (defined in ncine::IGfxCapabilities::GLExtensions)ncine::IGfxCapabilities::GLExtensions
    KHR_TEXTURE_COMPRESSION_ASTC_LDR enum value (defined in ncine::IGfxCapabilities::GLExtensions)ncine::IGfxCapabilities::GLExtensions
    OES_COMPRESSED_ETC1_RGB8_TEXTURE enum value (defined in ncine::IGfxCapabilities::GLExtensions)ncine::IGfxCapabilities::GLExtensions
    + + + + diff --git a/master/structncine_1_1_i_gfx_capabilities_1_1_g_l_extensions.html b/master/structncine_1_1_i_gfx_capabilities_1_1_g_l_extensions.html new file mode 100644 index 0000000000..fff9167147 --- /dev/null +++ b/master/structncine_1_1_i_gfx_capabilities_1_1_g_l_extensions.html @@ -0,0 +1,113 @@ + + + + + + + +nCine: ncine::IGfxCapabilities::GLExtensions Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::IGfxCapabilities::GLExtensions Struct Reference
    +
    +
    + +

    OpenGL queryable extensions. + More...

    + +

    #include <IGfxCapabilities.h>

    + + + + +

    +Public Types

    enum  Enum {
    +  KHR_DEBUG = 0 +, ARB_TEXTURE_STORAGE +, ARB_GET_PROGRAM_BINARY +, EXT_TEXTURE_COMPRESSION_S3TC +,
    +  OES_COMPRESSED_ETC1_RGB8_TEXTURE +, AMD_COMPRESSED_ATC_TEXTURE +, IMG_TEXTURE_COMPRESSION_PVRTC +, KHR_TEXTURE_COMPRESSION_ASTC_LDR +,
    +  COUNT +
    + }
     
    +

    Detailed Description

    +

    OpenGL queryable extensions.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structncine_1_1_i_gfx_capabilities_1_1_g_l_int_values-members.html b/master/structncine_1_1_i_gfx_capabilities_1_1_g_l_int_values-members.html new file mode 100644 index 0000000000..6097faf118 --- /dev/null +++ b/master/structncine_1_1_i_gfx_capabilities_1_1_g_l_int_values-members.html @@ -0,0 +1,97 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    ncine::IGfxCapabilities::GLIntValues Member List
    +
    +
    + +

    This is the complete list of members for ncine::IGfxCapabilities::GLIntValues, including all inherited members.

    + + + + + + + + + + + + + + +
    COUNT enum value (defined in ncine::IGfxCapabilities::GLIntValues)ncine::IGfxCapabilities::GLIntValues
    Enum enum name (defined in ncine::IGfxCapabilities::GLIntValues)ncine::IGfxCapabilities::GLIntValues
    MAX_COLOR_ATTACHMENTS enum value (defined in ncine::IGfxCapabilities::GLIntValues)ncine::IGfxCapabilities::GLIntValues
    MAX_FRAGMENT_UNIFORM_BLOCKS enum value (defined in ncine::IGfxCapabilities::GLIntValues)ncine::IGfxCapabilities::GLIntValues
    MAX_TEXTURE_IMAGE_UNITS enum value (defined in ncine::IGfxCapabilities::GLIntValues)ncine::IGfxCapabilities::GLIntValues
    MAX_TEXTURE_SIZE enum value (defined in ncine::IGfxCapabilities::GLIntValues)ncine::IGfxCapabilities::GLIntValues
    MAX_UNIFORM_BLOCK_SIZE enum value (defined in ncine::IGfxCapabilities::GLIntValues)ncine::IGfxCapabilities::GLIntValues
    MAX_UNIFORM_BUFFER_BINDINGS enum value (defined in ncine::IGfxCapabilities::GLIntValues)ncine::IGfxCapabilities::GLIntValues
    MAX_VERTEX_ATTRIB_STRIDE enum value (defined in ncine::IGfxCapabilities::GLIntValues)ncine::IGfxCapabilities::GLIntValues
    MAX_VERTEX_UNIFORM_BLOCKS enum value (defined in ncine::IGfxCapabilities::GLIntValues)ncine::IGfxCapabilities::GLIntValues
    NUM_PROGRAM_BINARY_FORMATS enum value (defined in ncine::IGfxCapabilities::GLIntValues)ncine::IGfxCapabilities::GLIntValues
    UNCLAMPED_MAX_UNIFORM_BLOCK_SIZE enum value (defined in ncine::IGfxCapabilities::GLIntValues)ncine::IGfxCapabilities::GLIntValues
    UNIFORM_BUFFER_OFFSET_ALIGNMENT enum value (defined in ncine::IGfxCapabilities::GLIntValues)ncine::IGfxCapabilities::GLIntValues
    + + + + diff --git a/master/structncine_1_1_i_gfx_capabilities_1_1_g_l_int_values.html b/master/structncine_1_1_i_gfx_capabilities_1_1_g_l_int_values.html new file mode 100644 index 0000000000..e92869fbba --- /dev/null +++ b/master/structncine_1_1_i_gfx_capabilities_1_1_g_l_int_values.html @@ -0,0 +1,116 @@ + + + + + + + +nCine: ncine::IGfxCapabilities::GLIntValues Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::IGfxCapabilities::GLIntValues Struct Reference
    +
    +
    + +

    OpenGL queryable runtime integer values. + More...

    + +

    #include <IGfxCapabilities.h>

    + + + + +

    +Public Types

    enum  Enum {
    +  MAX_TEXTURE_SIZE = 0 +, MAX_TEXTURE_IMAGE_UNITS +, UNCLAMPED_MAX_UNIFORM_BLOCK_SIZE +, MAX_UNIFORM_BLOCK_SIZE +,
    +  MAX_UNIFORM_BUFFER_BINDINGS +, MAX_VERTEX_UNIFORM_BLOCKS +, MAX_FRAGMENT_UNIFORM_BLOCKS +, UNIFORM_BUFFER_OFFSET_ALIGNMENT +,
    +  MAX_VERTEX_ATTRIB_STRIDE +, MAX_COLOR_ATTACHMENTS +, NUM_PROGRAM_BINARY_FORMATS +, COUNT +
    + }
     
    +

    Detailed Description

    +

    OpenGL queryable runtime integer values.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structncine_1_1_i_gfx_capabilities_1_1_gl_info_strings-members.html b/master/structncine_1_1_i_gfx_capabilities_1_1_gl_info_strings-members.html new file mode 100644 index 0000000000..354d0e86db --- /dev/null +++ b/master/structncine_1_1_i_gfx_capabilities_1_1_gl_info_strings-members.html @@ -0,0 +1,88 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    ncine::IGfxCapabilities::GlInfoStrings Member List
    +
    + + + + + diff --git a/master/structncine_1_1_i_gfx_capabilities_1_1_gl_info_strings.html b/master/structncine_1_1_i_gfx_capabilities_1_1_gl_info_strings.html new file mode 100644 index 0000000000..5bcf7206cd --- /dev/null +++ b/master/structncine_1_1_i_gfx_capabilities_1_1_gl_info_strings.html @@ -0,0 +1,110 @@ + + + + + + + +nCine: ncine::IGfxCapabilities::GlInfoStrings Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::IGfxCapabilities::GlInfoStrings Struct Reference
    +
    +
    + +

    OpenGL information strings. + More...

    + +

    #include <IGfxCapabilities.h>

    + + + + + + + + + + +

    +Public Attributes

    +const unsigned char * vendor = nullptr
     
    +const unsigned char * renderer = nullptr
     
    +const unsigned char * glVersion = nullptr
     
    +const unsigned char * glslVersion = nullptr
     
    +

    Detailed Description

    +

    OpenGL information strings.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structncine_1_1_i_gfx_device_1_1_g_l_context_info-members.html b/master/structncine_1_1_i_gfx_device_1_1_g_l_context_info-members.html new file mode 100644 index 0000000000..401b8b1134 --- /dev/null +++ b/master/structncine_1_1_i_gfx_device_1_1_g_l_context_info-members.html @@ -0,0 +1,90 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    ncine::IGfxDevice::GLContextInfo Member List
    +
    +
    + +

    This is the complete list of members for ncine::IGfxDevice::GLContextInfo, including all inherited members.

    + + + + + + + +
    coreProfile (defined in ncine::IGfxDevice::GLContextInfo)ncine::IGfxDevice::GLContextInfo
    debugContext (defined in ncine::IGfxDevice::GLContextInfo)ncine::IGfxDevice::GLContextInfo
    forwardCompatible (defined in ncine::IGfxDevice::GLContextInfo)ncine::IGfxDevice::GLContextInfo
    GLContextInfo(const AppConfiguration &appCfg) (defined in ncine::IGfxDevice::GLContextInfo)ncine::IGfxDevice::GLContextInfoinlineexplicit
    majorVersion (defined in ncine::IGfxDevice::GLContextInfo)ncine::IGfxDevice::GLContextInfo
    minorVersion (defined in ncine::IGfxDevice::GLContextInfo)ncine::IGfxDevice::GLContextInfo
    + + + + diff --git a/master/structncine_1_1_i_gfx_device_1_1_g_l_context_info.html b/master/structncine_1_1_i_gfx_device_1_1_g_l_context_info.html new file mode 100644 index 0000000000..6d902ee16b --- /dev/null +++ b/master/structncine_1_1_i_gfx_device_1_1_g_l_context_info.html @@ -0,0 +1,120 @@ + + + + + + + +nCine: ncine::IGfxDevice::GLContextInfo Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::IGfxDevice::GLContextInfo Struct Reference
    +
    +
    + +

    Contains the attributes to create an OpenGL context. + More...

    + +

    #include <IGfxDevice.h>

    + + + + +

    +Public Member Functions

    GLContextInfo (const AppConfiguration &appCfg)
     
    + + + + + + + + + + + +

    +Public Attributes

    +unsigned int majorVersion
     
    +unsigned int minorVersion
     
    +bool coreProfile
     
    +bool forwardCompatible
     
    +bool debugContext
     
    +

    Detailed Description

    +

    Contains the attributes to create an OpenGL context.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structncine_1_1_i_gfx_device_1_1_monitor-members.html b/master/structncine_1_1_i_gfx_device_1_1_monitor-members.html new file mode 100644 index 0000000000..2a08afc48c --- /dev/null +++ b/master/structncine_1_1_i_gfx_device_1_1_monitor-members.html @@ -0,0 +1,90 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    ncine::IGfxDevice::Monitor Member List
    +
    + + + + + diff --git a/master/structncine_1_1_i_gfx_device_1_1_monitor.html b/master/structncine_1_1_i_gfx_device_1_1_monitor.html new file mode 100644 index 0000000000..62433a9ff1 --- /dev/null +++ b/master/structncine_1_1_i_gfx_device_1_1_monitor.html @@ -0,0 +1,133 @@ + + + + + + + +nCine: ncine::IGfxDevice::Monitor Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::IGfxDevice::Monitor Struct Reference
    +
    +
    + +

    A structure representing a connected monitor. + More...

    + +

    #include <IGfxDevice.h>

    +
    +Collaboration diagram for ncine::IGfxDevice::Monitor:
    +
    +
    Collaboration graph
    + + + + + + +
    [legend]
    + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +const char * name
     The monitor name.
     
    +Vector2i position
     The position of the monitor's viewport on the virtual screen.
     
    +Vector2i dpi
     The horizontal and vertical dots per inch.
     
    +Vector2f scale
     The content scale factor.
     
    +unsigned int numVideoModes
     The number of video modes in the array.
     
    +VideoMode videoModes [MaxVideoModes]
     The array of video modes supported by the monitor.
     
    +

    Detailed Description

    +

    A structure representing a connected monitor.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structncine_1_1_i_gfx_device_1_1_monitor__coll__graph.map b/master/structncine_1_1_i_gfx_device_1_1_monitor__coll__graph.map new file mode 100644 index 0000000000..7ed0f9007f --- /dev/null +++ b/master/structncine_1_1_i_gfx_device_1_1_monitor__coll__graph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/master/structncine_1_1_i_gfx_device_1_1_monitor__coll__graph.md5 b/master/structncine_1_1_i_gfx_device_1_1_monitor__coll__graph.md5 new file mode 100644 index 0000000000..c0cc94255c --- /dev/null +++ b/master/structncine_1_1_i_gfx_device_1_1_monitor__coll__graph.md5 @@ -0,0 +1 @@ +ba46fbc1d176d6da4f2576e6d8ff418d \ No newline at end of file diff --git a/master/structncine_1_1_i_gfx_device_1_1_monitor__coll__graph.png b/master/structncine_1_1_i_gfx_device_1_1_monitor__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..5d2bc41a8351deba264c3b7b2d59aaaa9500f6b0 GIT binary patch literal 12544 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 E0c=eI5dZ)H literal 0 HcmV?d00001 diff --git a/master/structncine_1_1_i_gfx_device_1_1_video_mode-members.html b/master/structncine_1_1_i_gfx_device_1_1_video_mode-members.html new file mode 100644 index 0000000000..57264b72c2 --- /dev/null +++ b/master/structncine_1_1_i_gfx_device_1_1_video_mode-members.html @@ -0,0 +1,93 @@ + + + + + + + +nCine: Member List + + + + + + + + + + +
    +
    +
    ncine::IGfxDevice::VideoMode Member List
    +
    +
    + +

    This is the complete list of members for ncine::IGfxDevice::VideoMode, including all inherited members.

    + + + + + + + + + + +
    blueBits (defined in ncine::IGfxDevice::VideoMode)ncine::IGfxDevice::VideoMode
    greenBits (defined in ncine::IGfxDevice::VideoMode)ncine::IGfxDevice::VideoMode
    height (defined in ncine::IGfxDevice::VideoMode)ncine::IGfxDevice::VideoMode
    operator!=(const VideoMode &mode) const (defined in ncine::IGfxDevice::VideoMode)ncine::IGfxDevice::VideoModeinline
    operator==(const VideoMode &mode) const (defined in ncine::IGfxDevice::VideoMode)ncine::IGfxDevice::VideoModeinline
    redBits (defined in ncine::IGfxDevice::VideoMode)ncine::IGfxDevice::VideoMode
    refreshRate (defined in ncine::IGfxDevice::VideoMode)ncine::IGfxDevice::VideoMode
    VideoMode() (defined in ncine::IGfxDevice::VideoMode)ncine::IGfxDevice::VideoModeinline
    width (defined in ncine::IGfxDevice::VideoMode)ncine::IGfxDevice::VideoMode
    + + + + diff --git a/master/structncine_1_1_i_gfx_device_1_1_video_mode.html b/master/structncine_1_1_i_gfx_device_1_1_video_mode.html new file mode 100644 index 0000000000..e654cb5c32 --- /dev/null +++ b/master/structncine_1_1_i_gfx_device_1_1_video_mode.html @@ -0,0 +1,126 @@ + + + + + + + +nCine: ncine::IGfxDevice::VideoMode Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::IGfxDevice::VideoMode Struct Reference
    +
    +
    + +

    A structure representing a video mode supported by a monitor. + More...

    + +

    #include <IGfxDevice.h>

    + + + + + + +

    +Public Member Functions

    +bool operator== (const VideoMode &mode) const
     
    +bool operator!= (const VideoMode &mode) const
     
    + + + + + + + + + + + + + +

    +Public Attributes

    +unsigned int width
     
    +unsigned int height
     
    +float refreshRate
     
    +unsigned char redBits
     
    +unsigned char greenBits
     
    +unsigned char blueBits
     
    +

    Detailed Description

    +

    A structure representing a video mode supported by a monitor.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structncine_1_1_i_gfx_device_1_1_window_mode-members.html b/master/structncine_1_1_i_gfx_device_1_1_window_mode-members.html new file mode 100644 index 0000000000..1e557d5062 --- /dev/null +++ b/master/structncine_1_1_i_gfx_device_1_1_window_mode-members.html @@ -0,0 +1,95 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    ncine::IGfxDevice::WindowMode Member List
    +
    +
    + +

    This is the complete list of members for ncine::IGfxDevice::WindowMode, including all inherited members.

    + + + + + + + + + + + + +
    hasWindowScaling (defined in ncine::IGfxDevice::WindowMode)ncine::IGfxDevice::WindowMode
    height (defined in ncine::IGfxDevice::WindowMode)ncine::IGfxDevice::WindowMode
    isFullScreen (defined in ncine::IGfxDevice::WindowMode)ncine::IGfxDevice::WindowMode
    isResizable (defined in ncine::IGfxDevice::WindowMode)ncine::IGfxDevice::WindowMode
    refreshRate (defined in ncine::IGfxDevice::WindowMode)ncine::IGfxDevice::WindowMode
    width (defined in ncine::IGfxDevice::WindowMode)ncine::IGfxDevice::WindowMode
    WindowMode() (defined in ncine::IGfxDevice::WindowMode)ncine::IGfxDevice::WindowModeinline
    WindowMode(unsigned int w, unsigned int h, float refresh, int posX, int posY, bool fullscreen, bool resizable, bool windowScaling) (defined in ncine::IGfxDevice::WindowMode)ncine::IGfxDevice::WindowModeinline
    WindowMode(const AppConfiguration &appCfg) (defined in ncine::IGfxDevice::WindowMode)ncine::IGfxDevice::WindowModeinlineexplicit
    windowPositionX (defined in ncine::IGfxDevice::WindowMode)ncine::IGfxDevice::WindowMode
    windowPositionY (defined in ncine::IGfxDevice::WindowMode)ncine::IGfxDevice::WindowMode
    + + + + diff --git a/master/structncine_1_1_i_gfx_device_1_1_window_mode.html b/master/structncine_1_1_i_gfx_device_1_1_window_mode.html new file mode 100644 index 0000000000..491a692840 --- /dev/null +++ b/master/structncine_1_1_i_gfx_device_1_1_window_mode.html @@ -0,0 +1,132 @@ + + + + + + + +nCine: ncine::IGfxDevice::WindowMode Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::IGfxDevice::WindowMode Struct Reference
    +
    +
    + +

    A structure used to initialize window properties. + More...

    + +

    #include <IGfxDevice.h>

    + + + + + + +

    +Public Member Functions

    WindowMode (unsigned int w, unsigned int h, float refresh, int posX, int posY, bool fullscreen, bool resizable, bool windowScaling)
     
    WindowMode (const AppConfiguration &appCfg)
     
    + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +unsigned int width
     
    +unsigned int height
     
    +float refreshRate
     
    +int windowPositionX
     
    +int windowPositionY
     
    +bool isFullScreen
     
    +bool isResizable
     
    +bool hasWindowScaling
     
    +

    Detailed Description

    +

    A structure used to initialize window properties.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structncine_1_1_i_texture_saver_1_1_properties-members.html b/master/structncine_1_1_i_texture_saver_1_1_properties-members.html new file mode 100644 index 0000000000..6c39fd9335 --- /dev/null +++ b/master/structncine_1_1_i_texture_saver_1_1_properties-members.html @@ -0,0 +1,90 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    ncine::ITextureSaver::Properties Member List
    +
    + + + + + diff --git a/master/structncine_1_1_i_texture_saver_1_1_properties.html b/master/structncine_1_1_i_texture_saver_1_1_properties.html new file mode 100644 index 0000000000..b9c9f80628 --- /dev/null +++ b/master/structncine_1_1_i_texture_saver_1_1_properties.html @@ -0,0 +1,106 @@ + + + + + + + +nCine: ncine::ITextureSaver::Properties Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::ITextureSaver::Properties Struct Reference
    +
    +
    + + + + + + + + + + + + +

    +Public Attributes

    +int width
     
    +int height
     
    +Format format
     
    +bool verticalFlip
     
    +void * pixels
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structncine_1_1_lua_state_manager_1_1_state_to_manager-members.html b/master/structncine_1_1_lua_state_manager_1_1_state_to_manager-members.html new file mode 100644 index 0000000000..2a7f12182c --- /dev/null +++ b/master/structncine_1_1_lua_state_manager_1_1_state_to_manager-members.html @@ -0,0 +1,88 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    ncine::LuaStateManager::StateToManager Member List
    +
    +
    + +

    This is the complete list of members for ncine::LuaStateManager::StateToManager, including all inherited members.

    + + + + + +
    luaState (defined in ncine::LuaStateManager::StateToManager)ncine::LuaStateManager::StateToManager
    stateManager (defined in ncine::LuaStateManager::StateToManager)ncine::LuaStateManager::StateToManager
    StateToManager() (defined in ncine::LuaStateManager::StateToManager)ncine::LuaStateManager::StateToManagerinline
    StateToManager(lua_State *L, LuaStateManager *manager) (defined in ncine::LuaStateManager::StateToManager)ncine::LuaStateManager::StateToManagerinline
    + + + + diff --git a/master/structncine_1_1_lua_state_manager_1_1_state_to_manager.html b/master/structncine_1_1_lua_state_manager_1_1_state_to_manager.html new file mode 100644 index 0000000000..c8f2e625a5 --- /dev/null +++ b/master/structncine_1_1_lua_state_manager_1_1_state_to_manager.html @@ -0,0 +1,113 @@ + + + + + + + +nCine: ncine::LuaStateManager::StateToManager Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::LuaStateManager::StateToManager Struct Reference
    +
    +
    +
    +Collaboration diagram for ncine::LuaStateManager::StateToManager:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    + + + + +

    +Public Member Functions

    StateToManager (lua_State *L, LuaStateManager *manager)
     
    + + + + + +

    +Public Attributes

    +lua_State * luaState
     
    +LuaStateManagerstateManager
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structncine_1_1_lua_state_manager_1_1_state_to_manager__coll__graph.map b/master/structncine_1_1_lua_state_manager_1_1_state_to_manager__coll__graph.map new file mode 100644 index 0000000000..b47170767e --- /dev/null +++ b/master/structncine_1_1_lua_state_manager_1_1_state_to_manager__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/structncine_1_1_lua_state_manager_1_1_state_to_manager__coll__graph.md5 b/master/structncine_1_1_lua_state_manager_1_1_state_to_manager__coll__graph.md5 new file mode 100644 index 0000000000..8f651ed789 --- /dev/null +++ b/master/structncine_1_1_lua_state_manager_1_1_state_to_manager__coll__graph.md5 @@ -0,0 +1 @@ +5653f690a674c954e1079a9faa07abed \ No newline at end of file diff --git a/master/structncine_1_1_lua_state_manager_1_1_state_to_manager__coll__graph.png b/master/structncine_1_1_lua_state_manager_1_1_state_to_manager__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..6c32021d77a8300531381c29410b655beb548ee1 GIT binary patch literal 6028 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 + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    ncine::LuaUtils::RunInfo::DebugInfo Member List
    +
    +
    + +

    This is the complete list of members for ncine::LuaUtils::RunInfo::DebugInfo, including all inherited members.

    + + + + + + + + + + + + + + + + + + + +
    currentLine (defined in ncine::LuaUtils::RunInfo::DebugInfo)ncine::LuaUtils::RunInfo::DebugInfo
    isTailCall (defined in ncine::LuaUtils::RunInfo::DebugInfo)ncine::LuaUtils::RunInfo::DebugInfo
    isVarArg (defined in ncine::LuaUtils::RunInfo::DebugInfo)ncine::LuaUtils::RunInfo::DebugInfo
    lastLineDefined (defined in ncine::LuaUtils::RunInfo::DebugInfo)ncine::LuaUtils::RunInfo::DebugInfo
    lineDefined (defined in ncine::LuaUtils::RunInfo::DebugInfo)ncine::LuaUtils::RunInfo::DebugInfo
    MaxShortSrcLength (defined in ncine::LuaUtils::RunInfo::DebugInfo)ncine::LuaUtils::RunInfo::DebugInfostatic
    name (defined in ncine::LuaUtils::RunInfo::DebugInfo)ncine::LuaUtils::RunInfo::DebugInfo
    nameWhat (defined in ncine::LuaUtils::RunInfo::DebugInfo)ncine::LuaUtils::RunInfo::DebugInfo
    NameWhatType enum name (defined in ncine::LuaUtils::RunInfo::DebugInfo)ncine::LuaUtils::RunInfo::DebugInfo
    nameWhatTypeToString(DebugInfo::NameWhatType type) const (defined in ncine::LuaUtils::RunInfo::DebugInfo)ncine::LuaUtils::RunInfo::DebugInfo
    nParams (defined in ncine::LuaUtils::RunInfo::DebugInfo)ncine::LuaUtils::RunInfo::DebugInfo
    nUps (defined in ncine::LuaUtils::RunInfo::DebugInfo)ncine::LuaUtils::RunInfo::DebugInfo
    shortSrc (defined in ncine::LuaUtils::RunInfo::DebugInfo)ncine::LuaUtils::RunInfo::DebugInfo
    source (defined in ncine::LuaUtils::RunInfo::DebugInfo)ncine::LuaUtils::RunInfo::DebugInfo
    srcLen (defined in ncine::LuaUtils::RunInfo::DebugInfo)ncine::LuaUtils::RunInfo::DebugInfo
    what (defined in ncine::LuaUtils::RunInfo::DebugInfo)ncine::LuaUtils::RunInfo::DebugInfo
    WhatType enum name (defined in ncine::LuaUtils::RunInfo::DebugInfo)ncine::LuaUtils::RunInfo::DebugInfo
    whatTypeToString(WhatType type) const (defined in ncine::LuaUtils::RunInfo::DebugInfo)ncine::LuaUtils::RunInfo::DebugInfo
    + + + + diff --git a/master/structncine_1_1_lua_utils_1_1_run_info_1_1_debug_info.html b/master/structncine_1_1_lua_utils_1_1_run_info_1_1_debug_info.html new file mode 100644 index 0000000000..9c6ad98933 --- /dev/null +++ b/master/structncine_1_1_lua_utils_1_1_run_info_1_1_debug_info.html @@ -0,0 +1,168 @@ + + + + + + + +nCine: ncine::LuaUtils::RunInfo::DebugInfo Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::LuaUtils::RunInfo::DebugInfo Struct Reference
    +
    +
    + + + + + + +

    +Public Types

    enum class  WhatType { LUA +, C +, MAIN + }
     
    enum class  NameWhatType {
    +  GLOBAL +, LOCAL +, METHOD +, FIELD +,
    +  UPVALUE +, EMPTY +
    + }
     
    + + + + + +

    +Public Member Functions

    +const char * whatTypeToString (WhatType type) const
     
    +const char * nameWhatTypeToString (DebugInfo::NameWhatType type) const
     
    + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +const char * source
     
    +size_t srcLen
     
    +char shortSrc [MaxShortSrcLength]
     
    +int lineDefined
     
    +int lastLineDefined
     
    +WhatType what
     
    +int currentLine
     
    +const char * name
     
    +NameWhatType nameWhat
     
    +bool isTailCall
     
    +int nUps
     
    +int nParams
     
    +bool isVarArg
     
    + + + +

    +Static Public Attributes

    +static const int MaxShortSrcLength = 64
     
    +
    The documentation for this struct was generated from the following files:
      +
    • include/ncine/LuaUtils.h
    • +
    • src/scripting/LuaUtils.cpp
    • +
    +
    + + + + diff --git a/master/structncine_1_1_mesh_sprite_1_1_vertex-members.html b/master/structncine_1_1_mesh_sprite_1_1_vertex-members.html new file mode 100644 index 0000000000..d60e0ba03b --- /dev/null +++ b/master/structncine_1_1_mesh_sprite_1_1_vertex-members.html @@ -0,0 +1,90 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    ncine::MeshSprite::Vertex Member List
    +
    +
    + +

    This is the complete list of members for ncine::MeshSprite::Vertex, including all inherited members.

    + + + + + + + +
    u (defined in ncine::MeshSprite::Vertex)ncine::MeshSprite::Vertex
    v (defined in ncine::MeshSprite::Vertex)ncine::MeshSprite::Vertex
    Vertex() (defined in ncine::MeshSprite::Vertex)ncine::MeshSprite::Vertexinline
    Vertex(float xx, float yy, float uu, float vv) (defined in ncine::MeshSprite::Vertex)ncine::MeshSprite::Vertexinline
    x (defined in ncine::MeshSprite::Vertex)ncine::MeshSprite::Vertex
    y (defined in ncine::MeshSprite::Vertex)ncine::MeshSprite::Vertex
    + + + + diff --git a/master/structncine_1_1_mesh_sprite_1_1_vertex.html b/master/structncine_1_1_mesh_sprite_1_1_vertex.html new file mode 100644 index 0000000000..23b0193b57 --- /dev/null +++ b/master/structncine_1_1_mesh_sprite_1_1_vertex.html @@ -0,0 +1,117 @@ + + + + + + + +nCine: ncine::MeshSprite::Vertex Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::MeshSprite::Vertex Struct Reference
    +
    +
    + +

    Vertex data for the mesh. + More...

    + +

    #include <MeshSprite.h>

    + + + + +

    +Public Member Functions

    Vertex (float xx, float yy, float uu, float vv)
     
    + + + + + + + + + +

    +Public Attributes

    +float x
     
    +float y
     
    +float u
     
    +float v
     
    +

    Detailed Description

    +

    Vertex data for the mesh.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structncine_1_1_mesh_sprite_1_1_vertex_no_texture-members.html b/master/structncine_1_1_mesh_sprite_1_1_vertex_no_texture-members.html new file mode 100644 index 0000000000..db534884ad --- /dev/null +++ b/master/structncine_1_1_mesh_sprite_1_1_vertex_no_texture-members.html @@ -0,0 +1,88 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    ncine::MeshSprite::VertexNoTexture Member List
    +
    +
    + +

    This is the complete list of members for ncine::MeshSprite::VertexNoTexture, including all inherited members.

    + + + + + +
    VertexNoTexture() (defined in ncine::MeshSprite::VertexNoTexture)ncine::MeshSprite::VertexNoTextureinline
    VertexNoTexture(float xx, float yy) (defined in ncine::MeshSprite::VertexNoTexture)ncine::MeshSprite::VertexNoTextureinline
    x (defined in ncine::MeshSprite::VertexNoTexture)ncine::MeshSprite::VertexNoTexture
    y (defined in ncine::MeshSprite::VertexNoTexture)ncine::MeshSprite::VertexNoTexture
    + + + + diff --git a/master/structncine_1_1_mesh_sprite_1_1_vertex_no_texture.html b/master/structncine_1_1_mesh_sprite_1_1_vertex_no_texture.html new file mode 100644 index 0000000000..aafe4a2644 --- /dev/null +++ b/master/structncine_1_1_mesh_sprite_1_1_vertex_no_texture.html @@ -0,0 +1,111 @@ + + + + + + + +nCine: ncine::MeshSprite::VertexNoTexture Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::MeshSprite::VertexNoTexture Struct Reference
    +
    +
    + +

    Vertex data for the mesh when no texture is specified. + More...

    + +

    #include <MeshSprite.h>

    + + + + +

    +Public Member Functions

    VertexNoTexture (float xx, float yy)
     
    + + + + + +

    +Public Attributes

    +float x
     
    +float y
     
    +

    Detailed Description

    +

    Vertex data for the mesh when no texture is specified.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structncine_1_1_particle_initializer-members.html b/master/structncine_1_1_particle_initializer-members.html new file mode 100644 index 0000000000..e3b4a01e91 --- /dev/null +++ b/master/structncine_1_1_particle_initializer-members.html @@ -0,0 +1,116 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    ncine::ParticleInitializer Member List
    +
    +
    + +

    This is the complete list of members for ncine::ParticleInitializer, including all inherited members.

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    emitterRotation (defined in ncine::ParticleInitializer)ncine::ParticleInitializer
    rndAmount (defined in ncine::ParticleInitializer)ncine::ParticleInitializer
    rndLife (defined in ncine::ParticleInitializer)ncine::ParticleInitializer
    rndPositionX (defined in ncine::ParticleInitializer)ncine::ParticleInitializer
    rndPositionY (defined in ncine::ParticleInitializer)ncine::ParticleInitializer
    rndRotation (defined in ncine::ParticleInitializer)ncine::ParticleInitializer
    rndVelocityX (defined in ncine::ParticleInitializer)ncine::ParticleInitializer
    rndVelocityY (defined in ncine::ParticleInitializer)ncine::ParticleInitializer
    setAmount(int amount) (defined in ncine::ParticleInitializer)ncine::ParticleInitializer
    setAmount(int minAmount, int maxAmount) (defined in ncine::ParticleInitializer)ncine::ParticleInitializer
    setLife(float life) (defined in ncine::ParticleInitializer)ncine::ParticleInitializer
    setLife(float minLife, float maxLife) (defined in ncine::ParticleInitializer)ncine::ParticleInitializer
    setPosition(float x, float y) (defined in ncine::ParticleInitializer)ncine::ParticleInitializer
    setPosition(float minX, float minY, float maxX, float maxY) (defined in ncine::ParticleInitializer)ncine::ParticleInitializer
    setPosition(const Vector2f &pos) (defined in ncine::ParticleInitializer)ncine::ParticleInitializer
    setPosition(const Vector2f &minPos, const Vector2f &maxPos) (defined in ncine::ParticleInitializer)ncine::ParticleInitializer
    setPositionAndRadius(float x, float y, float radius) (defined in ncine::ParticleInitializer)ncine::ParticleInitializer
    setPositionAndRadius(const Vector2f &pos, float radius) (defined in ncine::ParticleInitializer)ncine::ParticleInitializer
    setPositionInDisc(float radius) (defined in ncine::ParticleInitializer)ncine::ParticleInitializer
    setRotation(float rot) (defined in ncine::ParticleInitializer)ncine::ParticleInitializer
    setRotation(float minRot, float maxRot) (defined in ncine::ParticleInitializer)ncine::ParticleInitializer
    setVelocity(float x, float y) (defined in ncine::ParticleInitializer)ncine::ParticleInitializer
    setVelocity(float minX, float minY, float maxX, float maxY) (defined in ncine::ParticleInitializer)ncine::ParticleInitializer
    setVelocity(const Vector2f &vel) (defined in ncine::ParticleInitializer)ncine::ParticleInitializer
    setVelocity(const Vector2f &minVel, const Vector2f &maxVel) (defined in ncine::ParticleInitializer)ncine::ParticleInitializer
    setVelocityAndAngle(float x, float y, float angle) (defined in ncine::ParticleInitializer)ncine::ParticleInitializer
    setVelocityAndAngle(const Vector2f &vel, float angle) (defined in ncine::ParticleInitializer)ncine::ParticleInitializer
    setVelocityAndRadius(float x, float y, float radius) (defined in ncine::ParticleInitializer)ncine::ParticleInitializer
    setVelocityAndRadius(const Vector2f &vel, float radius) (defined in ncine::ParticleInitializer)ncine::ParticleInitializer
    setVelocityAndScale(float x, float y, float minScale, float maxScale) (defined in ncine::ParticleInitializer)ncine::ParticleInitializer
    setVelocityAndScale(const Vector2f &vel, float minScale, float maxScale) (defined in ncine::ParticleInitializer)ncine::ParticleInitializer
    validateMinMax()ncine::ParticleInitializer
    + + + + diff --git a/master/structncine_1_1_particle_initializer.html b/master/structncine_1_1_particle_initializer.html new file mode 100644 index 0000000000..e3eb2ffd6c --- /dev/null +++ b/master/structncine_1_1_particle_initializer.html @@ -0,0 +1,211 @@ + + + + + + + +nCine: ncine::ParticleInitializer Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::ParticleInitializer Struct Reference
    +
    +
    + +

    Initialization parameters for particles. + More...

    + +

    #include <ParticleInitializer.h>

    +
    +Collaboration diagram for ncine::ParticleInitializer:
    +
    +
    Collaboration graph
    + + + + + +
    [legend]
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    +void validateMinMax ()
     Checks all vectors swapping values if the first component is greater than the second one.
     
    +void setAmount (int amount)
     
    +void setAmount (int minAmount, int maxAmount)
     
    +void setLife (float life)
     
    +void setLife (float minLife, float maxLife)
     
    +void setPosition (float x, float y)
     
    +void setPosition (float minX, float minY, float maxX, float maxY)
     
    +void setPositionAndRadius (float x, float y, float radius)
     
    +void setPosition (const Vector2f &pos)
     
    +void setPosition (const Vector2f &minPos, const Vector2f &maxPos)
     
    +void setPositionAndRadius (const Vector2f &pos, float radius)
     
    +void setPositionInDisc (float radius)
     
    +void setVelocity (float x, float y)
     
    +void setVelocity (float minX, float minY, float maxX, float maxY)
     
    +void setVelocityAndRadius (float x, float y, float radius)
     
    +void setVelocityAndScale (float x, float y, float minScale, float maxScale)
     
    +void setVelocityAndAngle (float x, float y, float angle)
     
    +void setVelocity (const Vector2f &vel)
     
    +void setVelocity (const Vector2f &minVel, const Vector2f &maxVel)
     
    +void setVelocityAndRadius (const Vector2f &vel, float radius)
     
    +void setVelocityAndScale (const Vector2f &vel, float minScale, float maxScale)
     
    +void setVelocityAndAngle (const Vector2f &vel, float angle)
     
    +void setRotation (float rot)
     
    +void setRotation (float minRot, float maxRot)
     
    + + + + + + + + + + + + + + + + + +

    +Public Attributes

    +Vector2i rndAmount = Vector2i(1, 1)
     
    +Vector2f rndLife = Vector2f(1.0f, 1.0f)
     
    +Vector2f rndPositionX = Vector2f::Zero
     
    +Vector2f rndPositionY = Vector2f::Zero
     
    +Vector2f rndVelocityX = Vector2f::Zero
     
    +Vector2f rndVelocityY = Vector2f::Zero
     
    +Vector2f rndRotation = Vector2f::Zero
     
    +bool emitterRotation = true
     
    +

    Detailed Description

    +

    Initialization parameters for particles.

    +

    The vectors define a range between a minimum and a maximum value

    +

    The documentation for this struct was generated from the following files: +
    + + + + diff --git a/master/structncine_1_1_particle_initializer__coll__graph.map b/master/structncine_1_1_particle_initializer__coll__graph.map new file mode 100644 index 0000000000..4f3355810e --- /dev/null +++ b/master/structncine_1_1_particle_initializer__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/master/structncine_1_1_particle_initializer__coll__graph.md5 b/master/structncine_1_1_particle_initializer__coll__graph.md5 new file mode 100644 index 0000000000..0afcd0b13c --- /dev/null +++ b/master/structncine_1_1_particle_initializer__coll__graph.md5 @@ -0,0 +1 @@ +34fd17e52493224332bae073e00400ef \ No newline at end of file diff --git a/master/structncine_1_1_particle_initializer__coll__graph.png b/master/structncine_1_1_particle_initializer__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..72f593dfcc58d3097ed460e193557fe311c7ed47 GIT binary patch literal 10347 zcmZvC1yqz>_wUe1HzR^{NJxitN;e`B5)#tgr8Eqk($Wpm4bq*`ozfy99ryUY|9jW> zt^0?y;91YioO#YUd+%TD6RM&ljfqBr27y2@Wo0DQAP_hQaNUmz5B_=>++Tx#$VT$g zl90#0zh7Gm;vf(Th^(ZThFjXvvbiq)>;mLBCmb~n9uY0Y$2sN%sg7+T)e`aB_fk0e z-K);#QWkG)#InjYbZ?3q>eX5_P3&I~5eCkzOln%UemwBYHh5EGLX0XKag-Apxrqva)C7yWKp>wwkSEa~qC*sA;10$=m*IJ< zOUCl{7VJpSi4k zgbP@aj<-J!e5v0isB!|qGl1sz%z)diQ49_B@Q`s1872sX#lPl%E_b=JR2m$%<@nPh z4WU7XbaZsa(o?+Y1qns!1^Ib-dmc#J0SMTQsudlCO*?|}z*28PF6cQ4`=l1*S%!j!K`wto# zQ>~ttH7loUoT!nBGcz;mUBL%jN=M|X4e`Un3dzb_rxzD1ZQjl8?IP()u8xk)E=MFM z?w+2W3JT$IadCNh+bP_Z4Z1HQH{06Uii(N`-)`CQv9q%?6Ag8CQZXlq>?tV-* zwi$tNU&IX^ylKaWa^j{a`U5jrj*E^a#f zMHQ^w!a_<~+TBt8>P9OTK_gR8P!KXQaw6F5`g+@?2K$ZfP^uWzw{~CG_}V-#f1Pah z;a6OHwM9gXBy*a@*HH6*8;GOFx5PCaN#V9#5#&kLd-G=d_*ev7%MQD^xVZjW!bJ<@ zxTWO!`xEb`r>~#+Z zK^&HqmB}S0L9c4yrP0efCh*9}$euoxZAnyO3NxZW4eSI90M^IU*cc}hV+(hBtmbsD zAQP`bzttlUr?{xd{rZ$vyf8Oc($p{+A@4G*`WGMl zv(r;M(ss9#?7TeMs6O?n$n5XAmk#gVJrys^&h~S=J>OFgP_edV!F3cD7e9tZJ{PjE zw${_umTS?gG(r+*prZ2YT4xB=?eX?2vBQz!;^rR76v@0=RY=%I5ia{akv%X$#aqS@ zDyFTbHo4IQ^Ylg9<`T)iakmW|Fveq5P*lVf*VEHWNJx17`Zb8N{c`?Evqvvmje`AL&|#~8vo8uPqsY~o|6;xECS%g_L94RHJ9!#B zy>=h(o-o3fFJD%?Z{>GC-O5)?)mYkq_~%H$q~$Z&b=$n$Cv#gnyBnVKq` z%O{FrC|j;_c5uK8m6XJL1Ix*w4iq=Hu}K_tk*w07;^5%mTdV z`FChl8Hd7PLl;Mj3FIeoGQsql*JnG=c&wm89!^e9HQ*&MGuzcR5FzH~=JV~=n1X!T zT!PvJJ)%o?^No&XdV1+v%t{Ih1ZaV+?S2?#z;9Ohl+~3KKLn)nqdU`q`JzY;t?ewINyt$#_+!mk4FDG#P zI7dnq1B8oFc{pIqM0?QL2*Iyud!{nT=)WW)MC*V|Von>)kFn;RRayA#yDzP^NS z6_l09d2MtJ3@G9Tbn9*OBqb#?g)9irO#bXo6A}_m3I&EO#5|izWYO`tT1Qb={{e7; zDgbQW$jAu2!WTC8Q)3jA;PdnIm1o-yjkgy^CB?-Kj*jZWTQTBUE%z6T`d%key1Hp$ z0%Ac5Zj-|I=Rff2l@wBW%6wT4p73esb{+JABtQnGNg^1FMXxEo!@z3po8fwAVC*)^ zX-H=->;6l3C#mhY(r>ba`JVQ@0~=~|HZm>%wPn_?yLWXwf{i4zn4_<%-#0v z^I{N$i9d3pE~qy$qXlDW&U6^l>{8eLHmxXlo zoGL@*cyDeC%5&&atQk&Pj(aP!hWTAl2K7c;_MroWr@fj=MuWJ zaZQe3+}D#vX@$=UulZDOxMDR2PksB;=H`_T$9ZGhN=I74x)$>+sttTOxg-2Y|J4|W zz7g(gNG3l(T1PWge!SG z(PML9?$=N6-BKnf^t9BNyTSV~{(0XxPVA9KUk@trdc8|~i)$e=u|(gU%2XF&Yrjom zS~1Q-aZ~f+Hi08)6-8OUbbW!^-s{uHpd7R02zTi@glD+p=wqzhp`ON%(j7P!3;~Nw zzJ4{?I6q)?>QZEslI*?Vg>$RfN2?+B6ts+@RI1nyTsf-D`w5!i>Q)P@uUwUiP7u ztYyoe41d_ce@k6__yPlpX2qAIR9{@Vq@{ORV=${^TR%8$cNy|GaEMOP=SZ#whSIKRSL=2kc%%Yi{}1Op@2Fa8*e_j5nr!E0zUga{9-4UmLVT zzVgIC$oFjITnKK^`MGb`i(`d32b?slgHp#r#x}`j5%Ukl9tQGesXCA5hS%&Bl<0@no1%s+@T2 z)2!WhAmPnO2xh;Q8p(aGvW9~J?JChMqk1pmb2m3TJKO1(RumPjS!1w}KcT`2x0`Tr zak1Vd`>YIPA^OKUjm*nKv>*GgYJXE?byPgCC#`1fRqq1!R%gA)<9T7lpYC(AAw^D} zNhaWeh=|Ar4WHHb1uXWU+sN73xuc^40~ruQY5@Tq_taR}*R{2^4}Foe^z6ow z0XRuRfRQ)@M60R6z{2vmKFtd{VFF(*(9&gXUN?1{IUP-gI?hsw^Y|;1cG`83+jjqa z?+2*JmX?+}RmM-m8H9xHzkf#f^XJd{`ub23D?M^N%lnqO?(W>0n)5~5c0dhF!&r8< zwj`ycrC-0^;LC`P{)B^ujm`SvMWg$f>6GVNBJ9t;zx`v0D85xT!D=PtNmzEwT>HEC$x#No)aB_AQ zvRe~<<`0AfpKG$YB}W1VQ>{VZIPJbM=j}nQ zw&R*;c|ioDy-)m4lElr;%|)Vk+E`Lz2?qTin)ICwql=B2IwvwRa&U0aM|y?+i$$U0 zLvwn#BBeUEY1y_OQDj%G8eQw@bD@;JO>Q0@yyQH9zP`^KoSbr17{IDizYgEk zN8k5b{lp`t^z>X?zPYT%9w`^??c3SC9|aY9&2>N^w6u5unR0I#++!3N5CCwLfSB0T z#pUPDPH<4r=`}xT*Ao#0$ke#@iph3yAQJ_liK(eWqb?W&Y&DQhdm^;7w1#T&*q-wL zA0`JVHD?+kb3%&oTwr5u*9ST%Y3Zv~Gy+7efAgZSIGD-dwEk1)CvU%MLdd7Yj`=XG zgvY7DvS9oAHEat-F`kdnnod&8-^rg>j0nJQ+I%jTQGTa+uZ#eh3@cX&GW@aG`@KPj zViw4>(C4K5>B80vH9GY+e{yj5UJL;t7xR3X^`5>K!2H$KRd-L1tgx(tf|HAjjqTeH zZSc8-WPWA|aI{7rKG>6*RnG$kjrHV-xs?@-0961^wp!8Cr%(GL$*4K>3=P)-PaDe= zsnCo-l3{8>;>Jg2vQ`u`WrG413Ix{WuVo2Tumvx5>cR(%7Zw)EwJJBJOWt-HNk=_* zc5%s{_-Na9Z7L=PcapUwXEqQ^8}(esCU!lKjOYc%au_dHtUrr>kzu5V0l%h&jX zEoVyI&wf_U9|HR7>-z|<*ZCf9kK3`I@f?C#17-$hw^(D2UzuG|VQXQ*c;a!oHDETH z785{!Pv2_6kciU=y;!Yp106v+JiH4wO|ytWw}CWC_sOuqMj-cD1$oyyPt5?T*3-QM25 z0-UzV$y`oOPDZ9bjF8EW8)ZaX8}6%Zgt8mYd((Ks{rkSJzX*(piIae+eJw3LJ3am8 z?c2WYZbW3{ND}V-K62mis3=wz7D7}+s+hu(k`hpdhAM)6&>@9qC7_|I3F3}K7h8CY1zog@C4&!=i^Y?PIiC4Q+( z@e&5)Yop_i%i)~ZQoJhe@Dup2*Z`En8q8pXb%x3t%4%3=dm@kO8HGN;qEOg>H*m<(Bl( z!2#^inJW8l{qWlC#UzQixVt_B-W0f4>p-Zzz{n-!Aj~Kh5NeIq!RE%tm|QE5_y%y1 zoSfX%_0s$HqNv#ntb=Snu}J$84PM9q7GnSGG^5JtY=_>n&tp5DZf;jMHy1f8XiGYj zakzwz`dqO_rR|)l!7{;xx_4OXNsnhWKQpQp_x&4q;1lGW!KkOFYFxb9Pk^}Tf9sg! zuZrW?QiaRpU(4ec1gye8z*YqQo)=MR`M`PZzKoR3LE*qp4M%E4687;0R1&`$_$dk^ zm~uM*A5e(s>FMLhU^by1-Q2FPlpeI*W~w@-Uys8(+x9}b@(hC+A~#okAMbNzn(f~6cl9tN{>Gl141HF%V}6xSRxNs)F&wo zKW(k8dkCF;FMi2R2LjN35l3!+;OR8=u!d|d)sD(P-F8sUk0~H&PpbdTpaVpz9jUU6 zj8?r(y3>%7k`gw#Fn|D1%%7(#0jtJYUS8hbzA`<18H9dF4}r5Iqb!pHb^PAxcwj2| zTOa(BR3%>a5HaluY9M?}f{316H|^Wbe3OVDF^zi4nO{(V(s%Onr>Ups?dYhIth#h0 zDdqc}pFfSDz1t3<^~Wt|qtfKw0Zd0fHDWclTzvQW%R;0!&OZTGmi^u}6}q&x687A% zbzqJALhxQKc#QE!uEaTDkwAZIFcNlsi=mbVzM`qAsoVqb^(0!@fIG;^nKSV*wq7zb z@6<*~ion@-pCFT(L?|IE;Te+zelDSqcy*qVuKC+9nib6{Pws!=5W;$ZDfdzXd+r{cZH`G78VBZVs2^a3E1MfL=U0rR2*77w4eV8 z7yu?br4YSH34A_MD3qZUnjnXXimFml@J^L?r^6p5H8qutl+@4PA5@k(GXXgdHO$Cd zLBHhWc~GW+eRHEL)nh2IP#iZ-PO~x#7pA+a;bPyxxxCzrv<0jUiB?nO6StNe=_oY@ zg1rpSMvayaLXdltu!l#RTP1Uk0*O@#Zy}i#)PUZneKAf-KbGqq)5qo=ifeMC; zgY(^h?LEK>VD{j{z@j6epm0Jlu(6{K4-Z$4z9c70NlSl#(lwS_Sy}1USv`##sHv^} zYrIVm*8$82grW6v#So8*FK9`n4Pfg11G* zKAiyKS3K(kX^K(J@Q4UtzlJ6fVxGl#l28$#p`)SoMv|q*#8A4jV;;~HB7yqtiwB!} zAT)pfTu)rWq?nEaFp3&Bi}O==;kU(7jT`Ko(}EV=^xfQ#Q1pVvuF6JXXodjUu5g%#+N$s zzRFnE%c~_bGtQ=RY;y!lBU91t-4g*~URu&}n4`_-#!pb&cqMRJq7)`4^d7BRjp=(+H@ z{?Z+&2mKe@_WL@Z+uGZGMKU@t0Hb&qzhg)4?d=63nlDnn#cg78GPZ9M_w0Voil?$g zhQ^2u+P%4So93&K_Ax#_zQ4O@YyNm*V&b^%7W7<}mzRO)>K`3Ve1Ebv5Z7(4A>x9i zi};x`Y?fl}8~48E595uh)>dy76&%$Mg0!?IpgRC6F(8wulmMQxG4f(!RKa4JnB<*n z5{!tHmzHvIaKt7*E7R4`&;UybR(X3U323{Wu}s!$bx?qHb(i+1OMo{zXH~av4N~V5 z<^KA>LP=$wj6YluiIQ$4=t%)N%gj7HGD2%J1I%|dhIoK4dym(7zDF`AcOL-4#>hyf z4KYx07R&=NKRbH~sv5m=MtDdF6gbi+jVcVFQq521$*ZfWfu4b8sn+L`S3M|`Xwa|* zXQ8~+_S493QVW^ocl6u%Nx-W8FE2R&2iAl30Z`hL-8{z3Bg4Y@op#5Un_crt%#N2Dn28j1BNTFw$|2r;EuN$58$!zpqnuvV|1zPU6#2^8!VN1oJP&2EUNa6{<>tmjNB?0n)VpAfg+XJqbabhjH|@&bt6&yQ7HRnLy0!XnzoZ_kK_%SDU8e^J z0LnXUZ9sao9jY~TKn>zS(GLPOXt`?|_V6E^ftDf~P>b~;=92}a?6 zDLoQ^QJDNS7MO?+4@EE~flu+!e;6@T5ZopT_fsehnvuQvzC$g;=>E*!*;^zz~&GAb$)$OWJw!1}hdw$|IO{yIKZF8Hy$v{bIw{F+%) zN9P#u zc|1`--eO{KD;q&s8UI)V5{;OE09*h`R#*#|GGtuYznQ1==SV6*e84V2kEh^Q#^)M% z)4X#4Omq7Erx}Grz#*qCA-FY>_Y=u$5<4t_rh*=_jQ&|BEJ{Gn>(Zob4#h zYbevB7j!>BAgBa?&jPq(`n`MHk(v3T?e~`^lM=j!rajLrXH_WCkKY!nC(q`_ zFFvl(k6=NUv2#hclyYJAP$aI!U9&Q=BiR^ZJg~xBTDqRJen9PiF}U7T6v0+QCyha- z#*M$wr|@>OL)G7Z!fx2Pe0nvTtRG8qb+3>IUKbJ5RK)s)?TcU9PERc8KEWXoi}@%2 z>#P>&i;p0(eWfVFFy+$O@4h@jQ=WEh#k*+bf@s5ox20))nkBR&^~$25h4KO529_zY z*!Q(3{8EhqjP985fNA-HB*#eoChx_aAD-Ta>$GpoLAi?}!}R^rlj{x3gP{e+W`Cu~ zS|=V#0n*0zWpC^|c#P~jp2%M|_%k9u zW644|T7oi;MHm{}+QPed4h6&{FwYS&^@Ma|gjfGC54byD##y9{ustFc;8vu@kYTAH z8!n_bFcO>%j24KbSL@WqGOc6Nf6VRcp2($dn#=H}wU zLVqMGhO=E=cFda+&A&u-zS^w)@u9i4*4fJHF#d%)j(B={dVx}Uljr5jq@i>nPZ!{e zhla`mY*+dF6CF#~+|)EVIcc-nHnMrr8%6%O9!w7GM5=(%Op!-0D-&bm{+2{GPEJ^O zcndiHqN=J26zKc+&w~tsQ+@Vx#Pf35H59iCGyqcgo%cbjAPfcrW8#SaZI^>%Ce6*a z0QB;@;-0mi|0L)s8XS$W`UniZo}QjCqq!#Mk|kS8#i~1h6l~Be&V4)|pwCpu5PYYa zHrZ_SBVQ2?4vysc6H$^}LPg+TSc4-ofZ_qtw*rp*yw&#(G@M&$^?XG-`WXS`bvV=> zJWyw+IPfsvXfCz;`YJ1rnPqyL8XBJT5bGb#RZ_ot^={c55tx_KsDS@hRaJpO=NA{- z|IFxgXM)acFu;D`jHojZB%|Y)d-qltr8%_cY*h%j{xYtf4>M9ZW%2ObjNk?P5IVcJ zw+8^^;`eWr=LP5GyPlcw&fl@7r?RDBy%EoNy{>*Ep%VeARa;ZT#lr(0llSGzQNY}m zmIV3u8eElPnvFo8n6>?`3Rs}P4+Ccr?$0tG!T0>7XIUmgiLy${x%%?JKhDq1{gRS` zCqf^96DaO}R69%bQrB%~lx)BV(9(>Ij6q)+@T@eW!tEbc1-W ze3CIrJwXrd24z%}%f#GVwgoEe#U~yzwo_kIqryM{guhQ|2#z*LhjSy)_5ddsu(R8{xG2fUe5jyW?3PQcm4kfbs&TZ;Bc=K%)nnlut!n zy=&*p_x7kBFe_9<_<(URtyT9OG9&iA+18V5FVa49u7z)gT^S<2pnqf{C9kcc1LPh| zvWheGHe6peZC{PRe}C0)e0=;HAbCJ}52dA;Gbw!~;?tQ31t%2p^7BEa=Ybvzmi7i&+RsJ>x`Hs(Eq{PxK0vR4Ijr090q)0XHVQgHvCUh6`~sur zZu+f0a4rWhAbXrXBbyq}|9%2~^ns{gTZ_iV~wsP*4z<1pQcu(WOO2dtg=m*2?gzH!`MS uB+x4G63toXXT~+FzvBR!@xP3A@%Y7o2 + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    ncine::PositionAffector::PositionStep Member List
    +
    +
    + +

    This is the complete list of members for ncine::PositionAffector::PositionStep, including all inherited members.

    + + + + + +
    age (defined in ncine::PositionAffector::PositionStep)ncine::PositionAffector::PositionStep
    position (defined in ncine::PositionAffector::PositionStep)ncine::PositionAffector::PositionStep
    PositionStep() (defined in ncine::PositionAffector::PositionStep)ncine::PositionAffector::PositionStepinline
    PositionStep(float newAge, float newPositionX, float newPositionY) (defined in ncine::PositionAffector::PositionStep)ncine::PositionAffector::PositionStepinline
    + + + + diff --git a/master/structncine_1_1_position_affector_1_1_position_step.html b/master/structncine_1_1_position_affector_1_1_position_step.html new file mode 100644 index 0000000000..adeabbe434 --- /dev/null +++ b/master/structncine_1_1_position_affector_1_1_position_step.html @@ -0,0 +1,113 @@ + + + + + + + +nCine: ncine::PositionAffector::PositionStep Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::PositionAffector::PositionStep Struct Reference
    +
    +
    +
    +Collaboration diagram for ncine::PositionAffector::PositionStep:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    + + + + +

    +Public Member Functions

    PositionStep (float newAge, float newPositionX, float newPositionY)
     
    + + + + + +

    +Public Attributes

    +float age
     
    +Vector2f position
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structncine_1_1_position_affector_1_1_position_step__coll__graph.map b/master/structncine_1_1_position_affector_1_1_position_step__coll__graph.map new file mode 100644 index 0000000000..f8f5ddf88d --- /dev/null +++ b/master/structncine_1_1_position_affector_1_1_position_step__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/structncine_1_1_position_affector_1_1_position_step__coll__graph.md5 b/master/structncine_1_1_position_affector_1_1_position_step__coll__graph.md5 new file mode 100644 index 0000000000..9effe05d2b --- /dev/null +++ b/master/structncine_1_1_position_affector_1_1_position_step__coll__graph.md5 @@ -0,0 +1 @@ +cce285355ff9b3f730b6c7b46fbbb15b \ No newline at end of file diff --git a/master/structncine_1_1_position_affector_1_1_position_step__coll__graph.png b/master/structncine_1_1_position_affector_1_1_position_step__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..eed574bddf45858f10932c0e4ec2db8a048bff03 GIT binary patch literal 5174 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 X=uMbkvcw5C0wG0NRhddD)1dzVKIPm~ literal 0 HcmV?d00001 diff --git a/master/structncine_1_1_rotation_affector_1_1_rotation_step-members.html b/master/structncine_1_1_rotation_affector_1_1_rotation_step-members.html new file mode 100644 index 0000000000..2fcbee1b65 --- /dev/null +++ b/master/structncine_1_1_rotation_affector_1_1_rotation_step-members.html @@ -0,0 +1,88 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    ncine::RotationAffector::RotationStep Member List
    +
    +
    + +

    This is the complete list of members for ncine::RotationAffector::RotationStep, including all inherited members.

    + + + + + +
    age (defined in ncine::RotationAffector::RotationStep)ncine::RotationAffector::RotationStep
    angle (defined in ncine::RotationAffector::RotationStep)ncine::RotationAffector::RotationStep
    RotationStep() (defined in ncine::RotationAffector::RotationStep)ncine::RotationAffector::RotationStepinline
    RotationStep(float newAge, float newAngle) (defined in ncine::RotationAffector::RotationStep)ncine::RotationAffector::RotationStepinline
    + + + + diff --git a/master/structncine_1_1_rotation_affector_1_1_rotation_step.html b/master/structncine_1_1_rotation_affector_1_1_rotation_step.html new file mode 100644 index 0000000000..abe689ca6a --- /dev/null +++ b/master/structncine_1_1_rotation_affector_1_1_rotation_step.html @@ -0,0 +1,104 @@ + + + + + + + +nCine: ncine::RotationAffector::RotationStep Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::RotationAffector::RotationStep Struct Reference
    +
    +
    + + + + +

    +Public Member Functions

    RotationStep (float newAge, float newAngle)
     
    + + + + + +

    +Public Attributes

    +float age
     
    +float angle
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structncine_1_1_size_affector_1_1_size_step-members.html b/master/structncine_1_1_size_affector_1_1_size_step-members.html new file mode 100644 index 0000000000..299fc937bf --- /dev/null +++ b/master/structncine_1_1_size_affector_1_1_size_step-members.html @@ -0,0 +1,90 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    ncine::SizeAffector::SizeStep Member List
    +
    +
    + +

    This is the complete list of members for ncine::SizeAffector::SizeStep, including all inherited members.

    + + + + + + + +
    age (defined in ncine::SizeAffector::SizeStep)ncine::SizeAffector::SizeStep
    scale (defined in ncine::SizeAffector::SizeStep)ncine::SizeAffector::SizeStep
    SizeStep() (defined in ncine::SizeAffector::SizeStep)ncine::SizeAffector::SizeStepinline
    SizeStep(float newAge, float newScale) (defined in ncine::SizeAffector::SizeStep)ncine::SizeAffector::SizeStepinline
    SizeStep(float newAge, float newScaleX, float newScaleY) (defined in ncine::SizeAffector::SizeStep)ncine::SizeAffector::SizeStepinline
    SizeStep(float newAge, const Vector2f &newScale) (defined in ncine::SizeAffector::SizeStep)ncine::SizeAffector::SizeStepinline
    + + + + diff --git a/master/structncine_1_1_size_affector_1_1_size_step.html b/master/structncine_1_1_size_affector_1_1_size_step.html new file mode 100644 index 0000000000..a7a739a2da --- /dev/null +++ b/master/structncine_1_1_size_affector_1_1_size_step.html @@ -0,0 +1,119 @@ + + + + + + + +nCine: ncine::SizeAffector::SizeStep Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::SizeAffector::SizeStep Struct Reference
    +
    +
    +
    +Collaboration diagram for ncine::SizeAffector::SizeStep:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    + + + + + + + + +

    +Public Member Functions

    SizeStep (float newAge, float newScale)
     
    SizeStep (float newAge, float newScaleX, float newScaleY)
     
    SizeStep (float newAge, const Vector2f &newScale)
     
    + + + + + +

    +Public Attributes

    +float age
     
    +Vector2f scale
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structncine_1_1_size_affector_1_1_size_step__coll__graph.map b/master/structncine_1_1_size_affector_1_1_size_step__coll__graph.map new file mode 100644 index 0000000000..a9ee8c85b2 --- /dev/null +++ b/master/structncine_1_1_size_affector_1_1_size_step__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/structncine_1_1_size_affector_1_1_size_step__coll__graph.md5 b/master/structncine_1_1_size_affector_1_1_size_step__coll__graph.md5 new file mode 100644 index 0000000000..68aaa21642 --- /dev/null +++ b/master/structncine_1_1_size_affector_1_1_size_step__coll__graph.md5 @@ -0,0 +1 @@ +d747750c7902358d1ba3ae66190d3bfd \ No newline at end of file diff --git a/master/structncine_1_1_size_affector_1_1_size_step__coll__graph.png b/master/structncine_1_1_size_affector_1_1_size_step__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..845f45026aeff90b7c196c258d4c561ebc8fa8d5 GIT binary patch literal 4729 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 qn`reGE}bTEDuq8c_1r7{Jx!2bgmU@E@= literal 0 HcmV?d00001 diff --git a/master/structncine_1_1_texture_saver_png_1_1_png_properties-members.html b/master/structncine_1_1_texture_saver_png_1_1_png_properties-members.html new file mode 100644 index 0000000000..eb2a46eec6 --- /dev/null +++ b/master/structncine_1_1_texture_saver_png_1_1_png_properties-members.html @@ -0,0 +1,86 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    ncine::TextureSaverPng::PngProperties Member List
    +
    +
    + +

    This is the complete list of members for ncine::TextureSaverPng::PngProperties, including all inherited members.

    + + + +
    PngProperties() (defined in ncine::TextureSaverPng::PngProperties)ncine::TextureSaverPng::PngPropertiesinline
    title (defined in ncine::TextureSaverPng::PngProperties)ncine::TextureSaverPng::PngProperties
    + + + + diff --git a/master/structncine_1_1_texture_saver_png_1_1_png_properties.html b/master/structncine_1_1_texture_saver_png_1_1_png_properties.html new file mode 100644 index 0000000000..afdf7eb9fe --- /dev/null +++ b/master/structncine_1_1_texture_saver_png_1_1_png_properties.html @@ -0,0 +1,94 @@ + + + + + + + +nCine: ncine::TextureSaverPng::PngProperties Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::TextureSaverPng::PngProperties Struct Reference
    +
    +
    + + + + +

    +Public Attributes

    +char * title
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structncine_1_1_texture_saver_web_p_1_1_web_p_properties-members.html b/master/structncine_1_1_texture_saver_web_p_1_1_web_p_properties-members.html new file mode 100644 index 0000000000..79989cba3b --- /dev/null +++ b/master/structncine_1_1_texture_saver_web_p_1_1_web_p_properties-members.html @@ -0,0 +1,87 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    ncine::TextureSaverWebP::WebPProperties Member List
    +
    + + + + + diff --git a/master/structncine_1_1_texture_saver_web_p_1_1_web_p_properties.html b/master/structncine_1_1_texture_saver_web_p_1_1_web_p_properties.html new file mode 100644 index 0000000000..aad5e8a578 --- /dev/null +++ b/master/structncine_1_1_texture_saver_web_p_1_1_web_p_properties.html @@ -0,0 +1,97 @@ + + + + + + + +nCine: ncine::TextureSaverWebP::WebPProperties Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::TextureSaverWebP::WebPProperties Struct Reference
    +
    +
    + + + + + + +

    +Public Attributes

    +float quality
     
    +bool lossless
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structncine_1_1_touch_event_1_1_pointer-members.html b/master/structncine_1_1_touch_event_1_1_pointer-members.html new file mode 100644 index 0000000000..fd21022cff --- /dev/null +++ b/master/structncine_1_1_touch_event_1_1_pointer-members.html @@ -0,0 +1,88 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    ncine::TouchEvent::Pointer Member List
    +
    +
    + +

    This is the complete list of members for ncine::TouchEvent::Pointer, including all inherited members.

    + + + + + +
    id (defined in ncine::TouchEvent::Pointer)ncine::TouchEvent::Pointer
    pressure (defined in ncine::TouchEvent::Pointer)ncine::TouchEvent::Pointer
    x (defined in ncine::TouchEvent::Pointer)ncine::TouchEvent::Pointer
    y (defined in ncine::TouchEvent::Pointer)ncine::TouchEvent::Pointer
    + + + + diff --git a/master/structncine_1_1_touch_event_1_1_pointer.html b/master/structncine_1_1_touch_event_1_1_pointer.html new file mode 100644 index 0000000000..fae0ec28a6 --- /dev/null +++ b/master/structncine_1_1_touch_event_1_1_pointer.html @@ -0,0 +1,103 @@ + + + + + + + +nCine: ncine::TouchEvent::Pointer Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::TouchEvent::Pointer Struct Reference
    +
    +
    + + + + + + + + + + +

    +Public Attributes

    +int id
     
    +float x
     
    +float y
     
    +float pressure
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structncine_1_1_velocity_affector_1_1_velocity_step-members.html b/master/structncine_1_1_velocity_affector_1_1_velocity_step-members.html new file mode 100644 index 0000000000..5fabd2f1d6 --- /dev/null +++ b/master/structncine_1_1_velocity_affector_1_1_velocity_step-members.html @@ -0,0 +1,88 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    ncine::VelocityAffector::VelocityStep Member List
    +
    +
    + +

    This is the complete list of members for ncine::VelocityAffector::VelocityStep, including all inherited members.

    + + + + + +
    age (defined in ncine::VelocityAffector::VelocityStep)ncine::VelocityAffector::VelocityStep
    velocity (defined in ncine::VelocityAffector::VelocityStep)ncine::VelocityAffector::VelocityStep
    VelocityStep() (defined in ncine::VelocityAffector::VelocityStep)ncine::VelocityAffector::VelocityStepinline
    VelocityStep(float newAge, float newVelocityX, float newVelocityY) (defined in ncine::VelocityAffector::VelocityStep)ncine::VelocityAffector::VelocityStepinline
    + + + + diff --git a/master/structncine_1_1_velocity_affector_1_1_velocity_step.html b/master/structncine_1_1_velocity_affector_1_1_velocity_step.html new file mode 100644 index 0000000000..d68c39c7fa --- /dev/null +++ b/master/structncine_1_1_velocity_affector_1_1_velocity_step.html @@ -0,0 +1,113 @@ + + + + + + + +nCine: ncine::VelocityAffector::VelocityStep Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    ncine::VelocityAffector::VelocityStep Struct Reference
    +
    +
    +
    +Collaboration diagram for ncine::VelocityAffector::VelocityStep:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    + + + + +

    +Public Member Functions

    VelocityStep (float newAge, float newVelocityX, float newVelocityY)
     
    + + + + + +

    +Public Attributes

    +float age
     
    +Vector2f velocity
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structncine_1_1_velocity_affector_1_1_velocity_step__coll__graph.map b/master/structncine_1_1_velocity_affector_1_1_velocity_step__coll__graph.map new file mode 100644 index 0000000000..a05cb00d46 --- /dev/null +++ b/master/structncine_1_1_velocity_affector_1_1_velocity_step__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/structncine_1_1_velocity_affector_1_1_velocity_step__coll__graph.md5 b/master/structncine_1_1_velocity_affector_1_1_velocity_step__coll__graph.md5 new file mode 100644 index 0000000000..13c67670e3 --- /dev/null +++ b/master/structncine_1_1_velocity_affector_1_1_velocity_step__coll__graph.md5 @@ -0,0 +1 @@ +429c4836084c82b01b03c2b8fd3a3d64 \ No newline at end of file diff --git a/master/structncine_1_1_velocity_affector_1_1_velocity_step__coll__graph.png b/master/structncine_1_1_velocity_affector_1_1_velocity_step__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..12512784f5c4a3b9385a1477765811e9b2d0a27d GIT binary patch literal 5393 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 E0UzNfCjbBd literal 0 HcmV?d00001 diff --git a/master/structnctl_1_1_bidirectional_iterator_tag.html b/master/structnctl_1_1_bidirectional_iterator_tag.html new file mode 100644 index 0000000000..b9d721726a --- /dev/null +++ b/master/structnctl_1_1_bidirectional_iterator_tag.html @@ -0,0 +1,110 @@ + + + + + + + +nCine: nctl::BidirectionalIteratorTag Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::BidirectionalIteratorTag Struct Reference
    +
    +
    + +

    Dispatching tag for iterators that can move both ways, one element at a time. + More...

    + +

    #include <iterator.h>

    +
    +Inheritance diagram for nctl::BidirectionalIteratorTag:
    +
    +
    Inheritance graph
    + + + + + +
    [legend]
    +
    +Collaboration diagram for nctl::BidirectionalIteratorTag:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    +

    Detailed Description

    +

    Dispatching tag for iterators that can move both ways, one element at a time.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1_bidirectional_iterator_tag__coll__graph.map b/master/structnctl_1_1_bidirectional_iterator_tag__coll__graph.map new file mode 100644 index 0000000000..322fdffa57 --- /dev/null +++ b/master/structnctl_1_1_bidirectional_iterator_tag__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/structnctl_1_1_bidirectional_iterator_tag__coll__graph.md5 b/master/structnctl_1_1_bidirectional_iterator_tag__coll__graph.md5 new file mode 100644 index 0000000000..72914b283a --- /dev/null +++ b/master/structnctl_1_1_bidirectional_iterator_tag__coll__graph.md5 @@ -0,0 +1 @@ +f1101e888e40eeb5b433f51e343a66b8 \ No newline at end of file diff --git a/master/structnctl_1_1_bidirectional_iterator_tag__coll__graph.png b/master/structnctl_1_1_bidirectional_iterator_tag__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..779085daa7302852c1853a5400d412d6b139ae90 GIT binary patch literal 4102 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 literal 0 HcmV?d00001 diff --git a/master/structnctl_1_1_bidirectional_iterator_tag__inherit__graph.map b/master/structnctl_1_1_bidirectional_iterator_tag__inherit__graph.map new file mode 100644 index 0000000000..5be115c15f --- /dev/null +++ b/master/structnctl_1_1_bidirectional_iterator_tag__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/master/structnctl_1_1_bidirectional_iterator_tag__inherit__graph.md5 b/master/structnctl_1_1_bidirectional_iterator_tag__inherit__graph.md5 new file mode 100644 index 0000000000..e5d7d6674e --- /dev/null +++ b/master/structnctl_1_1_bidirectional_iterator_tag__inherit__graph.md5 @@ -0,0 +1 @@ +b3f1b811f6e01e197ecfd5c160bf0cf3 \ No newline at end of file diff --git a/master/structnctl_1_1_bidirectional_iterator_tag__inherit__graph.png b/master/structnctl_1_1_bidirectional_iterator_tag__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..65db8e178f84fd105a8f54aee3ba42ae6cb141a3 GIT binary patch literal 7383 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 ra0pWG?+#fMN%qqwHonicC-hM&$dE&`U;! literal 0 HcmV?d00001 diff --git a/master/structnctl_1_1_forward_iterator_tag.html b/master/structnctl_1_1_forward_iterator_tag.html new file mode 100644 index 0000000000..fa3b8e9621 --- /dev/null +++ b/master/structnctl_1_1_forward_iterator_tag.html @@ -0,0 +1,101 @@ + + + + + + + +nCine: nctl::ForwardIteratorTag Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::ForwardIteratorTag Struct Reference
    +
    +
    + +

    Dispatching tag for iterators that can only move forward, one element at a time. + More...

    + +

    #include <iterator.h>

    +
    +Inheritance diagram for nctl::ForwardIteratorTag:
    +
    +
    Inheritance graph
    + + + + + +
    [legend]
    +

    Detailed Description

    +

    Dispatching tag for iterators that can only move forward, one element at a time.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1_forward_iterator_tag__inherit__graph.map b/master/structnctl_1_1_forward_iterator_tag__inherit__graph.map new file mode 100644 index 0000000000..0c44244279 --- /dev/null +++ b/master/structnctl_1_1_forward_iterator_tag__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/master/structnctl_1_1_forward_iterator_tag__inherit__graph.md5 b/master/structnctl_1_1_forward_iterator_tag__inherit__graph.md5 new file mode 100644 index 0000000000..ece38e175c --- /dev/null +++ b/master/structnctl_1_1_forward_iterator_tag__inherit__graph.md5 @@ -0,0 +1 @@ +279cde22fa6bd863377b97311bac3318 \ No newline at end of file diff --git a/master/structnctl_1_1_forward_iterator_tag__inherit__graph.png b/master/structnctl_1_1_forward_iterator_tag__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..bbdd241b907307a825d719a81949118538be8dd2 GIT binary patch literal 7363 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%0De9ewqh&rDd;4#|ee7Um zWgSZqG#CSpCNo@PqayxTY4mKwpwYS5#KdF_DEU4kW8=7SdBiF5u-oil z9ze4>I|emAZiJYgtoQs$a0xU8Q`99uWx!5O_AtYXKYxw}V2C<8@l=n|NXlhpplKEW4DKgM}}|l7wcFSn!@aHXLw3-a<2EOv&?!+ym#yr zU&G20Wns+`z*)_UTPKIxyq5~UO(&`6>73cJv9Uq!Dk~GOPu3Ho45>i>*G(Dxye4md z|31m5C+X4DY!Y{YsntC+Gz4>*lmb5Yt2rr94S;hqT;P23)~&FTk`naR-b9YpO>+wi zA`uZ0#Pf;SI;HHHMQK^tZAD`M{h;=gS67d`9qsRL)!e|fZ~^)RKm!UBFvIEq_zn&Z zLhf#itr+W@m{36gPAqE10*6`-al%Z%SCCB#$E$aWpEt7t!^W`57YwD22;!H@(yp~8 z0g{6?;f~FDwe70HvY{$d;BJcg4M3zbzkhe&a2O1xV3&2SFjEQ;7;w6jEG)A3NL4;L zxBdLd0;=duA)yXnSrS1&XcAl`065zE`lP@LSevM23luf)dJP5Mu`*Z>#j=8e$n%%~ zoi{5=wTed69zJXXmZR7cyEIuJ8m_<{I>;%!$n_misw&)cK;w#GdzssZ3w4Pgy7^B! zN6nCN$n#?yD2Hf}ui9p2u5Qm%Irht7)kHyaQfIdCJu{39dOc~++Y6?Lo0{UNuC8X? zP@GUyY`_;r41<#j(RWmU;L%`|+PbD3NSq+I0hi6qEaz2 zNy9Fx`s{Y8-j1NJ5?0u=1df@1stp(b(2`CbNSO;`Y6r~dl&tK4l?X$L<_E7H6}58P}z zM#gX=Vp4M;6{KFQGK28j5gvLl0qT)48+EjOP`)O7y6Gh=*CF#D(GuW;O}I--S4=nx`WfWY^gAQ_92Q-Nu8XI@!!wiY>BQ-%`}rk dZMM&eoa6;Pr^J%4f>TMz!~0KEN|nrm{{#PuURnSE literal 0 HcmV?d00001 diff --git a/master/structnctl_1_1_free_list_allocator_1_1_block-members.html b/master/structnctl_1_1_free_list_allocator_1_1_block-members.html new file mode 100644 index 0000000000..2eaaac588d --- /dev/null +++ b/master/structnctl_1_1_free_list_allocator_1_1_block-members.html @@ -0,0 +1,86 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::FreeListAllocator::Block Member List
    +
    +
    + +

    This is the complete list of members for nctl::FreeListAllocator::Block, including all inherited members.

    + + + +
    next (defined in nctl::FreeListAllocator::Block)nctl::FreeListAllocator::Block
    size (defined in nctl::FreeListAllocator::Block)nctl::FreeListAllocator::Block
    + + + + diff --git a/master/structnctl_1_1_free_list_allocator_1_1_block.html b/master/structnctl_1_1_free_list_allocator_1_1_block.html new file mode 100644 index 0000000000..33499d43ff --- /dev/null +++ b/master/structnctl_1_1_free_list_allocator_1_1_block.html @@ -0,0 +1,105 @@ + + + + + + + +nCine: nctl::FreeListAllocator::Block Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::FreeListAllocator::Block Struct Reference
    +
    +
    +
    +Collaboration diagram for nctl::FreeListAllocator::Block:
    +
    +
    Collaboration graph
    + + + +
    [legend]
    + + + + + + +

    +Public Attributes

    +size_t size
     
    +Blocknext
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1_free_list_allocator_1_1_block__coll__graph.map b/master/structnctl_1_1_free_list_allocator_1_1_block__coll__graph.map new file mode 100644 index 0000000000..4dcfe8bbf2 --- /dev/null +++ b/master/structnctl_1_1_free_list_allocator_1_1_block__coll__graph.map @@ -0,0 +1,3 @@ + + + diff --git a/master/structnctl_1_1_free_list_allocator_1_1_block__coll__graph.md5 b/master/structnctl_1_1_free_list_allocator_1_1_block__coll__graph.md5 new file mode 100644 index 0000000000..9dc17ba52e --- /dev/null +++ b/master/structnctl_1_1_free_list_allocator_1_1_block__coll__graph.md5 @@ -0,0 +1 @@ +7c0ba1f39972509dbd137cb30af81a8e \ No newline at end of file diff --git a/master/structnctl_1_1_free_list_allocator_1_1_block__coll__graph.png b/master/structnctl_1_1_free_list_allocator_1_1_block__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..aa0fc28653d8bdaa1bc3f0022f87a6b0d66e5215 GIT binary patch literal 3588 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 literal 0 HcmV?d00001 diff --git a/master/structnctl_1_1_hash_map_helper_traits.html b/master/structnctl_1_1_hash_map_helper_traits.html new file mode 100644 index 0000000000..049c2f0ee4 --- /dev/null +++ b/master/structnctl_1_1_hash_map_helper_traits.html @@ -0,0 +1,94 @@ + + + + + + + +nCine: nctl::HashMapHelperTraits< K, T, HashFunc, IsConst > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::HashMapHelperTraits< K, T, HashFunc, IsConst > Struct Template Reference
    +
    +
    + +

    Base helper structure for type traits used in the hashmap iterator. + More...

    + +

    #include <HashMapIterator.h>

    +

    Detailed Description

    +

    template<class K, class T, class HashFunc, bool IsConst>
    +struct nctl::HashMapHelperTraits< K, T, HashFunc, IsConst >

    + +

    Base helper structure for type traits used in the hashmap iterator.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1_hash_map_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4-members.html b/master/structnctl_1_1_hash_map_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4-members.html new file mode 100644 index 0000000000..566a29566e --- /dev/null +++ b/master/structnctl_1_1_hash_map_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4-members.html @@ -0,0 +1,86 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::HashMapHelperTraits< K, T, HashFunc, false > Member List
    +
    + + + + + diff --git a/master/structnctl_1_1_hash_map_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4.html b/master/structnctl_1_1_hash_map_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4.html new file mode 100644 index 0000000000..5bfbcea097 --- /dev/null +++ b/master/structnctl_1_1_hash_map_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4.html @@ -0,0 +1,107 @@ + + + + + + + +nCine: nctl::HashMapHelperTraits< K, T, HashFunc, false > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::HashMapHelperTraits< K, T, HashFunc, false > Struct Template Reference
    +
    +
    + +

    Helper structure providing type traits used in the non constant hashmap iterator. + More...

    + +

    #include <HashMapIterator.h>

    + + + + + + +

    +Public Types

    +using HashMapPtr = HashMap< K, T, HashFunc > *
     
    +using NodeReference = typename HashMap< K, T, HashFunc >::Node &
     
    +

    Detailed Description

    +

    template<class K, class T, class HashFunc>
    +struct nctl::HashMapHelperTraits< K, T, HashFunc, false >

    + +

    Helper structure providing type traits used in the non constant hashmap iterator.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1_hash_map_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4-members.html b/master/structnctl_1_1_hash_map_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4-members.html new file mode 100644 index 0000000000..f861563f74 --- /dev/null +++ b/master/structnctl_1_1_hash_map_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4-members.html @@ -0,0 +1,86 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::HashMapHelperTraits< K, T, HashFunc, true > Member List
    +
    + + + + + diff --git a/master/structnctl_1_1_hash_map_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4.html b/master/structnctl_1_1_hash_map_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4.html new file mode 100644 index 0000000000..f47beb816f --- /dev/null +++ b/master/structnctl_1_1_hash_map_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4.html @@ -0,0 +1,107 @@ + + + + + + + +nCine: nctl::HashMapHelperTraits< K, T, HashFunc, true > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::HashMapHelperTraits< K, T, HashFunc, true > Struct Template Reference
    +
    +
    + +

    Helper structure providing type traits used in the constant hashmap iterator. + More...

    + +

    #include <HashMapIterator.h>

    + + + + + + +

    +Public Types

    +using HashMapPtr = const HashMap< K, T, HashFunc > *
     
    +using NodeReference = const typename HashMap< K, T, HashFunc >::Node &
     
    +

    Detailed Description

    +

    template<class K, class T, class HashFunc>
    +struct nctl::HashMapHelperTraits< K, T, HashFunc, true >

    + +

    Helper structure providing type traits used in the constant hashmap iterator.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1_hash_map_list_helper_traits.html b/master/structnctl_1_1_hash_map_list_helper_traits.html new file mode 100644 index 0000000000..f879442c9c --- /dev/null +++ b/master/structnctl_1_1_hash_map_list_helper_traits.html @@ -0,0 +1,94 @@ + + + + + + + +nCine: nctl::HashMapListHelperTraits< K, T, HashFunc, IsConst > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::HashMapListHelperTraits< K, T, HashFunc, IsConst > Struct Template Reference
    +
    +
    + +

    Base helper structure for type traits used in the hashmap iterator. + More...

    + +

    #include <HashMapListIterator.h>

    +

    Detailed Description

    +

    template<class K, class T, class HashFunc, bool IsConst>
    +struct nctl::HashMapListHelperTraits< K, T, HashFunc, IsConst >

    + +

    Base helper structure for type traits used in the hashmap iterator.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1_hash_map_list_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4-members.html b/master/structnctl_1_1_hash_map_list_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4-members.html new file mode 100644 index 0000000000..b9f6903230 --- /dev/null +++ b/master/structnctl_1_1_hash_map_list_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4-members.html @@ -0,0 +1,89 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::HashMapListHelperTraits< K, T, HashFunc, false > Member List
    +
    + + + + + diff --git a/master/structnctl_1_1_hash_map_list_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4.html b/master/structnctl_1_1_hash_map_list_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4.html new file mode 100644 index 0000000000..53bab0d8f3 --- /dev/null +++ b/master/structnctl_1_1_hash_map_list_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4.html @@ -0,0 +1,116 @@ + + + + + + + +nCine: nctl::HashMapListHelperTraits< K, T, HashFunc, false > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::HashMapListHelperTraits< K, T, HashFunc, false > Struct Template Reference
    +
    +
    + +

    Helper structure providing type traits used in the non constant hashmap iterator. + More...

    + +

    #include <HashMapListIterator.h>

    + + + + + + + + + + + + +

    +Public Types

    +using NodeType = typename HashMapList< K, T, HashFunc >::Node
     
    +using HashMapListPtr = HashMapList< K, T, HashFunc > *
     
    +using BucketPtr = typename HashMapList< K, T, HashFunc >::HashBucket *
     
    +using ListIteratorType = typename List< NodeType >::Iterator
     
    +using NodeReference = NodeType &
     
    +

    Detailed Description

    +

    template<class K, class T, class HashFunc>
    +struct nctl::HashMapListHelperTraits< K, T, HashFunc, false >

    + +

    Helper structure providing type traits used in the non constant hashmap iterator.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1_hash_map_list_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4-members.html b/master/structnctl_1_1_hash_map_list_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4-members.html new file mode 100644 index 0000000000..b32968b04d --- /dev/null +++ b/master/structnctl_1_1_hash_map_list_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4-members.html @@ -0,0 +1,89 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::HashMapListHelperTraits< K, T, HashFunc, true > Member List
    +
    + + + + + diff --git a/master/structnctl_1_1_hash_map_list_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4.html b/master/structnctl_1_1_hash_map_list_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4.html new file mode 100644 index 0000000000..e8b9d85b7c --- /dev/null +++ b/master/structnctl_1_1_hash_map_list_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4.html @@ -0,0 +1,116 @@ + + + + + + + +nCine: nctl::HashMapListHelperTraits< K, T, HashFunc, true > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::HashMapListHelperTraits< K, T, HashFunc, true > Struct Template Reference
    +
    +
    + +

    Helper structure providing type traits used in the constant hashmap iterator. + More...

    + +

    #include <HashMapListIterator.h>

    + + + + + + + + + + + + +

    +Public Types

    +using NodeType = typename HashMapList< K, T, HashFunc >::Node
     
    +using HashMapListPtr = const HashMapList< K, T, HashFunc > *
     
    +using BucketPtr = const typename HashMapList< K, T, HashFunc >::HashBucket *
     
    +using ListIteratorType = typename List< NodeType >::ConstIterator
     
    +using NodeReference = const NodeType &
     
    +

    Detailed Description

    +

    template<class K, class T, class HashFunc>
    +struct nctl::HashMapListHelperTraits< K, T, HashFunc, true >

    + +

    Helper structure providing type traits used in the constant hashmap iterator.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1_hash_set_helper_traits-members.html b/master/structnctl_1_1_hash_set_helper_traits-members.html new file mode 100644 index 0000000000..3c9939e77e --- /dev/null +++ b/master/structnctl_1_1_hash_set_helper_traits-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::HashSetHelperTraits< K, HashFunc > Member List
    +
    +
    + +

    This is the complete list of members for nctl::HashSetHelperTraits< K, HashFunc >, including all inherited members.

    + + +
    HashSetPtr typedef (defined in nctl::HashSetHelperTraits< K, HashFunc >)nctl::HashSetHelperTraits< K, HashFunc >
    + + + + diff --git a/master/structnctl_1_1_hash_set_helper_traits.html b/master/structnctl_1_1_hash_set_helper_traits.html new file mode 100644 index 0000000000..04ac31d3e0 --- /dev/null +++ b/master/structnctl_1_1_hash_set_helper_traits.html @@ -0,0 +1,105 @@ + + + + + + + +nCine: nctl::HashSetHelperTraits< K, HashFunc > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::HashSetHelperTraits< K, HashFunc > Struct Template Reference
    +
    +
    + +

    Base helper structure for type traits used in the hashset iterator. + More...

    + +

    #include <HashSetIterator.h>

    + + + + +

    +Public Types

    +using HashSetPtr = const HashSet< K, HashFunc > *
     
    +

    Detailed Description

    +

    template<class K, class HashFunc>
    +struct nctl::HashSetHelperTraits< K, HashFunc >

    + +

    Base helper structure for type traits used in the hashset iterator.

    +

    The documentation for this struct was generated from the following files: +
    + + + + diff --git a/master/structnctl_1_1_hash_set_list_helper_traits-members.html b/master/structnctl_1_1_hash_set_list_helper_traits-members.html new file mode 100644 index 0000000000..84979e26f9 --- /dev/null +++ b/master/structnctl_1_1_hash_set_list_helper_traits-members.html @@ -0,0 +1,89 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::HashSetListHelperTraits< K, HashFunc > Member List
    +
    + + + + + diff --git a/master/structnctl_1_1_hash_set_list_helper_traits.html b/master/structnctl_1_1_hash_set_list_helper_traits.html new file mode 100644 index 0000000000..8cd33623c8 --- /dev/null +++ b/master/structnctl_1_1_hash_set_list_helper_traits.html @@ -0,0 +1,117 @@ + + + + + + + +nCine: nctl::HashSetListHelperTraits< K, HashFunc > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::HashSetListHelperTraits< K, HashFunc > Struct Template Reference
    +
    +
    + +

    Base helper structure for type traits used in the hashset iterator. + More...

    + +

    #include <HashSetListIterator.h>

    + + + + + + + + + + + + +

    +Public Types

    +using NodeType = typename HashSetList< K, HashFunc >::Node
     
    +using HashSetListPtr = const HashSetList< K, HashFunc > *
     
    +using BucketPtr = const typename HashSetList< K, HashFunc >::HashBucket *
     
    +using ListIteratorType = typename List< NodeType >::ConstIterator
     
    +using NodeReference = const NodeType &
     
    +

    Detailed Description

    +

    template<class K, class HashFunc>
    +struct nctl::HashSetListHelperTraits< K, HashFunc >

    + +

    Base helper structure for type traits used in the hashset iterator.

    +

    The documentation for this struct was generated from the following files: +
    + + + + diff --git a/master/structnctl_1_1_iterator_traits.html b/master/structnctl_1_1_iterator_traits.html new file mode 100644 index 0000000000..8dedd24bff --- /dev/null +++ b/master/structnctl_1_1_iterator_traits.html @@ -0,0 +1,94 @@ + + + + + + + +nCine: nctl::IteratorTraits< Iterator > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::IteratorTraits< Iterator > Struct Template Reference
    +
    +
    + +

    Base iterator traits structure. + More...

    + +

    #include <iterator.h>

    +

    Detailed Description

    +

    template<class Iterator>
    +struct nctl::IteratorTraits< Iterator >

    + +

    Base iterator traits structure.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1_iterator_traits_3_01_array_iterator_3_01_t_00_01false_01_4_01_4-members.html b/master/structnctl_1_1_iterator_traits_3_01_array_iterator_3_01_t_00_01false_01_4_01_4-members.html new file mode 100644 index 0000000000..e9e8478033 --- /dev/null +++ b/master/structnctl_1_1_iterator_traits_3_01_array_iterator_3_01_t_00_01false_01_4_01_4-members.html @@ -0,0 +1,88 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::IteratorTraits< ArrayIterator< T, false > > Member List
    +
    + + + + + diff --git a/master/structnctl_1_1_iterator_traits_3_01_array_iterator_3_01_t_00_01false_01_4_01_4.html b/master/structnctl_1_1_iterator_traits_3_01_array_iterator_3_01_t_00_01false_01_4_01_4.html new file mode 100644 index 0000000000..35f19d31f6 --- /dev/null +++ b/master/structnctl_1_1_iterator_traits_3_01_array_iterator_3_01_t_00_01false_01_4_01_4.html @@ -0,0 +1,121 @@ + + + + + + + +nCine: nctl::IteratorTraits< ArrayIterator< T, false > > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::IteratorTraits< ArrayIterator< T, false > > Struct Template Reference
    +
    +
    + +

    Iterator traits structure specialization for ArrayIterator class. + More...

    + +

    #include <ArrayIterator.h>

    + + + + + + + + + + + +

    +Public Types

    +using ValueType = T
     Type of the values deferenced by the iterator.
     
    +using Pointer = T *
     Pointer to the type of the values deferenced by the iterator.
     
    +using Reference = T &
     Reference to the type of the values deferenced by the iterator.
     
    + + + + +

    +Static Public Member Functions

    +static RandomAccessIteratorTag IteratorCategory ()
     Type trait for iterator category.
     
    +

    Detailed Description

    +

    template<class T>
    +struct nctl::IteratorTraits< ArrayIterator< T, false > >

    + +

    Iterator traits structure specialization for ArrayIterator class.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1_iterator_traits_3_01_array_iterator_3_01_t_00_01true_01_4_01_4-members.html b/master/structnctl_1_1_iterator_traits_3_01_array_iterator_3_01_t_00_01true_01_4_01_4-members.html new file mode 100644 index 0000000000..e50d21778f --- /dev/null +++ b/master/structnctl_1_1_iterator_traits_3_01_array_iterator_3_01_t_00_01true_01_4_01_4-members.html @@ -0,0 +1,88 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::IteratorTraits< ArrayIterator< T, true > > Member List
    +
    + + + + + diff --git a/master/structnctl_1_1_iterator_traits_3_01_array_iterator_3_01_t_00_01true_01_4_01_4.html b/master/structnctl_1_1_iterator_traits_3_01_array_iterator_3_01_t_00_01true_01_4_01_4.html new file mode 100644 index 0000000000..1d7bf4cf13 --- /dev/null +++ b/master/structnctl_1_1_iterator_traits_3_01_array_iterator_3_01_t_00_01true_01_4_01_4.html @@ -0,0 +1,121 @@ + + + + + + + +nCine: nctl::IteratorTraits< ArrayIterator< T, true > > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::IteratorTraits< ArrayIterator< T, true > > Struct Template Reference
    +
    +
    + +

    Iterator traits structure specialization for constant ArrayIterator class. + More...

    + +

    #include <ArrayIterator.h>

    + + + + + + + + + + + +

    +Public Types

    +using ValueType = T
     Type of the values deferenced by the iterator (never const)
     
    +using Pointer = const T *
     Pointer to the type of the values deferenced by the iterator.
     
    +using Reference = const T &
     Reference to the type of the values deferenced by the iterator.
     
    + + + + +

    +Static Public Member Functions

    +static RandomAccessIteratorTag IteratorCategory ()
     Type trait for iterator category.
     
    +

    Detailed Description

    +

    template<class T>
    +struct nctl::IteratorTraits< ArrayIterator< T, true > >

    + +

    Iterator traits structure specialization for constant ArrayIterator class.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1_iterator_traits_3_01_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4_01_4-members.html b/master/structnctl_1_1_iterator_traits_3_01_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4_01_4-members.html new file mode 100644 index 0000000000..223aaacab3 --- /dev/null +++ b/master/structnctl_1_1_iterator_traits_3_01_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4_01_4-members.html @@ -0,0 +1,88 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::IteratorTraits< HashMapIterator< K, T, HashFunc, false > > Member List
    +
    + + + + + diff --git a/master/structnctl_1_1_iterator_traits_3_01_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4_01_4.html b/master/structnctl_1_1_iterator_traits_3_01_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4_01_4.html new file mode 100644 index 0000000000..8fea111de2 --- /dev/null +++ b/master/structnctl_1_1_iterator_traits_3_01_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4_01_4.html @@ -0,0 +1,121 @@ + + + + + + + +nCine: nctl::IteratorTraits< HashMapIterator< K, T, HashFunc, false > > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::IteratorTraits< HashMapIterator< K, T, HashFunc, false > > Struct Template Reference
    +
    +
    + +

    Iterator traits structure specialization for HashMapIterator class. + More...

    + +

    #include <HashMapIterator.h>

    + + + + + + + + + + + +

    +Public Types

    +using ValueType = T
     Type of the values deferenced by the iterator.
     
    +using Pointer = T *
     Pointer to the type of the values deferenced by the iterator.
     
    +using Reference = T &
     Reference to the type of the values deferenced by the iterator.
     
    + + + + +

    +Static Public Member Functions

    +static BidirectionalIteratorTag IteratorCategory ()
     Type trait for iterator category.
     
    +

    Detailed Description

    +

    template<class K, class T, class HashFunc>
    +struct nctl::IteratorTraits< HashMapIterator< K, T, HashFunc, false > >

    + +

    Iterator traits structure specialization for HashMapIterator class.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1_iterator_traits_3_01_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4_01_4-members.html b/master/structnctl_1_1_iterator_traits_3_01_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4_01_4-members.html new file mode 100644 index 0000000000..d37faacf56 --- /dev/null +++ b/master/structnctl_1_1_iterator_traits_3_01_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4_01_4-members.html @@ -0,0 +1,88 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::IteratorTraits< HashMapIterator< K, T, HashFunc, true > > Member List
    +
    + + + + + diff --git a/master/structnctl_1_1_iterator_traits_3_01_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4_01_4.html b/master/structnctl_1_1_iterator_traits_3_01_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4_01_4.html new file mode 100644 index 0000000000..20f18e7a61 --- /dev/null +++ b/master/structnctl_1_1_iterator_traits_3_01_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4_01_4.html @@ -0,0 +1,121 @@ + + + + + + + +nCine: nctl::IteratorTraits< HashMapIterator< K, T, HashFunc, true > > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::IteratorTraits< HashMapIterator< K, T, HashFunc, true > > Struct Template Reference
    +
    +
    + +

    Iterator traits structure specialization for constant HashMapIterator class. + More...

    + +

    #include <HashMapIterator.h>

    + + + + + + + + + + + +

    +Public Types

    +using ValueType = T
     Type of the values deferenced by the iterator (never const)
     
    +using Pointer = const T *
     Pointer to the type of the values deferenced by the iterator.
     
    +using Reference = const T &
     Reference to the type of the values deferenced by the iterator.
     
    + + + + +

    +Static Public Member Functions

    +static BidirectionalIteratorTag IteratorCategory ()
     Type trait for iterator category.
     
    +

    Detailed Description

    +

    template<class K, class T, class HashFunc>
    +struct nctl::IteratorTraits< HashMapIterator< K, T, HashFunc, true > >

    + +

    Iterator traits structure specialization for constant HashMapIterator class.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1_iterator_traits_3_01_hash_map_list_iterator_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4_01_4-members.html b/master/structnctl_1_1_iterator_traits_3_01_hash_map_list_iterator_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4_01_4-members.html new file mode 100644 index 0000000000..9ead7034a1 --- /dev/null +++ b/master/structnctl_1_1_iterator_traits_3_01_hash_map_list_iterator_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4_01_4-members.html @@ -0,0 +1,88 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::IteratorTraits< HashMapListIterator< K, T, HashFunc, false > > Member List
    +
    + + + + + diff --git a/master/structnctl_1_1_iterator_traits_3_01_hash_map_list_iterator_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4_01_4.html b/master/structnctl_1_1_iterator_traits_3_01_hash_map_list_iterator_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4_01_4.html new file mode 100644 index 0000000000..1904e29dff --- /dev/null +++ b/master/structnctl_1_1_iterator_traits_3_01_hash_map_list_iterator_3_01_k_00_01_t_00_01_hash_func_00_01false_01_4_01_4.html @@ -0,0 +1,121 @@ + + + + + + + +nCine: nctl::IteratorTraits< HashMapListIterator< K, T, HashFunc, false > > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::IteratorTraits< HashMapListIterator< K, T, HashFunc, false > > Struct Template Reference
    +
    +
    + +

    Iterator traits structure specialization for HashMapListIterator class. + More...

    + +

    #include <HashMapListIterator.h>

    + + + + + + + + + + + +

    +Public Types

    +using ValueType = T
     Type of the values deferenced by the iterator.
     
    +using Pointer = T *
     Pointer to the type of the values deferenced by the iterator.
     
    +using Reference = T &
     Reference to the type of the values deferenced by the iterator.
     
    + + + + +

    +Static Public Member Functions

    +static BidirectionalIteratorTag IteratorCategory ()
     Type trait for iterator category.
     
    +

    Detailed Description

    +

    template<class K, class T, class HashFunc>
    +struct nctl::IteratorTraits< HashMapListIterator< K, T, HashFunc, false > >

    + +

    Iterator traits structure specialization for HashMapListIterator class.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1_iterator_traits_3_01_hash_map_list_iterator_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4_01_4-members.html b/master/structnctl_1_1_iterator_traits_3_01_hash_map_list_iterator_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4_01_4-members.html new file mode 100644 index 0000000000..858cc93c53 --- /dev/null +++ b/master/structnctl_1_1_iterator_traits_3_01_hash_map_list_iterator_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4_01_4-members.html @@ -0,0 +1,88 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::IteratorTraits< HashMapListIterator< K, T, HashFunc, true > > Member List
    +
    + + + + + diff --git a/master/structnctl_1_1_iterator_traits_3_01_hash_map_list_iterator_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4_01_4.html b/master/structnctl_1_1_iterator_traits_3_01_hash_map_list_iterator_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4_01_4.html new file mode 100644 index 0000000000..23b825774e --- /dev/null +++ b/master/structnctl_1_1_iterator_traits_3_01_hash_map_list_iterator_3_01_k_00_01_t_00_01_hash_func_00_01true_01_4_01_4.html @@ -0,0 +1,121 @@ + + + + + + + +nCine: nctl::IteratorTraits< HashMapListIterator< K, T, HashFunc, true > > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::IteratorTraits< HashMapListIterator< K, T, HashFunc, true > > Struct Template Reference
    +
    +
    + +

    Iterator traits structure specialization for constant HashMapListIterator class. + More...

    + +

    #include <HashMapListIterator.h>

    + + + + + + + + + + + +

    +Public Types

    +using ValueType = T
     Type of the values deferenced by the iterator (never const)
     
    +using Pointer = const T *
     Pointer to the type of the values deferenced by the iterator.
     
    +using Reference = const T &
     Reference to the type of the values deferenced by the iterator.
     
    + + + + +

    +Static Public Member Functions

    +static BidirectionalIteratorTag IteratorCategory ()
     Type trait for iterator category.
     
    +

    Detailed Description

    +

    template<class K, class T, class HashFunc>
    +struct nctl::IteratorTraits< HashMapListIterator< K, T, HashFunc, true > >

    + +

    Iterator traits structure specialization for constant HashMapListIterator class.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1_iterator_traits_3_01_hash_set_iterator_3_01_k_00_01_hash_func_01_4_01_4-members.html b/master/structnctl_1_1_iterator_traits_3_01_hash_set_iterator_3_01_k_00_01_hash_func_01_4_01_4-members.html new file mode 100644 index 0000000000..6f7190166f --- /dev/null +++ b/master/structnctl_1_1_iterator_traits_3_01_hash_set_iterator_3_01_k_00_01_hash_func_01_4_01_4-members.html @@ -0,0 +1,88 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::IteratorTraits< HashSetIterator< K, HashFunc > > Member List
    +
    + + + + + diff --git a/master/structnctl_1_1_iterator_traits_3_01_hash_set_iterator_3_01_k_00_01_hash_func_01_4_01_4.html b/master/structnctl_1_1_iterator_traits_3_01_hash_set_iterator_3_01_k_00_01_hash_func_01_4_01_4.html new file mode 100644 index 0000000000..740791fae7 --- /dev/null +++ b/master/structnctl_1_1_iterator_traits_3_01_hash_set_iterator_3_01_k_00_01_hash_func_01_4_01_4.html @@ -0,0 +1,121 @@ + + + + + + + +nCine: nctl::IteratorTraits< HashSetIterator< K, HashFunc > > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::IteratorTraits< HashSetIterator< K, HashFunc > > Struct Template Reference
    +
    +
    + +

    Iterator traits structure specialization for HashSetIterator class. + More...

    + +

    #include <HashSetIterator.h>

    + + + + + + + + + + + +

    +Public Types

    +using ValueType = K
     Type of the values deferenced by the iterator (never const)
     
    +using Pointer = const K *
     Pointer to the type of the values deferenced by the iterator.
     
    +using Reference = const K &
     Reference to the type of the values deferenced by the iterator.
     
    + + + + +

    +Static Public Member Functions

    +static BidirectionalIteratorTag IteratorCategory ()
     Type trait for iterator category.
     
    +

    Detailed Description

    +

    template<class K, class HashFunc>
    +struct nctl::IteratorTraits< HashSetIterator< K, HashFunc > >

    + +

    Iterator traits structure specialization for HashSetIterator class.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1_iterator_traits_3_01_hash_set_list_iterator_3_01_k_00_01_hash_func_01_4_01_4-members.html b/master/structnctl_1_1_iterator_traits_3_01_hash_set_list_iterator_3_01_k_00_01_hash_func_01_4_01_4-members.html new file mode 100644 index 0000000000..415ce31c10 --- /dev/null +++ b/master/structnctl_1_1_iterator_traits_3_01_hash_set_list_iterator_3_01_k_00_01_hash_func_01_4_01_4-members.html @@ -0,0 +1,88 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::IteratorTraits< HashSetListIterator< K, HashFunc > > Member List
    +
    + + + + + diff --git a/master/structnctl_1_1_iterator_traits_3_01_hash_set_list_iterator_3_01_k_00_01_hash_func_01_4_01_4.html b/master/structnctl_1_1_iterator_traits_3_01_hash_set_list_iterator_3_01_k_00_01_hash_func_01_4_01_4.html new file mode 100644 index 0000000000..7f4e96893d --- /dev/null +++ b/master/structnctl_1_1_iterator_traits_3_01_hash_set_list_iterator_3_01_k_00_01_hash_func_01_4_01_4.html @@ -0,0 +1,121 @@ + + + + + + + +nCine: nctl::IteratorTraits< HashSetListIterator< K, HashFunc > > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::IteratorTraits< HashSetListIterator< K, HashFunc > > Struct Template Reference
    +
    +
    + +

    Iterator traits structure specialization for HashSetListIterator class. + More...

    + +

    #include <HashSetListIterator.h>

    + + + + + + + + + + + +

    +Public Types

    +using ValueType = K
     Type of the values deferenced by the iterator (never const)
     
    +using Pointer = const K *
     Pointer to the type of the values deferenced by the iterator.
     
    +using Reference = const K &
     Reference to the type of the values deferenced by the iterator.
     
    + + + + +

    +Static Public Member Functions

    +static BidirectionalIteratorTag IteratorCategory ()
     Type trait for iterator category.
     
    +

    Detailed Description

    +

    template<class K, class HashFunc>
    +struct nctl::IteratorTraits< HashSetListIterator< K, HashFunc > >

    + +

    Iterator traits structure specialization for HashSetListIterator class.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1_iterator_traits_3_01_list_iterator_3_01_t_00_01false_01_4_01_4-members.html b/master/structnctl_1_1_iterator_traits_3_01_list_iterator_3_01_t_00_01false_01_4_01_4-members.html new file mode 100644 index 0000000000..84b8e60ac3 --- /dev/null +++ b/master/structnctl_1_1_iterator_traits_3_01_list_iterator_3_01_t_00_01false_01_4_01_4-members.html @@ -0,0 +1,88 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::IteratorTraits< ListIterator< T, false > > Member List
    +
    + + + + + diff --git a/master/structnctl_1_1_iterator_traits_3_01_list_iterator_3_01_t_00_01false_01_4_01_4.html b/master/structnctl_1_1_iterator_traits_3_01_list_iterator_3_01_t_00_01false_01_4_01_4.html new file mode 100644 index 0000000000..d2ced0cc5b --- /dev/null +++ b/master/structnctl_1_1_iterator_traits_3_01_list_iterator_3_01_t_00_01false_01_4_01_4.html @@ -0,0 +1,121 @@ + + + + + + + +nCine: nctl::IteratorTraits< ListIterator< T, false > > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::IteratorTraits< ListIterator< T, false > > Struct Template Reference
    +
    +
    + +

    Iterator traits structure specialization for ListIterator class. + More...

    + +

    #include <ListIterator.h>

    + + + + + + + + + + + +

    +Public Types

    +using ValueType = T
     Type of the values deferenced by the iterator.
     
    +using Pointer = T *
     Pointer to the type of the values deferenced by the iterator.
     
    +using Reference = T &
     Reference to the type of the values deferenced by the iterator.
     
    + + + + +

    +Static Public Member Functions

    +static BidirectionalIteratorTag IteratorCategory ()
     Type trait for iterator category.
     
    +

    Detailed Description

    +

    template<class T>
    +struct nctl::IteratorTraits< ListIterator< T, false > >

    + +

    Iterator traits structure specialization for ListIterator class.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1_iterator_traits_3_01_list_iterator_3_01_t_00_01true_01_4_01_4-members.html b/master/structnctl_1_1_iterator_traits_3_01_list_iterator_3_01_t_00_01true_01_4_01_4-members.html new file mode 100644 index 0000000000..6e8ce4eb33 --- /dev/null +++ b/master/structnctl_1_1_iterator_traits_3_01_list_iterator_3_01_t_00_01true_01_4_01_4-members.html @@ -0,0 +1,88 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::IteratorTraits< ListIterator< T, true > > Member List
    +
    + + + + + diff --git a/master/structnctl_1_1_iterator_traits_3_01_list_iterator_3_01_t_00_01true_01_4_01_4.html b/master/structnctl_1_1_iterator_traits_3_01_list_iterator_3_01_t_00_01true_01_4_01_4.html new file mode 100644 index 0000000000..0e9c1e6239 --- /dev/null +++ b/master/structnctl_1_1_iterator_traits_3_01_list_iterator_3_01_t_00_01true_01_4_01_4.html @@ -0,0 +1,121 @@ + + + + + + + +nCine: nctl::IteratorTraits< ListIterator< T, true > > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::IteratorTraits< ListIterator< T, true > > Struct Template Reference
    +
    +
    + +

    Iterator traits structure specialization for constant ListIterator class. + More...

    + +

    #include <ListIterator.h>

    + + + + + + + + + + + +

    +Public Types

    +using ValueType = T
     Type of the values deferenced by the iterator (never const)
     
    +using Pointer = const T *
     Pointer to the type of the values deferenced by the iterator.
     
    +using Reference = const T &
     Reference to the type of the values deferenced by the iterator.
     
    + + + + +

    +Static Public Member Functions

    +static BidirectionalIteratorTag IteratorCategory ()
     Type trait for iterator category.
     
    +

    Detailed Description

    +

    template<class T>
    +struct nctl::IteratorTraits< ListIterator< T, true > >

    + +

    Iterator traits structure specialization for constant ListIterator class.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1_iterator_traits_3_01_reverse_iterator_3_01_iterator_01_4_01_4-members.html b/master/structnctl_1_1_iterator_traits_3_01_reverse_iterator_3_01_iterator_01_4_01_4-members.html new file mode 100644 index 0000000000..60faae5788 --- /dev/null +++ b/master/structnctl_1_1_iterator_traits_3_01_reverse_iterator_3_01_iterator_01_4_01_4-members.html @@ -0,0 +1,88 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::IteratorTraits< ReverseIterator< Iterator > > Member List
    +
    + + + + + diff --git a/master/structnctl_1_1_iterator_traits_3_01_reverse_iterator_3_01_iterator_01_4_01_4.html b/master/structnctl_1_1_iterator_traits_3_01_reverse_iterator_3_01_iterator_01_4_01_4.html new file mode 100644 index 0000000000..24d9c03c8d --- /dev/null +++ b/master/structnctl_1_1_iterator_traits_3_01_reverse_iterator_3_01_iterator_01_4_01_4.html @@ -0,0 +1,121 @@ + + + + + + + +nCine: nctl::IteratorTraits< ReverseIterator< Iterator > > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::IteratorTraits< ReverseIterator< Iterator > > Struct Template Reference
    +
    +
    + +

    Iterator traits structure specialization for ReverseIterator class. + More...

    + +

    #include <ReverseIterator.h>

    + + + + + + + + + + + +

    +Public Types

    +using ValueType = typename Iterator::ValueType
     Type of the values deferenced by the iterator.
     
    +using Pointer = typename Iterator::Pointer
     Pointer to the type of the values deferenced by the iterator.
     
    +using Reference = typename Iterator::Reference
     Reference to the type of the values deferenced by the iterator.
     
    + + + + +

    +Static Public Member Functions

    +static decltype(Iterator::IteratorCategory()) IteratorCategory ()
     Type trait for iterator category.
     
    +

    Detailed Description

    +

    template<class Iterator>
    +struct nctl::IteratorTraits< ReverseIterator< Iterator > >

    + +

    Iterator traits structure specialization for ReverseIterator class.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1_iterator_traits_3_01_sparse_set_iterator_3_01_t_01_4_01_4-members.html b/master/structnctl_1_1_iterator_traits_3_01_sparse_set_iterator_3_01_t_01_4_01_4-members.html new file mode 100644 index 0000000000..2275110eb5 --- /dev/null +++ b/master/structnctl_1_1_iterator_traits_3_01_sparse_set_iterator_3_01_t_01_4_01_4-members.html @@ -0,0 +1,88 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::IteratorTraits< SparseSetIterator< T > > Member List
    +
    + + + + + diff --git a/master/structnctl_1_1_iterator_traits_3_01_sparse_set_iterator_3_01_t_01_4_01_4.html b/master/structnctl_1_1_iterator_traits_3_01_sparse_set_iterator_3_01_t_01_4_01_4.html new file mode 100644 index 0000000000..200aef6c37 --- /dev/null +++ b/master/structnctl_1_1_iterator_traits_3_01_sparse_set_iterator_3_01_t_01_4_01_4.html @@ -0,0 +1,121 @@ + + + + + + + +nCine: nctl::IteratorTraits< SparseSetIterator< T > > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::IteratorTraits< SparseSetIterator< T > > Struct Template Reference
    +
    +
    + +

    Iterator traits structure specialization for SparseSetIterator class. + More...

    + +

    #include <SparseSetIterator.h>

    + + + + + + + + + + + +

    +Public Types

    +using ValueType = T
     Type of the values deferenced by the iterator (never const)
     
    +using Pointer = const T *
     Pointer to the type of the values deferenced by the iterator.
     
    +using Reference = const T &
     Reference to the type of the values deferenced by the iterator.
     
    + + + + +

    +Static Public Member Functions

    +static BidirectionalIteratorTag IteratorCategory ()
     Type trait for iterator category.
     
    +

    Detailed Description

    +

    template<class T>
    +struct nctl::IteratorTraits< SparseSetIterator< T > >

    + +

    Iterator traits structure specialization for SparseSetIterator class.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1_iterator_traits_3_01_static_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_0152b6ab6f3be0fd28c4e8caf8a49820b.html b/master/structnctl_1_1_iterator_traits_3_01_static_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_0152b6ab6f3be0fd28c4e8caf8a49820b.html new file mode 100644 index 0000000000..eba24e0a08 --- /dev/null +++ b/master/structnctl_1_1_iterator_traits_3_01_static_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_0152b6ab6f3be0fd28c4e8caf8a49820b.html @@ -0,0 +1,88 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::IteratorTraits< StaticHashMapIterator< K, T, HashFunc, Capacity, false > > Member List
    +
    + + + + + diff --git a/master/structnctl_1_1_iterator_traits_3_01_static_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01false_01_4_01_4.html b/master/structnctl_1_1_iterator_traits_3_01_static_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01false_01_4_01_4.html new file mode 100644 index 0000000000..02d64b6256 --- /dev/null +++ b/master/structnctl_1_1_iterator_traits_3_01_static_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01false_01_4_01_4.html @@ -0,0 +1,121 @@ + + + + + + + +nCine: nctl::IteratorTraits< StaticHashMapIterator< K, T, HashFunc, Capacity, false > > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::IteratorTraits< StaticHashMapIterator< K, T, HashFunc, Capacity, false > > Struct Template Reference
    +
    +
    + +

    Iterator traits structure specialization for HashMapIterator class. + More...

    + +

    #include <StaticHashMapIterator.h>

    + + + + + + + + + + + +

    +Public Types

    +using ValueType = T
     Type of the values deferenced by the iterator.
     
    +using Pointer = T *
     Pointer to the type of the values deferenced by the iterator.
     
    +using Reference = T &
     Reference to the type of the values deferenced by the iterator.
     
    + + + + +

    +Static Public Member Functions

    +static BidirectionalIteratorTag IteratorCategory ()
     Type trait for iterator category.
     
    +

    Detailed Description

    +

    template<class K, class T, class HashFunc, unsigned int Capacity>
    +struct nctl::IteratorTraits< StaticHashMapIterator< K, T, HashFunc, Capacity, false > >

    + +

    Iterator traits structure specialization for HashMapIterator class.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1_iterator_traits_3_01_static_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01true_01_4_01_4.html b/master/structnctl_1_1_iterator_traits_3_01_static_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01true_01_4_01_4.html new file mode 100644 index 0000000000..7f5e2992f8 --- /dev/null +++ b/master/structnctl_1_1_iterator_traits_3_01_static_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01true_01_4_01_4.html @@ -0,0 +1,121 @@ + + + + + + + +nCine: nctl::IteratorTraits< StaticHashMapIterator< K, T, HashFunc, Capacity, true > > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::IteratorTraits< StaticHashMapIterator< K, T, HashFunc, Capacity, true > > Struct Template Reference
    +
    +
    + +

    Iterator traits structure specialization for constant HashMapIterator class. + More...

    + +

    #include <StaticHashMapIterator.h>

    + + + + + + + + + + + +

    +Public Types

    +using ValueType = T
     Type of the values deferenced by the iterator (never const)
     
    +using Pointer = const T *
     Pointer to the type of the values deferenced by the iterator.
     
    +using Reference = const T &
     Reference to the type of the values deferenced by the iterator.
     
    + + + + +

    +Static Public Member Functions

    +static BidirectionalIteratorTag IteratorCategory ()
     Type trait for iterator category.
     
    +

    Detailed Description

    +

    template<class K, class T, class HashFunc, unsigned int Capacity>
    +struct nctl::IteratorTraits< StaticHashMapIterator< K, T, HashFunc, Capacity, true > >

    + +

    Iterator traits structure specialization for constant HashMapIterator class.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1_iterator_traits_3_01_static_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_05fd9f4092bfcde5f299c59ef59ed2052.html b/master/structnctl_1_1_iterator_traits_3_01_static_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_05fd9f4092bfcde5f299c59ef59ed2052.html new file mode 100644 index 0000000000..61ef319633 --- /dev/null +++ b/master/structnctl_1_1_iterator_traits_3_01_static_hash_map_iterator_3_01_k_00_01_t_00_01_hash_func_00_05fd9f4092bfcde5f299c59ef59ed2052.html @@ -0,0 +1,88 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::IteratorTraits< StaticHashMapIterator< K, T, HashFunc, Capacity, true > > Member List
    +
    + + + + + diff --git a/master/structnctl_1_1_iterator_traits_3_01_static_hash_set_iterator_3_01_k_00_01_hash_func_00_01_capacity_01_4_01_4-members.html b/master/structnctl_1_1_iterator_traits_3_01_static_hash_set_iterator_3_01_k_00_01_hash_func_00_01_capacity_01_4_01_4-members.html new file mode 100644 index 0000000000..ed6f9e6338 --- /dev/null +++ b/master/structnctl_1_1_iterator_traits_3_01_static_hash_set_iterator_3_01_k_00_01_hash_func_00_01_capacity_01_4_01_4-members.html @@ -0,0 +1,88 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::IteratorTraits< StaticHashSetIterator< K, HashFunc, Capacity > > Member List
    +
    + + + + + diff --git a/master/structnctl_1_1_iterator_traits_3_01_static_hash_set_iterator_3_01_k_00_01_hash_func_00_01_capacity_01_4_01_4.html b/master/structnctl_1_1_iterator_traits_3_01_static_hash_set_iterator_3_01_k_00_01_hash_func_00_01_capacity_01_4_01_4.html new file mode 100644 index 0000000000..f9d96ce1bd --- /dev/null +++ b/master/structnctl_1_1_iterator_traits_3_01_static_hash_set_iterator_3_01_k_00_01_hash_func_00_01_capacity_01_4_01_4.html @@ -0,0 +1,121 @@ + + + + + + + +nCine: nctl::IteratorTraits< StaticHashSetIterator< K, HashFunc, Capacity > > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::IteratorTraits< StaticHashSetIterator< K, HashFunc, Capacity > > Struct Template Reference
    +
    +
    + +

    Iterator traits structure specialization for HashSetIterator class. + More...

    + +

    #include <StaticHashSetIterator.h>

    + + + + + + + + + + + +

    +Public Types

    +using ValueType = K
     Type of the values deferenced by the iterator (never const)
     
    +using Pointer = const K *
     Pointer to the type of the values deferenced by the iterator.
     
    +using Reference = const K &
     Reference to the type of the values deferenced by the iterator.
     
    + + + + +

    +Static Public Member Functions

    +static BidirectionalIteratorTag IteratorCategory ()
     Type trait for iterator category.
     
    +

    Detailed Description

    +

    template<class K, class HashFunc, unsigned int Capacity>
    +struct nctl::IteratorTraits< StaticHashSetIterator< K, HashFunc, Capacity > >

    + +

    Iterator traits structure specialization for HashSetIterator class.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1_iterator_traits_3_01_string_iterator_3_01false_01_4_01_4-members.html b/master/structnctl_1_1_iterator_traits_3_01_string_iterator_3_01false_01_4_01_4-members.html new file mode 100644 index 0000000000..e450572a37 --- /dev/null +++ b/master/structnctl_1_1_iterator_traits_3_01_string_iterator_3_01false_01_4_01_4-members.html @@ -0,0 +1,88 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::IteratorTraits< StringIterator< false > > Member List
    +
    + + + + + diff --git a/master/structnctl_1_1_iterator_traits_3_01_string_iterator_3_01false_01_4_01_4.html b/master/structnctl_1_1_iterator_traits_3_01_string_iterator_3_01false_01_4_01_4.html new file mode 100644 index 0000000000..53134415f7 --- /dev/null +++ b/master/structnctl_1_1_iterator_traits_3_01_string_iterator_3_01false_01_4_01_4.html @@ -0,0 +1,118 @@ + + + + + + + +nCine: nctl::IteratorTraits< StringIterator< false > > Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::IteratorTraits< StringIterator< false > > Struct Reference
    +
    +
    + +

    Iterator traits structure specialization for StringIterator class. + More...

    + +

    #include <StringIterator.h>

    + + + + + + + + + + + +

    +Public Types

    +using ValueType = char
     Type of the values deferenced by the iterator.
     
    +using Pointer = char *
     Pointer to the type of the values deferenced by the iterator.
     
    +using Reference = char &
     Reference to the type of the values deferenced by the iterator.
     
    + + + + +

    +Static Public Member Functions

    +static RandomAccessIteratorTag IteratorCategory ()
     Type trait for iterator category.
     
    +

    Detailed Description

    +

    Iterator traits structure specialization for StringIterator class.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1_iterator_traits_3_01_string_iterator_3_01true_01_4_01_4-members.html b/master/structnctl_1_1_iterator_traits_3_01_string_iterator_3_01true_01_4_01_4-members.html new file mode 100644 index 0000000000..7e0186b961 --- /dev/null +++ b/master/structnctl_1_1_iterator_traits_3_01_string_iterator_3_01true_01_4_01_4-members.html @@ -0,0 +1,88 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::IteratorTraits< StringIterator< true > > Member List
    +
    + + + + + diff --git a/master/structnctl_1_1_iterator_traits_3_01_string_iterator_3_01true_01_4_01_4.html b/master/structnctl_1_1_iterator_traits_3_01_string_iterator_3_01true_01_4_01_4.html new file mode 100644 index 0000000000..43dc46e1f2 --- /dev/null +++ b/master/structnctl_1_1_iterator_traits_3_01_string_iterator_3_01true_01_4_01_4.html @@ -0,0 +1,118 @@ + + + + + + + +nCine: nctl::IteratorTraits< StringIterator< true > > Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::IteratorTraits< StringIterator< true > > Struct Reference
    +
    +
    + +

    Iterator traits structure specialization for constant StringIterator class. + More...

    + +

    #include <StringIterator.h>

    + + + + + + + + + + + +

    +Public Types

    +using ValueType = char
     Type of the values deferenced by the iterator (never const)
     
    +using Pointer = const char *
     Pointer to the type of the values deferenced by the iterator.
     
    +using Reference = const char &
     Reference to the type of the values deferenced by the iterator.
     
    + + + + +

    +Static Public Member Functions

    +static RandomAccessIteratorTag IteratorCategory ()
     Type trait for iterator category.
     
    +

    Detailed Description

    +

    Iterator traits structure specialization for constant StringIterator class.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1_make_unique_return-members.html b/master/structnctl_1_1_make_unique_return-members.html new file mode 100644 index 0000000000..f932b31150 --- /dev/null +++ b/master/structnctl_1_1_make_unique_return-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::MakeUniqueReturn< T, Deleter > Member List
    +
    +
    + +

    This is the complete list of members for nctl::MakeUniqueReturn< T, Deleter >, including all inherited members.

    + + +
    singleObject typedef (defined in nctl::MakeUniqueReturn< T, Deleter >)nctl::MakeUniqueReturn< T, Deleter >
    + + + + diff --git a/master/structnctl_1_1_make_unique_return.html b/master/structnctl_1_1_make_unique_return.html new file mode 100644 index 0000000000..271b64119d --- /dev/null +++ b/master/structnctl_1_1_make_unique_return.html @@ -0,0 +1,94 @@ + + + + + + + +nCine: nctl::MakeUniqueReturn< T, Deleter > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::MakeUniqueReturn< T, Deleter > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    +typedef UniquePtr< T, Deleter > singleObject
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1_make_unique_return_3_01_t_0f_0e_00_01_deleter_01_4-members.html b/master/structnctl_1_1_make_unique_return_3_01_t_0f_0e_00_01_deleter_01_4-members.html new file mode 100644 index 0000000000..bc3b5f4da2 --- /dev/null +++ b/master/structnctl_1_1_make_unique_return_3_01_t_0f_0e_00_01_deleter_01_4-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::MakeUniqueReturn< T[], Deleter > Member List
    +
    +
    + +

    This is the complete list of members for nctl::MakeUniqueReturn< T[], Deleter >, including all inherited members.

    + + +
    array typedef (defined in nctl::MakeUniqueReturn< T[], Deleter >)nctl::MakeUniqueReturn< T[], Deleter >
    + + + + diff --git a/master/structnctl_1_1_make_unique_return_3_01_t_0f_0e_00_01_deleter_01_4.html b/master/structnctl_1_1_make_unique_return_3_01_t_0f_0e_00_01_deleter_01_4.html new file mode 100644 index 0000000000..2670a00639 --- /dev/null +++ b/master/structnctl_1_1_make_unique_return_3_01_t_0f_0e_00_01_deleter_01_4.html @@ -0,0 +1,94 @@ + + + + + + + +nCine: nctl::MakeUniqueReturn< T[], Deleter > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::MakeUniqueReturn< T[], Deleter > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    +typedef UniquePtr< T[], Deleter > array
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1_make_unique_return_3_01_t_0fsize_0e_00_01_deleter_01_4.html b/master/structnctl_1_1_make_unique_return_3_01_t_0fsize_0e_00_01_deleter_01_4.html new file mode 100644 index 0000000000..c295bc4a6f --- /dev/null +++ b/master/structnctl_1_1_make_unique_return_3_01_t_0fsize_0e_00_01_deleter_01_4.html @@ -0,0 +1,92 @@ + + + + + + + +nCine: nctl::MakeUniqueReturn< T[size], Deleter > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::MakeUniqueReturn< T[size], Deleter > Struct Template Reference
    +
    +
    + + + + +

    +Classes

    struct  invalid
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1_make_unique_return_3_01_t_0fsize_0e_00_01_deleter_01_4_1_1invalid.html b/master/structnctl_1_1_make_unique_return_3_01_t_0fsize_0e_00_01_deleter_01_4_1_1invalid.html new file mode 100644 index 0000000000..cac1467fb7 --- /dev/null +++ b/master/structnctl_1_1_make_unique_return_3_01_t_0fsize_0e_00_01_deleter_01_4_1_1invalid.html @@ -0,0 +1,84 @@ + + + + + + + +nCine: nctl::MakeUniqueReturn< T[size], Deleter >::invalid Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::MakeUniqueReturn< T[size], Deleter >::invalid Struct Reference
    +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1_random_access_iterator_tag.html b/master/structnctl_1_1_random_access_iterator_tag.html new file mode 100644 index 0000000000..ebbace4f2b --- /dev/null +++ b/master/structnctl_1_1_random_access_iterator_tag.html @@ -0,0 +1,111 @@ + + + + + + + +nCine: nctl::RandomAccessIteratorTag Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::RandomAccessIteratorTag Struct Reference
    +
    +
    + +

    Dispatching tag for iterators that can jump arbitrary distances in both ways. + More...

    + +

    #include <iterator.h>

    +
    +Inheritance diagram for nctl::RandomAccessIteratorTag:
    +
    +
    Inheritance graph
    + + + + + +
    [legend]
    +
    +Collaboration diagram for nctl::RandomAccessIteratorTag:
    +
    +
    Collaboration graph
    + + + + + +
    [legend]
    +

    Detailed Description

    +

    Dispatching tag for iterators that can jump arbitrary distances in both ways.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1_random_access_iterator_tag__coll__graph.map b/master/structnctl_1_1_random_access_iterator_tag__coll__graph.map new file mode 100644 index 0000000000..74b4a3bbe0 --- /dev/null +++ b/master/structnctl_1_1_random_access_iterator_tag__coll__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/master/structnctl_1_1_random_access_iterator_tag__coll__graph.md5 b/master/structnctl_1_1_random_access_iterator_tag__coll__graph.md5 new file mode 100644 index 0000000000..472eaa8b8c --- /dev/null +++ b/master/structnctl_1_1_random_access_iterator_tag__coll__graph.md5 @@ -0,0 +1 @@ +1e225a6a324d8eb3fd71325003202630 \ No newline at end of file diff --git a/master/structnctl_1_1_random_access_iterator_tag__coll__graph.png b/master/structnctl_1_1_random_access_iterator_tag__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..7a853c401ea27864de74291bff9f6628bfcd11ad GIT binary patch literal 7381 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 GU;YpL>{c@X literal 0 HcmV?d00001 diff --git a/master/structnctl_1_1_random_access_iterator_tag__inherit__graph.map b/master/structnctl_1_1_random_access_iterator_tag__inherit__graph.map new file mode 100644 index 0000000000..74b4a3bbe0 --- /dev/null +++ b/master/structnctl_1_1_random_access_iterator_tag__inherit__graph.map @@ -0,0 +1,5 @@ + + + + + diff --git a/master/structnctl_1_1_random_access_iterator_tag__inherit__graph.md5 b/master/structnctl_1_1_random_access_iterator_tag__inherit__graph.md5 new file mode 100644 index 0000000000..472eaa8b8c --- /dev/null +++ b/master/structnctl_1_1_random_access_iterator_tag__inherit__graph.md5 @@ -0,0 +1 @@ +1e225a6a324d8eb3fd71325003202630 \ No newline at end of file diff --git a/master/structnctl_1_1_random_access_iterator_tag__inherit__graph.png b/master/structnctl_1_1_random_access_iterator_tag__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..7a853c401ea27864de74291bff9f6628bfcd11ad GIT binary patch literal 7381 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 GU;YpL>{c@X literal 0 HcmV?d00001 diff --git a/master/structnctl_1_1_reversion_wrapper-members.html b/master/structnctl_1_1_reversion_wrapper-members.html new file mode 100644 index 0000000000..a75feaa28e --- /dev/null +++ b/master/structnctl_1_1_reversion_wrapper-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::ReversionWrapper< T > Member List
    +
    +
    + +

    This is the complete list of members for nctl::ReversionWrapper< T >, including all inherited members.

    + + +
    iterable (defined in nctl::ReversionWrapper< T >)nctl::ReversionWrapper< T >
    + + + + diff --git a/master/structnctl_1_1_reversion_wrapper.html b/master/structnctl_1_1_reversion_wrapper.html new file mode 100644 index 0000000000..f5fbb912b4 --- /dev/null +++ b/master/structnctl_1_1_reversion_wrapper.html @@ -0,0 +1,94 @@ + + + + + + + +nCine: nctl::ReversionWrapper< T > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::ReversionWrapper< T > Struct Template Reference
    +
    +
    + + + + +

    +Public Attributes

    +T & iterable
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1_static_hash_map_helper_traits.html b/master/structnctl_1_1_static_hash_map_helper_traits.html new file mode 100644 index 0000000000..f3c3c99203 --- /dev/null +++ b/master/structnctl_1_1_static_hash_map_helper_traits.html @@ -0,0 +1,94 @@ + + + + + + + +nCine: nctl::StaticHashMapHelperTraits< K, T, HashFunc, Capacity, IsConst > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::StaticHashMapHelperTraits< K, T, HashFunc, Capacity, IsConst > Struct Template Reference
    +
    +
    + +

    Base helper structure for type traits used in the hashmap iterator. + More...

    + +

    #include <StaticHashMapIterator.h>

    +

    Detailed Description

    +

    template<class K, class T, class HashFunc, unsigned int Capacity, bool IsConst>
    +struct nctl::StaticHashMapHelperTraits< K, T, HashFunc, Capacity, IsConst >

    + +

    Base helper structure for type traits used in the hashmap iterator.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1_static_hash_map_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01false_01_4-members.html b/master/structnctl_1_1_static_hash_map_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01false_01_4-members.html new file mode 100644 index 0000000000..2cce7aee0a --- /dev/null +++ b/master/structnctl_1_1_static_hash_map_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01false_01_4-members.html @@ -0,0 +1,86 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::StaticHashMapHelperTraits< K, T, HashFunc, Capacity, false > Member List
    +
    + + + + + diff --git a/master/structnctl_1_1_static_hash_map_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01false_01_4.html b/master/structnctl_1_1_static_hash_map_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01false_01_4.html new file mode 100644 index 0000000000..9bae6241a2 --- /dev/null +++ b/master/structnctl_1_1_static_hash_map_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01false_01_4.html @@ -0,0 +1,107 @@ + + + + + + + +nCine: nctl::StaticHashMapHelperTraits< K, T, HashFunc, Capacity, false > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::StaticHashMapHelperTraits< K, T, HashFunc, Capacity, false > Struct Template Reference
    +
    +
    + +

    Helper structure providing type traits used in the non constant hashmap iterator. + More...

    + +

    #include <StaticHashMapIterator.h>

    + + + + + + +

    +Public Types

    +using HashMapPtr = StaticHashMap< K, T, Capacity, HashFunc > *
     
    +using NodeReference = typename StaticHashMap< K, T, Capacity, HashFunc >::Node &
     
    +

    Detailed Description

    +

    template<class K, class T, class HashFunc, unsigned int Capacity>
    +struct nctl::StaticHashMapHelperTraits< K, T, HashFunc, Capacity, false >

    + +

    Helper structure providing type traits used in the non constant hashmap iterator.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1_static_hash_map_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01true_01_4-members.html b/master/structnctl_1_1_static_hash_map_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01true_01_4-members.html new file mode 100644 index 0000000000..7446d205b3 --- /dev/null +++ b/master/structnctl_1_1_static_hash_map_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01true_01_4-members.html @@ -0,0 +1,86 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::StaticHashMapHelperTraits< K, T, HashFunc, Capacity, true > Member List
    +
    + + + + + diff --git a/master/structnctl_1_1_static_hash_map_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01true_01_4.html b/master/structnctl_1_1_static_hash_map_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01true_01_4.html new file mode 100644 index 0000000000..44007a5de5 --- /dev/null +++ b/master/structnctl_1_1_static_hash_map_helper_traits_3_01_k_00_01_t_00_01_hash_func_00_01_capacity_00_01true_01_4.html @@ -0,0 +1,107 @@ + + + + + + + +nCine: nctl::StaticHashMapHelperTraits< K, T, HashFunc, Capacity, true > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::StaticHashMapHelperTraits< K, T, HashFunc, Capacity, true > Struct Template Reference
    +
    +
    + +

    Helper structure providing type traits used in the constant hashmap iterator. + More...

    + +

    #include <StaticHashMapIterator.h>

    + + + + + + +

    +Public Types

    +using HashMapPtr = const StaticHashMap< K, T, Capacity, HashFunc > *
     
    +using NodeReference = const typename StaticHashMap< K, T, Capacity, HashFunc >::Node &
     
    +

    Detailed Description

    +

    template<class K, class T, class HashFunc, unsigned int Capacity>
    +struct nctl::StaticHashMapHelperTraits< K, T, HashFunc, Capacity, true >

    + +

    Helper structure providing type traits used in the constant hashmap iterator.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1_static_hash_set_helper_traits-members.html b/master/structnctl_1_1_static_hash_set_helper_traits-members.html new file mode 100644 index 0000000000..0fd4f618f7 --- /dev/null +++ b/master/structnctl_1_1_static_hash_set_helper_traits-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::StaticHashSetHelperTraits< K, HashFunc, Capacity > Member List
    +
    +
    + +

    This is the complete list of members for nctl::StaticHashSetHelperTraits< K, HashFunc, Capacity >, including all inherited members.

    + + +
    HashSetPtr typedef (defined in nctl::StaticHashSetHelperTraits< K, HashFunc, Capacity >)nctl::StaticHashSetHelperTraits< K, HashFunc, Capacity >
    + + + + diff --git a/master/structnctl_1_1_static_hash_set_helper_traits.html b/master/structnctl_1_1_static_hash_set_helper_traits.html new file mode 100644 index 0000000000..f87e659124 --- /dev/null +++ b/master/structnctl_1_1_static_hash_set_helper_traits.html @@ -0,0 +1,105 @@ + + + + + + + +nCine: nctl::StaticHashSetHelperTraits< K, HashFunc, Capacity > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::StaticHashSetHelperTraits< K, HashFunc, Capacity > Struct Template Reference
    +
    +
    + +

    Base helper structure for type traits used in the hashset iterator. + More...

    + +

    #include <StaticHashSetIterator.h>

    + + + + +

    +Public Types

    +using HashSetPtr = const StaticHashSet< K, Capacity, HashFunc > *
     
    +

    Detailed Description

    +

    template<class K, class HashFunc, unsigned int Capacity>
    +struct nctl::StaticHashSetHelperTraits< K, HashFunc, Capacity >

    + +

    Base helper structure for type traits used in the hashset iterator.

    +

    The documentation for this struct was generated from the following files: +
    + + + + diff --git a/master/structnctl_1_1add_l_value_reference.html b/master/structnctl_1_1add_l_value_reference.html new file mode 100644 index 0000000000..e11b69bc9f --- /dev/null +++ b/master/structnctl_1_1add_l_value_reference.html @@ -0,0 +1,102 @@ + + + + + + + +nCine: nctl::addLValueReference< T > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::addLValueReference< T > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for nctl::addLValueReference< T >:
    +
    +
    Inheritance graph
    + + + + +
    [legend]
    +
    +Collaboration diagram for nctl::addLValueReference< T >:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1add_l_value_reference__coll__graph.map b/master/structnctl_1_1add_l_value_reference__coll__graph.map new file mode 100644 index 0000000000..3248944120 --- /dev/null +++ b/master/structnctl_1_1add_l_value_reference__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/structnctl_1_1add_l_value_reference__coll__graph.md5 b/master/structnctl_1_1add_l_value_reference__coll__graph.md5 new file mode 100644 index 0000000000..b454ff0390 --- /dev/null +++ b/master/structnctl_1_1add_l_value_reference__coll__graph.md5 @@ -0,0 +1 @@ +bcbd2ad6c3b67b44f3cdc4935435fd55 \ No newline at end of file diff --git a/master/structnctl_1_1add_l_value_reference__coll__graph.png b/master/structnctl_1_1add_l_value_reference__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..2247162763dc547b4033a33892953151bc185730 GIT binary patch literal 6051 zcmd6rWmr^yo5u%HKqaIH7`g=f6AmB(g2E6=2+}3!&@nJbNq0!AGzdy}hoGbk!VuD3 z(j5Yl!~S@7_u6OQ?CTvan2W<4&N+8|Ki@k{O;v&97X2*<1VZvu5%B`NZ-8$fA_DM} z^g_fJyb-)sQb0g1uf8(A=YD`dXmy_=o@lzIZcTfrQRy@i?%I>tBRHU*zT|$A2sIvO z{Pkh~A39V{v3Kd!6;0DfELr*K^)ib>$s*OKGz_+^-KB3SO~-6RiXdOE`W{FCp3n55Tf z)u7$iuU}bNS)UN9uSN0KJ~#S~hD~Hzd)C{W2MU`*()4a9SrXE(eUnNkqU2I;{wy2f zE>0Y2N%;na;=hKE-%#Bbg^-i;TM&audFoo&)g+79&}f&w{HGQ*^X;u}jcwAvUk^7o zlclaW@#xIl!>^{C)6cm+unGy0V-o}vY;A384|r(8(ff-}6|-M_J-l(_#_?KidfDst zcc`#T31_7WDerUWr%#^*A3W&DQ_qZvkLS|C?Jp?>1_m~djL?AB?!f^9jTSP-{cgW~ zb+osa)c*S+&5zeY*4EZkr+QVE-Hr9W^zGmzP%~ z87(dC`C+L~`$rxP6BH^6y?~h?$X2rM7){#Jpn*f&+}-^b#6l5lW8>qjyu7#UEZ_yF zP#7a)r0cAg&YGi#SAAWbNn0?9gR85;CGKK=d%MJO6Ee3sURhRE^`p`2OifcW@ci8K zt9SuMLF?=NO7kB7xH#%4*h98jDSm!Z6bc1}n@4mBc}|zTYIDGyzxCE*iv=0N(fSuG zWE6rhoSvSxj*UV8Zcod)yVtjNl$v4VKWAh>9zJ~NcD&0f9|gNCFQoXw6vt>u^Ru$Ya~+0>(ps% zVq$;eXlFM1AA_35Y_ZLwqqLP4eaq>>>eR*-HP7|BAu+MBco=AMaz5joo}Nui42njh9WV0fnYEU>Kp3wR z5U@!}eKH;$8w<_K;=mOZYzS#O!<-)Ge6FatAD@<1d~~)m-OvFk1HXDtpZr;&gJ`R( zw>*3H3<}ZK*Y8TGt*R1y^X84qpJf$oL&I)JnZN(F?5&3S`ikRYH}ALS$9tP|Edh=@ zH%Up&y}i97gfQzH8{^G>_{r$1+7)(J#Y31bT%kI+2?;a2S z93I-aHW(Xg%ju;fJEF|g)zuw0G$W0ytavGd(D*7=#{ywOy_>>eZ6uAjv-rd^jKRh&aciLPFX^BL(^`=R52-I#j z6cq4QA7zRQ_oR!eI-MkGvBhQ>H+e&aE$=k-wzT+Neg*l1m>`k(Q47sz*ulZUE~s%y zw_OMslcX44vF$qZv8aCs7W+&->K*Ynt1JT^^ z(OP0Guc^VLK74Zwe`{z6i|04GrJ<55fPEE zpP%29hrX-)Bs7GCA?ND0(<>6OU0r2vd#`OLs%}OzO9v}+wSi9lH8oW<0?m^h7sG>e zpdGP{k!i|YvNAH)P_vEy)EceyrY%q^4jd4)rVdvz$@c=dT*u_Qkl3X`MNLWbd ziIEXw)08Ne^AS>KW8c)-!J!!hu-tL!nWm;@Mp@aN`T2Rzlim3?A=hog>({T(ZBIAk z6&JS;7wXJ!ZAAtL6A&{?!9etne}@a~Zj?6t1_c@#9jyTBegGFt%J?qjfj#f$$BYaX z+u26O1Oa31)3^@s?0bXHr9ao#(@VH)`Xbo;YHMq|j>Q|ix?YzQ76yQ4^ToqAv9t`G znljv+s8-5E@2nDNC@f?tdmvqxyXhdM6!pdV8o9qmiVfcM+GH%wRV#j7z{RHq&>0%=F502 zy8;y^_j`GYgeyN~c>Ap#`+shel4{#{YR2`YKKy{E<~CjL94>^>)zqZIZzg3F=b#P9 zLAqVyyhP2qsLZXcyHeBA#=#Iiw$a9D?kG4rEhkqSysv(cS6XTjA0NL7E^^Cki!p04 zE(#N6nWHmnvQ7d;jy1RnC@U+^Ei4QU&J*2=G}`%mxcG)uNJJzkDCh<$Of16z8Ris$ zDf#Qh{=RyPQOaz8f4`oGVqRUuCF|@PIdedRl7aPZ^PBab@_47Z~eb`M953ybjYswzo%pV#R-i=w7Nqoq!XK=zL3 z0?1UOrLUM{34n z=Mh3)-ufVKJ|+0QR@lUZ{^oQ8Ev(~JYv9fE)2JLpGgDI*pdGKvp%FrWG4hKB3%07N zf$gP7;ZuL>QQDZ zxUjG(9UUFeZH+AdfPf{YCXL+QjlqGT;>tHGs*UI4l@`R14~iU&syv#xc0N8n1im+} zUoTr&tD|=EX>JE4Jf2yEgs)xm5!L$zQNqLZ& zoqfaCMI&pdc+f>Zx!!p~l?N^)gtxmc(I1sVRWRtHtW1o<{cU0w5Fo3msX5-q3ZVCX zx07DB%2-raRk85#-NxZ?Wwo^(K(WhwF1-VTf}HizWe~M%AAyL8l$uX_ zS0k$nixqO1dt5!CUaLB3Wi@dys6ELOWM?s+H+ckvlboLZ9T4xum6e5`vFy5lpoocy z%S<~dfO5b75lT+qk=>mp;TjVY;|nCRrMsILi0n@+RwL0s`Q>N0jl{is_wLZp1cNgA zQeLiJ$n#=aYvu5COND2s%Fe>V;>V94bMtK>S3?u%j&!~uEd?c|x{gjrRh2Lm6%`8` zn?FT0{>LIl-D+!UYa5#@W`UHV)+1mKDbhXnZxWEu2Wk~+v$C*cw3XV_7pfXapYP(! zM>9nx!7W;6W|&4xi~>SJLPqSu5p2pSq9jkBK6QK}DPaS|;TU(eBV;wekybsPfL3k` zj~%)6U)tWDkz*wvaCK($d9l|0EcEgJ#_uPc|8vOe7a+-*LDm@ljKhUsQ0OCOFoeRh zXP?-4*RQ=suKabniwNsIf8qe>9D~7t=nvG(4pcijZfBP5(!C2WbQh=k5*QmBJ93h_ zmoz*z1yfa3)pwS!f9Z0>19|N2En?n>OJ|A-UZpUqJYs!dAD@x6NC#mNIkZktwPBx* zeqT*?(ji^a_G@=IBzs_hcdBl$EQFn{9??0W@Y9r-`#Fvt z^u=_Gy~OZqbXQlxxub>#d|&_<5Kp5=SRERpR&hjrdEDU)g|2oM7Zwz>En)w<-(~w^ z^RdY5v4+O&fkFF>{CqjocRxR(Tvelu&v~IG>J>+L4<9ytuGing9_c(y4GAU~zMM`y z@V+`ne?nw+gKsv@*;(ahFRnU;oz2May%vyr`q;R*=;dXa>?L=1m>1PH`(3>o+ucc? zxD9%<w$QAlfsZTm7Pt3F&ju;y zte4BklPMnH(O>es81N7l7GCK5u;RGUo8A-<$?$x>E3R~DWMeH%(00sVnvSWzSo8ER z-8FO5EHVRw6Q6)rX2Z-7su9Zh%;=W?vRMC~|$)<{jp8?6#Pqwi@GmM9da#%@y3 z;<~_;7gP*Hx zfF47oJjJw23_D9F%UzF(HLIrPm-45fOlK1KPuB zkrP!`*0pFbk;TNtf$U8Hg8(|Z#(P*f!1Qci?G042)3e$B>j+!z6d_77K4 zQPFOPG)}$53wS8cXl619 z*bX$e2HlSR^obNa*3j@U2tFPlH-w4`$<@FFREyl5Yq@0ybgpG`lELHew%n^%tm#FJ z)&2AWkgVL?w!S_xfP6aR_Tb5K+si%;F#EgyUW}@A8=kUNC zUD?;wwYB+$XzAdFhK8<-!V;j9>~J_`im07`SlCVT?nFOe4v?$AK8tT;#`X3VS@eBs zU+zhHWnmFAG^A-eT~D2>ns%)NJy!3`S5R0;4xF|hJ|P=7Hz8p8<{Xt2HGTbwwdj_~ z8asRl@Vrw^KFk2RgR84Wq;SVb$YWDe4j@4e2dnBsBO`40@4qN%EO0afU;}(iOj1%O zx6PY3@ZL|4ZkOv8X&X-1S^!tqc(yG;3>Aa`tr)9AvjbC1?TuIUN$+7)8zHl2hBgDZ zS{v{J{R0F3A~qwILp#yZxX_G^M}>F8@=dpLs+hW&q?VReox}V!5Rcu( zPRhE5h6UghFktO4c_EiyOwKNUg*L|CC!ANii9aiS?1F-KNJ&W(g^&bO)6+{*Z=HjC zw+Vbs*K(l`9XUXY2-?p`0+<0M@#Wh$7^p9djRJW|DX((Tu+=AZ79kzZ zYk=aU2-^jS^$K@>Qs=Zr0h#O1RJf`m8Cls^uU_E+?^>i=?q8Z&@QwY=a`zM96TB}D zbs)_GP3Qj0%jRxwZg~+(8r0O($4d#uWiDI##EjxpIXOAUf6^}_1_oYGQB&{j07C#| zmJsxP&`#4O6R^rqQQJg$JIldRFb+~vQ&}j&hDtJfgfdkp%gf8JkopQk-oL*JphJr(xxBURer=Sp}XfbGl5*jRF3ou+9%K0a28 zFcUkw;=&TD#l=My&_tY^oB-qrAz~5|_-@W+bPNpG_EAw9;9Kd$9R5|Wp!5|K6hI{- zF%fjt#B;-VxO%V%YX-c~d}&24LteZJ4;LV`)J_Yy3Y3WpDqOM=(4f<>KN}R8nedy1cN5 z_=3$4*jBK{Jv#}=bPg%hD0!EVK#M!7ZMy2uw{PE`M{;VRd61^2fxwG;>+#0zOOw&v zzYgn|KUf`P=x9fk)u5n7FN~P(K4PKnBM(2nytz3SzhNDOl9KXj7T&yh z)5x)BVu?(Sm|mC&6yA@ctx0u5!-(W$dQ(%=xvn@q2n5sy6%Eao?Ck7m(f1!dlmmLq z#*&bbm_&RAI}SlX!R9N1Oiu1<8l9M+@9pg!1Iw4J7d#*}5p{K9)mSa7@BLKd)HQTeh0oI4ZEqdpcunBkh_+)Kui>Aa>KS|Q{_xHyra#&hgHrqE{1V=JF_>!Oh z)XKx$+V+7>wQvE7>FmZB)>zL zy?vXSd=fZ#f2kNx+m4mt?d|R9)}k2K*VpH^x1)d`hBW_f58ne8_V-Y}hTG-E-?$l) z?VmBMvMe;=L%S65y49eR0UE69oB{L4Nb%#8aQ$>`> HnE3w(k*&Y` literal 0 HcmV?d00001 diff --git a/master/structnctl_1_1add_l_value_reference__inherit__graph.map b/master/structnctl_1_1add_l_value_reference__inherit__graph.map new file mode 100644 index 0000000000..3248944120 --- /dev/null +++ b/master/structnctl_1_1add_l_value_reference__inherit__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/structnctl_1_1add_l_value_reference__inherit__graph.md5 b/master/structnctl_1_1add_l_value_reference__inherit__graph.md5 new file mode 100644 index 0000000000..b454ff0390 --- /dev/null +++ b/master/structnctl_1_1add_l_value_reference__inherit__graph.md5 @@ -0,0 +1 @@ +bcbd2ad6c3b67b44f3cdc4935435fd55 \ No newline at end of file diff --git a/master/structnctl_1_1add_l_value_reference__inherit__graph.png b/master/structnctl_1_1add_l_value_reference__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..2247162763dc547b4033a33892953151bc185730 GIT binary patch literal 6051 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 HnE3w(k*&Y` literal 0 HcmV?d00001 diff --git a/master/structnctl_1_1add_r_value_reference.html b/master/structnctl_1_1add_r_value_reference.html new file mode 100644 index 0000000000..83193f490c --- /dev/null +++ b/master/structnctl_1_1add_r_value_reference.html @@ -0,0 +1,102 @@ + + + + + + + +nCine: nctl::addRValueReference< T > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::addRValueReference< T > Struct Template Reference
    +
    +
    +
    +Inheritance diagram for nctl::addRValueReference< T >:
    +
    +
    Inheritance graph
    + + + + +
    [legend]
    +
    +Collaboration diagram for nctl::addRValueReference< T >:
    +
    +
    Collaboration graph
    + + + + +
    [legend]
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1add_r_value_reference__coll__graph.map b/master/structnctl_1_1add_r_value_reference__coll__graph.map new file mode 100644 index 0000000000..203938408b --- /dev/null +++ b/master/structnctl_1_1add_r_value_reference__coll__graph.map @@ -0,0 +1,4 @@ + + + + diff --git a/master/structnctl_1_1add_r_value_reference__coll__graph.md5 b/master/structnctl_1_1add_r_value_reference__coll__graph.md5 new file mode 100644 index 0000000000..43af6d732b --- /dev/null +++ b/master/structnctl_1_1add_r_value_reference__coll__graph.md5 @@ -0,0 +1 @@ +b80ca291c99311017a00d52d605b91be \ No newline at end of file diff --git a/master/structnctl_1_1add_r_value_reference__coll__graph.png b/master/structnctl_1_1add_r_value_reference__coll__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..0c91779f32a5a66f1ffcdfe2b3f28119082ba73c GIT binary patch literal 6064 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 + + + diff --git a/master/structnctl_1_1add_r_value_reference__inherit__graph.md5 b/master/structnctl_1_1add_r_value_reference__inherit__graph.md5 new file mode 100644 index 0000000000..43af6d732b --- /dev/null +++ b/master/structnctl_1_1add_r_value_reference__inherit__graph.md5 @@ -0,0 +1 @@ +b80ca291c99311017a00d52d605b91be \ No newline at end of file diff --git a/master/structnctl_1_1add_r_value_reference__inherit__graph.png b/master/structnctl_1_1add_r_value_reference__inherit__graph.png new file mode 100644 index 0000000000000000000000000000000000000000..0c91779f32a5a66f1ffcdfe2b3f28119082ba73c GIT binary patch literal 6064 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 + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::detail::PairImpl< T1, T2, value > Member List
    +
    + + + + + diff --git a/master/structnctl_1_1detail_1_1_pair_impl.html b/master/structnctl_1_1detail_1_1_pair_impl.html new file mode 100644 index 0000000000..e4d784a090 --- /dev/null +++ b/master/structnctl_1_1detail_1_1_pair_impl.html @@ -0,0 +1,124 @@ + + + + + + + +nCine: nctl::detail::PairImpl< T1, T2, value > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::detail::PairImpl< T1, T2, value > Struct Template Reference
    +
    +
    + +

    Simple pair implementation for pointer and deleter. + More...

    + +

    #include <UniquePtr.h>

    + + + + + + + + + + +

    +Public Member Functions

    PairImpl (T1 ff, T2 ss)
     
    PairImpl (const PairImpl &other)
     
    +void invokeSecond (T1 ff)
     
    +void swapSecond (PairImpl &other)
     
    + + + + + +

    +Public Attributes

    +T1 first
     
    +T2 second
     
    +

    Detailed Description

    +

    template<class T1, class T2, bool value>
    +struct nctl::detail::PairImpl< T1, T2, value >

    + +

    Simple pair implementation for pointer and deleter.

    +

    It uses empty base optimization for stateless deleters

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1detail_1_1_pair_impl_3_01_t1_00_01_t2_00_01true_01_4-members.html b/master/structnctl_1_1detail_1_1_pair_impl_3_01_t1_00_01_t2_00_01true_01_4-members.html new file mode 100644 index 0000000000..2b47c22a9d --- /dev/null +++ b/master/structnctl_1_1detail_1_1_pair_impl_3_01_t1_00_01_t2_00_01true_01_4-members.html @@ -0,0 +1,90 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::detail::PairImpl< T1, T2, true > Member List
    +
    +
    + +

    This is the complete list of members for nctl::detail::PairImpl< T1, T2, true >, including all inherited members.

    + + + + + + + +
    first (defined in nctl::detail::PairImpl< T1, T2, true >)nctl::detail::PairImpl< T1, T2, true >
    invokeSecond(T1 ff) (defined in nctl::detail::PairImpl< T1, T2, true >)nctl::detail::PairImpl< T1, T2, true >inline
    PairImpl(T1 ff) (defined in nctl::detail::PairImpl< T1, T2, true >)nctl::detail::PairImpl< T1, T2, true >inlineexplicit
    PairImpl(T1 ff, T2 ss) (defined in nctl::detail::PairImpl< T1, T2, true >)nctl::detail::PairImpl< T1, T2, true >inline
    PairImpl(const PairImpl &other) (defined in nctl::detail::PairImpl< T1, T2, true >)nctl::detail::PairImpl< T1, T2, true >inline
    swapSecond(PairImpl &other) (defined in nctl::detail::PairImpl< T1, T2, true >)nctl::detail::PairImpl< T1, T2, true >inline
    + + + + diff --git a/master/structnctl_1_1detail_1_1_pair_impl_3_01_t1_00_01_t2_00_01true_01_4.html b/master/structnctl_1_1detail_1_1_pair_impl_3_01_t1_00_01_t2_00_01true_01_4.html new file mode 100644 index 0000000000..87ce6ef42a --- /dev/null +++ b/master/structnctl_1_1detail_1_1_pair_impl_3_01_t1_00_01_t2_00_01true_01_4.html @@ -0,0 +1,123 @@ + + + + + + + +nCine: nctl::detail::PairImpl< T1, T2, true > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::detail::PairImpl< T1, T2, true > Struct Template Reference
    +
    +
    + +

    Specialization for empty second type. + More...

    + +

    #include <UniquePtr.h>

    + + + + + + + + + + + + +

    +Public Member Functions

    PairImpl (T1 ff)
     
    PairImpl (T1 ff, T2 ss)
     
    PairImpl (const PairImpl &other)
     
    +void invokeSecond (T1 ff)
     
    +void swapSecond (PairImpl &other)
     
    + + + +

    +Public Attributes

    +T1 first
     
    +

    Detailed Description

    +

    template<class T1, class T2>
    +struct nctl::detail::PairImpl< T1, T2, true >

    + +

    Specialization for empty second type.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1detail_1_1alloc_helpers-members.html b/master/structnctl_1_1detail_1_1alloc_helpers-members.html new file mode 100644 index 0000000000..c3377eb008 --- /dev/null +++ b/master/structnctl_1_1detail_1_1alloc_helpers-members.html @@ -0,0 +1,88 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::detail::allocHelpers< value > Member List
    +
    +
    + +

    This is the complete list of members for nctl::detail::allocHelpers< value >, including all inherited members.

    + + + + + +
    deleteArray(IAllocator &alloc, T *ptr) (defined in nctl::detail::allocHelpers< value >)nctl::detail::allocHelpers< value >inlinestatic
    deleteObject(IAllocator &alloc, T *ptr) (defined in nctl::detail::allocHelpers< value >)nctl::detail::allocHelpers< value >inlinestatic
    newArray(IAllocator &alloc, size_t numElements) (defined in nctl::detail::allocHelpers< value >)nctl::detail::allocHelpers< value >inlinestatic
    newObject(IAllocator &alloc, Args &&... args) (defined in nctl::detail::allocHelpers< value >)nctl::detail::allocHelpers< value >inlinestatic
    + + + + diff --git a/master/structnctl_1_1detail_1_1alloc_helpers.html b/master/structnctl_1_1detail_1_1alloc_helpers.html new file mode 100644 index 0000000000..d1b5bfc44e --- /dev/null +++ b/master/structnctl_1_1detail_1_1alloc_helpers.html @@ -0,0 +1,117 @@ + + + + + + + +nCine: nctl::detail::allocHelpers< value > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::detail::allocHelpers< value > Struct Template Reference
    +
    +
    + +

    A container for functions to allocate and construct objects and arrays of objects. + More...

    + +

    #include <IAllocator.h>

    + + + + + + + + + + + + + + +

    +Static Public Member Functions

    +template<class T , typename... Args>
    static T * newObject (IAllocator &alloc, Args &&... args)
     
    +template<class T >
    static void deleteObject (IAllocator &alloc, T *ptr)
     
    +template<class T >
    static T * newArray (IAllocator &alloc, size_t numElements)
     
    +template<class T >
    static void deleteArray (IAllocator &alloc, T *ptr)
     
    +

    Detailed Description

    +

    template<bool value>
    +struct nctl::detail::allocHelpers< value >

    + +

    A container for functions to allocate and construct objects and arrays of objects.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1detail_1_1alloc_helpers_3_01true_01_4-members.html b/master/structnctl_1_1detail_1_1alloc_helpers_3_01true_01_4-members.html new file mode 100644 index 0000000000..ea8b8ac633 --- /dev/null +++ b/master/structnctl_1_1detail_1_1alloc_helpers_3_01true_01_4-members.html @@ -0,0 +1,88 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::detail::allocHelpers< true > Member List
    +
    +
    + +

    This is the complete list of members for nctl::detail::allocHelpers< true >, including all inherited members.

    + + + + + +
    deleteArray(IAllocator &alloc, T *ptr) (defined in nctl::detail::allocHelpers< true >)nctl::detail::allocHelpers< true >inlinestatic
    deleteObject(IAllocator &alloc, T *ptr) (defined in nctl::detail::allocHelpers< true >)nctl::detail::allocHelpers< true >inlinestatic
    newArray(IAllocator &alloc, size_t numElements) (defined in nctl::detail::allocHelpers< true >)nctl::detail::allocHelpers< true >inlinestatic
    newObject(IAllocator &alloc, Args &&... args) (defined in nctl::detail::allocHelpers< true >)nctl::detail::allocHelpers< true >inlinestatic
    + + + + diff --git a/master/structnctl_1_1detail_1_1alloc_helpers_3_01true_01_4.html b/master/structnctl_1_1detail_1_1alloc_helpers_3_01true_01_4.html new file mode 100644 index 0000000000..e009e0bf23 --- /dev/null +++ b/master/structnctl_1_1detail_1_1alloc_helpers_3_01true_01_4.html @@ -0,0 +1,114 @@ + + + + + + + +nCine: nctl::detail::allocHelpers< true > Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::detail::allocHelpers< true > Struct Reference
    +
    +
    + +

    Specialization for trivially constructible and destructible types. + More...

    + +

    #include <IAllocator.h>

    + + + + + + + + + + + + + + +

    +Static Public Member Functions

    +template<class T , typename... Args>
    static T * newObject (IAllocator &alloc, Args &&... args)
     
    +template<class T >
    static void deleteObject (IAllocator &alloc, T *ptr)
     
    +template<class T >
    static T * newArray (IAllocator &alloc, size_t numElements)
     
    +template<class T >
    static void deleteArray (IAllocator &alloc, T *ptr)
     
    +

    Detailed Description

    +

    Specialization for trivially constructible and destructible types.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1detail_1_1construct_helpers-members.html b/master/structnctl_1_1detail_1_1construct_helpers-members.html new file mode 100644 index 0000000000..ca429ab971 --- /dev/null +++ b/master/structnctl_1_1detail_1_1construct_helpers-members.html @@ -0,0 +1,88 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::detail::constructHelpers< value > Member List
    +
    +
    + +

    This is the complete list of members for nctl::detail::constructHelpers< value >, including all inherited members.

    + + + + + +
    constructArray(T *ptr, unsigned int numElements) (defined in nctl::detail::constructHelpers< value >)nctl::detail::constructHelpers< value >inlinestatic
    constructObject(T *ptr) (defined in nctl::detail::constructHelpers< value >)nctl::detail::constructHelpers< value >inlinestatic
    copyConstructArray(T *dest, const T *src, unsigned int numElements) (defined in nctl::detail::constructHelpers< value >)nctl::detail::constructHelpers< value >inlinestatic
    moveConstructArray(T *dest, T *src, unsigned int numElements) (defined in nctl::detail::constructHelpers< value >)nctl::detail::constructHelpers< value >inlinestatic
    + + + + diff --git a/master/structnctl_1_1detail_1_1construct_helpers.html b/master/structnctl_1_1detail_1_1construct_helpers.html new file mode 100644 index 0000000000..acd22fe7a1 --- /dev/null +++ b/master/structnctl_1_1detail_1_1construct_helpers.html @@ -0,0 +1,117 @@ + + + + + + + +nCine: nctl::detail::constructHelpers< value > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::detail::constructHelpers< value > Struct Template Reference
    +
    +
    + +

    A container for functions to construct objects and arrays of objects. + More...

    + +

    #include <utility.h>

    + + + + + + + + + + + + + + +

    +Static Public Member Functions

    +template<class T >
    static void constructObject (T *ptr)
     
    +template<class T >
    static void constructArray (T *ptr, unsigned int numElements)
     
    +template<class T >
    static void copyConstructArray (T *dest, const T *src, unsigned int numElements)
     
    +template<class T >
    static void moveConstructArray (T *dest, T *src, unsigned int numElements)
     
    +

    Detailed Description

    +

    template<bool value>
    +struct nctl::detail::constructHelpers< value >

    + +

    A container for functions to construct objects and arrays of objects.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1detail_1_1construct_helpers_3_01true_01_4-members.html b/master/structnctl_1_1detail_1_1construct_helpers_3_01true_01_4-members.html new file mode 100644 index 0000000000..6947994871 --- /dev/null +++ b/master/structnctl_1_1detail_1_1construct_helpers_3_01true_01_4-members.html @@ -0,0 +1,88 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::detail::constructHelpers< true > Member List
    +
    +
    + +

    This is the complete list of members for nctl::detail::constructHelpers< true >, including all inherited members.

    + + + + + +
    constructArray(T *ptr, unsigned int numElements) (defined in nctl::detail::constructHelpers< true >)nctl::detail::constructHelpers< true >inlinestatic
    constructObject(T *ptr) (defined in nctl::detail::constructHelpers< true >)nctl::detail::constructHelpers< true >inlinestatic
    copyConstructArray(T *dest, const T *src, unsigned int numElements) (defined in nctl::detail::constructHelpers< true >)nctl::detail::constructHelpers< true >inlinestatic
    moveConstructArray(T *dest, T *src, unsigned int numElements) (defined in nctl::detail::constructHelpers< true >)nctl::detail::constructHelpers< true >inlinestatic
    + + + + diff --git a/master/structnctl_1_1detail_1_1construct_helpers_3_01true_01_4.html b/master/structnctl_1_1detail_1_1construct_helpers_3_01true_01_4.html new file mode 100644 index 0000000000..e17acb161b --- /dev/null +++ b/master/structnctl_1_1detail_1_1construct_helpers_3_01true_01_4.html @@ -0,0 +1,114 @@ + + + + + + + +nCine: nctl::detail::constructHelpers< true > Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::detail::constructHelpers< true > Struct Reference
    +
    +
    + +

    Specialization for trivially constructible types. + More...

    + +

    #include <utility.h>

    + + + + + + + + + + + + + + +

    +Static Public Member Functions

    +template<class T >
    static void constructObject (T *ptr)
     
    +template<class T >
    static void constructArray (T *ptr, unsigned int numElements)
     
    +template<class T >
    static void copyConstructArray (T *dest, const T *src, unsigned int numElements)
     
    +template<class T >
    static void moveConstructArray (T *dest, T *src, unsigned int numElements)
     
    +

    Detailed Description

    +

    Specialization for trivially constructible types.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1detail_1_1copy_helpers-members.html b/master/structnctl_1_1detail_1_1copy_helpers-members.html new file mode 100644 index 0000000000..e1023fc727 --- /dev/null +++ b/master/structnctl_1_1detail_1_1copy_helpers-members.html @@ -0,0 +1,86 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::detail::copyHelpers< value > Member List
    +
    +
    + +

    This is the complete list of members for nctl::detail::copyHelpers< value >, including all inherited members.

    + + + +
    copyAssignArray(T *dest, const T *src, unsigned int numElements) (defined in nctl::detail::copyHelpers< value >)nctl::detail::copyHelpers< value >inlinestatic
    moveAssignArray(T *dest, T *src, unsigned int numElements) (defined in nctl::detail::copyHelpers< value >)nctl::detail::copyHelpers< value >inlinestatic
    + + + + diff --git a/master/structnctl_1_1detail_1_1copy_helpers.html b/master/structnctl_1_1detail_1_1copy_helpers.html new file mode 100644 index 0000000000..b65f67299b --- /dev/null +++ b/master/structnctl_1_1detail_1_1copy_helpers.html @@ -0,0 +1,109 @@ + + + + + + + +nCine: nctl::detail::copyHelpers< value > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::detail::copyHelpers< value > Struct Template Reference
    +
    +
    + +

    A container for functions to copy arrays of objects. + More...

    + +

    #include <utility.h>

    + + + + + + + + +

    +Static Public Member Functions

    +template<class T >
    static void copyAssignArray (T *dest, const T *src, unsigned int numElements)
     
    +template<class T >
    static void moveAssignArray (T *dest, T *src, unsigned int numElements)
     
    +

    Detailed Description

    +

    template<bool value>
    +struct nctl::detail::copyHelpers< value >

    + +

    A container for functions to copy arrays of objects.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1detail_1_1copy_helpers_3_01true_01_4-members.html b/master/structnctl_1_1detail_1_1copy_helpers_3_01true_01_4-members.html new file mode 100644 index 0000000000..88c877a939 --- /dev/null +++ b/master/structnctl_1_1detail_1_1copy_helpers_3_01true_01_4-members.html @@ -0,0 +1,86 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::detail::copyHelpers< true > Member List
    +
    +
    + +

    This is the complete list of members for nctl::detail::copyHelpers< true >, including all inherited members.

    + + + +
    copyAssignArray(T *dest, const T *src, unsigned int numElements) (defined in nctl::detail::copyHelpers< true >)nctl::detail::copyHelpers< true >inlinestatic
    moveAssignArray(T *dest, T *src, unsigned int numElements) (defined in nctl::detail::copyHelpers< true >)nctl::detail::copyHelpers< true >inlinestatic
    + + + + diff --git a/master/structnctl_1_1detail_1_1copy_helpers_3_01true_01_4.html b/master/structnctl_1_1detail_1_1copy_helpers_3_01true_01_4.html new file mode 100644 index 0000000000..c18358d3c8 --- /dev/null +++ b/master/structnctl_1_1detail_1_1copy_helpers_3_01true_01_4.html @@ -0,0 +1,106 @@ + + + + + + + +nCine: nctl::detail::copyHelpers< true > Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::detail::copyHelpers< true > Struct Reference
    +
    +
    + +

    Specialization for trivially copyable types. + More...

    + +

    #include <utility.h>

    + + + + + + + + +

    +Static Public Member Functions

    +template<class T >
    static void copyAssignArray (T *dest, const T *src, unsigned int numElements)
     
    +template<class T >
    static void moveAssignArray (T *dest, T *src, unsigned int numElements)
     
    +

    Detailed Description

    +

    Specialization for trivially copyable types.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1detail_1_1destruct_helpers-members.html b/master/structnctl_1_1detail_1_1destruct_helpers-members.html new file mode 100644 index 0000000000..f48fb4789d --- /dev/null +++ b/master/structnctl_1_1detail_1_1destruct_helpers-members.html @@ -0,0 +1,86 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::detail::destructHelpers< value > Member List
    +
    +
    + +

    This is the complete list of members for nctl::detail::destructHelpers< value >, including all inherited members.

    + + + +
    destructArray(T *ptr, unsigned int numElements) (defined in nctl::detail::destructHelpers< value >)nctl::detail::destructHelpers< value >inlinestatic
    destructObject(T *ptr) (defined in nctl::detail::destructHelpers< value >)nctl::detail::destructHelpers< value >inlinestatic
    + + + + diff --git a/master/structnctl_1_1detail_1_1destruct_helpers.html b/master/structnctl_1_1detail_1_1destruct_helpers.html new file mode 100644 index 0000000000..bf42fa4035 --- /dev/null +++ b/master/structnctl_1_1detail_1_1destruct_helpers.html @@ -0,0 +1,109 @@ + + + + + + + +nCine: nctl::detail::destructHelpers< value > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::detail::destructHelpers< value > Struct Template Reference
    +
    +
    + +

    A container for functions to destruct objects and arrays of objects. + More...

    + +

    #include <utility.h>

    + + + + + + + + +

    +Static Public Member Functions

    +template<class T >
    static void destructObject (T *ptr)
     
    +template<class T >
    static void destructArray (T *ptr, unsigned int numElements)
     
    +

    Detailed Description

    +

    template<bool value>
    +struct nctl::detail::destructHelpers< value >

    + +

    A container for functions to destruct objects and arrays of objects.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1detail_1_1destruct_helpers_3_01true_01_4-members.html b/master/structnctl_1_1detail_1_1destruct_helpers_3_01true_01_4-members.html new file mode 100644 index 0000000000..05fdc41eb2 --- /dev/null +++ b/master/structnctl_1_1detail_1_1destruct_helpers_3_01true_01_4-members.html @@ -0,0 +1,86 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::detail::destructHelpers< true > Member List
    +
    +
    + +

    This is the complete list of members for nctl::detail::destructHelpers< true >, including all inherited members.

    + + + +
    destructArray(T *ptr, unsigned int numElements) (defined in nctl::detail::destructHelpers< true >)nctl::detail::destructHelpers< true >inlinestatic
    destructObject(T *ptr) (defined in nctl::detail::destructHelpers< true >)nctl::detail::destructHelpers< true >inlinestatic
    + + + + diff --git a/master/structnctl_1_1detail_1_1destruct_helpers_3_01true_01_4.html b/master/structnctl_1_1detail_1_1destruct_helpers_3_01true_01_4.html new file mode 100644 index 0000000000..d6e2098cb6 --- /dev/null +++ b/master/structnctl_1_1detail_1_1destruct_helpers_3_01true_01_4.html @@ -0,0 +1,106 @@ + + + + + + + +nCine: nctl::detail::destructHelpers< true > Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::detail::destructHelpers< true > Struct Reference
    +
    +
    + +

    Specialization for trivially destructible types. + More...

    + +

    #include <utility.h>

    + + + + + + + + +

    +Static Public Member Functions

    +template<class T >
    static void destructObject (T *ptr)
     
    +template<class T >
    static void destructArray (T *ptr, unsigned int numElements)
     
    +

    Detailed Description

    +

    Specialization for trivially destructible types.

    +

    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1detail_1_1type_identity-members.html b/master/structnctl_1_1detail_1_1type_identity-members.html new file mode 100644 index 0000000000..ae0084ed0c --- /dev/null +++ b/master/structnctl_1_1detail_1_1type_identity-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::detail::typeIdentity< T > Member List
    +
    +
    + +

    This is the complete list of members for nctl::detail::typeIdentity< T >, including all inherited members.

    + + +
    type typedef (defined in nctl::detail::typeIdentity< T >)nctl::detail::typeIdentity< T >
    + + + + diff --git a/master/structnctl_1_1detail_1_1type_identity.html b/master/structnctl_1_1detail_1_1type_identity.html new file mode 100644 index 0000000000..253530bceb --- /dev/null +++ b/master/structnctl_1_1detail_1_1type_identity.html @@ -0,0 +1,94 @@ + + + + + + + +nCine: nctl::detail::typeIdentity< T > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::detail::typeIdentity< T > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    +using type = T
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1detail_1_1void_type-members.html b/master/structnctl_1_1detail_1_1void_type-members.html new file mode 100644 index 0000000000..d945eaa887 --- /dev/null +++ b/master/structnctl_1_1detail_1_1void_type-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::detail::voidType< class > Member List
    +
    +
    + +

    This is the complete list of members for nctl::detail::voidType< class >, including all inherited members.

    + + +
    type typedef (defined in nctl::detail::voidType< class >)nctl::detail::voidType< class >
    + + + + diff --git a/master/structnctl_1_1detail_1_1void_type.html b/master/structnctl_1_1detail_1_1void_type.html new file mode 100644 index 0000000000..4ab694c772 --- /dev/null +++ b/master/structnctl_1_1detail_1_1void_type.html @@ -0,0 +1,94 @@ + + + + + + + +nCine: nctl::detail::voidType< class > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::detail::voidType< class > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    +typedef void type
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1is_class-members.html b/master/structnctl_1_1is_class-members.html new file mode 100644 index 0000000000..c36d117698 --- /dev/null +++ b/master/structnctl_1_1is_class-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::isClass< T, typename > Member List
    +
    +
    + +

    This is the complete list of members for nctl::isClass< T, typename >, including all inherited members.

    + + +
    value (defined in nctl::isClass< T, typename >)nctl::isClass< T, typename >static
    + + + + diff --git a/master/structnctl_1_1is_class.html b/master/structnctl_1_1is_class.html new file mode 100644 index 0000000000..93e14ddaef --- /dev/null +++ b/master/structnctl_1_1is_class.html @@ -0,0 +1,94 @@ + + + + + + + +nCine: nctl::isClass< T, typename > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::isClass< T, typename > Struct Template Reference
    +
    +
    + + + + +

    +Static Public Attributes

    +static constexpr bool value = false
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1is_class_3_01_t_00_01typename_01detail_1_1void_type_3_01int_01_t_1_1_5_01_4_1_1type_01_4-members.html b/master/structnctl_1_1is_class_3_01_t_00_01typename_01detail_1_1void_type_3_01int_01_t_1_1_5_01_4_1_1type_01_4-members.html new file mode 100644 index 0000000000..69aee6de0e --- /dev/null +++ b/master/structnctl_1_1is_class_3_01_t_00_01typename_01detail_1_1void_type_3_01int_01_t_1_1_5_01_4_1_1type_01_4-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::isClass< T, typename detail::voidType< int T::* >::type > Member List
    +
    + + + + + diff --git a/master/structnctl_1_1is_class_3_01_t_00_01typename_01detail_1_1void_type_3_01int_01_t_1_1_5_01_4_1_1type_01_4.html b/master/structnctl_1_1is_class_3_01_t_00_01typename_01detail_1_1void_type_3_01int_01_t_1_1_5_01_4_1_1type_01_4.html new file mode 100644 index 0000000000..a27f2e843e --- /dev/null +++ b/master/structnctl_1_1is_class_3_01_t_00_01typename_01detail_1_1void_type_3_01int_01_t_1_1_5_01_4_1_1type_01_4.html @@ -0,0 +1,94 @@ + + + + + + + +nCine: nctl::isClass< T, typename detail::voidType< int T::* >::type > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::isClass< T, typename detail::voidType< int T::* >::type > Struct Template Reference
    +
    +
    + + + + +

    +Static Public Attributes

    +static constexpr bool value = (true && !__is_union(T))
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1is_destructible-members.html b/master/structnctl_1_1is_destructible-members.html new file mode 100644 index 0000000000..c061a85db8 --- /dev/null +++ b/master/structnctl_1_1is_destructible-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::isDestructible< T, typename > Member List
    +
    +
    + +

    This is the complete list of members for nctl::isDestructible< T, typename >, including all inherited members.

    + + +
    value (defined in nctl::isDestructible< T, typename >)nctl::isDestructible< T, typename >static
    + + + + diff --git a/master/structnctl_1_1is_destructible.html b/master/structnctl_1_1is_destructible.html new file mode 100644 index 0000000000..d68f327a9d --- /dev/null +++ b/master/structnctl_1_1is_destructible.html @@ -0,0 +1,94 @@ + + + + + + + +nCine: nctl::isDestructible< T, typename > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::isDestructible< T, typename > Struct Template Reference
    +
    +
    + + + + +

    +Static Public Attributes

    +static constexpr bool value = false
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1is_destructible_3_01_t_00_01decltype_07decl_val_3_01_t_01_6_01_4_07_08_8~_t_07_08_08_4-members.html b/master/structnctl_1_1is_destructible_3_01_t_00_01decltype_07decl_val_3_01_t_01_6_01_4_07_08_8~_t_07_08_08_4-members.html new file mode 100644 index 0000000000..f23b8bdae9 --- /dev/null +++ b/master/structnctl_1_1is_destructible_3_01_t_00_01decltype_07decl_val_3_01_t_01_6_01_4_07_08_8~_t_07_08_08_4-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::isDestructible< T, decltype(declVal< T & >().~T())> Member List
    +
    + + + + + diff --git a/master/structnctl_1_1is_destructible_3_01_t_00_01decltype_07decl_val_3_01_t_01_6_01_4_07_08_8~_t_07_08_08_4.html b/master/structnctl_1_1is_destructible_3_01_t_00_01decltype_07decl_val_3_01_t_01_6_01_4_07_08_8~_t_07_08_08_4.html new file mode 100644 index 0000000000..7cdded1b79 --- /dev/null +++ b/master/structnctl_1_1is_destructible_3_01_t_00_01decltype_07decl_val_3_01_t_01_6_01_4_07_08_8~_t_07_08_08_4.html @@ -0,0 +1,94 @@ + + + + + + + +nCine: nctl::isDestructible< T, decltype(declVal< T & >().~T())> Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::isDestructible< T, decltype(declVal< T & >().~T())> Struct Template Reference
    +
    +
    + + + + +

    +Static Public Attributes

    +static constexpr bool value = (true && !__is_union(T))
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1is_empty-members.html b/master/structnctl_1_1is_empty-members.html new file mode 100644 index 0000000000..3e87bf51d8 --- /dev/null +++ b/master/structnctl_1_1is_empty-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::isEmpty< T > Member List
    +
    +
    + +

    This is the complete list of members for nctl::isEmpty< T >, including all inherited members.

    + + +
    value (defined in nctl::isEmpty< T >)nctl::isEmpty< T >static
    + + + + diff --git a/master/structnctl_1_1is_empty.html b/master/structnctl_1_1is_empty.html new file mode 100644 index 0000000000..b481ee7517 --- /dev/null +++ b/master/structnctl_1_1is_empty.html @@ -0,0 +1,94 @@ + + + + + + + +nCine: nctl::isEmpty< T > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::isEmpty< T > Struct Template Reference
    +
    +
    + + + + +

    +Static Public Attributes

    +static constexpr bool value = __is_empty(T)
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1is_integral-members.html b/master/structnctl_1_1is_integral-members.html new file mode 100644 index 0000000000..c63ee3b2ff --- /dev/null +++ b/master/structnctl_1_1is_integral-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::isIntegral< T > Member List
    +
    +
    + +

    This is the complete list of members for nctl::isIntegral< T >, including all inherited members.

    + + +
    value (defined in nctl::isIntegral< T >)nctl::isIntegral< T >static
    + + + + diff --git a/master/structnctl_1_1is_integral.html b/master/structnctl_1_1is_integral.html new file mode 100644 index 0000000000..6a1e3c8e8d --- /dev/null +++ b/master/structnctl_1_1is_integral.html @@ -0,0 +1,94 @@ + + + + + + + +nCine: nctl::isIntegral< T > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::isIntegral< T > Struct Template Reference
    +
    +
    + + + + +

    +Static Public Attributes

    +static constexpr bool value = false
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1is_integral_3_01bool_01_4-members.html b/master/structnctl_1_1is_integral_3_01bool_01_4-members.html new file mode 100644 index 0000000000..9e17a1c831 --- /dev/null +++ b/master/structnctl_1_1is_integral_3_01bool_01_4-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::isIntegral< bool > Member List
    +
    +
    + +

    This is the complete list of members for nctl::isIntegral< bool >, including all inherited members.

    + + +
    value (defined in nctl::isIntegral< bool >)nctl::isIntegral< bool >static
    + + + + diff --git a/master/structnctl_1_1is_integral_3_01bool_01_4.html b/master/structnctl_1_1is_integral_3_01bool_01_4.html new file mode 100644 index 0000000000..7f1b49697c --- /dev/null +++ b/master/structnctl_1_1is_integral_3_01bool_01_4.html @@ -0,0 +1,94 @@ + + + + + + + +nCine: nctl::isIntegral< bool > Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::isIntegral< bool > Struct Reference
    +
    +
    + + + + +

    +Static Public Attributes

    +static constexpr bool value = true
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1is_integral_3_01char_01_4-members.html b/master/structnctl_1_1is_integral_3_01char_01_4-members.html new file mode 100644 index 0000000000..016a6d52a7 --- /dev/null +++ b/master/structnctl_1_1is_integral_3_01char_01_4-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::isIntegral< char > Member List
    +
    +
    + +

    This is the complete list of members for nctl::isIntegral< char >, including all inherited members.

    + + +
    value (defined in nctl::isIntegral< char >)nctl::isIntegral< char >static
    + + + + diff --git a/master/structnctl_1_1is_integral_3_01char_01_4.html b/master/structnctl_1_1is_integral_3_01char_01_4.html new file mode 100644 index 0000000000..0124fa67af --- /dev/null +++ b/master/structnctl_1_1is_integral_3_01char_01_4.html @@ -0,0 +1,94 @@ + + + + + + + +nCine: nctl::isIntegral< char > Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::isIntegral< char > Struct Reference
    +
    +
    + + + + +

    +Static Public Attributes

    +static constexpr bool value = true
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1is_integral_3_01int_01_4-members.html b/master/structnctl_1_1is_integral_3_01int_01_4-members.html new file mode 100644 index 0000000000..5c7c05c95d --- /dev/null +++ b/master/structnctl_1_1is_integral_3_01int_01_4-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::isIntegral< int > Member List
    +
    +
    + +

    This is the complete list of members for nctl::isIntegral< int >, including all inherited members.

    + + +
    value (defined in nctl::isIntegral< int >)nctl::isIntegral< int >static
    + + + + diff --git a/master/structnctl_1_1is_integral_3_01int_01_4.html b/master/structnctl_1_1is_integral_3_01int_01_4.html new file mode 100644 index 0000000000..d0c663f285 --- /dev/null +++ b/master/structnctl_1_1is_integral_3_01int_01_4.html @@ -0,0 +1,94 @@ + + + + + + + +nCine: nctl::isIntegral< int > Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::isIntegral< int > Struct Reference
    +
    +
    + + + + +

    +Static Public Attributes

    +static constexpr bool value = true
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1is_integral_3_01long_01_4-members.html b/master/structnctl_1_1is_integral_3_01long_01_4-members.html new file mode 100644 index 0000000000..699575d24c --- /dev/null +++ b/master/structnctl_1_1is_integral_3_01long_01_4-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::isIntegral< long > Member List
    +
    +
    + +

    This is the complete list of members for nctl::isIntegral< long >, including all inherited members.

    + + +
    value (defined in nctl::isIntegral< long >)nctl::isIntegral< long >static
    + + + + diff --git a/master/structnctl_1_1is_integral_3_01long_01_4.html b/master/structnctl_1_1is_integral_3_01long_01_4.html new file mode 100644 index 0000000000..4b6cd61340 --- /dev/null +++ b/master/structnctl_1_1is_integral_3_01long_01_4.html @@ -0,0 +1,94 @@ + + + + + + + +nCine: nctl::isIntegral< long > Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::isIntegral< long > Struct Reference
    +
    +
    + + + + +

    +Static Public Attributes

    +static constexpr bool value = true
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1is_integral_3_01long_01long_01_4-members.html b/master/structnctl_1_1is_integral_3_01long_01long_01_4-members.html new file mode 100644 index 0000000000..149019ea53 --- /dev/null +++ b/master/structnctl_1_1is_integral_3_01long_01long_01_4-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::isIntegral< long long > Member List
    +
    +
    + +

    This is the complete list of members for nctl::isIntegral< long long >, including all inherited members.

    + + +
    value (defined in nctl::isIntegral< long long >)nctl::isIntegral< long long >static
    + + + + diff --git a/master/structnctl_1_1is_integral_3_01long_01long_01_4.html b/master/structnctl_1_1is_integral_3_01long_01long_01_4.html new file mode 100644 index 0000000000..26ae3c63e7 --- /dev/null +++ b/master/structnctl_1_1is_integral_3_01long_01long_01_4.html @@ -0,0 +1,94 @@ + + + + + + + +nCine: nctl::isIntegral< long long > Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::isIntegral< long long > Struct Reference
    +
    +
    + + + + +

    +Static Public Attributes

    +static constexpr bool value = true
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1is_integral_3_01short_01int_01_4-members.html b/master/structnctl_1_1is_integral_3_01short_01int_01_4-members.html new file mode 100644 index 0000000000..c98265a649 --- /dev/null +++ b/master/structnctl_1_1is_integral_3_01short_01int_01_4-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::isIntegral< short int > Member List
    +
    +
    + +

    This is the complete list of members for nctl::isIntegral< short int >, including all inherited members.

    + + +
    value (defined in nctl::isIntegral< short int >)nctl::isIntegral< short int >static
    + + + + diff --git a/master/structnctl_1_1is_integral_3_01short_01int_01_4.html b/master/structnctl_1_1is_integral_3_01short_01int_01_4.html new file mode 100644 index 0000000000..af36623b84 --- /dev/null +++ b/master/structnctl_1_1is_integral_3_01short_01int_01_4.html @@ -0,0 +1,94 @@ + + + + + + + +nCine: nctl::isIntegral< short int > Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::isIntegral< short int > Struct Reference
    +
    +
    + + + + +

    +Static Public Attributes

    +static constexpr bool value = true
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1is_integral_3_01unsigned_01char_01_4-members.html b/master/structnctl_1_1is_integral_3_01unsigned_01char_01_4-members.html new file mode 100644 index 0000000000..8b569d537a --- /dev/null +++ b/master/structnctl_1_1is_integral_3_01unsigned_01char_01_4-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::isIntegral< unsigned char > Member List
    +
    +
    + +

    This is the complete list of members for nctl::isIntegral< unsigned char >, including all inherited members.

    + + +
    value (defined in nctl::isIntegral< unsigned char >)nctl::isIntegral< unsigned char >static
    + + + + diff --git a/master/structnctl_1_1is_integral_3_01unsigned_01char_01_4.html b/master/structnctl_1_1is_integral_3_01unsigned_01char_01_4.html new file mode 100644 index 0000000000..10ef7a675b --- /dev/null +++ b/master/structnctl_1_1is_integral_3_01unsigned_01char_01_4.html @@ -0,0 +1,94 @@ + + + + + + + +nCine: nctl::isIntegral< unsigned char > Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::isIntegral< unsigned char > Struct Reference
    +
    +
    + + + + +

    +Static Public Attributes

    +static constexpr bool value = true
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1is_integral_3_01unsigned_01int_01_4-members.html b/master/structnctl_1_1is_integral_3_01unsigned_01int_01_4-members.html new file mode 100644 index 0000000000..45b0696bd3 --- /dev/null +++ b/master/structnctl_1_1is_integral_3_01unsigned_01int_01_4-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::isIntegral< unsigned int > Member List
    +
    +
    + +

    This is the complete list of members for nctl::isIntegral< unsigned int >, including all inherited members.

    + + +
    value (defined in nctl::isIntegral< unsigned int >)nctl::isIntegral< unsigned int >static
    + + + + diff --git a/master/structnctl_1_1is_integral_3_01unsigned_01int_01_4.html b/master/structnctl_1_1is_integral_3_01unsigned_01int_01_4.html new file mode 100644 index 0000000000..dacfc9103d --- /dev/null +++ b/master/structnctl_1_1is_integral_3_01unsigned_01int_01_4.html @@ -0,0 +1,94 @@ + + + + + + + +nCine: nctl::isIntegral< unsigned int > Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::isIntegral< unsigned int > Struct Reference
    +
    +
    + + + + +

    +Static Public Attributes

    +static constexpr bool value = true
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1is_integral_3_01unsigned_01long_01_4-members.html b/master/structnctl_1_1is_integral_3_01unsigned_01long_01_4-members.html new file mode 100644 index 0000000000..81b922619b --- /dev/null +++ b/master/structnctl_1_1is_integral_3_01unsigned_01long_01_4-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::isIntegral< unsigned long > Member List
    +
    +
    + +

    This is the complete list of members for nctl::isIntegral< unsigned long >, including all inherited members.

    + + +
    value (defined in nctl::isIntegral< unsigned long >)nctl::isIntegral< unsigned long >static
    + + + + diff --git a/master/structnctl_1_1is_integral_3_01unsigned_01long_01_4.html b/master/structnctl_1_1is_integral_3_01unsigned_01long_01_4.html new file mode 100644 index 0000000000..6af27d64cf --- /dev/null +++ b/master/structnctl_1_1is_integral_3_01unsigned_01long_01_4.html @@ -0,0 +1,94 @@ + + + + + + + +nCine: nctl::isIntegral< unsigned long > Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::isIntegral< unsigned long > Struct Reference
    +
    +
    + + + + +

    +Static Public Attributes

    +static constexpr bool value = true
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1is_integral_3_01unsigned_01long_01long_01_4-members.html b/master/structnctl_1_1is_integral_3_01unsigned_01long_01long_01_4-members.html new file mode 100644 index 0000000000..282d9dcd6e --- /dev/null +++ b/master/structnctl_1_1is_integral_3_01unsigned_01long_01long_01_4-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::isIntegral< unsigned long long > Member List
    +
    +
    + +

    This is the complete list of members for nctl::isIntegral< unsigned long long >, including all inherited members.

    + + +
    value (defined in nctl::isIntegral< unsigned long long >)nctl::isIntegral< unsigned long long >static
    + + + + diff --git a/master/structnctl_1_1is_integral_3_01unsigned_01long_01long_01_4.html b/master/structnctl_1_1is_integral_3_01unsigned_01long_01long_01_4.html new file mode 100644 index 0000000000..6daf5ac3cb --- /dev/null +++ b/master/structnctl_1_1is_integral_3_01unsigned_01long_01long_01_4.html @@ -0,0 +1,94 @@ + + + + + + + +nCine: nctl::isIntegral< unsigned long long > Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::isIntegral< unsigned long long > Struct Reference
    +
    +
    + + + + +

    +Static Public Attributes

    +static constexpr bool value = true
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1is_integral_3_01unsigned_01short_01int_01_4-members.html b/master/structnctl_1_1is_integral_3_01unsigned_01short_01int_01_4-members.html new file mode 100644 index 0000000000..b2ab1e1680 --- /dev/null +++ b/master/structnctl_1_1is_integral_3_01unsigned_01short_01int_01_4-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::isIntegral< unsigned short int > Member List
    +
    +
    + +

    This is the complete list of members for nctl::isIntegral< unsigned short int >, including all inherited members.

    + + +
    value (defined in nctl::isIntegral< unsigned short int >)nctl::isIntegral< unsigned short int >static
    + + + + diff --git a/master/structnctl_1_1is_integral_3_01unsigned_01short_01int_01_4.html b/master/structnctl_1_1is_integral_3_01unsigned_01short_01int_01_4.html new file mode 100644 index 0000000000..b9b4b68154 --- /dev/null +++ b/master/structnctl_1_1is_integral_3_01unsigned_01short_01int_01_4.html @@ -0,0 +1,94 @@ + + + + + + + +nCine: nctl::isIntegral< unsigned short int > Struct Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::isIntegral< unsigned short int > Struct Reference
    +
    +
    + + + + +

    +Static Public Attributes

    +static constexpr bool value = true
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1is_l_value_reference-members.html b/master/structnctl_1_1is_l_value_reference-members.html new file mode 100644 index 0000000000..daed3d86de --- /dev/null +++ b/master/structnctl_1_1is_l_value_reference-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::isLValueReference< T > Member List
    +
    +
    + +

    This is the complete list of members for nctl::isLValueReference< T >, including all inherited members.

    + + +
    value (defined in nctl::isLValueReference< T >)nctl::isLValueReference< T >static
    + + + + diff --git a/master/structnctl_1_1is_l_value_reference.html b/master/structnctl_1_1is_l_value_reference.html new file mode 100644 index 0000000000..ddfa1e1199 --- /dev/null +++ b/master/structnctl_1_1is_l_value_reference.html @@ -0,0 +1,94 @@ + + + + + + + +nCine: nctl::isLValueReference< T > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::isLValueReference< T > Struct Template Reference
    +
    +
    + + + + +

    +Static Public Attributes

    +static constexpr bool value = false
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1is_l_value_reference_3_01_t_01_6_01_4-members.html b/master/structnctl_1_1is_l_value_reference_3_01_t_01_6_01_4-members.html new file mode 100644 index 0000000000..e38de2bc5f --- /dev/null +++ b/master/structnctl_1_1is_l_value_reference_3_01_t_01_6_01_4-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::isLValueReference< T & > Member List
    +
    +
    + +

    This is the complete list of members for nctl::isLValueReference< T & >, including all inherited members.

    + + +
    value (defined in nctl::isLValueReference< T & >)nctl::isLValueReference< T & >static
    + + + + diff --git a/master/structnctl_1_1is_l_value_reference_3_01_t_01_6_01_4.html b/master/structnctl_1_1is_l_value_reference_3_01_t_01_6_01_4.html new file mode 100644 index 0000000000..e43d7348de --- /dev/null +++ b/master/structnctl_1_1is_l_value_reference_3_01_t_01_6_01_4.html @@ -0,0 +1,94 @@ + + + + + + + +nCine: nctl::isLValueReference< T & > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::isLValueReference< T & > Struct Template Reference
    +
    +
    + + + + +

    +Static Public Attributes

    +static constexpr bool value = true
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1is_trivially_constructible-members.html b/master/structnctl_1_1is_trivially_constructible-members.html new file mode 100644 index 0000000000..0d61ee76e6 --- /dev/null +++ b/master/structnctl_1_1is_trivially_constructible-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::isTriviallyConstructible< T > Member List
    +
    +
    + +

    This is the complete list of members for nctl::isTriviallyConstructible< T >, including all inherited members.

    + + +
    value (defined in nctl::isTriviallyConstructible< T >)nctl::isTriviallyConstructible< T >static
    + + + + diff --git a/master/structnctl_1_1is_trivially_constructible.html b/master/structnctl_1_1is_trivially_constructible.html new file mode 100644 index 0000000000..342639e4aa --- /dev/null +++ b/master/structnctl_1_1is_trivially_constructible.html @@ -0,0 +1,94 @@ + + + + + + + +nCine: nctl::isTriviallyConstructible< T > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::isTriviallyConstructible< T > Struct Template Reference
    +
    +
    + + + + +

    +Static Public Attributes

    +static constexpr bool value = __is_trivially_constructible(T)
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1is_trivially_copyable-members.html b/master/structnctl_1_1is_trivially_copyable-members.html new file mode 100644 index 0000000000..47c034aa9d --- /dev/null +++ b/master/structnctl_1_1is_trivially_copyable-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::isTriviallyCopyable< T > Member List
    +
    +
    + +

    This is the complete list of members for nctl::isTriviallyCopyable< T >, including all inherited members.

    + + +
    value (defined in nctl::isTriviallyCopyable< T >)nctl::isTriviallyCopyable< T >static
    + + + + diff --git a/master/structnctl_1_1is_trivially_copyable.html b/master/structnctl_1_1is_trivially_copyable.html new file mode 100644 index 0000000000..9d0306f993 --- /dev/null +++ b/master/structnctl_1_1is_trivially_copyable.html @@ -0,0 +1,94 @@ + + + + + + + +nCine: nctl::isTriviallyCopyable< T > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::isTriviallyCopyable< T > Struct Template Reference
    +
    +
    + + + + +

    +Static Public Attributes

    +static constexpr bool value = __is_trivially_copyable(T)
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1is_trivially_destructible-members.html b/master/structnctl_1_1is_trivially_destructible-members.html new file mode 100644 index 0000000000..2cef12f5f7 --- /dev/null +++ b/master/structnctl_1_1is_trivially_destructible-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::isTriviallyDestructible< T > Member List
    +
    +
    + +

    This is the complete list of members for nctl::isTriviallyDestructible< T >, including all inherited members.

    + + +
    value (defined in nctl::isTriviallyDestructible< T >)nctl::isTriviallyDestructible< T >static
    + + + + diff --git a/master/structnctl_1_1is_trivially_destructible.html b/master/structnctl_1_1is_trivially_destructible.html new file mode 100644 index 0000000000..b147335359 --- /dev/null +++ b/master/structnctl_1_1is_trivially_destructible.html @@ -0,0 +1,94 @@ + + + + + + + +nCine: nctl::isTriviallyDestructible< T > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::isTriviallyDestructible< T > Struct Template Reference
    +
    +
    + + + + +

    +Static Public Attributes

    +static constexpr bool value = __is_trivially_destructible(T)
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1remove_extent-members.html b/master/structnctl_1_1remove_extent-members.html new file mode 100644 index 0000000000..9773b10a1d --- /dev/null +++ b/master/structnctl_1_1remove_extent-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::removeExtent< T > Member List
    +
    +
    + +

    This is the complete list of members for nctl::removeExtent< T >, including all inherited members.

    + + +
    type typedef (defined in nctl::removeExtent< T >)nctl::removeExtent< T >
    + + + + diff --git a/master/structnctl_1_1remove_extent.html b/master/structnctl_1_1remove_extent.html new file mode 100644 index 0000000000..e46259e0ff --- /dev/null +++ b/master/structnctl_1_1remove_extent.html @@ -0,0 +1,94 @@ + + + + + + + +nCine: nctl::removeExtent< T > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::removeExtent< T > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    +typedef T type
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1remove_extent_3_01_t_0f_0e_4-members.html b/master/structnctl_1_1remove_extent_3_01_t_0f_0e_4-members.html new file mode 100644 index 0000000000..0f9404e4a0 --- /dev/null +++ b/master/structnctl_1_1remove_extent_3_01_t_0f_0e_4-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::removeExtent< T[]> Member List
    +
    +
    + +

    This is the complete list of members for nctl::removeExtent< T[]>, including all inherited members.

    + + +
    type typedef (defined in nctl::removeExtent< T[]>)nctl::removeExtent< T[]>
    + + + + diff --git a/master/structnctl_1_1remove_extent_3_01_t_0f_0e_4.html b/master/structnctl_1_1remove_extent_3_01_t_0f_0e_4.html new file mode 100644 index 0000000000..5bd8217a93 --- /dev/null +++ b/master/structnctl_1_1remove_extent_3_01_t_0f_0e_4.html @@ -0,0 +1,94 @@ + + + + + + + +nCine: nctl::removeExtent< T[]> Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::removeExtent< T[]> Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    +typedef T type
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1remove_extent_3_01_t_0f_n_0e_4-members.html b/master/structnctl_1_1remove_extent_3_01_t_0f_n_0e_4-members.html new file mode 100644 index 0000000000..eccc343df4 --- /dev/null +++ b/master/structnctl_1_1remove_extent_3_01_t_0f_n_0e_4-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::removeExtent< T[N]> Member List
    +
    +
    + +

    This is the complete list of members for nctl::removeExtent< T[N]>, including all inherited members.

    + + +
    type typedef (defined in nctl::removeExtent< T[N]>)nctl::removeExtent< T[N]>
    + + + + diff --git a/master/structnctl_1_1remove_extent_3_01_t_0f_n_0e_4.html b/master/structnctl_1_1remove_extent_3_01_t_0f_n_0e_4.html new file mode 100644 index 0000000000..85a2f0696f --- /dev/null +++ b/master/structnctl_1_1remove_extent_3_01_t_0f_n_0e_4.html @@ -0,0 +1,94 @@ + + + + + + + +nCine: nctl::removeExtent< T[N]> Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::removeExtent< T[N]> Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    +typedef T type
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1remove_reference-members.html b/master/structnctl_1_1remove_reference-members.html new file mode 100644 index 0000000000..dc1aed7279 --- /dev/null +++ b/master/structnctl_1_1remove_reference-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::removeReference< T > Member List
    +
    +
    + +

    This is the complete list of members for nctl::removeReference< T >, including all inherited members.

    + + +
    type typedef (defined in nctl::removeReference< T >)nctl::removeReference< T >
    + + + + diff --git a/master/structnctl_1_1remove_reference.html b/master/structnctl_1_1remove_reference.html new file mode 100644 index 0000000000..bf773ea7f9 --- /dev/null +++ b/master/structnctl_1_1remove_reference.html @@ -0,0 +1,94 @@ + + + + + + + +nCine: nctl::removeReference< T > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::removeReference< T > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    +using type = T
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1remove_reference_3_01_t_01_6_01_4-members.html b/master/structnctl_1_1remove_reference_3_01_t_01_6_01_4-members.html new file mode 100644 index 0000000000..80595a796e --- /dev/null +++ b/master/structnctl_1_1remove_reference_3_01_t_01_6_01_4-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::removeReference< T & > Member List
    +
    +
    + +

    This is the complete list of members for nctl::removeReference< T & >, including all inherited members.

    + + +
    type typedef (defined in nctl::removeReference< T & >)nctl::removeReference< T & >
    + + + + diff --git a/master/structnctl_1_1remove_reference_3_01_t_01_6_01_4.html b/master/structnctl_1_1remove_reference_3_01_t_01_6_01_4.html new file mode 100644 index 0000000000..3ff14fc05b --- /dev/null +++ b/master/structnctl_1_1remove_reference_3_01_t_01_6_01_4.html @@ -0,0 +1,94 @@ + + + + + + + +nCine: nctl::removeReference< T & > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::removeReference< T & > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    +using type = T
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/structnctl_1_1remove_reference_3_01_t_01_6_6_01_4-members.html b/master/structnctl_1_1remove_reference_3_01_t_01_6_6_01_4-members.html new file mode 100644 index 0000000000..27608fa65c --- /dev/null +++ b/master/structnctl_1_1remove_reference_3_01_t_01_6_6_01_4-members.html @@ -0,0 +1,85 @@ + + + + + + + +nCine: Member List + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    nctl::removeReference< T && > Member List
    +
    +
    + +

    This is the complete list of members for nctl::removeReference< T && >, including all inherited members.

    + + +
    type typedef (defined in nctl::removeReference< T && >)nctl::removeReference< T && >
    + + + + diff --git a/master/structnctl_1_1remove_reference_3_01_t_01_6_6_01_4.html b/master/structnctl_1_1remove_reference_3_01_t_01_6_6_01_4.html new file mode 100644 index 0000000000..856024ba78 --- /dev/null +++ b/master/structnctl_1_1remove_reference_3_01_t_01_6_6_01_4.html @@ -0,0 +1,94 @@ + + + + + + + +nCine: nctl::removeReference< T && > Struct Template Reference + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    nctl::removeReference< T && > Struct Template Reference
    +
    +
    + + + + +

    +Public Types

    +using type = T
     
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/master/sync_off.png b/master/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..6c3248f0de87a0961ab3c2e798916dd215732ab4 GIT binary patch literal 858 zcmV-g1Eu_lP)BF>8tz&tD!2SvMhNAy@9rUBOWhWK&;FSlMVh)>0_Q~{dB#W|J@U_Q=> z{q_JF{lX%=+`K*#5o>^xq8z|(NqP=|Bahn);3Qj|5-tr;D!KrYxoC>)n+`8;0&rC5 z3$dxDTLNVO*zM3+Xn3C15GrqeOpFT6#qv>(K_lYcd$OZ z%V1s&;hn6i(8*jMxQuknC;*t#*L}LhNty|OU4}Pj!dfc+)~Q_X zKga6eYpe}z0}^d?e3b-o+y4a9y%T~bXy zlg{hrAIb~Y(YUfh_P=grxc&3z4E*sez$}HiA=>KSGy1yQ`hNLB0$j8HrC(=o!y4fC zM|XKT{)m^V_si%?=1L}cHuJr7mbZTD;o-=vs(nLeP$iu^BFp;3>&Y^L3_ls-hoP?k zW(gETWLev|Iq)%K|C-+wNVE+aKs#FG;sq+6%d#sny*ZQ7i4n&drQcwBdXlN>X8?9r z^{_GnRET>b4`2~!`fCDzZx*`;;w^wh^1i;@exhB{WsTKyfamq0IGyT5J1e?{Y>$yA kqheTGkG<4bZveah0o^vEHDvy}RR91007*qoM6N<$g4F|-_5c6? literal 0 HcmV?d00001 diff --git a/master/sync_on.png b/master/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..96bef06ad2a88efd48e594c6ecc34ba9ac7859c6 GIT binary patch literal 843 zcmV-R1GM~!P)Ds^oXMDNVwO%~VloMn3_97&X3?>gP}8K+UPPj`xFs0DKozkI6ouXhg6NfA zcqOfhD3p3s=o44OJpel{02^L$P;86c1D4XZ>e%nk#07Cg`~_Ib zE}&JM5`KVr$Pl|lyZA($Gyk{OmC-(tF9YKjzB8abIoK)migyv{H8z9BLdHkt-C;G*1YG5@2_ThE#mTcxWy zo#EH}-_k$$0}wCo5;IZ(&y6t! zuy|7g^hP(inGMRamL1M;n%ma za5YVRBqlb^?4A9j_m3Zn^}Fv&VVm=PU8UsKJm1_^Qmb5o>a;`}DxQm##I1X7VB)=O r@m$N!khYtpzwdMW`8M~vj%ED6IZTOxwl8l3Enx6;^>bP0l+XkK6B{$Y literal 0 HcmV?d00001 diff --git a/master/tab_b.png b/master/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..ccb3ede1871a527ec8df5deef919cf9c5dd51eb4 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z|6GlH8}{dr0<^I za^!g7lS4*S))8kimP?yscuh+M3-$ell~K{~kVe|G7KUNguUMi#NX2j=TMceg9FZ VsM5(FwgT;D@O1TaS?83{1ORaRM#lgE literal 0 HcmV?d00001 diff --git a/master/tab_h.png b/master/tab_h.png new file mode 100644 index 0000000000000000000000000000000000000000..4edb2101c9a941a7b51ea2ad399ba611a64ee6ef GIT binary patch literal 174 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!Ql*|Qjv*C{Z|5H5JmetYn*L9H z6Z`Iu&#tnWt#)$ZIkI7f1aIc)ARWcCF2_r6OH}MRKU?jI?fwU0*&-!xmUHiZdFFP6 z>Z8vb6Zvl+x3k_L+w`{e`a%<%*}MP$<$1X9rc-Ec_9m`PYg3&wdCTgBTTMTRlz;j9 aj5}keSi!xmNyR`1FnGH9xvXli>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0px/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0px 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0px 1px 1px rgba(255,255,255,0.9);color:#283A5D;outline:none}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a.current{color:#D23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace !important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media (min-width: 768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283A5D transparent transparent transparent;background:transparent;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0px 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;border-radius:0 !important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox a:hover span.sub-arrow{border-color:#fff transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;border-radius:5px !important;box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0 !important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:#fff;text-shadow:0px 1px 1px #000}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent #fff}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #D23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#D23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px !important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} diff --git a/master/tracy_8h_source.html b/master/tracy_8h_source.html new file mode 100644 index 0000000000..5cff1683bd --- /dev/null +++ b/master/tracy_8h_source.html @@ -0,0 +1,247 @@ + + + + + + + +nCine: include/ncine/tracy.h Source File + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    tracy.h
    +
    +
    +
    1 #if defined(WITH_TRACY) || NCINE_WITH_TRACY
    +
    2 
    +
    3  #include "tracy/Tracy.hpp"
    +
    4  #include "tracy/TracyC.h"
    +
    5 
    +
    6 #else
    +
    7 
    +
    8  // From Tracy.hpp
    +
    9  #define ZoneNamed(x, y)
    +
    10  #define ZoneNamedN(x, y, z)
    +
    11  #define ZoneNamedC(x, y, z)
    +
    12  #define ZoneNamedNC(x, y, z, w)
    +
    13 
    +
    14  #define ZoneTransient(x, y)
    +
    15  #define ZoneTransientN(x, y, z)
    +
    16 
    +
    17  #define ZoneScoped
    +
    18  #define ZoneScopedN(x)
    +
    19  #define ZoneScopedC(x)
    +
    20  #define ZoneScopedNC(x, y)
    +
    21 
    +
    22  #define ZoneText(x, y)
    +
    23  #define ZoneTextV(x, y, z)
    +
    24  #define ZoneName(x, y)
    +
    25  #define ZoneNameV(x, y, z)
    +
    26  #define ZoneColor(x)
    +
    27  #define ZoneColorV(x, y)
    +
    28  #define ZoneValue(x)
    +
    29  #define ZoneValueV(x, y)
    +
    30  #define ZoneIsActive false
    +
    31  #define ZoneIsActiveV(x) false
    +
    32 
    +
    33  #define FrameMark
    +
    34  #define FrameMarkNamed(x)
    +
    35  #define FrameMarkStart(x)
    +
    36  #define FrameMarkEnd(x)
    +
    37 
    +
    38  #define FrameImage(x, y, z, w, a)
    +
    39 
    +
    40  #define TracyLockable(type, varname) type varname;
    +
    41  #define TracyLockableN(type, varname, desc) type varname;
    +
    42  #define TracySharedLockable(type, varname) type varname;
    +
    43  #define TracySharedLockableN(type, varname, desc) type varname;
    +
    44  #define LockableBase(type) type
    +
    45  #define SharedLockableBase(type) type
    +
    46  #define LockMark(x) (void)x;
    +
    47  #define LockableName(x, y, z);
    +
    48 
    +
    49  #define TracyPlot(x, y)
    +
    50  #define TracyPlotConfig(x, y)
    +
    51 
    +
    52  #define TracyMessage(x, y)
    +
    53  #define TracyMessageL(x)
    +
    54  #define TracyMessageC(x, y, z)
    +
    55  #define TracyMessageLC(x, y)
    +
    56  #define TracyAppInfo(x, y)
    +
    57 
    +
    58  #define TracyAlloc(x, y)
    +
    59  #define TracyFree(x)
    +
    60  #define TracySecureAlloc(x, y)
    +
    61  #define TracySecureFree(x)
    +
    62 
    +
    63  #define TracyAllocN(x, y, z)
    +
    64  #define TracyFreeN(x, y)
    +
    65  #define TracySecureAllocN(x, y, z)
    +
    66  #define TracySecureFreeN(x, y)
    +
    67 
    +
    68  #define ZoneNamedS(x, y, z)
    +
    69  #define ZoneNamedNS(x, y, z, w)
    +
    70  #define ZoneNamedCS(x, y, z, w)
    +
    71  #define ZoneNamedNCS(x, y, z, w, a)
    +
    72 
    +
    73  #define ZoneTransientS(x, y, z)
    +
    74  #define ZoneTransientNS(x, y, z, w)
    +
    75 
    +
    76  #define ZoneScopedS(x)
    +
    77  #define ZoneScopedNS(x, y)
    +
    78  #define ZoneScopedCS(x, y)
    +
    79  #define ZoneScopedNCS(x, y, z)
    +
    80 
    +
    81  #define TracyAllocS(x, y, z)
    +
    82  #define TracyFreeS(x, y)
    +
    83  #define TracySecureAllocS(x, y, z)
    +
    84  #define TracySecureFreeS(x, y)
    +
    85 
    +
    86  #define TracyAllocNS(x, y, z, w)
    +
    87  #define TracyFreeNS(x, y, z)
    +
    88  #define TracySecureAllocNS(x, y, z, w)
    +
    89  #define TracySecureFreeNS(x, y, z)
    +
    90 
    +
    91  #define TracyMessageS(x, y, z)
    +
    92  #define TracyMessageLS(x, y)
    +
    93  #define TracyMessageCS(x, y, z, w)
    +
    94  #define TracyMessageLCS(x, y, z)
    +
    95 
    +
    96  #define TracyParameterRegister(x)
    +
    97  #define TracyParameterSetup(x, y, z, w)
    +
    98  #define TracyIsConnected false
    +
    99 
    +
    100  #define TracyFiberEnter(x)
    +
    101  #define TracyFiberLeave
    +
    102 
    +
    103  // From TracyC.h
    +
    104  typedef const void *TracyCZoneCtx;
    +
    105 
    +
    106  #define TracyCZone(c, x)
    +
    107  #define TracyCZoneN(c, x, y)
    +
    108  #define TracyCZoneC(c, x, y)
    +
    109  #define TracyCZoneNC(c, x, y, z)
    +
    110  #define TracyCZoneEnd(c)
    +
    111  #define TracyCZoneText(c, x, y)
    +
    112  #define TracyCZoneName(c, x, y)
    +
    113  #define TracyCZoneColor(c, x)
    +
    114  #define TracyCZoneValue(c, x)
    +
    115 
    +
    116  #define TracyCAlloc(x, y)
    +
    117  #define TracyCFree(x)
    +
    118  #define TracyCSecureAlloc(x, y)
    +
    119  #define TracyCSecureFree(x)
    +
    120 
    +
    121  #define TracyCAllocN(x, y, z)
    +
    122  #define TracyCFreeN(x, y)
    +
    123  #define TracyCSecureAllocN(x, y, z)
    +
    124  #define TracyCSecureFreeN(x, y)
    +
    125 
    +
    126  #define TracyCFrameMark
    +
    127  #define TracyCFrameMarkNamed(x)
    +
    128  #define TracyCFrameMarkStart(x)
    +
    129  #define TracyCFrameMarkEnd(x)
    +
    130  #define TracyCFrameImage(x, y, z, w, a)
    +
    131 
    +
    132  #define TracyCPlot(x, y)
    +
    133  #define TracyCMessage(x, y)
    +
    134  #define TracyCMessageL(x)
    +
    135  #define TracyCMessageC(x, y, z)
    +
    136  #define TracyCMessageLC(x, y)
    +
    137  #define TracyCAppInfo(x, y)
    +
    138 
    +
    139  #define TracyCZoneS(x, y, z)
    +
    140  #define TracyCZoneNS(x, y, z, w)
    +
    141  #define TracyCZoneCS(x, y, z, w)
    +
    142  #define TracyCZoneNCS(x, y, z, w, a)
    +
    143 
    +
    144  #define TracyCAllocS(x, y, z)
    +
    145  #define TracyCFreeS(x, y)
    +
    146  #define TracyCSecureAllocS(x, y, z)
    +
    147  #define TracyCSecureFreeS(x, y)
    +
    148 
    +
    149  #define TracyCAllocNS(x, y, z, w)
    +
    150  #define TracyCFreeNS(x, y, z)
    +
    151  #define TracyCSecureAllocNS(x, y, z, w)
    +
    152  #define TracyCSecureFreeNS(x, y, z)
    +
    153 
    +
    154  #define TracyCMessageS(x, y, z)
    +
    155  #define TracyCMessageLS(x, y)
    +
    156  #define TracyCMessageCS(x, y, z, w)
    +
    157  #define TracyCMessageLCS(x, y, z)
    +
    158 
    +
    159  #define TracyCIsConnected 0
    +
    160 
    +
    161  #ifdef TRACY_FIBERS
    +
    162  #define TracyCFiberEnter(fiber)
    +
    163  #define TracyCFiberLeave
    +
    164  #endif
    +
    165 
    +
    166 #endif
    +
    + + + + diff --git a/master/tracy__opengl_8h_source.html b/master/tracy__opengl_8h_source.html new file mode 100644 index 0000000000..31740c69e5 --- /dev/null +++ b/master/tracy__opengl_8h_source.html @@ -0,0 +1,131 @@ + + + + + + + +nCine: include/ncine/tracy_opengl.h Source File + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    tracy_opengl.h
    +
    +
    +
    1 #define WITH_TRACY_OPENGL (!defined(__ANDROID__) && !defined(__APPLE__) && !defined(__EMSCRIPTEN__))
    +
    2 
    +
    3 #if (defined(WITH_TRACY) || NCINE_WITH_TRACY) && defined(WITH_TRACY_OPENGL)
    +
    4 
    +
    5  #ifdef __ANDROID__
    +
    6  #define GL_TIMESTAMP GL_TIMESTAMP_EXT
    +
    7  #define GL_QUERY_COUNTER_BITS GL_QUERY_COUNTER_BITS_EXT
    +
    8  #define GL_QUERY_RESULT GL_QUERY_RESULT_EXT
    +
    9  #define GL_QUERY_RESULT_AVAILABLE GL_QUERY_RESULT_AVAILABLE_EXT
    +
    10  #define glQueryCounter glQueryCounterEXT
    +
    11  #define glGetQueryiv glGetQueryivEXT
    +
    12  #define glGetQueryObjectiv glGetQueryObjectivEXT
    +
    13  #define glGetQueryObjectui64v glGetQueryObjectui64vEXT
    +
    14  #endif
    +
    15 
    +
    16  #include "tracy/TracyOpenGL.hpp"
    +
    17 
    +
    18 #else
    +
    19 
    +
    20  #include "tracy.h"
    +
    21 
    +
    22  #define TracyGpuContext
    +
    23  #define TracyGpuContextName(x, y)
    +
    24  #define TracyGpuNamedZone(x, y, z)
    +
    25  #define TracyGpuNamedZoneC(x, y, z, w)
    +
    26  #define TracyGpuZone(x)
    +
    27  #define TracyGpuZoneC(x, y)
    +
    28  #define TracyGpuZoneTransient(x, y, z)
    +
    29  #define TracyGpuCollect
    +
    30 
    +
    31  #define TracyGpuNamedZoneS(x, y, z, w)
    +
    32  #define TracyGpuNamedZoneCS(x, y, z, w, a)
    +
    33  #define TracyGpuZoneS(x, y)
    +
    34  #define TracyGpuZoneCS(x, y, z)
    +
    35  #define TracyGpuZoneTransientS(x, y, z, w)
    +
    36 
    +
    37 namespace tracy {
    +
    38 
    +
    39 struct SourceLocationData;
    + +
    41 {
    +
    42  public:
    +
    43  GpuCtxScope(const SourceLocationData *, bool) {}
    +
    44  GpuCtxScope(const SourceLocationData *, int, bool) {}
    +
    45 };
    +
    46 
    +
    47 }
    +
    48 
    +
    49 #endif
    +
    Definition: tracy_opengl.h:41
    +
    + + + + diff --git a/master/type__traits_8h_source.html b/master/type__traits_8h_source.html new file mode 100644 index 0000000000..0374febf8f --- /dev/null +++ b/master/type__traits_8h_source.html @@ -0,0 +1,305 @@ + + + + + + + +nCine: include/nctl/type_traits.h Source File + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    type_traits.h
    +
    +
    +
    1 #ifndef NCTL_TYPETRAITS
    +
    2 #define NCTL_TYPETRAITS
    +
    3 
    +
    4 namespace nctl {
    +
    5 
    +
    6 namespace detail {
    +
    7 
    +
    8  template <class T>
    +
    9  struct typeIdentity
    +
    10  {
    +
    11  using type = T;
    +
    12  };
    +
    13 
    +
    14  template <class T>
    +
    15  auto tryAddLValueReference(int) -> typeIdentity<T &>;
    +
    16  template <class T>
    +
    17  auto tryAddLValueReference(...) -> typeIdentity<T>;
    +
    18 
    +
    19  template <class T>
    +
    20  auto tryAddRValueReference(int) -> typeIdentity<T &&>;
    +
    21  template <class T>
    +
    22  auto tryAddRValueReference(...) -> typeIdentity<T>;
    +
    23 
    +
    24  template <class>
    +
    25  struct voidType
    +
    26  {
    +
    27  typedef void type;
    +
    28  };
    +
    29 
    +
    30 }
    +
    31 
    +
    32 template <class T>
    + +
    34 {
    +
    35  using type = T;
    +
    36 };
    +
    37 template <class T>
    +
    38 struct removeReference<T &>
    +
    39 {
    +
    40  using type = T;
    +
    41 };
    +
    42 template <class T>
    +
    43 struct removeReference<T &&>
    +
    44 {
    +
    45  using type = T;
    +
    46 };
    +
    47 
    +
    48 template <class T>
    + +
    50 {
    +
    51  static constexpr bool value = false;
    +
    52 };
    +
    53 template <class T>
    +
    54 struct isLValueReference<T &>
    +
    55 {
    +
    56  static constexpr bool value = true;
    +
    57 };
    +
    58 
    +
    59 template <class T>
    + +
    61 {
    +
    62  typedef T type;
    +
    63 };
    +
    64 template <class T>
    +
    65 struct removeExtent<T[]>
    +
    66 {
    +
    67  typedef T type;
    +
    68 };
    +
    69 template <class T, unsigned int N>
    +
    70 struct removeExtent<T[N]>
    +
    71 {
    +
    72  typedef T type;
    +
    73 };
    +
    74 template <class T>
    +
    75 using removeExtentT = typename removeExtent<T>::type;
    +
    76 
    +
    77 template <class T>
    +
    78 struct addLValueReference : decltype(detail::tryAddLValueReference<T>(0))
    +
    79 {};
    +
    80 template <class T>
    +
    81 struct addRValueReference : decltype(detail::tryAddRValueReference<T>(0))
    +
    82 {};
    +
    83 template <class T>
    +
    84 typename addRValueReference<T>::type declVal();
    +
    85 
    +
    86 template <class T>
    +
    87 struct isEmpty
    +
    88 {
    +
    89  static constexpr bool value = __is_empty(T);
    +
    90 };
    +
    91 
    +
    92 template <class T, typename = void>
    +
    93 struct isClass
    +
    94 {
    +
    95  static constexpr bool value = false;
    +
    96 };
    +
    97 template <class T>
    +
    98 struct isClass<T, typename detail::voidType<int T::*>::type>
    +
    99 {
    +
    100  static constexpr bool value = (true && !__is_union(T));
    +
    101 };
    +
    102 
    +
    103 template <class T>
    + +
    105 {
    +
    106  static constexpr bool value = __is_trivially_constructible(T);
    +
    107 };
    +
    108 
    +
    109 template <class T>
    + +
    111 {
    +
    112  static constexpr bool value = __is_trivially_copyable(T);
    +
    113 };
    +
    114 
    +
    115 template <class T, typename = void>
    + +
    117 {
    +
    118  static constexpr bool value = false;
    +
    119 };
    +
    120 template <class T>
    +
    121 struct isDestructible<T, decltype(declVal<T &>().~T())>
    +
    122 {
    +
    123  static constexpr bool value = (true && !__is_union(T));
    +
    124 };
    +
    125 
    +
    126 // Use `__has_trivial_destructor()` only on GCC
    +
    127 #if defined(__GNUC__) && !defined(__clang__) && !defined(__INTEL_COMPILER)
    +
    128 template <class T>
    +
    129 struct hasTrivialDestructor
    +
    130 {
    +
    131  static constexpr bool value = __has_trivial_destructor(T);
    +
    132 };
    +
    133 
    +
    134 template <class T>
    +
    135 struct isTriviallyDestructible
    +
    136 {
    +
    137  static constexpr bool value = isDestructible<T>::value && hasTrivialDestructor<T>::value;
    +
    138 };
    +
    139 #else
    +
    140 template <class T>
    + +
    142 {
    +
    143  static constexpr bool value = __is_trivially_destructible(T);
    +
    144 };
    +
    145 #endif
    +
    146 
    +
    147 template <class T>
    + +
    149 {
    +
    150  static constexpr bool value = false;
    +
    151 };
    +
    152 template <>
    +
    153 struct isIntegral<bool>
    +
    154 {
    +
    155  static constexpr bool value = true;
    +
    156 };
    +
    157 template <>
    +
    158 struct isIntegral<char>
    +
    159 {
    +
    160  static constexpr bool value = true;
    +
    161 };
    +
    162 template <>
    +
    163 struct isIntegral<unsigned char>
    +
    164 {
    +
    165  static constexpr bool value = true;
    +
    166 };
    +
    167 template <>
    +
    168 struct isIntegral<short int>
    +
    169 {
    +
    170  static constexpr bool value = true;
    +
    171 };
    +
    172 template <>
    +
    173 struct isIntegral<unsigned short int>
    +
    174 {
    +
    175  static constexpr bool value = true;
    +
    176 };
    +
    177 template <>
    +
    178 struct isIntegral<int>
    +
    179 {
    +
    180  static constexpr bool value = true;
    +
    181 };
    +
    182 template <>
    +
    183 struct isIntegral<unsigned int>
    +
    184 {
    +
    185  static constexpr bool value = true;
    +
    186 };
    +
    187 template <>
    +
    188 struct isIntegral<long>
    +
    189 {
    +
    190  static constexpr bool value = true;
    +
    191 };
    +
    192 template <>
    +
    193 struct isIntegral<unsigned long>
    +
    194 {
    +
    195  static constexpr bool value = true;
    +
    196 };
    +
    197 template <>
    +
    198 struct isIntegral<long long>
    +
    199 {
    +
    200  static constexpr bool value = true;
    +
    201 };
    +
    202 template <>
    +
    203 struct isIntegral<unsigned long long>
    +
    204 {
    +
    205  static constexpr bool value = true;
    +
    206 };
    +
    207 
    +
    208 }
    +
    209 
    +
    210 #endif
    +
    Definition: type_traits.h:79
    +
    Definition: type_traits.h:82
    +
    Definition: type_traits.h:10
    +
    Definition: type_traits.h:26
    +
    Definition: type_traits.h:94
    +
    Definition: type_traits.h:117
    +
    Definition: type_traits.h:88
    +
    Definition: type_traits.h:149
    +
    Definition: type_traits.h:50
    +
    Definition: type_traits.h:105
    +
    Definition: type_traits.h:111
    +
    Definition: type_traits.h:142
    +
    Definition: type_traits.h:61
    +
    Definition: type_traits.h:34
    +
    + + + + diff --git a/master/utility_8h_source.html b/master/utility_8h_source.html new file mode 100644 index 0000000000..a292e423b8 --- /dev/null +++ b/master/utility_8h_source.html @@ -0,0 +1,323 @@ + + + + + + + +nCine: include/nctl/utility.h Source File + + + + + + + + + +
    +
    + + + + + + + +
    +
    nCine +  2024.11.r479-efb4ba7 +
    +
    A cross-platform 2D game engine
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    utility.h
    +
    +
    +
    1 #ifndef NCTL_UTILITY
    +
    2 #define NCTL_UTILITY
    +
    3 
    +
    4 #include <cstring> // for `memcpy()`
    +
    5 #include "type_traits.h"
    +
    6 
    +
    7 namespace nctl {
    +
    8 
    +
    10 template <class T>
    +
    11 inline typename removeReference<T>::type &&move(T &&arg)
    +
    12 {
    +
    13  return static_cast<typename removeReference<T>::type &&>(arg);
    +
    14 }
    +
    15 
    +
    16 namespace detail {
    +
    17 
    +
    19  template <bool value>
    + +
    21  {
    +
    22  template <class T>
    +
    23  inline static void constructObject(T *ptr)
    +
    24  {
    +
    25  new (ptr) T();
    +
    26  }
    +
    27 
    +
    28  template <class T>
    +
    29  inline static void constructArray(T *ptr, unsigned int numElements)
    +
    30  {
    +
    31  for (unsigned int i = 0; i < numElements; i++)
    +
    32  new (ptr + i) T();
    +
    33  }
    +
    34 
    +
    35  template <class T>
    +
    36  inline static void copyConstructArray(T *dest, const T *src, unsigned int numElements)
    +
    37  {
    +
    38  for (unsigned int i = 0; i < numElements; i++)
    +
    39  new (dest + i) T(src[i]);
    +
    40  }
    +
    41 
    +
    42  template <class T>
    +
    43  inline static void moveConstructArray(T *dest, T *src, unsigned int numElements)
    +
    44  {
    +
    45  for (unsigned int i = 0; i < numElements; i++)
    +
    46  new (dest + i) T(nctl::move(src[i]));
    +
    47  }
    +
    48  };
    +
    49 
    +
    51  template <>
    +
    52  struct constructHelpers<true>
    +
    53  {
    +
    54  template <class T>
    +
    55  inline static void constructObject(T *ptr)
    +
    56  {
    +
    57  }
    +
    58 
    +
    59  template <class T>
    +
    60  inline static void constructArray(T *ptr, unsigned int numElements)
    +
    61  {
    +
    62  }
    +
    63 
    +
    64  template <class T>
    +
    65  inline static void copyConstructArray(T *dest, const T *src, unsigned int numElements)
    +
    66  {
    +
    67  memcpy(dest, src, numElements * sizeof(T));
    +
    68  }
    +
    69 
    +
    70  template <class T>
    +
    71  inline static void moveConstructArray(T *dest, T *src, unsigned int numElements)
    +
    72  {
    +
    73  memcpy(dest, src, numElements * sizeof(T));
    +
    74  }
    +
    75  };
    +
    76 
    +
    78  template <bool value>
    + +
    80  {
    +
    81  template <class T>
    +
    82  inline static void destructObject(T *ptr)
    +
    83  {
    +
    84  ptr->~T();
    +
    85  }
    +
    86 
    +
    87  template <class T>
    +
    88  inline static void destructArray(T *ptr, unsigned int numElements)
    +
    89  {
    +
    90  for (unsigned int i = 0; i < numElements; i++)
    +
    91  ptr[numElements - i - 1].~T();
    +
    92  }
    +
    93  };
    +
    94 
    +
    96  template <>
    +
    97  struct destructHelpers<true>
    +
    98  {
    +
    99  template <class T>
    +
    100  inline static void destructObject(T *ptr)
    +
    101  {
    +
    102  }
    +
    103 
    +
    104  template <class T>
    +
    105  inline static void destructArray(T *ptr, unsigned int numElements)
    +
    106  {
    +
    107  }
    +
    108  };
    +
    109 
    +
    111  template <bool value>
    +
    112  struct copyHelpers
    +
    113  {
    +
    114  template <class T>
    +
    115  inline static void copyAssignArray(T *dest, const T *src, unsigned int numElements)
    +
    116  {
    +
    117  for (unsigned int i = 0; i < numElements; i++)
    +
    118  dest[i] = src[i];
    +
    119  }
    +
    120 
    +
    121  template <class T>
    +
    122  inline static void moveAssignArray(T *dest, T *src, unsigned int numElements)
    +
    123  {
    +
    124  for (unsigned int i = 0; i < numElements; i++)
    +
    125  dest[i] = nctl::move(src[i]);
    +
    126  }
    +
    127  };
    +
    128 
    +
    130  template <>
    +
    131  struct copyHelpers<true>
    +
    132  {
    +
    133  template <class T>
    +
    134  inline static void copyAssignArray(T *dest, const T *src, unsigned int numElements)
    +
    135  {
    +
    136  memcpy(dest, src, numElements * sizeof(T));
    +
    137  }
    +
    138 
    +
    139  template <class T>
    +
    140  inline static void moveAssignArray(T *dest, T *src, unsigned int numElements)
    +
    141  {
    +
    142  memcpy(dest, src, numElements * sizeof(T));
    +
    143  }
    +
    144  };
    +
    145 
    +
    146 }
    +
    147 
    +
    149 template <typename T>
    +
    150 inline constexpr T &&forward(typename removeReference<T>::type &arg)
    +
    151 {
    +
    152  return static_cast<T &&>(arg);
    +
    153 }
    +
    154 
    +
    155 template <typename T>
    +
    156 inline constexpr T &&forward(typename removeReference<T>::type &&arg)
    +
    157 {
    +
    158  static_assert(!isLValueReference<T>::value, "Invalid lvalue to rvalue conversion");
    +
    159  return static_cast<T &&>(arg);
    +
    160 }
    +
    161 
    +
    163 template <class T>
    +
    164 inline void swap(T &a, T &b)
    +
    165 {
    +
    166  T temp = nctl::move(a);
    +
    167  a = nctl::move(b);
    +
    168  b = nctl::move(temp);
    +
    169 }
    +
    170 
    +
    172 template <class T>
    +
    173 inline bool equalTo(const T &a, const T &b)
    +
    174 {
    +
    175  return (a == b);
    +
    176 }
    +
    177 
    +
    179 template <class T>
    +
    180 inline bool equalTo(const T *a, const T *b)
    +
    181 {
    +
    182  return (a == b);
    +
    183 }
    +
    184 
    +
    185 template <>
    +
    186 inline bool equalTo<char>(const char *a, const char *b)
    +
    187 {
    +
    188  // `strcmp()` reimplementation to avoid additional dependencies
    +
    189  while (*a && (*a == *b))
    +
    190  {
    +
    191  a++;
    +
    192  b++;
    +
    193  }
    +
    194  const unsigned char result = *reinterpret_cast<const unsigned char *>(a) -
    +
    195  *reinterpret_cast<const unsigned char *>(b);
    +
    196 
    +
    197  return (result == 0);
    +
    198 }
    +
    199 
    +
    200 template <class T>
    +
    201 void constructObject(T *ptr)
    +
    202 {
    +
    203  detail::constructHelpers<isTriviallyConstructible<T>::value>::constructObject(ptr);
    +
    204 }
    +
    205 
    +
    206 template <class T>
    +
    207 void constructArray(T *ptr, unsigned int numElements)
    +
    208 {
    +
    209  detail::constructHelpers<isTriviallyConstructible<T>::value>::constructArray(ptr, numElements);
    +
    210 }
    +
    211 
    +
    212 template <class T>
    +
    213 void copyConstructArray(T *dest, const T *src, unsigned int numElements)
    +
    214 {
    +
    215  detail::constructHelpers<isTriviallyConstructible<T>::value>::copyConstructArray(dest, src, numElements);
    +
    216 }
    +
    217 
    +
    218 template <class T>
    +
    219 void moveConstructArray(T *dest, T *src, unsigned int numElements)
    +
    220 {
    +
    221  detail::constructHelpers<isTriviallyConstructible<T>::value>::moveConstructArray(dest, src, numElements);
    +
    222 }
    +
    223 
    +
    224 template <class T>
    +
    225 void destructObject(T *ptr)
    +
    226 {
    +
    227  detail::destructHelpers<isTriviallyDestructible<T>::value>::destructObject(ptr);
    +
    228 }
    +
    229 
    +
    230 template <class T>
    +
    231 void destructArray(T *ptr, unsigned int numElements)
    +
    232 {
    +
    233  detail::destructHelpers<isTriviallyDestructible<T>::value>::destructArray(ptr, numElements);
    +
    234 }
    +
    235 
    +
    236 template <class T>
    +
    237 void copyAssignArray(T *dest, const T *src, unsigned int numElements)
    +
    238 {
    +
    239  detail::copyHelpers<isTriviallyCopyable<T>::value>::copyAssignArray(dest, src, numElements);
    +
    240 }
    +
    241 
    +
    242 template <class T>
    +
    243 void moveAssignArray(T *dest, T *src, unsigned int numElements)
    +
    244 {
    +
    245  detail::copyHelpers<isTriviallyCopyable<T>::value>::moveAssignArray(dest, src, numElements);
    +
    246 }
    +
    247 
    +
    248 }
    +
    249 
    +
    250 #endif
    +
    A container for functions to construct objects and arrays of objects.
    Definition: utility.h:21
    +
    A container for functions to copy arrays of objects.
    Definition: utility.h:113
    +
    A container for functions to destruct objects and arrays of objects.
    Definition: utility.h:80
    +
    + + + +