ACE3/TO_MERGE/ace/arty_mortars/fnc_alignGun.sqf

61 lines
2.1 KiB
Plaintext

#include "script_component.hpp"
if (isServer) then {
_this spawn {
waitUntil { time > 0 };
private["_mortar", "_pitchBank", "_dir", "_rd", "_wpos", "_offset", "_stake1pos", "_rdDeg", "_stake1", "_stake2"];
_mortar = _this;
_pitchBank = _mortar call BIS_fnc_getPitchBank;
_pitchBank = _mortar call BIS_fnc_getPitchBank;
_mortar setVectorUp [0,0,0.0001];
_dir = getDir _mortar;
_stakesInfo = if (time < 30) then { [400,25] } else { [] };
_colInfo = _mortar getVariable ["ace_arty_collimator_setup", []];
_offsetPos = getArray(configFile >> "CfgVehicles" >> (typeOf _mortar) >> "ACE_ARTY_SETUP_OFFSETPOS");
_offsetAngle = 0.37;//getNumber(configFile >> "CfgVehicles" >> (typeOf _mortar) >> "ACE_ARTY_SETUP_OFFSET_STAKEANGLE");
if (count _stakesInfo == 2) then {
_stakesDeflection = _stakesInfo select 0;
_stakesDistance = _stakesInfo select 1;
_rd = DEG2MIL(_dir) - (_stakesDeflection-0.4);
if (_rd < 0) then {
_rd = _rd + 6400;
};
_rdDeg = MIL2DEG(_rd);
_wpos = _mortar modelToWorld _offsetPos;
_wpos set[2, 0];
_offset = (_rdDeg + MIL2DEG(_offsetAngle)) mod 360;
if(_offset < 360) then {
_offset = _offset + 360;
};
_stake1pos = [_wpos, _stakesDistance, _offset] call BIS_fnc_relPos;
_stake2pos = [_wpos, (_stakesDistance*2), _offset] call BIS_fnc_relPos;
_stake1pos set[2, -0.75];
_stake1 = "ACE_Arty_AimingPost_M1A2_M58" createVehicle _wpos;
_stake1 setDir _rdDeg+180 mod 360;
_stake1 setPos _stake1pos;
_stake1 setVectorUp [0,0,0.0001];
_stake2 = "ACE_Arty_AimingPost_M1A2_M59" createVehicle _wpos;
_stake2 setDir _rdDeg + 180 mod 360;
_stake2pos set[2, -0.5];
_stake2 setPosATL _stake2pos;
_stake2 setVectorUp [0,0,0.0001];
if (count _colInfo != 5) then {
_mortar animate ["OpticRevolve", _stakesDeflection];
_mortar setVariable [QGVAR(resetCounter), 3200-_stakesDeflection, true];
_mortar animate ["OpticElevate", 1100];
};
};
//_mortar setVariable [QGVAR(resetCounter), 3200+(_m119 getVariable QUOTE(GVAR(resetPhase))), true];
};
};