예제 #1
0
        void OnGUI()
        {
            LoadFilePaths();
            if (settings == null)
            {
                this.LoadDefaultPageControllerSettings();
                EnumFileCreator.CreateOrOverwriteEnum("PagesEnum", PageNames.ToArray(), PagesEnumPath);
                pageTemplatePrefab = AssetDatabase.LoadAssetAtPath <GameObject> (PageTemplatePath);
            }
            scrollPos = EditorGUILayout.BeginScrollView(scrollPos);
            PageNavEditorWindow.Settings = settings;
            this.titleContent            = new GUIContent("PageNav Settings");
            GUIStyle myStyle = new GUIStyle();

            myStyle.fontSize         = 20;
            myStyle.normal.textColor = GUI.skin.label.normal.textColor;
            GUILayout.Label("  ", myStyle);
            GUILayout.Label("  PageController Settings", myStyle);
            GUILayout.Label("  ", myStyle);
            GUI.enabled = false;
            settings    = (PageNavSettings)EditorGUILayout.ObjectField("PageNav Settings", settings, typeof(PageNavSettings), false);
            GUI.enabled = true;

            if (GUILayout.Button("Create PageNav in open scene"))
            {
                CreatePageNavInScene();
            }

            ShowPagesSection();

            EditorGUILayout.EndScrollView();
        }
예제 #2
0
 void RemovePage(int removeIndex)
 {
     PageNames.RemoveAt(removeIndex);
     settings.PagesPrefabs.RemoveAt(removeIndex);
     settings.PagesCacheSettings.RemoveAt(removeIndex);
     settings.PagesCustomArguments.RemoveAt(removeIndex);
     settings.PagesTitles.RemoveAt(removeIndex);
     EnumFileCreator.CreateOrOverwriteEnum("PagesEnum", PageNames.ToArray(), PagesEnumPath);
     EditorUtility.SetDirty(settings);
 }
예제 #3
0
        // Draw the property inside the given rect
        public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
        {
            // Using BeginProperty / EndProperty on the parent property means that
            // prefab override logic works on the entire property.
            settingsPath  = PageNavEditorWindow.PathRoot + "/FrameWorkFiles/PageNavSettings.asset";
            PagesEnumPath = PageNavEditorWindow.PathRoot + "/FrameWorkFiles/Scripts";
            label         = EditorGUI.BeginProperty(position, label, property);
            label.text    = property.displayName;
            Rect pos = position;

            position        = EditorGUI.PrefixLabel(pos, label);
            position.width /= 2;
            bool hasChanged = false;

            EditorGUI.BeginChangeCheck();
            PagesEnum newEnum = (PagesEnum)EditorGUI.EnumPopup(position, ((PagesEnum)property.enumValueIndex));

            if (EditorGUI.EndChangeCheck())
            {
                hasChanged = true;
            }
            position.x += position.width;
            if (GUI.Button(position, "Show") && newEnum != PagesEnum.None)
            {
                if (settings == null)
                {
                    settings = AssetDatabase.LoadAssetAtPath <PageNavSettings> (settingsPath);
                }
                EditorGUIUtility.PingObject(settings.PagesPrefabs[(int)newEnum - 1]);
            }
            if (property.enumValueIndex >= property.enumNames.Length)
            {
                if (PageNavEditorWindow.PageNames != null)
                {
                    EnumFileCreator.CreateOrOverwriteEnum("PagesEnum", PageNavEditorWindow.PageNames.ToArray(), PagesEnumPath);
                }
                else
                {
                    Debug.LogWarning("it is necessary to rebuild the Pages Enum");
                    Debug.Log("it is necessary to rebuild the Pages Enum");
                }
                property.enumValueIndex = 0;
            }
            if (hasChanged)
            {
                try{
                    property.enumValueIndex = (int)newEnum;
                }catch (Exception e) {
                    property.enumValueIndex = 0;
                }
            }
            EditorGUI.EndProperty();
        }
예제 #4
0
 void ShowEnumEditButtons()
 {
     EditorGUILayout.BeginHorizontal();
     if (PageNames.Count > 0)
     {
         if (GUILayout.Button("Re-create PageEnum") && PageNames.Count >= 0)
         {
             EnumFileCreator.CreateOrOverwriteEnum("PagesEnum", PageNames.ToArray(), PagesEnumPath);
         }
     }
     if (GUILayout.Button("Show Pages Enum"))
     {
         UnityEngine.Object enumFile = AssetDatabase.LoadAssetAtPath <UnityEngine.Object> (PagesEnumPath + "/PagesEnum.cs");
         EditorGUIUtility.PingObject(enumFile);
     }
     EditorGUILayout.EndHorizontal();
 }
예제 #5
0
 void CreateNewPage(string newPagename)
 {
     if (!PageNames.Contains(newPageName))
     {
         if (!string.IsNullOrEmpty(newPageName))
         {
             Regex rgx = new Regex("[^a-zA-Z]");
             if (!rgx.IsMatch(newPageName))
             {
                 if (!CheckForControllerExistance(newPageName))
                 {
                     settings.PagesPrefabs.Add(CreatePageTemplatePrefab(newPageName));
                     PageNames.Add(newPageName);
                     settings.PagesCacheSettings.Add(true);
                     var pageArgs = new PageArgs();
                     pageArgs.PageToCreate = (PagesEnum)settings.PagesCustomArguments.Count + 1;
                     settings.PagesCustomArguments.Add(pageArgs);
                     settings.PagesTitles.Add(newPagename);
                     EnumFileCreator.CreateOrOverwriteEnum("PagesEnum", PageNames.ToArray(), PagesEnumPath);
                     pageCallBackGuard = false;
                     EditorUtility.DisplayProgressBar("Please wait...", "Waiting for editor to compile scripts", 0.5f);
                     ShowErrorBox = false;
                 }
             }
             else
             {
                 ShowErrorBox = true;
                 errorMessage = "The page name '" + newPageName + "', has invalid characters";
                 Debug.LogError("The page name '" + newPageName + "', has invalid characters");
             }
         }
         else
         {
             ShowErrorBox = true;
             errorMessage = "The pages name cannot be empty!";
             Debug.LogError("The pages name cannot be empty!");
         }
     }
     else
     {
         ShowErrorBox = true;
         errorMessage = "There is already a page named '" + newPageName + "'";
         Debug.LogError("There is already a page named '" + newPageName + "'");
     }
 }
예제 #6
0
 public void RecreateEnumFile()
 {
     EnumFileCreator.CreateOrOverwriteEnum("PagesEnum", PageNames.ToArray(), PagesEnumPath);
 }