mirror of
https://github.com/acemod/ACE3.git
synced 2024-08-30 18:23:18 +00:00
Fix ship view distance using foot instead of vehicle setting, Cleanup view distance component
This commit is contained in:
parent
5165db73e8
commit
dec266a546
@ -1,6 +1,6 @@
|
||||
class CfgVehicles {
|
||||
class ACE_Module;
|
||||
class GVAR(ModuleSettings) : ACE_Module {
|
||||
class GVAR(ModuleSettings): ACE_Module {
|
||||
author = ECSTRING(common,ACETeam);
|
||||
category = "ACE";
|
||||
function = QUOTE(DFUNC(initModule));
|
||||
@ -28,4 +28,4 @@ class CfgVehicles {
|
||||
sync[] = {};
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
|
@ -1,4 +1,3 @@
|
||||
|
||||
PREP(adaptViewDistance);
|
||||
PREP(changeViewDistance);
|
||||
PREP(initModule);
|
||||
|
@ -24,6 +24,6 @@ if (!hasInterface) exitWith {};
|
||||
// Set the EH which waits for a vehicle change to automatically swap between On Foot/In Land Vehicle/In Air Vehicle
|
||||
// Also run when SettingsInitialized runs (not guaranteed)
|
||||
["playerVehicleChanged",{
|
||||
[false] call FUNC(adaptViewDistance)
|
||||
[false] call FUNC(adaptViewDistance);
|
||||
}] call EFUNC(common,addEventHandler);
|
||||
}] call EFUNC(common,addEventHandler);
|
||||
|
@ -2,7 +2,6 @@
|
||||
* Author: Winter
|
||||
* Sets the player's current view distance according to whether s/he is on foot, in a land vehicle or in an air vehicle.
|
||||
*
|
||||
*
|
||||
* Arguments:
|
||||
* 0: Show Prompt <BOOL>
|
||||
*
|
||||
@ -17,23 +16,23 @@
|
||||
|
||||
#include "script_component.hpp"
|
||||
|
||||
private["_land_vehicle","_air_vehicle"];
|
||||
|
||||
params ["_show_prompt"];
|
||||
params ["_showPrompt"];
|
||||
|
||||
if (!GVAR(enabled) || isNull ACE_player) exitWith {};
|
||||
|
||||
_land_vehicle = (vehicle ACE_player) isKindOf "LandVehicle";
|
||||
_air_vehicle = (vehicle ACE_player) isKindOf "Air";
|
||||
private _vehicle = vehicle ACE_player;
|
||||
|
||||
if (!_land_vehicle && !_air_vehicle) exitWith {
|
||||
[GVAR(viewDistanceOnFoot),_show_prompt] call FUNC(changeViewDistance);
|
||||
private _landVehicle = _vehicle isKindOf "LandVehicle" || _vehicle isKindOf "Ship_F";
|
||||
private _airVehicle = _vehicle isKindOf "Air";
|
||||
|
||||
if (!_landVehicle && !_airVehicle) exitWith {
|
||||
[GVAR(viewDistanceOnFoot), _showPrompt] call FUNC(changeViewDistance);
|
||||
};
|
||||
|
||||
if (_land_vehicle) exitWith {
|
||||
[GVAR(viewDistanceLandVehicle),_show_prompt] call FUNC(changeViewDistance);
|
||||
if (_landVehicle) exitWith {
|
||||
[GVAR(viewDistanceLandVehicle), _showPrompt] call FUNC(changeViewDistance);
|
||||
};
|
||||
|
||||
if (_air_vehicle) exitWith {
|
||||
[GVAR(viewDistanceAirVehicle),_show_prompt] call FUNC(changeViewDistance);
|
||||
if (_airVehicle) exitWith {
|
||||
[GVAR(viewDistanceAirVehicle), _showPrompt] call FUNC(changeViewDistance);
|
||||
};
|
||||
|
@ -16,20 +16,18 @@
|
||||
*/
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_text", "_new_view_distance", "_view_distance_limit", "_object_view_distance_coeff"];
|
||||
params ["_indexRequested", "_showPrompt"];
|
||||
|
||||
params ["_index_requested", "_show_prompt"];
|
||||
private _newViewDistance = [_indexRequested] call FUNC(returnValue); // changes the setting index into an actual view distance value
|
||||
private _objectViewDistanceCoeff = [GVAR(objectViewDistanceCoeff)] call FUNC(returnObjectCoeff); // changes the setting index into a coefficient.
|
||||
private _viewDistanceLimit = GVAR(limitViewDistance); // Grab the limit
|
||||
|
||||
_new_view_distance = [_index_requested] call FUNC(returnValue); // changes the setting index into an actual view distance value
|
||||
_object_view_distance_coeff = [GVAR(objectViewDistanceCoeff)] call FUNC(returnObjectCoeff); // changes the setting index into a coefficient.
|
||||
_view_distance_limit = GVAR(limitViewDistance); // Grab the limit
|
||||
TRACE_3("Limit",_newViewDistance,_viewDistanceLimit,_showPrompt);
|
||||
setViewDistance (_newViewDistance min _viewDistanceLimit);
|
||||
|
||||
TRACE_2("Limit",_new_view_distance,_view_distance_limit);
|
||||
setViewDistance (_new_view_distance min _view_distance_limit);
|
||||
|
||||
if (typeName _object_view_distance_coeff == "SCALAR") then {
|
||||
if (_object_view_distance_coeff > 0) then {
|
||||
setObjectViewDistance (_object_view_distance_coeff * viewDistance);
|
||||
if (_objectViewDistanceCoeff isEqualType 0) then {
|
||||
if (_objectViewDistanceCoeff > 0) then {
|
||||
setObjectViewDistance (_objectViewDistanceCoeff * viewDistance);
|
||||
} else {
|
||||
// Restore correct view distance when changing from FoV Based to Off
|
||||
// Restoring directly inside PFH's self-exit resulted in the need of selecting another option to take effect
|
||||
@ -42,18 +40,18 @@ if (typeName _object_view_distance_coeff == "SCALAR") then {
|
||||
};
|
||||
};
|
||||
|
||||
if (_show_prompt) then {
|
||||
if (_showPrompt) then {
|
||||
if (GVAR(objectViewDistanceCoeff) > 0) then {
|
||||
private _text = "";
|
||||
// FoV Based or %
|
||||
if (GVAR(objectViewDistanceCoeff) == 6) then {
|
||||
_text = format ["<t align='center'>%1 %2<br/>Min. %3<br/>Max. %4</t>", localize LSTRING(objectinfotext), localize LSTRING(object_fovBased), GVAR(fovBasedPFHminimalViewDistance), viewDistance];
|
||||
} else {
|
||||
_text = if (_new_view_distance <= _view_distance_limit) then {
|
||||
format ["<t align='center'>%1 %2m", localize LSTRING(infotext), viewDistance];
|
||||
} else {
|
||||
format ["<t align='center'>%1 %2m", localize LSTRING(invalid), viewDistance];
|
||||
};
|
||||
_text = _text + format ["<br/><t align='center'>%1 %2%3</t>", localize LSTRING(objectinfotext), _object_view_distance_coeff * 100, "%"];
|
||||
_text = [
|
||||
format ["<t align='center'>%1 %2m", localize LSTRING(invalid), viewDistance],
|
||||
format ["<t align='center'>%1 %2m", localize LSTRING(infotext), viewDistance]
|
||||
] select (_newViewDistance <= _viewDistanceLimit);
|
||||
_text = _text + format ["<br/><t align='center'>%1 %2%3</t>", localize LSTRING(objectinfotext), _objectViewDistanceCoeff * 100, "%"];
|
||||
};
|
||||
[parseText _text, 2] call EFUNC(common,displayTextStructured);
|
||||
};
|
||||
|
@ -16,11 +16,9 @@
|
||||
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_return"];
|
||||
|
||||
params ["_index"];
|
||||
|
||||
_return = switch (_index) do {
|
||||
switch (_index) do {
|
||||
case 0: {0.00}; // Off
|
||||
case 1: {0.20}; // Very Low
|
||||
case 2: {0.40}; // Low
|
||||
@ -30,5 +28,3 @@ _return = switch (_index) do {
|
||||
case 6: {"fov"}; // FoV Based
|
||||
default {0.50}; // something broke if this returns
|
||||
};
|
||||
|
||||
_return;
|
||||
|
@ -16,28 +16,23 @@
|
||||
|
||||
#include "script_component.hpp"
|
||||
|
||||
private ["_return"];
|
||||
|
||||
params ["_index"];
|
||||
|
||||
_return = switch (_index) do {
|
||||
case 0: {viewDistance}; // Video Settings option
|
||||
case 1: {500};
|
||||
case 2: {1000};
|
||||
case 3: {1500};
|
||||
case 4: {2000};
|
||||
case 5: {2500};
|
||||
case 6: {3000};
|
||||
case 7: {3500};
|
||||
case 8: {4000};
|
||||
case 9: {5000};
|
||||
case 10: {6000};
|
||||
case 11: {7000};
|
||||
case 12: {8000};
|
||||
case 13: {9000};
|
||||
case 14: {10000};
|
||||
default {1000};
|
||||
switch (_index) do {
|
||||
case 0: {viewDistance}; // Video Settings option
|
||||
case 1: {500};
|
||||
case 2: {1000};
|
||||
case 3: {1500};
|
||||
case 4: {2000};
|
||||
case 5: {2500};
|
||||
case 6: {3000};
|
||||
case 7: {3500};
|
||||
case 8: {4000};
|
||||
case 9: {5000};
|
||||
case 10: {6000};
|
||||
case 11: {7000};
|
||||
case 12: {8000};
|
||||
case 13: {9000};
|
||||
case 14: {10000};
|
||||
default {1000};
|
||||
};
|
||||
|
||||
TRACE_1("VD Index Return",_return);
|
||||
_return
|
||||
|
@ -17,10 +17,6 @@
|
||||
|
||||
#include "script_component.hpp"
|
||||
|
||||
#define VD_ZOOM_NORMAL 1.00041
|
||||
#define VD_ZOOM_DIVISION 35
|
||||
#define VD_ZOOM_DIVISION_AIR 10
|
||||
|
||||
params ["", "_idPFH"];
|
||||
|
||||
// Remove PFH and set Object View Distance back to what it was before
|
||||
@ -29,25 +25,20 @@ if (GVAR(objectViewDistanceCoeff) < 6) exitWith {
|
||||
GVAR(fovBasedPFHminimalViewDistance) = nil;
|
||||
};
|
||||
|
||||
private ["_zoom"];
|
||||
_zoom = (call CBA_fnc_getFov) select 1;
|
||||
private _zoom = (call CBA_fnc_getFov) select 1;
|
||||
|
||||
// Air
|
||||
if ((vehicle ACE_player) isKindOf "Air") exitWith {
|
||||
if (_zoom > VD_ZOOM_NORMAL) then {
|
||||
// Dynamically set Object View Distance based on player's Zoom Level and View Distance
|
||||
setObjectViewDistance ((_zoom / VD_ZOOM_DIVISION_AIR * (viewDistance - GVAR(fovBasedPFHminimalViewDistance))) + GVAR(fovBasedPFHminimalViewDistance));
|
||||
} else {
|
||||
setObjectViewDistance (GVAR(fovBasedPFHminimalViewDistance) + viewDistance / 10);
|
||||
};
|
||||
TRACE_2("FoV Based",getObjectViewDistance select 0,_zoom);
|
||||
};
|
||||
|
||||
// Land
|
||||
if (_zoom > VD_ZOOM_NORMAL) then {
|
||||
// Dynamically set Object View Distance based on player's Zoom Level and View Distance
|
||||
setObjectViewDistance ((_zoom / VD_ZOOM_DIVISION * (viewDistance - GVAR(fovBasedPFHminimalViewDistance))) + GVAR(fovBasedPFHminimalViewDistance));
|
||||
if ((vehicle ACE_player) isKindOf "Air") then {
|
||||
setObjectViewDistance ((_zoom / VD_ZOOM_DIVISION_AIR * (viewDistance - GVAR(fovBasedPFHminimalViewDistance))) + GVAR(fovBasedPFHminimalViewDistance));
|
||||
} else {
|
||||
setObjectViewDistance ((_zoom / VD_ZOOM_DIVISION * (viewDistance - GVAR(fovBasedPFHminimalViewDistance))) + GVAR(fovBasedPFHminimalViewDistance));
|
||||
};
|
||||
} else {
|
||||
setObjectViewDistance GVAR(fovBasedPFHminimalViewDistance);
|
||||
if ((vehicle ACE_player) isKindOf "Air") then {
|
||||
setObjectViewDistance (GVAR(fovBasedPFHminimalViewDistance) + viewDistance / 10);
|
||||
} else {
|
||||
setObjectViewDistance GVAR(fovBasedPFHminimalViewDistance);
|
||||
};
|
||||
};
|
||||
TRACE_2("FoV Based",getObjectViewDistance select 0,_zoom);
|
||||
|
@ -15,3 +15,8 @@
|
||||
#endif
|
||||
|
||||
#include "\z\ace\addons\main\script_macros.hpp"
|
||||
|
||||
|
||||
#define VD_ZOOM_NORMAL 1.00041
|
||||
#define VD_ZOOM_DIVISION 35
|
||||
#define VD_ZOOM_DIVISION_AIR 10
|
||||
|
Loading…
Reference in New Issue
Block a user