2023-09-12 18:58:10 +00:00
|
|
|
#include "..\script_component.hpp"
|
2015-06-09 01:34:29 +00:00
|
|
|
/*
|
|
|
|
* Author: TheDrill, PabstMirror
|
|
|
|
* Recieve an finger event, adds to the array (or updates if already present) and starts PFEH if not already running
|
|
|
|
*
|
|
|
|
* Arguments:
|
|
|
|
* 0: Source Unit (can be self) <OBJECT>
|
2016-06-25 19:02:06 +00:00
|
|
|
* 1: Position being pointed at (ASL) <ARRAY>
|
2015-06-09 01:34:29 +00:00
|
|
|
*
|
|
|
|
* Return Value:
|
|
|
|
* None
|
|
|
|
*
|
|
|
|
* Example:
|
|
|
|
* [bob, [1,2,3]] call ace_finger_fnc_incomingFinger;
|
|
|
|
*
|
|
|
|
* Public: No
|
|
|
|
*/
|
|
|
|
|
2016-06-25 19:02:06 +00:00
|
|
|
params ["_sourceUnit", "_fingerPosPrecise", "_distance"];
|
2015-06-09 01:34:29 +00:00
|
|
|
|
2016-06-25 19:02:06 +00:00
|
|
|
// Add some random float to location if it's not our own finger:
|
|
|
|
private _fingerPos = if (_sourceUnit == ACE_player) then {
|
2015-06-09 01:34:29 +00:00
|
|
|
_fingerPosPrecise
|
|
|
|
} else {
|
2016-09-04 14:44:22 +00:00
|
|
|
_fingerPosPrecise vectorAdd ([random (2 * FP_RANDOMIZATION_X) - FP_RANDOMIZATION_X, random (2 * FP_RANDOMIZATION_X) - FP_RANDOMIZATION_X, random (2 * FP_RANDOMIZATION_Y) - FP_RANDOMIZATION_Y] vectorMultiply _distance)
|
2015-06-09 01:34:29 +00:00
|
|
|
};
|
|
|
|
|
2024-02-05 17:04:24 +00:00
|
|
|
TRACE_3("incoming finger:",_sourceUnit,_fingerPosPrecise,_fingerPos);
|
2016-06-25 19:02:06 +00:00
|
|
|
|
2022-03-07 18:35:49 +00:00
|
|
|
private _data = [diag_tickTime, _fingerPos, ([_sourceUnit, false, true] call EFUNC(common,getName)), _sourceUnit];
|
2021-10-10 16:55:14 +00:00
|
|
|
GVAR(fingersHash) set [hashValue _sourceUnit, _data];
|
2015-06-09 01:34:29 +00:00
|
|
|
|
|
|
|
if (GVAR(pfeh_id) == -1) then {
|
|
|
|
GVAR(pfeh_id) = [DFUNC(perFrameEH), 0, []] call CBA_fnc_addPerFrameHandler;
|
2024-02-05 17:04:24 +00:00
|
|
|
TRACE_1("Started PFEH",GVAR(pfeh_id));
|
2015-06-09 05:51:48 +00:00
|
|
|
};
|