diff --git a/Basis/Assets/third_party/Plugins/Opus Intergration/AudioDecoder.cs b/Basis/Assets/third_party/Plugins/Opus Intergration/AudioDecoder.cs index 7e2f75f24..e9cd6f7cd 100644 --- a/Basis/Assets/third_party/Plugins/Opus Intergration/AudioDecoder.cs +++ b/Basis/Assets/third_party/Plugins/Opus Intergration/AudioDecoder.cs @@ -1,4 +1,4 @@ -using UnityEngine; +using UnityEngine; using System; namespace UnityOpus @@ -12,7 +12,8 @@ public class AudioDecoder : IDisposable { public AudioDecoder(SamplingFrequency samplingFrequency,NumChannels channels) {ErrorCode error;this.channels = channels; decoder = Library.OpusDecoderCreate(samplingFrequency,channels,out error); - if (error != ErrorCode.OK) { + if (error != ErrorCode.OK) + { Debug.LogError("[UnityOpus] Failed to create Decoder. Error code is " + error.ToString()); decoder = IntPtr.Zero; } diff --git a/Basis/Assets/third_party/Plugins/Opus Intergration/Encoder.cs b/Basis/Assets/third_party/Plugins/Opus Intergration/Encoder.cs index b37430bd3..fd9f484c3 100644 --- a/Basis/Assets/third_party/Plugins/Opus Intergration/Encoder.cs +++ b/Basis/Assets/third_party/Plugins/Opus Intergration/Encoder.cs @@ -1,6 +1,7 @@ -using System; +using System; using System.Collections.Concurrent; using System.Threading; +using UnityEngine; namespace UnityOpus { @@ -55,8 +56,6 @@ public OpusSignal Signal IntPtr encoder; NumChannels channels; public readonly object encoderLock = new object(); // For thread safety - private ConcurrentQueue errorQueue = new ConcurrentQueue(); // Thread-safe error queue - public Encoder(SamplingFrequency samplingFrequency, NumChannels channels, OpusApplication application) { this.channels = channels; @@ -64,7 +63,7 @@ public Encoder(SamplingFrequency samplingFrequency, NumChannels channels, OpusAp encoder = Library.OpusEncoderCreate(samplingFrequency, channels, application, out error); if (error != ErrorCode.OK) { - errorQueue.Enqueue("[UnityOpus] Failed to init encoder. Error code: " + error.ToString()); + Debug.Log("[UnityOpus] Failed to init encoder. Error code: " + error.ToString()); encoder = IntPtr.Zero; } } @@ -87,15 +86,6 @@ public int Encode(float[] pcm, byte[] output) ); } } - - public void ReportErrorsToMainThread() - { - while (errorQueue.TryDequeue(out var error)) - { - UnityEngine.Debug.LogError(error); - } - } - #region IDisposable Support private bool disposedValue = false; // To detect redundant calls @@ -130,4 +120,4 @@ public void Dispose() } #endregion } -} \ No newline at end of file +} diff --git a/Basis/Packages/basisdk/Scripts/Editor/AssetBundleBuilder/BasisAssetBundleBuilder.cs b/Basis/Packages/basisdk/Scripts/Editor/AssetBundleBuilder/BasisAssetBundleBuilder.cs index 4502669cf..fed792b9c 100644 --- a/Basis/Packages/basisdk/Scripts/Editor/AssetBundleBuilder/BasisAssetBundleBuilder.cs +++ b/Basis/Packages/basisdk/Scripts/Editor/AssetBundleBuilder/BasisAssetBundleBuilder.cs @@ -51,7 +51,7 @@ public static async Task> BuildAssetBundle(BasisAss } string Pathout = Path.GetDirectoryName(actualFilePath); - await SaveFileAsync(Pathout, "dontuploadmepassword", ".txt", Password); + await SaveFileAsync(Pathout, "dontuploadmepassword", "txt", Password); OpenRelativePath(Pathout); } @@ -195,4 +195,4 @@ public static void ResetAssetBundleName(string assetPath) assetImporter.assetBundleName = null; } } -} \ No newline at end of file +} diff --git a/Basis/Packages/basisdk/Scripts/Editor/AvatarPathConstants.cs b/Basis/Packages/basisdk/Scripts/Editor/AvatarPathConstants.cs index f61ac638e..25a7cab76 100644 --- a/Basis/Packages/basisdk/Scripts/Editor/AvatarPathConstants.cs +++ b/Basis/Packages/basisdk/Scripts/Editor/AvatarPathConstants.cs @@ -19,4 +19,6 @@ public class AvatarPathConstants public static readonly string AvatarDescription = "avatardescriptioninput"; public static readonly string AvatarIcon = "AvatarIcon"; public static readonly string Avatarpassword = "avatarpassword"; + + public static readonly string ErrorMessage = "ErrorMessage"; } diff --git a/Basis/Packages/basisdk/Scripts/Editor/AvatarSDK.cs b/Basis/Packages/basisdk/Scripts/Editor/AvatarSDK.cs index 12cb7378d..3330f6fca 100644 --- a/Basis/Packages/basisdk/Scripts/Editor/AvatarSDK.cs +++ b/Basis/Packages/basisdk/Scripts/Editor/AvatarSDK.cs @@ -3,6 +3,7 @@ using Basis.Scripts.Editor; using System; using System.Collections.Generic; +using System.IO; using System.Security.Cryptography; using System.Text; using UnityEditor; @@ -13,6 +14,7 @@ [CustomEditor(typeof(BasisAvatar))] public partial class BasisAvatarSDKInspector : Editor { + private const string MsgIL2CPPIsNotInstalled = "IL2CPP is not installed."; public VisualTreeAsset visualTree; public BasisAvatar Avatar; public VisualElement uiElementsRoot; @@ -22,11 +24,20 @@ public partial class BasisAvatarSDKInspector : Editor public AvatarSDKJiggleBonesView AvatarSDKJiggleBonesView = new AvatarSDKJiggleBonesView(); public AvatarSDKVisemes AvatarSDKVisemes = new AvatarSDKVisemes(); public Button EventCallbackAvatarBundleButton { get; private set; } + private bool IsIL2CPPIsInstalled; private void OnEnable() { visualTree = AssetDatabase.LoadAssetAtPath(AvatarPathConstants.uxmlPath); Avatar = (BasisAvatar)target; + IsIL2CPPIsInstalled = CheckIfIL2CPPIsInstalled(); + } + + private static bool CheckIfIL2CPPIsInstalled() + { + var playbackEndingDirectory = BuildPipeline.GetPlaybackEngineDirectory(EditorUserBuildSettings.activeBuildTarget, BuildOptions.None, false); + return !string.IsNullOrEmpty(playbackEndingDirectory) + && Directory.Exists(Path.Combine(playbackEndingDirectory, "Variations", "il2cpp")); } public override VisualElement CreateInspectorGUI() @@ -178,6 +189,8 @@ public void SetupItems() ObjectField AvatarIconField = uiElementsRoot.Q(AvatarPathConstants.AvatarIcon); + Label ErrorMessage = uiElementsRoot.Q