feat(optics): add standalone air flir addon
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,57 @@
|
|||||||
|
class CfgSkeletons
|
||||||
|
{
|
||||||
|
class braf_StarSaphire_Flir
|
||||||
|
{
|
||||||
|
isDiscrete=0;
|
||||||
|
skeletonInherit="";
|
||||||
|
skeletonBones[]={};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
class CfgModels
|
||||||
|
{
|
||||||
|
class braf_StarSaphire_n
|
||||||
|
{
|
||||||
|
htMin=0;
|
||||||
|
htMax=0;
|
||||||
|
afMax=0;
|
||||||
|
mfMax=0;
|
||||||
|
mFact=0;
|
||||||
|
tBody=0;
|
||||||
|
skeletonName="braf_StarSaphire_Flir";
|
||||||
|
sectionsInherit="";
|
||||||
|
sections[]={};
|
||||||
|
class Animations
|
||||||
|
{
|
||||||
|
};
|
||||||
|
};
|
||||||
|
class braf_StarSaphire_m
|
||||||
|
{
|
||||||
|
htMin=0;
|
||||||
|
htMax=0;
|
||||||
|
afMax=0;
|
||||||
|
mfMax=0;
|
||||||
|
mFact=0;
|
||||||
|
tBody=0;
|
||||||
|
skeletonName="braf_StarSaphire_Flir";
|
||||||
|
sectionsInherit="";
|
||||||
|
sections[]={};
|
||||||
|
class Animations
|
||||||
|
{
|
||||||
|
};
|
||||||
|
};
|
||||||
|
class braf_StarSaphire_w
|
||||||
|
{
|
||||||
|
htMin=0;
|
||||||
|
htMax=0;
|
||||||
|
afMax=0;
|
||||||
|
mfMax=0;
|
||||||
|
mFact=0;
|
||||||
|
tBody=0;
|
||||||
|
skeletonName="braf_StarSaphire_Flir";
|
||||||
|
sectionsInherit="";
|
||||||
|
sections[]={};
|
||||||
|
class Animations
|
||||||
|
{
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
@@ -0,0 +1,217 @@
|
|||||||
|
/*
|
||||||
|
Author: Brazilian Armed Forces
|
||||||
|
File: fn_flirControls.sqf
|
||||||
|
|
||||||
|
Purpose:
|
||||||
|
- Update azimuth and elevation indicators for the FLIR pod relative to the air vehicle body
|
||||||
|
- Update the true-north compass indicator relative to the camera center
|
||||||
|
- Update platform flight data shown in the optics overlay
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define IGUI_GROUP 170
|
||||||
|
#define BRAF_ELEV_ARROW 1901
|
||||||
|
#define BRAF_ELEV_TXT 1902
|
||||||
|
#define BRAF_AZ_ARROW 1903
|
||||||
|
#define BRAF_AZ_TXT 1904
|
||||||
|
#define BRAF_NORTH_ARROW 1905
|
||||||
|
|
||||||
|
#define BRAF_HDG_VALUE 1907
|
||||||
|
#define BRAF_IAS_VALUE 1909
|
||||||
|
#define BRAF_GS_VALUE 1911
|
||||||
|
#define BRAF_RALT_VALUE 1913
|
||||||
|
#define BRAF_BARO_VALUE 1915
|
||||||
|
#define BRAF_ROLL_VALUE 1917
|
||||||
|
#define BRAF_PTCH_VALUE 1919
|
||||||
|
|
||||||
|
#define BRAF_MIN_TURN -180
|
||||||
|
#define BRAF_MAX_TURN 180
|
||||||
|
#define BRAF_MIN_ELEV -120
|
||||||
|
#define BRAF_MAX_ELEV 30
|
||||||
|
#define BRAF_AZ_BEG (0.04 * safeZoneW)
|
||||||
|
#define BRAF_AZ_DIS (0.5375 * safeZoneW)
|
||||||
|
#define BRAF_AZ_NUM_OFFSET (0.5 * safeZoneW)
|
||||||
|
#define BRAF_AZ_TXT_Y_OFFSET (-1 * 0.025 * safeZoneH)
|
||||||
|
#define BRAF_EZ_BEG (0.215 * safeZoneH)
|
||||||
|
#define BRAF_EZ_DIS (0.52 * safeZoneH)
|
||||||
|
#define BRAF_EZ_NUM_OFFSET (0 * safeZoneH)
|
||||||
|
|
||||||
|
disableSerialization;
|
||||||
|
|
||||||
|
params ["_display"];
|
||||||
|
|
||||||
|
if (isNull _display) exitWith {};
|
||||||
|
if (cameraView != "GUNNER") exitWith {};
|
||||||
|
|
||||||
|
private _veh = vehicle player;
|
||||||
|
if (isNull _veh) exitWith {};
|
||||||
|
|
||||||
|
if (isNull (_display displayCtrl BRAF_ELEV_ARROW)) exitWith {
|
||||||
|
systemChat "[BRAF FLIR] ERROR: Elevation arrow control (IDC 1901) not found.";
|
||||||
|
};
|
||||||
|
if (isNull (_display displayCtrl BRAF_AZ_ARROW)) exitWith {
|
||||||
|
systemChat "[BRAF FLIR] ERROR: Azimuth arrow control (IDC 1903) not found.";
|
||||||
|
};
|
||||||
|
if (isNull (_display displayCtrl BRAF_ELEV_TXT)) exitWith {
|
||||||
|
systemChat "[BRAF FLIR] ERROR: Elevation text control (IDC 1902) not found.";
|
||||||
|
};
|
||||||
|
if (isNull (_display displayCtrl BRAF_AZ_TXT)) exitWith {
|
||||||
|
systemChat "[BRAF FLIR] ERROR: Azimuth text control (IDC 1904) not found.";
|
||||||
|
};
|
||||||
|
if (isNull (_display displayCtrl BRAF_NORTH_ARROW)) exitWith {
|
||||||
|
systemChat "[BRAF FLIR] ERROR: North compass control (IDC 1905) not found.";
|
||||||
|
};
|
||||||
|
if (isNull (_display displayCtrl BRAF_HDG_VALUE)) exitWith {
|
||||||
|
systemChat "[BRAF FLIR] ERROR: HDG control (IDC 1907) not found.";
|
||||||
|
};
|
||||||
|
if (isNull (_display displayCtrl BRAF_IAS_VALUE)) exitWith {
|
||||||
|
systemChat "[BRAF FLIR] ERROR: IAS control (IDC 1909) not found.";
|
||||||
|
};
|
||||||
|
if (isNull (_display displayCtrl BRAF_GS_VALUE)) exitWith {
|
||||||
|
systemChat "[BRAF FLIR] ERROR: GS control (IDC 1911) not found.";
|
||||||
|
};
|
||||||
|
if (isNull (_display displayCtrl BRAF_RALT_VALUE)) exitWith {
|
||||||
|
systemChat "[BRAF FLIR] ERROR: RALT control (IDC 1913) not found.";
|
||||||
|
};
|
||||||
|
if (isNull (_display displayCtrl BRAF_BARO_VALUE)) exitWith {
|
||||||
|
systemChat "[BRAF FLIR] ERROR: BARO control (IDC 1915) not found.";
|
||||||
|
};
|
||||||
|
if (isNull (_display displayCtrl BRAF_ROLL_VALUE)) exitWith {
|
||||||
|
systemChat "[BRAF FLIR] ERROR: ROLL control (IDC 1917) not found.";
|
||||||
|
};
|
||||||
|
if (isNull (_display displayCtrl BRAF_PTCH_VALUE)) exitWith {
|
||||||
|
systemChat "[BRAF FLIR] ERROR: PTCH control (IDC 1919) not found.";
|
||||||
|
};
|
||||||
|
|
||||||
|
private _p0 = positionCameraToWorld [0, 0, 0];
|
||||||
|
private _p1 = positionCameraToWorld [0, 0, 1];
|
||||||
|
private _vW = _p1 vectorDiff _p0;
|
||||||
|
|
||||||
|
private _lenW = vectorMagnitude _vW;
|
||||||
|
if (_lenW < 0.0001) exitWith {};
|
||||||
|
_vW = _vW vectorMultiply (1 / _lenW);
|
||||||
|
|
||||||
|
private _absDir_rad = (_vW select 0) atan2 (_vW select 1);
|
||||||
|
if (_absDir_rad < 0) then {
|
||||||
|
_absDir_rad = _absDir_rad + (2 * pi);
|
||||||
|
};
|
||||||
|
|
||||||
|
private _vM = _veh vectorWorldToModel _vW;
|
||||||
|
private _lenM = vectorMagnitude _vM;
|
||||||
|
if (_lenM < 0.0001) exitWith {};
|
||||||
|
_vM = _vM vectorMultiply (1 / _lenM);
|
||||||
|
|
||||||
|
private _x = _vM select 0;
|
||||||
|
private _y = _vM select 1;
|
||||||
|
private _z = _vM select 2;
|
||||||
|
|
||||||
|
private _azimuth = (_x atan2 _y);
|
||||||
|
if (_azimuth > 180) then {
|
||||||
|
_azimuth = _azimuth - 360;
|
||||||
|
};
|
||||||
|
if (_azimuth < -180) then {
|
||||||
|
_azimuth = _azimuth + 360;
|
||||||
|
};
|
||||||
|
|
||||||
|
private _h = sqrt (_x * _x + _y * _y);
|
||||||
|
private _signY = if (_y < 0) then { -1 } else { 1 };
|
||||||
|
private _yPrime = _h * _signY;
|
||||||
|
private _elevation = (_z atan2 _yPrime);
|
||||||
|
|
||||||
|
_azimuth = _azimuth max BRAF_MIN_TURN min BRAF_MAX_TURN;
|
||||||
|
_elevation = _elevation max BRAF_MIN_ELEV min BRAF_MAX_ELEV;
|
||||||
|
|
||||||
|
private _turretAZcarrotCtrlPos = ctrlPosition (_display displayCtrl BRAF_AZ_ARROW);
|
||||||
|
private _turretAZtextCtrlPos = ctrlPosition (_display displayCtrl BRAF_AZ_TXT);
|
||||||
|
private _azPosX = BRAF_AZ_BEG + (((_azimuth + 180) / 360) * BRAF_AZ_DIS);
|
||||||
|
|
||||||
|
(_display displayCtrl BRAF_AZ_ARROW) ctrlSetPosition [
|
||||||
|
_azPosX,
|
||||||
|
_turretAZcarrotCtrlPos select 1,
|
||||||
|
_turretAZcarrotCtrlPos select 2,
|
||||||
|
_turretAZcarrotCtrlPos select 3
|
||||||
|
];
|
||||||
|
(_display displayCtrl BRAF_AZ_ARROW) ctrlCommit 0;
|
||||||
|
|
||||||
|
(_display displayCtrl BRAF_AZ_TXT) ctrlSetText str (round _azimuth);
|
||||||
|
|
||||||
|
private _azArrowW = _turretAZcarrotCtrlPos select 2;
|
||||||
|
private _azTextW = _turretAZtextCtrlPos select 2;
|
||||||
|
|
||||||
|
(_display displayCtrl BRAF_AZ_TXT) ctrlSetPosition [
|
||||||
|
_azPosX + ((_azArrowW - _azTextW) / 2),
|
||||||
|
(_turretAZcarrotCtrlPos select 1) + BRAF_AZ_TXT_Y_OFFSET,
|
||||||
|
_azTextW,
|
||||||
|
_turretAZtextCtrlPos select 3
|
||||||
|
];
|
||||||
|
(_display displayCtrl BRAF_AZ_TXT) ctrlCommit 0;
|
||||||
|
|
||||||
|
private _turretEZcarrotCtrlPos = ctrlPosition (_display displayCtrl BRAF_ELEV_ARROW);
|
||||||
|
private _turretEZtextCtrlPos = ctrlPosition (_display displayCtrl BRAF_ELEV_TXT);
|
||||||
|
private _tEl = (BRAF_MAX_ELEV - _elevation) / (BRAF_MAX_ELEV - BRAF_MIN_ELEV);
|
||||||
|
|
||||||
|
if (_tEl < 0) then {
|
||||||
|
_tEl = 0;
|
||||||
|
};
|
||||||
|
if (_tEl > 1) then {
|
||||||
|
_tEl = 1;
|
||||||
|
};
|
||||||
|
|
||||||
|
private _elevPos = BRAF_EZ_BEG + (_tEl * BRAF_EZ_DIS);
|
||||||
|
|
||||||
|
(_display displayCtrl BRAF_ELEV_ARROW) ctrlSetPosition [
|
||||||
|
_turretEZcarrotCtrlPos select 0,
|
||||||
|
_elevPos,
|
||||||
|
_turretEZcarrotCtrlPos select 2,
|
||||||
|
_turretEZcarrotCtrlPos select 3
|
||||||
|
];
|
||||||
|
(_display displayCtrl BRAF_ELEV_ARROW) ctrlCommit 0;
|
||||||
|
|
||||||
|
(_display displayCtrl BRAF_ELEV_TXT) ctrlSetText str (round _elevation);
|
||||||
|
(_display displayCtrl BRAF_ELEV_TXT) ctrlSetPosition [
|
||||||
|
_turretEZtextCtrlPos select 0,
|
||||||
|
_elevPos + BRAF_EZ_NUM_OFFSET,
|
||||||
|
_turretEZtextCtrlPos select 2,
|
||||||
|
_turretEZtextCtrlPos select 3
|
||||||
|
];
|
||||||
|
(_display displayCtrl BRAF_ELEV_TXT) ctrlCommit 0;
|
||||||
|
|
||||||
|
private _hdg = round (getDir _veh);
|
||||||
|
private _ias = round (speed _veh);
|
||||||
|
private _gs = round ((vectorMagnitude (velocity _veh)) * 3.6);
|
||||||
|
private _ralt = round ((getPosATL _veh) select 2);
|
||||||
|
private _baro = round ((getPosASL _veh) select 2);
|
||||||
|
private _pitchBank = _veh call BIS_fnc_getPitchBank;
|
||||||
|
private _ptch = round (_pitchBank select 0);
|
||||||
|
private _roll = round (_pitchBank select 1);
|
||||||
|
|
||||||
|
private _ctrlHDG = _display displayCtrl BRAF_HDG_VALUE;
|
||||||
|
private _ctrlIAS = _display displayCtrl BRAF_IAS_VALUE;
|
||||||
|
private _ctrlGS = _display displayCtrl BRAF_GS_VALUE;
|
||||||
|
private _ctrlRALT = _display displayCtrl BRAF_RALT_VALUE;
|
||||||
|
private _ctrlBARO = _display displayCtrl BRAF_BARO_VALUE;
|
||||||
|
private _ctrlROLL = _display displayCtrl BRAF_ROLL_VALUE;
|
||||||
|
private _ctrlPTCH = _display displayCtrl BRAF_PTCH_VALUE;
|
||||||
|
|
||||||
|
if (!isNull _ctrlHDG) then {
|
||||||
|
_ctrlHDG ctrlSetText format ["%1", _hdg];
|
||||||
|
};
|
||||||
|
if (!isNull _ctrlIAS) then {
|
||||||
|
_ctrlIAS ctrlSetText format ["%1", _ias];
|
||||||
|
};
|
||||||
|
if (!isNull _ctrlGS) then {
|
||||||
|
_ctrlGS ctrlSetText format ["%1", _gs];
|
||||||
|
};
|
||||||
|
if (!isNull _ctrlRALT) then {
|
||||||
|
_ctrlRALT ctrlSetText format ["%1", _ralt];
|
||||||
|
};
|
||||||
|
if (!isNull _ctrlBARO) then {
|
||||||
|
_ctrlBARO ctrlSetText format ["%1", _baro];
|
||||||
|
};
|
||||||
|
if (!isNull _ctrlROLL) then {
|
||||||
|
_ctrlROLL ctrlSetText format ["%1", _roll];
|
||||||
|
};
|
||||||
|
if (!isNull _ctrlPTCH) then {
|
||||||
|
_ctrlPTCH ctrlSetText format ["%1", _ptch];
|
||||||
|
};
|
||||||
|
|
||||||
|
(_display displayCtrl BRAF_NORTH_ARROW) ctrlSetAngle [-_absDir_rad, 0.5, 0.5];
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
/*
|
||||||
|
Author: Brazilian Armed Forces
|
||||||
|
File: fn_initRSC.sqf
|
||||||
|
|
||||||
|
Purpose:
|
||||||
|
- Create and manage the EachFrame loop that updates the generic air FLIR optics
|
||||||
|
*/
|
||||||
|
|
||||||
|
disableSerialization;
|
||||||
|
|
||||||
|
params ["_display"];
|
||||||
|
|
||||||
|
if (isNil "BRAF_fnc_flirControls") then {
|
||||||
|
systemChat "[BRAF FLIR] WARNING: BRAF_fnc_flirControls is not loaded.";
|
||||||
|
};
|
||||||
|
|
||||||
|
uiNamespace setVariable ["BRAF_FLIR_UI_Display", _display];
|
||||||
|
|
||||||
|
[] call BRAF_fnc_shutdownRSC;
|
||||||
|
|
||||||
|
private _pfh = addMissionEventHandler ["EachFrame", {
|
||||||
|
if (cameraView != "GUNNER") exitWith {};
|
||||||
|
|
||||||
|
private _display = uiNamespace getVariable ["BRAF_FLIR_UI_Display", displayNull];
|
||||||
|
|
||||||
|
if (isNull _display) exitWith {
|
||||||
|
[] call BRAF_fnc_shutdownRSC;
|
||||||
|
};
|
||||||
|
|
||||||
|
private _veh = vehicle player;
|
||||||
|
if (isNull _veh) exitWith {
|
||||||
|
[] call BRAF_fnc_shutdownRSC;
|
||||||
|
};
|
||||||
|
|
||||||
|
[_display] call BRAF_fnc_flirControls;
|
||||||
|
}];
|
||||||
|
|
||||||
|
uiNamespace setVariable ["BRAF_FLIR_PFH_eachFrame", _pfh];
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
/*
|
||||||
|
Author: Brazilian Armed Forces
|
||||||
|
File: fn_shutdownRSC.sqf
|
||||||
|
|
||||||
|
Purpose:
|
||||||
|
- Stop the EachFrame loop and clear the generic air FLIR runtime state
|
||||||
|
*/
|
||||||
|
|
||||||
|
private _pfh = uiNamespace getVariable ["BRAF_FLIR_PFH_eachFrame", -1];
|
||||||
|
|
||||||
|
if (_pfh > -1) then {
|
||||||
|
removeMissionEventHandler ["EachFrame", _pfh];
|
||||||
|
};
|
||||||
|
|
||||||
|
uiNamespace setVariable ["BRAF_FLIR_PFH_eachFrame", nil];
|
||||||
|
uiNamespace setVariable ["BRAF_FLIR_UI_Display", nil];
|
||||||
@@ -0,0 +1,427 @@
|
|||||||
|
class CfgPatches {
|
||||||
|
class BRAF_Optics_Air {
|
||||||
|
author = "BRAF Team";
|
||||||
|
addonRootClass = "A3_Weapons_F";
|
||||||
|
requiredAddons[] = {
|
||||||
|
"A3_Data_F",
|
||||||
|
"A3_Functions_F",
|
||||||
|
"A3_Ui_F",
|
||||||
|
"A3_Weapons_F"
|
||||||
|
};
|
||||||
|
requiredVersion = 0.1;
|
||||||
|
units[] = {};
|
||||||
|
weapons[] = {};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
class ScrollBar;
|
||||||
|
class RscUnitInfo;
|
||||||
|
class RscControlsGroup;
|
||||||
|
class RscControlsGroupNoScrollbars;
|
||||||
|
class CA_HUDRscControlsGroup;
|
||||||
|
class RscText;
|
||||||
|
class RangeText: RscText{};
|
||||||
|
class RscPicture;
|
||||||
|
class RscOpticsText;
|
||||||
|
class RscOpticsValue;
|
||||||
|
class RscIGProgress;
|
||||||
|
class RCWSOptics;
|
||||||
|
class Optics_Armored;
|
||||||
|
|
||||||
|
class CfgFunctions {
|
||||||
|
class BRAF {
|
||||||
|
tag = "BRAF";
|
||||||
|
class UI {
|
||||||
|
file = "braf\braf_optics_air\braf_fnc";
|
||||||
|
class initRSC {};
|
||||||
|
class shutdownRSC {};
|
||||||
|
class flirControls {};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
class RscInGameUI {
|
||||||
|
class BRAF_RscOptics_Air_FLIR: RscUnitInfo {
|
||||||
|
idd = 300;
|
||||||
|
controls[] = {"CA_Zeroing","CA_IGUI_elements_group","CA_VehicleToggles"};
|
||||||
|
class VScrollbar;
|
||||||
|
class HScrollbar;
|
||||||
|
onLoad = "[\"onLoad\",_this,\"RscUnitInfo\",'IGUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay'); _this call BRAF_fnc_initRSC;";
|
||||||
|
onUnload = "[\"onUnload\",_this,\"RscUnitInfo\",'IGUI'] call (uiNamespace getVariable 'BIS_fnc_initDisplay'); _this call BRAF_fnc_shutdownRSC;";
|
||||||
|
|
||||||
|
class CA_IGUI_elements_group: RscControlsGroup {
|
||||||
|
idc = 170;
|
||||||
|
class VScrollbar: VScrollbar { width = 0; };
|
||||||
|
class HScrollbar: HScrollbar { height = 0; };
|
||||||
|
|
||||||
|
x = "-4 * (0.01875 * SafezoneH) + (SafezoneX + ((SafezoneW - SafezoneH)/2))";
|
||||||
|
y = "000 * (0.02500 * SafezoneH) + (SafezoneY)";
|
||||||
|
w = "100 * (0.01875 * SafezoneH)";
|
||||||
|
h = "080 * (0.02500 * SafezoneH)";
|
||||||
|
|
||||||
|
class controls {
|
||||||
|
class ValueDistance: RscText {
|
||||||
|
style = 1;
|
||||||
|
sizeEx = "0.038*SafezoneH";
|
||||||
|
shadow = 0;
|
||||||
|
font = "EtelkaMonospacePro";
|
||||||
|
idc = 198;
|
||||||
|
text = "245678";
|
||||||
|
colorText[] = {0,0,0,1};
|
||||||
|
colorBackground[] = {0,0,0,0};
|
||||||
|
x = "45.5 * (0.01875 * SafezoneH)";
|
||||||
|
y = "35.75 * (0.025 * SafezoneH)";
|
||||||
|
w = "8 * (0.01875 * SafezoneH)";
|
||||||
|
h = "1.2 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
|
||||||
|
class TextDistance: ValueDistance {
|
||||||
|
style = 0;
|
||||||
|
idc = 1800;
|
||||||
|
text = "Laser dist:";
|
||||||
|
x = "42 * (0.01875 * SafezoneH)";
|
||||||
|
y = "35.75 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
|
||||||
|
class ValueGrid: ValueDistance {
|
||||||
|
idc = 171;
|
||||||
|
text = "245678";
|
||||||
|
x = "10 * (0.01875 * SafezoneH)";
|
||||||
|
y = "34 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
|
||||||
|
class TextGrid: ValueGrid {
|
||||||
|
style = 0;
|
||||||
|
idc = 1801;
|
||||||
|
text = "GPS grid:";
|
||||||
|
x = "4.45 * (0.01875 * SafezoneH)";
|
||||||
|
y = "34 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
|
||||||
|
class ValueWeapon: ValueDistance {
|
||||||
|
idc = 172;
|
||||||
|
text = "245678";
|
||||||
|
x = "10 * (0.01875 * SafezoneH)";
|
||||||
|
y = "35.75 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
|
||||||
|
class TextTarget: ValueGrid {
|
||||||
|
style = 0;
|
||||||
|
idc = 1802;
|
||||||
|
text = "Target grid:";
|
||||||
|
x = "4.45 * (0.01875 * SafezoneH)";
|
||||||
|
y = "35.75 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
|
||||||
|
class TextElev: ValueGrid {
|
||||||
|
style = 0;
|
||||||
|
idc = 1803;
|
||||||
|
text = "Elev:";
|
||||||
|
x = "32 * (0.01875 * SafezoneH)";
|
||||||
|
y = "35.75 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
|
||||||
|
class ValueElev: ValueDistance {
|
||||||
|
idc = 175;
|
||||||
|
text = "245";
|
||||||
|
x = "32 * (0.01875 * SafezoneH)";
|
||||||
|
y = "35.75 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
|
||||||
|
class TextAz: ValueGrid {
|
||||||
|
style = 0;
|
||||||
|
idc = 1804;
|
||||||
|
text = "Az:";
|
||||||
|
x = "24.5 * (0.01875 * SafezoneH)";
|
||||||
|
y = "35.75 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
|
||||||
|
class ValueAz: ValueDistance {
|
||||||
|
idc = 156;
|
||||||
|
text = "245";
|
||||||
|
x = "23 * (0.01875 * SafezoneH)";
|
||||||
|
y = "35.75 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
|
||||||
|
class TextAlt: ValueGrid {
|
||||||
|
style = 0;
|
||||||
|
idc = 1805;
|
||||||
|
text = "Alt:";
|
||||||
|
x = "24.5 * (0.01875 * SafezoneH)";
|
||||||
|
y = "34 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
|
||||||
|
class ValueAlt: ValueDistance {
|
||||||
|
idc = 189;
|
||||||
|
text = "245678";
|
||||||
|
x = "24 * (0.01875 * SafezoneH)";
|
||||||
|
y = "34 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
|
||||||
|
class CA_Time: ValueGrid {
|
||||||
|
idc = 190;
|
||||||
|
style = 0;
|
||||||
|
shadow = 0;
|
||||||
|
text = "XX:XX:xx";
|
||||||
|
x = "54 * (0.01875 * SafezoneH)";
|
||||||
|
y = "35.75 * (0.025 * SafezoneH)";
|
||||||
|
w = "6.5 * (0.01875 * SafezoneH)";
|
||||||
|
};
|
||||||
|
|
||||||
|
class braf_fov_mode: RscText {
|
||||||
|
idc = 154;
|
||||||
|
text = "WFOV";
|
||||||
|
sizeEx = "0.03*SafezoneH";
|
||||||
|
style = 0;
|
||||||
|
shadow = 0;
|
||||||
|
font = "EtelkaMonospacePro";
|
||||||
|
x = "0 * (0.01875 * SafezoneH)";
|
||||||
|
y = "3 * (0.025 * SafezoneH)";
|
||||||
|
w = "5 * (0.01875 * SafezoneH)";
|
||||||
|
h = "1.2 * (0.025 * SafezoneH)";
|
||||||
|
colorText[] = {0,0,0,1};
|
||||||
|
};
|
||||||
|
|
||||||
|
class CA_VisionMode: RscText {
|
||||||
|
idc = 152;
|
||||||
|
sizeEx = "0.03*SafezoneH";
|
||||||
|
style = 0;
|
||||||
|
shadow = 0;
|
||||||
|
font = "EtelkaMonospacePro";
|
||||||
|
text = "DTV";
|
||||||
|
x = "4.5 * (0.01875 * SafezoneH)";
|
||||||
|
y = "3 * (0.025 * SafezoneH)";
|
||||||
|
w = "5 * (0.01875 * SafezoneH)";
|
||||||
|
h = "1.2 * (0.025 * SafezoneH)";
|
||||||
|
colorText[] = {0,0,0,1};
|
||||||
|
};
|
||||||
|
|
||||||
|
class CA_FlirMode: CA_VisionMode {
|
||||||
|
idc = 153;
|
||||||
|
text = "BHOT";
|
||||||
|
x = "7 * (0.01875 * SafezoneH)";
|
||||||
|
};
|
||||||
|
|
||||||
|
class CA_Laser: RscText {
|
||||||
|
idc = 158;
|
||||||
|
style = "0x30 + 0x800";
|
||||||
|
sizeEx = "0.038*SafezoneH";
|
||||||
|
colorText[] = {0.70599997,0.074500002,0.0196,1};
|
||||||
|
shadow = 0;
|
||||||
|
font = "EtelkaMonospacePro";
|
||||||
|
text = "\A3\ui_f\data\igui\rscingameui\rscoptics\laser_designator_iconLaserOn.paa";
|
||||||
|
x = "33 * (0.01875 * SafezoneH)";
|
||||||
|
y = "8 * (0.025 * SafezoneH)";
|
||||||
|
w = "3.5 * (0.01875 * SafezoneH)";
|
||||||
|
h = "1.5 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
|
||||||
|
class braf_arrow_vert: RscPicture {
|
||||||
|
idc = 1901;
|
||||||
|
text = "\braf\braf_optics_air\StarSaphire\data\braf_arrow_vert_ca.paa";
|
||||||
|
shadow = 0;
|
||||||
|
sizeEx = "0.03*SafezoneH";
|
||||||
|
x = "-0.5 * (0.01875 * SafezoneH)";
|
||||||
|
y = "16.6 * (0.025 * SafezoneH)";
|
||||||
|
w = "2.1 * (0.01875 * SafezoneH)";
|
||||||
|
h = "2.1 * (0.025 * SafezoneH)";
|
||||||
|
color[] = {1,1,1,1};
|
||||||
|
colorBackground[] = {0,0,0,0};
|
||||||
|
};
|
||||||
|
|
||||||
|
class braf_elev_value: RscText {
|
||||||
|
idc = 1902;
|
||||||
|
style = 0;
|
||||||
|
shadow = 0;
|
||||||
|
sizeEx = "0.03*SafezoneH";
|
||||||
|
colorText[] = {1,1,1,1};
|
||||||
|
colorBackground[] = {0,0,0,0};
|
||||||
|
x = "1 * (0.01875 * SafezoneH)";
|
||||||
|
y = "16.6 * (0.025 * SafezoneH)";
|
||||||
|
w = "4 * (0.01875 * SafezoneH)";
|
||||||
|
h = "2.1 * (0.025 * SafezoneH)";
|
||||||
|
text = "-120";
|
||||||
|
};
|
||||||
|
|
||||||
|
class braf_arrow_horiz: braf_arrow_vert {
|
||||||
|
idc = 1903;
|
||||||
|
text = "\braf\braf_optics_air\StarSaphire\data\braf_arrow_hor_ca.paa";
|
||||||
|
x = "-12 * (0.01875 * SafezoneH)";
|
||||||
|
y = "30 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
|
||||||
|
class braf_dir_value: braf_elev_value {
|
||||||
|
idc = 1904;
|
||||||
|
style = 2;
|
||||||
|
x = "-12.95 * (0.01875 * SafezoneH)";
|
||||||
|
y = "20 * (0.025 * SafezoneH)";
|
||||||
|
w = "4.0 * (0.01875 * SafezoneH)";
|
||||||
|
h = "2.1 * (0.025 * SafezoneH)";
|
||||||
|
text = "-180";
|
||||||
|
};
|
||||||
|
|
||||||
|
class braf_compass_arrow: RscPicture {
|
||||||
|
idc = 1905;
|
||||||
|
style = 144;
|
||||||
|
shadow = 0;
|
||||||
|
text = "\braf\braf_optics_air\StarSaphire\data\braf_arrow_north_ca.paa";
|
||||||
|
x = "57.5 * (0.01875 * SafezoneH)";
|
||||||
|
y = "25.5 * (0.02500 * SafezoneH)";
|
||||||
|
w = "10 * (0.01875 * SafezoneH)";
|
||||||
|
h = "10 * (0.02500 * SafezoneH)";
|
||||||
|
};
|
||||||
|
|
||||||
|
class braf_compass_n: braf_elev_value {
|
||||||
|
idc = -1;
|
||||||
|
style = 2;
|
||||||
|
sizeEx = "0.03*SafezoneH";
|
||||||
|
x = "60 * (0.01875 * SafezoneH)";
|
||||||
|
y = "28 * (0.02500 * SafezoneH)";
|
||||||
|
w = "05 * (0.01875 * SafezoneH)";
|
||||||
|
h = "05 * (0.02500 * SafezoneH)";
|
||||||
|
text = "N";
|
||||||
|
};
|
||||||
|
|
||||||
|
class BRAF_AirData_Label_HDG: RscText {
|
||||||
|
idc = 1906;
|
||||||
|
style = 2;
|
||||||
|
shadow = 0;
|
||||||
|
font = "EtelkaMonospacePro";
|
||||||
|
sizeEx = "0.02*SafezoneH";
|
||||||
|
colorText[] = {1,1,1,1};
|
||||||
|
colorBackground[] = {0,0,0,0};
|
||||||
|
text = "HDG:";
|
||||||
|
x = "60 * (0.01875 * SafezoneH)";
|
||||||
|
y = "4.4 * (0.025 * SafezoneH)";
|
||||||
|
w = "4 * (0.01875 * SafezoneH)";
|
||||||
|
h = "1.2 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
|
||||||
|
class BRAF_AirData_Value_HDG: BRAF_AirData_Label_HDG {
|
||||||
|
idc = 1907;
|
||||||
|
style = 1;
|
||||||
|
text = "000";
|
||||||
|
x = "60 * (0.01875 * SafezoneH)";
|
||||||
|
w = "5 * (0.01875 * SafezoneH)";
|
||||||
|
};
|
||||||
|
|
||||||
|
class BRAF_AirData_Label_IAS: BRAF_AirData_Label_HDG {
|
||||||
|
idc = 1908;
|
||||||
|
text = "IAS:";
|
||||||
|
y = "5 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
|
||||||
|
class BRAF_AirData_Value_IAS: BRAF_AirData_Value_HDG {
|
||||||
|
idc = 1909;
|
||||||
|
text = "000";
|
||||||
|
y = "5 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
|
||||||
|
class BRAF_AirData_Label_GS: BRAF_AirData_Label_HDG {
|
||||||
|
idc = 1910;
|
||||||
|
text = "GS:";
|
||||||
|
y = "5.6 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
|
||||||
|
class BRAF_AirData_Value_GS: BRAF_AirData_Value_HDG {
|
||||||
|
idc = 1911;
|
||||||
|
text = "000";
|
||||||
|
y = "5.6 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
|
||||||
|
class BRAF_AirData_Label_RALT: BRAF_AirData_Label_HDG {
|
||||||
|
idc = 1912;
|
||||||
|
text = "RALT:";
|
||||||
|
y = "6.2 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
|
||||||
|
class BRAF_AirData_Value_RALT: BRAF_AirData_Value_HDG {
|
||||||
|
idc = 1913;
|
||||||
|
text = "0000";
|
||||||
|
y = "6.2 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
|
||||||
|
class BRAF_AirData_Label_BARO: BRAF_AirData_Label_HDG {
|
||||||
|
idc = 1914;
|
||||||
|
text = "BARO:";
|
||||||
|
y = "6.8 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
|
||||||
|
class BRAF_AirData_Value_BARO: BRAF_AirData_Value_HDG {
|
||||||
|
idc = 1915;
|
||||||
|
text = "0000";
|
||||||
|
y = "6.8 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
|
||||||
|
class BRAF_AirData_Label_ROLL: BRAF_AirData_Label_HDG {
|
||||||
|
idc = 1916;
|
||||||
|
text = "ROLL:";
|
||||||
|
y = "7.4 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
|
||||||
|
class BRAF_AirData_Value_ROLL: BRAF_AirData_Value_HDG {
|
||||||
|
idc = 1917;
|
||||||
|
text = "0";
|
||||||
|
y = "7.4 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
|
||||||
|
class BRAF_AirData_Label_PTCH: BRAF_AirData_Label_HDG {
|
||||||
|
idc = 1918;
|
||||||
|
text = "PTCH:";
|
||||||
|
y = "8 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
|
||||||
|
class BRAF_AirData_Value_PTCH: BRAF_AirData_Value_HDG {
|
||||||
|
idc = 1919;
|
||||||
|
text = "0";
|
||||||
|
y = "8 * (0.025 * SafezoneH)";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
class BRAF_Air_FLIR_Gunner_Optics: Optics_Armored {
|
||||||
|
class Wide: RCWSOptics {
|
||||||
|
initFov = 0.5236;
|
||||||
|
minFov = 0.5236;
|
||||||
|
maxFov = 0.5236;
|
||||||
|
opticsDisplayName = "WFOV";
|
||||||
|
visionMode[] = {"Normal","TI"};
|
||||||
|
thermalMode[] = {0,1};
|
||||||
|
thermalNoise[] = {0.5,1.25,2.5,0.75,1,0,0,0.95};
|
||||||
|
gunnerOpticsModel = "\braf\braf_optics_air\StarSaphire\braf_StarSaphire_w.p3d";
|
||||||
|
gunnerOpticsEffect[] = {};
|
||||||
|
directionStabilized = 1;
|
||||||
|
};
|
||||||
|
|
||||||
|
class Medium: Wide {
|
||||||
|
opticsDisplayName = "MFOV";
|
||||||
|
gunnerOpticsModel = "\braf\braf_optics_air\StarSaphire\braf_StarSaphire_m.p3d";
|
||||||
|
initFov = 0.0593;
|
||||||
|
minFov = 0.0593;
|
||||||
|
maxFov = 0.0593;
|
||||||
|
};
|
||||||
|
|
||||||
|
class Narrow: Wide {
|
||||||
|
opticsDisplayName = "NFOV";
|
||||||
|
gunnerOpticsModel = "\braf\braf_optics_air\StarSaphire\braf_StarSaphire_n.p3d";
|
||||||
|
initFov = 0.0140;
|
||||||
|
minFov = 0.0140;
|
||||||
|
maxFov = 0.0140;
|
||||||
|
};
|
||||||
|
|
||||||
|
class Narrower: Narrow {
|
||||||
|
opticsDisplayName = "NFOV 2X";
|
||||||
|
initFov = 0.0070;
|
||||||
|
minFov = 0.0070;
|
||||||
|
maxFov = 0.0070;
|
||||||
|
};
|
||||||
|
|
||||||
|
class UltraNarrow: Narrow {
|
||||||
|
opticsDisplayName = "NFOV 4X";
|
||||||
|
initFov = 0.0035;
|
||||||
|
minFov = 0.0035;
|
||||||
|
maxFov = 0.0035;
|
||||||
|
};
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user