Custom Info – Arma 3

From Bohemia Interactive Community
Jump to navigation Jump to search
(Added examples)
m (Text replacement - "[[Arma 3 " to "[[Arma 3: ")
 
(20 intermediate revisions by 4 users not shown)
Line 1: Line 1:
[[Category:Arma 3: Editing]]
{{TOC|side}}
{{Cfg ref|abc}}
UI window elements that encompass various display modules and gadgets (Navigation, Camera feeds, Radar...)
 
Forum topic: {{Link|https://forums.bistudio.com/topic/200468-jets-custom-info/|Main thread}}
 
 
== User Interface ==
 
[[File:Arma_3_Custom_Info_overview.jpeg|frameless|upright= 1.5]]
 
=== Action keybinds (default) ===
 
{| class="wikitable"
| {{Controls|[}} || next module on left panel
|-
| {{Controls|]}} || next module on right panel
|-
| {{Controls|RCtrl|[}} || toggle submodes on current left panel module
|-
| {{Controls|RCtrl|]}} || toggle submodes on current right panel module
|-
| ''no default keybind'' || close left display
|-
| ''no default keybind'' || close right display
|-
| ''no default keybind'' || close left display
|-
| ''no default keybind'' || close right display
|-
|}


==Overview==
UI window elements that encompass various display modules and gadgets (Navigation, Camera feeds, Radar...)


Forum topic: [https://forums.bistudio.com/topic/200468-jets-custom-info/ Main thread]
=== Modules ===
=User Interface=
 
[[File: Arma_3_Custom_Info_overview.jpeg|frameless|upright=1.5]]
====Action keybinds (default)====
{| class="wikitable"
{| class="wikitable"
! Module !! Description !! Sub-mode
|-
|-
| ''' [''' || next module on left display
| '''NAV''' || Navigation - requires either a GPS item or GPS-equipped vehicle || rotation
|-
|-
| '''RCTRL + [''' || previous module on left display
| '''SLA''' || Sling-load Assistant - only available in vehicles capable of slingloading || {{n/a}}
|-
|-
| ''' ]''' || next module on right display
| '''SENS''' || Sensors Display - tactical awareness display that combines information about tracked targets from all sensors and about threats ({{Link|Arma 3 Sensors#User Interface}}) || ranges
|-
|-
| '''RCTRL + ]''' || previous module on right display
| '''CAM Drone''' || Drone Feed - requires UAV terminal item || spectrum
|-
|-
| '''RALT + [''' || close left display
| '''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
|-
|-
| '''RALT + ]''' || close right display
| '''CAM Gunner''' || Gunner Feed - usually available for pilots and drivers and commanders in tanks || spectrum
|-
|-
| '''CAM Commander''' || Commander Feed - usually available for drivers and gunners in tanks || spectrum
|-
| '''CAM Missile''' || Missile Feed - available mostly on few attack aircrafts, feed is initiated after a missile with camera feed capability is fired || {{n/a}}
|-
| '''CREW''' || Crew Display - shows crew members' names, cargo occupancy, transport capacity, sling-loaded vehicle || {{n/a}}
|}
|}


{{Feature|important|The CAM modules only work with PIP enabled!}}
== Configuration ==


=Configuration=
The new Sensor system gets enabled by defining a VehicleSystemsDisplayManagerComponentLeft (left display) or VehicleSystemsDisplayManagerComponentRight (right display) class inside the vehicle's [[Arma 3: Components|Components]] class.
The new Sensor system gets enabled by defining a VehicleSystemsDisplayManagerComponentLeft (left display) or VehicleSystemsDisplayManagerComponentRight (right display) class inside the vehicle's [[Arma_3_Components|Components]] class.
<syntaxhighlight lang="cpp">
<syntaxhighlight lang="c">
class MyVehicle_F : MyBaseVehicle_F
class MyVehicle_F : MyBaseVehicle_F
{
{
      class Components : Components                  
class Components : Components
      {
{
            class VehicleSystemsDisplayManagerComponentLeft : DefaultVehicleSystemsDisplayManagerLeft
class VehicleSystemsDisplayManagerComponentLeft : DefaultVehicleSystemsDisplayManagerLeft
            {
{
            };  
};
            class VehicleSystemsDisplayManagerComponentRight : DefaultVehicleSystemsDisplayManagerRight
 
            {
class VehicleSystemsDisplayManagerComponentRight : DefaultVehicleSystemsDisplayManagerRight
            };                                                                                                      
{
      };
};
};
};
};
</syntaxhighlight>
</syntaxhighlight>


For simplicity the class can inherit from one of the templates that are available in the configFile root.  
For simplicity the class can inherit from one of the {{Link|#Automatic_usage_.26_backwards_compatibility|defaults}}.
<syntaxhighlight lang="c">
You can also inherit from one of the premade templates that are available in the configFile root.
 
For tank roles - each template adds camera feeds from the other two positions
<syntaxhighlight lang="cpp">
VehicleSystemsTemplateLeftDriver
VehicleSystemsTemplateLeftDriver
VehicleSystemsTemplateRightDriver
VehicleSystemsTemplateRightDriver
Line 51: Line 88:
VehicleSystemsTemplateLeftGunner
VehicleSystemsTemplateLeftGunner
VehicleSystemsTemplateRightGunner
VehicleSystemsTemplateRightGunner
VehicleSystemsTemplateLeftSensorsCommander
VehicleSystemsTemplateRightSensorsCommander
VehicleSystemsTemplateLeftSensorsGunner
VehicleSystemsTemplateRightSensorsGunner
</syntaxhighlight>
</syntaxhighlight>


==Automatic usage & backwards compatibility==
For (some) pilots and copilots - template adds a Sensors display and a Driver feed camera (e.g. [[A3_Targeting_config_reference#class_pilotCamera|pilotCamera]])
If the Vehicle doesn't have the VehicleSystemsDisplayManagerComponent defined one of the two default pairs is used.  
<syntaxhighlight lang="cpp">
<syntaxhighlight lang="c">
VehicleSystemsTemplateLeftPilot
VehicleSystemsTemplateRightPilot
</syntaxhighlight>
 
=== Automatic usage & backwards compatibility ===
 
If the Vehicle doesn't have the VehicleSystemsDisplayManagerComponent defined one of the two default pairs is used.
<syntaxhighlight lang="cpp">
// core definitions, do not override
// core definitions, do not override
DefaultVehicleSystemsDisplayManagerLeft
DefaultVehicleSystemsDisplayManagerLeft
DefaultVehicleSystemsDisplayManagerRight
DefaultVehicleSystemsDisplayManagerRight
DefaultVehicleSystemsDisplayManagerLeftSensors
DefaultVehicleSystemsDisplayManagerLeftSensors
DefaultVehicleSystemsDisplayManagerRightSensors  
DefaultVehicleSystemsDisplayManagerRightSensors
</syntaxhighlight>
</syntaxhighlight>
The pair of defaults with Sensors suffix is used whenever the vehicle had [[A3_Targeting_config_reference#radarType|radarType]] defined as ''air radar'' or ''ground radar''.
The pair of defaults with Sensors suffix is used whenever the vehicle had [[A3_Targeting_config_reference#radarType|radarType]] defined as ''air radar'' or ''ground radar''.
It adds Sensors display in addition to the normal default displays.


== Modules and properties ==
=== Properties ===
<syntaxhighlight lang="c">
 
<syntaxhighlight lang="cpp">
class VehicleSystemsDisplayManagerLeft
class VehicleSystemsDisplayManagerLeft
{
{
componentType = "VehicleSystemsDisplayManager"; //mandatory
componentType = "VehicleSystemsDisplayManager"; // mandatory
x = (safezoneX + 0.5 * (((safezoneW / safezoneH) min 1.2) / 40));
x = (safezoneX + 0.5 * (((safezoneW / safezoneH) min 1.2) / 40));
y = (safezoneY + safezoneH - 21 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25));
y = (safezoneY + safezoneH - 21 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25));
left = 1;
left = 1;
defaultDisplay = "CrewDisplay";   //display to be selected when player changes vehicle and had "empty" previously selected
defaultDisplay = "CrewDisplay"; // display to be selected when player changes vehicle and had "empty" previously selected


class Components
class Components
{
{
class MinimapDisplay       //GPS
class MinimapDisplay // GPS
{
{
componentType = "MinimapDisplayComponent";
componentType = "MinimapDisplayComponent";
resource = "RscCustomInfoMiniMap";
resource = "RscCustomInfoMiniMap";
};
};
class SlingLoadDisplay     //Slingload Assistant
 
class SlingLoadDisplay // Slingload Assistant
{
{
componentType = "SlingLoadDisplayComponent";
componentType = "SlingLoadDisplayComponent";
resource = "RscCustomInfoSlingLoad";
resource = "RscCustomInfoSlingLoad";
};
};
class SensorsDisplayClose  //Combined display showing sensors, detected and tracked targets, info about marked target and threats
 
class SensorsDisplay // Combined display showing sensors, detected and tracked targets, info about marked target and threats
{
{
componentType = "SensorsDisplayComponent";
componentType = "SensorsDisplayComponent";
range = 1000;
range[] = {8000,4000,2000}; // accepts an integer or an array of available ranges (submode)
resource = "RscCustomInfoSensor";
showTargetTypes = 1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 + 256 + 512 + 1024;
// 1 - Sensor sectors, 2 - Threats, 4 - Marked tgt symbol, 8 - Own detection
// 16 - Remote detection, 32 - Active detection, 64 - Passive detection, 128 - Ground targets
// 256 - Air tgts, 512 - Men, 1024 - Special (laser, NV)
resource = "RscCustomInfoSensors";
};
};
class SensorsDisplayFar    //Combined display showing sensors, detected and tracked targets, info about marked target and threats - this time with a different range setting
 
{
class UAVFeedDisplay // Drone camera feed
componentType = "SensorsDisplayComponent";
range = 4000;
resource = "RscCustomInfoSensor";
};
class UAVFeedDisplay       //Drone camera feed
{
{
componentType = "UAVFeedDisplayComponent";
componentType = "UAVFeedDisplayComponent";
// resource = "RscCustomInfoAVCamera"; // hardcoded
// resource = "RscCustomInfoAVCamera"; // hardcoded
};
};
class VehicleDriverDisplay //Camera feed from driver's optics
 
class VehicleDriverDisplay // Camera feed from driver's optics
{
{
componentType = "TransportFeedDisplayComponent";
componentType = "TransportFeedDisplayComponent";
source = "Driver";
source = "Driver";
// resource = "RscTransportCameraComponentDriver"; // hardcoded  
// resource = "RscTransportCameraComponentDriver"; // hardcoded
};
};
class VehicleGunnerDisplay //Camera feed from gunner's optics
 
class VehicleGunnerDisplay // Camera feed from gunner's optics
{
{
componentType = "TransportFeedDisplayComponent";
componentType = "TransportFeedDisplayComponent";
source = "PrimaryGunner";
source = "PrimaryGunner";
// resource = "RscTransportCameraComponentPrimaryGunner"; // hardcoded  
// resource = "RscTransportCameraComponentPrimaryGunner"; // hardcoded
};
};
class VehicleCommanderDisplay //Camera feed from commander's optics
 
class VehicleCommanderDisplay // Camera feed from commander's optics
{
{
componentType = "TransportFeedDisplayComponent";
componentType = "TransportFeedDisplayComponent";
Line 125: Line 171:
// resource = "RscTransportCameraComponentCommander"; // hardcoded
// resource = "RscTransportCameraComponentCommander"; // hardcoded
};
};
class MissileDisplay       //Camera feed from missile's warhead
 
class MissileDisplay // Camera feed from missile's warhead
{
{
componentType = "TransportFeedDisplayComponent";
componentType = "TransportFeedDisplayComponent";
source = "Missile";
source = "Missile";
resource = "RscTransportCameraComponentMissile"; // hardcoded in the engine - here just fyi where is the resource
// resource = "RscTransportCameraComponentMissile"; // hardcoded
};
};
class CrewDisplay           //List of all crew members, cargo and transported or slingloaded vehicle
 
class CrewDisplay // List of all crew members, cargo and transported or slingloaded vehicle
{
{
componentType = "CrewDisplayComponent";
componentType = "CrewDisplayComponent";
resource = "RscCustomInfoCrew";
resource = "RscCustomInfoCrew";
};
};
class CustomDisplayXY       //Custom display using custom resource
 
class CustomDisplayXY // Custom display using custom resource
{
{
componentType = "CustomDisplayComponent";
componentType = "CustomDisplayComponent";
resource = "RscCustomInfoLeftOnly";
resource = "RscCustomInfoMyCustomRadModule";
};
};
class EmptyDisplay         //Empty display - hide panel
 
class EmptyDisplay // Empty display - hide panel
{
{
componentType = "EmptyDisplayComponent";
componentType = "EmptyDisplayComponent";
Line 153: Line 203:
left = 0;
left = 0;
right = 1;
right = 1;
forcedDisplay = "SensorsDisplayFar";     //display to be selected when player enters the vehicle no matter what was selected before
forcedDisplay = "SensorsDisplay"; // display to be selected when player enters the vehicle no matter what was selected before
}
}
</syntaxhighlight>
</syntaxhighlight>


= Related =
 
* [[Arma 3 Sensors]]
== See Also ==
* [[Arma 3 Components]]
 
* [[Arma 3 Targeting]]
* [[Arma 3: Sensors]]
* [https://forums.bistudio.com/topic/200468-jets-custom-info/ Custom Info thread]
* [[Arma 3: Targeting]]
* {{Link|https://forums.bistudio.com/topic/200468-jets-custom-info/|Custom Info thread}}
 
 
{{GameCategory|arma3|Editing}}

Latest revision as of 10:38, 6 May 2024

UI window elements that encompass various display modules and gadgets (Navigation, Camera feeds, Radar...)

Forum topic: Main thread


User Interface

Arma 3 Custom Info overview.jpeg

Action keybinds (default)

[ next module on left panel
] next module on right panel
RCtrl + [ toggle submodes on current left panel module
RCtrl + ] toggle submodes on current right panel module
no default keybind close left display
no default keybind close right display
no default keybind close left display
no default keybind close right display


Modules

Module Description Sub-mode
NAV Navigation - requires either a GPS item or GPS-equipped vehicle rotation
SLA Sling-load Assistant - only available in vehicles capable of slingloading N/A
SENS Sensors Display - tactical awareness display that combines information about tracked targets from all sensors and about threats (Arma 3 Sensors - User Interface) ranges
CAM Drone Drone Feed - requires UAV terminal item spectrum
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
CAM Gunner Gunner Feed - usually available for pilots and drivers and commanders in tanks spectrum
CAM Commander Commander Feed - usually available for drivers and gunners in tanks spectrum
CAM Missile Missile Feed - available mostly on few attack aircrafts, feed is initiated after a missile with camera feed capability is fired N/A
CREW Crew Display - shows crew members' names, cargo occupancy, transport capacity, sling-loaded vehicle N/A
The CAM modules only work with PIP enabled!


Configuration

The new Sensor system gets enabled by defining a VehicleSystemsDisplayManagerComponentLeft (left display) or VehicleSystemsDisplayManagerComponentRight (right display) class inside the vehicle's Components class.

class MyVehicle_F : MyBaseVehicle_F
{
	class Components : Components
	{
		class VehicleSystemsDisplayManagerComponentLeft : DefaultVehicleSystemsDisplayManagerLeft
		{
		};

		class VehicleSystemsDisplayManagerComponentRight : DefaultVehicleSystemsDisplayManagerRight
		{
		};
	};
};

For simplicity the class can inherit from one of the defaults. You can also inherit from one of the premade templates that are available in the configFile root.

For tank roles - each template adds camera feeds from the other two positions

VehicleSystemsTemplateLeftDriver
VehicleSystemsTemplateRightDriver
VehicleSystemsTemplateLeftCommander
VehicleSystemsTemplateRightCommander
VehicleSystemsTemplateLeftGunner
VehicleSystemsTemplateRightGunner

For (some) pilots and copilots - template adds a Sensors display and a Driver feed camera (e.g. pilotCamera)

VehicleSystemsTemplateLeftPilot
VehicleSystemsTemplateRightPilot

Automatic usage & backwards compatibility

If the Vehicle doesn't have the VehicleSystemsDisplayManagerComponent defined one of the two default pairs is used.

// core definitions, do not override
DefaultVehicleSystemsDisplayManagerLeft
DefaultVehicleSystemsDisplayManagerRight
DefaultVehicleSystemsDisplayManagerLeftSensors
DefaultVehicleSystemsDisplayManagerRightSensors

The pair of defaults with Sensors suffix is used whenever the vehicle had radarType defined as air radar or ground radar. It adds Sensors display in addition to the normal default displays.

Properties

class VehicleSystemsDisplayManagerLeft
{
	componentType = "VehicleSystemsDisplayManager"; // mandatory
	x = (safezoneX + 0.5 * (((safezoneW / safezoneH) min 1.2) / 40));
	y = (safezoneY + safezoneH - 21 * ((((safezoneW / safezoneH) min 1.2) / 1.2) / 25));
	left = 1;
	defaultDisplay = "CrewDisplay"; // display to be selected when player changes vehicle and had "empty" previously selected

	class Components
	{
		class MinimapDisplay			// GPS
		{
			componentType = "MinimapDisplayComponent";
			resource = "RscCustomInfoMiniMap";
		};

		class SlingLoadDisplay			// Slingload Assistant
		{
			componentType = "SlingLoadDisplayComponent";
			resource = "RscCustomInfoSlingLoad";
		};

		class SensorsDisplay			// Combined display showing sensors, detected and tracked targets, info about marked target and threats
		{
			componentType = "SensorsDisplayComponent";
			range[] = {8000,4000,2000};	// accepts an integer or an array of available ranges (submode)
			showTargetTypes = 1 + 2 + 4 + 8 + 16 + 32 + 64 + 128 + 256 + 512 + 1024;
			// 1 - Sensor sectors, 2 - Threats, 4 - Marked tgt symbol, 8 - Own detection
			// 16 - Remote detection, 32 - Active detection, 64 - Passive detection, 128 - Ground targets
			// 256 - Air tgts, 512 - Men, 1024 - Special (laser, NV)
			resource = "RscCustomInfoSensors";
		};

		class UAVFeedDisplay			// Drone camera feed
		{
			componentType = "UAVFeedDisplayComponent";
			// resource = "RscCustomInfoAVCamera"; // hardcoded
		};

		class VehicleDriverDisplay		// Camera feed from driver's optics
		{
			componentType = "TransportFeedDisplayComponent";
			source = "Driver";
			// resource = "RscTransportCameraComponentDriver"; // hardcoded
		};

		class VehicleGunnerDisplay		// Camera feed from gunner's optics
		{
			componentType = "TransportFeedDisplayComponent";
			source = "PrimaryGunner";
			// resource = "RscTransportCameraComponentPrimaryGunner"; // hardcoded
		};

		class VehicleCommanderDisplay	// Camera feed from commander's optics
		{
			componentType = "TransportFeedDisplayComponent";
			source = "Commander";
			// resource = "RscTransportCameraComponentCommander"; // hardcoded
		};

		class MissileDisplay			// Camera feed from missile's warhead
		{
			componentType = "TransportFeedDisplayComponent";
			source = "Missile";
			// resource = "RscTransportCameraComponentMissile"; // hardcoded
		};

		class CrewDisplay				// List of all crew members, cargo and transported or slingloaded vehicle
		{
			componentType = "CrewDisplayComponent";
			resource = "RscCustomInfoCrew";
		};

		class CustomDisplayXY			// Custom display using custom resource
		{
			componentType = "CustomDisplayComponent";
			resource = "RscCustomInfoMyCustomRadModule";
		};

		class EmptyDisplay				// Empty display - hide panel
		{
			componentType = "EmptyDisplayComponent";
		};
	};
};

class VehicleSystemsDisplayManagerRight : VehicleSystemsDisplayManagerLeft
{
	x = ((10 * (((safezoneW / safezoneH) min 1.2) / 40)) + 0.5 * (((safezoneW / safezoneH) min 1.2) / 40)));
	left = 0;
	right = 1;
	forcedDisplay = "SensorsDisplay";	// display to be selected when player enters the vehicle no matter what was selected before
}


See Also