From 8948e8ac772edd011b34d877ca5aeb4a6950663f Mon Sep 17 00:00:00 2001 From: Brandon Danyluk Date: Mon, 12 Apr 2021 17:03:21 -0600 Subject: [PATCH] add camera tool to observe projectile in flight --- addons/missileguidance/XEH_post_init.sqf | 4 +++ .../missileguidance/dev/projectileCamera.sqf | 34 +++++++++++++++++++ .../missileguidance/functions/fnc_onFired.sqf | 4 +++ addons/missileguidance/script_component.hpp | 1 + 4 files changed, 43 insertions(+) create mode 100644 addons/missileguidance/dev/projectileCamera.sqf diff --git a/addons/missileguidance/XEH_post_init.sqf b/addons/missileguidance/XEH_post_init.sqf index cc09b1f0ac..38a4df2a05 100644 --- a/addons/missileguidance/XEH_post_init.sqf +++ b/addons/missileguidance/XEH_post_init.sqf @@ -11,3 +11,7 @@ false }, [15, [false, true, false]], false] call CBA_fnc_addKeybind; //Ctrl+Tab Key + +#ifdef ENABLE_PROJECTILE_CAMERA +GVAR(dev_fnc_projectileCamera) = compile preprocessFileLineNumbers QPATHTOF(dev\projectileCamera.sqf); +#endif diff --git a/addons/missileguidance/dev/projectileCamera.sqf b/addons/missileguidance/dev/projectileCamera.sqf new file mode 100644 index 0000000000..8f70fa808a --- /dev/null +++ b/addons/missileguidance/dev/projectileCamera.sqf @@ -0,0 +1,34 @@ +#include "\z\ace\addons\missileguidance\script_component.hpp" +// tracks a projectile until it explodes +params ["_projectile"]; + +private _camera = "camera" camCreate getPosATL _projectile; +_camera camPrepareFOV 0.7; +_camera cameraEffect ["internal", "back"]; + +_camera camCommitPrepared 0; + +[{ + params ["_args", "_pfh"]; + _args params ["_projectile", "_camera", "_projectilePos"]; + if !(alive _projectile) exitWith { + [{ + params ["_camera"]; + + _camera cameraEffect ["terminate", "back"]; + _camera camCommitPrepared 0; + camDestroy _camera; + }, [_camera], 1.5] call CBA_fnc_waitAndExecute; + + _camera camPrepareTarget _projectilePos; + _camera camCommitPrepared 0; + + [_pfh] call CBA_fnc_removePerFrameHandler; + }; + + _camera camPrepareTarget _projectile; + _camera camPrepareRelPos [0, -5, 1]; + _camera camCommitPrepared 0; + + _args set [2, getPosATL _projectile]; +}, 0, [_projectile, _camera, getPosATL _projectile]] call CBA_fnc_addPerFrameHandler; \ No newline at end of file diff --git a/addons/missileguidance/functions/fnc_onFired.sqf b/addons/missileguidance/functions/fnc_onFired.sqf index d2d1095151..f41a089cff 100644 --- a/addons/missileguidance/functions/fnc_onFired.sqf +++ b/addons/missileguidance/functions/fnc_onFired.sqf @@ -175,6 +175,10 @@ if (_onFiredFunc != "") then { [LINKFUNC(guidancePFH),0, _args ] call CBA_fnc_addPerFrameHandler; +#ifdef ENABLE_PROJECTILE_CAMERA +[_projectile] call GVAR(dev_fnc_projectileCamera); +#endif + /* Clears locking settings (vehicle _shooter) setVariable [QGVAR(target), nil]; diff --git a/addons/missileguidance/script_component.hpp b/addons/missileguidance/script_component.hpp index 92aacf9011..a54c93086b 100644 --- a/addons/missileguidance/script_component.hpp +++ b/addons/missileguidance/script_component.hpp @@ -3,6 +3,7 @@ #include "\z\ace\addons\main\script_mod.hpp" #define DRAW_GUIDANCE_INFO + #define ENABLE_PROJECTILE_CAMERA #define DEBUG_MODE_FULL #define DISABLE_COMPILE_CACHE // #define ENABLE_PERFORMANCE_COUNTERS