void OnSceneLoaded(Scene scene, LoadSceneMode mode)
        {
            // assign references
            if (_HUDNavigationSystem == null)
            {
                _HUDNavigationSystem = HUDNavigationSystem.Instance;

                // check if HUDNavigationSystem exists
                if (_HUDNavigationSystem == null)
                {
                    Debug.LogError("HUDNavigationSystem not found in scene!");
                    this.enabled = false;
                    return;
                }
            }

            // return if HUDNavigationSystem is not initialized (yet)
            if (_HUDNavigationSystem == null)
            {
                return;
            }

            // return if no configuration is assigned
            if (Configurations.Count <= 0)
            {
                return;
            }

            // get configuration matching currently active scene
            Configuration config = Configurations.Where(c => c._Scene != null && c._Config != null && c._Scene.path.Equals(scene.path)).FirstOrDefault();

            if (config._Config == null)
            {
                return;
            }

            // apply configuration
            HNSSceneConfiguration sceneConfig = config._Config;

            _HUDNavigationSystem.ApplySceneConfiguration(sceneConfig);
        }
        /// <summary>
        /// Applies a new scene configuration.
        /// </summary>
        /// <param name="config">Scene Configuration.</param>
        public void ApplySceneConfiguration(HNSSceneConfiguration config)
        {
            if (config == null)
            {
                return;
            }

            // override radar settings
            if (config.overrideRadarSettings)
            {
                // radar usage changed?
                if (_HUDNavigationCanvas != null && this.useRadar != config.useRadar)
                {
                    _HUDNavigationCanvas.ShowRadar(config.useRadar);
                }

                this.useRadar             = config.useRadar;
                this.radarMode            = config.radarMode;
                this.radarZoom            = config.radarZoom;
                this.radarRadius          = config.radarRadius;
                this.radarMaxRadius       = config.radarMaxRadius;
                this.useRadarHeightSystem = config.useRadarHeightSystem;
                this.radarDistanceAbove   = config.radarDistanceAbove;
                this.radarDistanceBelow   = config.radarDistanceBelow;
            }

            // override compass bar settings
            if (config.overrideCompassBarSettings)
            {
                // compass bar usage changed?
                if (_HUDNavigationCanvas != null && this.useCompassBar != config.useCompassBar)
                {
                    _HUDNavigationCanvas.ShowCompassBar(config.useCompassBar);
                }

                this.useCompassBar    = config.useCompassBar;
                this.compassBarRadius = config.compassBarRadius;
            }

            // override indicator settings
            if (config.overrideIndicatorSettings)
            {
                // indicator usage changed?
                if (_HUDNavigationCanvas != null && this.useIndicators != config.useIndicators)
                {
                    _HUDNavigationCanvas.ShowIndicators(config.useIndicators);
                }

                this.useIndicators            = config.useIndicators;
                this.indicatorRadius          = config.indicatorRadius;
                this.indicatorHideDistance    = config.indicatorHideDistance;
                this.useOffscreenIndicators   = config.useOffscreenIndicators;
                this.indicatorOffscreenBorder = config.indicatorOffscreenBorder;
                this.useIndicatorScaling      = config.useIndicatorScaling;
                this.indicatorScaleRadius     = config.indicatorScaleRadius;
                this.indicatorMinScale        = config.indicatorMinScale;
                this.useIndicatorFading       = config.useIndicatorFading;
                this.indicatorFadeRadius      = config.indicatorFadeRadius;
                this.indicatorMinFade         = config.indicatorMinFade;
            }

            // override minimap settings
            if (config.overrideMinimapSettings)
            {
                // assign new minimap profile
                if (this.currentMinimapProfile != config.minimapProfile)
                {
                    this.currentMinimapProfile = config.minimapProfile;
                    if (_HUDNavigationCanvas != null)
                    {
                        _HUDNavigationCanvas.SetMinimapProfile(this.currentMinimapProfile);
                    }
                }

                // minimap usage changed?
                if (_HUDNavigationCanvas != null && this.useMinimap != config.useMinimap)
                {
                    _HUDNavigationCanvas.ShowMinimap(config.useMinimap);
                }

                this.useMinimap             = config.useMinimap;
                this.minimapMode            = config.minimapMode;
                this.minimapScale           = config.minimapScale;
                this.minimapRadius          = config.minimapRadius;
                this.showMinimapBounds      = config.showMinimapBounds;
                this.useMinimapHeightSystem = config.useMinimapHeightSystem;
                this.minimapDistanceAbove   = config.minimapDistanceAbove;
                this.minimapDistanceBelow   = config.minimapDistanceBelow;
            }
        }