TrafficManager.LoadingExtension.determinePathManagerCompatible C# (CSharp) Method

determinePathManagerCompatible() private method

private determinePathManagerCompatible ( ) : void
return void
		private void determinePathManagerCompatible() {
			IsPathManagerCompatible = true;
			if (!IsPathManagerReplaced) {

				var loadingWrapperLoadingExtensionsField = typeof(LoadingWrapper).GetField("m_LoadingExtensions", BindingFlags.NonPublic | BindingFlags.Instance);
				List<ILoadingExtension> loadingExtensions = null;
				if (loadingWrapperLoadingExtensionsField != null) {
					loadingExtensions = (List<ILoadingExtension>) loadingWrapperLoadingExtensionsField.GetValue(Singleton<LoadingManager>.instance.m_LoadingWrapper);
				} else {
					Log._Debug("Could not get loading extensions field");
				}

				if (loadingExtensions != null) {
					Log._Debug("Loaded extensions:");
					foreach (ILoadingExtension extension in loadingExtensions) {
						if (extension.GetType().Namespace == null)
							continue;

						Log._Debug($"type: {extension.GetType().ToString()} type namespace: {extension.GetType().Namespace.ToString()} toString: {extension.ToString()}");
						var namespaceStr = extension.GetType().Namespace.ToString();
						if ("Improved_AI".Equals(namespaceStr) || "CSL_Traffic".Equals(namespaceStr)) {
							IsPathManagerCompatible = false; // Improved AI found
							Log.Info($"type: {extension.GetType().ToString()} type namespace: {extension.GetType().Namespace.ToString()} toString: {extension.ToString()}. Custom PathManager detected.");
						}
					}
				} else {
					Log._Debug("Could not get loading extensions");
				}

				if (Singleton<PathManager>.instance.GetType() != typeof(PathManager)) {
					Log.Info("PathManager manipulation detected. Disabling custom PathManager " + Singleton<PathManager>.instance.GetType().ToString());
					IsPathManagerCompatible = false;
				}
			}

			if (!IsPathManagerCompatible) {
				Options.setAdvancedAI(false);
			}
		}
#endif