Config.cpp 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735
  1. #include <fstream>
  2. #include "Config.h"
  3. #include "ErrorHandlerLocator.h"
  4. #include "Loaders.h"
  5. namespace Systems
  6. {
  7. DEFINE_ENUM(TypeID, TYPEID)
  8. }
  9. namespace Properties
  10. {
  11. DEFINE_ENUM(PropertyID, PROPERTYID)
  12. }
  13. // Predefined variables for "AddVariablePredef" macro
  14. #define VEC_PREDEF m_variables
  15. #define HASH_PREDEF m_hashTable
  16. #define OFFSET_PREDEF m_varVectorOffset
  17. // Macros used to simplify the method of adding configuration variables
  18. // Also used to add variable name as a string, without the need of hand-writing it,
  19. // and making sure it spelled the same as the variable name (makes code editing easier)
  20. #define AddVariable(VECTOR, HASH, KEY, STRUCT, VAR) HASH[#VAR] = KEY; VECTOR.push_back(Variable(#VAR, KEY, &STRUCT.VAR))
  21. // A version of the "AddVariable" macro, with 3 of the 5 parameters predefined
  22. #define AddVariablePredef(STRUCT, VAR) AddVariable(VEC_PREDEF, HASH_PREDEF, VEC_PREDEF.size() + OFFSET_PREDEF, STRUCT, VAR)
  23. Config::AudioVariables Config::m_audioVar;
  24. Config::ComponentVariables Config::m_componentVar;
  25. Config::ConfigFileVariables Config::m_configFileVar;
  26. Config::EngineVariables Config::m_engineVar;
  27. Config::FramebfrVariables Config::m_framebfrVar;
  28. Config::GameplayVariables Config::m_gameplayVar;
  29. Config::GraphicsVariables Config::m_graphicsVar;
  30. Config::GUIVariables Config::m_GUIVar;
  31. Config::InputVariables Config::m_inputVar;
  32. Config::ModelVariables Config::m_modelVar;
  33. Config::ObjectPoolVariables Config::m_objPoolVar;
  34. Config::PathsVariables Config::m_filepathVar;
  35. Config::PhysicsVariables Config::m_physicsVar;
  36. Config::RendererVariables Config::m_rendererVar;
  37. Config::ScriptVariables Config::m_scriptVar;
  38. Config::ShaderVariables Config::m_shaderVar;
  39. Config::TextureVariables Config::m_textureVar;
  40. Config::WindowVariables Config::m_windowVar;
  41. std::vector<Config::Variable> Config::m_variables;
  42. std::unordered_map<std::string, std::size_t> Config::m_hashTable;
  43. void Config::init()
  44. {
  45. // Add variables and their names to internal containers, so they could be checked / names matched later.
  46. // Note: not all the variables are assigned to containers, as some are not meant to be loaded from config file.
  47. // Audio Variables
  48. AddVariablePredef(m_audioVar, impact_impulse_param_divider);
  49. AddVariablePredef(m_audioVar, impact_impulse_volume_divider);
  50. AddVariablePredef(m_audioVar, impact_min_volume_threshold);
  51. AddVariablePredef(m_audioVar, impact_max_volume_threshold);
  52. AddVariablePredef(m_audioVar, impact_soft_hard_threshold);
  53. AddVariablePredef(m_audioVar, max_impact_volume);
  54. AddVariablePredef(m_audioVar, volume_ambient);
  55. AddVariablePredef(m_audioVar, volume_master);
  56. AddVariablePredef(m_audioVar, volume_music);
  57. AddVariablePredef(m_audioVar, volume_sfx);
  58. AddVariablePredef(m_audioVar, max_impact_audio_instances);
  59. AddVariablePredef(m_audioVar, num_audio_channels);
  60. AddVariablePredef(m_audioVar, bus_name_ambient);
  61. AddVariablePredef(m_audioVar, bus_name_master);
  62. AddVariablePredef(m_audioVar, bus_name_music);
  63. AddVariablePredef(m_audioVar, bus_name_prefix);
  64. AddVariablePredef(m_audioVar, bus_name_sfx);
  65. AddVariablePredef(m_audioVar, channel_name_master);
  66. AddVariablePredef(m_audioVar, default_sound_bank);
  67. AddVariablePredef(m_audioVar, default_sound_bank_string);
  68. AddVariablePredef(m_audioVar, default_impact_sound_bank);
  69. AddVariablePredef(m_audioVar, pathDelimiter);
  70. // Component Variables
  71. AddVariablePredef(m_componentVar, camera_component_name);
  72. AddVariablePredef(m_componentVar, component_name_separator);
  73. AddVariablePredef(m_componentVar, light_component_name);
  74. AddVariablePredef(m_componentVar, lua_component_name);
  75. AddVariablePredef(m_componentVar, model_component_name);
  76. AddVariablePredef(m_componentVar, shader_component_name);
  77. // Engine variables
  78. AddVariablePredef(m_engineVar, change_ctrl_cml_notify_list_reserv);
  79. AddVariablePredef(m_engineVar, change_ctrl_grain_size);
  80. AddVariablePredef(m_engineVar, change_ctrl_notify_list_reserv);
  81. AddVariablePredef(m_engineVar, change_ctrl_oneoff_data_list_reserv);
  82. AddVariablePredef(m_engineVar, change_ctrl_oneoff_notify_list_reserv);
  83. AddVariablePredef(m_engineVar, change_ctrl_subject_list_reserv);
  84. AddVariablePredef(m_engineVar, delta_time_divider);
  85. AddVariablePredef(m_engineVar, glsl_version);
  86. AddVariablePredef(m_engineVar, gl_context_major_version);
  87. AddVariablePredef(m_engineVar, gl_context_minor_version);
  88. AddVariablePredef(m_engineVar, loaders_num_of_unload_per_frame);
  89. AddVariablePredef(m_engineVar, log_max_num_of_logs);
  90. AddVariablePredef(m_engineVar, object_directory_init_pool_size);
  91. AddVariablePredef(m_engineVar, smoothing_tick_samples);
  92. AddVariablePredef(m_engineVar, task_scheduler_clock_frequency);
  93. AddVariablePredef(m_engineVar, log_store_logs);
  94. // Frame-buffer variables
  95. AddVariablePredef(m_framebfrVar, gl_position_buffer_internal_format);
  96. AddVariablePredef(m_framebfrVar, gl_position_buffer_texture_type);
  97. AddVariablePredef(m_framebfrVar, gl_position_buffer_texture_format);
  98. AddVariablePredef(m_framebfrVar, gl_diffuse_buffer_internal_format);
  99. AddVariablePredef(m_framebfrVar, gl_diffuse_buffer_texture_format);
  100. AddVariablePredef(m_framebfrVar, gl_diffuse_buffer_texture_type);
  101. AddVariablePredef(m_framebfrVar, gl_emissive_buffer_internal_format);
  102. AddVariablePredef(m_framebfrVar, gl_emissive_buffer_texture_format);
  103. AddVariablePredef(m_framebfrVar, gl_emissive_buffer_texture_type);
  104. AddVariablePredef(m_framebfrVar, gl_normal_buffer_internal_format);
  105. AddVariablePredef(m_framebfrVar, gl_normal_buffer_texture_format);
  106. AddVariablePredef(m_framebfrVar, gl_normal_buffer_texture_type);
  107. AddVariablePredef(m_framebfrVar, gl_mat_properties_buffer_internal_format);
  108. AddVariablePredef(m_framebfrVar, gl_mat_properties_buffer_texture_format);
  109. AddVariablePredef(m_framebfrVar, gl_mat_properties_buffer_texture_type);
  110. AddVariablePredef(m_framebfrVar, gl_blur_buffer_internal_format);
  111. AddVariablePredef(m_framebfrVar, gl_blur_buffer_texture_type);
  112. AddVariablePredef(m_framebfrVar, gl_blur_buffer_texture_format);
  113. AddVariablePredef(m_framebfrVar, gl_final_buffer_internal_format);
  114. AddVariablePredef(m_framebfrVar, gl_final_buffer_texture_type);
  115. AddVariablePredef(m_framebfrVar, gl_final_buffer_texture_format);
  116. AddVariablePredef(m_framebfrVar, gl_depth_buffer_internal_format);
  117. AddVariablePredef(m_framebfrVar, gl_depth_buffer_texture_type);
  118. AddVariablePredef(m_framebfrVar, gl_depth_buffer_texture_format);
  119. AddVariablePredef(m_framebfrVar, gl_buffers_min_filter);
  120. AddVariablePredef(m_framebfrVar, gl_buffers_mag_filter);
  121. AddVariablePredef(m_framebfrVar, gl_buffers_wrap_s_method);
  122. AddVariablePredef(m_framebfrVar, gl_buffers_wrap_t_method);
  123. AddVariablePredef(m_framebfrVar, gl_blur_buffer_min_filter);
  124. AddVariablePredef(m_framebfrVar, gl_blur_buffer_mag_filter);
  125. AddVariablePredef(m_framebfrVar, gl_blur_buffer_wrap_s_method);
  126. AddVariablePredef(m_framebfrVar, gl_blur_buffer_wrap_t_method);
  127. AddVariablePredef(m_framebfrVar, gl_final_buffer_min_filter);
  128. AddVariablePredef(m_framebfrVar, gl_final_buffer_mag_filter);
  129. AddVariablePredef(m_framebfrVar, gl_final_buffer_s_method);
  130. AddVariablePredef(m_framebfrVar, gl_final_buffer_t_method);
  131. // Game-play variables
  132. AddVariablePredef(m_gameplayVar, default_map);
  133. AddVariablePredef(m_gameplayVar, main_menu_map);
  134. AddVariablePredef(m_gameplayVar, play_map);
  135. AddVariablePredef(m_gameplayVar, camera_freelook_speed);
  136. // Graphics variables
  137. AddVariablePredef(m_graphicsVar, double_buffering);
  138. AddVariablePredef(m_graphicsVar, eye_adaption);
  139. AddVariablePredef(m_graphicsVar, multisampling);
  140. AddVariablePredef(m_graphicsVar, alpha_size);
  141. AddVariablePredef(m_graphicsVar, antialiasing_type);
  142. AddVariablePredef(m_graphicsVar, ao_blur_num_of_samples);
  143. AddVariablePredef(m_graphicsVar, ao_num_of_directions);
  144. AddVariablePredef(m_graphicsVar, ao_num_of_samples);
  145. AddVariablePredef(m_graphicsVar, ao_num_of_steps);
  146. AddVariablePredef(m_graphicsVar, ao_type);
  147. AddVariablePredef(m_graphicsVar, bloom_blur_passes);
  148. AddVariablePredef(m_graphicsVar, dir_shadow_res_x);
  149. AddVariablePredef(m_graphicsVar, dir_shadow_res_y);
  150. AddVariablePredef(m_graphicsVar, lens_flare_blur_passes);
  151. AddVariablePredef(m_graphicsVar, lens_flare_ghost_count);
  152. AddVariablePredef(m_graphicsVar, multisample_buffers);
  153. AddVariablePredef(m_graphicsVar, multisample_samples);
  154. AddVariablePredef(m_graphicsVar, rendering_res_x);
  155. AddVariablePredef(m_graphicsVar, rendering_res_y);
  156. AddVariablePredef(m_graphicsVar, render_to_texture_resolution_x);
  157. AddVariablePredef(m_graphicsVar, render_to_texture_resolution_y);
  158. AddVariablePredef(m_graphicsVar, tonemap_method);
  159. AddVariablePredef(m_graphicsVar, alpha_threshold);
  160. AddVariablePredef(m_graphicsVar, ambient_intensity_directional);
  161. AddVariablePredef(m_graphicsVar, ambient_intensity_point);
  162. AddVariablePredef(m_graphicsVar, ambient_intensity_spot);
  163. AddVariablePredef(m_graphicsVar, ao_hbao_bias);
  164. AddVariablePredef(m_graphicsVar, ao_ssao_bias);
  165. AddVariablePredef(m_graphicsVar, ao_blurSharpness);
  166. AddVariablePredef(m_graphicsVar, ao_hbao_intensity);
  167. AddVariablePredef(m_graphicsVar, ao_ssao_intensity);
  168. AddVariablePredef(m_graphicsVar, ao_hbao_radius);
  169. AddVariablePredef(m_graphicsVar, ao_ssao_radius);
  170. AddVariablePredef(m_graphicsVar, bloom_intensity);
  171. AddVariablePredef(m_graphicsVar, bloom_knee);
  172. AddVariablePredef(m_graphicsVar, bloom_threshold);
  173. AddVariablePredef(m_graphicsVar, bloom_dirt_intensity);
  174. AddVariablePredef(m_graphicsVar, emissive_multiplier);
  175. AddVariablePredef(m_graphicsVar, emissive_threshold);
  176. AddVariablePredef(m_graphicsVar, eye_adaption_rate);
  177. AddVariablePredef(m_graphicsVar, eye_adaption_intended_brightness);
  178. AddVariablePredef(m_graphicsVar, fog_color_x);
  179. AddVariablePredef(m_graphicsVar, fog_color_y);
  180. AddVariablePredef(m_graphicsVar, fog_color_z);
  181. AddVariablePredef(m_graphicsVar, fog_density);
  182. AddVariablePredef(m_graphicsVar, fov);
  183. AddVariablePredef(m_graphicsVar, gamma);
  184. AddVariablePredef(m_graphicsVar, lens_flare_aspect_ratio);
  185. AddVariablePredef(m_graphicsVar, lens_flare_chrom_abberration);
  186. AddVariablePredef(m_graphicsVar, lens_flare_downsample);
  187. AddVariablePredef(m_graphicsVar, lens_flare_ghost_spacing);
  188. AddVariablePredef(m_graphicsVar, lens_flare_ghost_threshold);
  189. AddVariablePredef(m_graphicsVar, lens_flare_halo_radius);
  190. AddVariablePredef(m_graphicsVar, lens_flare_halo_thickness);
  191. AddVariablePredef(m_graphicsVar, lens_flare_halo_threshold);
  192. AddVariablePredef(m_graphicsVar, light_atten_constant);
  193. AddVariablePredef(m_graphicsVar, light_atten_linear);
  194. AddVariablePredef(m_graphicsVar, light_atten_quadratic);
  195. AddVariablePredef(m_graphicsVar, light_color_r);
  196. AddVariablePredef(m_graphicsVar, light_color_g);
  197. AddVariablePredef(m_graphicsVar, light_color_b);
  198. AddVariablePredef(m_graphicsVar, LOD_parallax_mapping);
  199. AddVariablePredef(m_graphicsVar, luminance_multiplier);
  200. AddVariablePredef(m_graphicsVar, luminance_range_min);
  201. AddVariablePredef(m_graphicsVar, luminance_range_max);
  202. AddVariablePredef(m_graphicsVar, height_scale);
  203. AddVariablePredef(m_graphicsVar, stochastic_sampling_scale);
  204. AddVariablePredef(m_graphicsVar, texture_tiling_factor);
  205. AddVariablePredef(m_graphicsVar, z_far);
  206. AddVariablePredef(m_graphicsVar, z_near);
  207. // GUI variables
  208. AddVariablePredef(m_GUIVar, gui_docking_enabled);
  209. AddVariablePredef(m_GUIVar, gui_render);
  210. AddVariablePredef(m_GUIVar, gui_dark_style);
  211. AddVariablePredef(m_GUIVar, gui_color_pallet);
  212. AddVariablePredef(m_GUIVar, gui_sequence_array_reserve_size);
  213. AddVariablePredef(m_GUIVar, about_window_font_size);
  214. AddVariablePredef(m_GUIVar, editor_asset_selection_button_size_multiplier);
  215. AddVariablePredef(m_GUIVar, editor_asset_texture_button_size_x);
  216. AddVariablePredef(m_GUIVar, editor_asset_texture_button_size_y);
  217. AddVariablePredef(m_GUIVar, editor_audio_banks_max_height);
  218. AddVariablePredef(m_GUIVar, editor_float_slider_speed);
  219. AddVariablePredef(m_GUIVar, editor_inspector_button_width_multiplier);
  220. AddVariablePredef(m_GUIVar, editor_lua_variables_max_height);
  221. AddVariablePredef(m_GUIVar, editor_play_button_size);
  222. AddVariablePredef(m_GUIVar, editor_render_pass_max_height);
  223. AddVariablePredef(m_GUIVar, gui_file_dialog_min_size_x);
  224. AddVariablePredef(m_GUIVar, gui_file_dialog_min_size_y);
  225. AddVariablePredef(m_GUIVar, gui_file_dialog_dir_color_R);
  226. AddVariablePredef(m_GUIVar, gui_file_dialog_dir_color_G);
  227. AddVariablePredef(m_GUIVar, gui_file_dialog_dir_color_B);
  228. AddVariablePredef(m_GUIVar, loading_spinner_radius);
  229. AddVariablePredef(m_GUIVar, loading_spinner_speed);
  230. AddVariablePredef(m_GUIVar, loading_spinner_thickness);
  231. AddVariablePredef(m_GUIVar, about_window_font);
  232. AddVariablePredef(m_GUIVar, about_window_logo_texture);
  233. AddVariablePredef(m_GUIVar, editor_button_add_texture);
  234. AddVariablePredef(m_GUIVar, editor_button_add_list_texture);
  235. AddVariablePredef(m_GUIVar, editor_button_arrow_down_texture);
  236. AddVariablePredef(m_GUIVar, editor_button_arrow_up_texture);
  237. AddVariablePredef(m_GUIVar, editor_button_delete_entry_texture);
  238. AddVariablePredef(m_GUIVar, editor_button_duplicate_entry_texture);
  239. AddVariablePredef(m_GUIVar, editor_button_gui_sequence_texture);
  240. AddVariablePredef(m_GUIVar, editor_button_guizmo_rotate_texture);
  241. AddVariablePredef(m_GUIVar, editor_button_guizmo_translate_texture);
  242. AddVariablePredef(m_GUIVar, editor_button_open_file_texture);
  243. AddVariablePredef(m_GUIVar, editor_button_open_asset_list_texture);
  244. AddVariablePredef(m_GUIVar, editor_button_pause_texture);
  245. AddVariablePredef(m_GUIVar, editor_button_play_texture);
  246. AddVariablePredef(m_GUIVar, editor_button_reload_texture);
  247. AddVariablePredef(m_GUIVar, editor_button_restart_texture);
  248. AddVariablePredef(m_GUIVar, editor_button_scripting_enabled_texture);
  249. AddVariablePredef(m_GUIVar, editor_new_entity_name);
  250. AddVariablePredef(m_GUIVar, gui_editor_window_name);
  251. AddVariablePredef(m_GUIVar, url_github);
  252. AddVariablePredef(m_GUIVar, url_pauldev);
  253. // Input variables
  254. AddVariablePredef(m_inputVar, back_key);
  255. AddVariablePredef(m_inputVar, backward_editor_key);
  256. AddVariablePredef(m_inputVar, backward_key);
  257. AddVariablePredef(m_inputVar, center_key);
  258. AddVariablePredef(m_inputVar, clip_mouse_key);
  259. AddVariablePredef(m_inputVar, close_window_key);
  260. AddVariablePredef(m_inputVar, debug_1_key);
  261. AddVariablePredef(m_inputVar, debug_2_key);
  262. AddVariablePredef(m_inputVar, down_editor_key);
  263. AddVariablePredef(m_inputVar, down_key);
  264. AddVariablePredef(m_inputVar, escape_key);
  265. AddVariablePredef(m_inputVar, forward_editor_key);
  266. AddVariablePredef(m_inputVar, forward_key);
  267. AddVariablePredef(m_inputVar, fullscreen_key);
  268. AddVariablePredef(m_inputVar, jump_key);
  269. AddVariablePredef(m_inputVar, left_editor_key);
  270. AddVariablePredef(m_inputVar, left_strafe_key);
  271. AddVariablePredef(m_inputVar, next_editor_key);
  272. AddVariablePredef(m_inputVar, modifier_editor_key);
  273. AddVariablePredef(m_inputVar, next_editor_key);
  274. AddVariablePredef(m_inputVar, num_preallocated_keybinds);
  275. AddVariablePredef(m_inputVar, previous_editor_key);
  276. AddVariablePredef(m_inputVar, right_editor_key);
  277. AddVariablePredef(m_inputVar, right_strafe_key);
  278. AddVariablePredef(m_inputVar, save_editor_key);
  279. AddVariablePredef(m_inputVar, sprint_key);
  280. AddVariablePredef(m_inputVar, up_editor_key);
  281. AddVariablePredef(m_inputVar, up_key);
  282. AddVariablePredef(m_inputVar, vsync_key);
  283. AddVariablePredef(m_inputVar, mouse_filter);
  284. AddVariablePredef(m_inputVar, mouse_warp_mode);
  285. AddVariablePredef(m_inputVar, mouse_jaw);
  286. AddVariablePredef(m_inputVar, mouse_pitch);
  287. AddVariablePredef(m_inputVar, mouse_pitch_clip);
  288. AddVariablePredef(m_inputVar, mouse_sensitivity);
  289. // Model variables
  290. AddVariablePredef(m_modelVar, calcTangentSpace);
  291. AddVariablePredef(m_modelVar, genBoundingBoxes);
  292. AddVariablePredef(m_modelVar, genNormals);
  293. AddVariablePredef(m_modelVar, genSmoothNormals);
  294. AddVariablePredef(m_modelVar, genUVCoords);
  295. AddVariablePredef(m_modelVar, joinIdenticalVertices);
  296. AddVariablePredef(m_modelVar, makeLeftHanded);
  297. AddVariablePredef(m_modelVar, optimizeCacheLocality);
  298. AddVariablePredef(m_modelVar, optimizeGraph);
  299. AddVariablePredef(m_modelVar, optimizeMeshes);
  300. AddVariablePredef(m_modelVar, removeComponent);
  301. AddVariablePredef(m_modelVar, triangulate);
  302. // Object pool variables
  303. AddVariablePredef(m_objPoolVar, camera_component_default_pool_size);
  304. AddVariablePredef(m_objPoolVar, light_component_default_pool_size);
  305. AddVariablePredef(m_objPoolVar, lua_component_default_pool_size);
  306. AddVariablePredef(m_objPoolVar, gui_sequence_component_default_pool_size);
  307. AddVariablePredef(m_objPoolVar, model_component_default_pool_size);
  308. AddVariablePredef(m_objPoolVar, object_pool_size);
  309. AddVariablePredef(m_objPoolVar, point_light_pool_size);
  310. AddVariablePredef(m_objPoolVar, regid_body_component_default_pool_size);
  311. AddVariablePredef(m_objPoolVar, shader_component_default_pool_size);
  312. AddVariablePredef(m_objPoolVar, spatial_component_default_pool_size);
  313. AddVariablePredef(m_objPoolVar, spot_light_pool_size);
  314. AddVariablePredef(m_objPoolVar, sound_component_default_pool_size);
  315. AddVariablePredef(m_objPoolVar, sound_listener_component_default_pool_size);
  316. // File-path variables
  317. AddVariablePredef(m_filepathVar, config_path);
  318. AddVariablePredef(m_filepathVar, engine_assets_path);
  319. AddVariablePredef(m_filepathVar, font_path);
  320. AddVariablePredef(m_filepathVar, gui_assets_path);
  321. AddVariablePredef(m_filepathVar, map_path);
  322. AddVariablePredef(m_filepathVar, model_path);
  323. AddVariablePredef(m_filepathVar, object_path);
  324. AddVariablePredef(m_filepathVar, prefab_path);
  325. AddVariablePredef(m_filepathVar, script_path);
  326. AddVariablePredef(m_filepathVar, shader_path);
  327. AddVariablePredef(m_filepathVar, sound_path);
  328. AddVariablePredef(m_filepathVar, texture_path);
  329. // Physics variables
  330. AddVariablePredef(m_physicsVar, applied_impulse_threshold);
  331. AddVariablePredef(m_physicsVar, life_time_threshold);
  332. // Renderer variables
  333. AddVariablePredef(m_rendererVar, atm_scattering_ground_vert_shader);
  334. AddVariablePredef(m_rendererVar, atm_scattering_ground_frag_shader);
  335. AddVariablePredef(m_rendererVar, atm_scattering_sky_vert_shader);
  336. AddVariablePredef(m_rendererVar, atm_scattering_sky_frag_shader);
  337. AddVariablePredef(m_rendererVar, dir_light_vert_shader);
  338. AddVariablePredef(m_rendererVar, dir_light_frag_shader);
  339. AddVariablePredef(m_rendererVar, point_light_vert_shader);
  340. AddVariablePredef(m_rendererVar, point_light_frag_shader);
  341. AddVariablePredef(m_rendererVar, spot_light_vert_shader);
  342. AddVariablePredef(m_rendererVar, spot_light_frag_shader);
  343. AddVariablePredef(m_rendererVar, dir_light_quad);
  344. AddVariablePredef(m_rendererVar, point_light_sphere);
  345. AddVariablePredef(m_rendererVar, spot_light_cone);
  346. AddVariablePredef(m_rendererVar, stencil_pass_vert_shader);
  347. AddVariablePredef(m_rendererVar, stencil_pass_frag_shader);
  348. AddVariablePredef(m_rendererVar, geometry_pass_vert_shader);
  349. AddVariablePredef(m_rendererVar, geometry_pass_frag_shader);
  350. AddVariablePredef(m_rendererVar, geom_billboard_vert_shader);
  351. AddVariablePredef(m_rendererVar, geom_billboard_frag_shader);
  352. AddVariablePredef(m_rendererVar, geom_billboard_goem_shader);
  353. AddVariablePredef(m_rendererVar, gaussian_blur_vertical_frag_shader);
  354. AddVariablePredef(m_rendererVar, gaussian_blur_vertical_vert_shader);
  355. AddVariablePredef(m_rendererVar, gaussian_blur_horizontal_frag_shader);
  356. AddVariablePredef(m_rendererVar, gaussian_blur_horizontal_vert_shader);
  357. AddVariablePredef(m_rendererVar, hdr_mapping_pass_frag_shader);
  358. AddVariablePredef(m_rendererVar, hdr_mapping_pass_vert_shader);
  359. AddVariablePredef(m_rendererVar, luminance_average_comp_shader);
  360. AddVariablePredef(m_rendererVar, luminance_histogram_comp_shader);
  361. AddVariablePredef(m_rendererVar, tonemapping_vert_shader);
  362. AddVariablePredef(m_rendererVar, tonemapping_frag_shader);
  363. AddVariablePredef(m_rendererVar, bloom_composite_pass_vert_shader);
  364. AddVariablePredef(m_rendererVar, bloom_composite_pass_frag_shader);
  365. AddVariablePredef(m_rendererVar, bloom_downscale_comp_shader);
  366. AddVariablePredef(m_rendererVar, bloom_upscale_comp_shader);
  367. AddVariablePredef(m_rendererVar, bloom_composite_pass_vert_shader);
  368. AddVariablePredef(m_rendererVar, bloom_composite_pass_frag_shader);
  369. AddVariablePredef(m_rendererVar, blur_pass_vert_shader);
  370. AddVariablePredef(m_rendererVar, blur_pass_frag_shader);
  371. AddVariablePredef(m_rendererVar, csm_bias_scale);
  372. AddVariablePredef(m_rendererVar, csm_pass_layered_frag_shader);
  373. AddVariablePredef(m_rendererVar, csm_pass_layered_geom_shader);
  374. AddVariablePredef(m_rendererVar, csm_pass_layered_vert_shader);
  375. AddVariablePredef(m_rendererVar, csm_pass_single_frag_shader);
  376. AddVariablePredef(m_rendererVar, csm_pass_single_vert_shader);
  377. AddVariablePredef(m_rendererVar, hbao_blur_horizontal_frag_shader);
  378. AddVariablePredef(m_rendererVar, hbao_blur_horizontal_vert_shader);
  379. AddVariablePredef(m_rendererVar, hbao_blur_vertical_frag_shader);
  380. AddVariablePredef(m_rendererVar, hbao_blur_vertical_vert_shader);
  381. AddVariablePredef(m_rendererVar, hbao_pass_frag_shader);
  382. AddVariablePredef(m_rendererVar, hbao_pass_vert_shader);
  383. AddVariablePredef(m_rendererVar, lense_flare_comp_pass_vert_shader);
  384. AddVariablePredef(m_rendererVar, lense_flare_comp_pass_frag_shader);
  385. AddVariablePredef(m_rendererVar, lense_flare_pass_vert_shader);
  386. AddVariablePredef(m_rendererVar, lense_flare_pass_frag_shader);
  387. AddVariablePredef(m_rendererVar, light_pass_vert_shader);
  388. AddVariablePredef(m_rendererVar, light_pass_frag_shader);
  389. AddVariablePredef(m_rendererVar, final_pass_vert_shader);
  390. AddVariablePredef(m_rendererVar, final_pass_frag_shader);
  391. AddVariablePredef(m_rendererVar, final_pass_vert_shader);
  392. AddVariablePredef(m_rendererVar, final_pass_frag_shader);
  393. AddVariablePredef(m_rendererVar, reflection_pass_vert_shader);
  394. AddVariablePredef(m_rendererVar, reflection_pass_frag_shader);
  395. AddVariablePredef(m_rendererVar, lens_flare_dirt_texture);
  396. AddVariablePredef(m_rendererVar, lens_flare_ghost_gradient_texture);
  397. AddVariablePredef(m_rendererVar, lens_flare_starburst_texture);
  398. AddVariablePredef(m_rendererVar, ssao_blur_frag_shader);
  399. AddVariablePredef(m_rendererVar, ssao_blur_vert_shader);
  400. AddVariablePredef(m_rendererVar, ssao_pass_frag_shader);
  401. AddVariablePredef(m_rendererVar, ssao_pass_vert_shader);
  402. AddVariablePredef(m_rendererVar, texture_repetition_noise_texture);
  403. AddVariablePredef(m_rendererVar, csm_max_shadow_bias);
  404. AddVariablePredef(m_rendererVar, csm_penumbra_size);
  405. AddVariablePredef(m_rendererVar, csm_penumbra_size_scale_min);
  406. AddVariablePredef(m_rendererVar, csm_penumbra_size_scale_max);
  407. AddVariablePredef(m_rendererVar, dir_light_quad_offset_x);
  408. AddVariablePredef(m_rendererVar, dir_light_quad_offset_y);
  409. AddVariablePredef(m_rendererVar, dir_light_quad_offset_z);
  410. AddVariablePredef(m_rendererVar, dir_light_quad_rotation_x);
  411. AddVariablePredef(m_rendererVar, dir_light_quad_rotation_y);
  412. AddVariablePredef(m_rendererVar, dir_light_quad_rotation_z);
  413. AddVariablePredef(m_rendererVar, fxaa_edge_threshold_min);
  414. AddVariablePredef(m_rendererVar, fxaa_edge_threshold_max);
  415. AddVariablePredef(m_rendererVar, fxaa_edge_subpixel_quality);
  416. AddVariablePredef(m_rendererVar, parallax_mapping_min_steps);
  417. AddVariablePredef(m_rendererVar, parallax_mapping_max_steps);
  418. AddVariablePredef(m_rendererVar, csm_num_of_pcf_samples);
  419. AddVariablePredef(m_rendererVar, csm_resolution);
  420. AddVariablePredef(m_rendererVar, csm_face_culling);
  421. AddVariablePredef(m_rendererVar, csm_front_face_culling);
  422. AddVariablePredef(m_rendererVar, depth_test_func);
  423. AddVariablePredef(m_rendererVar, face_culling_mode);
  424. AddVariablePredef(m_rendererVar, fxaa_iterations);
  425. AddVariablePredef(m_rendererVar, heightmap_combine_channel);
  426. AddVariablePredef(m_rendererVar, heightmap_combine_texture);
  427. AddVariablePredef(m_rendererVar, max_num_point_lights);
  428. AddVariablePredef(m_rendererVar, max_num_spot_lights);
  429. AddVariablePredef(m_rendererVar, objects_loaded_per_frame);
  430. AddVariablePredef(m_rendererVar, parallax_mapping_method);
  431. AddVariablePredef(m_rendererVar, render_to_texture_buffer);
  432. AddVariablePredef(m_rendererVar, shader_pool_size);
  433. AddVariablePredef(m_rendererVar, ssao_num_of_samples);
  434. AddVariablePredef(m_rendererVar, depth_test);
  435. AddVariablePredef(m_rendererVar, face_culling);
  436. AddVariablePredef(m_rendererVar, fxaa_enabled);
  437. AddVariablePredef(m_rendererVar, msaa_enabled);
  438. AddVariablePredef(m_rendererVar, stochastic_sampling_seam_fix);
  439. // Script variables
  440. AddVariablePredef(m_scriptVar, defaultScriptFilename);
  441. AddVariablePredef(m_scriptVar, iniFunctionName);
  442. AddVariablePredef(m_scriptVar, updateFunctionName);
  443. AddVariablePredef(m_scriptVar, createObjectFunctionName);
  444. AddVariablePredef(m_scriptVar, userTypeTableName);
  445. AddVariablePredef(m_scriptVar, luaUpdateErrorsEveryFrame);
  446. // Shader variables
  447. AddVariablePredef(m_shaderVar, atmScatProjMatUniform);
  448. AddVariablePredef(m_shaderVar, modelMatUniform);
  449. AddVariablePredef(m_shaderVar, viewMatUniform);
  450. AddVariablePredef(m_shaderVar, projectionMatUniform);
  451. AddVariablePredef(m_shaderVar, viewProjectionMatUniform);
  452. AddVariablePredef(m_shaderVar, modelViewMatUniform);
  453. AddVariablePredef(m_shaderVar, modelViewProjectionMatUniform);
  454. AddVariablePredef(m_shaderVar, transposeViewMatUniform);
  455. AddVariablePredef(m_shaderVar, transposeInverseViewMatUniform);
  456. AddVariablePredef(m_shaderVar, screenSizeUniform);
  457. AddVariablePredef(m_shaderVar, inverseScreenSizeUniform);
  458. AddVariablePredef(m_shaderVar, screenNumOfPixelsUniform);
  459. AddVariablePredef(m_shaderVar, deltaTimeMSUniform);
  460. AddVariablePredef(m_shaderVar, deltaTimeSUniform);
  461. AddVariablePredef(m_shaderVar, elapsedTimeUniform);
  462. AddVariablePredef(m_shaderVar, gammaUniform);
  463. AddVariablePredef(m_shaderVar, alphaCullingUniform);
  464. AddVariablePredef(m_shaderVar, alphaThresholdUniform);
  465. AddVariablePredef(m_shaderVar, emissiveMultiplierUniform);
  466. AddVariablePredef(m_shaderVar, emissiveThresholdUniform);
  467. AddVariablePredef(m_shaderVar, heightScaleUniform);
  468. AddVariablePredef(m_shaderVar, parallaxMappingNumOfStepsLayersUniform);
  469. AddVariablePredef(m_shaderVar, combinedTextureUniform);
  470. AddVariablePredef(m_shaderVar, textureTilingFactorUniform);
  471. AddVariablePredef(m_shaderVar, stochasticSamplingScaleUniform);
  472. AddVariablePredef(m_shaderVar, LODParallaxUniform);
  473. AddVariablePredef(m_shaderVar, texelSize);
  474. AddVariablePredef(m_shaderVar, numOfTexels);
  475. AddVariablePredef(m_shaderVar, mipLevel);
  476. AddVariablePredef(m_shaderVar, projPlaneRange);
  477. AddVariablePredef(m_shaderVar, ambientLightIntensity);
  478. AddVariablePredef(m_shaderVar, dirLightColor);
  479. AddVariablePredef(m_shaderVar, dirLightDirection);
  480. AddVariablePredef(m_shaderVar, dirLightIntensity);
  481. AddVariablePredef(m_shaderVar, numPointLightsUniform);
  482. AddVariablePredef(m_shaderVar, numSpotLightsUniform);
  483. AddVariablePredef(m_shaderVar, pointLightViewProjectionMatUniform);
  484. AddVariablePredef(m_shaderVar, pointLightBuffer);
  485. AddVariablePredef(m_shaderVar, spotLightBuffer);
  486. AddVariablePredef(m_shaderVar, spotLightViewProjectionMatUniform);
  487. AddVariablePredef(m_shaderVar, stencilPassViewProjectionMatUniform);
  488. AddVariablePredef(m_shaderVar, dirShadowMapMVPUniform);
  489. AddVariablePredef(m_shaderVar, dirShadowMapBiasMVPUniform);
  490. AddVariablePredef(m_shaderVar, cameraPosVecUniform);
  491. AddVariablePredef(m_shaderVar, cameraUpVecUniform);
  492. AddVariablePredef(m_shaderVar, cameraRightVecUniform);
  493. AddVariablePredef(m_shaderVar, positionMapUniform);
  494. AddVariablePredef(m_shaderVar, diffuseMapUniform);
  495. AddVariablePredef(m_shaderVar, normalMapUniform);
  496. AddVariablePredef(m_shaderVar, emissiveMapUniform);
  497. AddVariablePredef(m_shaderVar, matPropertiesMapUniform);
  498. AddVariablePredef(m_shaderVar, intermediateMapUniform);
  499. AddVariablePredef(m_shaderVar, finalMapUniform);
  500. AddVariablePredef(m_shaderVar, depthMapUniform);
  501. AddVariablePredef(m_shaderVar, inputColorMapUniform);
  502. AddVariablePredef(m_shaderVar, outputColorMapUniform);
  503. AddVariablePredef(m_shaderVar, csmBiasScaleUniform);
  504. AddVariablePredef(m_shaderVar, csmDepthMapUniform);
  505. AddVariablePredef(m_shaderVar, csmPenumbraScaleRange);
  506. AddVariablePredef(m_shaderVar, sunGlowTextureUniform);
  507. AddVariablePredef(m_shaderVar, skyMapTextureUniform);
  508. AddVariablePredef(m_shaderVar, dirShadowMapTextureUniform);
  509. AddVariablePredef(m_shaderVar, diffuseTextureUniform);
  510. AddVariablePredef(m_shaderVar, normalTextureUniform);
  511. AddVariablePredef(m_shaderVar, specularTextureUniform);
  512. AddVariablePredef(m_shaderVar, emissiveTextureUniform);
  513. AddVariablePredef(m_shaderVar, glossTextureUniform);
  514. AddVariablePredef(m_shaderVar, heightTextureUniform);
  515. AddVariablePredef(m_shaderVar, combinedTextureUniform);
  516. AddVariablePredef(m_shaderVar, averageLuminanceTexture);
  517. AddVariablePredef(m_shaderVar, noiseTexture);
  518. AddVariablePredef(m_shaderVar, hbaoBlurHorizontalInvResDirection);
  519. AddVariablePredef(m_shaderVar, hbaoBlurVerticalInvResDirection);
  520. AddVariablePredef(m_shaderVar, hbaoBlurNumOfSamples);
  521. AddVariablePredef(m_shaderVar, hbaoBlurSharpness);
  522. AddVariablePredef(m_shaderVar, atmIrradianceTextureUniform);
  523. AddVariablePredef(m_shaderVar, atmScatteringTextureUniform);
  524. AddVariablePredef(m_shaderVar, atmSingleMieScatTextureUniform);
  525. AddVariablePredef(m_shaderVar, atmTransmittanceTextureUniform);
  526. AddVariablePredef(m_shaderVar, bloomTreshold);
  527. AddVariablePredef(m_shaderVar, bloomIntensity);
  528. AddVariablePredef(m_shaderVar, bloomDirtIntensity);
  529. AddVariablePredef(m_shaderVar, inverseLogLuminanceRange);
  530. AddVariablePredef(m_shaderVar, logLuminanceRange);
  531. AddVariablePredef(m_shaderVar, luminanceMultiplier);
  532. AddVariablePredef(m_shaderVar, minLogLuminance);
  533. AddVariablePredef(m_shaderVar, tonemapMethod);
  534. AddVariablePredef(m_shaderVar, lensFlareDirtTextureUniform);
  535. AddVariablePredef(m_shaderVar, lensFlareGhostGradientTextureUniform);
  536. AddVariablePredef(m_shaderVar, lensFlareStarburstTextureUniform);
  537. AddVariablePredef(m_shaderVar, fogDensityUniform);
  538. AddVariablePredef(m_shaderVar, fogColorUniform);
  539. AddVariablePredef(m_shaderVar, billboardScaleUniform);
  540. AddVariablePredef(m_shaderVar, depthTypeUniform);
  541. AddVariablePredef(m_shaderVar, AODataSetBuffer);
  542. AddVariablePredef(m_shaderVar, atmScatParamBuffer);
  543. AddVariablePredef(m_shaderVar, CSMDataSetBuffer);
  544. AddVariablePredef(m_shaderVar, eyeAdaptionRateUniform);
  545. AddVariablePredef(m_shaderVar, eyeAdaptionIntBrightnessUniform);
  546. AddVariablePredef(m_shaderVar, HDRSSBuffer);
  547. AddVariablePredef(m_shaderVar, lensFlareParametersBuffer);
  548. AddVariablePredef(m_shaderVar, materialDataBuffer);
  549. AddVariablePredef(m_shaderVar, SSAOSampleBuffer);
  550. AddVariablePredef(m_shaderVar, testMatUniform);
  551. AddVariablePredef(m_shaderVar, testVecUniform);
  552. AddVariablePredef(m_shaderVar, testFloatUniform);
  553. AddVariablePredef(m_shaderVar, define_alpha_discard);
  554. AddVariablePredef(m_shaderVar, define_fxaa);
  555. AddVariablePredef(m_shaderVar, define_fxaa_edge_threshold_min);
  556. AddVariablePredef(m_shaderVar, define_fxaa_edge_threshold_max);
  557. AddVariablePredef(m_shaderVar, define_fxaa_iterations);
  558. AddVariablePredef(m_shaderVar, define_fxaa_subpixel_quality);
  559. AddVariablePredef(m_shaderVar, define_maxNumOfPointLights);
  560. AddVariablePredef(m_shaderVar, define_maxNumOfSpotLights);
  561. AddVariablePredef(m_shaderVar, define_normalMapCompression);
  562. AddVariablePredef(m_shaderVar, define_numOfCascades);
  563. AddVariablePredef(m_shaderVar, define_numOfMaterialTypes);
  564. AddVariablePredef(m_shaderVar, define_numOfPCFSamples);
  565. AddVariablePredef(m_shaderVar, define_parallaxMapping);
  566. AddVariablePredef(m_shaderVar, define_parallaxMappingMethod);
  567. AddVariablePredef(m_shaderVar, define_shadowMapping);
  568. AddVariablePredef(m_shaderVar, define_stochasticSampling);
  569. AddVariablePredef(m_shaderVar, define_stochasticSamplingSeamFix);
  570. AddVariablePredef(m_shaderVar, define_tonemappingMethod);
  571. // Texture variables
  572. AddVariablePredef(m_textureVar, default_texture);
  573. AddVariablePredef(m_textureVar, default_emissive_texture);
  574. AddVariablePredef(m_textureVar, default_height_texture);
  575. AddVariablePredef(m_textureVar, default_normal_texture);
  576. AddVariablePredef(m_textureVar, default_RMHA_texture);
  577. AddVariablePredef(m_textureVar, default_specular_intensity);
  578. AddVariablePredef(m_textureVar, default_specular_power);
  579. AddVariablePredef(m_textureVar, diffuse_texture_format);
  580. AddVariablePredef(m_textureVar, normal_texture_format);
  581. AddVariablePredef(m_textureVar, emissive_texture_format);
  582. AddVariablePredef(m_textureVar, roughness_texture_format);
  583. AddVariablePredef(m_textureVar, metalness_texture_format);
  584. AddVariablePredef(m_textureVar, height_texture_format);
  585. AddVariablePredef(m_textureVar, ambientOcclusion_texture_format);
  586. AddVariablePredef(m_textureVar, RMHAO_texture_format);
  587. AddVariablePredef(m_textureVar, gl_texture_anisotropy);
  588. AddVariablePredef(m_textureVar, gl_texture_magnification);
  589. AddVariablePredef(m_textureVar, gl_texture_minification);
  590. AddVariablePredef(m_textureVar, gl_texture_magnification_mipmap);
  591. AddVariablePredef(m_textureVar, gl_texture_minification_mipmap);
  592. AddVariablePredef(m_textureVar, number_of_mipmaps);
  593. AddVariablePredef(m_textureVar, texture_compression_format_rgb);
  594. AddVariablePredef(m_textureVar, texture_compression_format_rgba);
  595. AddVariablePredef(m_textureVar, texture_compression_format_normal);
  596. AddVariablePredef(m_textureVar, texture_downsample_max_resolution);
  597. AddVariablePredef(m_textureVar, texture_downsample_scale);
  598. AddVariablePredef(m_textureVar, generate_mipmaps);
  599. AddVariablePredef(m_textureVar, texture_compression);
  600. AddVariablePredef(m_textureVar, texture_normal_compression);
  601. AddVariablePredef(m_textureVar, texture_downsample);
  602. // Window variables
  603. AddVariablePredef(m_windowVar, name);
  604. AddVariablePredef(m_windowVar, default_display);
  605. AddVariablePredef(m_windowVar, window_position_x);
  606. AddVariablePredef(m_windowVar, window_position_y);
  607. AddVariablePredef(m_windowVar, window_size_fullscreen_x);
  608. AddVariablePredef(m_windowVar, window_size_fullscreen_y);
  609. AddVariablePredef(m_windowVar, window_size_windowed_x);
  610. AddVariablePredef(m_windowVar, window_size_windowed_y);
  611. AddVariablePredef(m_windowVar, borderless);
  612. AddVariablePredef(m_windowVar, fullscreen);
  613. AddVariablePredef(m_windowVar, fullscreen_borderless);
  614. AddVariablePredef(m_windowVar, maximized);
  615. AddVariablePredef(m_windowVar, mouse_captured);
  616. AddVariablePredef(m_windowVar, mouse_release_on_lost_focus);
  617. AddVariablePredef(m_windowVar, resizable);
  618. AddVariablePredef(m_windowVar, vertical_sync);
  619. AddVariablePredef(m_windowVar, window_in_focus);
  620. AddVariablePredef(m_windowVar, window_position_centered);
  621. for(int i = Properties::Null; i < Properties::NumberOfPropertyIDs; i++)
  622. {
  623. //Properties::PropertyNames[i] = GetString(static_cast<Properties::PropertyID>(i));
  624. }
  625. }
  626. ErrorCode Config::loadFromFile(const std::string &p_filename)
  627. {
  628. std::ifstream configFile(p_filename, std::ifstream::in);
  629. std::string singleWord;
  630. ErrorCode returnCode = ErrorCode::Success;
  631. if(configFile.fail())
  632. {
  633. returnCode = ErrorCode::Ifstream_failed;
  634. }
  635. else
  636. {
  637. while(!configFile.eof())
  638. {
  639. // Get next word
  640. configFile >> singleWord;
  641. // Match the word in the hash table
  642. auto tableEntry = m_hashTable.find(singleWord);
  643. // If match was found
  644. if(tableEntry != m_hashTable.end())
  645. {
  646. // Get map key and next word (that will be converted to value)
  647. auto mapKey = tableEntry->second;
  648. configFile >> singleWord;
  649. // Pass the word as a value
  650. m_variables[mapKey - m_varVectorOffset].setVariable(singleWord);
  651. // DEBUGGING: log an info error about modified variable
  652. ErrHandlerLoc::get().log(Info, Source_Config, m_variables[mapKey - m_varVectorOffset].toString());
  653. }
  654. }
  655. }
  656. configFile.close();
  657. // Check boundaries of some values that are integer representations of enums
  658. if(m_rendererVar.heightmap_combine_channel < TextureColorChannelOffset::ColorOffset_Red ||
  659. m_rendererVar.heightmap_combine_channel >= TextureColorChannelOffset::ColorOffset_NumChannels)
  660. m_rendererVar.heightmap_combine_channel = TextureColorChannelOffset::ColorOffset_Alpha;
  661. if(m_rendererVar.heightmap_combine_texture < MaterialType_Diffuse ||
  662. m_rendererVar.heightmap_combine_texture >= MaterialType_NumOfTypes)
  663. m_rendererVar.heightmap_combine_texture = MaterialType_Normal;
  664. return returnCode;
  665. }
  666. ErrorCode Config::saveToFile(const std::string &p_filename)
  667. {
  668. std::string fileContents;
  669. for(std::vector<Variable>::size_type i = 0, size = m_variables.size(); i < size; i++)
  670. {
  671. // Only add variables that have been changed (if they haven't no need to add them,
  672. // since they are initialized to that value by default
  673. if(m_variables[i].valueChanged())
  674. {
  675. fileContents += m_variables[i].toString() + "\n";
  676. }
  677. }
  678. return ErrorCode::Success;
  679. }
  680. void Config::setVariable(std::string p_name, std::string p_variable)
  681. {
  682. // Match the name in the hash table
  683. auto tableEntry = m_hashTable.find(p_name);
  684. // If match was found
  685. if(tableEntry != m_hashTable.end())
  686. {
  687. // Get map key
  688. auto mapKey = tableEntry->second;
  689. // Pass the word as a value
  690. m_variables[mapKey - m_varVectorOffset].setVariable(p_variable);
  691. // DEBUGGING: log an info error about modified variable
  692. ErrHandlerLoc::get().log(Info, Source_Config, m_variables[mapKey - m_varVectorOffset].toString());
  693. }
  694. }