Esempio n. 1
0
        public static void RunConfigCleanup()
        {
            if (configAssets == null)
            {
                configAssets = SavePortEditorUtils.FindAllAssetsOfType <SaveConfiguration>();
            }

            foreach (SaveConfiguration config in configAssets)
            {
                List <ContainerTableEntry> emptyEntries = new List <ContainerTableEntry>();

                foreach (ContainerTableEntry entry in config.GetContainerEntries())
                {
                    if (entry.container == null)
                    {
                        emptyEntries.Add(entry);
                    }
                }

                foreach (ContainerTableEntry entry in emptyEntries)
                {
                    config.GetContainerEntries().Remove(entry);
                }

                EditorUtility.SetDirty(config);
            }
        }
        public override void OnInspectorGUI()
        {
            if (hasCustomInspector)
            {
                inspectorGUIMethod.Invoke(container, null);
            }
            else
            {
                DrawDefaultInspector();
            }

            EditorGUILayout.Space();

            GUILayout.BeginHorizontal();
            EditorGUILayout.PrefixLabel("Runtime Value");

            if (container.UntypedValue == null)
            {
                EditorGUILayout.SelectableLabel("null");
            }
            else
            {
                EditorGUILayout.SelectableLabel(container.UntypedValue.ToString());
            }
            GUILayout.EndHorizontal();

            GUILayout.BeginHorizontal();

            if (GUILayout.Button("Force Value Update Event"))
            {
                container.ForceUpdate();
            }

            if (GUILayout.Button("Saving & Loading"))
            {
                GenericMenu menu = new GenericMenu();
                List <SaveConfiguration> configurations = SavePortEditorUtils.FindAllAssetsOfType <SaveConfiguration>();

                if (configurations.Count == 0)
                {
                    EditorUtility.DisplayDialog("SavePort", "No SavePort configuration files were found in this project. Please create one to proceed.", "OK");
                    return;
                }

                menu.AddDisabledItem(new GUIContent("Select configuration"));

                foreach (SaveConfiguration config in configurations)
                {
                    bool isSaved = ArrayUtility.Contains(config.GetContainerEntries().Select(x => x.container).ToArray(), container);
                    menu.AddItem(new GUIContent(config.name), isSaved, () => ProcessConfigMenu(container, config, isSaved));
                }

                menu.ShowAsContext();
            }

            GUILayout.EndHorizontal();
        }