KP-Liberation/Missionframework/GREUH/Scripts/GREUH_view_distance_managem...

58 lines
1.9 KiB
Plaintext

private _olddistance_inf = -1;
private _olddistance_veh = -1;
private _olddistance_obj = -1;
private _olddesiredvolume = -1;
private _was_vehicle = false;
private _min_view_distance = 300;
private _desired_inf = -1;
private _desired_veh = -1;
private _desired_obj = -1;
waitUntil { !isNil "GREUH_view_distance_factor" };
waitUntil { !isNil "GREUH_force_adjust_view_distance" };
while { true } do {
waitUntil { sleep 0.3;
(round _olddistance_inf != round desiredviewdistance_inf)
|| (round _olddistance_veh != round desiredviewdistance_veh)
|| (round _olddistance_obj != round desiredviewdistance_obj)
|| ( (( vehicle player == player ) && _was_vehicle)
|| (( vehicle player != player ) && !_was_vehicle) )
|| !(alive player)
|| ( round _olddesiredvolume != round desired_vehvolume)
|| GREUH_force_adjust_view_distance };
waitUntil { alive player };
GREUH_force_adjust_view_distance = false;
_olddistance_inf = round desiredviewdistance_inf;
_olddistance_veh = round desiredviewdistance_veh;
_olddistance_obj = round desiredviewdistance_obj;
_olddesiredvolume = desired_vehvolume;
_was_vehicle = ( vehicle player != player );
if ( _was_vehicle ) then {
_desired_veh = (round desiredviewdistance_veh) * GREUH_view_distance_factor;
if ( _desired_veh < _min_view_distance ) then {
_desired_veh = _min_view_distance;
};
setViewDistance _desired_veh;
1 fadeSound ( desired_vehvolume / 100.0 );
} else {
_desired_inf = (round desiredviewdistance_inf) * GREUH_view_distance_factor;
if ( _desired_inf < _min_view_distance ) then {
_desired_inf = _min_view_distance;
};
setViewDistance _desired_inf;
1 fadeSound 1;
};
_desired_obj = (((desiredviewdistance_obj / 100.0) * desiredviewdistance_inf) * GREUH_view_distance_factor);
if ( _desired_obj < _min_view_distance) then {
_desired_obj = _min_view_distance;
};
setObjectViewDistance _desired_obj;
};