static void SaveAndUpdateAssemblyDefinitionReferenceState(AssemblyDefinitionReferenceState state) { CustomScriptAssemblyReferenceData data = new CustomScriptAssemblyReferenceData(); if (state.asset != null) { data.reference = state.useGUIDs ? CompilationPipeline.GUIDToAssemblyDefinitionReferenceGUID(AssetDatabase.AssetPathToGUID(AssetDatabase.GetAssetPath(state.reference.asset))) : state.reference.name; } var json = CustomScriptAssemblyReferenceData.ToJson(data); File.WriteAllText(state.path, json); AssetDatabase.ImportAsset(state.path); }
static void SaveAssemblyDefinitionState(AssemblyDefinitionState state) { var references = state.references; var platforms = CompilationPipeline.GetAssemblyDefinitionPlatforms(); CustomScriptAssemblyData data = new CustomScriptAssemblyData(); data.name = state.assemblyName; if (state.useGUIDs) { data.references = references.Select(r => { var guid = AssetDatabase.AssetPathToGUID(AssetDatabase.GetAssetPath(r.asset)); if (string.IsNullOrEmpty(guid)) { return(r.serializedReference); } return(CompilationPipeline.GUIDToAssemblyDefinitionReferenceGUID(guid)); }).ToArray(); } else { data.references = references.Select(r => r.name).ToArray(); } data.defineConstraints = state.defineConstraints .Where(x => !string.IsNullOrEmpty(x.name)) .Select(r => r.name) .ToArray(); data.versionDefines = state.versionDefines.Select(x => new UnityEditor.Scripting.ScriptCompilation.VersionDefine { name = x.name, expression = x.expression, define = x.define, }).ToArray(); data.autoReferenced = state.autoReferenced; data.overrideReferences = state.overrideReferences; data.precompiledReferences = state.precompiledReferences .Select(r => r.name).ToArray(); data.allowUnsafeCode = state.allowUnsafeCode; List <string> dataPlatforms = new List <string>(); for (int i = 0; i < platforms.Length; ++i) { if (state.platformCompatibility[i]) { dataPlatforms.Add(platforms[i].Name); } } if (dataPlatforms.Any()) { if (state.compatibleWithAnyPlatform) { data.excludePlatforms = dataPlatforms.ToArray(); } else { data.includePlatforms = dataPlatforms.ToArray(); } } var json = CustomScriptAssemblyData.ToJson(data); File.WriteAllText(state.path, json); AssetDatabase.ImportAsset(state.path); }