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 { { 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; private _createdAssetMarkers = []; { private _asset = _x; // 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 0; _newMarker setMarkerTypeLocal _markerType; _newMarker setMarkerColorLocal _markerColor; // _newMarker setMarkerTextLocal ([configOf _asset] call BIS_fnc_displayName); _createdAssetMarkers pushBack [ _asset, _newMarker ]; _start = _start + 1; } forEach _assetObjects; // unhide added asset markers sequentially [_createdAssetMarkers apply {_x#1}] spawn { params ["_markers"]; for "_alpha" from 0.0 to 1.0 step 0.03 do { { _x setMarkerAlphaLocal _alpha; } forEach _markers; Sleep 0.002; }; }; // add to store { _assetMarkerStore pushBack _x; } forEach _createdAssetMarkers; // update store var localNamespace setVariable [_assetMarkerStoreVar, _assetMarkerStore];