diff --git a/unity/Editor/Importer/MjImporterWithAssets.cs b/unity/Editor/Importer/MjImporterWithAssets.cs index 6f3f8c61..4713a9f8 100644 --- a/unity/Editor/Importer/MjImporterWithAssets.cs +++ b/unity/Editor/Importer/MjImporterWithAssets.cs @@ -50,6 +50,7 @@ public class MjImporterWithAssets : MjcfImporter { // mjcfString. var name = Path.GetFileNameWithoutExtension(filePath) + $"{UnityEngine.Random.Range(0,999)}"; string newPath = Path.Combine(Application.temporaryCachePath, $"{name}.xml"); + MjEngineTool.LoadPlugins(); _mjModel = MjEngineTool.LoadModelFromFile(filePath); MjEngineTool.SaveModelToFile(newPath, _mjModel); Debug.Log($"Imported MJCF loaded, saved to {newPath}"); diff --git a/unity/Runtime/Importer/MjcfImporter.cs b/unity/Runtime/Importer/MjcfImporter.cs index 3442de0b..72181007 100644 --- a/unity/Runtime/Importer/MjcfImporter.cs +++ b/unity/Runtime/Importer/MjcfImporter.cs @@ -284,6 +284,11 @@ public class MjcfImporter { CreateGameObjectWithCamera(parentObject, child); break; } + case "plugin": { + Debug.Log($"Plugin elements are only partially supported."); + break; + } + default: { Debug.Log($"The importer does not yet support tags <{child.Name}>."); break; diff --git a/unity/Runtime/Tools/MjEngineTool.cs b/unity/Runtime/Tools/MjEngineTool.cs index bc07258e..bf27a1d9 100644 --- a/unity/Runtime/Tools/MjEngineTool.cs +++ b/unity/Runtime/Tools/MjEngineTool.cs @@ -368,6 +368,16 @@ public static class MjEngineTool { } } } + + public static void LoadPlugins() { + if(!Directory.Exists("Packages/org.mujoco/Runtime/Plugins/")) return; + + foreach (string pluginPath in Directory.GetFiles("Packages/org.mujoco/Runtime/Plugins/")) { + MujocoLib.mj_loadPluginLibrary(pluginPath); + } + + } + } public static class MjSceneImportSettings {