diff --git a/addons/interaction/XEH_preInit.sqf b/addons/interaction/XEH_preInit.sqf index ec73b62b1b9..30b980d899c 100644 --- a/addons/interaction/XEH_preInit.sqf +++ b/addons/interaction/XEH_preInit.sqf @@ -16,7 +16,7 @@ DFUNC(repair_Statement) = { // moved from config because of build problems }; if (hasInterface) then { - GVAR(initializedAnimClasses) = []; + GVAR(initializedAnimClasses) = createHashMap; GVAR(replaceTerrainModels) = createHashMapFromArray call (uiNamespace getVariable QGVAR(cacheReplaceTerrainModels)); }; diff --git a/addons/interaction/functions/fnc_initAnimActions.sqf b/addons/interaction/functions/fnc_initAnimActions.sqf index e47f80008b8..ed2d5eecd49 100644 --- a/addons/interaction/functions/fnc_initAnimActions.sqf +++ b/addons/interaction/functions/fnc_initAnimActions.sqf @@ -21,7 +21,7 @@ private _class = typeOf _object; if (_class in GVAR(initializedAnimClasses)) exitWith {}; -GVAR(initializedAnimClasses) pushBack _class; +GVAR(initializedAnimClasses) set [_class, nil]; private _statement = { params ["_target", "_player", "_params"]; diff --git a/addons/viewports/XEH_preInit.sqf b/addons/viewports/XEH_preInit.sqf index ec82c949b18..d1ebf7fa8e7 100644 --- a/addons/viewports/XEH_preInit.sqf +++ b/addons/viewports/XEH_preInit.sqf @@ -8,6 +8,8 @@ PREP_RECOMPILE_END; #include "initSettings.inc.sqf" +GVAR(viewports) = createHashMap; + #ifdef POINT_CONFIG_DEBUG call compileScript [QPATHTOF(dev\debugPoints.sqf)]; #endif diff --git a/addons/viewports/dev/debugPoints.sqf b/addons/viewports/dev/debugPoints.sqf index 2ffc81f512a..fbe1faa8752 100644 --- a/addons/viewports/dev/debugPoints.sqf +++ b/addons/viewports/dev/debugPoints.sqf @@ -41,7 +41,7 @@ if ((supportInfo "u:diag_mergeConfigFile") isNotEqualTo []) then { call compile 'diag_mergeConfigFile ["P:\z\ace\addons\viewports\config.cpp"]'; }; - { _x setVariable [QGVAR(viewports), nil] } forEach vehicles; + GVAR(viewports) = createHashMap; GVAR(3denIndex) = 0; GVAR(3denViewports) = []; true @@ -111,19 +111,19 @@ // this runs in both threeden and in-game addMissionEventHandler ["Draw3D", { - private _vehicle = vehicle player; - private _viewports = _vehicle getVariable [QGVAR(viewports), []]; - - if (is3DEN) then { - _vehicle = (get3DENSelected "object") param [0, objNull]; - if (isNull _vehicle) exitWith {}; - _viewports = [_vehicle] call FUNC(getViewports); - if (GVAR(3denViewports) isNotEqualTo []) then { - _viewports = GVAR(3denViewports); - }; + private _vehicle = if (is3DEN) then { + (get3DENSelected "object") param [0, objNull] + } else { + vehicle player }; + if (isNull _vehicle) exitWith {}; + private _viewports = if (is3DEN && {GVAR(3denViewports) isNotEqualTo []}) then { + GVAR(3denViewports) + } else { + _vehicle call FUNC(getViewports) + }; drawIcon3D ["#(argb,8,8,3)color(1,1,1,1)", [1,1,0,1], _vehicle modelToWorldVisual [0,0,0], 0.1, 0.1, 0, "", 1, 0.02, "TahomaB"]; if (alive player) then { // not using ace_player so this works in 3den diff --git a/addons/viewports/functions/fnc_getViewports.sqf b/addons/viewports/functions/fnc_getViewports.sqf index 744b9731514..a6b1742d506 100644 --- a/addons/viewports/functions/fnc_getViewports.sqf +++ b/addons/viewports/functions/fnc_getViewports.sqf @@ -1,13 +1,13 @@ #include "..\script_component.hpp" /* * Author: PabstMirror - * Gets viewports for a vehicle from config. Caches results to a setVar on the vic. + * Gets viewports for a vehicle from config. Caches results to a hashmap. * * Arguments: - * 0: vehicle + * 0: Vehicle * * Return Value: - * ARRAY + * Viewport information * * Example: * [vehicle player] call ace_viewports_fnc_getViewports @@ -17,10 +17,8 @@ params ["_vehicle"]; -private _viewports = _vehicle getVariable [QGVAR(viewports), nil]; - -if (isNil "_viewports") then { - _viewports = (configProperties [(configOf _vehicle) >> "ace_viewports", "isClass _x", true]) apply { +GVAR(viewports) getOrDefaultCall [typeOf _vehicle, { + private _viewports = (configProperties [configOf _vehicle >> QUOTE(ADDON), "isClass _x", true]) apply { // name [STRING] is just used for debug private _name = configName _x; // type [STRING] - Optional @@ -51,7 +49,7 @@ if (isNil "_viewports") then { } else { _vehicle selectionPosition [_camLocation, "Memory"]; }; - _screenLocation =_camLocArray vectorAdd [0,0,-0.175] + _screenLocation = _camLocArray vectorAdd [0,0,-0.175] }; _screenLocation = _vehicle selectionPosition [_screenLocation, "Memory"]; }; @@ -68,7 +66,5 @@ if (isNil "_viewports") then { [_name, _type, _camLocation, _camAttach, _screenLocation, _maxDistance, _compartments, _roles] }; TRACE_3("getViewports",_vehicle,typeOf _vehicle,count _viewports); - _vehicle setVariable [QGVAR(viewports), _viewports]; -}; - -_viewports + _viewports +}, true] // return