feat(air): integrate standalone FLIR optics into Fennec and Caracal SAR

This commit is contained in:
2026-06-24 14:43:41 -03:00
parent 4da55a1204
commit cff68d95f4
4 changed files with 154 additions and 62 deletions
+24
View File
@@ -0,0 +1,24 @@
# Changelog
## 2026-06-24
### braf_air
- Adicionada dependência de `BRAF_Optics_Air` em `braf_air/config.cpp`.
- Integrado o FLIR standalone nas duas variantes do Fennec com torreta (`BRAF_Fennec_dynamicLoadout_base` e `BRAF_Fennec_SAR_base`).
- Integrado o FLIR standalone no Caracal SAR pela base `BRAF_Caracal_2`, propagando para as variantes herdadas `BRAF_Caracal_5` e `BRAF_Caracal_8`.
- Padronizados os limites de câmera usados no optics para o mesmo conjunto adotado no A-29 e no Fennec: `minElev=-120`, `maxElev=30`, `initElev=0`, `minTurn=-180`, `maxTurn=180`, `initTurn=0`.
- Substituído o optics vanilla `RscOptics_Heli_Attack_01_gunner` por `BRAF_RscOptics_Air_FLIR`.
- Substituídos os modelos vanilla de optics pelos modelos standalone `StarSaphire` em `WFOV`, `MFOV`, `NFOV`, `NFOV 2X` e `NFOV 4X`.
### braf_air2
- O A-29 deixou de usar o optics como módulo interno e passou a consumir o addon standalone `braf_optics_air`.
- Removidos de `braf_air2` os scripts, funções, assets, `p3d`, `paa`, include de config e referências legadas do optics interno.
- Atualizada a torreta do A-29 para usar `BRAF_RscOptics_Air_FLIR` e os modelos externos de `braf_optics_air`.
- Resultado: `braf_air2` deixou de ser dono do runtime de optics e passou a depender do módulo independente, facilitando o reuso por outras aeronaves.
### Referências
- `5df0649` `refactor(air2): move A-29 optics to standalone addon`
- `4da55a1` `fix(optics): keep standalone air FLIR module independent`
@@ -1390,14 +1390,14 @@ class BRAF_Caracal_2: BRAF_Caracal_Base
LODTurnedIn=1100;
LODTurnedOut=1100;
minElev=-120;
maxElev=20;
maxElev=30;
initElev=0;
minTurn=-180;
maxTurn=180;
initTurn=0;
gunnerName="Crew Chief";
isCopilot=0;
turretInfoType="RscOptics_Heli_Attack_01_gunner";
turretInfoType="BRAF_RscOptics_Air_FLIR";
weapons[]=
{
"Laserdesignator_mounted"
@@ -1431,40 +1431,66 @@ class BRAF_Caracal_2: BRAF_Caracal_Base
{
class Wide
{
opticsDisplayName="W";
opticsDisplayName="WFOV";
initAngleX=0;
minAngleX=-30;
minAngleX=-120;
maxAngleX=30;
initAngleY=0;
minAngleY=-100;
maxAngleY=100;
initFov=0.46599999;
minFov=0.46599999;
maxFov=0.46599999;
minAngleY=-180;
maxAngleY=180;
initFov=0.5236;
minFov=0.5236;
maxFov=0.5236;
visionMode[]=
{
"Normal",
"NVG",
"Ti"
};
thermalMode[]={0,1};
gunnerOpticsModel="\A3\Weapons_F_Beta\Reticle\Heli_Attack_01_Optics_Gunner_wide_F";
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="M";
initFov=0.093000002;
minFov=0.093000002;
maxFov=0.093000002;
gunnerOpticsModel="\A3\Weapons_F_Beta\Reticle\Heli_Attack_01_Optics_Gunner_medium_F";
opticsDisplayName="MFOV";
initFov=0.0593;
minFov=0.0593;
maxFov=0.0593;
gunnerOpticsModel="\braf\braf_optics_air\StarSaphire\braf_StarSaphire_m.p3d";
};
class Narrow: Wide
{
opticsDisplayName="N";
gunnerOpticsModel="\A3\Weapons_F_Beta\Reticle\Heli_Attack_01_Optics_Gunner_narrow_F";
initFov=0.028999999;
minFov=0.028999999;
maxFov=0.028999999;
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;
};
};
class OpticsOut
@@ -1142,7 +1142,7 @@ class BRAF_Fennec_dynamicLoadout_base: BRAF_Fennec_Base
initTurn=0;
gunnerName="$STR_A3_COPILOT";
isCopilot=1;
turretInfoType="RscOptics_Heli_Attack_01_gunner";
turretInfoType="BRAF_RscOptics_Air_FLIR";
weapons[]=
{
"Laserdesignator_mounted"
@@ -1178,20 +1178,19 @@ class BRAF_Fennec_dynamicLoadout_base: BRAF_Fennec_Base
{
class Wide
{
opticsDisplayName="W";
opticsDisplayName="WFOV";
initAngleX=0;
minAngleX=-30;
minAngleX=-120;
maxAngleX=30;
initAngleY=0;
minAngleY=-100;
maxAngleY=100;
initFov=0.46599999;
minFov=0.46599999;
maxFov=0.46599999;
minAngleY=-180;
maxAngleY=180;
initFov=0.5236;
minFov=0.5236;
maxFov=0.5236;
visionMode[]=
{
"Normal",
"NVG",
"Ti"
};
thermalMode[]={0,1};
@@ -1206,23 +1205,39 @@ class BRAF_Fennec_dynamicLoadout_base: BRAF_Fennec_Base
0, //static,
0.95 //blurCoef
};
gunnerOpticsModel="\A3\Weapons_F_Beta\Reticle\Heli_Attack_01_Optics_Gunner_wide_F";
gunnerOpticsModel="\braf\braf_optics_air\StarSaphire\braf_StarSaphire_w.p3d";
gunnerOpticsEffect[]={};
directionStabilized=1;
};
class Medium: Wide
{
opticsDisplayName="M";
initFov=0.093000002;
minFov=0.093000002;
maxFov=0.093000002;
gunnerOpticsModel="\A3\Weapons_F_Beta\Reticle\Heli_Attack_01_Optics_Gunner_medium_F";
opticsDisplayName="MFOV";
initFov=0.0593;
minFov=0.0593;
maxFov=0.0593;
gunnerOpticsModel="\braf\braf_optics_air\StarSaphire\braf_StarSaphire_m.p3d";
};
class Narrow: Wide
{
opticsDisplayName="N";
gunnerOpticsModel="\A3\Weapons_F_Beta\Reticle\Heli_Attack_01_Optics_Gunner_narrow_F";
initFov=0.028999999;
minFov=0.028999999;
maxFov=0.028999999;
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;
};
};
class OpticsOut
@@ -1462,7 +1477,7 @@ class BRAF_Fennec_SAR_base: BRAF_Fennec_Base
initTurn=0;
gunnerName="$STR_A3_COPILOT";
isCopilot=1;
turretInfoType="RscOptics_Heli_Attack_01_gunner";
turretInfoType="BRAF_RscOptics_Air_FLIR";
weapons[]=
{
"Laserdesignator_mounted"
@@ -1497,40 +1512,66 @@ class BRAF_Fennec_SAR_base: BRAF_Fennec_Base
{
class Wide
{
opticsDisplayName="W";
opticsDisplayName="WFOV";
initAngleX=0;
minAngleX=-30;
minAngleX=-120;
maxAngleX=30;
initAngleY=0;
minAngleY=-100;
maxAngleY=100;
initFov=0.46599999;
minFov=0.46599999;
maxFov=0.46599999;
minAngleY=-180;
maxAngleY=180;
initFov=0.5236;
minFov=0.5236;
maxFov=0.5236;
visionMode[]=
{
"Normal",
"NVG",
"Ti"
};
thermalMode[]={0,1};
gunnerOpticsModel="\A3\Weapons_F_Beta\Reticle\Heli_Attack_01_Optics_Gunner_wide_F";
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="M";
initFov=0.093000002;
minFov=0.093000002;
maxFov=0.093000002;
gunnerOpticsModel="\A3\Weapons_F_Beta\Reticle\Heli_Attack_01_Optics_Gunner_medium_F";
opticsDisplayName="MFOV";
initFov=0.0593;
minFov=0.0593;
maxFov=0.0593;
gunnerOpticsModel="\braf\braf_optics_air\StarSaphire\braf_StarSaphire_m.p3d";
};
class Narrow: Wide
{
opticsDisplayName="N";
gunnerOpticsModel="\A3\Weapons_F_Beta\Reticle\Heli_Attack_01_Optics_Gunner_narrow_F";
initFov=0.028999999;
minFov=0.028999999;
maxFov=0.028999999;
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;
};
};
class OpticsOut
@@ -2120,4 +2161,4 @@ class BRAF_Fennec_SAR_FAB: BRAF_Fennec_SAR_base
{
"FAB",1
};
};
};
+1
View File
@@ -10,6 +10,7 @@ class CfgPatches {
"braf_characters_army",
"BRAF_Insignia",
"BRAF_Soft",
"BRAF_Optics_Air",
};
requiredVersion = 0.1;
units[] = {