params [ ["_className", "", [""]], ["_markerType", "hd_dot", [""]], ["_markerColor", "", [""]], ["_assetObjects", [], []] ]; if (count _className isEqualTo 0) exitWith { ["No class name provided!"] call BIS_fnc_error; }; if (count _markerColor isEqualTo 0) exitWith { ["No marker color provided!"] call BIS_fnc_error; }; if (count _assetObjects isEqualTo 0) exitWith { ["No vehicles provided!"] call BIS_fnc_error; }; private _baseMarkerStoreVar = "milsim_fbcb2_assets_baseMarkerStore"; private _assetMarkerStoreVar = "milsim_fbcb2_assets_assetMarkerStore"; private _baseMarkerStore = localNamespace getVariable [ _baseMarkerStoreVar, [] ]; private _assetMarkerStore = localNamespace getVariable [ _assetMarkerStoreVar, [] ]; /////////////////////////////////////////////////////////////////////////////// // Create base markers if not already present if (not (count _baseMarkerStore > 0)) then { { // milsim_baseObjects is accessed directly, so are valid objects private _base = _x; // create a circle marker with range as the detection range of assets _newMarker = createMarkerLocal [ format["milsim_fbcb2_assets_base_marker_%1", _forEachIndex + 1], getPosASL _base ]; _newMarker setMarkerTypeLocal "mil_dot"; _newMarker setMarkerColorLocal "ColorGreen"; _newMarker setMarkerShapeLocal "ELLIPSE"; _newMarker setMarkerSizeLocal [ milsim_fbcb2_assets_setting_detectionRangeFromBase, milsim_fbcb2_assets_setting_detectionRangeFromBase ]; _newMarker setMarkerAlphaLocal 0.5; _newMarker setMarkerTextLocal str(_forEachIndex + 1); _baseMarkerStore pushBack [ _base, _newMarker ]; // create a flag marker at base position _newMarker = createMarkerLocal [ format["milsim_fbcb2_assets_base_flag_marker_%1", _forEachIndex + 1], getPosASL _base ]; _newMarker setMarkerTypeLocal "mil_flag"; _newMarker setMarkerColorLocal "ColorGreen"; _newMarker setMarkerSizeLocal [0.7, 0.7]; _newMarker setMarkerTextLocal ([_base] call milsim_fnc_getNameOfBase); _baseMarkerStore pushBack [ _base, _newMarker ]; } forEach milsim_baseObjects; localNamespace setVariable [_baseMarkerStoreVar, _baseMarkerStore]; }; private _start = (count _assetMarkerStore) + 1; { // _assetObjects is a serialized parameter, so we pass the netIds (strings) private _assetNetIdStr = _x; private _asset = _assetNetIdStr call BIS_fnc_objectFromNetId; // if asset was removed since last update if (isNull _asset) then {continue}; // check if a marker is already placed for this asset if ( (_assetMarkerStore findIf { _x select 0 isEqualTo _asset }) > -1 ) then {continue}; // create a marker for the asset private _newMarker = createMarkerLocal [ format["milsim_fbcb2_assets_marker_%1", _start], getPosASL _asset ]; _newMarker setMarkerAlphaLocal 1; _newMarker setMarkerTypeLocal _markerType; _newMarker setMarkerColorLocal _markerColor; // _newMarker setMarkerTextLocal ([configOf _asset] call BIS_fnc_displayName); _assetMarkerStore pushBack [ _asset, _newMarker ]; _start = _start + 1; } forEach _assetObjects; // update store var localNamespace setVariable [_assetMarkerStoreVar, _assetMarkerStore];