1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- _object = _this select 0;
- _rotations = _this select 1;
- _aroundX = _rotations select 0;
- _aroundY = _rotations select 1;
- _aroundZ = _rotations select 2;
-
- _dirX = 0;
- _dirY = 1;
- _dirZ = 0;
- _upX = 0;
- _upY = 0;
- _upZ = 1;
-
- if (_aroundX != 0) then {
- _dirY = cos _aroundX;
- _dirZ = sin _aroundX;
- _upY = -sin _aroundX;
- _upZ = cos _aroundX;
- };
-
- if (_aroundY != 0) then {
- _dirX = _dirZ * sin _aroundY;
- _dirZ = _dirZ * cos _aroundY;
- _upX = _upZ * sin _aroundY;
- _upZ = _upZ * cos _aroundY;
- };
-
- if (_aroundZ != 0) then {
- _dirXTemp = _dirX;
- _dirX = (_dirY * -sin _aroundZ) + (_dirXTemp* cos _aroundZ);
- _dirY = (_dirY * cos _aroundZ) + (_dirXTemp * sin _aroundZ);
- _upXTemp = _upX;
- _upX = (_upY * -sin _aroundZ) + (_upXTemp * cos _aroundZ);
- _upY = (_upY * cos _aroundZ) + (_upXTemp * sin _aroundZ);
- };
-
- _dirX = [_dirX,3] call BIS_fnc_cutDecimals;
- _dirY = [_dirY,3] call BIS_fnc_cutDecimals;
- _dirZ = [_dirZ,3] call BIS_fnc_cutDecimals;
- _upX = [_upX,3] call BIS_fnc_cutDecimals;
- _upY = [_upY,3] call BIS_fnc_cutDecimals;
- _upZ = [_upZ,3] call BIS_fnc_cutDecimals;
-
- _dir = [_dirX,_dirY,_dirZ];
- _up = [_upX,_upY,_upZ];
-
- _object setVectorDirAndUp [_dir,_up];
|