{"name":"Arma 3: Custom Info","title":"Arma 3: Custom Info","type":"topic","url":"https://community.bistudio.com/wiki/Arma_3:_Custom_Info","revid":364315,"updated":"2024-05-06T09:38:45Z","aliases":["Arma 3 Custom Info"],"markdown":"UI window elements that encompass various display modules and gadgets (Navigation, Camera feeds, Radar...)\n\nForum topic: [Main thread](https://forums.bistudio.com/topic/200468-jets-custom-info/)\n\n### User Interface\n\n#### Action keybinds (default)\n\n|  |  |\n|---|---|\n| <kbd>[</kbd> | next module on left panel |\n| <kbd>]</kbd> | next module on right panel |\n| <kbd>RCtrl</kbd> + <kbd>[</kbd> | toggle submodes on current left panel module |\n| <kbd>RCtrl</kbd> + <kbd>]</kbd> | toggle submodes on current right panel module |\n| *no default keybind* | close left display |\n| *no default keybind* | close right display |\n| *no default keybind* | close left display |\n| *no default keybind* | close right display |\n\n#### Modules\n\n| Module | Description | Sub-mode |\n|---|---|---|\n| **NAV** | Navigation - requires either a GPS item or GPS-equipped vehicle | rotation |\n| **SLA** | Sling-load Assistant - only available in vehicles capable of slingloading | N/A |\n| **SENS** | Sensors Display - tactical awareness display that combines information about tracked targets from all sensors and about threats (Arma 3 Sensors - User Interface) | ranges |\n| **CAM Drone** | Drone Feed - requires UAV terminal item | spectrum |\n| **CAM Driver** | Driver Feed - usually available for commanders and gunners in tanks and for pilots (as a Targeting Pod or a Sling-load camera feed) | spectrum |\n| **CAM Gunner** | Gunner Feed - usually available for pilots and drivers and commanders in tanks | spectrum |\n| **CAM Commander** | Commander Feed - usually available for drivers and gunners in tanks | spectrum |\n| **CAM Missile** | Missile Feed - available mostly on few attack aircrafts, feed is initiated after a missile with camera feed capability is fired | N/A |\n| **CREW** | Crew Display - shows crew members' names, cargo occupancy, transport capacity, sling-loaded vehicle | N/A |\n\n> [!IMPORTANT]\n> The CAM modules only work with PIP enabled!\n\n### Configuration\n\nThe new Sensor system gets enabled by defining a VehicleSystemsDisplayManagerComponentLeft (left display) or VehicleSystemsDisplayManagerComponentRight (right display) class inside the vehicle's Components class.\n\n```cpp\nclass MyVehicle_F : MyBaseVehicle_F\n{\n    class Components : Components\n    {\n        class VehicleSystemsDisplayManagerComponentLeft : DefaultVehicleSystemsDisplayManagerLeft\n        {\n        };\n\n        class VehicleSystemsDisplayManagerComponentRight : DefaultVehicleSystemsDisplayManagerRight\n        {\n        };\n    };\n};\n```\n\nFor simplicity the class can inherit from one of the defaults.\nYou can also inherit from one of the premade templates that are available in the configFile root.\n\nFor tank roles - each template adds camera feeds from the other two positions\n\n```cpp\nVehicleSystemsTemplateLeftDriver\nVehicleSystemsTemplateRightDriver\nVehicleSystemsTemplateLeftCommander\nVehicleSystemsTemplateRightCommander\nVehicleSystemsTemplateLeftGunner\nVehicleSystemsTemplateRightGunner\n```\n\nFor (some) pilots and copilots - template adds a Sensors display and a Driver feed camera (e.g. pilotCamera)\n\n```cpp\nVehicleSystemsTemplateLeftPilot\nVehicleSystemsTemplateRightPilot\n```\n\n#### Automatic usage & backwards compatibility\n\nIf the Vehicle doesn't have the VehicleSystemsDisplayManagerComponent defined one of the two default pairs is used.\n\n```cpp\n// core definitions, do not override\nDefaultVehicleSystemsDisplayManagerLeft\nDefaultVehicleSystemsDisplayManagerRight\nDefaultVehicleSystemsDisplayManagerLeftSensors\nDefaultVehicleSystemsDisplayManagerRightSensors\n```\n\nThe pair of defaults with Sensors suffix is used whenever the vehicle had radarType defined as *air radar* or *ground radar*.\nIt adds Sensors display in addition to the normal default displays.\n\n#### Properties\n\n```cpp\nclass VehicleSystemsDisplayManagerLeft\n{\n    componentType = \"VehicleSystemsDisplayManager\"; // mandatory\n    x = (safezoneX + 0.5 * (((safezoneW / safezoneH) min 1.2) / 40));\n    y = (safezoneY + safezoneH - 21 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25));\n    left = 1;\n    defaultDisplay = \"CrewDisplay\"; // display to be selected when player changes vehicle and had \"empty\" previously selected\n\n    class Components\n    {\n        class MinimapDisplay            // GPS\n        {\n            componentType = \"MinimapDisplayComponent\";\n            resource = \"RscCustomInfoMiniMap\";\n        };\n\n        class SlingLoadDisplay            // Slingload Assistant\n        {\n            componentType = \"SlingLoadDisplayComponent\";\n            resource = \"RscCustomInfoSlingLoad\";\n        };\n\n        class SensorsDisplay            // Combined display showing sensors, detected and tracked targets, info about marked target and threats\n        {\n            componentType = \"SensorsDisplayComponent\";\n            range[] = {8000,4000,2000};    // accepts an integer or an array of available ranges (submode)\n            showTargetTypes = 1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 + 256 + 512 + 1024;\n            // 1 - Sensor sectors, 2 - Threats, 4 - Marked tgt symbol, 8 - Own detection\n            // 16 - Remote detection, 32 - Active detection, 64 - Passive detection, 128 - Ground targets\n            // 256 - Air tgts, 512 - Men, 1024 - Special (laser, NV)\n            resource = \"RscCustomInfoSensors\";\n        };\n\n        class UAVFeedDisplay            // Drone camera feed\n        {\n            componentType = \"UAVFeedDisplayComponent\";\n            // resource = \"RscCustomInfoAVCamera\"; // hardcoded\n        };\n\n        class VehicleDriverDisplay        // Camera feed from driver's optics\n        {\n            componentType = \"TransportFeedDisplayComponent\";\n            source = \"Driver\";\n            // resource = \"RscTransportCameraComponentDriver\"; // hardcoded\n        };\n\n        class VehicleGunnerDisplay        // Camera feed from gunner's optics\n        {\n            componentType = \"TransportFeedDisplayComponent\";\n            source = \"PrimaryGunner\";\n            // resource = \"RscTransportCameraComponentPrimaryGunner\"; // hardcoded\n        };\n\n        class VehicleCommanderDisplay    // Camera feed from commander's optics\n        {\n            componentType = \"TransportFeedDisplayComponent\";\n            source = \"Commander\";\n            // resource = \"RscTransportCameraComponentCommander\"; // hardcoded\n        };\n\n        class MissileDisplay            // Camera feed from missile's warhead\n        {\n            componentType = \"TransportFeedDisplayComponent\";\n            source = \"Missile\";\n            // resource = \"RscTransportCameraComponentMissile\"; // hardcoded\n        };\n\n        class CrewDisplay                // List of all crew members, cargo and transported or slingloaded vehicle\n        {\n            componentType = \"CrewDisplayComponent\";\n            resource = \"RscCustomInfoCrew\";\n        };\n\n        class CustomDisplayXY            // Custom display using custom resource\n        {\n            componentType = \"CustomDisplayComponent\";\n            resource = \"RscCustomInfoMyCustomRadModule\";\n        };\n\n        class EmptyDisplay                // Empty display - hide panel\n        {\n            componentType = \"EmptyDisplayComponent\";\n        };\n    };\n};\n\nclass VehicleSystemsDisplayManagerRight : VehicleSystemsDisplayManagerLeft\n{\n    x = ((10 * (((safezoneW / safezoneH) min 1.2) / 40)) + 0.5 * (((safezoneW / safezoneH) min 1.2) / 40)));\n    left = 0;\n    right = 1;\n    forcedDisplay = \"SensorsDisplay\";    // display to be selected when player enters the vehicle no matter what was selected before\n}\n```\n\n### See Also\n\n- Arma 3: Sensors\n- Arma 3: Targeting\n- [Custom Info thread](https://forums.bistudio.com/topic/200468-jets-custom-info/)","sections":[{"heading":null,"level":1,"markdown":"UI window elements that encompass various display modules and gadgets (Navigation, Camera feeds, Radar...)\n\nForum topic: [Main thread](https://forums.bistudio.com/topic/200468-jets-custom-info/)"},{"heading":"User Interface","level":3,"markdown":""},{"heading":"Action keybinds (default)","level":4,"markdown":"|  |  |\n|---|---|\n| <kbd>[</kbd> | next module on left panel |\n| <kbd>]</kbd> | next module on right panel |\n| <kbd>RCtrl</kbd> + <kbd>[</kbd> | toggle submodes on current left panel module |\n| <kbd>RCtrl</kbd> + <kbd>]</kbd> | toggle submodes on current right panel module |\n| *no default keybind* | close left display |\n| *no default keybind* | close right display |\n| *no default keybind* | close left display |\n| *no default keybind* | close right display |"},{"heading":"Modules","level":4,"markdown":"| Module | Description | Sub-mode |\n|---|---|---|\n| **NAV** | Navigation - requires either a GPS item or GPS-equipped vehicle | rotation |\n| **SLA** | Sling-load Assistant - only available in vehicles capable of slingloading | N/A |\n| **SENS** | Sensors Display - tactical awareness display that combines information about tracked targets from all sensors and about threats (Arma 3 Sensors - User Interface) | ranges |\n| **CAM Drone** | Drone Feed - requires UAV terminal item | spectrum |\n| **CAM Driver** | Driver Feed - usually available for commanders and gunners in tanks and for pilots (as a Targeting Pod or a Sling-load camera feed) | spectrum |\n| **CAM Gunner** | Gunner Feed - usually available for pilots and drivers and commanders in tanks | spectrum |\n| **CAM Commander** | Commander Feed - usually available for drivers and gunners in tanks | spectrum |\n| **CAM Missile** | Missile Feed - available mostly on few attack aircrafts, feed is initiated after a missile with camera feed capability is fired | N/A |\n| **CREW** | Crew Display - shows crew members' names, cargo occupancy, transport capacity, sling-loaded vehicle | N/A |\n\n> [!IMPORTANT]\n> The CAM modules only work with PIP enabled!"},{"heading":"Configuration","level":3,"markdown":"The new Sensor system gets enabled by defining a VehicleSystemsDisplayManagerComponentLeft (left display) or VehicleSystemsDisplayManagerComponentRight (right display) class inside the vehicle's Components class.\n\n```cpp\nclass MyVehicle_F : MyBaseVehicle_F\n{\n    class Components : Components\n    {\n        class VehicleSystemsDisplayManagerComponentLeft : DefaultVehicleSystemsDisplayManagerLeft\n        {\n        };\n\n        class VehicleSystemsDisplayManagerComponentRight : DefaultVehicleSystemsDisplayManagerRight\n        {\n        };\n    };\n};\n```\n\nFor simplicity the class can inherit from one of the defaults.\nYou can also inherit from one of the premade templates that are available in the configFile root.\n\nFor tank roles - each template adds camera feeds from the other two positions\n\n```cpp\nVehicleSystemsTemplateLeftDriver\nVehicleSystemsTemplateRightDriver\nVehicleSystemsTemplateLeftCommander\nVehicleSystemsTemplateRightCommander\nVehicleSystemsTemplateLeftGunner\nVehicleSystemsTemplateRightGunner\n```\n\nFor (some) pilots and copilots - template adds a Sensors display and a Driver feed camera (e.g. pilotCamera)\n\n```cpp\nVehicleSystemsTemplateLeftPilot\nVehicleSystemsTemplateRightPilot\n```"},{"heading":"Automatic usage & backwards compatibility","level":4,"markdown":"If the Vehicle doesn't have the VehicleSystemsDisplayManagerComponent defined one of the two default pairs is used.\n\n```cpp\n// core definitions, do not override\nDefaultVehicleSystemsDisplayManagerLeft\nDefaultVehicleSystemsDisplayManagerRight\nDefaultVehicleSystemsDisplayManagerLeftSensors\nDefaultVehicleSystemsDisplayManagerRightSensors\n```\n\nThe pair of defaults with Sensors suffix is used whenever the vehicle had radarType defined as *air radar* or *ground radar*.\nIt adds Sensors display in addition to the normal default displays."},{"heading":"Properties","level":4,"markdown":"```cpp\nclass VehicleSystemsDisplayManagerLeft\n{\n    componentType = \"VehicleSystemsDisplayManager\"; // mandatory\n    x = (safezoneX + 0.5 * (((safezoneW / safezoneH) min 1.2) / 40));\n    y = (safezoneY + safezoneH - 21 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25));\n    left = 1;\n    defaultDisplay = \"CrewDisplay\"; // display to be selected when player changes vehicle and had \"empty\" previously selected\n\n    class Components\n    {\n        class MinimapDisplay            // GPS\n        {\n            componentType = \"MinimapDisplayComponent\";\n            resource = \"RscCustomInfoMiniMap\";\n        };\n\n        class SlingLoadDisplay            // Slingload Assistant\n        {\n            componentType = \"SlingLoadDisplayComponent\";\n            resource = \"RscCustomInfoSlingLoad\";\n        };\n\n        class SensorsDisplay            // Combined display showing sensors, detected and tracked targets, info about marked target and threats\n        {\n            componentType = \"SensorsDisplayComponent\";\n            range[] = {8000,4000,2000};    // accepts an integer or an array of available ranges (submode)\n            showTargetTypes = 1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 + 256 + 512 + 1024;\n            // 1 - Sensor sectors, 2 - Threats, 4 - Marked tgt symbol, 8 - Own detection\n            // 16 - Remote detection, 32 - Active detection, 64 - Passive detection, 128 - Ground targets\n            // 256 - Air tgts, 512 - Men, 1024 - Special (laser, NV)\n            resource = \"RscCustomInfoSensors\";\n        };\n\n        class UAVFeedDisplay            // Drone camera feed\n        {\n            componentType = \"UAVFeedDisplayComponent\";\n            // resource = \"RscCustomInfoAVCamera\"; // hardcoded\n        };\n\n        class VehicleDriverDisplay        // Camera feed from driver's optics\n        {\n            componentType = \"TransportFeedDisplayComponent\";\n            source = \"Driver\";\n            // resource = \"RscTransportCameraComponentDriver\"; // hardcoded\n        };\n\n        class VehicleGunnerDisplay        // Camera feed from gunner's optics\n        {\n            componentType = \"TransportFeedDisplayComponent\";\n            source = \"PrimaryGunner\";\n            // resource = \"RscTransportCameraComponentPrimaryGunner\"; // hardcoded\n        };\n\n        class VehicleCommanderDisplay    // Camera feed from commander's optics\n        {\n            componentType = \"TransportFeedDisplayComponent\";\n            source = \"Commander\";\n            // resource = \"RscTransportCameraComponentCommander\"; // hardcoded\n        };\n\n        class MissileDisplay            // Camera feed from missile's warhead\n        {\n            componentType = \"TransportFeedDisplayComponent\";\n            source = \"Missile\";\n            // resource = \"RscTransportCameraComponentMissile\"; // hardcoded\n        };\n\n        class CrewDisplay                // List of all crew members, cargo and transported or slingloaded vehicle\n        {\n            componentType = \"CrewDisplayComponent\";\n            resource = \"RscCustomInfoCrew\";\n        };\n\n        class CustomDisplayXY            // Custom display using custom resource\n        {\n            componentType = \"CustomDisplayComponent\";\n            resource = \"RscCustomInfoMyCustomRadModule\";\n        };\n\n        class EmptyDisplay                // Empty display - hide panel\n        {\n            componentType = \"EmptyDisplayComponent\";\n        };\n    };\n};\n\nclass VehicleSystemsDisplayManagerRight : VehicleSystemsDisplayManagerLeft\n{\n    x = ((10 * (((safezoneW / safezoneH) min 1.2) / 40)) + 0.5 * (((safezoneW / safezoneH) min 1.2) / 40)));\n    left = 0;\n    right = 1;\n    forcedDisplay = \"SensorsDisplay\";    // display to be selected when player enters the vehicle no matter what was selected before\n}\n```"},{"heading":"See Also","level":3,"markdown":"- Arma 3: Sensors\n- Arma 3: Targeting\n- [Custom Info thread](https://forums.bistudio.com/topic/200468-jets-custom-info/)"}],"categories":["Arma 3: Editing"],"groups":["General"]}