public static void CopyToStreamingAssets() { if (string.IsNullOrEmpty(Settings.Instance.SourceBankPathFull)) { return; } FMODPlatform platform = RuntimeUtils.GetEditorFMODPlatform(); if (platform == FMODPlatform.None) { UnityEngine.Debug.LogWarning(string.Format("FMOD Studio: copy banks for platform {0} : Unsupported platform", EditorUserBuildSettings.activeBuildTarget.ToString())); return; } string bankTargetFolder = Settings.Instance.ImportType == ImportType.StreamingAssets ? Application.dataPath + "/StreamingAssets" : Application.dataPath + '/' + Settings.Instance.TargetAssetPath; bankTargetFolder = RuntimeUtils.GetCommonPlatformPath(bankTargetFolder); Directory.CreateDirectory(bankTargetFolder); string bankTargetExension = Settings.Instance.ImportType == ImportType.StreamingAssets ? "bank" : "bytes"; string bankSourceFolder = Settings.Instance.HasPlatforms ? Settings.Instance.SourceBankPathFull + '/' + Settings.Instance.GetBankPlatform(platform) : Settings.Instance.SourceBankPathFull; bankSourceFolder = RuntimeUtils.GetCommonPlatformPath(bankSourceFolder); if (Path.GetFullPath(bankTargetFolder).TrimEnd('/').ToUpperInvariant() == Path.GetFullPath(bankSourceFolder).TrimEnd('/').ToUpperInvariant()) { return; } bool madeChanges = false; try { // Clean out any stale .bank files string[] currentBankFiles = Directory.GetFiles(bankTargetFolder, "*." + bankTargetExension, SearchOption.AllDirectories); List <string> directories = new List <string>(); foreach (var bankFileName in currentBankFiles) { var targetShortName = RuntimeUtils.GetCommonPlatformPath(bankFileName).Replace(RuntimeUtils.GetCommonPlatformPath(Application.streamingAssetsPath + '/'), ""); if (!eventCache.EditorBanks.Exists((x) => targetShortName == x.Name + "." + BankExtension)) { File.Delete(bankFileName); madeChanges = true; } directories.Add(RuntimeUtils.GetCommonPlatformPath(Path.GetDirectoryName(bankFileName))); } if (madeChanges) { AssetDatabase.Refresh(); foreach (var dir in directories) { if (Directory.Exists(dir) && Directory.GetFiles(dir).Length <= 0) { Directory.Delete(dir); } } } // Copy over any files that don't match timestamp or size or don't exist foreach (var bankRef in eventCache.EditorBanks) { var dirName = RuntimeUtils.GetCommonPlatformPath(Path.GetDirectoryName(bankRef.Path)); string subDir = dirName.Replace(bankSourceFolder, ""); bankRef.SubDir = subDir.TrimStart('/'); string sourcePath = bankSourceFolder + '/' + bankRef.Name + ".bank"; string targetPath = bankTargetFolder + '/' + bankRef.Name + "." + bankTargetExension; FileInfo sourceInfo = new FileInfo(sourcePath); FileInfo targetInfo = new FileInfo(targetPath); if (!targetInfo.Exists || sourceInfo.Length != targetInfo.Length || sourceInfo.LastWriteTime != targetInfo.LastWriteTime) { if (!targetInfo.Directory.Exists) { targetInfo.Directory.Create(); } else if (targetInfo.Exists) { targetInfo.IsReadOnly = false; } File.Copy(sourcePath, targetPath, true); targetInfo = new FileInfo(targetPath); targetInfo.IsReadOnly = false; targetInfo.LastWriteTime = sourceInfo.LastWriteTime; madeChanges = true; } } } catch (Exception exception) { UnityEngine.Debug.LogError(string.Format("FMOD Studio: copy banks for platform {0} : copying banks from {1} to {2}", platform.ToString(), bankSourceFolder, bankTargetFolder)); UnityEngine.Debug.LogException(exception); return; } if (madeChanges) { AssetDatabase.Refresh(); UnityEngine.Debug.Log(string.Format("FMOD Studio: copy banks for platform {0} : copying banks from {1} to {2} succeeded", platform.ToString(), bankSourceFolder, bankTargetFolder)); } }
public static void CopyToStreamingAssets() { if (string.IsNullOrEmpty(Settings.Instance.SourceBankPath)) { return; } FMODPlatform platform = RuntimeUtils.GetEditorFMODPlatform(); if (platform == FMODPlatform.None) { UnityEngine.Debug.LogWarning(string.Format("FMOD Studio: copy banks for platform {0} : Unsupported platform", EditorUserBuildSettings.activeBuildTarget.ToString())); return; } string bankTargetFolder = Settings.Instance.ImportType == ImportType.StreamingAssets ? Application.dataPath + "/StreamingAssets" : Application.dataPath + (string.IsNullOrEmpty(Settings.Instance.TargetAssetPath) ? "" : '/' + Settings.Instance.TargetAssetPath); bankTargetFolder = RuntimeUtils.GetCommonPlatformPath(bankTargetFolder); Directory.CreateDirectory(bankTargetFolder); string bankTargetExtension = Settings.Instance.ImportType == ImportType.StreamingAssets ? ".bank" : ".bytes"; string bankSourceFolder = Settings.Instance.HasPlatforms ? Settings.Instance.SourceBankPath + '/' + Settings.Instance.GetBankPlatform(platform) : Settings.Instance.SourceBankPath; bankSourceFolder = RuntimeUtils.GetCommonPlatformPath(bankSourceFolder); if (Path.GetFullPath(bankTargetFolder).TrimEnd('/').ToUpperInvariant() == Path.GetFullPath(bankSourceFolder).TrimEnd('/').ToUpperInvariant()) { return; } bool madeChanges = false; if (removeBanks) { string oldBankTargetFolder = Settings.Instance.ImportType == ImportType.AssetBundle ? Application.dataPath + "/StreamingAssets" : Application.dataPath + "/" + Settings.Instance.TargetAssetPath; RemoveBanks(oldBankTargetFolder); madeChanges = true; } try { // Clean out any stale .bank files string[] existingBankFiles = Directory.GetFiles(bankTargetFolder, "*" + bankTargetExtension, SearchOption.AllDirectories); foreach (string bankFilePath in existingBankFiles) { string bankName = EditorBankRef.CalculateName(bankFilePath, bankTargetFolder); if (!eventCache.EditorBanks.Exists(x => x.Name == bankName)) { string assetPath = bankFilePath.Replace(Application.dataPath, AssetsFolderName); if (AssetHasLabel(assetPath, FMODLabel)) { AssetDatabase.MoveAssetToTrash(assetPath); madeChanges = true; } } } // Copy over any files that don't match timestamp or size or don't exist foreach (var bankRef in eventCache.EditorBanks) { string sourcePath = bankSourceFolder + "/" + bankRef.Name + ".bank"; string targetPathRelative = bankRef.Name + bankTargetExtension; string targetPathFull = bankTargetFolder + "/" + targetPathRelative; FileInfo sourceInfo = new FileInfo(sourcePath); FileInfo targetInfo = new FileInfo(targetPathFull); if (!targetInfo.Exists || sourceInfo.Length != targetInfo.Length || sourceInfo.LastWriteTime != targetInfo.LastWriteTime) { if (targetInfo.Exists) { targetInfo.IsReadOnly = false; } else { EnsureFoldersExist(targetPathRelative, bankTargetFolder); } File.Copy(sourcePath, targetPathFull, true); targetInfo = new FileInfo(targetPathFull); targetInfo.IsReadOnly = false; targetInfo.LastWriteTime = sourceInfo.LastWriteTime; madeChanges = true; string assetString = targetPathFull.Replace(Application.dataPath, "Assets"); AssetDatabase.ImportAsset(assetString); UnityEngine.Object obj = AssetDatabase.LoadAssetAtPath <UnityEngine.Object>(assetString); AssetDatabase.SetLabels(obj, new string[] { FMODLabel }); } } RemoveEmptyFMODFolders(bankTargetFolder); } catch (Exception exception) { UnityEngine.Debug.LogError(string.Format("FMOD Studio: copy banks for platform {0} : copying banks from {1} to {2}", platform.ToString(), bankSourceFolder, bankTargetFolder)); UnityEngine.Debug.LogException(exception); return; } if (madeChanges) { AssetDatabase.SaveAssets(); AssetDatabase.Refresh(); UnityEngine.Debug.Log(string.Format("FMOD Studio: copy banks for platform {0} : copying banks from {1} to {2} succeeded", platform.ToString(), bankSourceFolder, bankTargetFolder)); } }
public static void CopyToStreamingAssets() { FMODPlatform platform = RuntimeUtils.GetEditorFMODPlatform(); if (platform == FMODPlatform.None) { UnityEngine.Debug.LogWarning(String.Format("FMOD Studio: copy banks for platform {0} : Unsupported platform", EditorUserBuildSettings.activeBuildTarget.ToString())); return; } string bankTargetFolder = Settings.Instance.ImportType == ImportType.StreamingAssets ? Application.dataPath + "/StreamingAssets" : Application.dataPath + "/" + Settings.Instance.TargetAssetPath; Directory.CreateDirectory(bankTargetFolder); string bankTargetExension = Settings.Instance.ImportType == ImportType.StreamingAssets ? "bank" : "bytes"; string bankSourceFolder = EditorUtils.GetBankDirectory() + "/" + Settings.Instance.GetBankPlatform(platform); if (Path.GetFullPath(bankTargetFolder).TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar).ToUpperInvariant() == Path.GetFullPath(bankSourceFolder).TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar).ToUpperInvariant()) { return; } bool madeChanges = false; try { // Clean out any stale .bank files string[] currentBankFiles = Directory.GetFiles(bankTargetFolder, "*." + bankTargetExension); foreach (var bankFileName in currentBankFiles) { string bankName = Path.GetFileNameWithoutExtension(bankFileName); if (!eventCache.EditorBanks.Exists((x) => bankName == x.Name)) { File.Delete(bankFileName); madeChanges = true; } } // Copy over any files that don't match timestamp or size or don't exist foreach (var bankRef in eventCache.EditorBanks) { string sourcePath = bankSourceFolder + "/" + bankRef.Name + ".bank"; string targetPath = bankTargetFolder + "/" + bankRef.Name + "." + bankTargetExension; FileInfo sourceInfo = new FileInfo(sourcePath); FileInfo targetInfo = new FileInfo(targetPath); if (!targetInfo.Exists || sourceInfo.Length != targetInfo.Length || sourceInfo.LastWriteTime != targetInfo.LastWriteTime) { File.Copy(sourcePath, targetPath, true); targetInfo = new FileInfo(targetPath); targetInfo.IsReadOnly = false; targetInfo.LastWriteTime = sourceInfo.LastWriteTime; madeChanges = true; } } } catch (Exception exception) { UnityEngine.Debug.LogError(String.Format("FMOD Studio: copy banks for platform {0} : copying banks from {1} to {2}", platform.ToString(), bankSourceFolder, bankTargetFolder)); UnityEngine.Debug.LogException(exception); return; } if (madeChanges) { AssetDatabase.Refresh(); } }
public static void CopyToStreamingAssets() { FMODPlatform platform = RuntimeUtils.GetEditorFMODPlatform(); if (platform == FMODPlatform.None) { UnityEngine.Debug.LogWarning(String.Format("FMOD Studio: copy banks for platform {0} : Unsupported platform", EditorUserBuildSettings.activeBuildTarget.ToString())); return; } string bankTargetFolder = Settings.Instance.ImportType == ImportType.StreamingAssets ? Application.dataPath + "/StreamingAssets" : Application.dataPath + "/" + Settings.Instance.TargetAssetPath; Directory.CreateDirectory(bankTargetFolder); string bankTargetExension = Settings.Instance.ImportType == ImportType.StreamingAssets ? "bank" : "bytes"; string bankSourceFolder = EditorUtils.GetBankDirectory() + "/" + Settings.Instance.GetBankPlatform(platform); if (Path.GetFullPath(bankTargetFolder).TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar).ToUpperInvariant() == Path.GetFullPath(bankSourceFolder).TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar).ToUpperInvariant()) { return; } string otherBankTargetFolder, otherBankTargetExension; string[] otherBankFiles = new string[] { }; if (removeBanks) { otherBankTargetFolder = Settings.Instance.ImportType == ImportType.AssetBundle ? Application.dataPath + "/StreamingAssets" : Application.dataPath + "/" + Settings.Instance.TargetAssetPath; Directory.CreateDirectory(bankTargetFolder); otherBankTargetExension = Settings.Instance.ImportType == ImportType.AssetBundle ? "bank" : "bytes"; otherBankFiles = Directory.GetFiles(otherBankTargetFolder, "*." + otherBankTargetExension); } bool madeChanges = false; try { // Clean out any stale .bank files string[] currentBankFiles = Directory.GetFiles(bankTargetFolder, "*." + bankTargetExension); foreach (var bankFileName in currentBankFiles) { string assetString = bankFileName.Replace(Application.dataPath, "Assets"); AssetDatabase.ImportAsset(assetString); UnityEngine.Object obj = AssetDatabase.LoadAssetAtPath <UnityEngine.Object>(assetString); string[] labels = AssetDatabase.GetLabels(obj); bool containsLabel = false; foreach (string label in labels) { if (label.Equals("FMOD")) { containsLabel = true; break; } } string bankName = Path.GetFileNameWithoutExtension(bankFileName); if (containsLabel && (!eventCache.EditorBanks.Exists((x) => bankName == x.Name))) { File.Delete(bankFileName); madeChanges = true; } } if (removeBanks) { foreach (var otherBankFileName in otherBankFiles) { string assetString = otherBankFileName.Replace(Application.dataPath, "Assets"); AssetDatabase.ImportAsset(assetString); UnityEngine.Object obj = AssetDatabase.LoadAssetAtPath <UnityEngine.Object>(assetString); string[] labels = AssetDatabase.GetLabels(obj); foreach (string label in labels) { if (label.Equals("FMOD")) { File.Delete(otherBankFileName); madeChanges = true; break; } } } AssetDatabase.Refresh(); if (Directory.GetFiles(Path.GetDirectoryName(otherBankFiles[0])).Length == 0) { Directory.Delete(Path.GetDirectoryName(otherBankFiles[0])); } removeBanks = false; } // Copy over any files that don't match timestamp or size or don't exist foreach (var bankRef in eventCache.EditorBanks) { string sourcePath = bankSourceFolder + "/" + bankRef.Name + ".bank"; string targetPath = bankTargetFolder + "/" + bankRef.Name + "." + bankTargetExension; FileInfo sourceInfo = new FileInfo(sourcePath); FileInfo targetInfo = new FileInfo(targetPath); if (!targetInfo.Exists || sourceInfo.Length != targetInfo.Length || sourceInfo.LastWriteTime != targetInfo.LastWriteTime) { if (targetInfo.Exists) { targetInfo.IsReadOnly = false; } File.Copy(sourcePath, targetPath, true); targetInfo = new FileInfo(targetPath); targetInfo.IsReadOnly = false; targetInfo.LastWriteTime = sourceInfo.LastWriteTime; madeChanges = true; string assetString = targetPath.Replace(Application.dataPath, "Assets"); AssetDatabase.ImportAsset(assetString); UnityEngine.Object obj = AssetDatabase.LoadAssetAtPath <UnityEngine.Object>(assetString); AssetDatabase.SetLabels(obj, new string[] { "FMOD" }); } AssetDatabase.SaveAssets(); } } catch (Exception exception) { UnityEngine.Debug.LogError(String.Format("FMOD Studio: copy banks for platform {0} : copying banks from {1} to {2}", platform.ToString(), bankSourceFolder, bankTargetFolder)); UnityEngine.Debug.LogException(exception); return; } if (madeChanges) { AssetDatabase.Refresh(); UnityEngine.Debug.Log(String.Format("FMOD Studio: copy banks for platform {0} : copying banks from {1} to {2} succeeded", platform.ToString(), bankSourceFolder, bankTargetFolder)); } }
public static void CopyToStreamingAssets() { FMODPlatform platform = EditorUtils.GetFMODPlatform(EditorUserBuildSettings.activeBuildTarget); if (platform == FMODPlatform.None) { UnityEngine.Debug.LogWarningFormat("FMOD Studio: copy banks for platform {0} : Unsupported platform", EditorUserBuildSettings.activeBuildTarget.ToString()); return; } string bankTargetFolder = Application.dataPath + "/StreamingAssets"; Directory.CreateDirectory(bankTargetFolder); string bankSourceFolder = EditorUtils.GetBankDirectory() + "/" + Settings.Instance.GetBankPlatform(platform); if (Path.GetFullPath(bankTargetFolder).TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar).ToUpperInvariant() == Path.GetFullPath(bankSourceFolder).TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar).ToUpperInvariant()) { return; } UnityEngine.Debug.LogFormat("FMOD Studio: copy banks for platform {0} : copying banks from {1} to {2}", platform.ToString(), bankSourceFolder, bankTargetFolder); // Clean out any stale .bank files string[] currentBankFiles = Directory.GetFiles(bankTargetFolder, "*.bank"); foreach (var bankFileName in currentBankFiles) { if (!EventManager.Banks.Exists((x) => Path.GetFileNameWithoutExtension(bankFileName) == x.Name)) { File.Delete(bankFileName); } } // Copy over any files that don't match timestamp or size or don't exist foreach (var bankRef in EventManager.Banks) { string sourcePath = bankSourceFolder + "/" + bankRef.Name + ".bank"; string targetPath = bankTargetFolder + "/" + bankRef.Name + ".bank"; FileInfo sourceInfo = new FileInfo(sourcePath); FileInfo targetInfo = new FileInfo(targetPath); if (!targetInfo.Exists || sourceInfo.Length != targetPath.Length || sourceInfo.LastWriteTime != targetInfo.LastWriteTime) { File.Copy(sourcePath, targetPath, true); if (bankRef == EventManager.MasterBank) { sourcePath = bankSourceFolder + "/" + bankRef.Name + ".strings.bank"; targetPath = bankTargetFolder + "/" + bankRef.Name + ".strings.bank"; File.Copy(sourcePath, targetPath, true); } } } }
public static void CopyToStreamingAssets() { FMODPlatform platform = EditorUtils.GetFMODPlatform(); if (platform == FMODPlatform.None) { UnityEngine.Debug.LogWarning(String.Format("FMOD Studio: copy banks for platform {0} : Unsupported platform", EditorUserBuildSettings.activeBuildTarget.ToString())); return; } string bankTargetFolder = Application.dataPath + "/StreamingAssets"; Directory.CreateDirectory(bankTargetFolder); string bankSourceFolder = EditorUtils.GetBankDirectory() + "/" + Settings.Instance.GetBankPlatform(platform); if (Path.GetFullPath(bankTargetFolder).TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar).ToUpperInvariant() == Path.GetFullPath(bankSourceFolder).TrimEnd(Path.DirectorySeparatorChar, Path.AltDirectorySeparatorChar).ToUpperInvariant()) { return; } bool madeChanges = !true; try { // Clean out any stale .bank files string[] currentBankFiles = Directory.GetFiles(bankTargetFolder, "*.bank"); foreach (var bankFileName in currentBankFiles) { string bankName = Path.GetFileNameWithoutExtension(Path.GetFileNameWithoutExtension(bankFileName)); if (!eventCache.EditorBanks.Exists((x) => (String.Equals(bankName, x.Name, StringComparison.CurrentCultureIgnoreCase)))) { File.Delete(bankFileName); madeChanges = true; } } // Copy over any files that don't match timestamp or size or don't exist foreach (var bankRef in eventCache.EditorBanks) { string sourcePath = bankSourceFolder + "/" + bankRef.Name + ".bank"; string targetPath = bankTargetFolder + "/" + bankRef.Name + ".bank"; FileInfo sourceInfo = new FileInfo(sourcePath); FileInfo targetInfo = new FileInfo(targetPath); if (!targetInfo.Exists || sourceInfo.Length != targetInfo.Length || sourceInfo.LastWriteTime != targetInfo.LastWriteTime) { File.Copy(sourcePath, targetPath, true); if (bankRef == eventCache.MasterBankRef) { sourcePath = bankSourceFolder + "/" + bankRef.Name + ".strings.bank"; targetPath = bankTargetFolder + "/" + bankRef.Name + ".strings.bank"; File.Copy(sourcePath, targetPath, true); } madeChanges = true; } } } catch (Exception exception) { UnityEngine.Debug.LogError(String.Format("FMOD Studio: copy banks for platform {0} : copying banks from {1} to {2}", platform.ToString(), bankSourceFolder, bankTargetFolder)); UnityEngine.Debug.LogException(exception); return; } if (madeChanges) { UnityEngine.Debug.Log(String.Format("FMOD Studio: copy banks for platform {0} : copying banks from {1} to {2} succeeded", platform.ToString(), bankSourceFolder, bankTargetFolder)); } }