enum EVisionBlockerType
{
	Smoke = 0,
	OpticalCamo = 1,
	OpticalCamoLegendary = 2,
	Undefined = 32,
}

export function GetIgnoredVisionBlockerTypes( game : GameInstance, objID : StatsObjectID ) : VisionBlockerTypeFlags
{
	var flags : VisionBlockerTypeFlags;
	var statsSystem : StatsSystem;
	statsSystem = GameInstance.GetStatsSystem( game );
	if( statsSystem.GetStatBoolValue( objID, gamedataStatType.CanSeeThroughSmoke ) )
	{
		VisionBlockerTypeFlags.SetType( flags, EVisionBlockerType.Smoke, true );
	}
	if( statsSystem.GetStatBoolValue( objID, gamedataStatType.CanSeeThroughOpticalCamos ) )
	{
		VisionBlockerTypeFlags.SetType( flags, EVisionBlockerType.OpticalCamo, true );
		VisionBlockerTypeFlags.SetType( flags, EVisionBlockerType.OpticalCamoLegendary, true );
	}
	return flags;
}

importonly final struct VisionBlockerTypeFlags
{
	public import static function SetType( self : ref< VisionBlockerTypeFlags >, blockerType : EVisionBlockerType, value : Bool );
	public import static function IsTypeSet( self : ref< VisionBlockerTypeFlags >, blockerType : EVisionBlockerType ) : Bool;
}

