diff --git a/unity/Editor/Bindings/MujocoBinaryRetriever.cs b/unity/Editor/Bindings/MujocoBinaryRetriever.cs index f0190a6540..0285929666 100644 --- a/unity/Editor/Bindings/MujocoBinaryRetriever.cs +++ b/unity/Editor/Bindings/MujocoBinaryRetriever.cs @@ -39,6 +39,7 @@ static void RegisteredPackagesEventHandler( "/Applications/MuJoCo.app/Contents/Frameworks" + "/mujoco.framework/Versions/Current/libmujoco.3.1.3.dylib", mujocoPath + "/mujoco.dylib"); + GenerateMetaFile(mujocoPath + "/mujoco.dylib"); AssetDatabase.Refresh(); } } else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux)) { @@ -47,6 +48,7 @@ static void RegisteredPackagesEventHandler( Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + "/.mujoco/mujoco-3.1.3/lib/libmujoco.so.3.1.3", mujocoPath + "/libmujoco.so"); + GenerateMetaFile(mujocoPath + "/libmujoco.so"); AssetDatabase.Refresh(); } } else { @@ -55,11 +57,38 @@ static void RegisteredPackagesEventHandler( Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + "\\MuJoCo\\bin\\mujoco.dll", mujocoPath + "\\mujoco.dll"); + GenerateMetaFile(mujocoPath + "\\mujoco.dll"); AssetDatabase.Refresh(); } } } } } + + static void GenerateMetaFile(string filePath) { + string metaFileName = filePath + ".meta"; + + // Check if .meta file exists. + if (File.Exists(metaFileName)) { + Debug.Log("Meta file for " + filePath + " already exists."); + return; + } + + // Create a uuid + var uuidN = Guid.NewGuid().ToString("N"); + + // Write content to .meta + using (StreamWriter writer = File.CreateText(metaFileName)) { + writer.WriteLine("fileFormatVersion: 2"); + writer.WriteLine("guid: " + (uuidN.ToString())); + writer.WriteLine("DefaultImporter:"); + writer.WriteLine(" externalObjects: {}"); + writer.WriteLine(" userData: "); + writer.WriteLine(" assetBundleName: "); + writer.WriteLine(" assetBundleVariant: "); + } + + Debug.Log("MuJoCo library successfully imported to " + filePath); + } } }