Ejemplo n.º 1
0
        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);
            }
Ejemplo n.º 3
0
            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");
                    }
                }
            }
Ejemplo n.º 4
0
        static LoaderEnabledCheck()
        {
            s_ARKitSettings = ARKitSettings.GetOrCreateSettings();
            ARKitBuildProcessor.s_LoaderEnabled = s_ARKitSettings.faceTracking;

            UpdateARKitDefines();
            EditorCoroutineUtility.StartCoroutineOwnerless(UpdateARKitDefinesCoroutine());
        }
Ejemplo n.º 5
0
            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);
                }
            }