112 lines
3.2 KiB
Plaintext
112 lines
3.2 KiB
Plaintext
#include "..\script_component.hpp"
|
|
|
|
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 to draw markers for!"] call BIS_fnc_error;
|
|
};
|
|
|
|
private _baseMarkerStoreVar = QGVAR(baseMarkerStore);
|
|
private _assetMarkerStoreVar = QGVAR(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["%1_%2", QGVAR(baseCircleMarker), _forEachIndex + 1],
|
|
getPosASL _base
|
|
];
|
|
_newMarker setMarkerTypeLocal "mil_dot";
|
|
_newMarker setMarkerColorLocal "ColorGreen";
|
|
_newMarker setMarkerShapeLocal "ELLIPSE";
|
|
_newMarker setMarkerSizeLocal [
|
|
GVAR(setting_detectionRangeFromBase),
|
|
GVAR(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["%1_%2", QGVAR(baseFlagMarker), _forEachIndex + 1],
|
|
getPosASL _base
|
|
];
|
|
_newMarker setMarkerTypeLocal "mil_flag";
|
|
_newMarker setMarkerColorLocal "ColorGreen";
|
|
_newMarker setMarkerSizeLocal [0.7, 0.7];
|
|
_newMarker setMarkerTextLocal ([_base] call EFUNC(common,getNameOfBase));
|
|
|
|
_baseMarkerStore pushBack [
|
|
_base,
|
|
_newMarker
|
|
];
|
|
} forEach GVARMAIN(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};
|
|
|
|
// check if the asset is within base detection range
|
|
if (not ([_asset] call FUNC(isAssetInRangeOfBase))) then {continue};
|
|
|
|
// create a marker for the asset
|
|
private _newMarker = createMarkerLocal [
|
|
format["%1_%2", QGVAR(assetMarker), _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];
|