2023-09-12 18:58:10 +00:00
|
|
|
#include "..\script_component.hpp"
|
2023-07-28 04:03:02 +00:00
|
|
|
/*
|
|
|
|
* Author: LorenLuke
|
|
|
|
* Toggles laser point tracking when a laser is on, for tracking coordinates.
|
|
|
|
*
|
|
|
|
* Arguments:
|
|
|
|
* 0: Vehicle <OBJECT>
|
|
|
|
*
|
|
|
|
* Return Value:
|
|
|
|
* Nothing
|
|
|
|
*
|
|
|
|
* Example:
|
|
|
|
* [vehicle player] call ace_laser_fnc_laserPointTrack
|
|
|
|
*
|
|
|
|
* Public: No
|
|
|
|
*/
|
|
|
|
params ["_vehicle"];
|
|
|
|
|
|
|
|
[{
|
|
|
|
params ["_args", "_pfhID"];
|
|
|
|
_args params ["_vehicle"];
|
|
|
|
if !(alive _vehicle && {local _vehicle} && {hasPilotCamera _vehicle} && {!isNull (laserTarget _vehicle)}) exitWith {
|
|
|
|
[_pfhID] call CBA_fnc_removePerFrameHandler;
|
|
|
|
};
|
|
|
|
(getPilotCameraTarget _vehicle) params ["_isTracking", "_spotPos", "_targetObj"];
|
|
|
|
if (!_isTracking) exitWith {};
|
|
|
|
if (isNull _targetObj) then {
|
|
|
|
private _laserTargetPos = getPosASL laserTarget _vehicle;
|
|
|
|
private _distance = _spotPos distance _laserTargetPos;
|
|
|
|
if (_distance > 0.15) then {
|
|
|
|
private _vehPos = getPosASL _vehicle;
|
|
|
|
private _vectorToLaser = _vehPos vectorFromTo _laserTargetPos;
|
|
|
|
private _vectorToSpot = _vehPos vectorFromTo _spotPos;
|
|
|
|
if (acos (_vectorToLaser vectorCos _vectorToSpot) < 0.025) then {
|
|
|
|
_vehicle setPilotCameraTarget _laserTargetPos;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}, 0, [_vehicle]] call CBA_fnc_addPerFrameHandler;
|