#include "..\script_component.hpp" /* * Author: BaerMitUmlaut, johnb43 * Drops a draggable / carryable clone of a dead unit. * * Arguments: * 0: Unit dragging / carrying * 1: Clone * 2: If unit is in building * * Return Value: * Original unit * * Example: * [player, cursorObject, false] call ace_dragging_fnc_dropClone; * * Public: No */ params ["_unit", "_clone", "_inBuilding"]; (_clone getVariable [QGVAR(original), []]) params [ ["_target", objNull], ["_isInRemainsCollector", true], ["_isObjectHidden", false], ["_simulationEnabled", true] ]; // Check if unit was deleted if (!isNull _target) then { // Turn on PhysX so that the corpse doesn't desync when moved [QEGVAR(common,awake), [_target, true]] call CBA_fnc_globalEvent; private _posASL = getPosASL _clone; if (_inBuilding) then { _posASL = _posASL vectorAdd [0, 0, 0.05]; }; // Set the unit's direction [QEGVAR(common,setDir), [_target, getDir _unit + 180], _target] call CBA_fnc_targetEvent; [{ params ["_target", "_clone", "_isObjectHidden", "_simulationEnabled", "_posASL"]; // Make sure PhysX is on [QEGVAR(common,awake), [_target, true]] call CBA_fnc_globalEvent; // Bring unit back to clone's position _target setPosASL _posASL; // Unhide unit if (!_isObjectHidden) then { [QEGVAR(common,hideObjectGlobal), [_target, false]] call CBA_fnc_serverEvent; }; // Enable simulation again if (_simulationEnabled) then { [QEGVAR(common,enableSimulationGlobal), [_target, true]] call CBA_fnc_serverEvent; }; // Detach first to prevent objNull in attachedObjects detach _clone; deleteVehicle _clone; }, [_target, _clone, _isObjectHidden, _simulationEnabled, _posASL], 0.25] call CBA_fnc_waitAndExecute; // Get which curators had this object as editable if (["ace_zeus"] call EFUNC(common,isModLoaded)) then { private _objectCurators = _target getVariable [QGVAR(objectCurators), []]; if (_objectCurators isEqualTo []) exitWith {}; [QEGVAR(zeus,addObjects), [[_target], _objectCurators]] call CBA_fnc_serverEvent; }; if (_isInRemainsCollector) then { addToRemainsCollector [_target]; }; } else { // Detach first to prevent objNull in attachedObjects detach _clone; deleteVehicle _clone; }; _target