diff --git a/plug-ins/Apple.Core/Apple.Core_Unity/Assets/Apple.Core/Editor/AppleBuild.cs b/plug-ins/Apple.Core/Apple.Core_Unity/Assets/Apple.Core/Editor/AppleBuild.cs index 4b8582e6..0bbe620c 100644 --- a/plug-ins/Apple.Core/Apple.Core_Unity/Assets/Apple.Core/Editor/AppleBuild.cs +++ b/plug-ins/Apple.Core/Apple.Core_Unity/Assets/Apple.Core/Editor/AppleBuild.cs @@ -321,9 +321,8 @@ public static string GetPbxProjectPath(BuildTarget buildTarget, string pathToBui { case BuildTarget.iOS: case BuildTarget.tvOS: - return $"{pathToBuiltProject}/Unity-iPhone.xcodeproj/project.pbxproj"; case BuildTarget.VisionOS: - return $"{pathToBuiltProject}/Unity-VisionOS.xcodeproj/project.pbxproj"; + return PBXProject.GetPBXProjectPath(pathToBuiltProject); case BuildTarget.StandaloneOSX: #if UNITY_2020_1_OR_NEWER return $"{pathToBuiltProject}/{new DirectoryInfo(pathToBuiltProject).Name}.xcodeproj/project.pbxproj"; @@ -335,6 +334,15 @@ public static string GetPbxProjectPath(BuildTarget buildTarget, string pathToBui } } + /// + /// Utility method for getting the path of the .xcodeproj bundle Unity generated in provided build project path + /// + public static string GetGeneratedXcodeProjectPath(BuildTarget buildTarget, string pathToBuiltProject) + { + var pbxProjectPath = GetPbxProjectPath(buildTarget, pathToBuiltProject); + return pbxProjectPath == null ? null : Path.GetDirectoryName(pbxProjectPath); + } + /// /// Utility method for getting a PBXProject object associated with the provided BuildTarget and built project path /// diff --git a/plug-ins/Apple.PHASE/Apple.PHASE_Unity/Assets/Editor/PHASEBuildStep.cs b/plug-ins/Apple.PHASE/Apple.PHASE_Unity/Assets/Editor/PHASEBuildStep.cs index e2f3a2fa..7f859df4 100644 --- a/plug-ins/Apple.PHASE/Apple.PHASE_Unity/Assets/Editor/PHASEBuildStep.cs +++ b/plug-ins/Apple.PHASE/Apple.PHASE_Unity/Assets/Editor/PHASEBuildStep.cs @@ -32,7 +32,8 @@ public override void OnBeginPostProcess(AppleBuildProfile appleBuildProfile, Bui project.WriteToFile(projectPath); } - var xcSettingsPath = $"{pathToBuiltProject}/Unity-iPhone.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings"; + var xcodeProjectPath = AppleBuild.GetGeneratedXcodeProjectPath(buildTarget, pathToBuiltProject); + var xcSettingsPath = $"{xcodeProjectPath}/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings"; // Change the xcode project to use the new build system. var xcSettingsDoc = new PlistDocument(); if (File.Exists(xcSettingsPath)) diff --git a/plug-ins/Apple.PHASE/Apple.PHASE_Unity/Assets/Plugins/PHASESpatializerAppController.mm b/plug-ins/Apple.PHASE/Apple.PHASE_Unity/Assets/Plugins/PHASESpatializerAppController.mm index 220695cf..737b9f56 100644 --- a/plug-ins/Apple.PHASE/Apple.PHASE_Unity/Assets/Plugins/PHASESpatializerAppController.mm +++ b/plug-ins/Apple.PHASE/Apple.PHASE_Unity/Assets/Plugins/PHASESpatializerAppController.mm @@ -1,5 +1,3 @@ -#import "UnityAppController.h" - extern "C" { struct UnityAudioEffectDefinition; typedef int (*UnityPluginGetAudioEffectDefinitionsFunc)( @@ -9,6 +7,41 @@ extern void UnityRegisterAudioPlugin( extern int UnityGetAudioEffectDefinitions(UnityAudioEffectDefinition*** definitionptr); } // extern "C" +#if UNITY_XCODE_PROJECT_TYPE_SWIFT + +#import +#import + +@interface PHASESpatializerRegistration : NSObject +@end + +@implementation PHASESpatializerRegistration + +static id sPHASERuntimeInitObserver = nil; + ++ (void)load +{ + sPHASERuntimeInitObserver = + [[NSNotificationCenter defaultCenter] addObserverForName:UnityNotifications.unityDidInitializeRuntime + object:nil + queue:nil + usingBlock:^(NSNotification* note) { + UnityRegisterAudioPlugin(UnityGetAudioEffectDefinitions); + + if (sPHASERuntimeInitObserver != nil) + { + [[NSNotificationCenter defaultCenter] removeObserver:sPHASERuntimeInitObserver]; + sPHASERuntimeInitObserver = nil; + } + }]; +} + +@end + +#else + +#import "UnityAppController.h" + @interface PHASESpatializerAppController : UnityAppController - (void)shouldAttachRenderDelegate; @end @@ -21,3 +54,5 @@ - (void)shouldAttachRenderDelegate @end IMPL_APP_CONTROLLER_SUBCLASS(PHASESpatializerAppController); + +#endif