mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Ballistics - Respect Advanced Ballistics settings for displaying muzzle velocities (#9682)
Co-authored-by: johnb432 <58661205+johnb432@users.noreply.github.com>
This commit is contained in:
parent
b58807088a
commit
e9cb2740e8
@ -41,7 +41,11 @@ if (_initSpeedCoef > 0) then {
|
|||||||
};
|
};
|
||||||
|
|
||||||
private _abAdjustText = "";
|
private _abAdjustText = "";
|
||||||
if (_magIsForCurrentWeapon && {["ace_advanced_ballistics"] call EFUNC(common,isModLoaded)}) then {
|
if (
|
||||||
|
_magIsForCurrentWeapon &&
|
||||||
|
{missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]} &&
|
||||||
|
{missionNamespace getVariable [QEGVAR(advanced_ballistics,barrelLengthInfluenceEnabled), false]} // this can be on while AB is off or vice-versa
|
||||||
|
) then {
|
||||||
private _configAmmo = (configFile >> "CfgAmmo" >> (getText (_configMagazine >> "ammo")));
|
private _configAmmo = (configFile >> "CfgAmmo" >> (getText (_configMagazine >> "ammo")));
|
||||||
private _barrelLength = getNumber (_configWeapon >> "ACE_barrelLength");
|
private _barrelLength = getNumber (_configWeapon >> "ACE_barrelLength");
|
||||||
private _muzzleVelocityTable = getArray (_configAmmo >> "ACE_muzzleVelocities");
|
private _muzzleVelocityTable = getArray (_configAmmo >> "ACE_muzzleVelocities");
|
||||||
|
@ -37,7 +37,10 @@ if (_magazine isEqualTo "") then {
|
|||||||
};
|
};
|
||||||
|
|
||||||
private _abAdjustText = "";
|
private _abAdjustText = "";
|
||||||
if (["ace_advanced_ballistics"] call EFUNC(common,isModLoaded)) then {
|
if (
|
||||||
|
missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false] &&
|
||||||
|
{missionNamespace getVariable [QEGVAR(advanced_ballistics,barrelLengthInfluenceEnabled), false]} // this can be on while AB is off or vice-versa
|
||||||
|
) then {
|
||||||
private _configAmmo = (configFile >> "CfgAmmo" >> (getText (_configMagazine >> "ammo")));
|
private _configAmmo = (configFile >> "CfgAmmo" >> (getText (_configMagazine >> "ammo")));
|
||||||
private _barrelLength = getNumber (_configWeapon >> "ACE_barrelLength");
|
private _barrelLength = getNumber (_configWeapon >> "ACE_barrelLength");
|
||||||
private _muzzleVelocityTable = getArray (_configAmmo >> "ACE_muzzleVelocities");
|
private _muzzleVelocityTable = getArray (_configAmmo >> "ACE_muzzleVelocities");
|
||||||
|
@ -15,6 +15,8 @@
|
|||||||
* Public: No
|
* Public: No
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#define TEMPERATURE_SLOT_INDEX 5
|
||||||
|
|
||||||
private _playerDir = getDir ACE_player;
|
private _playerDir = getDir ACE_player;
|
||||||
private _playerAltitude = (getPosASL ACE_player) select 2;
|
private _playerAltitude = (getPosASL ACE_player) select 2;
|
||||||
private _temperature = _playerAltitude call EFUNC(weather,calculateTemperatureAtHeight);
|
private _temperature = _playerAltitude call EFUNC(weather,calculateTemperatureAtHeight);
|
||||||
@ -41,9 +43,10 @@ if (isNil QGVAR(MIN) || isNil QGVAR(MAX)) then {
|
|||||||
[0, _playerDir] call FUNC(updateMemory);
|
[0, _playerDir] call FUNC(updateMemory);
|
||||||
|
|
||||||
if (GVAR(MinAvgMaxMode) == 1) then {
|
if (GVAR(MinAvgMaxMode) == 1) then {
|
||||||
|
private _useAB = missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false];
|
||||||
{
|
{
|
||||||
GVAR(ENTRIES) set [_x, (GVAR(ENTRIES) select _x) + 1];
|
GVAR(ENTRIES) set [_x, (GVAR(ENTRIES) select _x) + 1];
|
||||||
} count [2, 3, 4];
|
} forEach [2, 3, 4];
|
||||||
|
|
||||||
// Wind SPD
|
// Wind SPD
|
||||||
private _windSpeed = call FUNC(measureWindSpeed);
|
private _windSpeed = call FUNC(measureWindSpeed);
|
||||||
@ -51,7 +54,7 @@ if (GVAR(MinAvgMaxMode) == 1) then {
|
|||||||
|
|
||||||
// CROSSWIND
|
// CROSSWIND
|
||||||
private _crosswind = 0;
|
private _crosswind = 0;
|
||||||
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
|
if (_useAB) then {
|
||||||
_crosswind = abs(sin(GVAR(RefHeading) - _playerDir) * _windSpeed);
|
_crosswind = abs(sin(GVAR(RefHeading) - _playerDir) * _windSpeed);
|
||||||
} else {
|
} else {
|
||||||
_crosswind = abs(sin(GVAR(RefHeading)) * _windSpeed);
|
_crosswind = abs(sin(GVAR(RefHeading)) * _windSpeed);
|
||||||
@ -60,7 +63,7 @@ if (GVAR(MinAvgMaxMode) == 1) then {
|
|||||||
|
|
||||||
// HEADWIND
|
// HEADWIND
|
||||||
private _headwind = 0;
|
private _headwind = 0;
|
||||||
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
|
if (_useAB) then {
|
||||||
_headwind = cos(GVAR(RefHeading) - _playerDir) * _windSpeed;
|
_headwind = cos(GVAR(RefHeading) - _playerDir) * _windSpeed;
|
||||||
} else {
|
} else {
|
||||||
_headwind = cos(GVAR(RefHeading)) * _windSpeed;
|
_headwind = cos(GVAR(RefHeading)) * _windSpeed;
|
||||||
@ -74,4 +77,18 @@ if (GVAR(MinAvgMaxMode) == 1) then {
|
|||||||
GVAR(TOTAL) set [4, (GVAR(TOTAL) select 4) + _headwind];
|
GVAR(TOTAL) set [4, (GVAR(TOTAL) select 4) + _headwind];
|
||||||
};
|
};
|
||||||
|
|
||||||
{ _x call FUNC(updateMemory); true } count [[5, _temperature],[6, _chill],[7, _humidity],[8, _heatIndex],[9, _dewPoint],[10, _wetBulb],[11, _barometricPressure],[12, _altitude],[13, _densityAltitude]];
|
private _data = [
|
||||||
|
_temperature,
|
||||||
|
_chill,
|
||||||
|
_humidity,
|
||||||
|
_heatIndex,
|
||||||
|
_dewPoint,
|
||||||
|
_wetBulb,
|
||||||
|
_barometricPressure,
|
||||||
|
_altitude,
|
||||||
|
_densityAltitude
|
||||||
|
];
|
||||||
|
|
||||||
|
{
|
||||||
|
[TEMPERATURE_SLOT_INDEX + _forEachIndex, _x] call FUNC(updateMemory);
|
||||||
|
} forEach _data;
|
||||||
|
@ -49,7 +49,8 @@ private _bulletSpeed = 0;
|
|||||||
private _gravity = [0, sin(_scopeBaseAngle) * -GRAVITY, cos(_scopeBaseAngle) * -GRAVITY];
|
private _gravity = [0, sin(_scopeBaseAngle) * -GRAVITY, cos(_scopeBaseAngle) * -GRAVITY];
|
||||||
private _deltaT = 1 / _simSteps;
|
private _deltaT = 1 / _simSteps;
|
||||||
private _speedOfSound = 0;
|
private _speedOfSound = 0;
|
||||||
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
|
private _isABenabled = missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false];
|
||||||
|
if (_isABenabled) then {
|
||||||
_speedOfSound = _temperature call EFUNC(weather,calculateSpeedOfSound);
|
_speedOfSound = _temperature call EFUNC(weather,calculateSpeedOfSound);
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -68,7 +69,7 @@ if (_useABConfig) then {
|
|||||||
};
|
};
|
||||||
|
|
||||||
private _airFrictionCoef = 1;
|
private _airFrictionCoef = 1;
|
||||||
if (!_useABConfig && (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false])) then {
|
if (!_useABConfig && _isABenabled) then {
|
||||||
private _airDensity = [_temperature, _barometricPressure, _relativeHumidity] call EFUNC(weather,calculateAirDensity);
|
private _airDensity = [_temperature, _barometricPressure, _relativeHumidity] call EFUNC(weather,calculateAirDensity);
|
||||||
_airFrictionCoef = _airDensity / 1.22498;
|
_airFrictionCoef = _airDensity / 1.22498;
|
||||||
};
|
};
|
||||||
|
@ -107,12 +107,17 @@ private _transonicStabilityCoef = _ammoConfig select 4;
|
|||||||
private _dragModel = _ammoConfig select 5;
|
private _dragModel = _ammoConfig select 5;
|
||||||
private _atmosphereModel = _ammoConfig select 8;
|
private _atmosphereModel = _ammoConfig select 8;
|
||||||
|
|
||||||
private _useABConfig = (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]);
|
private _isABenabled = (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) && (_bc != 0);
|
||||||
if (_bc == 0) then {
|
private _useBarrelLengthInfluence = (
|
||||||
_useABConfig = false;
|
_isABenabled &&
|
||||||
};
|
{missionNamespace getVariable [QEGVAR(advanced_ballistics,barrelLengthInfluenceEnabled), false]}
|
||||||
|
);
|
||||||
|
private _useAmmoTemperatureInfluence = (
|
||||||
|
_isABenabled &&
|
||||||
|
{missionNamespace getVariable [QEGVAR(advanced_ballistics,ammoTemperatureEnabled), false]}
|
||||||
|
);
|
||||||
|
|
||||||
if (_barrelLength > 0 && _useABConfig) then {
|
if (_barrelLength > 0 && _useBarrelLengthInfluence) then {
|
||||||
_muzzleVelocity = [_barrelLength, _ammoConfig select 10, _ammoConfig select 11, 0] call EFUNC(advanced_ballistics,calculateBarrelLengthVelocityShift);
|
_muzzleVelocity = [_barrelLength, _ammoConfig select 10, _ammoConfig select 11, 0] call EFUNC(advanced_ballistics,calculateBarrelLengthVelocityShift);
|
||||||
} else {
|
} else {
|
||||||
private _initSpeed = getNumber (configFile >> "CfgMagazines" >> _magazineClass >> "initSpeed");
|
private _initSpeed = getNumber (configFile >> "CfgMagazines" >> _magazineClass >> "initSpeed");
|
||||||
@ -128,7 +133,7 @@ if (_barrelLength > 0 && _useABConfig) then {
|
|||||||
|
|
||||||
ctrlSetText [770000, format["%1'' - %2 gr (%3)", round((_ammoConfig select 1) * 39.3700787) / 1000, round((_ammoConfig select 3) * 15.4323584), _ammoClass]];
|
ctrlSetText [770000, format["%1'' - %2 gr (%3)", round((_ammoConfig select 1) * 39.3700787) / 1000, round((_ammoConfig select 3) * 15.4323584), _ammoClass]];
|
||||||
if (_barrelLength > 0) then {
|
if (_barrelLength > 0) then {
|
||||||
if (_useABConfig && _barrelTwist > 0) then {
|
if (_useBarrelLengthInfluence && _barrelTwist > 0) then {
|
||||||
ctrlSetText [770002, format["Barrel: %1'' 1:%2'' twist", round(2 * _barrelLength * 0.0393700787) / 2, round(_barrelTwist * 0.0393700787)]];
|
ctrlSetText [770002, format["Barrel: %1'' 1:%2'' twist", round(2 * _barrelLength * 0.0393700787) / 2, round(_barrelTwist * 0.0393700787)]];
|
||||||
} else {
|
} else {
|
||||||
ctrlSetText [770002, format["Barrel: %1''", round(2 * _barrelLength * 0.0393700787) / 2]];
|
ctrlSetText [770002, format["Barrel: %1''", round(2 * _barrelLength * 0.0393700787) / 2]];
|
||||||
@ -136,7 +141,7 @@ if (_barrelLength > 0) then {
|
|||||||
};
|
};
|
||||||
|
|
||||||
lnbAddRow [770100, ["4mps Wind(MRADs)", "1mps LEAD(MRADs)"]];
|
lnbAddRow [770100, ["4mps Wind(MRADs)", "1mps LEAD(MRADs)"]];
|
||||||
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
|
if (_isABenabled) then {
|
||||||
lnbAddRow [770100, ["Air/Ammo Temp", "Air/Ammo Temp"]];
|
lnbAddRow [770100, ["Air/Ammo Temp", "Air/Ammo Temp"]];
|
||||||
|
|
||||||
lnbAddRow [770200, ["-15°C", " -5°C", " 5°C", " 10°C", " 15°C", " 20°C", " 25°C", " 30°C", " 35°C"]];
|
lnbAddRow [770200, ["-15°C", " -5°C", " 5°C", " 10°C", " 15°C", " 20°C", " 25°C", " 30°C", " 35°C"]];
|
||||||
@ -145,7 +150,7 @@ if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) t
|
|||||||
|
|
||||||
ctrlSetText [77003, format["%1m ZERO", round(_zeroRange)]];
|
ctrlSetText [77003, format["%1m ZERO", round(_zeroRange)]];
|
||||||
|
|
||||||
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
|
if (_isABenabled) then {
|
||||||
ctrlSetText [770001, format["Drop Tables for B.P.: %1mb; Corrected for MVV at Air/Ammo Temperatures -15-35 °C", round(EGVAR(scopes,zeroReferenceBarometricPressure) * 100) / 100]];
|
ctrlSetText [770001, format["Drop Tables for B.P.: %1mb; Corrected for MVV at Air/Ammo Temperatures -15-35 °C", round(EGVAR(scopes,zeroReferenceBarometricPressure) * 100) / 100]];
|
||||||
ctrlSetText [77004 , format["B.P.: %1mb", round(EGVAR(scopes,zeroReferenceBarometricPressure) * 100) / 100]];
|
ctrlSetText [77004 , format["B.P.: %1mb", round(EGVAR(scopes,zeroReferenceBarometricPressure) * 100) / 100]];
|
||||||
} else {
|
} else {
|
||||||
@ -153,30 +158,30 @@ if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) t
|
|||||||
ctrlSetText [77004 , ""];
|
ctrlSetText [77004 , ""];
|
||||||
};
|
};
|
||||||
|
|
||||||
private _cacheEntry = missionNamespace getVariable format[QGVAR(%1_%2_%3_%4_%5), _zeroRange, _boreHeight, _ammoClass, _weaponClass, missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]];
|
private _cacheEntry = missionNamespace getVariable format [QGVAR(%1_%2_%3_%4_%5_%6_%7), _zeroRange, _boreHeight, _ammoClass, _weaponClass, _isABenabled, _useBarrelLengthInfluence, _useAmmoTemperatureInfluence];
|
||||||
if (isNil {_cacheEntry}) then {
|
if (isNil "_cacheEntry") then {
|
||||||
private _scopeBaseAngle = if (!_useABConfig) then {
|
private _scopeBaseAngle = if (!_isABenabled) then {
|
||||||
private _zeroAngle = "ace_advanced_ballistics" callExtension format ["calcZero:%1:%2:%3:%4", _zeroRange, _muzzleVelocity, _airFriction, _boreHeight];
|
private _zeroAngle = "ace_advanced_ballistics" callExtension format ["calcZero:%1:%2:%3:%4", _zeroRange, _muzzleVelocity, _airFriction, _boreHeight];
|
||||||
(parseNumber _zeroAngle)
|
(parseNumber _zeroAngle)
|
||||||
} else {
|
} else {
|
||||||
private _zeroAngle = "ace_advanced_ballistics" callExtension format ["calcZeroAB:%1:%2:%3:%4:%5:%6:%7:%8:%9", _zeroRange, _muzzleVelocity, _boreHeight, EGVAR(scopes,zeroReferenceTemperature), EGVAR(scopes,zeroReferenceBarometricPressure), EGVAR(scopes,zeroReferenceHumidity), _bc, _dragModel, _atmosphereModel];
|
private _zeroAngle = "ace_advanced_ballistics" callExtension format ["calcZeroAB:%1:%2:%3:%4:%5:%6:%7:%8:%9", _zeroRange, _muzzleVelocity, _boreHeight, EGVAR(scopes,zeroReferenceTemperature), EGVAR(scopes,zeroReferenceBarometricPressure), EGVAR(scopes,zeroReferenceHumidity), _bc, _dragModel, _atmosphereModel];
|
||||||
(parseNumber _zeroAngle)
|
(parseNumber _zeroAngle)
|
||||||
};
|
};
|
||||||
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false] && missionNamespace getVariable [QEGVAR(advanced_ballistics,ammoTemperatureEnabled), false]) then {
|
if (_useAmmoTemperatureInfluence) then {
|
||||||
{
|
{
|
||||||
private _mvShift = [_ammoConfig select 9, _x] call EFUNC(advanced_ballistics,calculateAmmoTemperatureVelocityShift);
|
private _mvShift = [_ammoConfig select 9, _x] call EFUNC(advanced_ballistics,calculateAmmoTemperatureVelocityShift);
|
||||||
private _mv = _muzzleVelocity + _mvShift;
|
private _mv = _muzzleVelocity + _mvShift;
|
||||||
|
|
||||||
[_scopeBaseAngle,_boreHeight,_airFriction,_mv,_x,EGVAR(scopes,zeroReferenceBarometricPressure),EGVAR(scopes,zeroReferenceHumidity),200,4,1,GVAR(rangeCardEndRange),_bc,_dragModel,_atmosphereModel,_transonicStabilityCoef,_forEachIndex,_useABConfig] call FUNC(calculateRangeCard);
|
[_scopeBaseAngle,_boreHeight,_airFriction,_mv,_x,EGVAR(scopes,zeroReferenceBarometricPressure),EGVAR(scopes,zeroReferenceHumidity),200,4,1,GVAR(rangeCardEndRange),_bc,_dragModel,_atmosphereModel,_transonicStabilityCoef,_forEachIndex,_isABenabled] call FUNC(calculateRangeCard);
|
||||||
} forEach [-15, -5, 5, 10, 15, 20, 25, 30, 35];
|
} forEach [-15, -5, 5, 10, 15, 20, 25, 30, 35];
|
||||||
} else {
|
} else {
|
||||||
[_scopeBaseAngle,_boreHeight,_airFriction,_muzzleVelocity,15,EGVAR(scopes,zeroReferenceBarometricPressure),EGVAR(scopes,zeroReferenceHumidity),200,4,1,GVAR(rangeCardEndRange),_bc,_dragModel,_atmosphereModel,_transonicStabilityCoef,3,_useABConfig] call FUNC(calculateRangeCard);
|
[_scopeBaseAngle,_boreHeight,_airFriction,_muzzleVelocity,15,EGVAR(scopes,zeroReferenceBarometricPressure),EGVAR(scopes,zeroReferenceHumidity),200,4,1,GVAR(rangeCardEndRange),_bc,_dragModel,_atmosphereModel,_transonicStabilityCoef,3,_isABenabled] call FUNC(calculateRangeCard);
|
||||||
};
|
};
|
||||||
|
|
||||||
for "_i" from 0 to 9 do {
|
for "_i" from 0 to 9 do {
|
||||||
GVAR(lastValidRow) pushBack count (GVAR(rangeCardDataElevation) select _i);
|
GVAR(lastValidRow) pushBack count (GVAR(rangeCardDataElevation) select _i);
|
||||||
while {count (GVAR(rangeCardDataElevation) select _i) < 50} do {
|
while {count (GVAR(rangeCardDataElevation) select _i) < 50} do {
|
||||||
if (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]) then {
|
if (_isABenabled) then {
|
||||||
(GVAR(rangeCardDataElevation) select _i) pushBack "###";
|
(GVAR(rangeCardDataElevation) select _i) pushBack "###";
|
||||||
(GVAR(rangeCardDataWindage) select _i) pushBack "##";
|
(GVAR(rangeCardDataWindage) select _i) pushBack "##";
|
||||||
(GVAR(rangeCardDataLead) select _i) pushBack "##";
|
(GVAR(rangeCardDataLead) select _i) pushBack "##";
|
||||||
@ -188,7 +193,7 @@ if (isNil {_cacheEntry}) then {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
missionNamespace setVariable [format[QGVAR(%1_%2_%3_%4_%5), _zeroRange, _boreHeight, _ammoClass, _weaponClass, missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]], [GVAR(rangeCardDataElevation), GVAR(rangeCardDataWindage), GVAR(rangeCardDataLead), GVAR(rangeCardDataMVs), GVAR(lastValidRow)]];
|
missionNamespace setVariable [format [QGVAR(%1_%2_%3_%4_%5_%6_%7), _zeroRange, _boreHeight, _ammoClass, _weaponClass, _isABenabled, _useBarrelLengthInfluence, _useAmmoTemperatureInfluence], [GVAR(rangeCardDataElevation), GVAR(rangeCardDataWindage), GVAR(rangeCardDataLead), GVAR(rangeCardDataMVs), GVAR(lastValidRow)]];
|
||||||
} else {
|
} else {
|
||||||
GVAR(rangeCardDataElevation) = _cacheEntry select 0;
|
GVAR(rangeCardDataElevation) = _cacheEntry select 0;
|
||||||
GVAR(rangeCardDataWindage) = _cacheEntry select 1;
|
GVAR(rangeCardDataWindage) = _cacheEntry select 1;
|
||||||
|
@ -24,7 +24,6 @@ private _key = format ["weaponInfoCache-%1-%2-%3",_weaponClass,_magazineClass,_a
|
|||||||
private _weaponInfo = GVAR(data) getOrDefault [_key, []];
|
private _weaponInfo = GVAR(data) getOrDefault [_key, []];
|
||||||
if ((_weaponInfo isEqualTo []) && {_magazineClass != ""}) then {
|
if ((_weaponInfo isEqualTo []) && {_magazineClass != ""}) then {
|
||||||
TRACE_3("new weapon/mag",_weaponClass,_magazineClass,_ammoClass);
|
TRACE_3("new weapon/mag",_weaponClass,_magazineClass,_ammoClass);
|
||||||
private _useABConfig = (missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false]);
|
|
||||||
|
|
||||||
private _zeroRange = 100;
|
private _zeroRange = 100;
|
||||||
private _boreHeight = [_unit, 0] call EFUNC(scopes,getBoreHeight);
|
private _boreHeight = [_unit, 0] call EFUNC(scopes,getBoreHeight);
|
||||||
@ -35,8 +34,14 @@ if ((_weaponInfo isEqualTo []) && {_magazineClass != ""}) then {
|
|||||||
_weaponConfig params ["_barrelTwist", "_twistDirection", "_barrelLength"];
|
_weaponConfig params ["_barrelTwist", "_twistDirection", "_barrelLength"];
|
||||||
private _bc = if (_ballisticCoefficients isEqualTo []) then { 0 } else { _ballisticCoefficients # 0 };
|
private _bc = if (_ballisticCoefficients isEqualTo []) then { 0 } else { _ballisticCoefficients # 0 };
|
||||||
|
|
||||||
|
private _useAB = (
|
||||||
|
missionNamespace getVariable [QEGVAR(advanced_ballistics,enabled), false] &&
|
||||||
|
{missionNamespace getVariable [QEGVAR(advanced_ballistics,barrelLengthInfluenceEnabled), false]} &&
|
||||||
|
{_bc != 0}
|
||||||
|
);
|
||||||
|
|
||||||
// Get Muzzle Velocity
|
// Get Muzzle Velocity
|
||||||
private _muzzleVelocity = if (_barrelLength > 0 && _useABConfig && {_bc != 0}) then {
|
private _muzzleVelocity = if (_barrelLength > 0 && _useAB) then {
|
||||||
[_barrelLength, _muzzleVelocityTable, _barrelLengthTable, 0] call EFUNC(advanced_ballistics,calculateBarrelLengthVelocityShift)
|
[_barrelLength, _muzzleVelocityTable, _barrelLengthTable, 0] call EFUNC(advanced_ballistics,calculateBarrelLengthVelocityShift)
|
||||||
} else {
|
} else {
|
||||||
private _initSpeed = getNumber (configFile >> "CfgMagazines" >> _magazineClass >> "initSpeed");
|
private _initSpeed = getNumber (configFile >> "CfgMagazines" >> _magazineClass >> "initSpeed");
|
||||||
|
Loading…
Reference in New Issue
Block a user