#include "..\script_component.hpp"
/*
 * Author: BaerMitUmlaut
 * Gets the player model offset of the IR laser origin.
 * Currently unused, see onLightToggled.
 *
 * Arguments:
 * None
 *
 * Return Value:
 * None
 *
 * Example:
 * [] call ace_irlight_fnc_getGlowOffset
 *
 * Public: No
 */

if (isNil QGVAR(offsetCache)) then {
    GVAR(offsetCache) = createHashMap;
};

private _weapon = currentWeapon ACE_player;
private _laser = ((weaponsItems ACE_player) select {_x#0 == _weapon})#0#2;

GVAR(offsetCache) getOrDefaultCall [[_weapon, _laser], {
    private _model = getText (configFile >> "CfgWeapons" >> _weapon >> "model");
    private _dummy = createSimpleObject [_model, [0, 0, 0], true];
    private _proxyOffset = _dummy selectionPosition ["\a3\data_f\proxies\weapon_slots\SIDE.001", 1];
    _proxyOffset = [_proxyOffset#1, _proxyOffset#0 * -1, _proxyOffset#2];
    deleteVehicle _dummy;

    _model = getText (configFile >> "CfgWeapons" >> _laser >> "model");
    _dummy = createSimpleObject [_model, [0, 0, 0], true];
    private _selection = getText (configFile >> "CfgWeapons" >> _laser >> "ItemInfo" >> "Pointer" >> "irLaserPos");
    private _laserOffset = _dummy selectionPosition [_selection, "Memory"];
    _laserOffset = [_laserOffset#1, _laserOffset#0 * -1, _laserOffset#2 * -1];
    deleteVehicle _dummy;

    _proxyOffset vectorAdd _laserOffset
}, true];