Rigs of Rods 2026.01
Soft-body Physics Simulation
Loading...
Searching...
No Matches
CVar.cpp
Go to the documentation of this file.
1/*
2 This source file is part of Rigs of Rods
3 Copyright 2005-2012 Pierre-Michel Ricordel
4 Copyright 2007-2012 Thomas Fischer
5 Copyright 2013-2020 Petr Ohlidal
6
7 For more information, see http://www.rigsofrods.org/
8
9 Rigs of Rods is free software: you can redistribute it and/or modify
10 it under the terms of the GNU General Public License version 3, as
11 published by the Free Software Foundation.
12
13 Rigs of Rods is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
17
18 You should have received a copy of the GNU General Public License
19 along with Rigs of Rods. If not, see <http://www.gnu.org/licenses/>.
20*/
21
22#include "Application.h"
23#include "Console.h"
24
25#include <Ogre.h>
26
27using namespace RoR;
28
30{
31 App::app_state = this->cVarCreate("app_state", "", CVAR_TYPE_INT, "0"/*(int)AppState::BOOTSTRAP*/);
32 App::app_language = this->cVarCreate("app_language", "Language", CVAR_ARCHIVE, "en");
33 App::app_country = this->cVarCreate("app_country", "Country", CVAR_ARCHIVE, "us");
34 App::app_skip_main_menu = this->cVarCreate("app_skip_main_menu", "SkipMainMenu", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
35 App::app_async_physics = this->cVarCreate("app_async_physics", "AsyncPhysics", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "true");
36 App::app_num_workers = this->cVarCreate("app_num_workers", "NumWorkerThreads", CVAR_ARCHIVE | CVAR_TYPE_INT);
37 App::app_screenshot_format = this->cVarCreate("app_screenshot_format", "Screenshot Format", CVAR_ARCHIVE, "png");
38 App::app_rendersys_override = this->cVarCreate("app_rendersys_override", "Render system", CVAR_ARCHIVE);
39 App::app_extra_mod_path = this->cVarCreate("app_extra_mod_path", "Extra mod path", CVAR_ARCHIVE);
40 App::app_force_cache_purge = this->cVarCreate("app_force_cache_purge", "", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
41 App::app_force_cache_update = this->cVarCreate("app_force_cache_update", "", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
42 App::app_disable_online_api = this->cVarCreate("app_disable_online_api", "Disable Online API", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
43 App::app_config_long_names = this->cVarCreate("app_config_long_names", "Config uses long names", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "true");
44 App::app_custom_scripts = this->cVarCreate("app_custom_scripts", "", CVAR_ARCHIVE, "");
45 App::app_recent_scripts = this->cVarCreate("app_recent_scripts", "", CVAR_ARCHIVE, "");
46
47 App::sim_state = this->cVarCreate("sim_state", "", CVAR_TYPE_INT, "0"/*(int)SimState::OFF*/);
48 App::sim_terrain_name = this->cVarCreate("sim_terrain_name", "", 0);
49 App::sim_terrain_gui_name = this->cVarCreate("sim_terrain_gui_name", "", 0);
50 App::sim_spawn_running = this->cVarCreate("sim_spawn_running", "Engines spawn running", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "true");
51 App::sim_replay_enabled = this->cVarCreate("sim_replay_enabled", "Replay mode", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
52 App::sim_replay_length = this->cVarCreate("sim_replay_length", "Replay length", CVAR_ARCHIVE | CVAR_TYPE_INT, "200");
53 App::sim_replay_stepping = this->cVarCreate("sim_replay_stepping", "Replay Steps per second", CVAR_ARCHIVE | CVAR_TYPE_INT, "1000");
54 App::sim_realistic_commands = this->cVarCreate("sim_realistic_commands", "Realistic forward commands", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
55 App::sim_races_enabled = this->cVarCreate("sim_races_enabled", "Races", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "true");
56 App::sim_no_collisions = this->cVarCreate("sim_no_collisions", "DisableCollisions", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
57 App::sim_no_self_collisions = this->cVarCreate("sim_no_self_collisions", "DisableSelfCollisions", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
58 App::sim_gearbox_mode = this->cVarCreate("sim_gearbox_mode", "GearboxMode", CVAR_ARCHIVE | CVAR_TYPE_INT);
59 App::sim_soft_reset_mode = this->cVarCreate("sim_soft_reset_mode", "", CVAR_TYPE_BOOL, "false");
60 App::sim_quickload_dialog = this->cVarCreate("sim_quickload_dialog", "", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "true");
61 App::sim_live_repair_interval = this->cVarCreate("sim_live_repair_interval", "", CVAR_ARCHIVE | CVAR_TYPE_FLOAT, "2.f");
62 App::sim_tuning_enabled = this->cVarCreate("sim_tuning_enabled", "", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "true");
63
64 App::mp_state = this->cVarCreate("mp_state", "", CVAR_TYPE_INT, "0"/*(int)MpState::DISABLED*/);
65 App::mp_join_on_startup = this->cVarCreate("mp_join_on_startup", "Auto connect", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
66 App::mp_chat_auto_hide = this->cVarCreate("mp_chat_auto_hide", "Auto hide chat", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "true");
67 App::mp_hide_net_labels = this->cVarCreate("mp_hide_net_labels", "Hide net labels", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
68 App::mp_hide_own_net_label = this->cVarCreate("mp_hide_own_net_label", "Hide own net label", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "true");
69 App::mp_pseudo_collisions = this->cVarCreate("mp_pseudo_collisions", "Multiplayer collisions", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
70 App::mp_server_host = this->cVarCreate("mp_server_host", "Server name", CVAR_ARCHIVE);
71 App::mp_server_port = this->cVarCreate("mp_server_port", "Server port", CVAR_ARCHIVE | CVAR_TYPE_INT);
72 App::mp_server_password = this->cVarCreate("mp_server_password", "Server password", CVAR_ARCHIVE | CVAR_NO_LOG);
73 App::mp_player_name = this->cVarCreate("mp_player_name", "Nickname", CVAR_ARCHIVE, "Player");
74 App::mp_player_token = this->cVarCreate("mp_player_token", "User Token", CVAR_ARCHIVE | CVAR_NO_LOG);
75 App::mp_api_url = this->cVarCreate("mp_api_url", "Online API URL", CVAR_ARCHIVE, "http://api.rigsofrods.org");
76 App::mp_cyclethru_net_actors = this->cVarCreate("mp_cyclethru_net_actors", "", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
77
78 App::remote_query_url = this->cVarCreate("remote_query_url", "", CVAR_ARCHIVE, "https://v2.api.rigsofrods.org");
79
80 App::diag_auto_spawner_report= this->cVarCreate("diag_auto_spawner_report","AutoActorSpawnerReport", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
81 App::diag_camera = this->cVarCreate("diag_camera", "Camera Debug", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
82 App::diag_rig_log_node_import= this->cVarCreate("diag_rig_log_node_import","RigImporter_LogAllNodes", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
83 App::diag_rig_log_node_stats = this->cVarCreate("diag_rig_log_node_stats", "RigImporter_LogNodeStats", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
84 App::diag_truck_mass = this->cVarCreate("diag_truck_mass", "Debug Truck Mass", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
85 App::diag_envmap = this->cVarCreate("diag_envmap", "EnvMapDebug", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
86 App::diag_videocameras = this->cVarCreate("diag_videocameras", "VideoCameraDebug", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
87 App::diag_preset_terrain = this->cVarCreate("diag_preset_terrain", "Preselected Terrain", CVAR_ARCHIVE);
88 App::diag_preset_spawn_pos = this->cVarCreate("diag_spawn_position", "", CVAR_ARCHIVE);
89 App::diag_preset_spawn_rot = this->cVarCreate("diag_spawn_rotation", "", CVAR_ARCHIVE);
90 App::diag_preset_vehicle = this->cVarCreate("diag_preset_vehicle", "Preselected Truck", CVAR_ARCHIVE);
91 App::diag_preset_veh_config = this->cVarCreate("diag_preset_veh_config", "Preselected TruckConfig", CVAR_ARCHIVE);
92 App::diag_preset_veh_enter = this->cVarCreate("diag_preset_veh_enter", "Enter Preselected Truck", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
93 App::diag_log_console_echo = this->cVarCreate("diag_log_console_echo", "Enable Ingame Console", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
94 App::diag_log_beam_break = this->cVarCreate("diag_log_beam_break", "Beam Break Debug", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
95 App::diag_log_beam_deform = this->cVarCreate("diag_log_beam_deform", "Beam Deform Debug", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
96 App::diag_log_beam_trigger = this->cVarCreate("diag_log_beam_trigger", "Trigger Debug", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
97 App::diag_simple_materials = this->cVarCreate("diag_simple_materials", "SimpleMaterials", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
98 App::diag_warning_texture = this->cVarCreate("diag_warning_texture", "Warning texture", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
99 App::diag_hide_broken_beams = this->cVarCreate("diag_hide_broken_beams", "Hide broken beams", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
100 App::diag_hide_beam_stress = this->cVarCreate("diag_hide_beam_stress", "Hide beam stress", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "true");
101 App::diag_hide_wheel_info = this->cVarCreate("diag_hide_wheel_info", "Hide wheel info", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "true");
102 App::diag_hide_wheels = this->cVarCreate("diag_hide_wheels", "Hide wheels", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
103 App::diag_hide_nodes = this->cVarCreate("diag_hide_nodes", "Hide nodes", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
104 App::diag_terrn_log_roads = this->cVarCreate("diag_terrn_log_roads", "", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
105 App::diag_actor_dump = this->cVarCreate("diag_actor_dump", "", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
106 App::diag_allow_window_resize= this->cVarCreate("diag_allow_window_resize","", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
107 App::diag_use_mygui_logfile = this->cVarCreate("diag_use_mygui_logfile", "", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
108 App::diag_load_devel_scripts = this->cVarCreate("diag_load_devel_scripts", "", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
109 App::diag_profiler_enabled = this->cVarCreate("diag_profiler_enabled", "", CVAR_TYPE_BOOL, "false");
110 App::diag_profiler_rate = this->cVarCreate("diag_profiler_rate", "", CVAR_ARCHIVE | CVAR_TYPE_INT, "10");
111 App::diag_angelscript_generic_bind_test = this->cVarCreate("diag_angelscript_generic_bind_test", "", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
112
113 App::sys_process_dir = this->cVarCreate("sys_process_dir", "", 0);
114 App::sys_user_dir = this->cVarCreate("sys_user_dir", "", 0);
115 App::sys_config_dir = this->cVarCreate("sys_config_dir", "Config Root", 0);
116 App::sys_cache_dir = this->cVarCreate("sys_cache_dir", "Cache Path", 0);
117 App::sys_thumbnails_dir = this->cVarCreate("sys_thumbnails_dir", "Thumbnails Path", 0);
118 App::sys_logs_dir = this->cVarCreate("sys_logs_dir", "Log Path", 0);
119 App::sys_resources_dir = this->cVarCreate("sys_resources_dir", "Resources Path", 0);
120 App::sys_profiler_dir = this->cVarCreate("sys_profiler_dir", "Profiler output dir", 0);
121 App::sys_savegames_dir = this->cVarCreate("sys_savegames_dir", "", 0);
122 App::sys_screenshot_dir = this->cVarCreate("sys_screenshot_dir", "", 0);
123 App::sys_scripts_dir = this->cVarCreate("sys_scripts_dir", "", 0);
124 App::sys_server_scripts_dir = this->cVarCreate("sys_server_scripts_dir", "", 0);
125 App::sys_projects_dir = this->cVarCreate("sys_projects_dir", "", 0);
126 App::sys_repo_attachments_dir= this->cVarCreate("sys_repo_attachments_dir","", 0);
127
128 App::cli_server_host = this->cVarCreate("cli_server_host", "", 0);
129 App::cli_server_port = this->cVarCreate("cli_server_port", "", CVAR_TYPE_INT, "0");
130 App::cli_preset_vehicle = this->cVarCreate("cli_preset_vehicle", "", 0);
131 App::cli_preset_veh_config = this->cVarCreate("cli_preset_veh_config", "", 0);
132 App::cli_preset_terrain = this->cVarCreate("cli_preset_terrain", "", 0);
133 App::cli_preset_spawn_pos = this->cVarCreate("cli_preset_spawn_pos", "", 0);
134 App::cli_preset_spawn_rot = this->cVarCreate("cli_preset_spawn_rot", "", 0);
135 App::cli_preset_veh_enter = this->cVarCreate("cli_preset_veh_enter", "", CVAR_TYPE_BOOL, "false");
136 App::cli_force_cache_update = this->cVarCreate("cli_force_cache_update", "", CVAR_TYPE_BOOL, "false");
137 App::cli_resume_autosave = this->cVarCreate("cli_resume_autosave", "", CVAR_TYPE_BOOL, "false");
138 App::cli_custom_scripts = this->cVarCreate("cli_custom_scripts", "", 0, "");
139
140 App::io_analog_smoothing = this->cVarCreate("io_analog_smoothing", "Analog Input Smoothing", CVAR_ARCHIVE | CVAR_TYPE_FLOAT, "1.0");
141 App::io_analog_sensitivity = this->cVarCreate("io_analog_sensitivity", "Analog Input Sensitivity", CVAR_ARCHIVE | CVAR_TYPE_FLOAT, "1.0");
142 App::io_blink_lock_range = this->cVarCreate("io_blink_lock_range", "Blinker Lock Range", CVAR_ARCHIVE | CVAR_TYPE_FLOAT, "0.1");
143 App::io_ffb_enabled = this->cVarCreate("io_ffb_enabled", "Force Feedback", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
144 App::io_ffb_camera_gain = this->cVarCreate("io_ffb_camera_gain", "Force Feedback Camera", CVAR_ARCHIVE | CVAR_TYPE_FLOAT);
145 App::io_ffb_center_gain = this->cVarCreate("io_ffb_center_gain", "Force Feedback Centering", CVAR_ARCHIVE | CVAR_TYPE_FLOAT);
146 App::io_ffb_master_gain = this->cVarCreate("io_ffb_master_gain", "Force Feedback Gain", CVAR_ARCHIVE | CVAR_TYPE_FLOAT);
147 App::io_ffb_stress_gain = this->cVarCreate("io_ffb_stress_gain", "Force Feedback Stress", CVAR_ARCHIVE | CVAR_TYPE_FLOAT);
148 App::io_input_grab_mode = this->cVarCreate("io_input_grab_mode", "Input Grab", CVAR_ARCHIVE | CVAR_TYPE_INT, "1"/*(int)IoInputGrabMode::ALL*/);
149 App::io_arcade_controls = this->cVarCreate("io_arcade_controls", "ArcadeControls", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
150 App::io_hydro_coupling = this->cVarCreate("io_hydro_coupling", "Keyboard Steering Speed Coupling",CVAR_ARCHIVE | CVAR_TYPE_BOOL, "true");
151 App::io_outgauge_mode = this->cVarCreate("io_outgauge_mode", "OutGauge Mode", CVAR_ARCHIVE | CVAR_TYPE_INT); // 0 = disabled, 1 = enabled
152 App::io_outgauge_ip = this->cVarCreate("io_outgauge_ip", "OutGauge IP", CVAR_ARCHIVE, "192.168.1.100");
153 App::io_outgauge_port = this->cVarCreate("io_outgauge_port", "OutGauge Port", CVAR_ARCHIVE | CVAR_TYPE_INT, "1337");
154 App::io_outgauge_delay = this->cVarCreate("io_outgauge_delay", "OutGauge Delay", CVAR_ARCHIVE | CVAR_TYPE_FLOAT, "10.0");
155 App::io_outgauge_id = this->cVarCreate("io_outgauge_id", "OutGauge ID", CVAR_ARCHIVE | CVAR_TYPE_INT);
156 App::io_discord_rpc = this->cVarCreate("io_discord_rpc", "Discord Rich Presence", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "true");
157 App::io_invert_orbitcam = this->cVarCreate("io_invert_orbitcam", "Invert orbit camera", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
158
159 App::audio_master_volume = this->cVarCreate("audio_master_volume", "Sound Volume", CVAR_ARCHIVE | CVAR_TYPE_FLOAT, "1.0");
160 App::audio_enable_creak = this->cVarCreate("audio_enable_creak", "Creak Sound", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
161 App::audio_enable_obstruction = this->cVarCreate("audio_enable_obstruction", "Obstruction of sounds", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
162 App::audio_enable_occlusion = this->cVarCreate("audio_enable_occlusion", "Occlusion of sounds", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
163 App::audio_enable_directed_sounds = this->cVarCreate("audio_enable_directed_sounds", "Directed sounds", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
164 App::audio_enable_reflection_panning = this->cVarCreate("audio_enable_reflection_panning", "Pan reflections", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
165 App::audio_device_name = this->cVarCreate("audio_device_name", "AudioDevice", CVAR_ARCHIVE);
166 App::audio_doppler_factor = this->cVarCreate("audio_doppler_factor", "Doppler Factor", CVAR_ARCHIVE | CVAR_TYPE_FLOAT, "1.0");
167 App::audio_menu_music = this->cVarCreate("audio_menu_music", "MainMenuMusic", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
168 App::audio_enable_efx = this->cVarCreate("audio_enable_efx", "Enable OpenAL EFX", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "true");
169 App::audio_engine_controls_environmental_audio = this->cVarCreate("audio_engine_controls_environmental_audio", "Engine-controlled environm. audio", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "true");
170 App::audio_efx_reverb_engine = this->cVarCreate("audio_efx_reverb_engine", "OpenAL EFX Reverb Engine", CVAR_ARCHIVE | CVAR_TYPE_INT, "2"/*(int)EfxReverbEngine::EAXREVERB*/);
171 App::audio_default_efx_preset = this->cVarCreate("audio_default_efx_preset", "OpenAL default EFX preset", CVAR_ARCHIVE);
172 App::audio_force_listener_efx_preset = this->cVarCreate("audio_force_listener_efx_preset", "OpenAL forced listener EFX preset", CVAR_ARCHIVE);
173 App::audio_force_obstruction_inside_vehicles = this->cVarCreate("audio_force_obstruction_inside_vehicles", "Force obstruction inside vehicles", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
174 App::audio_sim_pause_disables_doppler_effect = this->cVarCreate("audio_sim_pause_disables_doppler_effect", "Disable Doppler effect on sim pause", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "true");
175
176 App::gfx_flares_mode = this->cVarCreate("gfx_flares_mode", "Lights", CVAR_ARCHIVE | CVAR_TYPE_INT, "4"/*(int)GfxFlaresMode::ALL_VEHICLES_ALL_LIGHTS*/);
177 App::gfx_polygon_mode = this->cVarCreate("gfx_polygon_mode", "Polygon mode", CVAR_TYPE_INT, "1"/*(int)Ogre::PM_SOLID*/);
178 App::gfx_shadow_type = this->cVarCreate("gfx_shadow_type", "Shadow technique", CVAR_ARCHIVE | CVAR_TYPE_INT, "1"/*(int)GfxShadowType::PSSM*/);
179 App::gfx_extcam_mode = this->cVarCreate("gfx_extcam_mode", "External Camera Mode", CVAR_ARCHIVE | CVAR_TYPE_INT, "2"/*(int)GfxExtCamMode::PITCHING*/);
180 App::gfx_sky_mode = this->cVarCreate("gfx_sky_mode", "Sky effects", CVAR_ARCHIVE | CVAR_TYPE_INT, "1"/*(int)GfxSkyMode::CAELUM*/);
181 App::gfx_texture_filter = this->cVarCreate("gfx_texture_filter", "Texture Filtering", CVAR_ARCHIVE | CVAR_TYPE_INT, "3"/*(int)GfxTexFilter::ANISOTROPIC*/);
182 App::gfx_vegetation_mode = this->cVarCreate("gfx_vegetation_mode", "Vegetation", CVAR_ARCHIVE | CVAR_TYPE_INT, "3"/*(int)GfxVegetation::FULL*/);
183 App::gfx_sky_time_cycle = this->cVarCreate("gfx_sky_time_cycle", "", CVAR_TYPE_BOOL, "false");
184 App::gfx_sky_time_speed = this->cVarCreate("gfx_sky_time_speed", "", CVAR_TYPE_INT, "300");
185 App::gfx_water_mode = this->cVarCreate("gfx_water_mode", "Water effects", CVAR_ARCHIVE | CVAR_TYPE_INT, "3"/*(int)GfxWaterMode::FULL_FAST*/);
186 App::gfx_anisotropy = this->cVarCreate("gfx_anisotropy", "Anisotropy", CVAR_ARCHIVE | CVAR_TYPE_INT, "4");
187 App::gfx_water_waves = this->cVarCreate("gfx_water_waves", "Waves", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
188 App::gfx_particles_mode = this->cVarCreate("gfx_particles_mode", "Particles", CVAR_ARCHIVE | CVAR_TYPE_INT);
189 App::gfx_enable_videocams = this->cVarCreate("gfx_enable_videocams", "gfx_enable_videocams", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
190 App::gfx_window_videocams = this->cVarCreate("gfx_window_videocams", "UseVideocameraWindows", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
191 App::gfx_surveymap_icons = this->cVarCreate("gfx_surveymap_icons", "Overview map icons", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "true");
192 App::gfx_declutter_map = this->cVarCreate("gfx_declutter_map", "Declutter overview map", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "true");
193 App::gfx_envmap_enabled = this->cVarCreate("gfx_envmap_enabled", "Reflections", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "true");
194 App::gfx_envmap_rate = this->cVarCreate("gfx_envmap_rate", "ReflectionUpdateRate", CVAR_ARCHIVE | CVAR_TYPE_INT, "1");
195 App::gfx_shadow_quality = this->cVarCreate("gfx_shadow_quality", "Shadows Quality", CVAR_ARCHIVE | CVAR_TYPE_INT, "2");
196 App::gfx_skidmarks_mode = this->cVarCreate("gfx_skidmarks_mode", "Skidmarks", CVAR_ARCHIVE | CVAR_TYPE_INT, "0");
197 App::gfx_sight_range = this->cVarCreate("gfx_sight_range", "SightRange", CVAR_ARCHIVE | CVAR_TYPE_INT, "5000");
198 App::gfx_camera_height = this->cVarCreate("gfx_camera_height", "Static camera height", CVAR_ARCHIVE | CVAR_TYPE_INT, "5");
199 App::gfx_fov_external = this->cVarCreate("gfx_fov_external", "", CVAR_TYPE_INT, "60");
200 App::gfx_fov_external_default= this->cVarCreate("gfx_fov_external_default","FOV External", CVAR_ARCHIVE | CVAR_TYPE_INT, "60");
201 App::gfx_fov_internal = this->cVarCreate("gfx_fov_internal", "", CVAR_TYPE_INT, "75");
202 App::gfx_fov_internal_default= this->cVarCreate("gfx_fov_internal_default","FOV Internal", CVAR_ARCHIVE | CVAR_TYPE_INT, "75");
203 App::gfx_static_cam_fov_exp = this->cVarCreate("gfx_static_cam_fov_exp", "", CVAR_ARCHIVE | CVAR_TYPE_FLOAT, "1.0");
204 App::gfx_fixed_cam_tracking = this->cVarCreate("gfx_fixed_cam_tracking", "", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
205 App::gfx_fps_limit = this->cVarCreate("gfx_fps_limit", "FPS-Limiter", CVAR_ARCHIVE | CVAR_TYPE_INT, "0");
206 App::gfx_speedo_imperial = this->cVarCreate("gfx_speedo_imperial", "gfx_speedo_imperial", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
207 App::gfx_flexbody_cache = this->cVarCreate("gfx_flexbody_cache", "Flexbody_UseCache", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
208 App::gfx_reduce_shadows = this->cVarCreate("gfx_reduce_shadows", "Shadow optimizations", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "true");
209 App::gfx_enable_rtshaders = this->cVarCreate("gfx_enable_rtshaders", "Use RTShader System", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
210 App::gfx_alt_actor_materials = this->cVarCreate("gfx_alt_actor_materials", "Use alternate vehicle materials", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
211 App::gfx_auto_lod = this->cVarCreate("gfx_auto_lod", "Use OGREs Automatic Mesh LOD Generator", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "true");
212
213 App::flexbody_defrag_enabled = this->cVarCreate("flexbody_defrag_enabled", "", CVAR_TYPE_BOOL);
214 App::flexbody_defrag_const_penalty = this->cVarCreate("flexbody_defrag_const_penalty", "", CVAR_TYPE_INT, "7");
215 App::flexbody_defrag_prog_up_penalty = this->cVarCreate("flexbody_defrag_prog_up_penalty", "", CVAR_TYPE_INT, "3");
216 App::flexbody_defrag_prog_down_penalty = this->cVarCreate("flexbody_defrag_prog_down_penalty", "", CVAR_TYPE_INT, "1");
217 App::flexbody_defrag_reorder_indices = this->cVarCreate("flexbody_defrag_reorder_indices", "", CVAR_TYPE_BOOL, "true");
218 App::flexbody_defrag_reorder_texcoords = this->cVarCreate("flexbody_defrag_reorder_texcoords", "", CVAR_TYPE_BOOL, "true");
219 App::flexbody_defrag_invert_lookup = this->cVarCreate("flexbody_defrag_invert_lookup", "", CVAR_TYPE_BOOL, "true");
220
221 App::ui_show_live_repair_controls = this->cVarCreate("ui_show_live_repair_controls", "", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "true");
222 App::ui_show_vehicle_buttons = this->cVarCreate("ui_show_vehicle_buttons", "Show vehicle buttons menu", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "true");
223 App::ui_preset = this->cVarCreate("ui_preset", "", CVAR_ARCHIVE | CVAR_TYPE_INT, "0"/*(int)UiPreset::NOVICE*/);
224 App::ui_hide_gui = this->cVarCreate("ui_hide_gui", "", CVAR_TYPE_BOOL, "false");
225 App::ui_default_truck_dash = this->cVarCreate("ui_default_truck_dash", "", CVAR_ARCHIVE, "default_truck_digital.dashboard");
226 App::ui_legacy_truck_renderdash = this->cVarCreate("ui_legacy_truck_renderdash", "", CVAR_ARCHIVE, "rdd_classic.dashboard");
227 App::ui_default_boat_dash = this->cVarCreate("ui_default_boat_dash", "", CVAR_ARCHIVE, "default_boat.dashboard");
228 App::ui_always_show_fullsize = this->cVarCreate("ui_always_show_fullsize", "", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
229 App::ui_dashboard_cinecam = this->cVarCreate("ui_dashboard_cinecam", "Hide dashboard in cinecam view", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "true");
230 App::ui_keep_search = this->cVarCreate("ui_keep_search", "Retain selector search text", CVAR_ARCHIVE | CVAR_TYPE_BOOL, "false");
231 App::ui_scale_factor = this->cVarCreate("ui_scale_factor", "UI scale factor", CVAR_ARCHIVE | CVAR_TYPE_FLOAT, "1.0");
232}
233
234CVar* Console::cVarCreate(std::string const& name, std::string const& long_name,
235 int flags, std::string const& val/* = std::string()*/)
236{
237 CVar* cvar = nullptr;
238 if (long_name == "")
239 {
240 cvar = new CVar(name, name, flags);
241 }
242 else
243 {
244 cvar = new CVar(name, long_name, flags);
245 }
246
247 if (!val.empty())
248 {
249 this->cVarAssign(cvar, val);
250 }
251
252 m_cvars.insert(std::make_pair(name, cvar));
253 m_cvars_longname.insert(std::make_pair(long_name, cvar));
254
255 return cvar;
256}
257
258void Console::cVarAssign(CVar* cvar, std::string const& value)
259{
261 {
262 float val = 0.f;
263 if (cvar->hasFlag(CVAR_TYPE_BOOL)) { val = (float)Ogre::StringConverter::parseBool(value); }
264 else if (cvar->hasFlag(CVAR_TYPE_INT)) { val = (float)Ogre::StringConverter::parseInt(value); }
265 else if (cvar->hasFlag(CVAR_TYPE_FLOAT)) { val = Ogre::StringConverter::parseReal(value); }
266
267
268 cvar->setVal(val);
269 }
270 else
271 {
272 cvar->setStr(value);
273 }
274}
275
276CVar* Console::cVarFind(std::string const& input_name)
277{
278 CVarPtrMap::const_iterator itor = m_cvars.find(input_name);
279 if (itor != m_cvars.end())
280 {
281 return itor->second;
282 }
283
284 itor = m_cvars_longname.find(input_name);
285 if (itor != m_cvars_longname.end())
286 {
287 return itor->second;
288 }
289
290 return nullptr;
291}
292
293CVar* Console::cVarSet(std::string const& input_name, std::string const& input_val)
294{
295 CVar* found = this->cVarFind(input_name);
296 if (found)
297 {
298 this->cVarAssign(found, input_val);
299 }
300
301 return nullptr;
302}
303
304CVar* Console::cVarGet(std::string const& input_name, int flags)
305{
306 CVar* found = this->cVarFind(input_name);
307 if (found)
308 {
309 return found;
310 }
311
312 return this->cVarCreate(input_name, input_name, flags);
313}
314
315void CVar::logUpdate(std::string const& new_val)
316{
317 if (!Ogre::LogManager::getSingletonPtr())
318 return;
319
320 if (this->hasFlag(CVAR_NO_LOG))
321 return;
322
323 LogFormat("[RoR|CVar] %20s: \"%s\" (was: \"%s\")",
324 m_name.c_str(), new_val.c_str(), m_value_str.c_str());
325}
326
327std::string CVar::convertStr(float val)
328{
329 if (this->hasFlag(CVAR_TYPE_BOOL))
330 {
331 return ((bool)val) ? "Yes" : "No";
332 }
333 else if (this->hasFlag(CVAR_TYPE_INT))
334 {
335 return Ogre::StringUtil::format("%d", (int)val);
336 }
337 else if (this->hasFlag(CVAR_TYPE_FLOAT))
338 {
339 return std::to_string((float)val);
340 }
341 else
342 {
343 return std::to_string(val);
344 }
345}
Central state/object manager and communications hub.
Quake-style console variable, defined in RoR.cfg or crated via Console UI and scripts.
Definition CVar.h:53
std::string m_value_str
Definition CVar.h:116
std::string m_name
Definition CVar.h:113
std::string convertStr(float val)
Definition CVar.cpp:327
T getEnum() const
Definition CVar.h:99
void setStr(std::string const &str)
Definition CVar.h:83
void setVal(T val)
Definition CVar.h:72
bool hasFlag(int f) const
Definition CVar.h:105
void logUpdate(std::string const &new_val)
Definition CVar.cpp:315
CVar * cVarSet(std::string const &input_name, std::string const &input_val)
Set existing cvar by short/long name. Return the modified cvar (or NULL if not found)
Definition CVar.cpp:293
void cVarAssign(CVar *cvar, std::string const &value)
Parse value by cvar type.
Definition CVar.cpp:258
CVar * cVarCreate(std::string const &name, std::string const &long_name, int flags, std::string const &val=std::string())
Add CVar and parse default value if specified.
Definition CVar.cpp:234
CVarPtrMap m_cvars
Definition Console.h:160
void cVarSetupBuiltins()
Create builtin vars and set defaults.
Definition CVar.cpp:29
CVar * cVarFind(std::string const &input_name)
Find cvar by short/long name.
Definition CVar.cpp:276
CVarPtrMap m_cvars_longname
Definition Console.h:161
CVar * cVarGet(std::string const &input_name, int flags)
Get cvar by short/long name, or create new one using input as short name.
Definition CVar.cpp:304
@ CVAR_ARCHIVE
Will be written to RoR.cfg.
Definition CVar.h:41
@ CVAR_TYPE_INT
Definition CVar.h:39
@ CVAR_NO_LOG
Will not be written to RoR.log.
Definition CVar.h:42
@ CVAR_TYPE_FLOAT
Definition CVar.h:40
@ CVAR_TYPE_BOOL
Definition CVar.h:38
CVar * cli_server_host
CVar * mp_player_name
CVar * diag_profiler_rate
CVar * diag_warning_texture
CVar * gfx_sky_mode
CVar * io_ffb_enabled
CVar * mp_server_password
CVar * flexbody_defrag_const_penalty
CVar * gfx_polygon_mode
CVar * mp_api_url
CVar * gfx_static_cam_fov_exp
CVar * audio_force_listener_efx_preset
CVar * flexbody_defrag_prog_up_penalty
CVar * ui_show_live_repair_controls
bool
CVar * audio_efx_reverb_engine
CVar * sys_repo_attachments_dir
CVar * audio_menu_music
CVar * app_screenshot_format
CVar * gfx_sky_time_cycle
CVar * audio_enable_directed_sounds
CVar * mp_hide_own_net_label
CVar * io_outgauge_delay
CVar * gfx_water_mode
CVar * sim_state
CVar * mp_hide_net_labels
CVar * ui_show_vehicle_buttons
CVar * audio_enable_obstruction
CVar * sys_projects_dir
CVar * io_outgauge_mode
CVar * diag_auto_spawner_report
CVar * gfx_extcam_mode
CVar * sim_spawn_running
CVar * diag_actor_dump
CVar * remote_query_url
CVar * io_blink_lock_range
CVar * diag_log_beam_trigger
CVar * cli_resume_autosave
CVar * flexbody_defrag_reorder_texcoords
CVar * cli_custom_scripts
CVar * audio_doppler_factor
CVar * flexbody_defrag_prog_down_penalty
CVar * cli_force_cache_update
CVar * diag_rig_log_node_import
CVar * ui_dashboard_cinecam
CVar * cli_preset_veh_config
CVar * diag_allow_window_resize
CVar * gfx_envmap_rate
CVar * app_num_workers
CVar * app_language
CVar * sys_logs_dir
CVar * app_skip_main_menu
CVar * cli_preset_veh_enter
CVar * io_invert_orbitcam
CVar * diag_rig_log_node_stats
CVar * ui_preset
enum RoR::UiPreset
CVar * gfx_fov_internal_default
CVar * sim_terrain_name
CVar * sim_replay_length
CVar * gfx_sky_time_speed
CVar * sim_races_enabled
CVar * app_rendersys_override
CVar * io_outgauge_port
CVar * audio_default_efx_preset
CVar * sim_terrain_gui_name
CVar * audio_enable_reflection_panning
CVar * audio_enable_creak
CVar * diag_preset_vehicle
CVar * ui_scale_factor
float; Resizes imgui-based UI (fonts + style sizes); apply by pushing MSG_APP_REINIT_UI_REQUESTED.
CVar * gfx_sight_range
CVar * audio_sim_pause_disables_doppler_effect
CVar * sys_profiler_dir
CVar * app_country
CVar * audio_force_obstruction_inside_vehicles
CVar * mp_cyclethru_net_actors
Include remote actors when cycling through with CTRL + [ and CTRL + ].
CVar * gfx_anisotropy
CVar * app_recent_scripts
CVar * mp_server_port
CVar * app_force_cache_purge
CVar * gfx_particles_mode
CVar * diag_hide_wheels
CVar * diag_preset_spawn_pos
CVar * diag_truck_mass
CVar * io_ffb_stress_gain
CVar * diag_hide_nodes
CVar * audio_master_volume
CVar * diag_profiler_enabled
CVar * gfx_camera_height
CVar * sys_config_dir
CVar * sim_tuning_enabled
CVar * diag_terrn_log_roads
CVar * sys_savegames_dir
CVar * sim_soft_reset_mode
CVar * io_ffb_center_gain
CVar * ui_hide_gui
bool; The 'hide GUI' hotkey state
CVar * gfx_auto_lod
CVar * app_force_cache_update
CVar * sys_server_scripts_dir
CVar * io_analog_sensitivity
CVar * app_state
CVar * gfx_water_waves
CVar * cli_preset_spawn_pos
CVar * mp_chat_auto_hide
CVar * diag_log_beam_deform
CVar * sim_no_collisions
CVar * gfx_fov_external
CVar * mp_state
CVar * audio_device_name
CVar * sim_realistic_commands
CVar * diag_preset_spawn_rot
CVar * gfx_window_videocams
CVar * sim_replay_stepping
CVar * sys_user_dir
CVar * sys_cache_dir
CVar * sim_no_self_collisions
CVar * gfx_fps_limit
CVar * ui_legacy_truck_renderdash
string; name of the '.dashboard' file in modcache.
CVar * gfx_vegetation_mode
CVar * ui_keep_search
CVar * sim_live_repair_interval
Hold EV_COMMON_REPAIR_TRUCK to enter LiveRepair mode. 0 or negative interval disables.
CVar * diag_envmap
CVar * diag_hide_wheel_info
CVar * cli_preset_terrain
CVar * gfx_declutter_map
CVar * diag_camera
CVar * audio_enable_efx
CVar * app_disable_online_api
CVar * io_outgauge_id
CVar * gfx_flares_mode
CVar * ui_default_boat_dash
string; name of the '.dashboard' file in modcache.
CVar * flexbody_defrag_enabled
CVar * app_config_long_names
CVar * ui_default_truck_dash
string; name of the '.dashboard' file in modcache.
CVar * gfx_fov_internal
CVar * sim_gearbox_mode
CVar * io_ffb_master_gain
CVar * diag_simple_materials
CVar * mp_player_token
CVar * mp_pseudo_collisions
CVar * io_hydro_coupling
CVar * diag_hide_broken_beams
CVar * gfx_alt_actor_materials
CVar * diag_angelscript_generic_bind_test
CVar * diag_preset_veh_enter
CVar * gfx_speedo_imperial
CVar * app_custom_scripts
CVar * ui_always_show_fullsize
CVar * gfx_enable_rtshaders
CVar * diag_use_mygui_logfile
CVar * sim_quickload_dialog
CVar * gfx_envmap_enabled
CVar * flexbody_defrag_reorder_indices
CVar * diag_preset_terrain
CVar * cli_preset_spawn_rot
CVar * gfx_reduce_shadows
CVar * diag_videocameras
CVar * audio_enable_occlusion
CVar * audio_engine_controls_environmental_audio
CVar * gfx_surveymap_icons
CVar * io_ffb_camera_gain
CVar * io_outgauge_ip
CVar * diag_preset_veh_config
CVar * io_discord_rpc
CVar * gfx_texture_filter
CVar * sys_screenshot_dir
CVar * gfx_flexbody_cache
CVar * gfx_fov_external_default
CVar * sys_resources_dir
CVar * cli_preset_vehicle
CVar * diag_log_beam_break
CVar * io_input_grab_mode
CVar * gfx_enable_videocams
CVar * sim_replay_enabled
CVar * io_arcade_controls
CVar * io_analog_smoothing
CVar * mp_server_host
CVar * gfx_shadow_quality
CVar * sys_scripts_dir
CVar * sys_thumbnails_dir
CVar * diag_load_devel_scripts
CVar * flexbody_defrag_invert_lookup
CVar * diag_log_console_echo
CVar * cli_server_port
CVar * gfx_fixed_cam_tracking
CVar * app_extra_mod_path
CVar * gfx_shadow_type
CVar * sys_process_dir
CVar * gfx_skidmarks_mode
CVar * diag_hide_beam_stress
CVar * mp_join_on_startup
CVar * app_async_physics
void LogFormat(const char *format,...)
Improved logging utility. Uses fixed 2Kb buffer.