public static void ChangeRootDirectory(DirectoryInfo newAgxDir) { var type = FindType(newAgxDir); if (type == AGXDirectoryType.Unknown) { return; } Environment.Set(Environment.Variable.AGX_DIR, ""); Environment.Set(Environment.Variable.AGX_PLUGIN_PATH, ""); foreach (var path in Instance.AGX_BIN_PATH) { Environment.RemoveFromPath(path); } Instance.Clear(); EditorUtility.SetDirty(Instance); AssetDatabase.SaveAssets(); var success = false; if (type == AGXDirectoryType.Checkout) { success = Instance.InitializeCheckout(newAgxDir.FullName); } else { success = Instance.InitializeInstalled(newAgxDir.FullName); } if (success) { EditorUtility.SetDirty(Instance); AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); EditorApplication.OpenProject(Path.Combine(Application.dataPath, "..")); } }
public bool ApplyData() { IsApplied = true; Environment.Set(Environment.Variable.AGX_DIR, AGX_DIR); Environment.Set(Environment.Variable.AGX_PLUGIN_PATH, AGX_PLUGIN_PATH); foreach (var path in AGX_BIN_PATH) { Environment.AddToPath(path); } // All binaries should be in path, try initialize agx. try { AGXUnity.NativeHandler.Instance.Register(null); } catch (TypeInitializationException) { Debug.LogError($"{"ERROR".Color( Color.red )}: Missing dll."); return(false); } var envInstance = agxIO.Environment.instance(); for (int i = 0; i < (int)agxIO.Environment.Type.NUM_TYPES; ++i) { envInstance.getFilePath((agxIO.Environment.Type)i).clear(); } envInstance.getFilePath(agxIO.Environment.Type.RESOURCE_PATH).pushbackPath("."); envInstance.getFilePath(agxIO.Environment.Type.RESOURCE_PATH).pushbackPath(AGX_DIR); envInstance.getFilePath(agxIO.Environment.Type.RESOURCE_PATH).pushbackPath(AGX_PLUGIN_PATH); envInstance.getFilePath(agxIO.Environment.Type.RESOURCE_PATH).pushbackPath(AGX_DATA_DIR); envInstance.getFilePath(agxIO.Environment.Type.RESOURCE_PATH).pushbackPath(AGX_DATA_DIR + Path.DirectorySeparatorChar + "cfg"); envInstance.getFilePath(agxIO.Environment.Type.RUNTIME_PATH).pushbackPath(AGX_PLUGIN_PATH); return(true); }
public static bool Initialize() { // Dependencies dir set and we're certain setup_env has been executed. if (Environment.IsSet(Environment.Variable.AGX_DEPENDENCIES_DIR)) { return(true); } var instance = Instance; // Applying already initialized data. if (instance.HasData && instance.ApplyData()) { return(true); } IsApplied = false; UserSaidNo = UserSaidNo || !EditorUtility.DisplayDialog("Configure AGX Dynamics", "AGX Dynamics binaries and data isn't found - would you " + "like to manually select AGX Dynamics root directory?\n\n" + "The selected directory may be changed to another under " + "AGXUnity -> Settings...", "Yes", "No"); if (UserSaidNo) { return(true); } var agxDir = EditorUtility.OpenFolderPanel("AGX Dynamics root directory", "Assets", "").Replace('/', '\\'); if (string.IsNullOrEmpty(agxDir)) { UserSaidNo = true; return(false); } var type = FindType(new DirectoryInfo(agxDir)); var success = false; if (type == AGXDirectoryType.Unknown) { Debug.Log($"{"ERROR".Color( Color.red )}: Unable to determine directory type as installed or checked out AGX."); return(false); } else if (type == AGXDirectoryType.Checkout) { success = instance.InitializeCheckout(agxDir); } else if (type == AGXDirectoryType.Installed) { success = instance.InitializeInstalled(agxDir); } if (success) { instance.ApplyData(); } else { instance.Clear(); } EditorUtility.SetDirty(instance); AssetDatabase.SaveAssets(); return(success); }