Rigs of Rods 2026.01
Soft-body Physics Simulation
Loading...
Searching...
No Matches
Application.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
25
26#include "Application.h"
27
28#include "AppContext.h"
29#include "CacheSystem.h"
30#include "CameraManager.h"
31#include "Console.h"
32#include "ContentManager.h"
33#include "DiscordRpc.h"
34#include "GameContext.h"
35#include "GfxScene.h"
36#include "GUIManager.h"
37#include "InputEngine.h"
38#include "Language.h"
39#include "OutGauge.h"
40#include "OverlayWrapper.h"
41#include "MumbleIntegration.h"
42#include "Network.h"
43#include "ScriptEngine.h"
44#include "ServerScriptEngine.h"
46#include "SoundScriptManager.h"
47#include "Terrain.h"
48#include "ThreadPool.h"
49
50namespace RoR {
51namespace App {
52
53// ------------------------------------------------------------------------------------------------
54// Global variables
55// ------------------------------------------------------------------------------------------------
56
57// Object instances
66static GUIManager* g_gui_manager = nullptr;
67static InputEngine* g_input_engine = nullptr;
69static MumbleIntegration* g_mumble = nullptr;
72static ScriptEngine* g_script_engine = nullptr;
75static Terrain* g_sim_terrain = nullptr;
76static ThreadPool* g_thread_pool = nullptr;
77#if USE_SOCKETW
79#endif
80
81// App
97
98// Simulation
116
117// Multiplayer
131
132// New remote API
134
135// Diagnostic
168
169// System
184
185// OS command line
197
198// Input - Output
217
218// Audio
235
236// Graphics
273
274// Flexbodies
282
283// GUI
295
296// Instance access
304MumbleIntegration* GetMumble () { return g_mumble; }
315#if USE_SOCKETW
316 Network* GetNetwork () { return &g_network; }
317#else
318 Network* GetNetwork () { return nullptr; }
319#endif
320
321// Factories
327
333
339
341{
342#ifdef USE_MUMBLE // The class is always forward-declared but only defined if USE_MUMBLE is defined
344 g_mumble = new MumbleIntegration();
345#endif // USE_MUMBLE
346}
347
353
359
365
367{
368#if USE_OPENAL
371#endif
372}
373
375{
376#if USE_ANGELSCRIPT
379#endif
380}
381
383{
384#if USE_ANGELSCRIPT
387#endif
388}
389
390// Cleanup
392{
393 delete g_overlay_wrapper;
394 g_overlay_wrapper = nullptr;
395}
396
398{
399 delete g_input_engine;
400 g_input_engine = nullptr;
401}
402
403} // namespace App
404
405// ------------------------------------------------------------------------------------------------
406// Global exception handling
407// ------------------------------------------------------------------------------------------------
408
409void HandleGenericException(const std::string& from, BitMask_t flags)
410{
411 try
412 {
413 throw; // rethrow
414 }
415 catch (Ogre::Exception& oex)
416 {
419 else if (flags & HANDLEGENERICEXCEPTION_LOGFILE)
420 LOG(fmt::format("{}: {}", from, oex.getDescription()));
421#ifdef USE_ANGELSCRIPT
424#endif
425 }
426 catch (std::exception& stex)
427 {
429 App::GetConsole()->putMessage(Console::CONSOLE_MSGTYPE_INFO, Console::CONSOLE_SYSTEM_ERROR, fmt::format("{}: {}", from, stex.what()));
430 else if (flags & HANDLEGENERICEXCEPTION_LOGFILE)
431 LOG(fmt::format("{}: {}", from, stex.what()));
432#ifdef USE_ANGELSCRIPT
435#endif
436 }
437 catch (...)
438 {
440 App::GetConsole()->putMessage(Console::CONSOLE_MSGTYPE_INFO, Console::CONSOLE_SYSTEM_ERROR, fmt::format("{}: Unknown exception", from));
441 else if (flags & HANDLEGENERICEXCEPTION_LOGFILE)
442 LOG(fmt::format("{}: Unknown exception", from));
443#ifdef USE_ANGELSCRIPT
446#endif
447 }
448}
449
454
455// ------------------------------------------------------------------------------------------------
456// Global logging
457// ------------------------------------------------------------------------------------------------
458
459void Log(const char* msg)
460{
461 Ogre::LogManager::getSingleton().logMessage(msg);
462}
463
464void LogFormat(const char* format, ...)
465{
466 char buffer[2000] = {};
467
468 va_list args;
469 va_start(args, format);
470 vsprintf(buffer, format, args);
471 va_end(args);
472
473 RoR::Log(buffer);
474}
475
476// ------------------------------------------------------------------------------------------------
477// Global enums
478// ------------------------------------------------------------------------------------------------
479
481{
482 switch (e)
483 {
484 case SimGearboxMode::AUTO: return _LC("SimGearboxMode", "Automatic shift");
485 case SimGearboxMode::SEMI_AUTO: return _LC("SimGearboxMode", "Manual shift with auto clutch");
486 case SimGearboxMode::MANUAL: return _LC("SimGearboxMode", "Fully manual: sequential shift");
487 case SimGearboxMode::MANUAL_STICK: return _LC("SimGearboxMode", "Fully manual: stick shift");
488 case SimGearboxMode::MANUAL_RANGES: return _LC("SimGearboxMode", "Fully manual: stick shift with ranges");
489 default: return "";
490 }
491}
492
494{
495 switch (e)
496 {
497 case GfxFlaresMode::NONE: return _LC("GfxFlaresMode", "None (fastest)");
498 case GfxFlaresMode::NO_LIGHTSOURCES: return _LC("GfxFlaresMode", "No light sources");
499 case GfxFlaresMode::CURR_VEHICLE_HEAD_ONLY: return _LC("GfxFlaresMode", "Only current vehicle, main lights");
500 case GfxFlaresMode::ALL_VEHICLES_HEAD_ONLY: return _LC("GfxFlaresMode", "All vehicles, main lights");
501 case GfxFlaresMode::ALL_VEHICLES_ALL_LIGHTS: return _LC("GfxFlaresMode", "All vehicles, all lights");
502 default: return "";
503 }
504}
505
507{
508 switch (e)
509 {
510 case GfxShadowType::NONE: return _LC("GfxShadowType", "Disabled");
511 case GfxShadowType::PSSM: return _LC("GfxShadowType", "PSSM");
512 default: return "";
513 }
514}
515
517{
518 switch (e)
519 {
520 case GfxSkyMode::SANDSTORM: return _LC("GfxSkyMode", "Sandstorm (fastest)");
521 case GfxSkyMode::CAELUM: return _LC("GfxSkyMode", "Caelum (best looking, slower)");
522 case GfxSkyMode::SKYX: return _LC("GfxSkyMode", "SkyX (best looking, slower)");
523 default: return "";
524 }
525}
526
528{
529 switch (e)
530 {
531 case GfxTexFilter::NONE: return _LC("GfxTexFilter", "None");
532 case GfxTexFilter::BILINEAR: return _LC("GfxTexFilter", "Bilinear");
533 case GfxTexFilter::TRILINEAR: return _LC("GfxTexFilter", "Trilinear");
534 case GfxTexFilter::ANISOTROPIC: return _LC("GfxTexFilter", "Anisotropic");
535 default: return "";
536 }
537}
538
540{
541 switch (e)
542 {
543 case GfxVegetation::NONE: return _LC("GfxVegetation", "None");
544 case GfxVegetation::x20PERC: return _LC("GfxVegetation", "20%");
545 case GfxVegetation::x50PERC: return _LC("GfxVegetation", "50%");
546 case GfxVegetation::FULL: return _LC("GfxVegetation", "Full");
547 default: return "";
548 }
549}
550
552{
553 switch (e)
554 {
555 case GfxWaterMode::NONE: return _LC("GfxWaterMode", "None");
556 case GfxWaterMode::BASIC: return _LC("GfxWaterMode", "Basic (fastest)");
557 case GfxWaterMode::REFLECT: return _LC("GfxWaterMode", "Reflection");
558 case GfxWaterMode::FULL_FAST: return _LC("GfxWaterMode", "Reflection + refraction (speed optimized)");
559 case GfxWaterMode::FULL_HQ: return _LC("GfxWaterMode", "Reflection + refraction (quality optimized)");
560 case GfxWaterMode::HYDRAX: return _LC("GfxWaterMode", "HydraX");
561 default: return "";
562 }
563}
564
566{
567 switch (e)
568 {
569 case GfxExtCamMode::NONE: return _LC("GfxExtCamMode", "None");
570 case GfxExtCamMode::STATIC: return _LC("GfxExtCamMode", "Static");
571 case GfxExtCamMode::PITCHING: return _LC("GfxExtCamMode", "Pitching");
572 default: return "";
573 }
574}
575
577{
578 switch (e)
579 {
580 case IoInputGrabMode::NONE: return _LC("IoInputGrabMode", "None");
581 case IoInputGrabMode::ALL: return _LC("IoInputGrabMode", "All");
582 case IoInputGrabMode::DYNAMIC: return _LC("IoInputGrabMode", "Dynamic");
583 default: return "";
584 }
585}
586
588{
589 switch (e)
590 {
591 case EfxReverbEngine::NONE: return _LC("EfxReverbEngine", "None (no reverb, fastest)");
592 case EfxReverbEngine::REVERB: return _LC("EfxReverbEngine", "REVERB");
593 case EfxReverbEngine::EAXREVERB: return _LC("EfxReverbEngine", "EAXREVERB (more realistic effects, slower)");
594 default: return "";
595 }
596}
597
599{
600 switch (e)
601 {
602 case SimResetMode::HARD: return _LC("SimResetMode", "Hard");
603 case SimResetMode::SOFT: return _LC("SimResetMode", "Soft");
604 default: return "";
605 }
606}
607
609{
610 switch (e)
611 {
612 case UiPreset::NOVICE: return _LC("UiPreset", "Novice");
613 case UiPreset::REGULAR: return _LC("UiPreset", "Regular");
614 case UiPreset::EXPERT: return _LC("UiPreset", "Expert");
615 case UiPreset::MINIMALLIST: return _LC("UiPreset", "Minimallist");
616 default: return "";
617 }
618}
619
620const char* MsgTypeToString(MsgType type)
621{
622 switch (type)
623 {
624 case MSG_APP_SHUTDOWN_REQUESTED : return "MSG_APP_SHUTDOWN_REQUESTED";
625 case MSG_APP_SCREENSHOT_REQUESTED : return "MSG_APP_SCREENSHOT_REQUESTED";
626 case MSG_APP_DISPLAY_FULLSCREEN_REQUESTED : return "MSG_APP_DISPLAY_FULLSCREEN_REQUESTED";
627 case MSG_APP_DISPLAY_WINDOWED_REQUESTED : return "MSG_APP_DISPLAY_WINDOWED_REQUESTED";
628 case MSG_APP_MODCACHE_LOAD_REQUESTED : return "MSG_APP_MODCACHE_LOAD_REQUESTED";
629 case MSG_APP_MODCACHE_UPDATE_REQUESTED : return "MSG_APP_MODCACHE_UPDATE_REQUESTED";
630 case MSG_APP_MODCACHE_PURGE_REQUESTED : return "MSG_APP_MODCACHE_PURGE_REQUESTED";
631 case MSG_APP_LOAD_SCRIPT_REQUESTED : return "MSG_APP_LOAD_SCRIPT_REQUESTED";
632 case MSG_APP_UNLOAD_SCRIPT_REQUESTED : return "MSG_APP_UNLOAD_SCRIPT_REQUESTED";
633 case MSG_APP_SCRIPT_THREAD_STATUS : return "MSG_APP_SCRIPT_THREAD_STATUS";
634 case MSG_APP_REINIT_INPUT_REQUESTED : return "MSG_APP_REINIT_INPUT_REQUESTED";
635 case MSG_APP_REINIT_UI_REQUESTED : return "MSG_APP_REINIT_UI_REQUESTED";
636
637 case MSG_NET_CONNECT_REQUESTED : return "MSG_NET_CONNECT_REQUESTED";
638 case MSG_NET_CONNECT_STARTED : return "MSG_NET_CONNECT_STARTED";
639 case MSG_NET_CONNECT_PROGRESS : return "MSG_NET_CONNECT_PROGRESS";
640 case MSG_NET_CONNECT_SUCCESS : return "MSG_NET_CONNECT_SUCCESS";
641 case MSG_NET_CONNECT_FAILURE : return "MSG_NET_CONNECT_FAILURE";
642 case MSG_NET_SERVER_KICK : return "MSG_NET_SERVER_KICK";
643 case MSG_NET_DISCONNECT_REQUESTED : return "MSG_NET_DISCONNECT_REQUESTED";
644 case MSG_NET_USER_DISCONNECT : return "MSG_NET_USER_DISCONNECT";
645 case MSG_NET_RECV_ERROR : return "MSG_NET_RECV_ERROR";
646 case MSG_NET_REFRESH_SERVERLIST_SUCCESS : return "MSG_NET_REFRESH_SERVERLIST_SUCCESS";
647 case MSG_NET_REFRESH_SERVERLIST_FAILURE : return "MSG_NET_REFRESH_SERVERLIST_FAILURE";
648 case MSG_NET_REFRESH_REPOLIST_SUCCESS : return "MSG_NET_REFRESH_REPOLIST_SUCCESS";
649 case MSG_NET_OPEN_RESOURCE_SUCCESS : return "MSG_NET_OPEN_RESOURCE_SUCCESS";
650 case MSG_NET_REFRESH_REPOLIST_FAILURE : return "MSG_NET_REFRESH_REPOLIST_FAILURE";
651 case MSG_NET_FETCH_AI_PRESETS_SUCCESS : return "MSG_NET_FETCH_AI_PRESETS_SUCCESS";
652 case MSG_NET_FETCH_AI_PRESETS_FAILURE : return "MSG_NET_FETCH_AI_PRESETS_FAILURE";
653 case MSG_NET_ADD_PEEROPTIONS_REQUESTED : return "MSG_NET_ADD_PEEROPTIONS_REQUESTED";
654 case MSG_NET_REMOVE_PEEROPTIONS_REQUESTED : return "MSG_NET_REMOVE_PEEROPTIONS_REQUESTED";
655 case MSG_NET_DOWNLOAD_REPOFILE_REQUESTED : return "MSG_NET_DOWNLOAD_REPOFILE_REQUESTED";
656 case MSG_NET_DOWNLOAD_REPOFILE_SUCCESS : return "MSG_NET_DOWNLOAD_REPOFILE_SUCCESS";
657 case MSG_NET_DOWNLOAD_REPOFILE_FAILURE : return "MSG_NET_DOWNLOAD_REPOFILE_FAILURE";
658 case MSG_NET_DOWNLOAD_REPOFILE_PROGRESS : return "MSG_NET_DOWNLOAD_REPOFILE_PROGRESS";
659
660 case MSG_SIM_PAUSE_REQUESTED : return "MSG_SIM_PAUSE_REQUESTED";
661 case MSG_SIM_UNPAUSE_REQUESTED : return "MSG_SIM_UNPAUSE_REQUESTED";
662 case MSG_SIM_LOAD_TERRN_REQUESTED : return "MSG_SIM_LOAD_TERRN_REQUESTED";
663 case MSG_SIM_LOAD_SAVEGAME_REQUESTED : return "MSG_SIM_LOAD_SAVEGAME_REQUESTED";
664 case MSG_SIM_UNLOAD_TERRN_REQUESTED : return "MSG_SIM_UNLOAD_TERRN_REQUESTED";
665 case MSG_SIM_SPAWN_ACTOR_REQUESTED : return "MSG_SIM_SPAWN_ACTOR_REQUESTED";
666 case MSG_SIM_MODIFY_ACTOR_REQUESTED : return "MSG_SIM_MODIFY_ACTOR_REQUESTED";
667 case MSG_SIM_DELETE_ACTOR_REQUESTED : return "MSG_SIM_DELETE_ACTOR_REQUESTED";
668 case MSG_SIM_SEAT_PLAYER_REQUESTED : return "MSG_SIM_SEAT_PLAYER_REQUESTED";
669 case MSG_SIM_TELEPORT_PLAYER_REQUESTED : return "MSG_SIM_TELEPORT_PLAYER_REQUESTED";
670 case MSG_SIM_HIDE_NET_ACTOR_REQUESTED : return "MSG_SIM_HIDE_NET_ACTOR_REQUESTED";
671 case MSG_SIM_UNHIDE_NET_ACTOR_REQUESTED : return "MSG_SIM_UNHIDE_NET_ACTOR_REQUESTED";
672 case MSG_SIM_MUTE_NET_ACTOR_REQUESTED : return "MSG_SIM_MUTE_NET_ACTOR_REQUESTED";
673 case MSG_SIM_UNMUTE_NET_ACTOR_REQUESTED : return "MSG_SIM_UNMUTE_NET_ACTOR_REQUESTED";
674 case MSG_SIM_SCRIPT_EVENT_TRIGGERED : return "MSG_SIM_SCRIPT_EVENT_TRIGGERED";
675 case MSG_SIM_SCRIPT_CALLBACK_QUEUED : return "MSG_SIM_SCRIPT_CALLBACK_QUEUED";
676 case MSG_SIM_ACTOR_LINKING_REQUESTED : return "MSG_SIM_ACTOR_LINKING_REQUESTED";
677 case MSG_SIM_ADD_FREEFORCE_REQUESTED : return "MSG_SIM_ADD_FREEFORCE_REQUESTED";
678 case MSG_SIM_MODIFY_FREEFORCE_REQUESTED : return "MSG_SIM_MODIFY_FREEFORCE_REQUESTED";
679 case MSG_SIM_REMOVE_FREEFORCE_REQUESTED : return "MSG_SIM_REMOVE_FREEFORCE_REQUESTED";
680
681 case MSG_GUI_OPEN_MENU_REQUESTED : return "MSG_GUI_OPEN_MENU_REQUESTED";
682 case MSG_GUI_CLOSE_MENU_REQUESTED : return "MSG_GUI_CLOSE_MENU_REQUESTED";
683 case MSG_GUI_OPEN_SELECTOR_REQUESTED : return "MSG_GUI_OPEN_SELECTOR_REQUESTED";
684 case MSG_GUI_CLOSE_SELECTOR_REQUESTED : return "MSG_GUI_CLOSE_SELECTOR_REQUESTED";
685 case MSG_GUI_MP_CLIENTS_REFRESH : return "MSG_GUI_MP_CLIENTS_REFRESH";
686 case MSG_GUI_SHOW_MESSAGE_BOX_REQUESTED : return "MSG_GUI_SHOW_MESSAGE_BOX_REQUESTED";
687 case MSG_GUI_HIDE_MESSAGE_BOX_REQUESTED : return "MSG_GUI_HIDE_MESSAGE_BOX_REQUESTED";
688 case MSG_GUI_REFRESH_TUNING_MENU_REQUESTED: return "MSG_GUI_REFRESH_TUNING_MENU_REQUESTED";
689
690 case MSG_EDI_MODIFY_GROUNDMODEL_REQUESTED : return "MSG_EDI_MODIFY_GROUNDMODEL_REQUESTED";
691 case MSG_EDI_ENTER_TERRN_EDITOR_REQUESTED : return "MSG_EDI_ENTER_TERRN_EDITOR_REQUESTED";
692 case MSG_EDI_LEAVE_TERRN_EDITOR_REQUESTED : return "MSG_EDI_LEAVE_TERRN_EDITOR_REQUESTED";
693 case MSG_EDI_SAVE_TERRN_CHANGES_REQUESTED : return "MSG_EDI_SAVE_TERRN_CHANGES_REQUESTED";
694 case MSG_EDI_LOAD_BUNDLE_REQUESTED : return "MSG_EDI_LOAD_BUNDLE_REQUESTED";
695 case MSG_EDI_RELOAD_BUNDLE_REQUESTED : return "MSG_EDI_RELOAD_BUNDLE_REQUESTED";
696 case MSG_EDI_UNLOAD_BUNDLE_REQUESTED : return "MSG_EDI_UNLOAD_BUNDLE_REQUESTED";
697 case MSG_EDI_CREATE_PROJECT_REQUESTED : return "MSG_EDI_CREATE_PROJECT_REQUESTED";
698 case MSG_EDI_MODIFY_PROJECT_REQUESTED : return "MSG_EDI_MODIFY_PROJECT_REQUESTED";
699 case MSG_EDI_DELETE_PROJECT_REQUESTED : return "MSG_EDI_DELETE_PROJECT_REQUESTED";
700 case MSG_EDI_ADD_FREEBEAMGFX_REQUESTED : return "MSG_EDI_ADD_FREEBEAMGFX_REQUESTED";
701 case MSG_EDI_MODIFY_FREEBEAMGFX_REQUESTED : return "MSG_EDI_MODIFY_FREEBEAMGFX_REQUESTED";
702 case MSG_EDI_DELETE_FREEBEAMGFX_REQUESTED : return "MSG_EDI_DELETE_FREEBEAMGFX_REQUESTED";
703
704 default: return "";
705 }
706}
707
709{
710 switch (val)
711 {
712 case TObjSpecialObject::TRUCK: return "truck";
713 case TObjSpecialObject::LOAD: return "load";
714 case TObjSpecialObject::MACHINE: return "machine";
715 case TObjSpecialObject::BOAT: return "boat";
716 case TObjSpecialObject::TRUCK2: return "truck2";
717 case TObjSpecialObject::GRID: return "grid";
718 case TObjSpecialObject::ROAD: return "road";
719 case TObjSpecialObject::ROAD_BORDER_LEFT: return "roadborderleft";
720 case TObjSpecialObject::ROAD_BORDER_RIGHT: return "roadborderright";
721 case TObjSpecialObject::ROAD_BORDER_BOTH: return "roadborderboth";
722 case TObjSpecialObject::ROAD_BRIDGE_NO_PILLARS: return "roadbridgenopillar";
723 case TObjSpecialObject::ROAD_BRIDGE: return "roadbridge";
724 default: return "";
725 }
726}
727
728} // namespace RoR
729
730namespace RigDef
731{
732
734{
735 // PLEASE maintain alphabetical order!
736
737 switch (keyword)
738 {
739 case Keyword::ADD_ANIMATION: return "add_animation";
740 case Keyword::AIRBRAKES: return "airbrakes";
741 case Keyword::ANIMATORS: return "animators";
742 case Keyword::ANTILOCKBRAKES: return "antilockbrakes";
743 case Keyword::AUTHOR: return "author";
744 case Keyword::AXLES: return "axles";
745 case Keyword::BEAMS: return "beams";
746 case Keyword::BRAKES: return "brakes";
747 case Keyword::CAB: return "cab";
748 case Keyword::CAMERAS: return "cameras";
749 case Keyword::CAMERARAIL: return "camerarail";
750 case Keyword::CINECAM: return "cinecam";
751 case Keyword::COLLISIONBOXES: return "collisionboxes";
752 case Keyword::COMMANDS: return "commands";
753 case Keyword::COMMANDS2: return "commands2";
754 case Keyword::COMMENT: return "comment";
755 case Keyword::CONTACTERS: return "contacters";
756 case Keyword::CRUISECONTROL: return "cruisecontrol";
757 case Keyword::DESCRIPTION: return "description";
758 case Keyword::DETACHER_GROUP: return "detacher_group";
759 case Keyword::DISABLEDEFAULTSOUNDS: return "disabledefaultsounds";
760 case Keyword::ENABLE_ADVANCED_DEFORMATION: return "enable_advanced_deformation";
761 case Keyword::END: return "end";
762 case Keyword::END_COMMENT: return "end_comment";
763 case Keyword::END_DESCRIPTION: return "end_description";
764 case Keyword::END_SECTION: return "end_section";
765 case Keyword::ENGINE: return "engine";
766 case Keyword::ENGOPTION: return "engoption";
767 case Keyword::ENGTURBO: return "engturbo";
768 case Keyword::EXHAUSTS: return "exhausts";
769 case Keyword::EXTCAMERA: return "extcamera";
770 case Keyword::FILEINFO: return "fileinfo";
771 case Keyword::FILEFORMATVERSION: return "fileformatversion";
772 case Keyword::FIXES: return "fixes";
773 case Keyword::FLARES: return "flares";
774 case Keyword::FLARES2: return "flares2";
775 case Keyword::FLARES3: return "flares3";
776 case Keyword::FLAREGROUPS_NO_IMPORT:return "flaregroups_no_import";
777 case Keyword::FLEXBODIES: return "flexbodies";
778 case Keyword::FLEXBODY_CAMERA_MODE: return "flexbody_camera_mode";
779 case Keyword::FLEXBODYWHEELS: return "flexbodywheels";
780 case Keyword::FORSET: return "forset";
781 case Keyword::FORWARDCOMMANDS: return "forwardcommands";
782 case Keyword::FUSEDRAG: return "fusedrag";
783 case Keyword::GLOBALS: return "globals";
784 case Keyword::GUID: return "guid";
785 case Keyword::GUISETTINGS: return "guisettings";
786 case Keyword::HELP: return "help";
787 case Keyword::HIDEINCHOOSER: return "hideinchooser";
788 case Keyword::HOOKGROUP: return "hookgroup";
789 case Keyword::HOOKS: return "hooks";
790 case Keyword::HYDROS: return "hydros";
791 case Keyword::IMPORTCOMMANDS: return "importcommands";
792 case Keyword::INTERAXLES: return "interaxles";
793 case Keyword::LOCKGROUPS: return "lockgroups";
794 case Keyword::LOCKGROUP_DEFAULT_NOLOCK: return "lockgroup_default_nolock";
795 case Keyword::MANAGEDMATERIALS: return "managedmaterials";
796 case Keyword::MATERIALFLAREBINDINGS: return "materialflarebindings";
797 case Keyword::MESHWHEELS: return "meshwheels";
798 case Keyword::MESHWHEELS2: return "meshwheels2";
799 case Keyword::MINIMASS: return "minimass";
800 case Keyword::NODES: return "nodes";
801 case Keyword::NODES2: return "nodes2";
802 case Keyword::PARTICLES: return "particles";
803 case Keyword::PISTONPROPS: return "pistonprops";
804 case Keyword::PROP_CAMERA_MODE: return "prop_camera_mode";
805 case Keyword::PROPS: return "props";
806 case Keyword::RAILGROUPS: return "railgroups";
807 case Keyword::RESCUER: return "rescuer";
808 case Keyword::RIGIDIFIERS: return "rigidifiers";
809 case Keyword::ROLLON: return "rollon";
810 case Keyword::ROPABLES: return "ropables";
811 case Keyword::ROPES: return "ropes";
812 case Keyword::ROTATORS: return "rotators";
813 case Keyword::ROTATORS2: return "rotators2";
814 case Keyword::SCREWPROPS: return "screwprops";
815 case Keyword::SECTION: return "section";
816 case Keyword::SECTIONCONFIG: return "sectionconfig";
817 case Keyword::SET_BEAM_DEFAULTS: return "set_beam_defaults";
818 case Keyword::SET_BEAM_DEFAULTS_SCALE: return "set_beam_defaults_scale";
819 case Keyword::SET_COLLISION_RANGE: return "set_collision_range";
820 case Keyword::SET_DEFAULT_MINIMASS: return "set_default_minimass";
821 case Keyword::SET_INERTIA_DEFAULTS: return "set_inertia_defaults";
822 case Keyword::SET_MANAGEDMATERIALS_OPTIONS: return "set_managedmaterials_options";
823 case Keyword::SET_NODE_DEFAULTS: return "set_node_defaults";
824 case Keyword::SET_SHADOWS: return "set_shadows";
825 case Keyword::SET_SKELETON_SETTINGS: return "set_skeleton_settings";
826 case Keyword::SHOCKS: return "shocks";
827 case Keyword::SHOCKS2: return "shocks2";
828 case Keyword::SHOCKS3: return "shocks3";
829 case Keyword::SLIDENODE_CONNECT_INSTANTLY: return "slidenode_connect_instantly";
830 case Keyword::SLIDENODES: return "slidenodes";
831 case Keyword::SLOPE_BRAKE: return "SlopeBrake";
832 case Keyword::SOUNDSOURCES: return "soundsources";
833 case Keyword::SOUNDSOURCES2: return "soundsources2";
834 case Keyword::SPEEDLIMITER: return "speedlimiter";
835 case Keyword::SUBMESH: return "submesh";
836 case Keyword::SUBMESH_GROUNDMODEL: return "submesh_groundmodel";
837 case Keyword::TEXCOORDS: return "texcoords";
838 case Keyword::TIES: return "ties";
839 case Keyword::TORQUECURVE: return "torquecurve";
840 case Keyword::TRACTIONCONTROL: return "tractioncontrol";
841 case Keyword::TRANSFERCASE: return "transfercase";
842 case Keyword::TRIGGERS: return "triggers";
843 case Keyword::TURBOJETS: return "turbojets";
844 case Keyword::TURBOPROPS: return "turboprops";
845 case Keyword::TURBOPROPS2: return "turboprops2";
846 case Keyword::VIDEOCAMERA: return "videocamera";
847 case Keyword::WHEELDETACHERS: return "wheeldetachers";
848 case Keyword::WHEELS: return "wheels";
849 case Keyword::WHEELS2: return "wheels2";
850 case Keyword::WINGS: return "wings";
851
852 default: return "";
853 }
854}
855
856} // namespace RigDef
quaternion Log() const
System integration layer; inspired by OgreBites::ApplicationContext.
Central state/object manager and communications hub.
#define ROR_ASSERT(_EXPR)
Definition Application.h:40
void LOG(const char *msg)
Legacy alias - formerly a macro.
uint32_t BitMask_t
Definition BitFlags.h:7
A database of user-installed content alias 'mods' (vehicles, terrains...)
Game state manager and message-queue provider.
Handles controller inputs from player.
#define _LC(ctx, str)
Definition Language.h:38
Central setup and event handler for input/windowing/rendering.
Definition AppContext.h:47
Quake-style console variable, defined in RoR.cfg or crated via Console UI and scripts.
Definition CVar.h:53
A content database MOTIVATION: RoR users usually have A LOT of content installed.
Global game console backend.
Definition Console.h:41
@ CONSOLE_MSGTYPE_INFO
Generic message.
Definition Console.h:60
void putMessage(MessageArea area, MessageType type, std::string const &msg, std::string icon="")
Definition Console.cpp:103
@ CONSOLE_SYSTEM_ERROR
Definition Console.h:52
Wrapper class, just for code consistency with other subsystems.
Definition DiscordRpc.h:31
Central game state manager.
Definition GameContext.h:96
Provides a 3D graphical representation of the simulation Idea: simulation runs at it's own constant r...
Definition GfxScene.h:47
Ogre::SceneManager * GetSceneManager()
Definition GfxScene.h:83
Manages controller configuration, evaluates input events.
This class represents the angelscript scripting interface.
void forwardExceptionAsScriptEvent(const std::string &from)
Forwards useful info from C++ try{}catch{} exceptions to script in the form of game event.
Facilitates execution of (small) tasks on separate threads.
Definition ThreadPool.h:105
static ThreadPool * DetectNumWorkersAndCreate()
Definition ThreadPool.h:107
const char * KeywordToString(RigDef::Keyword keyword)
@ SET_MANAGEDMATERIALS_OPTIONS
const char * MsgTypeToString(MsgType type)
MsgType
Global gameplay message loop, see struct Message in GameContext.h.
Definition Application.h:77
@ MSG_GUI_OPEN_MENU_REQUESTED
@ MSG_APP_MODCACHE_LOAD_REQUESTED
Definition Application.h:91
@ MSG_SIM_TELEPORT_PLAYER_REQUESTED
Payload = Ogre::Vector3* (owner)
@ MSG_NET_CONNECT_STARTED
@ MSG_APP_MODCACHE_PURGE_REQUESTED
Definition Application.h:93
@ MSG_NET_FETCH_AI_PRESETS_SUCCESS
Description = JSON string.
@ MSG_SIM_UNMUTE_NET_ACTOR_REQUESTED
Payload = ActorPtr* (owner)
@ MSG_NET_DOWNLOAD_REPOFILE_REQUESTED
Payload = RoR::RepoFileInstallRequest* (owner)
@ MSG_GUI_CLOSE_MENU_REQUESTED
@ MSG_NET_RECV_ERROR
@ MSG_EDI_ADD_FREEBEAMGFX_REQUESTED
Payload = RoR::FreeBeamGfxRequest* (owner)
@ MSG_NET_REMOVE_PEEROPTIONS_REQUESTED
Payload = RoR::PeerOptionsRequest* (owner)
@ MSG_SIM_PAUSE_REQUESTED
@ MSG_NET_DOWNLOAD_REPOFILE_SUCCESS
Payload = RoR::RepoFileInstallRequest* (owner)
@ MSG_APP_REINIT_UI_REQUESTED
Reloads fonts and re-applies style, i.e. after changing 'ui_scale_factor'.
Definition Application.h:98
@ MSG_SIM_UNPAUSE_REQUESTED
@ MSG_SIM_UNHIDE_NET_ACTOR_REQUESTED
Payload = ActorPtr* (owner)
@ MSG_SIM_HIDE_NET_ACTOR_REQUESTED
Payload = ActorPtr* (owner)
@ MSG_SIM_UNLOAD_TERRN_REQUESTED
@ MSG_EDI_UNLOAD_BUNDLE_REQUESTED
Payload = RoR::CacheEntryPtr* (owner)
@ MSG_NET_CONNECT_FAILURE
@ MSG_GUI_REFRESH_TUNING_MENU_REQUESTED
@ MSG_APP_MODCACHE_UPDATE_REQUESTED
Definition Application.h:92
@ MSG_APP_DISPLAY_WINDOWED_REQUESTED
Definition Application.h:90
@ MSG_NET_DISCONNECT_REQUESTED
@ MSG_NET_FETCH_AI_PRESETS_FAILURE
Description = message.
@ MSG_EDI_ENTER_TERRN_EDITOR_REQUESTED
@ MSG_SIM_ACTOR_LINKING_REQUESTED
Payload = RoR::ActorLinkingRequest* (owner)
@ MSG_SIM_SPAWN_ACTOR_REQUESTED
Payload = RoR::ActorSpawnRequest* (owner)
@ MSG_SIM_REMOVE_FREEFORCE_REQUESTED
Payload = RoR::FreeForceID_t* (owner)
@ MSG_SIM_SCRIPT_EVENT_TRIGGERED
Payload = RoR::ScriptEventArgs* (owner)
@ MSG_SIM_SCRIPT_CALLBACK_QUEUED
Payload = RoR::ScriptCallbackArgs* (owner)
@ MSG_GUI_OPEN_SELECTOR_REQUESTED
Payload = LoaderType* (owner), Description = GUID | empty.
@ MSG_APP_UNLOAD_SCRIPT_REQUESTED
Payload = RoR::ScriptUnitId_t* (owner)
Definition Application.h:95
@ MSG_SIM_SEAT_PLAYER_REQUESTED
Payload = RoR::ActorPtr (owner) | nullptr.
@ MSG_GUI_MP_CLIENTS_REFRESH
@ MSG_EDI_SAVE_TERRN_CHANGES_REQUESTED
@ MSG_NET_CONNECT_PROGRESS
@ MSG_EDI_LOAD_BUNDLE_REQUESTED
Payload = RoR::CacheEntryPtr* (owner)
@ MSG_APP_LOAD_SCRIPT_REQUESTED
Payload = RoR::LoadScriptRequest* (owner)
Definition Application.h:94
@ MSG_SIM_LOAD_SAVEGAME_REQUESTED
@ MSG_EDI_LEAVE_TERRN_EDITOR_REQUESTED
@ MSG_NET_ADD_PEEROPTIONS_REQUESTED
Payload = RoR::PeerOptionsRequest* (owner)
@ MSG_NET_CONNECT_SUCCESS
@ MSG_NET_USER_DISCONNECT
@ MSG_NET_CONNECT_REQUESTED
@ MSG_SIM_ADD_FREEFORCE_REQUESTED
Payload = RoR::FreeForceRequest* (owner)
@ MSG_NET_OPEN_RESOURCE_SUCCESS
Payload = GUI::ResourcesCollection* (owner)
@ MSG_GUI_HIDE_MESSAGE_BOX_REQUESTED
@ MSG_APP_SHUTDOWN_REQUESTED
Definition Application.h:87
@ MSG_APP_DISPLAY_FULLSCREEN_REQUESTED
Definition Application.h:89
@ MSG_EDI_MODIFY_FREEBEAMGFX_REQUESTED
Payload = RoR::FreeBeamGfxRequest* (owner)
@ MSG_GUI_CLOSE_SELECTOR_REQUESTED
@ MSG_EDI_MODIFY_GROUNDMODEL_REQUESTED
Payload = RoR::ground_model_t* (weak)
@ MSG_EDI_DELETE_FREEBEAMGFX_REQUESTED
Payload = RoR::FreeBeamGfxID_t* (owner)
@ MSG_NET_DOWNLOAD_REPOFILE_PROGRESS
Payload = int* (owner)
@ MSG_GUI_SHOW_MESSAGE_BOX_REQUESTED
Payload = MessageBoxConfig* (owner)
@ MSG_SIM_MODIFY_FREEFORCE_REQUESTED
Payload = RoR::FreeForceRequest* (owner)
@ MSG_NET_REFRESH_SERVERLIST_FAILURE
Payload = RoR::CurlFailInfo* (owner)
@ MSG_NET_REFRESH_REPOLIST_FAILURE
Payload = RoR::CurlFailInfo* (owner)
@ MSG_SIM_MUTE_NET_ACTOR_REQUESTED
Payload = ActorPtr* (owner)
@ MSG_EDI_CREATE_PROJECT_REQUESTED
Payload = RoR::CreateProjectRequest* (owner)
@ MSG_EDI_DELETE_PROJECT_REQUESTED
Payload = RoR::CacheEntryPtr* (owner)
@ MSG_EDI_MODIFY_PROJECT_REQUESTED
Payload = RoR::UpdateProjectRequest* (owner)
@ MSG_APP_SCRIPT_THREAD_STATUS
Payload = RoR::ScriptEventArgs* (owner)
Definition Application.h:96
@ MSG_SIM_LOAD_TERRN_REQUESTED
@ MSG_NET_REFRESH_REPOLIST_SUCCESS
Payload = GUI::ResourcesCollection* (owner)
@ MSG_NET_DOWNLOAD_REPOFILE_FAILURE
Payload = RoR::RepoFileInstallRequest* (owner)
@ MSG_SIM_DELETE_ACTOR_REQUESTED
Payload = RoR::ActorPtr* (owner)
@ MSG_NET_REFRESH_SERVERLIST_SUCCESS
Payload = GUI::MpServerInfoVec* (owner)
@ MSG_SIM_MODIFY_ACTOR_REQUESTED
Payload = RoR::ActorModifyRequest* (owner)
@ MSG_APP_SCREENSHOT_REQUESTED
Definition Application.h:88
@ MSG_NET_SERVER_KICK
@ MSG_APP_REINIT_INPUT_REQUESTED
Definition Application.h:97
@ MSG_EDI_RELOAD_BUNDLE_REQUESTED
Payload = RoR::CacheEntryPtr* (owner)
SimGearboxMode
std::string ToLocalizedString(SimGearboxMode e)
@ MANUAL_STICK
Fully manual: stick shift.
@ MANUAL_RANGES
Fully manual: stick shift with ranges.
@ SEMI_AUTO
Manual shift with auto clutch.
@ MANUAL
Fully manual: sequential shift.
@ AUTO
Automatic shift.
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
ContentManager * GetContentManager()
AppContext * GetAppContext()
CVar * gfx_static_cam_fov_exp
static DiscordRpc g_discord_rpc
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
OverlayWrapper * GetOverlayWrapper()
InputEngine * GetInputEngine()
CVar * audio_enable_obstruction
static InputEngine * g_input_engine
CVar * sys_projects_dir
CVar * io_outgauge_mode
ServerScriptSequencer * GetServerScript()
CVar * diag_auto_spawner_report
CVar * gfx_extcam_mode
CVar * sim_spawn_running
CVar * diag_actor_dump
static ServerScriptSequencer * g_server_script_sequencer
CVar * remote_query_url
CVar * io_blink_lock_range
void CreateOverlayWrapper()
CVar * diag_log_beam_trigger
CVar * cli_resume_autosave
ThreadPool * GetThreadPool()
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
static MumbleIntegration * g_mumble
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
void CreateGuiManager()
CVar * gfx_sky_time_speed
CVar * sim_races_enabled
CVar * app_rendersys_override
CVar * io_outgauge_port
static CacheSystem g_cache_system
CVar * audio_default_efx_preset
CVar * sim_terrain_gui_name
CVar * audio_enable_reflection_panning
CameraManager * GetCameraManager()
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
SoundScriptManager * GetSoundScriptManager()
CVar * app_recent_scripts
CVar * mp_server_port
static ContentManager g_content_manager
CVar * app_force_cache_purge
CVar * gfx_particles_mode
OutGauge * GetOutGauge()
static GUIManager * g_gui_manager
CVar * diag_hide_wheels
CVar * diag_preset_spawn_pos
static GfxScene g_gfx_scene
static LanguageEngine g_language_engine
CVar * diag_truck_mass
CVar * io_ffb_stress_gain
void CreateScriptEngine()
CVar * diag_hide_nodes
CVar * audio_master_volume
void DestroyInputEngine()
CVar * diag_profiler_enabled
GUIManager * GetGuiManager()
GameContext * GetGameContext()
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
GfxScene * GetGfxScene()
CVar * app_force_cache_update
CVar * sys_server_scripts_dir
CVar * io_analog_sensitivity
static CameraManager * g_camera_manager
CVar * app_state
static Terrain * g_sim_terrain
CVar * gfx_water_waves
CVar * cli_preset_spawn_pos
CVar * mp_chat_auto_hide
void CreateMumble()
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
void CreateGfxScene()
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
DiscordRpc * GetDiscordRpc()
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
Console * GetConsole()
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
static AppContext g_app_context
CVar * io_ffb_master_gain
static ThreadPool * g_thread_pool
CVar * diag_simple_materials
CVar * mp_player_token
CVar * mp_pseudo_collisions
CVar * io_hydro_coupling
ScriptEngine * GetScriptEngine()
CVar * diag_hide_broken_beams
CVar * gfx_alt_actor_materials
CVar * diag_angelscript_generic_bind_test
static OutGauge g_out_gauge
CacheSystem * GetCacheSystem()
CVar * diag_preset_veh_enter
CVar * gfx_speedo_imperial
CVar * app_custom_scripts
CVar * ui_always_show_fullsize
CVar * gfx_enable_rtshaders
static ScriptEngine * g_script_engine
CVar * diag_use_mygui_logfile
void CreateCameraManager()
CVar * sim_quickload_dialog
CVar * gfx_envmap_enabled
static OverlayWrapper * g_overlay_wrapper
static Console g_console
CVar * flexbody_defrag_reorder_indices
CVar * diag_preset_terrain
CVar * sim_load_savegame
CVar * cli_preset_spawn_rot
CVar * gfx_reduce_shadows
CVar * diag_videocameras
CVar * audio_enable_occlusion
static Network g_network
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
void CreateThreadPool()
CVar * gfx_texture_filter
void CreateServerScript()
MumbleIntegration * GetMumble()
CVar * sys_screenshot_dir
void CreateInputEngine()
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
Network * GetNetwork()
CVar * io_arcade_controls
CVar * io_analog_smoothing
CVar * mp_server_host
CVar * gfx_shadow_quality
LanguageEngine * GetLanguageEngine()
void CreateSoundScriptManager()
CVar * sys_scripts_dir
CVar * sys_thumbnails_dir
static SoundScriptManager * g_sound_script_manager
static GameContext g_game_context
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
void DestroyOverlayWrapper()
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
GfxExtCamMode
void Log(const char *msg)
The ultimate, application-wide logging function. Adds a line (any length) in 'RoR....
GfxFlaresMode
@ CURR_VEHICLE_HEAD_ONLY
Only current vehicle, main lights.
@ ALL_VEHICLES_HEAD_ONLY
All vehicles, main lights.
@ NONE
None (fastest)
@ NO_LIGHTSOURCES
No light sources.
@ ALL_VEHICLES_ALL_LIGHTS
All vehicles, all lights.
void HandleGenericException(const std::string &from, BitMask_t flags)
EfxReverbEngine
void HandleMsgQueueException(MsgType from)
GfxShadowType
UiPreset
See UiPresets[] list in GUIManager.cpp (declared extern in GUIManager.h)
GfxWaterMode
@ FULL_FAST
Reflection + refraction (speed optimized)
@ FULL_HQ
Reflection + refraction (quality optimized)
@ BASIC
Basic (fastest)
@ REFLECT
Reflection.
IoInputGrabMode
GfxVegetation
void LogFormat(const char *format,...)
Improved logging utility. Uses fixed 2Kb buffer.
const char * TObjSpecialObjectToString(TObjSpecialObject val)
TObjSpecialObject
@ TRUCK2
Free position (not auto-adjusted to fit terrain or water surface)
@ CAELUM
Caelum (best looking, slower)
@ SANDSTORM
Sandstorm (fastest)
@ SKYX
SkyX (best looking, slower)
SimResetMode
GfxTexFilter
@ HANDLEGENERICEXCEPTION_LOGFILE
@ HANDLEGENERICEXCEPTION_SCRIPTEVENT
@ HANDLEGENERICEXCEPTION_CONSOLE