diff --git a/addons/editor/XEH_PREP.hpp b/addons/editor/XEH_PREP.hpp index d0e7c5ae5..cd3108f55 100644 --- a/addons/editor/XEH_PREP.hpp +++ b/addons/editor/XEH_PREP.hpp @@ -2,7 +2,6 @@ PREP(addGroupIcons); PREP(addModIcons); PREP(declutterEmptyTree); PREP(fixSideButtons); -PREP(handleCuratorMoveCamTo); PREP(handleKeyDown); PREP(handleLoad); PREP(handleModeButtons); @@ -14,3 +13,4 @@ PREP(handleSearchKeyUp); PREP(handleSideButtons); PREP(handleTreeButtons); PREP(handleUnload); +PREP(moveCamToSelection); diff --git a/addons/editor/functions/fnc_handleCuratorMoveCamTo.sqf b/addons/editor/functions/fnc_handleCuratorMoveCamTo.sqf deleted file mode 100644 index 4640361a7..000000000 --- a/addons/editor/functions/fnc_handleCuratorMoveCamTo.sqf +++ /dev/null @@ -1,41 +0,0 @@ -#include "script_component.hpp" -/* - * Author: Ampersand - * Handles the behaviour of the curatorMoveCamTo user action. - * - * Arguments: - * None - * - * Return Value: - * Key handled - * - * Example: - * [] call zen_editor_fnc_handleCuratorMoveCamTo - * - * Public: No - */ - -private _selectedObjects = SELECTED_OBJECTS; -if (count _selectedObjects == 0) exitWith {false}; - -private _selectedObject = _selectedObjects select 0; -private _objectPos = getPosWorld _selectedObject; -private _objectDir = getDir _selectedObject; -((0 boundingBoxReal _selectedObject) select 1) params ["", "_y", "_z"]; -private _minDistance = 20; - -// Toggle between far and close views on subsequent activations with the same object selected -if (isNil QGVAR(curatorMovedCamTo) || {_selectedObject != GVAR(curatorMovedCamTo)}) then { - GVAR(curatorMovedCamTo) = _selectedObject; -} else { - _minDistance = 0.5; - GVAR(curatorMovedCamTo) = nil; -}; - -private _curatorPos = _objectPos getPos [_minDistance max _y, _objectDir + 180]; -_curatorPos set [2, (_objectPos select 2) + (_minDistance max _z)]; -curatorCamera setPosASL _curatorPos; -curatorCamera setDir _objectDir; -curatorCamera setVectorUp (vectorDir curatorCamera vectorAdd [0, 0, 1 + 1 / _minDistance]); - -true diff --git a/addons/editor/functions/fnc_moveCamToSelection.sqf b/addons/editor/functions/fnc_moveCamToSelection.sqf new file mode 100644 index 000000000..f6b0becd6 --- /dev/null +++ b/addons/editor/functions/fnc_moveCamToSelection.sqf @@ -0,0 +1,53 @@ +#include "script_component.hpp" +/* + * Author: Ampersand + * Moves the curator camera to the selected object. + * + * Arguments: + * None + * + * Return Value: + * None + * + * Example: + * [] call zen_editor_fnc_moveCamToSelection + * + * Public: No + */ + +#define FOCUS_ALT 1 +#define FOCUS_CQB 2 +#define FOCUS_ALTCQB 3 + +private _selectedObjects = SELECTED_OBJECTS; +if (count _selectedObjects == 0) exitWith {}; + +private _selectedObject = _selectedObjects select 0; +private _objectPos = getPosWorld _selectedObject; +private _objectDir = getDir _selectedObject; +((0 boundingBoxReal _selectedObject) select 1) params ["", "_y", "_z"]; + +private _minDistance = switch (GVAR(moveCamToSelection)) do { + case (FOCUS_ALT): { + 20 + }; + case (FOCUS_CQB): { + 0.5 + }; + case (FOCUS_ALTCQB): { + // Toggle between far and close views on subsequent activations with the same object selected + if (isNil QGVAR(curatorMovedCamTo) || {_selectedObject != GVAR(curatorMovedCamTo)}) then { + GVAR(curatorMovedCamTo) = _selectedObject; + 20 + } else { + GVAR(curatorMovedCamTo) = nil; + 0.5 + } + }; +}; + +private _curatorPos = _objectPos getPos [_minDistance max _y, _objectDir + 180]; +_curatorPos set [2, (_objectPos select 2) + (_minDistance max _z)]; +curatorCamera setPosASL _curatorPos; +curatorCamera setDir _objectDir; +curatorCamera setVectorUp (vectorDir curatorCamera vectorAdd [0, 0, 1 + 1 / _minDistance]);