ACE3/addons/finger/functions/fnc_incomingFinger.sqf
Drofseh 70da38cec5
Finger - Add scaling settings (#8676)
* Add scaling settings

- sizeCoef will scale the size directly from the setting value, default 1x is the same as the current size.
- proximityScaling will scale the size based on the distance between the observer and the pointer, 2x as large at maxRange, 0.25x at 0m distance.

* fix slider decimal value

* bug fix
2022-03-07 12:35:49 -06:00

37 lines
1.2 KiB
Plaintext

#include "script_component.hpp"
/*
* 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>
* 1: Position being pointed at (ASL) <ARRAY>
*
* Return Value:
* None
*
* Example:
* [bob, [1,2,3]] call ace_finger_fnc_incomingFinger;
*
* Public: No
*/
params ["_sourceUnit", "_fingerPosPrecise", "_distance"];
// Add some random float to location if it's not our own finger:
private _fingerPos = if (_sourceUnit == ACE_player) then {
_fingerPosPrecise
} else {
_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)
};
TRACE_3("incoming finger:", _sourceUnit, _fingerPosPrecise, _fingerPos);
private _data = [diag_tickTime, _fingerPos, ([_sourceUnit, false, true] call EFUNC(common,getName)), _sourceUnit];
GVAR(fingersHash) set [hashValue _sourceUnit, _data];
if (GVAR(pfeh_id) == -1) then {
GVAR(pfeh_id) = [DFUNC(perFrameEH), 0, []] call CBA_fnc_addPerFrameHandler;
TRACE_1("Started PFEH", GVAR(pfeh_id));
};