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