mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
51 lines
1.5 KiB
Plaintext
51 lines
1.5 KiB
Plaintext
/*
|
|
* Author: BaerMitUmlaut
|
|
* Local PerFrameHandler during fast roping.
|
|
*
|
|
* Arguments:
|
|
* 0: PFH arguments <ARRAY>
|
|
* 1: PFH handle <OBJECT>
|
|
*
|
|
* Return Value:
|
|
* None
|
|
*
|
|
* Example:
|
|
* [[_unit, _vehicle, _rope, _ropeIndex], 0] call ace_fastroping_fnc_fastRopeLocalPFH
|
|
*
|
|
* Public: No
|
|
*/
|
|
|
|
#include "script_component.hpp"
|
|
params ["_arguments", "_pfhHandle"];
|
|
_arguments params ["_unit", "_vehicle", "_rope", "_ropeIndex"];
|
|
_rope params ["_attachmentPoint", "_ropeTop", "_ropeBottom", "_dummy", "_hook", "_occupied"];
|
|
private ["_vectorUp", "_vectorDir", "_origin"];
|
|
|
|
//Wait until the unit is actually outside of the helicopter
|
|
if (vehicle _unit != _unit) exitWith {};
|
|
|
|
//Start fast roping
|
|
if (animationState _unit != "ACE_slidingLoop") exitWith {
|
|
_unit disableCollisionWith _dummy;
|
|
_unit attachTo [_dummy, [0, 0, -0.5]];
|
|
[_unit, "ACE_slidingLoop", 2] call EFUNC(common,doAnimation);
|
|
};
|
|
|
|
//End of fast rope
|
|
if (isNull attachedTo _unit) exitWith {
|
|
if ((getPos _unit) select 2 > 1) then {
|
|
[_unit, "ACE_freeFallStart", 2] call EFUNC(common,doAnimation);
|
|
[_unit, "ACE_freeFallLoop", 1] call EFUNC(common,doAnimation);
|
|
[{
|
|
isTouchingGround _this
|
|
}, {
|
|
[_this, "", 2] call EFUNC(common,doAnimation);
|
|
}, _unit] call EFUNC(common,waitUntilAndExecute);
|
|
} else {
|
|
[_unit, "", 2] call EFUNC(common,doAnimation);
|
|
};
|
|
_unit setVectorUp [0, 0, 1];
|
|
|
|
[_pfhHandle] call CBA_fnc_removePerFrameHandler;
|
|
};
|