mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Tweak Place when Prone
This commit is contained in:
parent
bff629be9c
commit
9f078d405b
@ -61,23 +61,28 @@ GVAR(TweakedAngle) = 0;
|
|||||||
PARAMS_2(_args,_pfID);
|
PARAMS_2(_args,_pfID);
|
||||||
EXPLODE_4_PVT(_args,_unit,_magClassname,_setupObjectClass,_isAttachable);
|
EXPLODE_4_PVT(_args,_unit,_magClassname,_setupObjectClass,_isAttachable);
|
||||||
|
|
||||||
private["_angle", "_attachVehicle", "_badPosition", "_basePosASL", "_cameraAngle", "_distanceFromBase", "_expSetupVehicle", "_index", "_intersectsWith", "_lookDirVector", "_max", "_min", "_modelDir", "_modelOffset", "_modelUp", "_placeAngle", "_realDistance", "_return", "_screenPos", "_testBase", "_testDistance", "_testPos", "_testPositionIsValid", "_virtualPosASL"];
|
private["_angle", "_attachVehicle", "_badPosition", "_basePosASL", "_cameraAngle", "_distanceFromBase", "_expSetupVehicle", "_index", "_intersectsWith", "_lookDirVector", "_max", "_min", "_modelDir", "_modelOffset", "_modelUp", "_placeAngle", "_realDistance", "_return", "_screenPos", "_testBase", "_testPos", "_testPositionIsValid", "_virtualPosASL"];
|
||||||
|
|
||||||
_lookDirVector = ((positionCameraToWorld [0,0,0]) call EFUNC(common,positionToASL)) vectorFromTo ((positionCameraToWorld [0,0,10]) call EFUNC(common,positionToASL));
|
_lookDirVector = ((positionCameraToWorld [0,0,0]) call EFUNC(common,positionToASL)) vectorFromTo ((positionCameraToWorld [0,0,10]) call EFUNC(common,positionToASL));
|
||||||
_cameraAngle = (_lookDirVector select 0) atan2 (_lookDirVector select 1);
|
|
||||||
|
|
||||||
_basePosASL = (eyePos _unit);
|
_basePosASL = (eyePos _unit);
|
||||||
if (cameraView == "EXTERNAL") then {
|
if (cameraView == "EXTERNAL") then { //If external, show explosive over the right shoulder
|
||||||
_basePosASL = _basePosASL vectorAdd ((positionCameraToWorld [0.3,0,0]) vectorDiff (positionCameraToWorld [0,0,0]));
|
_basePosASL = _basePosASL vectorAdd ((positionCameraToWorld [0.3,0,0]) vectorDiff (positionCameraToWorld [0,0,0]));
|
||||||
};
|
};
|
||||||
|
if ((stance _unit) == "PRONE") then {
|
||||||
|
//If prone, lower base and increase up angle of look - Makes it much easier to attach to underside of vehicles
|
||||||
|
_basePosASL set [2, ((_basePosASL select 2) - 0.3)];
|
||||||
|
_lookDirVector = ((positionCameraToWorld [0,0,0]) call EFUNC(common,positionToASL)) vectorFromTo ((positionCameraToWorld [0,3,10]) call EFUNC(common,positionToASL));
|
||||||
|
};
|
||||||
|
_cameraAngle = (_lookDirVector select 0) atan2 (_lookDirVector select 1);
|
||||||
|
|
||||||
_testPositionIsValid = {
|
_testPositionIsValid = {
|
||||||
_testDistance = _this select 0;
|
_testBase = _basePosASL vectorAdd (_lookDirVector vectorMultiply (_this select 0));
|
||||||
_testBase = _basePosASL vectorAdd (_lookDirVector vectorMultiply _testDistance);
|
|
||||||
_return = true;
|
_return = true;
|
||||||
{
|
{
|
||||||
_testPos = _testBase vectorAdd [0.1 * (_x select 0) * (cos _cameraAngle), 0.1 * (_x select 0) * (sin _cameraAngle), 0.1 * (_x select 1)];
|
_testPos = _testBase vectorAdd [0.1 * (_x select 0) * (cos _cameraAngle), 0.1 * (_x select 0) * (sin _cameraAngle), 0.1 * (_x select 1)];
|
||||||
|
#ifdef DEBUG_MODE_FULL
|
||||||
drawLine3d [(eyePos _unit) call EFUNC(common,ASLToPosition), (_testPos) call EFUNC(common,ASLToPosition), [1,0,0,1]];
|
drawLine3d [(eyePos _unit) call EFUNC(common,ASLToPosition), (_testPos) call EFUNC(common,ASLToPosition), [1,0,0,1]];
|
||||||
|
#endif
|
||||||
if (lineIntersects [eyePos _unit, _testPos, _unit]) exitWith {_return = false;};
|
if (lineIntersects [eyePos _unit, _testPos, _unit]) exitWith {_return = false;};
|
||||||
} forEach [[0,0], [-1,-1], [1,-1], [-1,1], [1,1]];
|
} forEach [[0,0], [-1,-1], [1,-1], [-1,1], [1,1]];
|
||||||
_return
|
_return
|
||||||
|
Loading…
Reference in New Issue
Block a user