ACE3/addons/atragmx/functions/fnc_true_muzzle_velocity.sqf
ulteq 448dcddc55 ATragMX - cleanup and some fixes (#4714)
* ATragMX - Improved the default gun profiles
* Recalculated all muzzle velocities (based on 15 degrees Celsius)
* Recalculated all scope base angle (based on the new muzzle velocities)

* ATragMX - Removed lots of duplicate code
* Introduced dynamic simulation interval (based on muzzle velocity)

* ATragMX - Fixed simulation interval for the truing drop feature
2016-12-01 10:23:03 +01:00

44 lines
1.1 KiB
Plaintext

/*
* Author: Ruthberg
* Trues the muzzle velocity
*
* Arguments:
* Nothing
*
* Return Value:
* Nothing
*
* Example:
* call ace_atragmx_fnc_true_muzzle_velocity
*
* Public: No
*/
#include "script_component.hpp"
private _referenceDrop = GVAR(truingDropDropData) select 0;
private _actualDrop = GVAR(truingDropDropData) select 1;
if (Round(_actualDrop * 10) / 10 == Round(_referenceDrop * 10) / 10) exitWith {};
private _step = 10;
if (_actualDrop > _referenceDrop) then {
_step = -10;
};
private _solutionInput = +GVAR(targetSolutionInput);
_solutionInput set [ 8, 200];
_solutionInput set [13, GVAR(truingDropRangeData) select 0];
private _muzzleVelocity = _solutionInput select 4;
{
_step = _step * _x;
while { _actualDrop * _step < _referenceDrop * _step } do {
_muzzleVelocity = _muzzleVelocity + _step;
_solutionInput set [4, _muzzleVelocity];
private _result = _solutionInput call FUNC(calculate_solution);
_referenceDrop = (_result select 0);
};
} forEach [1, -0.1];
GVAR(truingDropMuzzleVelocity) = _muzzleVelocity;