// Ensures that the given platform has valid properties. private void AffirmPlatformProperties(Platform platform) { if (!platform.Active) { RuntimeUtils.DebugLogFormat("[FMOD] Cannot find properties for platform {0}, creating default properties", platform.Identifier); RuntimeSettings.AddPlatformProperties(platform); } }
public void DeleteTemporaryFile(string assetPath) { bool assetExists = !string.IsNullOrEmpty(AssetDatabase.AssetPathToGUID(assetPath)); if (assetExists && AssetDatabase.DeleteAsset(assetPath)) { RuntimeUtils.DebugLogFormat("FMOD: Removed temporary file {0}", assetPath); } }
public static void CleanIl2CppArgs() { const string Il2CppCommand_AdditionalCpp = "--additional-cpp"; string arguments = PlayerSettings.GetAdditionalIl2CppArgs(); string newArguments = arguments; foreach (string path in AdditionalIl2CppFiles()) { // Match on basename only in case the temp file location has moved string basename = Regex.Escape(Path.GetFileName(path)); Regex regex = new Regex(Il2CppCommand_AdditionalCpp + "=\"[^\"]*" + basename + "\""); for (int startIndex = 0; startIndex < newArguments.Length;) { Match match = regex.Match(newArguments, startIndex); if (!match.Success) { break; } RuntimeUtils.DebugLogFormat("FMOD: Removing Il2CPP argument '{0}'", match.Value); int matchStart = match.Index; int matchEnd = match.Index + match.Length; // Consume an adjacent space if there is one if (matchStart > 0 && newArguments[matchStart - 1] == ' ') { --matchStart; } else if (matchEnd < newArguments.Length && newArguments[matchEnd] == ' ') { ++matchEnd; } newArguments = newArguments.Substring(0, matchStart) + newArguments.Substring(matchEnd); startIndex = matchStart; } } if (newArguments != arguments) { PlayerSettings.SetAdditionalIl2CppArgs(newArguments); } }
private void PreprocessStaticPlugins(Platform platform, BuildTarget target) { // Ensure we don't have leftover temporary changes from a previous build. CleanTemporaryFiles(); BuildTargetGroup buildTargetGroup = BuildPipeline.GetBuildTargetGroup(target); ScriptingImplementation scriptingBackend = PlayerSettings.GetScriptingBackend(buildTargetGroup); if (platform.StaticPlugins.Count > 0) { if (scriptingBackend == ScriptingImplementation.IL2CPP) { Action <string> reportError = message => { RuntimeUtils.DebugLogWarningFormat("FMOD: Error processing static plugins for platform {0}: {1}", platform.DisplayName, message); }; if (!AssetDatabase.IsValidFolder(CacheFolderFull)) { RuntimeUtils.DebugLogFormat("Creating {0}", CacheFolderFull); AssetDatabase.CreateFolder(FMODFolderFull, CacheFolderName); } // Generate registration code and import it so it's included in the build. RuntimeUtils.DebugLogFormat("FMOD: Generating static plugin registration code in {0}", RegisterStaticPluginsAssetPathFull); string filePath = Application.dataPath + "/" + RegisterStaticPluginsAssetPathRelative; CodeGeneration.GenerateStaticPluginRegistration(filePath, platform, reportError); AssetDatabase.ImportAsset(RegisterStaticPluginsAssetPathFull); } else { RuntimeUtils.DebugLogWarningFormat( "FMOD: Platform {0} has {1} static plugins specified, " + "but static plugins are only supported on the IL2CPP scripting backend", platform.DisplayName, platform.StaticPlugins.Count); } } }