From 7b28214c806b463dbd19f36a4e065922aed3d6f5 Mon Sep 17 00:00:00 2001 From: SilentSpike Date: Sat, 18 Jul 2015 17:06:13 +0100 Subject: [PATCH] More reliable freecam PFH termination --- addons/spectator/functions/fnc_handleCamera.sqf | 2 +- addons/spectator/functions/fnc_handleInterface.sqf | 2 ++ addons/spectator/functions/fnc_updateCamera.sqf | 3 ++- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/addons/spectator/functions/fnc_handleCamera.sqf b/addons/spectator/functions/fnc_handleCamera.sqf index 1362ad2d80..0c79191b63 100644 --- a/addons/spectator/functions/fnc_handleCamera.sqf +++ b/addons/spectator/functions/fnc_handleCamera.sqf @@ -17,7 +17,7 @@ #include "script_component.hpp" // Kill PFH when not in free cam (or display is closed) -if ((GVAR(camMode) != 0) || isNull (GETUVAR(GVAR(display),displayNull))) exitWith { [_this select 1] call CBA_fnc_removePerFrameHandler; }; +if (isNil QGVAR(camHandler)) exitWith { [_this select 1] call CBA_fnc_removePerFrameHandler; }; _oldPos = getPosASL GVAR(camera); _mX = 0; diff --git a/addons/spectator/functions/fnc_handleInterface.sqf b/addons/spectator/functions/fnc_handleInterface.sqf index 088972a066..9a34cd180b 100644 --- a/addons/spectator/functions/fnc_handleInterface.sqf +++ b/addons/spectator/functions/fnc_handleInterface.sqf @@ -135,6 +135,8 @@ switch (toLower _mode) do { with uiNamespace do { GVAR(display) = nil; }; + + GVAR(camHandler) = nil; }; // Mouse events case "onmousebuttondown": { diff --git a/addons/spectator/functions/fnc_updateCamera.sqf b/addons/spectator/functions/fnc_updateCamera.sqf index 440b7103ab..77fb53a6f0 100644 --- a/addons/spectator/functions/fnc_updateCamera.sqf +++ b/addons/spectator/functions/fnc_updateCamera.sqf @@ -23,7 +23,7 @@ if (GVAR(camMode) == 0) then { // Free cameraEffectEnableHUD false; // Handle camera movement - [FUNC(handleCamera), 0] call CBA_fnc_addPerFrameHandler; + if (isNil QGVAR(camHandler)) then { GVAR(camHandler) = [FUNC(handleCamera), 0] call CBA_fnc_addPerFrameHandler; }; } else { // When null unit is given choose random if (isNull _newUnit) then { @@ -45,5 +45,6 @@ if (GVAR(camMode) == 0) then { // Free // Terminate camera view GVAR(camera) cameraEffect ["terminate", "back"]; + GVAR(camHandler) = nil; cameraEffectEnableHUD true; };