mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
59 lines
1.5 KiB
Plaintext
59 lines
1.5 KiB
Plaintext
/*
|
|
* Author: SilentSpike
|
|
* Cycle through the spectator camera vision/view/units in steps
|
|
*
|
|
* Arguments:
|
|
* 0: Camera mode steps <NUMBER>
|
|
* 1: Camera unit steps <NUMBER>
|
|
* 2: Vision mode steps <NUMBER>
|
|
*
|
|
* Return Value:
|
|
* None <NIL>
|
|
*
|
|
* Example:
|
|
* [0, -1] call ace_spectator_fnc_cycleCamera
|
|
*
|
|
* Public: No
|
|
*/
|
|
|
|
#include "script_component.hpp"
|
|
|
|
params [["_stepMode",0], ["_stepUnit",0], ["_stepVision",0]];
|
|
private ["_modes","_visions","_iMode","_iVision","_countModes","_countVisions","_newMode","_newVision","_newUnit"];
|
|
|
|
_modes = GVAR(availableModes);
|
|
_units = GVAR(unitList);
|
|
_visions = GVAR(availableVisions);
|
|
|
|
// Get current index
|
|
_iMode = (_modes find GVAR(camMode)) max 0;
|
|
_iUnit = (_units find GVAR(camUnit)) max 0;
|
|
_iVision = (_visions find GVAR(camVision)) max 0;
|
|
|
|
_countModes = count _modes;
|
|
_countUnits = count _units;
|
|
_countVisions = count _visions;
|
|
|
|
// Step index by step number (loop at ends)
|
|
if (_countModes != 0) then {
|
|
_iMode = (_iMode + _stepMode) % _countModes;
|
|
if (_iMode < 0) then { _iMode = _countModes + _iMode; };
|
|
};
|
|
|
|
if (_countUnits != 0) then {
|
|
_iUnit = (_iUnit + _stepUnit) % _countUnits;
|
|
if (_iUnit < 0) then { _iUnit = _countUnits + _iUnit; };
|
|
};
|
|
|
|
if (_countVisions != 0) then {
|
|
_iVision = (_iVision + _stepVision) % _countVisions;
|
|
if (_iVision < 0) then { _iVision = _countVisions + _iVision; };
|
|
};
|
|
|
|
// Get value at new index
|
|
_newMode = _modes select _iMode;
|
|
_newUnit = _units select _iUnit;
|
|
_newVision = _visions select _iVision;
|
|
|
|
[_newMode, _newUnit, _newVision] call FUNC(transitionCamera);
|