static void HandleARKitRequiredFlag(string pathToBuiltProject) { var arkitSettings = ARKitSettings.GetOrCreateSettings(); string plistPath = Path.Combine(pathToBuiltProject, "Info.plist"); PlistDocument plist = new PlistDocument(); plist.ReadFromString(File.ReadAllText(plistPath)); PlistElementDict rootDict = plist.root; // Get or create array to manage device capabilities const string capsKey = "UIRequiredDeviceCapabilities"; PlistElementArray capsArray; PlistElement pel; if (rootDict.values.TryGetValue(capsKey, out pel)) { capsArray = pel.AsArray(); } else { capsArray = rootDict.CreateArray(capsKey); } // Remove any existing "arkit" plist entries const string arkitStr = "arkit"; capsArray.values.RemoveAll(x => arkitStr.Equals(x.AsString())); if (arkitSettings.ARKitRequirement == ARKitSettings.Requirement.Required) { // Add "arkit" plist entry capsArray.AddString(arkitStr); } File.WriteAllText(plistPath, plist.WriteToString()); }
public void OnPreprocessBuild(BuildReport report) { if (report.summary.platform != BuildTarget.iOS) { return; } if (string.IsNullOrEmpty(PlayerSettings.iOS.cameraUsageDescription)) { throw new BuildFailedException("ARKit requires a Camera Usage Description (Player Settings > iOS > Other Settings > Camera Usage Description)"); } SelectStaticLib(); EnsureMetalIsFirstApi(); if (ARKitSettings.GetOrCreateSettings().requirement == ARKitSettings.Requirement.Required) { EnsureMinimumBuildTarget(); EnsureTargetArchitecturesAreSupported(report.summary.platformGroup); } else if (PlayerSettings.GetArchitecture(report.summary.platformGroup) == k_TargetArchitectureUniversal) { EnsureOpenGLIsUsed(); } BuildHelper.AddBackgroundShaderToProject(ARKitCameraSubsystem.backgroundShaderName); }
public void OnPreprocessBuild(BuildReport report) { if (report.summary.platform != BuildTarget.iOS) { return; } if (string.IsNullOrEmpty(PlayerSettings.iOS.cameraUsageDescription)) { throw new BuildFailedException("ARKit requires a Camera Usage Description (Player Settings > iOS > Other Settings > Camera Usage Description)"); } EnsureOnlyMetalIsUsed(); EnsureTargetArchitecturesAreSupported(report.summary.platformGroup); if (LinkerUtility.AssemblyStrippingEnabled(report.summary.platformGroup)) { LinkerUtility.EnsureLinkXmlExistsFor("ARKit"); var arkitSettings = ARKitSettings.GetOrCreateSettings(); if (arkitSettings.ARKitFaceTrackingEnabled) { LinkerUtility.EnsureLinkXmlExistsFor("ARKit.FaceTracking"); } } }
static LoaderEnabledCheck() { s_ARKitSettings = ARKitSettings.GetOrCreateSettings(); ARKitBuildProcessor.s_LoaderEnabled = s_ARKitSettings.faceTracking; UpdateARKitDefines(); EditorCoroutineUtility.StartCoroutineOwnerless(UpdateARKitDefinesCoroutine()); }
public void OnPreprocessBuild(BuildReport report) { if (report.summary.platform != BuildTarget.iOS) { return; } if (string.IsNullOrEmpty(PlayerSettings.iOS.cameraUsageDescription)) { throw new BuildFailedException("ARKit requires a Camera Usage Description (Player Settings > iOS > Other Settings > Camera Usage Description)"); } EnsureOnlyMetalIsUsed(); EnsureTargetArchitecturesAreSupported(report.summary.platformGroup); var arkitSettings = ARKitSettings.GetOrCreateSettings(); if (LinkerUtility.AssemblyStrippingEnabled(report.summary.platformGroup)) { LinkerUtility.EnsureLinkXmlExistsFor("ARKit"); if (arkitSettings.ARKitFaceTrackingEnabled) { LinkerUtility.EnsureLinkXmlExistsFor("ARKit.FaceTracking"); } } if (!arkitSettings.ARKitFaceTrackingEnabled) { EnsureLinkXmlDoesNotContainFaceTracking(); } var pluginImporter = AssetImporter.GetAtPath("Packages/com.unity.xr.arkit/Runtime/iOS/libUnityARKitFaceTracking.a") as PluginImporter; if (pluginImporter) { pluginImporter.SetCompatibleWithPlatform(BuildTarget.iOS, arkitSettings.ARKitFaceTrackingEnabled); } }