diff --git a/addons/viewdistance/XEH_postInit.sqf b/addons/viewdistance/XEH_postInit.sqf index d3924666c2..6c4f41d374 100644 --- a/addons/viewdistance/XEH_postInit.sqf +++ b/addons/viewdistance/XEH_postInit.sqf @@ -16,5 +16,12 @@ if (viewDistance > GVAR(limitViewDistance)) then { }; },true] call ace_common_fnc_addEventHandler; +// Set the EH which waits for the Object View Distance coefficient to be changed, so that the effect is show immediately +["SettingChanged",{ + if (_this select 0 == QGVAR(objectViewDistanceCoeff)) then { + [true] call FUNC(adaptViewDistance); + }; +},true] call ace_common_fnc_addEventHandler; + // Set the EH which waits for a vehicle change to automatically swap to On Foot/In Land Vehicle/In Air Vehicle ["playerVehicleChanged",{[false] call FUNC(adaptViewDistance)},true] call ace_common_fnc_addEventHandler; \ No newline at end of file diff --git a/addons/viewdistance/XEH_preInit.sqf b/addons/viewdistance/XEH_preInit.sqf index a55e0a3075..a68416cada 100644 --- a/addons/viewdistance/XEH_preInit.sqf +++ b/addons/viewdistance/XEH_preInit.sqf @@ -4,6 +4,7 @@ ADDON = false; PREP(initModule); PREP(returnValue); +PREP(returnObjectCoeff); PREP(changeViewDistance); PREP(adaptViewDistance); diff --git a/addons/viewdistance/functions/fnc_adaptViewDistance.sqf b/addons/viewdistance/functions/fnc_adaptViewDistance.sqf index c81b522747..5012b40c93 100644 --- a/addons/viewdistance/functions/fnc_adaptViewDistance.sqf +++ b/addons/viewdistance/functions/fnc_adaptViewDistance.sqf @@ -12,7 +12,7 @@ * Example: * [] call ace_viewdistance_fnc_adaptViewDistance; * - * Public: Yes + * Public: No */ #include "script_component.hpp" diff --git a/addons/viewdistance/functions/fnc_changeViewDistance.sqf b/addons/viewdistance/functions/fnc_changeViewDistance.sqf index bf5f610c0d..61b568bc2a 100644 --- a/addons/viewdistance/functions/fnc_changeViewDistance.sqf +++ b/addons/viewdistance/functions/fnc_changeViewDistance.sqf @@ -13,30 +13,36 @@ * Example: * [] call ace_viewdistance_fnc_changeViewDistance; * - * Public: Yes + * Public: No */ #include "script_component.hpp" -private ["_text","_new_view_distance","_view_distance_limit"]; -PARAMS_2(_index_requested,_prompt); +private ["_text","_new_view_distance","_view_distance_limit","_object_view_distance_coeff"]; -_new_view_distance = [_index_requested] call FUNC(returnValue); // change the index into an actual view distance value +PARAMS_2(_index_requested,_show_prompt); + +_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 if (_new_view_distance <= _view_distance_limit) then { - if (_prompt) then { - _text = composeText ["View distance successfully changed to: ",str(_new_view_distance)]; - [_text,1] call EFUNC(common,displayTextStructured); + if (_show_prompt) then { + _text = parseText format ["View Distance: %1
Object View Distance Coefficient: %2
",str(_new_view_distance),str(_object_view_distance_coeff)]; + [_text,2] call EFUNC(common,displayTextStructured); }; setViewDistance _new_view_distance; - setObjectViewDistance (0.8 * _new_view_distance); // maybe make this 0.8 a constant? + if (_object_view_distance_coeff > 0) then { + setObjectViewDistance (_object_view_distance_coeff * _new_view_distance); + }; } else { - if (_prompt) then { - _text = composeText ["That option is invalid! The limit is: ",str(_view_distance_limit)]; - [_text,1] call EFUNC(common,displayTextStructured); - setViewDistance _view_distance_limit; - setObjectViewDistance (0.8 * _view_distance_limit); // maybe make this 0.8 a constant? + if (_show_prompt) then { + _text = parseText format ["That option is invalid! The limit is: %1
Object View Distance Coefficient: %2
",str(_view_distance_limit),str(_object_view_distance_coeff)]; + [_text,2] call EFUNC(common,displayTextStructured); + }; + setViewDistance _view_distance_limit; + if (_object_view_distance_coeff > 0) then { + setObjectViewDistance (_object_view_distance_coeff * _view_distance_limit); }; }; \ No newline at end of file diff --git a/addons/viewdistance/functions/fnc_returnObjectCoeff.sqf b/addons/viewdistance/functions/fnc_returnObjectCoeff.sqf index 476478a448..145b8ae9e6 100644 --- a/addons/viewdistance/functions/fnc_returnObjectCoeff.sqf +++ b/addons/viewdistance/functions/fnc_returnObjectCoeff.sqf @@ -22,13 +22,13 @@ PARAMS_1(_index); private ["_return"]; _return = switch (_index) do { - case 0: {0.00}; // Off - case 1: {0.20}; // Very Low - case 2: {0.40}; // Low - case 3: {0.60}; // Medium - case 4: {0.80}; // High - case 5: {1.00}; // Very High - default {0.50}; // something broke if this returns + case 0: {0.00}; // Off + case 1: {0.20}; // Very Low + case 2: {0.40}; // Low + case 3: {0.60}; // Medium + case 4: {0.80}; // High + case 5: {1.00}; // Very High + default {0.50}; // something broke if this returns }; _return; \ No newline at end of file diff --git a/addons/viewdistance/functions/fnc_returnValue.sqf b/addons/viewdistance/functions/fnc_returnValue.sqf index 80e82feee2..9d4725c72e 100644 --- a/addons/viewdistance/functions/fnc_returnValue.sqf +++ b/addons/viewdistance/functions/fnc_returnValue.sqf @@ -12,7 +12,7 @@ * Example: * [2] call ace_viewdistance_fnc_returnViewDistanceValue; * - * Public: Yes + * Public: No */ #include "script_component.hpp"