private static void OnProviderVisibilityChanged(MarkerProvider provider)
 {
     if (provider.Visible)
     {
         Instance.GetMarker(provider.RequiredMarkerType).AssignProvider(provider);
     }
 }
 protected void OnProviderVisibilityChanged(MarkerProvider provider)
 {
     if (!provider.Visible)
     {
         provider.OnVisibilityChanged -= OnProviderVisibilityChanged;
         Hide();
     }
 }
 public static void RegisterProvider(MarkerProvider provider)
 {
     if (_MarkerProviders.Contains(provider))
     {
         return;
     }
     _MarkerProviders.Add(provider);
     provider.OnVisibilityChanged += OnProviderVisibilityChanged;
     OnProviderVisibilityChanged(provider);
 }
        public void AssignProvider(MarkerProvider provider)
        {
            Debug.Assert(provider != null);
            if (_MarkerProvider != null)
            {
                _MarkerProvider.OnVisibilityChanged -= OnProviderVisibilityChanged;
            }

            _MarkerProvider = provider;
            _MarkerProvider.OnVisibilityChanged += OnProviderVisibilityChanged;
            Show();
        }
 public static void UnregisterProvider(MarkerProvider provider)
 {
     _MarkerProviders.Remove(provider);
     provider.OnVisibilityChanged -= OnProviderVisibilityChanged;
 }