Files
KPLibSumava/kp_liberation.brf_sumava/GREUH/Scripts/GREUH_dynamic_view_distance.sqf
Samuele Lorefice 9e023649ac initial files
2025-05-24 16:17:33 +02:00

44 lines
1.5 KiB
Plaintext

GREUH_view_distance_factor = 1.0;
GREUH_force_adjust_view_distance = false;
private _min_view_distance_factor = 0.25;
private _base_increment = 0.075;
private _corrected_increment = -1;
private _consecutive_before_adjust = 3;
private _consecutive_fps_too_low = 0;
private _consecutive_fps_too_fast = 0;
private _smoothing_margin = 0.1;
while { true } do {
_corrected_increment = _base_increment * GREUH_view_distance_factor;
if ( (diag_fps * ( 1 - _smoothing_margin )) < desired_fps ) then {
_consecutive_fps_too_low = _consecutive_fps_too_low + 1;
_consecutive_fps_too_fast = 0;
};
if ( (diag_fps * ( 1 + _smoothing_margin )) > desired_fps ) then {
_consecutive_fps_too_fast = _consecutive_fps_too_fast + 1;
_consecutive_fps_too_low = 0;
};
if ( GREUH_view_distance_factor > _min_view_distance_factor && _consecutive_fps_too_low >= _consecutive_before_adjust ) then {
_consecutive_fps_too_low = 0;
GREUH_view_distance_factor = GREUH_view_distance_factor - _corrected_increment;
if ( GREUH_view_distance_factor < _min_view_distance_factor ) then {
GREUH_view_distance_factor = _min_view_distance_factor;
};
GREUH_force_adjust_view_distance = true;
};
if ( GREUH_view_distance_factor < 1.0 && _consecutive_fps_too_fast >= _consecutive_before_adjust ) then {
_consecutive_fps_too_fast = 0;
GREUH_view_distance_factor = GREUH_view_distance_factor + _corrected_increment;
if ( GREUH_view_distance_factor > 1.0 ) then {
GREUH_view_distance_factor = 1.0;
};
GREUH_force_adjust_view_distance = true;
};
sleep 0.75;
};