コード例 #1
0
        public static async void OpenPackagesWindow()
        {
            if (window != null)
            {
                window.Close();
            }

            window = CreateInstance(typeof(MixedRealityPackagesWindow)) as MixedRealityPackagesWindow;
            Debug.Assert(window != null);
            window.titleContent = new GUIContent("XRTK UPM Packages");
            window.minSize      = new Vector2(288, 320);
            isError             = false;
            window.ShowUtility();

            try
            {
                packages = await MixedRealityPackageUtilities.GetCurrentMixedRealityPackagesAsync();
            }
            catch (Exception e)
            {
                Debug.LogError($"{e.Message}\n{e.StackTrace}");
                isError = true;
                return;
            }

            isPackageEnabled   = new bool[packages.Length];
            isPackageInstalled = new bool[packages.Length];

            for (var i = 0; i < packages.Length; i++)
            {
                isPackageEnabled[i]   = packages[i].Item2;
                isPackageInstalled[i] = packages[i].Item3;
            }
        }
コード例 #2
0
        private void OnGUI()
        {
            if (window == null)
            {
                Close();
            }

            EditorGUILayout.BeginVertical();
            MixedRealityInspectorUtility.RenderMixedRealityToolkitLogo();
            EditorGUILayout.LabelField("Mixed Reality Toolkit Unity Package Manager");

            if (packages == null)
            {
                EditorGUILayout.LabelField(isError ? "Failed to find packages!" : "Gathering Package data...");
                EditorGUILayout.EndVertical();
                return;
            }

            var prevLabelWidth = EditorGUIUtility.labelWidth;

            EditorGUIUtility.labelWidth = 256;

            for (var i = 0; i < packages.Length; i++)
            {
                (MixedRealityPackageInfo package, bool packageEnabled, bool packageInstalled) = packages[i];

                bool CheckDependency(Tuple <MixedRealityPackageInfo, bool, bool> packageSetting)
                {
                    (MixedRealityPackageInfo packageInfo, bool isEnabled, bool isInstalled) = packageSetting;
                    return(packageEnabled && packageInstalled && isEnabled && isInstalled && packageInfo.Dependencies.Contains(package.Name));
                }

                var hasDependency = packages.Any(CheckDependency);
                GUI.enabled = !package.IsRequiredPackage && !hasDependency;
                EditorGUILayout.BeginHorizontal();
                GUILayout.Space(16);
                isPackageEnabled[i] = EditorGUILayout.Toggle(isPackageEnabled[i], GUILayout.Width(12));
                var packageName = package.DisplayName.Replace("XRTK.", package.IsRequiredPackage
                    ? " (Required) " : hasDependency
                        ? " (Dependency) " : "");
                EditorGUILayout.LabelField(new GUIContent(packageName));
                GUILayout.FlexibleSpace();
                EditorGUILayout.EndHorizontal();
                GUI.enabled = true;
            }

            EditorGUIUtility.labelWidth = prevLabelWidth;

            if (GUILayout.Button("Apply"))
            {
                for (var i = 0; i < packages.Length; i++)
                {
                    (MixedRealityPackageInfo package, bool _, bool _) = packages[i];

                    if (!isPackageEnabled[i] && isPackageInstalled[i])
                    {
                        EditorPreferences.Set($"{package.Name}_enabled", false);

                        if (MixedRealityPackageUtilities.DebugEnabled)
                        {
                            Debug.LogWarning($"{package.Name}_enabled == false");
                        }
                    }

                    if (isPackageEnabled[i] && !isPackageInstalled[i])
                    {
                        EditorPreferences.Set($"{package.Name}_enabled", true);

                        if (MixedRealityPackageUtilities.DebugEnabled)
                        {
                            Debug.LogWarning($"{package.Name}_enabled == true");
                        }
                    }
                }

                MixedRealityPackageUtilities.CheckPackageManifest();
                Close();
            }

            EditorGUILayout.EndVertical();
        }
コード例 #3
0
        private void OnGUI()
        {
            if (window == null)
            {
                Close();
            }

            EditorGUILayout.BeginVertical();
            MixedRealityInspectorUtility.RenderMixedRealityToolkitLogo();
            EditorGUILayout.LabelField("Mixed Reality Toolkit Unity Package Manager");

            if (packages == null)
            {
                EditorGUILayout.LabelField(isError ? "Failed to find packages!" : "Gathering Package data...");
                EditorGUILayout.EndVertical();
                return;
            }

            var prevLabelWidth = EditorGUIUtility.labelWidth;

            EditorGUIUtility.labelWidth = 256;

            for (var i = 0; i < packages.Length; i++)
            {
                (MixedRealityPackageInfo package, bool _) = packages[i];

                GUI.enabled = !package.IsRequiredPackage;
                EditorGUILayout.BeginHorizontal();
                GUILayout.Space(16);
                isPackageEnabled[i] = EditorGUILayout.Toggle(isPackageEnabled[i], GUILayout.Width(12));
                var packageName = package.DisplayName.Replace("XRTK.", package.IsRequiredPackage ? " (Required) " : string.Empty);
                EditorGUILayout.LabelField(new GUIContent(packageName));
                GUILayout.FlexibleSpace();
                EditorGUILayout.EndHorizontal();
                GUI.enabled = true;
            }

            EditorGUIUtility.labelWidth = prevLabelWidth;

            if (GUILayout.Button("Apply"))
            {
                for (var i = 0; i < packages.Length; i++)
                {
                    (MixedRealityPackageInfo package, bool isInstalled) = packages[i];

                    if (!isPackageEnabled[i] && isInstalled)
                    {
                        package.IsEnabled = false;

                        if (MixedRealityPackageUtilities.DebugEnabled)
                        {
                            Debug.LogWarning($"{package.Name} isEnabled == false");
                        }
                    }

                    if (isPackageEnabled[i] && !isInstalled)
                    {
                        package.IsEnabled = true;

                        if (MixedRealityPackageUtilities.DebugEnabled)
                        {
                            Debug.LogWarning($"{package.Name} isEnabled == true");
                        }
                    }

                    packages[i] = new Tuple <MixedRealityPackageInfo, bool>(package, isInstalled);
                }

                var newPackages = packages.Select(tuple => tuple.Item1).ToArray();
                MixedRealityPackageUtilities.PackageSettings.MixedRealityPackages = newPackages;
                MixedRealityPackageUtilities.CheckPackageManifest();
                Close();
            }

            if (GUILayout.Button("Restore Default Packages"))
            {
                for (int i = 0; i < packages.Length; i++)
                {
                    (MixedRealityPackageInfo package, bool isInstalled) = packages[i];

                    if (package.IsDefaultPackage)
                    {
                        package.IsEnabled = true;
                    }

                    packages[i] = new Tuple <MixedRealityPackageInfo, bool>(package, isInstalled);
                }

                var newPackages = packages.Select(tuple => tuple.Item1).ToArray();
                MixedRealityPackageUtilities.PackageSettings.MixedRealityPackages = newPackages;
                MixedRealityPackageUtilities.CheckPackageManifest();
                Close();
            }

            EditorGUILayout.EndVertical();
        }