Ejemplo n.º 1
0
    public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
    {
        Propulsion propulsion = fieldInfo.GetValue(property.serializedObject.targetObject) as Propulsion;

        property.isExpanded = EditorGUI.Foldout(CustomEditorUtility.GetPropertyRect(0, position), property.isExpanded, property.name);
        if (property.isExpanded)
        {
            CustomEditorUtility.QuickSerializeRelativeGUI("separateAxes", property, position, 1);
            float w = EditorGUIUtility.labelWidth;
            EditorGUIUtility.labelWidth = 0.01f;
            if (propulsion.separateAxes)
            {
                CustomEditorUtility.QuickSerializeRelativeGUI("strengthHoriz", property, CustomEditorUtility.GetPropertyRect(2, position, 0, 0.5f, position.width));
                CustomEditorUtility.QuickSerializeRelativeGUI("curveHoriz", property, CustomEditorUtility.GetPropertyRect(2, position, 0.5f, 0.5f, position.width));

                CustomEditorUtility.QuickSerializeRelativeGUI("strengthVerti", property, CustomEditorUtility.GetPropertyRect(3, position, 0, 0.5f, position.width));
                CustomEditorUtility.QuickSerializeRelativeGUI("curveVerti", property, CustomEditorUtility.GetPropertyRect(3, position, 0.5f, 0.5f, position.width));
            }

            else
            {
                CustomEditorUtility.QuickSerializeRelativeGUI("strength", property, CustomEditorUtility.GetPropertyRect(2, position, 0, 0.5f, position.width));
                CustomEditorUtility.QuickSerializeRelativeGUI("curve", property, CustomEditorUtility.GetPropertyRect(2, position, 0.5f, 0.5f, position.width));
            }

            EditorGUIUtility.labelWidth = w;
            int start = propulsion.separateAxes ? 4 : 3;
            CustomEditorUtility.QuickSerializeRelativeGUI("duration", property, position, start, 0, 1, position.width);
            CustomEditorUtility.QuickSerializeRelativeGUI("airControl", property, position, start + 1, 0, 1, position.width);
            CustomEditorUtility.QuickSerializeRelativeGUI("direction", property, position, start + 2, 0, 1, position.width);
            CustomEditorUtility.QuickSerializeRelativeGUI("priority", property, position, start + 3, 0, 1, position.width);
        }

        property.serializedObject.ApplyModifiedProperties();
    }
Ejemplo n.º 2
0
        void OnGUI()
        {
            DrawerTransition();
            DataTransition();
            Init();

            GUILayout.BeginVertical();
            DrawHeader();
            Rect temp = GUILayoutUtility.GetLastRect();

            GUILayout.BeginHorizontal();
            DrawSideBar();
            DrawEditor();
            GUILayout.EndHorizontal();
            GUILayout.EndVertical();

            CustomEditorUtility.DrawShadow(CustomEditorUtility.Directions.Bottom, temp);

            DoChangeCheck();
            if (ForceSaveFlag)
            {
                OnDatabaseChanged();
                ForceSaveFlag = false;
            }
            if (EditorApplication.timeSinceStartup - lastSavedTime > AutoSaveInterval)
            {
                SaveDatabase();
            }
        }
Ejemplo n.º 3
0
        public override void OnInspectorGUI()
        {
            CustomEditorUtility.DrawTitle("Quik Feedback");

            DrawGeneralSettings();
            EditorGUILayout.Space();
            DrawFeedbacks();

            serializedObject.ApplyModifiedProperties();
        }
Ejemplo n.º 4
0
 public override float GetPropertyHeight(SerializedProperty property, GUIContent label)
 {
     if (property.isExpanded)
     {
         return(CustomEditorUtility.PropertyHeight(8));
     }
     else
     {
         return(CustomEditorUtility.PropertyHeight(1));
     }
 }
Ejemplo n.º 5
0
    public override void OnInspectorGUI()
    {
        EditorGUILayout.Space();

        CustomEditorUtility.DrawTitle("Pool Manager");
        CustomEditorUtility.QuickSerializeObject("instantiateOnAwake", serializedObject);
        DrawPools();
        RefreshPoolsButton();
        AddPoolButton();
        DestroyPoolsButton();
        serializedObject.ApplyModifiedProperties();
    }
Ejemplo n.º 6
0
        private void DrawGeneralSettings()
        {
            EditorGUILayout.BeginVertical("box");

            CustomEditorUtility.QuickSerializeObject("feedbackName", serializedObject);
            CustomEditorUtility.QuickSerializeObject("enableDebug", serializedObject);
            CustomEditorUtility.QuickSerializeObject("generalDelay", serializedObject);
            if (f.enableDebug)
            {
                CustomEditorUtility.QuickSerializeObject("debugKey", serializedObject);
            }
            EditorGUILayout.EndVertical();
        }
Ejemplo n.º 7
0
 void UpdateCache(Sprite sprite)
 {
     if (sprite == null)
     {
         return;
     }
     previewTexRectCache = new Rect(sprite.rect.position.x / sprite.texture.width,
                                    sprite.rect.position.y / sprite.texture.height,
                                    sprite.rect.width / sprite.texture.width,
                                    sprite.rect.height / sprite.texture.height);
     previewRect = CustomEditorUtility.ScaleRect(boxRect, 0.96f);
     previewRect = CustomEditorUtility.TransfromRectRatio(previewRect, false, previewRect.size, new Vector2(16, 9), new Vector2(sprite.rect.width, sprite.rect.height));
 }
Ejemplo n.º 8
0
        public static void CreateLevelData()
        {
            AudioClip clip = Selection.activeObject as AudioClip;
            SoundItem item = ScriptableObject.CreateInstance <SoundItem>();

            if (item != null && clip != null)
            {
                item.clip = clip;
            }

            CustomEditorUtility.CreateAsset <SoundItem>(item, (clip != null ? clip.name : ""));

            EditorUtility.FocusProjectWindow();
            Selection.activeObject = item;
        }
Ejemplo n.º 9
0
    public override void OnInspectorGUI()
    {
        EditorGUI.BeginChangeCheck();

        CustomEditorUtility.DrawTitle(t.name.Replace("POW_", ""));

        CustomEditorUtility.QuickSerializeObject("cooldown", serializedObject);

        EditorGUILayout.LabelField("Actions", EditorStyles.boldLabel);

        SerializedProperty actions = serializedObject.FindProperty("actions");

        for (int i = 0; i < actions.arraySize; i++)
        {
            EditorGUILayout.BeginVertical("box");
            SerializedProperty action = actions.GetArrayElementAtIndex(i);

            EditorGUILayout.BeginHorizontal();
            if (i < t.actions.Count)
            {
                t.actions[i].enabled = EditorGUILayout.Toggle(t.actions[i].enabled);
            }
            CustomEditorUtility.QuickSerializeRelative("delay", action);
            if (CustomEditorUtility.RemoveButton())
            {
                Undo.RecordObject(t, "Remove");
                t.actions.RemoveAt(i);
            }
            EditorGUILayout.EndHorizontal();

            CustomEditorUtility.QuickSerializeRelative("action", action);
            EditorGUILayout.EndVertical();
        }

        if (CustomEditorUtility.AddButton())
        {
            Undo.RecordObject(t, "Add");
            t.actions.Add(new PowerActionSettings());
        }

        if (EditorGUI.EndChangeCheck())
        {
            EditorUtility.SetDirty(t);
            Repaint();
        }
        serializedObject.ApplyModifiedProperties();
    }
Ejemplo n.º 10
0
    public override void OnInspectorGUI()
    {
        EditorGUI.BeginChangeCheck();

        CustomEditorUtility.DrawTitle("Instantiate " + EntityNames[t.indexInPool]);


        t.indexInPool = EditorGUILayout.Popup(t.indexInPool, EntityNames.ToArray());

        CustomEditorUtility.QuickSerializeObject(EntityNames[t.indexInPool], serializedObject);

        serializedObject.ApplyModifiedProperties();
        if (EditorGUI.EndChangeCheck())
        {
            EditorUtility.SetDirty(t);
        }
    }
Ejemplo n.º 11
0
        void DrawAttachedImages(InfoLogEntry entry)
        {
            GUILayout.Label("Attached Images");

            GUILayout.BeginHorizontal(GUILayout.Height(160));
            GUILayout.Space(8);
            for (int i = 0; i < entry.attachedImages.Count; i++)
            {
                Rect temp;
                GUILayout.BeginVertical(GUILayout.Width(160));
                GUILayout.Space(4);
                GUILayout.Box(GUIContent.none, GUILayout.Width(160), GUILayout.Height(160));
                temp = GUILayoutUtility.GetLastRect();
                GUI.DrawTextureWithTexCoords(temp, BoxBG, new Rect(0, 0, 12, 12));
                CustomEditorUtility.DrawRectOutline(temp);
                GUI.DrawTexture(CustomEditorUtility.RectScaler(temp, 0.96f), entry.attachedImages[i].texture, ScaleMode.ScaleToFit);
                entry.attachedImages[i] = EditorGUILayout.ObjectField(entry.attachedImages[i], typeof(Sprite), false) as Sprite;
                entry.imageCaptions[i]  = EditorGUILayout.TextField(entry.imageCaptions[i]);
                GUILayout.EndVertical();
                DeleteButtonOnAttachment(temp, entry, i);
            }
            GUILayout.BeginVertical(GUILayout.Height(160));
            GUILayout.FlexibleSpace();
            GUILayout.BeginHorizontal();
            GUILayout.FlexibleSpace();
            Layout_ImagePickerButton("+", ref imagePickerBuffer, GUIUtility.GetControlID(FocusType.Passive), GUILayout.Width(32), GUILayout.Height(32));
            GUILayout.FlexibleSpace();
            GUILayout.EndHorizontal();
            GUILayout.FlexibleSpace();
            GUILayout.EndVertical();
            GUILayout.Space(8);
            GUILayout.EndHorizontal();

            CustomEditorUtility.DrawRectOutline(GUILayoutUtility.GetLastRect());



            if (imagePickerBuffer != null)
            {
                entry.attachedImages.Add(imagePickerBuffer);
                entry.imageCaptions.Add("");
                imagePickerBuffer = null;
            }
        }
Ejemplo n.º 12
0
        void DrawEditor_Normal()
        {
            EditorGUI.BeginChangeCheck();
            scrollPos_Editor = GUILayout.BeginScrollView(scrollPos_Editor);
            GUILayout.BeginVertical();
            infoGroupCache.groupTag = EditorGUILayout.TextField("Group Tag", infoGroupCache.groupTag);
            GUILayout.Space(48);
            for (int i = 0; i < infoGroupCache.entries.Count; i++)
            {
                switch (infoGroupCache.entries[i].entryType)
                {
                case InfoLogEntry.EntryType.Article:
                    DrawArticleInfo(infoGroupCache.entries[i]);
                    break;

                case InfoLogEntry.EntryType.Gallery:
                    DrawGalleryInfo(infoGroupCache.entries[i]);
                    break;

                case InfoLogEntry.EntryType.Comment:
                    DrawCommentInfo(infoGroupCache.entries[i]);
                    break;
                }
                GUILayout.Space(24);
                GUILayout.BeginHorizontal();
                GUILayout.FlexibleSpace();
                GUILayout.Label("", GUILayout.Height(1), GUILayout.Width(420));
                CustomEditorUtility.DrawRectOutline(GUILayoutUtility.GetLastRect());
                GUILayout.FlexibleSpace();
                GUILayout.EndHorizontal();
                GUILayout.Space(24);
            }
            GUILayout.EndVertical();
            GUILayout.EndScrollView();
            if (EditorGUI.EndChangeCheck())
            {
                OnDataValueChanged();
                CacheGroupTags();
            }
        }
Ejemplo n.º 13
0
    private void DrawSinglePool(int i, SerializedProperty pools)
    {
        if (i < m.pools.Count)
        {
            Color      defaultCol = GUI.color;
            GameObject prefab     = m.pools[i].prefab;
            string     name       = "Pool " + i;
            bool       hasPrefab  = prefab != null;
            bool       hasEntity  = true;

            EditorGUILayout.BeginVertical("box");

            if (hasPrefab)
            {
                hasEntity = prefab.GetComponentInChildren <Entity>();
                name     += ": " + prefab.name;
                if (!hasEntity)
                {
                    GUI.color = Color.red;
                }

                //if (elem) name += ": Level element";
            }

            else
            {
                GUI.color = Color.yellow;
                name     += ": No prefab ";
            }

            EditorGUILayout.BeginHorizontal();

            EditorGUI.indentLevel += 1;
            m.pools[i].foldout     = EditorGUILayout.Foldout(m.pools[i].foldout, name, EditorStyles.foldoutHeader);

            GUI.color              = defaultCol;
            EditorGUI.indentLevel -= 1;
            if (GUILayout.Button("x", GUILayout.MaxWidth(50)))
            {
                if (m.pools[i].parent)
                {
                    Undo.DestroyObjectImmediate(m.pools[i].parent.gameObject);
                }
                Undo.RecordObject(m, "Remove Pool");
                m.pools.RemoveAt(i);
            }
            EditorGUILayout.EndHorizontal();
            if (i < m.pools.Count)
            {
                if (m.pools[i].foldout)
                {
                    EditorGUILayout.Space();

                    SerializedProperty arrayElement = pools.GetArrayElementAtIndex(i);
                    CustomEditorUtility.QuickSerializeRelative("prefab", arrayElement);


                    if (hasPrefab)
                    {
                        if (!hasEntity)
                        {
                            EditorGUILayout.BeginHorizontal();

                            EditorGUILayout.HelpBox("Error : The specified prefab is not an entity. Please add an entity script on it.", MessageType.Error);
                            if (GUILayout.Button("Fix"))
                            {
                                Undo.AddComponent(prefab, typeof(Entity));
                                //prefab.AddComponent<Entity>();
                            }

                            EditorGUILayout.EndHorizontal();
                        }

                        else
                        {
                            CustomEditorUtility.QuickSerializeRelative("amount", arrayElement);
                            GUI.enabled = false;
                            CustomEditorUtility.QuickSerializeRelative("parent", arrayElement);
                            CustomEditorUtility.QuickSerializeRelative("entities", arrayElement);
                            GUI.enabled = true;

                            EditorGUILayout.Space();

                            int currentlyActive = m.UpdateCurrentlyActive(i);

                            Rect r     = EditorGUILayout.BeginVertical();
                            int  usage = Mathf.CeilToInt(m.pools[i].usage * 100);
                            EditorGUI.ProgressBar(r, m.pools[i].usage, "Current usage of the pool: " + usage.ToString("F2") + "% (" + currentlyActive + " out of " + m.pools[i].entities.Count + ")");
                            GUILayout.Space(18);
                            EditorGUILayout.EndVertical();
                        }
                    }

                    else
                    {
                        EditorGUILayout.HelpBox("Please assign a prefab.", MessageType.Warning);
                    }
                }
            }

            EditorGUILayout.EndVertical();
        }
    }
Ejemplo n.º 14
0
    public void Draw_RectLayout(string LabelText, Rect LabelAndFieldRect, Rect ButtonRect, Rect AreaRect, GUIStyle LabelStyle = null, GUIStyle InputFieldStyle = null, GUIStyle ButtonStyle = null, bool InputUnderline = false, bool ReadOnly = false)
    {
        if (LabelStyle == null)
        {
            LabelStyle = StaticLabelStyle;
        }
        if (InputFieldStyle == null)
        {
            InputFieldStyle = StaticFieldStyle;
        }
        if (ButtonStyle == null)
        {
            ButtonStyle = StaticButtonStyle;
        }

        if (!isEditing)
        {
            GUI.Label(LabelAndFieldRect, LabelText, LabelStyle);
            GUILayout.Space(4);
            if (!ReadOnly)
            {
                if (GUI.Button(ButtonRect, ButtonLabel_Edit, ButtonStyle))
                {
                    isEditing = true;
                    if (EditorWindow.focusedWindow)
                    {
                        EditorWindow.focusedWindow.Repaint();
                    }
                }
            }

            if (InputUnderline)
            {
                CustomEditorUtility.DrawSideBorder(CustomEditorUtility.Directions.Bottom, LabelAndFieldRect);
            }
        }
        else
        {
            bool temp = false;
            if (EditingCache == null)
            {
                EditingCache = LabelText;
                temp         = true;
                GUI.SetNextControlName("input");
            }

            EditingCache = EditorGUI.TextField(LabelAndFieldRect, EditingCache, InputFieldStyle);
            GUILayout.Space(4);

            if (temp)
            {
                GUI.FocusControl("input");
                temp = false;
            }

            if (GUI.Button(ButtonRect, ButtonLabel_Save, ButtonStyle) || Event.current.keyCode == KeyCode.Return || Event.current.keyCode == KeyCode.KeypadEnter)
            {
                if (EditingCache != LabelText)
                {
                    Edited.Invoke(this.EditingCache);
                }
                EditingCache = null;
                isEditing    = false;
                GUI.FocusControl("0");
                if (EditorWindow.focusedWindow)
                {
                    EditorWindow.focusedWindow.Repaint();
                }
            }

            if (Event.current.type == EventType.MouseUp)
            {
                if (!LabelAndFieldRect.Contains(Event.current.mousePosition))
                {
                    isEditing    = false;
                    EditingCache = null;
                    GUI.FocusControl("0");
                    if (EditorWindow.focusedWindow)
                    {
                        EditorWindow.focusedWindow.Repaint();
                    }
                }
            }
        }
    }
Ejemplo n.º 15
0
    public void Draw(string labelText, bool inputUnderline = false, GUIStyle LabelStyle = null, GUIStyle InputFieldStyle = null, GUIStyle ButtonStyle = null, GUILayoutOption[] LabelAndFieldLayout = null, GUILayoutOption[] ButtonLayout = null, GUILayoutOption[] AreaLayout = null, bool ReadOnly = false)
    {
        if (LabelAndFieldLayout == null)
        {
            LabelAndFieldLayout = StaticLabelFieldLayout;
        }
        if (AreaLayout == null)
        {
            AreaLayout = StaticAreaLayout;
        }
        if (LabelStyle == null)
        {
            LabelStyle = StaticLabelStyle;
        }
        if (InputFieldStyle == null)
        {
            InputFieldStyle = StaticFieldStyle;
        }
        if (ButtonStyle == null)
        {
            ButtonStyle = StaticButtonStyle;
        }
        if (ButtonLayout == null)
        {
            ButtonLayout = StaticButtonLayout;
        }

        GUILayout.BeginHorizontal(AreaLayout);

        Rect labelAndFieldRect = GUILayoutUtility.GetRect(GUIContent.none, GUIStyle.none, LabelAndFieldLayout);
        Rect spacingRect       = GUILayoutUtility.GetRect(GUIContent.none, GUIStyle.none, GUILayout.Width(4));
        Rect buttonRect        = GUILayoutUtility.GetRect(GUIContent.none, GUIStyle.none, ButtonLayout);

        if (!isEditing)
        {
            GUI.Label(labelAndFieldRect, labelText, LabelStyle);
            if (!ReadOnly)
            {
                if (GUI.Button(buttonRect, ButtonLabel_Edit, ButtonStyle))
                {
                    isEditing = true;
                    if (EditorWindow.focusedWindow)
                    {
                        EditorWindow.focusedWindow.Repaint();
                    }
                }
            }

            if (inputUnderline)
            {
                CustomEditorUtility.DrawSideBorder(CustomEditorUtility.Directions.Bottom, labelAndFieldRect);
            }
        }
        else
        {
            bool temp = false;
            if (EditingCache == null)
            {
                EditingCache = labelText;
                temp         = true;
                GUI.SetNextControlName("input");
            }

            EditingCache = EditorGUI.TextField(labelAndFieldRect, EditingCache, InputFieldStyle);

            if (temp)
            {
                GUI.FocusControl("input");
                temp = false;
            }

            if (GUI.Button(buttonRect, ButtonLabel_Save, ButtonStyle) || Event.current.keyCode == KeyCode.Return || Event.current.keyCode == KeyCode.KeypadEnter)
            {
                if (EditingCache != labelText)
                {
                    Edited.Invoke(this.EditingCache);
                }
                EditingCache = null;
                isEditing    = false;
                GUI.FocusControl("0");
                if (EditorWindow.focusedWindow)
                {
                    EditorWindow.focusedWindow.Repaint();
                }
            }

            if (Event.current.type == EventType.MouseUp)
            {
                if (!labelAndFieldRect.Contains(Event.current.mousePosition))
                {
                    isEditing    = false;
                    EditingCache = null;
                    GUI.FocusControl("0");
                    if (EditorWindow.focusedWindow)
                    {
                        EditorWindow.focusedWindow.Repaint();
                    }
                }
            }
        }
        GUILayout.EndHorizontal();
    }
Ejemplo n.º 16
0
    public void Draw(Rect position, string labelText, bool inputUnderline = false)
    {
        Rect labelRect;

        if (labelExpandWidth)
        {
            labelRect = new Rect(position.position, position.size - new Vector2(buttonWidth, 0));
        }
        else
        {
            labelRect = new Rect(position.position, new Vector2(labelWidth, position.height));
        }
        Rect inputRect = new Rect(labelRect.position, labelRect.size - new Vector2(buttonWidth + 8, 0));
        Rect buttonRect;

        buttonHeight = position.height;
        if (labelExpandWidth)
        {
            buttonRect = new Rect(position.x + position.width - buttonWidth, position.y, buttonWidth, buttonHeight);
        }
        else
        {
            buttonRect = new Rect(position.x + labelWidth + 8, position.y, buttonWidth, buttonHeight);
        }

        int cache;

        if (!editing)
        {
            cache = GUI.skin.label.fontSize;
            GUI.skin.label.fontSize = fontSize;
            if (labelWidth > 0)
            {
                GUI.Label(labelRect, labelText);
            }
            else
            {
                GUI.Label(labelRect, labelText);
            }
            GUI.skin.label.fontSize = cache;

            if (inputUnderline)
            {
                CustomEditorUtility.DrawSideBorder(CustomEditorUtility.Directions.Bottom, labelRect);
            }

            if (GUI.Button(buttonRect, editText))
            {
                editing = true;
            }
        }
        else
        {
            if (editCache == null)
            {
                editCache = labelText;
            }
            cache = GUI.skin.textField.fontSize;
            GUI.skin.textField.fontSize = fontSize;
            if (labelWidth > 0)
            {
                editCache = EditorGUI.TextField(inputRect, editCache);
            }
            else
            {
                editCache = EditorGUI.TextField(inputRect, editCache);
            }
            GUI.skin.textField.fontSize = cache;

            if (GUI.Button(buttonRect, saveText) || Event.current.keyCode == KeyCode.Return || Event.current.keyCode == KeyCode.KeypadEnter)
            {
                if (editCache != labelText)
                {
                    Edited.Invoke(this.editCache);
                }
                editCache = null;
                editing   = false;
                GUI.FocusControl("0");
                if (EditorWindow.focusedWindow)
                {
                    EditorWindow.focusedWindow.Repaint();
                }
            }

            if (Event.current.type == EventType.MouseUp)
            {
                if (!inputRect.Contains(Event.current.mousePosition) && !buttonRect.Contains(Event.current.mousePosition))
                {
                    editing   = false;
                    editCache = null;
                    if (EditorWindow.focusedWindow)
                    {
                        EditorWindow.focusedWindow.Repaint();
                    }
                }
            }
        }
    }
Ejemplo n.º 17
0
    public void DrawLayout(string labelText, bool inputUnderline = false, GUILayoutOption[] labelLayout = null, GUILayoutOption[] fieldLayout = null)
    {
        if (areaWidth > 0)
        {
            GUILayout.BeginHorizontal(GUILayout.Width(areaWidth));
        }
        else
        {
            GUILayout.BeginHorizontal(GUILayout.ExpandWidth(areaExpandWidth));
        }

        if (!editing)
        {
            if (labelWidth > 0)
            {
                GUILayout.Label(labelText, LabelStyle, GUILayout.Width(labelWidth), GUILayout.Height(areaHeight));
            }
            else
            {
                GUILayout.Label(labelText, LabelStyle, GUILayout.ExpandWidth(labelExpandWidth), GUILayout.Height(areaHeight));
            }

            if (inputUnderline)
            {
                CustomEditorUtility.DrawSideBorder(CustomEditorUtility.Directions.Bottom, GUILayoutUtility.GetLastRect());
            }

            if (GUILayout.Button(editText, GUILayout.ExpandWidth(false), GUILayout.Height(areaHeight)))
            {
                editing = true;
            }
        }
        else
        {
            bool temp = false;
            if (editCache == null)
            {
                editCache = labelText;
                temp      = true;
                GUI.SetNextControlName("input");
            }
            if (labelWidth > 0)
            {
                editCache = EditorGUILayout.TextField(editCache, InputFieldStyle, GUILayout.Width(labelWidth + 60), GUILayout.MinWidth(80), GUILayout.Height(areaHeight));
            }
            else
            {
                editCache = EditorGUILayout.TextField(editCache, InputFieldStyle, GUILayout.ExpandWidth(labelExpandWidth), GUILayout.MinWidth(80), GUILayout.Height(areaHeight));
            }
            if (temp)
            {
                GUI.FocusControl("input");
                temp = false;
            }
            Rect inputRect = GUILayoutUtility.GetLastRect();

            if (GUILayout.Button(saveText, GUILayout.ExpandWidth(false), GUILayout.Height(areaHeight)) || Event.current.keyCode == KeyCode.Return || Event.current.keyCode == KeyCode.KeypadEnter)
            {
                if (editCache != labelText)
                {
                    Edited.Invoke(this.editCache);
                }
                editCache = null;
                editing   = false;
                GUI.FocusControl("0");
                if (EditorWindow.focusedWindow)
                {
                    EditorWindow.focusedWindow.Repaint();
                }
            }

            Rect buttonRect = GUILayoutUtility.GetLastRect();

            if (Event.current.type == EventType.MouseUp)
            {
                if (!inputRect.Contains(Event.current.mousePosition) && !buttonRect.Contains(Event.current.mousePosition))
                {
                    editing   = false;
                    editCache = null;
                    GUI.FocusControl("0");
                    if (EditorWindow.focusedWindow)
                    {
                        EditorWindow.focusedWindow.Repaint();
                    }
                }
            }
        }
        GUILayout.EndHorizontal();

        if (Event.current.type == EventType.Repaint)
        {
            if (rect == null)
            {
                rect = GUILayoutUtility.GetLastRect();
            }
            topLeftPoint     = new Vector2(rect.xMin, rect.yMin);
            bottomRightPoint = new Vector2(rect.xMax, rect.yMax);
        }
    }
Ejemplo n.º 18
0
    public Sprite DrawLayout(Sprite sprite, bool readOnly = false, params GUILayoutOption[] SizeLayoutOptions)
    {
        if (TransparentBoxBG == null)
        {
            TransparentBoxBG = (Texture2D)EditorGUIUtility.Load("TransparentBGPattern.png");
        }

        stored = sprite;

        //Auto Layout
        List <GUILayoutOption> options = new List <GUILayoutOption>();

        switch (layoutMode)
        {
        case LayoutMode.FixedSize:
            if (!useGUILayoutSizeOptions)
            {
                options.Add(GUILayout.Width(width));
                options.Add(GUILayout.Height(height));
            }
            break;

        case LayoutMode.ScaleByWidth:
            if (!useGUILayoutSizeOptions)
            {
                options.Add(GUILayout.MaxWidth(maxWidth));
            }
            options.Add(GUILayout.Height(heightAuto));
            options.Add(GUILayout.ExpandHeight(false));
            break;

        case LayoutMode.ScaleByHeight:
            if (!useGUILayoutSizeOptions)
            {
                options.Add(GUILayout.MaxHeight(maxHeight));
            }
            options.Add(GUILayout.Width(widthAuto));
            options.Add(GUILayout.ExpandWidth(false));
            break;

        case LayoutMode.Stretch:
            if (!useGUILayoutSizeOptions)
            {
                options.Add(GUILayout.MaxWidth(maxWidth));
                options.Add(GUILayout.MaxHeight(maxHeight));
            }

            options.Add(GUILayout.ExpandWidth(true));
            options.Add(GUILayout.ExpandHeight(true));
            break;
        }
        if (useGUILayoutSizeOptions)
        {
            options.AddRange(fixedOptions);
        }
        else
        {
            options.AddRange(SizeLayoutOptions);
        }


        boxRect = GUILayoutUtility.GetRect(GUIContent.none, GUI.skin.box, options.ToArray());

        if (previewTexRectCache == null || previewRect == null)
        {
            UpdateCache(sprite);
        }

        if (stored == null)
        {
            GUI.Box(boxRect, string.Empty, boxStyle);
        }
        else
        {
            GUI.DrawTextureWithTexCoords(boxRect, TransparentBoxBG, new Rect(0, 0, widthRatio, heightRatio));
            CustomEditorUtility.DrawSideBorders(boxRect, new Color(0.24f, 0.24f, 0.24f, 1f));
            GUI.DrawTextureWithTexCoords(previewRect, sprite.texture, previewTexRectCache);
        }

        if (layoutMode == LayoutMode.ScaleByWidth)
        {
            float cache = heightAuto;
            if (Event.current.type == EventType.Repaint)
            {
                // boxRect = GUILayoutUtility.GetLastRect();
                heightAuto        = boxRect.width * heightRatio / widthRatio;
                layoutJustChanged = true;
                if (heightAuto != cache)
                {
                    if (EditorWindow.focusedWindow)
                    {
                        EditorWindow.focusedWindow.Repaint();
                    }
                }
            }
        }
        else if (layoutMode == LayoutMode.ScaleByHeight)
        {
            float cache = widthAuto;
            if (Event.current.type == EventType.Repaint)
            {
                // boxRect = GUILayoutUtility.GetLastRect();
                Debug.Log(boxRect.width + ", " + boxRect.height);
                widthAuto         = boxRect.height * widthRatio / heightRatio;
                layoutJustChanged = true;
                if (cache != widthAuto)
                {
                    if (EditorWindow.focusedWindow)
                    {
                        EditorWindow.focusedWindow.Repaint();
                    }
                }
            }
        }

        if (boxRect.Contains(Event.current.mousePosition))
        {
            EditorGUI.DrawRect(boxRect, new Color(0, 0, 0, 0.2f));
            GUI.Label(boxRect, "Select", hoverLabelStyle);
            if (EditorWindow.focusedWindow)
            {
                EditorWindow.focusedWindow.Repaint();
            }
        }

        int ID = EditorGUIUtility.GetControlID(FocusType.Passive);

        if (Event.current.type == EventType.MouseDown)
        {
            if (boxRect.Contains(Event.current.mousePosition))
            {
                EditorGUIUtility.ShowObjectPicker <Sprite>(sprite, false, "t:Sprite", ID);
            }
        }

        if (layoutJustChanged)
        {
            UpdateCache(sprite);
            layoutJustChanged = false;
            if (EditorWindow.focusedWindow)
            {
                EditorWindow.focusedWindow.Repaint();
            }
        }

        if (Event.current.commandName == "ObjectSelectorUpdated")
        {
            if (EditorGUIUtility.GetObjectPickerControlID() == ID)
            {
                stored = (Sprite)EditorGUIUtility.GetObjectPickerObject();
                UpdateCache(stored);
            }
        }

        return(stored);
    }
Ejemplo n.º 19
0
    public string Draw_Advanced(string labelText, bool inputUnderline = false, GUIStyle labelStyle = null, GUIStyle inputFieldStyle = null, GUILayoutOption[] labelAndFieldLayout = null, GUILayoutOption[] areaLayout = null, bool ReadOnly = false)
    {
        if (labelAndFieldLayout == null)
        {
            labelAndFieldLayout = staticLabelFieldLayout;
        }
        if (areaLayout == null)
        {
            areaLayout = staticAreaLayout;
        }
        if (labelStyle == null)
        {
            labelStyle = staticLabelStyle;
        }
        if (inputFieldStyle == null)
        {
            inputFieldStyle = staticFieldStyle;
        }

        Rect labelAndFieldRect = GUILayoutUtility.GetRect(GUIContent.none, new GUIStyle(), labelAndFieldLayout);

        GUILayout.BeginHorizontal(areaLayout);

        if (!isEditing)
        {
            if (Event.current.type == EventType.MouseMove && !ReadOnly)
            {
                isHovering = (labelAndFieldRect.Contains(Event.current.mousePosition))? true : false;
                if (EditorWindow.focusedWindow)
                {
                    EditorWindow.focusedWindow.Repaint();
                }
            }

            // if (isHovering) {
            //  GUI.Label(labelAndFieldRect, "<color=#4228FF>" + labelText + "</color>", labelStyle);
            // }
            GUI.Label(labelAndFieldRect, labelText, labelStyle);

            if (inputUnderline)
            {
                CustomEditorUtility.DrawSideBorder(CustomEditorUtility.Directions.Bottom, labelAndFieldRect);
            }

            if (!ReadOnly)
            {
                EditorGUIUtility.AddCursorRect(labelAndFieldRect, MouseCursor.Text);
            }

            if (!ReadOnly)
            {
                if (Event.current.type == EventType.MouseUp)
                {
                    if (labelAndFieldRect.Contains(Event.current.mousePosition))
                    {
                        isEditing = true;
                        if (EditorWindow.focusedWindow)
                        {
                            EditorWindow.focusedWindow.Repaint();
                        }
                    }
                }
            }
        }
        else
        {
            bool temp = false;
            if (EditingCache == null)
            {
                EditingCache = labelText;
                temp         = true;
                GUI.SetNextControlName("input");
            }

            EditingCache = EditorGUI.TextField(labelAndFieldRect, EditingCache, inputFieldStyle);

            if (showEnterTip)
            {
                GUI.Label(new Rect(labelAndFieldRect.xMax + 4, labelAndFieldRect.yMax - 14, 128, 14), "Press Enter to save.");
            }

            if (temp)
            {
                GUI.FocusControl("input");
                temp = false;
            }

            if (Event.current.keyCode == KeyCode.Return || Event.current.keyCode == KeyCode.KeypadEnter)
            {
                if (EditingCache != labelText)
                {
                    Edited.Invoke(this.EditingCache);
                }
                EditingCache = null;
                isEditing    = false;
                GUI.FocusControl("0");
                if (EditorWindow.focusedWindow)
                {
                    EditorWindow.focusedWindow.Repaint();
                }
            }

            if (Event.current.type == EventType.MouseUp)
            {
                if (!labelAndFieldRect.Contains(Event.current.mousePosition))
                {
                    isEditing    = false;
                    EditingCache = null;
                    GUI.FocusControl("0");
                    if (EditorWindow.focusedWindow)
                    {
                        EditorWindow.focusedWindow.Repaint();
                    }
                }
            }
        }
        GUILayout.EndHorizontal();
        return(EditingCache);
    }