#include "..\script_component.hpp" /* * Author: Garth 'L-H' de Wet, Ruthberg, edited by commy2 for better MP and eventual AI support and esteldunedain * Confirms trench dig * * Arguments: * 0: unit * * Return Value: * None * * Example: * [ACE_player] call ace_trenches_fnc_placeConfirm * * Public: No */ params ["_unit"]; // enable running again [_unit, "forceWalk", QUOTE(ADDON), false] call EFUNC(common,statusEffect_set); [_unit, "blockThrow", QUOTE(ADDON), false] call EFUNC(common,statusEffect_set); // remove dig pfh [GVAR(digPFH)] call CBA_fnc_removePerFrameHandler; GVAR(digPFH) = -1; // remove mouse button actions call EFUNC(interaction,hideMouseHint); [_unit, "DefaultAction", _unit getVariable [QGVAR(Dig), -1]] call EFUNC(common,removeActionEventHandler); _unit setVariable [QGVAR(isPlacing), false, true]; // Delete placement dummy and create real trench params ["_unit"]; if (isNull GVAR(trench)) exitWith {}; deleteVehicle GVAR(trench); private _trench = createVehicle [GVAR(trenchClass), [0, 0, 0], [], 0, "NONE"]; _trench setVariable [QGVAR(progress), 0, true]; GVAR(trenchPlacementData) params ["_dx", "_dy", "_offset"]; private _basePos = GVAR(trenchPos); private _angle = (GVAR(digDirection) + getDir _unit); [QGVAR(placed), [_unit, _trench]] call CBA_fnc_globalEvent; // _v1 forward from the player, _v2 to the right, _v3 points away from the ground private _v3 = surfaceNormal _basePos; private _v2 = [sin _angle, +cos _angle, 0] vectorCrossProduct _v3; private _v1 = _v3 vectorCrossProduct _v2; // Stick the trench to the ground _basePos set [2, getTerrainHeightASL _basePos]; private _minzoffset = 0; for [{private _ix = -_dx/2},{_ix <= _dx/2},{_ix = _ix + _dx/3}] do { for [{private _iy = -_dy/2},{_iy <= _dy/2},{_iy = _iy + _dy/3}] do { private _pos = _basePos vectorAdd (_v2 vectorMultiply _ix) vectorAdd (_v1 vectorMultiply _iy); _minzoffset = _minzoffset min ((getTerrainHeightASL _pos) - (_pos select 2)); #ifdef DEBUG_MODE_FULL _pos set [2, getTerrainHeightASL _pos]; _pos2 = +_pos; _pos2 set [2, getTerrainHeightASL _pos + 1]; drawLine3D [ASLtoAGL _pos, ASLtoAGL _pos2, [1,1,0,1]]; #endif }; }; _basePos set [2, (_basePos select 2) + _minzoffset + _offset]; private _vecDirAndUp = [_v1, _v3]; GVAR(trench) = objNull; _trench setVariable [QGVAR(placeData), [_basePos, _vecDirAndUp], true]; [_trench, _unit] call FUNC(continueDiggingTrench);