コード例 #1
0
        private void DrawSettingsButtons(BuildConfig.BuildConfig buildConfig, float currentViewWidth, List <Type> settingsToAdd)
        {
            int buttonWidth = (int)(currentViewWidth / 3.0f);

            for (int i = 0; i < settingsToAdd.Count; i += 3)
            {
                using (new EditorGUILayout.HorizontalScope())
                {
                    for (int j = 0; j < 3; j++)
                    {
                        int index = i + j;

                        if (index >= settingsToAdd.Count)
                        {
                            break;
                        }

                        var settingsType = settingsToAdd[index];

                        string buttonName = settingsType.Name;

                        if (buttonName.EndsWith("Settings"))
                        {
                            buttonName = buttonName.Replace("Settings", string.Empty);
                        }

                        if (GUILayout.Button(buttonName, GUILayout.Width(buttonWidth)))
                        {
                            buildConfig.Settings.Add(Activator.CreateInstance(settingsType) as BuildConfigSettings);
                        }
                    }
                }
            }
        }
        private static string GetMenuItemName(BuildConfig buildConfig)
        {
            string menuItemName = "Tools/Lost/Configs/" + GetSafeBuildConfigName(buildConfig);

            // Removing the root config from the menu item path if we have more than one configs
            if (LostLibrary.BuildConfigs.BuildConfigs.Count > 1)
            {
                menuItemName = menuItemName.Replace(LostLibrary.BuildConfigs.RootBuildConfig.SafeName + "/", string.Empty);
            }

            return(menuItemName);
        }
コード例 #3
0
        private void DrawBuildConfigSettings(BuildConfig.BuildConfig buildConfig, BuildConfigSettings settings, SerializedProperty settingsSerializedProperty, bool isInherited, float currentViewWidth, out bool didDeleteSettings)
        {
            didDeleteSettings = false;

            bool foldoutVisible = true;
            Rect boxRect        = new Rect();

            var verticleHelper = settings.IsInline ?
                                 (IDisposable) new EditorGUILayout.HorizontalScope("box") :
                                 (IDisposable) new FoldoutScope(settings.DisplayName.GetHashCode(), settings.DisplayName, out foldoutVisible, out boxRect, false);

            using (verticleHelper)
            {
                float y = settings.IsInline ? (verticleHelper as EditorGUILayout.HorizontalScope).rect.y : boxRect.y;

                // Drawing the button
                float buttonSize   = 14;
                float rightPadding = 25;
                float topPadding   = 2;

                Rect buttonRect = new Rect(new Vector2(currentViewWidth - rightPadding, y + topPadding), new Vector2(buttonSize, buttonSize));

                if (isInherited)
                {
                    if (ButtonUtil.DrawAddButton(buttonRect))
                    {
                        buildConfig.Settings.Add(Activator.CreateInstance(settings.GetType()) as BuildConfigSettings);
                    }
                }
                else
                {
                    if (ButtonUtil.DrawDeleteButton(buttonRect))
                    {
                        buildConfig.Settings.Remove(settings);
                        didDeleteSettings = true;
                        return;
                    }
                }

                // Breaking out if we're not suppose to show the foldout
                if (foldoutVisible == false)
                {
                    return;
                }

                // Iterating and displaying all properties
                using (new EditorGUI.DisabledGroupScope(isInherited))
                {
                    float width = currentViewWidth - (settings.IsInline ? 60 : 15);
                    settings.DrawSettings(settings, settingsSerializedProperty, width);
                }
            }
        }
コード例 #4
0
        public override BuildPlayerOptions ChangeBuildPlayerOptions(BuildConfig.BuildConfig buildConfig, BuildPlayerOptions options)
        {
            if (this.buildInStrictMode)
            {
                options.options |= BuildOptions.StrictMode;
            }
            else
            {
                options.options &= ~BuildOptions.StrictMode;
            }

            return(options);
        }
コード例 #5
0
        private static EditorBuildConfigs CreateEditorBuildConfigs()
        {
            string editorBuildConfigAssetPath = GetAssetPath(BuildConfigsAssetName);

            EditorBuildConfigs editorBuildConfigs;

            if (File.Exists(editorBuildConfigAssetPath) == false)
            {
                var rootConfig = new BuildConfig.BuildConfig();
                rootConfig.Name = "Root";
                AddSetting <BundleIdentifierSetting>(rootConfig);
                AddSetting <BootloaderSettings>(rootConfig);
                AddSetting <BuildPlayerContentSettings>(rootConfig);
                AddSetting <CloudBuildSetBuildNumber>(rootConfig);

                var devConfig = new BuildConfig.BuildConfig();
                devConfig.Name      = "Dev";
                devConfig.IsDefault = true;
                devConfig.ParentId  = rootConfig.Id;
                AddSetting <DevelopmentBuildSetting>(devConfig).IsDevelopmentBuild = true;
                AddSetting <PlayFabSettings>(devConfig).IsDevelopmentEnvironment   = true;

                var liveConfig = new BuildConfig.BuildConfig();
                liveConfig.Name     = "Live";
                liveConfig.ParentId = rootConfig.Id;
                AddSetting <DevelopmentBuildSetting>(liveConfig).IsDevelopmentBuild = false;
                AddSetting <PlayFabSettings>(liveConfig).IsDevelopmentEnvironment   = false;

                // Creating the AppConfigs scriptable object
                editorBuildConfigs = ScriptableObject.CreateInstance <EditorBuildConfigs>();
                editorBuildConfigs.BuildConfigs.Add(rootConfig);
                editorBuildConfigs.BuildConfigs.Add(devConfig);
                editorBuildConfigs.BuildConfigs.Add(liveConfig);

                CreateAsset(editorBuildConfigs, editorBuildConfigAssetPath);
            }
            else
            {
                editorBuildConfigs = AssetDatabase.LoadAssetAtPath <EditorBuildConfigs>(editorBuildConfigAssetPath);
            }

            return(editorBuildConfigs);

            T AddSetting <T>(BuildConfig.BuildConfig config) where T : BuildConfigSettings, new()
            {
                var newSettings = new T();

                config.Settings.Add(newSettings);
                return(newSettings);
            }
        }
コード例 #6
0
        private static void GetActiveDefines(BuildConfig buildConfig, HashSet <string> defines)
        {
            if (buildConfig != null)
            {
                if (buildConfig.Defines != null)
                {
                    foreach (var define in buildConfig.Defines)
                    {
                        defines.Add(define);
                    }
                }

                GetActiveDefines(buildConfig.Parent, defines);
            }
        }
コード例 #7
0
        private void DrawBuildConfigSettings(BuildConfig.BuildConfig buildConfig, SerializedProperty settingsSerializedProperty, float currentViewWidth)
        {
            List <Type> settingsToAdd = new List <Type>();

            foreach (var settingsType in BuildSettingsTypes)
            {
                BuildConfigSettings settings = buildConfig.GetSettings(settingsType, out bool isInherited);

                if (settings == null)
                {
                    settingsToAdd.Add(settingsType);
                }
                else
                {
                    // Checking if we should skip this
                    if (isInherited && buildConfig.ShowInherited == false)
                    {
                        continue;
                    }

                    SerializedProperty currentSettings = null;

                    for (int i = 0; i < settingsSerializedProperty.arraySize; i++)
                    {
                        var s = settingsSerializedProperty.GetArrayElementAtIndex(i);

                        if (s.managedReferenceFullTypename.EndsWith(settingsType.FullName))
                        {
                            currentSettings = s;
                        }
                    }

                    this.DrawBuildConfigSettings(buildConfig, settings, currentSettings, isInherited, currentViewWidth, out bool didDeleteSettings);

                    if (didDeleteSettings)
                    {
                        break;
                    }
                }
            }

            EditorGUILayout.Space();
            EditorGUILayout.Space();
            EditorGUILayout.Space();

            EditorGUILayout.LabelField("Settings");
            this.DrawSettingsButtons(buildConfig, currentViewWidth, settingsToAdd);
        }
コード例 #8
0
        private void DrawBuildConfig(BuildConfig.BuildConfig buildConfig, SerializedProperty buildConfigSerialiedProperty, float currentViewWidth)
        {
            buildConfig.ShowInherited = EditorGUILayout.Toggle("Show Inherited", buildConfig.ShowInherited);
            using (new EditorGUI.DisabledGroupScope(true))
            {
                EditorGUILayout.TextField("Id", buildConfig.Id);
            }

            buildConfig.Name     = EditorGUILayout.TextField("Name", buildConfig.Name);
            buildConfig.ParentId = EditorGUILayout.TextField("Parent Id", buildConfig.ParentId);
            EditorGUILayout.PropertyField(buildConfigSerialiedProperty.FindPropertyRelative("customDefines"));

            EditorGUILayout.Space();
            EditorGUILayout.Space();

            this.DrawBuildConfigSettings(buildConfig, buildConfigSerialiedProperty.FindPropertyRelative("settings"), currentViewWidth);

            if (GUI.changed)
            {
                EditorUtility.SetDirty(LostLibrary.BuildConfigs);
            }
        }
コード例 #9
0
        public override void GetRuntimeConfigSettings(BuildConfig.BuildConfig buildConfig, Dictionary <string, string> runtimeConfigSettings)
        {
            var settings = buildConfig.GetSettings <BootloaderSettings>();

            if (settings == null)
            {
                return;
            }

            // Bootloader
            runtimeConfigSettings.Add(Bootloader.BootloaderLocation, ((int)settings.bootloaderLocation).ToString());
            runtimeConfigSettings.Add(Bootloader.BootloaderPath, settings.bootloaderPath);

            // Managers
            runtimeConfigSettings.Add(Bootloader.BootloaderManagersLocation, ((int)settings.managersLocation).ToString());
            runtimeConfigSettings.Add(Bootloader.BootloaderManagersPath, settings.managersPath);

            // Reboot
            runtimeConfigSettings.Add(Bootloader.BootloaderRebootSceneName, settings.rebootSceneName);

            // Ignoring
            runtimeConfigSettings.Add(Bootloader.BootloaderIgnoreSceneNames, settings.scenesToIgnore);
        }
コード例 #10
0
        private void OnGUI()
        {
            var buildConfigs = LostLibrary.BuildConfigs.BuildConfigs;

            float columnWidth = 150;
            float padding     = 3;

            float leftSideX      = padding;
            float leftSideY      = padding;
            float leftSideWidth  = columnWidth - (2 * padding);
            float leftSideHeight = this.position.height - (2 * padding);

            using (new GUILayout.AreaScope(new Rect(leftSideX, leftSideY, leftSideWidth, leftSideHeight)))
            {
                // https://forum.unity.com/threads/how-to-make-own-list-ui-in-editor-window.461428/
                Color    color_default  = GUI.backgroundColor;
                Color    color_selected = Color.gray;
                GUIStyle itemStyle      = new GUIStyle(GUI.skin.button);
                itemStyle.alignment         = TextAnchor.MiddleLeft;
                itemStyle.active.background = itemStyle.normal.background;
                itemStyle.margin            = new RectOffset(0, 0, 0, 0);

                if (buildConfigs.IsNullOrEmpty() == false)
                {
                    foreach (var buildConfig in buildConfigs.OrderBy(x => x.FullName))
                    {
                        GUI.backgroundColor = (buildConfig == SelectedConfig) ? color_selected : Color.clear;

                        StringBuilder depthString = new StringBuilder();
                        for (int i = 0; i < buildConfig.Depth * 4; i++)
                        {
                            depthString.Append(" ");
                        }

                        if (GUILayout.Button(depthString + buildConfig.Name, itemStyle))
                        {
                            SelectedConfig = buildConfig;
                        }

                        GUI.backgroundColor = color_default; //this is to avoid affecting other GUIs outside of the list
                    }
                }
            }

            float rightSideX      = columnWidth + padding;
            float rightSideY      = padding;
            float rightSideWidth  = this.position.width - columnWidth - (2.0f * padding);
            float rightSideHeight = this.position.height - (2.0f * padding);

            using (new GUILayout.AreaScope(new Rect(rightSideX, rightSideY, rightSideWidth, rightSideHeight)))
            {
                SerializedObject   editorBuildConfigsSO           = new SerializedObject(LostLibrary.BuildConfigs);
                SerializedProperty buildConfigsSerializedProperty = editorBuildConfigsSO.FindProperty("buildConfigs");

                SerializedProperty selectSerializedProperty = null;

                if (SelectedConfig != null)
                {
                    for (int i = 0; i < buildConfigsSerializedProperty.arraySize; i++)
                    {
                        var element = buildConfigsSerializedProperty.GetArrayElementAtIndex(i);

                        if (element.FindPropertyRelative("id").stringValue == SelectedConfig.Id)
                        {
                            selectSerializedProperty = element;
                            break;
                        }
                    }

                    using (new LabelWidthScope(220))
                    {
                        this.DrawBuildConfig(SelectedConfig, selectSerializedProperty, rightSideWidth);
                    }
                }
            }
        }
コード例 #11
0
 public virtual BuildPlayerOptions ChangeBuildPlayerOptions(BuildConfig buildConfig, BuildPlayerOptions options)
 {
     return(options);
 }
コード例 #12
0
 public virtual void GetRuntimeConfigSettings(BuildConfig buildConfig, Dictionary <string, string> runtimeConfigSettings)
 {
 }
 private static string GetSafeBuildConfigName(BuildConfig buildConfig)
 {
     return(buildConfig.Parent != null?
            GetSafeBuildConfigName(buildConfig.Parent) + "/" + buildConfig.SafeName:
            buildConfig.SafeName);
 }