RigsofRods
Soft-body Physics Simulation
main.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 "Actor.h"
23 #include "Application.h"
24 #include "AppContext.h"
25 #include "CacheSystem.h"
26 #include "CameraManager.h"
27 #include "ChatSystem.h"
28 #include "Collisions.h"
29 #include "Console.h"
30 #include "ContentManager.h"
31 #include "DiscordRpc.h"
32 #include "ErrorUtils.h"
33 #include "GameContext.h"
34 #include "GfxScene.h"
35 #include "GUI_DirectionArrow.h"
36 #include "GUI_FrictionSettings.h"
37 #include "GUI_GameControls.h"
38 #include "GUI_LoadingWindow.h"
39 #include "GUI_MainSelector.h"
40 #include "GUI_MessageBox.h"
43 #include "GUI_RepositorySelector.h"
44 #include "GUI_SimActorStats.h"
45 #include "GUIManager.h"
46 #include "GUIUtils.h"
47 #include "InputEngine.h"
48 #include "Language.h"
49 #include "MumbleIntegration.h"
50 #include "OutGauge.h"
51 #include "OverlayWrapper.h"
52 #include "PlatformUtils.h"
53 #include "RoRVersion.h"
54 #include "ScriptEngine.h"
55 #include "Skidmark.h"
56 #include "SoundScriptManager.h"
57 #include "Terrain.h"
58 #include "Utils.h"
59 #include <Overlay/OgreOverlaySystem.h>
60 #include <ctime>
61 #include <iomanip>
62 #include <string>
63 #include <fstream>
64 
65 #ifdef USE_CURL
66 # include <curl/curl.h>
67 #endif //USE_CURL
68 
69 #ifdef __cplusplus
70 extern "C" {
71 #endif
72 
73 int main(int argc, char *argv[])
74 {
75  using namespace RoR;
76 
77 #ifdef USE_CURL
78  curl_global_init(CURL_GLOBAL_ALL); // MUST init before any threads are started
79 #endif
80 
81 #ifndef _DEBUG
82  try
83  {
84 #endif
85 
86  // Create cvars, set default values
88 
89  // Record main thread ID for checks
91 
92  // Update cvars 'sys_process_dir', 'sys_user_dir'
93  if (!App::GetAppContext()->SetUpProgramPaths())
94  {
95  return -1; // Error already displayed
96  }
97 
98  // Create OGRE default logger early
100 
101  // User directories
104  App::sys_thumbnails_dir->setStr(PathCombine(App::sys_user_dir->getStr(), "thumbnails"));
105  App::sys_savegames_dir ->setStr(PathCombine(App::sys_user_dir->getStr(), "savegames"));
106  App::sys_screenshot_dir->setStr(PathCombine(App::sys_user_dir->getStr(), "screenshots"));
107  App::sys_scripts_dir ->setStr(PathCombine(App::sys_user_dir->getStr(), "scripts"));
108  App::sys_projects_dir ->setStr(PathCombine(App::sys_user_dir->getStr(), "projects"));
109 
110  // Load RoR.cfg - updates cvars
112 
113  // Process command line params - updates 'cli_*' cvars
114  App::GetConsole()->processCommandLine(argc, argv);
115 
116  if (App::app_state->getEnum<AppState>() == AppState::PRINT_HELP_EXIT)
117  {
119  return 0;
120  }
121  if (App::app_state->getEnum<AppState>() == AppState::PRINT_VERSION_EXIT)
122  {
124  return 0;
125  }
126 
127  // Find resources dir, update cvar 'sys_resources_dir'
128  if (!App::GetAppContext()->SetUpResourcesDir())
129  {
130  return -1; // Error already displayed
131  }
132 
133  // Make sure config directory exists - to save 'ogre.cfg'
135 
136  // Load and start OGRE renderer, uses config directory
137  if (!App::GetAppContext()->SetUpRendering())
138  {
139  return -1; // Error already displayed
140  }
141 
142  Ogre::TextureManager::getSingleton().setDefaultNumMipmaps(5);
143 
144  // Deploy base config files from 'skeleton.zip'
145  if (!App::GetAppContext()->SetUpConfigSkeleton())
146  {
147  return -1; // Error already displayed
148  }
149 
150  Ogre::OverlaySystem* overlay_system = new Ogre::OverlaySystem(); //Overlay init
151 
152  Ogre::ConfigOptionMap ropts = App::GetAppContext()->GetOgreRoot()->getRenderSystem()->getConfigOptions();
153  int resolution = Ogre::StringConverter::parseInt(Ogre::StringUtil::split(ropts["Video Mode"].currentValue, " x ")[0], 1024);
154  int fsaa = 2 * (Ogre::StringConverter::parseInt(ropts["FSAA"].currentValue, 0) / 4);
155  int res = std::pow(2, std::floor(std::log2(resolution)));
156 
157  Ogre::TextureManager::getSingleton().createManual ("EnvironmentTexture",
158  Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, Ogre::TEX_TYPE_CUBE_MAP, res / 4, res / 4, 0,
159  Ogre::PF_R8G8B8, Ogre::TU_RENDERTARGET, 0, false, fsaa);
160  Ogre::TextureManager::getSingleton ().createManual ("Refraction",
161  Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, Ogre::TEX_TYPE_2D, res / 2, res / 2, 0,
162  Ogre::PF_R8G8B8, Ogre::TU_RENDERTARGET, 0, false, fsaa);
163  Ogre::TextureManager::getSingleton ().createManual ("Reflection",
164  Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME, Ogre::TEX_TYPE_2D, res / 2, res / 2, 0,
165  Ogre::PF_R8G8B8, Ogre::TU_RENDERTARGET, 0, false, fsaa);
166 
167  if (!App::diag_warning_texture->getBool())
168  {
169  // We overwrite the default warning texture (yellow stripes) with something unobtrusive
170  Ogre::uchar data[3] = {0};
171  Ogre::PixelBox pixels(1, 1, 1, Ogre::PF_BYTE_RGB, &data);
172  Ogre::TextureManager::getSingleton()._getWarningTexture()->getBuffer()->blitFromMemory(pixels);
173  }
174 
181 
182 #ifndef NOLANG
184 #endif // NOLANG
185  App::GetConsole()->regBuiltinCommands(); // Call after localization had been set up
186 
188 
189  // Set up rendering
190  App::CreateGfxScene(); // Creates OGRE SceneManager, needs content manager
191  App::GetGfxScene()->GetSceneManager()->addRenderQueueListener(overlay_system);
192  App::CreateCameraManager(); // Creates OGRE Camera
193  App::GetGfxScene()->GetEnvMap().SetupEnvMap(); // Needs camera
194 
195  App::CreateGuiManager(); // Needs scene manager
196 
198 
200 
201 #ifdef USE_ANGELSCRIPT
205 #endif
206 
208 
209  // Add "this is obsolete" marker file to old config location
211 
213 
214  // Load inertia config file
216 
217  // Load mod cache
218  if (App::app_force_cache_purge->getBool())
219  {
221  }
222  else if (App::cli_force_cache_update->getBool() || App::app_force_cache_update->getBool())
223  {
225  }
226  else
227  {
229  }
230 
231  // Load startup scripts (console, then RoR.cfg)
232  if (App::cli_custom_scripts->getStr() != "")
233  {
234  Ogre::StringVector script_names = Ogre::StringUtil::split(App::cli_custom_scripts->getStr(), ",");
235  for (Ogre::String const& scriptname: script_names)
236  {
237  LOG(fmt::format("Loading startup script '{}' (from command line)", scriptname));
239  // errors are logged by OGRE & AngelScript
240  }
241  }
242  if (App::app_custom_scripts->getStr() != "")
243  {
244  Ogre::StringVector script_names = Ogre::StringUtil::split(App::app_custom_scripts->getStr(), ",");
245  for (Ogre::String const& scriptname: script_names)
246  {
247  LOG(fmt::format("Loading startup script '{}' (from config file)", scriptname));
249  // errors are logged by OGRE & AngelScript
250  }
251  }
252 
253  // Handle game state presets
254  if (App::cli_server_host->getStr() != "" && App::cli_server_port->getInt() != 0) // Multiplayer, commandline
255  {
259  }
260  else if (App::mp_join_on_startup->getBool()) // Multiplayer, conf file
261  {
263  }
264  else // Single player
265  {
266  if (App::cli_preset_terrain->getStr() != "") // Terrain, commandline
267  {
269  }
270  else if (App::diag_preset_terrain->getStr() != "") // Terrain, conf file
271  {
273  }
274  else // Main menu
275  {
276  if (App::cli_resume_autosave->getBool())
277  {
278  if (FileExists(PathCombine(App::sys_savegames_dir->getStr(), "autosave.sav")))
279  {
281  }
282  }
283  else if (App::app_skip_main_menu->getBool())
284  {
285  // MainMenu disabled (singleplayer mode) -> go directly to map selector (traditional behavior)
287  m.payload = reinterpret_cast<void*>(new LoaderType(LT_Terrain));
289  }
290  else
291  {
293  }
294  }
295  }
296 
299 
300 #ifdef USE_OPENAL
301  if (App::audio_menu_music->getBool())
302  {
303  App::GetSoundScriptManager()->createInstance("tracks/main_menu_tune", -1);
305  }
306 #endif // USE_OPENAL
307 
308  // Hack to properly init DearIMGUI integration - force rendering image
309  // Will be properly fixed under OGRE 2x
310  App::GetGuiManager()->LoadingWindow.SetProgress(100, "Hack", /*renderFrame=*/true);
312 
313  // --------------------------------------------------------------
314  // Main rendering and event handling loop
315  // --------------------------------------------------------------
316 
317  auto start_time = std::chrono::high_resolution_clock::now();
318 
319  while (App::app_state->getEnum<AppState>() != AppState::SHUTDOWN)
320  {
321  OgreBites::WindowEventUtilities::messagePump();
322 
323  // Halt physics (wait for async tasks to finish)
324  if (App::app_state->getEnum<AppState>() == AppState::SIMULATION)
325  {
327  }
328 
329  // Game events
330  while (App::GetGameContext()->HasMessages())
331  {
333  bool failed_m = false;
334  switch (m.type)
335  {
336 
337  // -- Application events --
338 
340  if (App::app_state->getEnum<AppState>() == AppState::SIMULATION)
341  {
342  App::GetGameContext()->SaveScene("autosave.sav");
343  }
344  App::GetConsole()->saveConfig(); // RoR.cfg
346 #ifdef USE_SOCKETW
347  if (App::mp_state->getEnum<MpState>() == MpState::CONNECTED)
348  {
350  }
351 #endif // USE_SOCKETW
353  App::GetScriptEngine()->setEventsEnabled(false); // Hack to enable fast shutdown without cleanup.
354  break;
355 
360  break;
361 
365  _L("Display mode changed to fullscreen"));
366  break;
367 
371  _L("Display mode changed to windowed"));
372  break;
373 
375  if (!App::GetCacheSystem()->IsModCacheLoaded()) // If not already loaded...
376  {
379  }
380  break;
381 
383  if (App::app_state->getEnum<AppState>() == AppState::MAIN_MENU) // No actors must be spawned; they keep pointers to CacheEntries
384  {
385  RoR::Log("[RoR|ModCache] Cache update requested");
388  }
389  break;
390 
392  if (App::app_state->getEnum<AppState>() == AppState::MAIN_MENU) // No actors must be spawned; they keep pointers to CacheEntries
393  {
394  RoR::Log("[RoR|ModCache] Cache rebuild requested");
397  }
398  break;
399 
401  {
402  LoadScriptRequest* request = static_cast<LoadScriptRequest*>(m.payload);
404  ScriptUnitId_t nid = App::GetScriptEngine()->loadScript(request->lsr_filename, request->lsr_category, actor, request->lsr_buffer);
405  // we want to notify any running scripts that we might change something (prevent cheating)
407  ASMANIP_SCRIPT_LOADED, nid, (int)request->lsr_category, 0, request->lsr_filename);
408  delete request;
409  break;
410  }
411 
413  {
414  ScriptUnitId_t* id = static_cast<ScriptUnitId_t*>(m.payload);
416  // we want to notify any running scripts that we might change something (prevent cheating)
418  ASMANIP_SCRIPT_UNLOADING, *id, (int)unit.scriptCategory, 0, unit.scriptName);
420  delete id;
421  break;
422  }
423 
425  {
426  ScriptEventArgs* args = static_cast<ScriptEventArgs*>(m.payload);
428  args->arg1, args->arg2ex, args->arg3ex, args->arg4ex, args->arg5ex, args->arg6ex, args->arg7ex);
429  delete args;
430  break;
431  }
432 
433  // -- Network events --
434 
436 #if USE_SOCKETW
438 #endif
439  break;
440 
442 #if USE_SOCKETW
443  if (App::mp_state->getEnum<MpState>() == MpState::CONNECTED)
444  {
446  if (App::app_state->getEnum<AppState>() == AppState::MAIN_MENU)
447  {
448  App::GetGuiManager()->MainSelector.Close(); // We may get disconnected while still in map selection
450  }
451  }
452 #endif // USE_SOCKETW
453  break;
454 
455  case MSG_NET_SERVER_KICK:
460  _LC("Network", "Network disconnected"), m.description.c_str());
461  break;
462 
463  case MSG_NET_RECV_ERROR:
468  _L("Network fatal error: "), m.description.c_str());
469  break;
470 
475  break;
476 
479  break;
480 
482 #if USE_SOCKETW
487  if (!App::GetMumble())
488  {
490  }
491  if (App::GetNetwork()->GetTerrainName() != "any")
492  {
494  }
495  else
496  {
497  // Connected -> go directly to map selector
498  if (App::diag_preset_terrain->getStr().empty())
499  {
501  m.payload = reinterpret_cast<void*>(new LoaderType(LT_Terrain));
503  }
504  else
505  {
507  }
508  }
509 #endif // USE_SOCKETW
510  break;
511 
513 #if USE_SOCKETW
519  _LC("Network", "Multiplayer: connection failed"), m.description.c_str());
520 #endif // USE_SOCKETW
521  break;
522 
524  {
525  GUI::MpServerInfoVec* data = static_cast<GUI::MpServerInfoVec*>(m.payload);
527  delete data;
528  break;
529  }
530 
532  {
533  CurlFailInfo* failinfo = static_cast<CurlFailInfo*>(m.payload);
535  delete failinfo;
536  break;
537  }
538 
540  {
543  delete data;
544  break;
545  }
546 
548  {
551  delete data;
552  break;
553  }
554 
556  {
557  CurlFailInfo* failinfo = static_cast<CurlFailInfo*>(m.payload);
559  delete failinfo;
560  break;
561  }
562 
566  break;
567 
568  // -- Gameplay events --
569 
571  for (ActorPtr& actor: App::GetGameContext()->GetActorManager()->GetActors())
572  {
573  actor->muteAllSounds();
574  }
576  break;
577 
579  for (ActorPtr& actor: App::GetGameContext()->GetActorManager()->GetActors())
580  {
581  actor->unmuteAllSounds();
582  }
584  break;
585 
588  App::GetGuiManager()->LoadingWindow.SetProgress(5, _L("Loading resources"));
590 
591  if (App::GetGameContext()->LoadTerrain(m.description))
592  {
594  // Spawn preselected vehicle; commandline has precedence
595  if (App::cli_preset_vehicle->getStr() != "")
596  App::GetGameContext()->SpawnPreselectedActor(App::cli_preset_vehicle->getStr(), App::cli_preset_veh_config->getStr()); // Needs character for position
597  else if (App::diag_preset_vehicle->getStr() != "")
598  App::GetGameContext()->SpawnPreselectedActor(App::diag_preset_vehicle->getStr(), App::diag_preset_veh_config->getStr()); // Needs character for position
602  if (App::audio_menu_music->getBool())
603  {
605  }
606  if (App::gfx_sky_mode->getEnum<GfxSkyMode>() == GfxSkyMode::BASIC)
607  {
608  App::GetGfxScene()->GetSceneManager()->setAmbientLight(Ogre::ColourValue(0.7f, 0.7f, 0.7f));
609  }
610  else
611  {
612  App::GetGfxScene()->GetSceneManager()->setAmbientLight(Ogre::ColourValue(0.3f, 0.3f, 0.3f));
613  }
623 #ifdef USE_SOCKETW
624  if (App::mp_state->getEnum<MpState>() == MpState::CONNECTED)
625  {
627  fmt::format(_LC("ChatBox", "Press {} to start chatting"),
628  App::GetInputEngine()->getEventCommandTrimmed(EV_COMMON_ENTER_CHATMODE)), "lightbulb.png");
629  }
630 #endif // USE_SOCKETW
631  if (App::io_outgauge_mode->getInt() > 0)
632  {
634  }
635  }
636  else
637  {
638  if (App::mp_state->getEnum<MpState>() == MpState::CONNECTED)
639  {
641  }
642  else
643  {
645  }
647  failed_m = true;
648  }
649  break;
650 
652  if (App::sim_state->getEnum<SimState>() == SimState::EDITOR_MODE)
653  {
655  }
656  App::GetGameContext()->SaveScene("autosave.sav");
674  App::GetOutGauge()->Close();
675  App::GetSoundScriptManager()->setCamera(/*position:*/Ogre::Vector3::ZERO, /*direction:*/Ogre::Vector3::ZERO, /*up:*/Ogre::Vector3::UNIT_Y, /*velocity:*/Ogre::Vector3::ZERO);
676  break;
677 
679  {
680  std::string terrn_filename = App::GetGameContext()->ExtractSceneTerrain(m.description);
681  if (terrn_filename == "")
682  {
683  Str<400> msg; msg << _L("Could not read savegame file") << "'" << m.description << "'";
685  if (App::app_state->getEnum<AppState>() == AppState::MAIN_MENU)
686  {
688  }
689  }
690  else if (terrn_filename == App::sim_terrain_name->getStr())
691  {
693  }
694  else if (terrn_filename != App::sim_terrain_name->getStr() && App::mp_state->getEnum<MpState>() == MpState::CONNECTED)
695  {
696  Str<400> msg; msg << _L("Error while loading scene: Terrain mismatch");
698  }
699  else
700  {
701  if (App::sim_terrain_name->getStr() != "")
702  {
704  }
705 
706  RoR::LogFormat("[RoR|Savegame] Loading terrain '%s' ...", terrn_filename.c_str());
708  // Loading terrain may produce actor-spawn requests; the savegame-request must be posted after them.
710  }
711  break;
712  }
713 
715  {
716  ActorSpawnRequest* rq = static_cast<ActorSpawnRequest*>(m.payload);
717  if (App::app_state->getEnum<AppState>() == AppState::SIMULATION)
718  {
720  }
721  delete rq;
722  break;
723  }
724 
726  {
727  ActorModifyRequest* rq = static_cast<ActorModifyRequest*>(m.payload);
728  if (App::app_state->getEnum<AppState>() == AppState::SIMULATION)
729  {
731  }
732  delete rq;
733  break;
734  }
735 
737  {
738  ActorPtr* actor_ptr = static_cast<ActorPtr*>(m.payload);
739  ROR_ASSERT(actor_ptr);
740  if (App::app_state->getEnum<AppState>() == AppState::SIMULATION)
741  {
742  App::GetGameContext()->DeleteActor(*actor_ptr);
743  }
744  delete actor_ptr;
745  break;
746  }
747 
749  {
750  ActorPtr* actor_ptr = static_cast<ActorPtr*>(m.payload);
751  ROR_ASSERT(actor_ptr); // Even if leaving vehicle, the pointer must be valid.
752  if (App::app_state->getEnum<AppState>() == AppState::SIMULATION)
753  {
754  App::GetGameContext()->ChangePlayerActor(*actor_ptr);
755  }
756  delete actor_ptr;
757  break;
758  }
759 
761  {
762  Ogre::Vector3* pos = static_cast<Ogre::Vector3*>(m.payload);
763  if (App::app_state->getEnum<AppState>() == AppState::SIMULATION)
764  {
765  App::GetGameContext()->TeleportPlayer(pos->x, pos->z);
766  }
767  delete pos;
768  break;
769  }
770 
772  {
773  ActorPtr* actor_ptr = static_cast<ActorPtr*>(m.payload);
774  ROR_ASSERT(actor_ptr);
775  if ((App::mp_state->getEnum<MpState>() == MpState::CONNECTED) &&
776  ((*actor_ptr)->ar_state == ActorState::NETWORKED_OK))
777  {
778  ActorPtr actor = *actor_ptr;
779  actor->ar_state = ActorState::NETWORKED_HIDDEN; // Stop net. updates
780  App::GetGfxScene()->RemoveGfxActor(actor->GetGfxActor()); // Remove visuals (also stops updating SimBuffer)
781  actor->GetGfxActor()->GetSimDataBuffer().simbuf_actor_state = ActorState::NETWORKED_HIDDEN; // Hack - manually propagate the new state to SimBuffer so Character can reflect it.
782  actor->GetGfxActor()->SetAllMeshesVisible(false);
783  actor->GetGfxActor()->SetCastShadows(false);
784  actor->muteAllSounds(); // Stop sounds
785  actor->forceAllFlaresOff();
786  actor->setSmokeEnabled(false);
787  }
788  delete actor_ptr;
789  break;
790  }
791 
793  {
794  ActorPtr* actor_ptr = static_cast<ActorPtr*>(m.payload);
795  ROR_ASSERT(actor_ptr);
796  if (App::mp_state->getEnum<MpState>() == MpState::CONNECTED &&
797  ((*actor_ptr)->ar_state == ActorState::NETWORKED_HIDDEN))
798  {
799  ActorPtr actor = *actor_ptr;
800  actor->ar_state = ActorState::NETWORKED_OK; // Resume net. updates
801  App::GetGfxScene()->RegisterGfxActor(actor->GetGfxActor()); // Restore visuals (also resumes updating SimBuffer)
802  actor->GetGfxActor()->SetAllMeshesVisible(true);
803  actor->GetGfxActor()->SetCastShadows(true);
804  actor->unmuteAllSounds(); // Unmute sounds
805  actor->setSmokeEnabled(true);
806  }
807  delete actor_ptr;
808  break;
809  }
810 
812  {
813  ScriptEventArgs* args = static_cast<ScriptEventArgs*>(m.payload);
814  App::GetScriptEngine()->triggerEvent(args->type, args->arg1, args->arg2ex, args->arg3ex, args->arg4ex, args->arg5ex, args->arg6ex, args->arg7ex, args->arg8ex);
815  delete args;
816  break;
817  }
818 
820  {
821  ScriptCallbackArgs* args = static_cast<ScriptCallbackArgs*>(m.payload);
823  delete args;
824  break;
825  }
826 
828  {
829  // Estabilishing a physics linkage between 2 actors modifies a global linkage table
830  // and triggers immediate update of every actor's linkage tables,
831  // so it has to be done sequentially on main thread.
832  // ---------------------------------------------------------------------------------
833  ActorLinkingRequest* request = static_cast<ActorLinkingRequest*>(m.payload);
835  if (actor)
836  {
837  switch (request->alr_type)
838  {
840  actor->hookToggle(request->alr_hook_group, request->alr_hook_action, request->alr_hook_mousenode);
841  if (request->alr_hook_action == MOUSE_HOOK_TOGGLE)
842  {
844  }
845  break;
846 
848  actor->tieToggle(request->alr_tie_group);
849  break;
850 
852  actor->ropeToggle(request->alr_rope_group);
853  break;
854 
856  actor->toggleSlideNodeLock();
857  break;
858  }
859 
860  }
861  delete request;
862  break;
863  }
864 
865  // -- GUI events ---
866 
869  break;
870 
873  break;
874 
876  {
877  LoaderType* type = static_cast<LoaderType*>(m.payload);
879  delete type;
880  break;
881  }
882 
885  break;
886 
889  break;
890 
892  {
893  GUI::MessageBoxConfig* conf = static_cast<GUI::MessageBoxConfig*>(m.payload);
895  delete conf;
896  break;
897  }
898 
900  {
902  int* percentage = static_cast<int*>(m.payload);
903  App::GetGuiManager()->LoadingWindow.SetProgress(*percentage, m.description, false);
904  delete percentage;
905  break;
906  }
907 
912  break;
913 
914  // -- Editing events --
915 
917  {
918  ground_model_t* modified_gm = static_cast<ground_model_t*>(m.payload);
920  *live_gm = *modified_gm; // Copy over
921  //DO NOT `delete` the payload - it's a weak pointer, the data are owned by `RoR::Collisions`; See `enum MsgType` in file 'Application.h'.
922  break;
923  }
924 
926  if (App::sim_state->getEnum<SimState>() != SimState::EDITOR_MODE)
927  {
930  _L("Entered terrain editing mode"));
932  fmt::format(_L("Press {} or middle mouse click to select an object"),
933  App::GetInputEngine()->getEventCommandTrimmed(EV_COMMON_ENTER_OR_EXIT_TRUCK)), "lightbulb.png");
934  }
935  break;
936 
938  if (App::sim_state->getEnum<SimState>() == SimState::EDITOR_MODE)
939  {
944  _L("Left terrain editing mode"));
945  }
946  break;
947 
949  {
950  CacheEntryPtr* entry_ptr = static_cast<CacheEntryPtr*>(m.payload);
951  App::GetCacheSystem()->LoadResource(*entry_ptr);
953  /*ints*/ MODCACHEACTIVITY_BUNDLE_LOADED, (*entry_ptr)->number, 0, 0,
954  /*strings*/ (*entry_ptr)->resource_group);
955  delete entry_ptr;
956  break;
957  }
958 
960  {
961  // To reload the bundle, it's resource group must be destroyed and re-created. All actors using it must be deleted.
962  CacheEntryPtr* entry_ptr = static_cast<CacheEntryPtr*>(m.payload);
963  bool all_clear = true;
965  {
966  if (actor->GetGfxActor()->GetResourceGroup() == (*entry_ptr)->resource_group)
967  {
969  all_clear = false;
970  }
971  }
972 
973  if (all_clear)
974  {
975  // Nobody uses the RG anymore -> destroy and re-create it.
976  App::GetCacheSystem()->ReLoadResource(*entry_ptr);
977 
979  /*ints*/ MODCACHEACTIVITY_BUNDLE_RELOADED, (*entry_ptr)->number, 0, 0,
980  /*strings*/ (*entry_ptr)->resource_group);
981 
982  delete entry_ptr;
983  }
984  else
985  {
986  // Re-post the same message again so that it's message chain is executed later.
988  failed_m = true;
989  }
990  break;
991  }
992 
994  {
995  // Unloading bundle means the resource group will be destroyed. All actors using it must be deleted.
996  CacheEntryPtr* entry_ptr = static_cast<CacheEntryPtr*>(m.payload);
997  bool all_clear = true;
999  {
1000  if (actor->GetGfxActor()->GetResourceGroup() == (*entry_ptr)->resource_group)
1001  {
1002  App::GetGameContext()->PushMessage(Message(MSG_SIM_DELETE_ACTOR_REQUESTED, static_cast<void*>(new ActorPtr(actor))));
1003  all_clear = false;
1004  }
1005  }
1006 
1007  if (all_clear)
1008  {
1009  // Nobody uses the RG anymore -> destroy it.
1010  App::GetCacheSystem()->UnLoadResource(*entry_ptr);
1011 
1013  /*ints*/ MODCACHEACTIVITY_BUNDLE_UNLOADED, (*entry_ptr)->number, 0, 0);
1014 
1015  delete entry_ptr;
1016  }
1017  else
1018  {
1019  // Re-post the same message again so that it's message chain is executed later.
1021  failed_m = true;
1022  }
1023 
1024  break;
1025  }
1026 
1028  {
1029  CreateProjectRequest* request = static_cast<CreateProjectRequest*>(m.payload);
1030  App::GetCacheSystem()->CreateProject(request);
1031  delete request;
1032  break;
1033  }
1034 
1036  {
1037  ModifyProjectRequest* request = static_cast<ModifyProjectRequest*>(m.payload);
1038  App::GetCacheSystem()->ModifyProject(request);
1039  delete request;
1040  break;
1041  }
1042 
1044  {
1045  CacheEntryPtr* entry_ptr = static_cast<CacheEntryPtr*>(m.payload);
1046  App::GetCacheSystem()->DeleteProject(*entry_ptr);
1047  delete entry_ptr;
1048  break;
1049  }
1050 
1051  default:;
1052  }
1053 
1054  // Process chained messages
1055  if (!failed_m)
1056  {
1057  for (Message& chained_msg: m.chain)
1058  {
1059  App::GetGameContext()->PushMessage(chained_msg);
1060  }
1061  }
1062 
1063  } // Game events block
1064 
1065  // Check FPS limit
1066  if (App::gfx_fps_limit->getInt() > 0)
1067  {
1068  const float min_frame_time = 1.0f / Ogre::Math::Clamp(App::gfx_fps_limit->getInt(), 5, 240);
1069  float dt = std::chrono::duration<float>(std::chrono::high_resolution_clock::now() - start_time).count();
1070  while (dt < min_frame_time)
1071  {
1072  dt = std::chrono::duration<float>(std::chrono::high_resolution_clock::now() - start_time).count();
1073  }
1074  } // Check FPS limit block
1075 
1076  // Calculate delta time
1077  const auto now = std::chrono::high_resolution_clock::now();
1078  const float dt = std::chrono::duration<float>(now - start_time).count();
1079  start_time = now;
1080 
1081 #ifdef USE_SOCKETW
1082  // Process incoming network traffic
1083  if (App::mp_state->getEnum<MpState>() == MpState::CONNECTED)
1084  {
1085  std::vector<RoR::NetRecvPacket> packets = App::GetNetwork()->GetIncomingStreamData();
1086  if (!packets.empty())
1087  {
1089  if (App::app_state->getEnum<AppState>() == AppState::SIMULATION)
1090  {
1092  App::GetGameContext()->GetCharacterFactory()->handleStreamData(packets); // Update characters last (or else beam coupling might fail)
1093  }
1094  }
1095  }
1096 #endif // USE_SOCKETW
1097 
1098  // Process input events
1099  if (dt != 0.f)
1100  {
1103 
1104  if (!App::GetGuiManager()->GameControls.IsInteractiveKeyBindingActive())
1105  {
1106  if (!App::GetGuiManager()->MainSelector.IsVisible() && !App::GetGuiManager()->MultiplayerSelector.IsVisible() &&
1109  {
1111  }
1114 
1115  if (App::app_state->getEnum<AppState>() == AppState::SIMULATION)
1116  {
1117  if (App::sim_state->getEnum<SimState>() == SimState::EDITOR_MODE)
1118  {
1121  }
1122  else
1123  {
1124  App::GetGameContext()->GetCharacterFactory()->Update(dt); // Character MUST be updated before CameraManager, otherwise camera position is always 1 frame behind the character position, causing stuttering.
1125  }
1130  if (App::sim_state->getEnum<SimState>() == SimState::RUNNING)
1131  {
1132  if (App::GetCameraManager()->GetCurrentBehavior() != CameraManager::CAMERA_BEHAVIOR_FREE)
1133  {
1136  if (App::GetGameContext()->GetPlayerActor() &&
1137  App::GetGameContext()->GetPlayerActor()->ar_state != ActorState::NETWORKED_OK) // we are in a vehicle
1138  {
1140  if (App::GetGameContext()->GetPlayerActor()->ar_state != ActorState::LOCAL_REPLAY)
1141  {
1142  if (App::GetGameContext()->GetPlayerActor()->ar_driveable == TRUCK)
1143  {
1145  }
1146  if (App::GetGameContext()->GetPlayerActor()->ar_driveable == AIRPLANE)
1147  {
1149  }
1150  if (App::GetGameContext()->GetPlayerActor()->ar_driveable == BOAT)
1151  {
1153  }
1154  }
1155  }
1156  }
1157  else // free cam mode
1158  {
1160  }
1161  }
1162  } // app state SIMULATION
1163  } // interactive key binding mode
1164  } // dt != 0
1165 
1166  // Update OutGauge device
1167  if (App::io_outgauge_mode->getInt() > 0)
1168  {
1169  App::GetOutGauge()->Update(dt, App::GetGameContext()->GetPlayerActor());
1170  }
1171 
1172  // Early GUI updates which require halted physics
1174  if (App::app_state->getEnum<AppState>() == AppState::SIMULATION)
1175  {
1177  for (ActorPtr& actor : App::GetGameContext()->GetActorManager()->GetActors())
1178  {
1179  actor->GetGfxActor()->UpdateDebugView();
1180  }
1181  if (App::GetGameContext()->GetPlayerActor())
1182  {
1184  if (App::GetGuiManager()->FrictionSettings.IsVisible())
1185  {
1186  App::GetGuiManager()->FrictionSettings.setActiveCol(App::GetGameContext()->GetPlayerActor()->ar_last_fuzzy_ground_model);
1187  }
1188  }
1189  }
1190 
1191 #ifdef USE_MUMBLE
1192  if (App::GetMumble())
1193  {
1194  App::GetMumble()->Update(); // 3d voice over network
1195  }
1196 #endif // USE_MUMBLE
1197 
1198 #ifdef USE_OPENAL
1199  App::GetSoundScriptManager()->update(dt); // update 3d audio listener position
1200 #endif // USE_OPENAL
1201 
1202  // Sync shared state (lights, brakes, debugviews, pause/reset) between linked actors.
1204 
1205 #ifdef USE_ANGELSCRIPT
1207 #endif // USE_ANGELSCRIPT
1208 
1209  if (App::io_ffb_enabled->getBool() &&
1210  App::sim_state->getEnum<SimState>() == SimState::RUNNING)
1211  {
1213  }
1214 
1215  if (App::sim_state->getEnum<SimState>() == SimState::RUNNING)
1216  {
1218  }
1219 
1220  // Create snapshot of simulation state for Gfx/GUI updates
1221  if (App::sim_state->getEnum<SimState>() == SimState::RUNNING || // Obviously
1222  App::sim_state->getEnum<SimState>() == SimState::EDITOR_MODE) // Needed for character movement
1223  {
1225  }
1226 
1227  // Advance simulation
1228  if (App::sim_state->getEnum<SimState>() == SimState::RUNNING)
1229  {
1230  App::GetGameContext()->UpdateActors(); // *** Start new physics tasks. No reading from Actor N/B beyond this point.
1231  }
1232 
1233  // Scene and GUI updates
1234  if (App::app_state->getEnum<AppState>() == AppState::MAIN_MENU)
1235  {
1237  }
1238  else if (App::app_state->getEnum<AppState>() == AppState::SIMULATION)
1239  {
1240  App::GetGfxScene()->UpdateScene(dt); // Draws GUI as well
1241  }
1242 
1243  // Render!
1244  Ogre::RenderWindow* render_window = RoR::App::GetAppContext()->GetRenderWindow();
1245  if (render_window->isClosed())
1246  {
1248  }
1249  else
1250  {
1251  App::GetAppContext()->GetOgreRoot()->renderOneFrame();
1252  if (!render_window->isActive() && render_window->isVisible())
1253  {
1254  render_window->update(); // update even when in background !
1255  }
1256  } // Render block
1257 
1259 
1260  } // End of main rendering/input loop
1261 
1262 #ifndef _DEBUG
1263  }
1264  catch (Ogre::Exception& e)
1265  {
1266  LOG(e.getFullDescription());
1267  ErrorUtils::ShowError(_L("An exception has occured!"), e.getFullDescription());
1268  }
1269  catch (std::runtime_error& e)
1270  {
1271  LOG(e.what());
1272  ErrorUtils::ShowError(_L("An exception (std::runtime_error) has occured!"), e.what());
1273  }
1274 #endif
1275 
1276  return 0;
1277 }
1278 
1279 #if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
1280 INT WINAPI WinMain( HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT )
1281 {
1282  return main(__argc, __argv);
1283 }
1284 #endif
1285 
1286 #ifdef __cplusplus
1287 }
1288 #endif
RoR::App::sys_user_dir
CVar * sys_user_dir
Definition: Application.cpp:162
RoR::MSG_EDI_MODIFY_PROJECT_REQUESTED
@ MSG_EDI_MODIFY_PROJECT_REQUESTED
Payload = RoR::UpdateProjectRequest* (owner)
Definition: Application.h:137
RoR::GfxSkyMode::BASIC
@ BASIC
Basic (fastest)
RoR::ScriptUnit
Represents a loaded script and all associated resources/handles.
Definition: ScriptEngine.h:69
ROR_ASSERT
#define ROR_ASSERT(_EXPR)
Definition: Application.h:40
GameContext.h
Game state manager and message-queue provider.
RoR::CameraManager::UpdateInputEvents
void UpdateInputEvents(float dt)
Definition: CameraManager.cpp:242
RoR::App::CreateMumble
void CreateMumble()
Definition: Application.cpp:307
RoR::ActorLinkingRequest::alr_hook_group
int alr_hook_group
Definition: SimData.h:868
RoR::MSG_SIM_LOAD_TERRN_REQUESTED
@ MSG_SIM_LOAD_TERRN_REQUESTED
Definition: Application.h:107
RoR::ScriptEngine::setEventsEnabled
void setEventsEnabled(bool val)
Definition: ScriptEngine.h:159
RoR::ASMANIP_SCRIPT_UNLOADING
@ ASMANIP_SCRIPT_UNLOADING
Triggered before unloading the script to let it clean up (important for missions).
Definition: ScriptEvents.h:74
GUI_MultiplayerClientList.h
RoR::App::CreateScriptEngine
void CreateScriptEngine()
Definition: Application.cpp:341
RoR::App::GetNetwork
Network * GetNetwork()
Definition: Application.cpp:283
RoR::App::cli_force_cache_update
CVar * cli_force_cache_update
Definition: Application.cpp:183
RoR::LoadScriptRequest::lsr_filename
std::string lsr_filename
Load from resource (file). If buffer is supplied, use this as display name only.
Definition: ScriptEngine.h:92
RoR::App::GetContentManager
ContentManager * GetContentManager()
Definition: Application.cpp:266
RoR::App::GetSoundScriptManager
SoundScriptManager * GetSoundScriptManager()
Definition: Application.cpp:276
RoR::ContentManager::InitContentManager
void InitContentManager()
Definition: ContentManager.cpp:147
RoR::CacheSystem::UnLoadResource
void UnLoadResource(CacheEntryPtr &t)
Unloads associated bundle, destroying all spawned actors.
Definition: CacheSystem.cpp:1432
RoR::GUI::TopMenubar::ai_presets_extern
rapidjson::Document ai_presets_extern
Externally provided presets (GitHub repo or local 'savegames/waypoints.json' file).
Definition: GUI_TopMenubar.h:102
RoR::MSG_GUI_SHOW_MESSAGE_BOX_REQUESTED
@ MSG_GUI_SHOW_MESSAGE_BOX_REQUESTED
Payload = MessageBoxConfig* (owner)
Definition: Application.h:126
RoR::GameContext::ExtractSceneTerrain
std::string ExtractSceneTerrain(std::string const &filename)
Returns terrain filename.
Definition: Savegame.cpp:86
RoR::GUI::MultiplayerSelector::SetVisible
void SetVisible(bool v)
Definition: GUI_MultiplayerSelector.cpp:392
RoR::TerrainEditor::UpdateInputEvents
void UpdateInputEvents(float dt)
Definition: TerrainEditor.cpp:39
RoR::App::diag_warning_texture
CVar * diag_warning_texture
Definition: Application.cpp:151
RoR::App::GetLanguageEngine
LanguageEngine * GetLanguageEngine()
Definition: Application.cpp:277
RoR::ScriptEventArgs
Args for eventCallbackEx() queued via MSG_SIM_SCRIPT_EVENT_TRIGGERED See descriptions at enum RoR::sc...
Definition: ScriptEvents.h:101
RoR::Network::Disconnect
void Disconnect()
Definition: Network.cpp:562
RoR::App::gfx_fov_internal
CVar * gfx_fov_internal
Definition: Application.cpp:239
RoR::CharacterFactory::handleStreamData
void handleStreamData(std::vector< RoR::NetRecvPacket > packet)
Definition: CharacterFactory.cpp:108
RoR::SE_ANGELSCRIPT_MANIPULATIONS
@ SE_ANGELSCRIPT_MANIPULATIONS
triggered when the user tries to dynamically use the scripting capabilities (prevent cheating) args: ...
Definition: ScriptEvents.h:54
RoR::App::CreateCameraManager
void CreateCameraManager()
Definition: Application.cpp:321
RoR::MSG_SIM_MODIFY_ACTOR_REQUESTED
@ MSG_SIM_MODIFY_ACTOR_REQUESTED
Payload = RoR::ActorModifyRequest* (owner)
Definition: Application.h:111
RoR::SoundScriptManager::setCamera
void setCamera(Ogre::Vector3 position, Ogre::Vector3 direction, Ogre::Vector3 up, Ogre::Vector3 velocity)
Definition: SoundScriptManager.cpp:324
RoR::App::diag_preset_vehicle
CVar * diag_preset_vehicle
Definition: Application.cpp:143
RoR::GUI::SimActorStats::UpdateStats
void UpdateStats(float dt, ActorPtr actor)
Caution: touches live data, must be synced with sim. thread.
Definition: GUI_SimActorStats.cpp:228
RoR::GfxScene::GetEnvMap
GfxEnvmap & GetEnvMap()
Definition: GfxScene.h:62
RoR::SceneMouse::DiscardVisuals
void DiscardVisuals()
Definition: SceneMouse.cpp:75
RoR::OverlayWrapper::update
void update(float dt)
Definition: OverlayWrapper.cpp:345
OverlayWrapper.h
RoR::GameContext::ModifyActor
void ModifyActor(ActorModifyRequest &rq)
Definition: GameContext.cpp:357
RoR::App::cli_resume_autosave
CVar * cli_resume_autosave
Definition: Application.cpp:184
RoR::MSG_EDI_RELOAD_BUNDLE_REQUESTED
@ MSG_EDI_RELOAD_BUNDLE_REQUESTED
Payload = RoR::CacheEntryPtr* (owner)
Definition: Application.h:134
RoR::Network::StartConnecting
bool StartConnecting()
Launches connecting on background.
Definition: Network.cpp:388
RoR::InputEngine::updateKeyBounces
void updateKeyBounces(float dt)
Definition: InputEngine.cpp:733
RoR::TRUCK
@ TRUCK
its a truck (or other land vehicle)
Definition: SimData.h:104
RoR::MpState::CONNECTED
@ CONNECTED
RoR::CacheSystem::DeleteProject
void DeleteProject(CacheEntryPtr &entry)
Definition: CacheSystem.cpp:1870
RoR::GUIManager::FrictionSettings
GUI::FrictionSettings FrictionSettings
Definition: GUIManager.h:117
RoR::MSG_SIM_SCRIPT_CALLBACK_QUEUED
@ MSG_SIM_SCRIPT_CALLBACK_QUEUED
Payload = RoR::ScriptCallbackArgs* (owner)
Definition: Application.h:118
RoR::App::sys_scripts_dir
CVar * sys_scripts_dir
Definition: Application.cpp:171
RoR::EV_COMMON_ENTER_OR_EXIT_TRUCK
@ EV_COMMON_ENTER_OR_EXIT_TRUCK
enter or exit a truck
Definition: InputEngine.h:229
RoR::GUIManager::ApplyGuiCaptureKeyboard
void ApplyGuiCaptureKeyboard()
Call after rendered frame to apply queued value.
Definition: GUIManager.cpp:110
RoR::App::GetCameraManager
CameraManager * GetCameraManager()
Definition: Application.cpp:274
RoR::App::app_skip_main_menu
CVar * app_skip_main_menu
Definition: Application.cpp:82
RoR::GUI::MultiplayerSelector::DisplayRefreshFailed
void DisplayRefreshFailed(CurlFailInfo *failinfo)
Definition: GUI_MultiplayerSelector.cpp:406
GUI_MessageBox.h
Generic UI dialog (not modal). Invocable from scripting. Any number of buttons. Configurable to fire ...
RoR::App::GetGuiManager
GUIManager * GetGuiManager()
Definition: Application.cpp:268
RoR::MSG_EDI_CREATE_PROJECT_REQUESTED
@ MSG_EDI_CREATE_PROJECT_REQUESTED
Payload = RoR::CreateProjectRequest* (owner)
Definition: Application.h:136
RoR::GUI::MultiplayerSelector::UpdateServerlist
void UpdateServerlist(MpServerInfoVec *data)
Definition: GUI_MultiplayerSelector.cpp:418
RoR::MOUSE_HOOK_TOGGLE
@ MOUSE_HOOK_TOGGLE
Definition: SimData.h:72
RoR::DiscordRpc::UpdatePresence
void UpdatePresence()
Definition: DiscordRpc.cpp:60
RoR::GfxScene::BufferSimulationData
void BufferSimulationData()
Run this when simulation is halted.
Definition: GfxScene.cpp:310
RoR::ActorLinkingRequest
Estabilishing a physics linkage between 2 actors modifies a global linkage table and triggers immedia...
Definition: SimData.h:863
RoR::GUI::GameSettings::IsVisible
bool IsVisible() const
Definition: GUI_GameSettings.h:33
GUI_FrictionSettings.h
RoR::GUI::LoadingWindow::SetProgressNetConnect
void SetProgressNetConnect(const std::string &net_status)
Definition: GUI_LoadingWindow.cpp:73
RoR::MSG_EDI_UNLOAD_BUNDLE_REQUESTED
@ MSG_EDI_UNLOAD_BUNDLE_REQUESTED
Payload = RoR::CacheEntryPtr* (owner)
Definition: Application.h:135
RoR::Actor::unmuteAllSounds
void unmuteAllSounds()
Definition: Actor.cpp:3737
RoR::AppState::MAIN_MENU
@ MAIN_MENU
RoR::ContentManager::ResourcePack::WALLPAPERS
static const ResourcePack WALLPAPERS
Definition: ContentManager.h:48
RoR::MSG_SIM_UNLOAD_TERRN_REQUESTED
@ MSG_SIM_UNLOAD_TERRN_REQUESTED
Definition: Application.h:109
ContentManager.h
RoR::GfxScene::RemoveGfxActor
void RemoveGfxActor(RoR::GfxActor *gfx_actor)
Definition: GfxScene.cpp:345
RoR::AppContext::GetRenderWindow
Ogre::RenderWindow * GetRenderWindow()
Definition: AppContext.h:67
RoR::TerrainEditor::ClearSelection
void ClearSelection()
Definition: TerrainEditor.cpp:320
RoR::App::cli_preset_vehicle
CVar * cli_preset_vehicle
Definition: Application.cpp:177
RoR::App::GetAppContext
AppContext * GetAppContext()
Definition: Application.cpp:265
RoR::Console::cVarSetupBuiltins
void cVarSetupBuiltins()
Create builtin vars and set defaults.
Definition: CVar.cpp:29
RoR::ActorState::LOCAL_REPLAY
@ LOCAL_REPLAY
RoR::MSG_GUI_CLOSE_SELECTOR_REQUESTED
@ MSG_GUI_CLOSE_SELECTOR_REQUESTED
Definition: Application.h:124
format
Truck file format(technical spec)
RoR::MSG_SIM_UNPAUSE_REQUESTED
@ MSG_SIM_UNPAUSE_REQUESTED
Definition: Application.h:106
RoR::DiscordRpc::Shutdown
void Shutdown()
Definition: DiscordRpc.cpp:90
GUIUtils.h
RoR::Network::GetIncomingStreamData
std::vector< NetRecvPacket > GetIncomingStreamData()
Definition: Network.cpp:672
RoR::AppState::PRINT_VERSION_EXIT
@ PRINT_VERSION_EXIT
RoR::MSG_NET_CONNECT_STARTED
@ MSG_NET_CONNECT_STARTED
Definition: Application.h:90
RoR::MSG_GUI_DOWNLOAD_PROGRESS
@ MSG_GUI_DOWNLOAD_PROGRESS
Definition: Application.h:127
RoR::App::app_force_cache_update
CVar * app_force_cache_update
Definition: Application.cpp:89
RoR::CameraManager::CAMERA_BEHAVIOR_FREE
@ CAMERA_BEHAVIOR_FREE
Definition: CameraManager.h:52
RoR::GameContext::UpdateCommonInputEvents
void UpdateCommonInputEvents(float dt)
Definition: GameContext.cpp:1295
RoR::Actor::forceAllFlaresOff
void forceAllFlaresOff()
Definition: Actor.cpp:2979
RoR::ActorLinkingRequest::alr_type
ActorLinkingRequestType alr_type
Definition: SimData.h:866
RoR::App::mp_join_on_startup
CVar * mp_join_on_startup
Definition: Application.cpp:116
RoR::TRIGGER_EVENT_ASYNC
void TRIGGER_EVENT_ASYNC(scriptEvents type, int arg1, int arg2ex=0, int arg3ex=0, int arg4ex=0, std::string arg5ex="", std::string arg6ex="", std::string arg7ex="", std::string arg8ex="")
Asynchronously (via MSG_SIM_SCRIPT_EVENT_TRIGGERED) invoke script function eventCallbackEx(),...
Definition: ScriptEngine.h:51
RoR::ScriptEventArgs::arg4ex
int arg4ex
Definition: ScriptEvents.h:109
RoR::GUI::GameControls::IsVisible
bool IsVisible() const
Definition: GUI_GameControls.h:34
RoR::SimState::EDITOR_MODE
@ EDITOR_MODE
Hacky, but whatever... added by Ulteq, 2016.
RoR::Terrain::GetTerrainEditor
TerrainEditor * GetTerrainEditor()
Definition: Terrain.h:82
RoR::App::GetOverlayWrapper
OverlayWrapper * GetOverlayWrapper()
Definition: Application.cpp:267
RoR::SceneMouse::UpdateSimulation
void UpdateSimulation()
Definition: SceneMouse.cpp:198
CameraManager.h
RoR::LogFormat
void LogFormat(const char *format,...)
Improved logging utility. Uses fixed 2Kb buffer.
Definition: Application.cpp:367
RoR::App::cli_server_host
CVar * cli_server_host
Definition: Application.cpp:175
RoR::SE_TRUCK_MOUSE_GRAB
@ SE_TRUCK_MOUSE_GRAB
triggered when the user uses the mouse to interact with the actor, the argument refers to the actor I...
Definition: ScriptEvents.h:52
RoR::GfxScene::ClearScene
void ClearScene()
Definition: GfxScene.cpp:60
AppContext.h
System integration layer; inspired by OgreBites::ApplicationContext.
RoR::MSG_NET_REFRESH_SERVERLIST_FAILURE
@ MSG_NET_REFRESH_SERVERLIST_FAILURE
Payload = RoR::CurlFailInfo* (owner)
Definition: Application.h:99
Console.h
RoR::App::gfx_fov_external_default
CVar * gfx_fov_external_default
Definition: Application.cpp:238
RoR::Console::putMessage
void putMessage(MessageArea area, MessageType type, std::string const &msg, std::string icon="")
Definition: Console.cpp:97
RoR::GUIManager::GameControls
GUI::GameControls GameControls
Definition: GUIManager.h:119
RoR::SE_GENERIC_MODCACHE_ACTIVITY
@ SE_GENERIC_MODCACHE_ACTIVITY
Triggered when status of modcache changes, args: #1 type, #2 entry number, for other args see RoR::mo...
Definition: ScriptEvents.h:62
RoR::GameContext::TeleportPlayer
void TeleportPlayer(float x, float z)
Definition: GameContext.cpp:887
RoR::GameContext::UpdateActors
void UpdateActors()
Definition: GameContext.cpp:586
RoR::GUIManager::MpClientList
GUI::MpClientList MpClientList
Definition: GUIManager.h:116
RoR::MSG_NET_RECV_ERROR
@ MSG_NET_RECV_ERROR
Definition: Application.h:97
RoR::LoadScriptRequest::lsr_buffer
std::string lsr_buffer
Load from memory buffer.
Definition: ScriptEngine.h:93
GUI_DirectionArrow.h
Race direction arrow and text info (using OGRE Overlay)
RoR::ActorManager::GetActors
ActorPtrVec & GetActors()
Definition: ActorManager.h:107
RoR::CacheSystem::ModifyProject
void ModifyProject(ModifyProjectRequest *request)
Definition: CacheSystem.cpp:1746
RoR::App::io_ffb_enabled
CVar * io_ffb_enabled
Definition: Application.cpp:191
RoR::GfxScene::UpdateScene
void UpdateScene(float dt_sec)
Definition: GfxScene.cpp:90
RoR::MSG_APP_LOAD_SCRIPT_REQUESTED
@ MSG_APP_LOAD_SCRIPT_REQUESTED
Payload = RoR::LoadScriptRequest* (owner)
Definition: Application.h:85
RoR::Actor::GetGfxActor
GfxActor * GetGfxActor()
Definition: Actor.h:259
RoR::ScriptEngine::loadScript
ScriptUnitId_t loadScript(Ogre::String scriptname, ScriptCategory category=ScriptCategory::TERRAIN, ActorPtr associatedActor=nullptr, std::string buffer="")
Loads a script.
Definition: ScriptEngine.cpp:759
RoR::GUI::TopMenubar::ai_waypoints
std::vector< ai_events > ai_waypoints
Definition: GUI_TopMenubar.h:66
RoR::GUIManager::GameSettings
GUI::GameSettings GameSettings
Definition: GUIManager.h:108
RoR::ActorManager::SyncWithSimThread
void SyncWithSimThread()
Definition: ActorManager.cpp:1256
RoR::SS_TRIG_MAIN_MENU
@ SS_TRIG_MAIN_MENU
Definition: SoundScriptManager.h:119
RoR::GUI::RepositorySelector::UpdateFiles
void UpdateFiles(ResourcesCollection *data)
Definition: GUI_RepositorySelector.cpp:1187
RoR::App::sim_state
CVar * sim_state
Definition: Application.cpp:96
Utils.h
RoR::ActorManager::SyncLinkedActors
void SyncLinkedActors()
Definition: ActorManager.cpp:752
RoR::CurlFailInfo
Definition: Network.h:47
RoR::GUI::MainSelector::Show
void Show(LoaderType type, std::string const &filter_guid="", CacheEntryPtr advertised_entry=nullptr)
Definition: GUI_MainSelector.cpp:65
RoR::ScriptEngine::framestep
void framestep(Ogre::Real dt)
Calls the script's framestep function to be able to use timed things inside the script.
Definition: ScriptEngine.cpp:384
Language.h
RoR::App::sys_savegames_dir
CVar * sys_savegames_dir
Definition: Application.cpp:169
GUI_SimActorStats.h
RoR::MSG_NET_CONNECT_REQUESTED
@ MSG_NET_CONNECT_REQUESTED
Definition: Application.h:89
RefCountingObjectPtr< Actor >
RoR::GUIManager::DirectionArrow
GUI::DirectionArrow DirectionArrow
Definition: GUIManager.h:126
RoR::MSG_APP_DISPLAY_WINDOWED_REQUESTED
@ MSG_APP_DISPLAY_WINDOWED_REQUESTED
Definition: Application.h:81
RoR::MSG_NET_SERVER_KICK
@ MSG_NET_SERVER_KICK
Definition: Application.h:94
RoR::Console::CONSOLE_SYSTEM_ERROR
@ CONSOLE_SYSTEM_ERROR
Definition: Console.h:52
GUI_MultiplayerSelector.h
GUIManager.h
Actor.h
RoR::SimState::OFF
@ OFF
RoR::App::GetScriptEngine
ScriptEngine * GetScriptEngine()
Definition: Application.cpp:278
RoR::GUIManager::LoadingWindow
GUI::LoadingWindow LoadingWindow
Definition: GUIManager.h:122
RoR::GfxScene::GetSceneManager
Ogre::SceneManager * GetSceneManager()
Definition: GfxScene.h:64
RoR::Console::CONSOLE_SYSTEM_NOTICE
@ CONSOLE_SYSTEM_NOTICE
Definition: Console.h:51
RoR::GUIManager::RepositorySelector
GUI::RepositorySelector RepositorySelector
Definition: GUIManager.h:120
RoR::ActorSpawnRequest
Definition: SimData.h:789
RoR::MSG_APP_DISPLAY_FULLSCREEN_REQUESTED
@ MSG_APP_DISPLAY_FULLSCREEN_REQUESTED
Definition: Application.h:80
RoR::GfxEnvmap::SetupEnvMap
void SetupEnvMap()
Definition: EnvironmentMap.cpp:43
RoR::GUI::DirectionArrow::LoadOverlay
void LoadOverlay()
Must be called after meshes+overlays were loaded.
Definition: GUI_DirectionArrow.cpp:38
RoR::AppContext::GetForceFeedback
RoR::ForceFeedback & GetForceFeedback()
Definition: AppContext.h:68
RoR::GameContext::SpawnActor
ActorPtr SpawnActor(ActorSpawnRequest &rq)
Definition: GameContext.cpp:191
RoR::GUIManager::NewImGuiFrame
void NewImGuiFrame(float dt)
Definition: GUIManager.cpp:304
RoR::MSG_NET_REFRESH_SERVERLIST_SUCCESS
@ MSG_NET_REFRESH_SERVERLIST_SUCCESS
Payload = GUI::MpServerInfoVec* (owner)
Definition: Application.h:98
RoR::App::mp_state
CVar * mp_state
Definition: Application.cpp:115
RoR::MSG_GUI_DOWNLOAD_FINISHED
@ MSG_GUI_DOWNLOAD_FINISHED
Definition: Application.h:128
RoR::GameContext::UpdateGlobalInputEvents
void UpdateGlobalInputEvents()
Definition: GameContext.cpp:925
RoR::ForceFeedback::Update
void Update()
Reads data from simulation.
Definition: ForceFeedback.cpp:105
RoR::ActorLinkingRequest::alr_hook_action
HookAction alr_hook_action
Definition: SimData.h:869
RoR::LoadScriptRequest::lsr_category
ScriptCategory lsr_category
Definition: ScriptEngine.h:94
RoR::App::CreateGuiManager
void CreateGuiManager()
Definition: Application.cpp:295
RoR::SceneMouse::InitializeVisuals
void InitializeVisuals()
Definition: SceneMouse.cpp:50
RoR::App::CreateGfxScene
void CreateGfxScene()
Definition: Application.cpp:327
RoR::GUI::MultiplayerSelector::IsVisible
bool IsVisible() const
Definition: GUI_MultiplayerSelector.h:63
RoR::CharacterFactory::Update
void Update(float dt)
Definition: CharacterFactory.cpp:80
RoR::GameContext::ChainMessage
void ChainMessage(Message m)
Add to last pushed message's chain.
Definition: GameContext.cpp:73
RoR::GameContext::GetSceneMouse
SceneMouse & GetSceneMouse()
Definition: GameContext.h:170
RoR::InputEngine::Capture
void Capture()
Definition: InputEngine.cpp:620
RoR::CmdKeyInertiaConfig::LoadDefaultInertiaModels
void LoadDefaultInertiaModels()
Definition: CmdKeyInertia.cpp:138
RoR::GUIManager::MultiplayerSelector
GUI::MultiplayerSelector MultiplayerSelector
Definition: GUIManager.h:112
RoR::Str< 400 >
RoR::Collisions::getGroundModelByString
ground_model_t * getGroundModelByString(const Ogre::String name)
Definition: Collisions.cpp:365
RoR::ActorLinkingRequestType::TIE_ACTION
@ TIE_ACTION
RoR::GUI::RepositorySelector::SetVisible
void SetVisible(bool visible)
Definition: GUI_RepositorySelector.cpp:1238
RoR::GUIManager::MenuWallpaper
Ogre::Overlay * MenuWallpaper
Definition: GUIManager.h:129
RoR::ActorModifyRequest
Definition: SimData.h:827
RoR::GameContext::PopMessage
Message PopMessage()
Definition: GameContext.cpp:96
RoR::ScriptEngine::unloadScript
void unloadScript(ScriptUnitId_t unique_id)
Unloads a script.
Definition: ScriptEngine.cpp:991
RoR::App::io_outgauge_mode
CVar * io_outgauge_mode
Definition: Application.cpp:199
RoR::ScriptUnit::scriptName
Ogre::String scriptName
Definition: ScriptEngine.h:83
RoR::PathCombine
std::string PathCombine(std::string a, std::string b)
Definition: PlatformUtils.h:48
RoR::MSG_SIM_SEAT_PLAYER_REQUESTED
@ MSG_SIM_SEAT_PLAYER_REQUESTED
Payload = RoR::ActorPtr (owner) | nullptr.
Definition: Application.h:113
RoR::GfxScene::RegisterGfxActor
void RegisterGfxActor(RoR::GfxActor *gfx_actor)
Definition: GfxScene.cpp:305
GUI_LoadingWindow.h
CacheSystem.h
A database of user-installed content alias 'mods' (vehicles, terrains...)
RoR::MODCACHEACTIVITY_BUNDLE_UNLOADED
@ MODCACHEACTIVITY_BUNDLE_UNLOADED
Args: #1 type, #2 entry number.
Definition: ScriptEvents.h:96
RoR::App::gfx_fps_limit
CVar * gfx_fps_limit
Definition: Application.cpp:243
RoR::MSG_APP_MODCACHE_PURGE_REQUESTED
@ MSG_APP_MODCACHE_PURGE_REQUESTED
Definition: Application.h:84
RoR::ActorManager::HandleActorStreamData
void HandleActorStreamData(std::vector< RoR::NetRecvPacket > packet)
Definition: ActorManager.cpp:359
RoR::ContentManager::ResourcePack::FLAGS
static const ResourcePack FLAGS
Definition: ContentManager.h:55
ErrorUtils.h
RoR::GameContext::ChangePlayerActor
void ChangePlayerActor(ActorPtr actor)
Definition: GameContext.cpp:473
GUI_MainSelector.h
RoR::GUI::RepositorySelector::IsVisible
bool IsVisible() const
Definition: GUI_RepositorySelector.h:97
RoR::GUIManager::CollisionsDebug
GUI::CollisionsDebug CollisionsDebug
Definition: GUIManager.h:105
RoR::MSG_GUI_MP_CLIENTS_REFRESH
@ MSG_GUI_MP_CLIENTS_REFRESH
Definition: Application.h:125
RoR::ContentManager::ResourcePack::SCRIPTS
static const ResourcePack SCRIPTS
Definition: ContentManager.h:68
ScriptEngine.h
RoR::GameContext::DeleteActor
void DeleteActor(ActorPtr actor)
Definition: GameContext.cpp:412
RoR::App::sys_thumbnails_dir
CVar * sys_thumbnails_dir
Definition: Application.cpp:165
RoR::ScriptUnit::scriptCategory
ScriptCategory scriptCategory
Definition: ScriptEngine.h:75
RoR::ActorLinkingRequestType::ROPE_ACTION
@ ROPE_ACTION
RoR::MODCACHEACTIVITY_BUNDLE_RELOADED
@ MODCACHEACTIVITY_BUNDLE_RELOADED
Args: #1 type, #2 entry number, –, –, #5 rg name.
Definition: ScriptEvents.h:95
RoR::GameContext::PushMessage
void PushMessage(Message m)
Doesn't guarantee order! Use ChainMessage() if order matters.
Definition: GameContext.cpp:66
RoR::App::app_state
CVar * app_state
Definition: Application.cpp:79
RoR::ScriptUnitId_t
int ScriptUnitId_t
Unique sequentially generated ID of a loaded and running scriptin session. Use ScriptEngine::getScrip...
Definition: ForwardDeclarations.h:40
ChatSystem.h
RoR::ActorLinkingRequestType::HOOK_ACTION
@ HOOK_ACTION
RoR::Str::ToCStr
const char * ToCStr() const
Definition: Str.h:46
RoR::GUIManager::DrawSimulationGui
void DrawSimulationGui(float dt)
Touches live data; must be called in sync with sim. thread.
Definition: GUIManager.cpp:129
RoR::GUI::RepositorySelector::DownloadFinished
void DownloadFinished()
Definition: GUI_RepositorySelector.cpp:1221
RoR::GUI::ResourcesCollection
Definition: GUI_RepositorySelector.h:79
RoR::Console::saveConfig
void saveConfig()
Definition: AppConfig.cpp:407
RoR::App::sim_terrain_name
CVar * sim_terrain_name
Definition: Application.cpp:97
RoR::CameraManager::ResetAllBehaviors
void ResetAllBehaviors()
Definition: CameraManager.cpp:529
RoR::App::DestroyOverlayWrapper
void DestroyOverlayWrapper()
Definition: Application.cpp:350
RoR::GUI::LoadingWindow::SetVisible
void SetVisible(bool v)
Definition: GUI_LoadingWindow.h:41
RoR::Terrain::GetCollisions
Collisions * GetCollisions()
Definition: Terrain.h:83
RoR::GUI::LoadingWindow::SetProgress
void SetProgress(int _percent, const std::string &_text="", bool render_frame=true)
Definition: GUI_LoadingWindow.cpp:33
RoR::GameContext::GetCharacterFactory
CharacterFactory * GetCharacterFactory()
Definition: GameContext.h:150
RoR::ScriptEngine::envokeCallback
void envokeCallback(int functionId, eventsource_t *source, NodeNum_t nodenum=NODENUM_INVALID, int type=0)
Definition: ScriptEngine.cpp:443
RoR::App::sys_cache_dir
CVar * sys_cache_dir
Definition: Application.cpp:164
RoR::CreateFolder
void CreateFolder(const char *path)
Path must be UTF-8 encoded.
Definition: PlatformUtils.cpp:175
GfxScene.h
PlatformUtils.h
Platform-specific utilities. We use narrow UTF-8 encoded strings as paths. Inspired by http://utf8eve...
RoR::MSG_NET_REFRESH_REPOLIST_FAILURE
@ MSG_NET_REFRESH_REPOLIST_FAILURE
Payload = RoR::CurlFailInfo* (owner)
Definition: Application.h:102
RoR::ChatSystem::SendStreamSetup
void SendStreamSetup()
Definition: ChatSystem.cpp:35
RoR::MSG_GUI_OPEN_SELECTOR_REQUESTED
@ MSG_GUI_OPEN_SELECTOR_REQUESTED
Payload = LoaderType* (owner), Description = GUID | empty.
Definition: Application.h:123
RoR::App::cli_custom_scripts
CVar * cli_custom_scripts
Definition: Application.cpp:185
SOUND_START
#define SOUND_START(_ACTOR_, _TRIG_)
Definition: SoundScriptManager.h:35
RoR::CacheValidity::UNKNOWN
@ UNKNOWN
RoR::MSG_SIM_HIDE_NET_ACTOR_REQUESTED
@ MSG_SIM_HIDE_NET_ACTOR_REQUESTED
Payload = ActorPtr* (owner)
Definition: Application.h:115
RoR::SoundScriptManager::createInstance
SoundScriptInstancePtr createInstance(Ogre::String templatename, int actor_id, int soundLinkType=SL_DEFAULT, int soundLinkItemId=-1)
Definition: SoundScriptManager.cpp:356
RoR::LoaderType
LoaderType
< Search mode for ModCache::Query() & Operation mode for GUI::MainSelector
Definition: Application.h:275
RoR::ActorLinkingRequest::alr_rope_group
int alr_rope_group
Definition: SimData.h:874
RoR::LoadScriptRequest::lsr_associated_actor
ActorInstanceID_t lsr_associated_actor
For ScriptCategory::ACTOR.
Definition: ScriptEngine.h:95
DiscordRpc.h
RoR::SimState::PAUSED
@ PAUSED
Application.h
Central state/object manager and communications hub.
RoR::App::GetConsole
Console * GetConsole()
Definition: Application.cpp:269
RoR::MSG_NET_OPEN_RESOURCE_SUCCESS
@ MSG_NET_OPEN_RESOURCE_SUCCESS
Payload = GUI::ResourcesCollection* (owner)
Definition: Application.h:101
SoundScriptManager.h
RoR::MSG_APP_MODCACHE_LOAD_REQUESTED
@ MSG_APP_MODCACHE_LOAD_REQUESTED
Definition: Application.h:82
RoR::Message::payload
void * payload
Definition: GameContext.h:59
RoR::App::GetGameContext
GameContext * GetGameContext()
Definition: Application.cpp:279
RoR::App::CreateThreadPool
void CreateThreadPool()
Definition: Application.cpp:315
RoR::ground_model_t::name
char name[256]
Definition: SimData.h:764
RoR::ScriptCallbackArgs
Definition: ScriptEngine.h:98
RoR::MSG_APP_SCREENSHOT_REQUESTED
@ MSG_APP_SCREENSHOT_REQUESTED
Definition: Application.h:79
RoR::App::gfx_fov_internal_default
CVar * gfx_fov_internal_default
Definition: Application.cpp:240
RoR::ContentManager::ResourcePack::ICONS
static const ResourcePack ICONS
Definition: ContentManager.h:58
RoR::AIRPLANE
@ AIRPLANE
its an airplane
Definition: SimData.h:105
RoR::GUI::RepositorySelector::UpdateResources
void UpdateResources(ResourcesCollection *data)
Definition: GUI_RepositorySelector.cpp:1166
RoR::MSG_NET_REFRESH_REPOLIST_SUCCESS
@ MSG_NET_REFRESH_REPOLIST_SUCCESS
Payload = GUI::ResourcesCollection* (owner)
Definition: Application.h:100
RoR::AppState::SIMULATION
@ SIMULATION
RoR::Message::chain
std::vector< Message > chain
Posted after the message is processed.
Definition: GameContext.h:60
RoR::ActorSB::simbuf_actor_state
ActorState simbuf_actor_state
Definition: SimBuffers.h:115
RoR::ScriptEngine::triggerEvent
void triggerEvent(scriptEvents eventnum, int arg1=0, int arg2ex=0, int arg3ex=0, int arg4ex=0, std::string arg5ex="", std::string arg6ex="", std::string arg7ex="", std::string arg8ex="")
triggers an event; Not to be used by the end-user.
Definition: ScriptEngine.cpp:712
RoRVersion.h
RoR::eventsource_t::es_script_handler
int es_script_handler
AngelScript function ID.
Definition: Collisions.h:45
RoR::LoadScriptRequest
Definition: ScriptEngine.h:90
RoR::GUI::GameMainMenu::SetVisible
void SetVisible(bool v)
Definition: GUI_GameMainMenu.h:43
RoR::AppContext::CaptureScreenshot
void CaptureScreenshot()
Definition: AppContext.cpp:337
RoR::CharacterFactory::DeleteAllCharacters
void DeleteAllCharacters()
Definition: CharacterFactory.cpp:101
RoR::AppState::SHUTDOWN
@ SHUTDOWN
RoR::App::gfx_sky_mode
CVar * gfx_sky_mode
Definition: Application.cpp:218
RoR::MSG_NET_REFRESH_AI_PRESETS
@ MSG_NET_REFRESH_AI_PRESETS
Definition: Application.h:103
RoR::TerrainEditor::WriteOutputFile
void WriteOutputFile()
Definition: TerrainEditor.cpp:252
RoR::ScriptEventArgs::arg7ex
std::string arg7ex
Definition: ScriptEvents.h:112
RoR::MSG_SIM_TELEPORT_PLAYER_REQUESTED
@ MSG_SIM_TELEPORT_PLAYER_REQUESTED
Payload = Ogre::Vector3* (owner)
Definition: Application.h:114
RoR::Actor::hookToggle
void hookToggle(int group=-1, HookAction mode=HOOK_TOGGLE, NodeNum_t mousenode=NODENUM_INVALID)
Definition: Actor.cpp:3545
RoR::Message::description
std::string description
Definition: GameContext.h:58
RoR::GUIManager::SimActorStats
GUI::SimActorStats SimActorStats
Definition: GUIManager.h:109
RoR::Actor::toggleSlideNodeLock
void toggleSlideNodeLock()
Definition: ActorSlideNode.cpp:34
RoR::App::CreateOverlayWrapper
void CreateOverlayWrapper()
Definition: Application.cpp:289
_LC
#define _LC(ctx, str)
Definition: Language.h:42
RoR::GUIManager::TopMenubar
GUI::TopMenubar TopMenubar
Definition: GUIManager.h:123
RoR::GUIManager::SetUpMenuWallpaper
void SetUpMenuWallpaper()
Definition: GUIManager.cpp:223
RoR::GUI::TopMenubar::RefreshAiPresets
void RefreshAiPresets()
Refresh the list of presets, used for display. Needs to be called when terrain is loaded.
Definition: GUI_TopMenubar.cpp:2276
RoR::AppState::PRINT_HELP_EXIT
@ PRINT_HELP_EXIT
RoR::CacheSystem::CreateProject
CacheEntryPtr CreateProject(CreateProjectRequest *request)
Creates subdirectory in 'My Games\Rigs of Rods\projects', pre-populates it with files and adds modcac...
Definition: CacheSystem.cpp:1568
RoR::MSG_EDI_ENTER_TERRN_EDITOR_REQUESTED
@ MSG_EDI_ENTER_TERRN_EDITOR_REQUESTED
Definition: Application.h:131
RoR::MSG_EDI_LOAD_BUNDLE_REQUESTED
@ MSG_EDI_LOAD_BUNDLE_REQUESTED
Payload = RoR::CacheEntryPtr* (owner)
Definition: Application.h:133
RoR::GUIManager::SetMouseCursorVisibility
void SetMouseCursorVisibility(MouseCursorVisibility visi)
Definition: GUIManager.cpp:276
RoR::App::cli_server_port
CVar * cli_server_port
Definition: Application.cpp:176
RoR::App::sys_config_dir
CVar * sys_config_dir
Definition: Application.cpp:163
RoR::ChatSystem::HandleStreamData
void HandleStreamData(std::vector< RoR::NetRecvPacket > packet_buffer)
Definition: ChatSystem.cpp:64
RoR::AppContext::SetUpLogging
void SetUpLogging()
Definition: AppContext.cpp:450
RoR::ModifyProjectRequest
Definition: CacheSystem.h:245
RoR::MSG_NET_CONNECT_SUCCESS
@ MSG_NET_CONNECT_SUCCESS
Definition: Application.h:92
RoR::CreateProjectRequest
Creates subdirectory in 'My Games\Rigs of Rods\projects', pre-populates it with files and adds modcac...
Definition: CacheSystem.h:211
RoR::LT_Terrain
@ LT_Terrain
Definition: Application.h:278
RoR::ScriptEventArgs::arg5ex
std::string arg5ex
Definition: ScriptEvents.h:110
RoR::App::cli_preset_terrain
CVar * cli_preset_terrain
Definition: Application.cpp:179
RoR::AppContext::SetUpThreads
void SetUpThreads()
Definition: AppContext.cpp:560
RoR::App::GetDiscordRpc
DiscordRpc * GetDiscordRpc()
Definition: Application.cpp:281
GUI_RepositorySelector.h
RoR::GUI::FrictionSettings::setActiveCol
void setActiveCol(const ground_model_t *gm)
Definition: GUI_FrictionSettings.h:56
RoR::AppContext::ActivateFullscreen
void ActivateFullscreen(bool val)
Definition: AppContext.cpp:384
Skidmark.h
RoR::AppContext::SetUpObsoleteConfMarker
void SetUpObsoleteConfMarker()
Definition: AppContext.cpp:528
RoR::App::GetCacheSystem
CacheSystem * GetCacheSystem()
Definition: Application.cpp:271
RoR::ContentManager::AddResourcePack
void AddResourcePack(ResourcePack const &resource_pack, std::string const &override_rgn="")
Loads resources if not already loaded.
Definition: ContentManager.cpp:98
RoR::CacheValidity::NEEDS_REBUILD
@ NEEDS_REBUILD
RoR::GameContext::UpdateAirplaneInputEvents
void UpdateAirplaneInputEvents(float dt)
Definition: GameContext.cpp:1571
RoR::GUI::MpServerInfoVec
std::vector< MpServerInfo > MpServerInfoVec
Definition: GUI_MultiplayerSelector.h:52
RoR::CacheValidity::NEEDS_UPDATE
@ NEEDS_UPDATE
RoR::App::audio_menu_music
CVar * audio_menu_music
Definition: Application.cpp:211
RoR::App::diag_preset_veh_config
CVar * diag_preset_veh_config
Definition: Application.cpp:144
RoR::ActorLinkingRequest::alr_tie_group
int alr_tie_group
Definition: SimData.h:872
RoR::OutGauge::Close
void Close()
Definition: OutGauge.cpp:43
RoR::GfxActor::SetCastShadows
void SetCastShadows(bool value)
Definition: GfxActor.cpp:3144
RoR::Console::showCommandLineVersion
void showCommandLineVersion()
Definition: AppCommandLine.cpp:181
RoR::GUI::MessageBoxConfig
Definition: GUI_MessageBox.h:50
RoR::ContentManager::ResourcePack::OGRE_CORE
static const ResourcePack OGRE_CORE
Definition: ContentManager.h:47
RoR::App::mp_server_port
CVar * mp_server_port
Definition: Application.cpp:122
RoR::ScriptCallbackArgs::eventsource
eventsource_t * eventsource
Definition: ScriptEngine.h:102
RoR::MSG_EDI_DELETE_PROJECT_REQUESTED
@ MSG_EDI_DELETE_PROJECT_REQUESTED
Payload = RoR::CacheEntryPtr* (owner)
Definition: Application.h:138
RoR::CacheSystem::LoadResource
void LoadResource(CacheEntryPtr &t)
Loads the associated resource bundle if not already done.
Definition: CacheSystem.cpp:1336
RoR::MSG_SIM_ACTOR_LINKING_REQUESTED
@ MSG_SIM_ACTOR_LINKING_REQUESTED
Payload = RoR::ActorLinkingRequest* (owner)
Definition: Application.h:119
RoR::Message
Unified game event system - all requests and state changes are reported using a message.
Definition: GameContext.h:51
RoR::Console::loadConfig
void loadConfig()
Definition: AppConfig.cpp:342
RoR::App::mp_server_host
CVar * mp_server_host
Definition: Application.cpp:121
RoR::ScriptEventArgs::arg8ex
std::string arg8ex
Definition: ScriptEvents.h:113
RoR::ContentManager::LoadGameplayResources
void LoadGameplayResources()
Checks GVar settings and loads required resources.
Definition: ContentManager.cpp:403
RoR::Actor::setSmokeEnabled
void setSmokeEnabled(bool enabled)
Writes info to console/notify area.
Definition: Actor.h:153
RoR::GameContext::UnloadTerrain
void UnloadTerrain()
Definition: GameContext.cpp:177
RoR::CVar::setVal
void setVal(T val)
Definition: CVar.h:72
RoR::Actor::tieToggle
void tieToggle(int group=-1)
Definition: Actor.cpp:3360
_L
#define _L
Definition: ErrorUtils.cpp:34
RoR::MSG_GUI_OPEN_MENU_REQUESTED
@ MSG_GUI_OPEN_MENU_REQUESTED
Definition: Application.h:121
RoR::GameContext::LoadScene
void LoadScene(std::string const &filename)
Matching terrain must be already loaded.
Definition: Savegame.cpp:63
RoR::ContentManager::InitModCache
void InitModCache(CacheValidity validity)
Definition: ContentManager.cpp:248
OutGauge.h
RoR::GUI::MpClientList::UpdateClients
void UpdateClients()
Definition: GUI_MultiplayerClientList.cpp:45
RoR::GUIManager::ShowMessageBox
void ShowMessageBox(const char *title, const char *text, bool allow_close=true, const char *btn1_text="OK", const char *btn2_text=nullptr)
Definition: GUIManager.cpp:440
RoR::ScriptEventArgs::type
scriptEvents type
Definition: ScriptEvents.h:104
RoR::ActorManager::UpdateInputEvents
void UpdateInputEvents(float dt)
Definition: ActorManager.cpp:1372
RoR::Console::regBuiltinCommands
void regBuiltinCommands()
Register builtin commands.
Definition: ConsoleCmd.cpp:650
RoR::GUIManager::GameAbout
GUI::GameAbout GameAbout
Definition: GUIManager.h:107
RoR::MSG_EDI_LEAVE_TERRN_EDITOR_REQUESTED
@ MSG_EDI_LEAVE_TERRN_EDITOR_REQUESTED
Definition: Application.h:132
RoR::GUI::CollisionsDebug::CleanUp
void CleanUp()
Definition: GUI_CollisionsDebug.cpp:375
RoR::App::sys_projects_dir
CVar * sys_projects_dir
Definition: Application.cpp:172
RoR::MSG_SIM_SPAWN_ACTOR_REQUESTED
@ MSG_SIM_SPAWN_ACTOR_REQUESTED
Payload = RoR::ActorSpawnRequest* (owner)
Definition: Application.h:110
RoR::MSG_APP_MODCACHE_UPDATE_REQUESTED
@ MSG_APP_MODCACHE_UPDATE_REQUESTED
Definition: Application.h:83
RoR::App::GetInputEngine
InputEngine * GetInputEngine()
Definition: Application.cpp:270
RoR::CacheSystem::ReLoadResource
void ReLoadResource(CacheEntryPtr &t)
Forces reloading the associated bundle.
Definition: CacheSystem.cpp:1419
RoR::App::cli_preset_veh_config
CVar * cli_preset_veh_config
Definition: Application.cpp:178
RoR::ground_model_t
Surface friction properties.
Definition: SimData.h:740
RoR::ScriptEventArgs::arg2ex
int arg2ex
Definition: ScriptEvents.h:107
RoR::EV_COMMON_ENTER_CHATMODE
@ EV_COMMON_ENTER_CHATMODE
enter the chat mode
Definition: InputEngine.h:228
RoR::ActorPtr
RefCountingObjectPtr< Actor > ActorPtr
Definition: ForwardDeclarations.h:181
RoR::GUI::GameAbout::IsVisible
bool IsVisible() const
Definition: GUI_GameAbout.h:35
RoR::ActorLinkingRequest::alr_actor_instance_id
ActorInstanceID_t alr_actor_instance_id
Definition: SimData.h:865
RoR::MSG_NET_CONNECT_FAILURE
@ MSG_NET_CONNECT_FAILURE
Definition: Application.h:93
RoR::GUI::MainSelector::Close
void Close()
Definition: GUI_MainSelector.cpp:592
RoR::MSG_SIM_DELETE_ACTOR_REQUESTED
@ MSG_SIM_DELETE_ACTOR_REQUESTED
Payload = RoR::ActorPtr* (owner)
Definition: Application.h:112
RoR::GameContext::UpdateSimInputEvents
void UpdateSimInputEvents(float dt)
Definition: GameContext.cpp:1040
RoR::GameContext::UpdateBoatInputEvents
void UpdateBoatInputEvents(float dt)
Definition: GameContext.cpp:1759
RoR::DiscordRpc::Init
void Init()
Definition: DiscordRpc.cpp:44
RoR::MSG_APP_SCRIPT_THREAD_STATUS
@ MSG_APP_SCRIPT_THREAD_STATUS
Payload = RoR::ScriptEventArgs* (owner)
Definition: Application.h:87
RoR::App::GetOutGauge
OutGauge * GetOutGauge()
Definition: Application.cpp:280
RoR::App::gfx_fov_external
CVar * gfx_fov_external
Definition: Application.cpp:237
RoR::MSG_EDI_MODIFY_GROUNDMODEL_REQUESTED
@ MSG_EDI_MODIFY_GROUNDMODEL_REQUESTED
Payload = RoR::ground_model_t* (weak)
Definition: Application.h:130
RoR::AppContext::GetOgreRoot
Ogre::Root * GetOgreRoot()
Definition: AppContext.h:65
Terrain.h
RoR::ActorLinkingRequest::alr_hook_mousenode
NodeNum_t alr_hook_mousenode
Definition: SimData.h:870
RoR::SimState::RUNNING
@ RUNNING
RoR::ActorState::NETWORKED_HIDDEN
@ NETWORKED_HIDDEN
not simulated, not updated (remote)
InputEngine.h
Handles controller inputs from player. Defines input events and binding mechanism,...
RoR::GameContext::SaveScene
void SaveScene(std::string const &filename)
Definition: Savegame.cpp:69
RoR::GUIManager::MainSelector
GUI::MainSelector MainSelector
Definition: GUIManager.h:113
RoR::Console::showCommandLineUsage
void showCommandLineUsage()
Definition: AppCommandLine.cpp:162
RoR::MSG_SIM_UNHIDE_NET_ACTOR_REQUESTED
@ MSG_SIM_UNHIDE_NET_ACTOR_REQUESTED
Payload = ActorPtr* (owner)
Definition: Application.h:116
RoR::MSG_APP_UNLOAD_SCRIPT_REQUESTED
@ MSG_APP_UNLOAD_SCRIPT_REQUESTED
Payload = RoR::ScriptUnitId_t* (owner)
Definition: Application.h:86
RoR::ActorManager::GetInertiaConfig
RoR::CmdKeyInertiaConfig & GetInertiaConfig()
Definition: ActorManager.h:86
RoR::Actor::ropeToggle
void ropeToggle(int group=-1)
Definition: Actor.cpp:3472
RoR::OutGauge::Update
bool Update(float dt, ActorPtr truck)
Definition: OutGauge.cpp:103
RoR::App::diag_preset_terrain
CVar * diag_preset_terrain
Definition: Application.cpp:140
RoR::Console::CONSOLE_MSGTYPE_INFO
@ CONSOLE_MSGTYPE_INFO
Generic message.
Definition: Console.h:60
RoR::GameContext::SpawnPreselectedActor
void SpawnPreselectedActor(std::string const &preset_vehicle, std::string const &preset_veh_config)
needs Character to exist
Definition: GameContext.cpp:610
RoR::ASMANIP_SCRIPT_LOADED
@ ASMANIP_SCRIPT_LOADED
Triggered after the script's main() completed; may trigger additional processing (for example,...
Definition: ScriptEvents.h:73
RoR::App::sim_terrain_gui_name
CVar * sim_terrain_gui_name
Definition: Application.cpp:98
RoR::RepairMode::UpdateInputEvents
void UpdateInputEvents(float dt)
Definition: RepairMode.cpp:30
RoR::App::sys_screenshot_dir
CVar * sys_screenshot_dir
Definition: Application.cpp:170
RoR::App::app_custom_scripts
CVar * app_custom_scripts
Definition: Application.cpp:92
RoR::MSG_GUI_CLOSE_MENU_REQUESTED
@ MSG_GUI_CLOSE_MENU_REQUESTED
Definition: Application.h:122
RoR::MSG_NET_CONNECT_PROGRESS
@ MSG_NET_CONNECT_PROGRESS
Definition: Application.h:91
RoR::App::GetMumble
MumbleIntegration * GetMumble()
Definition: Application.cpp:272
Collisions.h
RoR::SoundScriptManager::update
void update(float dt_sec)
Definition: SoundScriptManager.cpp:308
RoR::GameContext::GetRepairMode
RepairMode & GetRepairMode()
Definition: GameContext.h:169
RoR::AppContext::SetUpInput
bool SetUpInput()
Definition: AppContext.cpp:62
ErrorUtils::ShowError
static int ShowError(Ogre::UTFString title, Ogre::UTFString message)
shows a simple error message box
Definition: ErrorUtils.cpp:43
GUI_GameControls.h
RoR::GfxActor::SetAllMeshesVisible
void SetAllMeshesVisible(bool value)
Definition: GfxActor.cpp:3187
RoR::ScriptCallbackArgs::node
NodeNum_t node
Definition: ScriptEngine.h:103
RoR::MSG_SIM_PAUSE_REQUESTED
@ MSG_SIM_PAUSE_REQUESTED
Definition: Application.h:105
RoR::BOAT
@ BOAT
its a boat
Definition: SimData.h:106
RoR::ActorState::NETWORKED_OK
@ NETWORKED_OK
not simulated (remote) actor
RoR::ScriptEventArgs::arg6ex
std::string arg6ex
Definition: ScriptEvents.h:111
MumbleIntegration.h
WinMain
INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT)
Definition: main.cpp:1280
RoR::Actor::ar_state
ActorState ar_state
Definition: Actor.h:435
RoR::GUIManager::DrawMainMenuGui
void DrawMainMenuGui()
Definition: GUIManager.cpp:400
RoR::GUI::RepositorySelector::ShowError
void ShowError(CurlFailInfo *failinfo)
Definition: GUI_RepositorySelector.cpp:1226
RoR::GUIManager::MouseCursorVisibility::HIDDEN
@ HIDDEN
Hidden as inactive, will re-appear the moment user moves mouse.
RoR::GameContext::UpdateTruckInputEvents
void UpdateTruckInputEvents(float dt)
Definition: GameContext.cpp:1819
RoR::GUIManager::UpdateInputEvents
void UpdateInputEvents(float dt)
Definition: GUIManager.cpp:469
SOUND_KILL
#define SOUND_KILL(_ACTOR_, _TRIG_)
Definition: SoundScriptManager.h:38
RoR::ScriptEngine::getScriptUnit
ScriptUnit & getScriptUnit(ScriptUnitId_t unique_id)
Definition: ScriptEngine.cpp:1027
RoR::MSG_SIM_LOAD_SAVEGAME_REQUESTED
@ MSG_SIM_LOAD_SAVEGAME_REQUESTED
Definition: Application.h:108
RoR::MODCACHEACTIVITY_BUNDLE_LOADED
@ MODCACHEACTIVITY_BUNDLE_LOADED
Args: #1 type, #2 entry number, –, –, #5 rg name.
Definition: ScriptEvents.h:94
RoR::GfxActor::GetSimDataBuffer
ActorSB & GetSimDataBuffer()
Definition: GfxActor.h:119
RoR
Definition: AppContext.h:36
RoR::ActorManager::GetActorById
const ActorPtr & GetActorById(ActorInstanceID_t actor_id)
Definition: ActorManager.cpp:1167
RoR::ContentManager::ResourcePack::FONTS
static const ResourcePack FONTS
Definition: ContentManager.h:56
RoR::Log
void Log(const char *msg)
The ultimate, application-wide logging function. Adds a line (any length) in 'RoR....
Definition: Application.cpp:362
RoR::App::app_force_cache_purge
CVar * app_force_cache_purge
Definition: Application.cpp:88
RoR::ScriptCategory::CUSTOM
@ CUSTOM
Loaded by user via either: A) ingame console 'loadscript'; B) RoR.cfg 'app_custom_scripts'; C) comman...
RoR::ActorManager::CleanUpSimulation
void CleanUpSimulation()
Call this after simulation loop finishes.
Definition: ActorManager.cpp:913
RoR::App::GetGfxScene
GfxScene * GetGfxScene()
Definition: Application.cpp:275
RoR::GameContext::GetActorManager
ActorManager * GetActorManager()
Definition: GameContext.h:127
RoR::CVar::setStr
void setStr(std::string const &str)
Definition: CVar.h:83
RoR::SE_ANGELSCRIPT_THREAD_STATUS
@ SE_ANGELSCRIPT_THREAD_STATUS
Sent by background threads (i.e. CURL) when there's something important (like finishing a download)....
Definition: ScriptEvents.h:58
RoR::GUIManager::GameMainMenu
GUI::GameMainMenu GameMainMenu
Definition: GUIManager.h:106
RoR::MSG_APP_SHUTDOWN_REQUESTED
@ MSG_APP_SHUTDOWN_REQUESTED
Definition: Application.h:78
RoR::FileExists
bool FileExists(const char *path)
Path must be UTF-8 encoded.
Definition: PlatformUtils.cpp:163
main
int main(int argc, char *argv[])
Definition: main.cpp:73
RoR::ScriptEventArgs::arg1
int arg1
Definition: ScriptEvents.h:105
RoR::MSG_NET_DISCONNECT_REQUESTED
@ MSG_NET_DISCONNECT_REQUESTED
Definition: Application.h:95
RoR::Console::processCommandLine
void processCommandLine(int argc, char *argv[])
Definition: AppCommandLine.cpp:71
RoR::LanguageEngine::setup
void setup()
Definition: Language.cpp:48
RoR::GUIManager::MouseCursorVisibility::VISIBLE
@ VISIBLE
Visible, will be auto-hidden if not moving for a while.
RoR::GameContext::CreatePlayerCharacter
void CreatePlayerCharacter()
Terrain must be loaded.
Definition: GameContext.cpp:826
RoR::GameContext::UpdateSkyInputEvents
void UpdateSkyInputEvents(float dt)
Definition: GameContext.cpp:1198
RoR::ScriptEventArgs::arg3ex
int arg3ex
Definition: ScriptEvents.h:108
RoR::GameContext::GetTerrain
const TerrainPtr & GetTerrain()
Definition: GameContext.h:117
RoR::MSG_SIM_SCRIPT_EVENT_TRIGGERED
@ MSG_SIM_SCRIPT_EVENT_TRIGGERED
Payload = RoR::ScriptEventArgs* (owner)
Definition: Application.h:117
RoR::OutGauge::Connect
void Connect()
Definition: OutGauge.cpp:58
RoR::Message::type
MsgType type
Definition: GameContext.h:57
RoR::GameContext::HandleSavegameHotkeys
void HandleSavegameHotkeys()
Definition: Savegame.cpp:98
RoR::Network::StopConnecting
void StopConnecting()
Definition: Network.cpp:413
RoR::Actor::muteAllSounds
void muteAllSounds()
Definition: Actor.cpp:3723
RoR::ActorLinkingRequestType::SLIDENODE_ACTION
@ SLIDENODE_ACTION