예제 #1
0
        public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
        {
            Vector2 orgIconSize = EditorGUIUtility.GetIconSize();

            EditorGUI.BeginProperty(position, label, property);

            Rect line = position.Clone(height: lineH + 16f);

            EditorGUIUtility.SetIconSize(Vector2.one * 32f);
            property.isExpanded = EditorGUI.Foldout(line, property.isExpanded, PositionOverriderLabel, true);
            EditorGUIUtility.SetIconSize(orgIconSize);

            if (property.isExpanded)
            {
                SerializedProperty addonCount = property.FindPropertyRelative("m_AddonCount");
                int lineCnt = addonCount.intValue + 1;
                line = line.GetRectBottom(height: lineH * lineCnt).Modify(y: lineS);
                SerializedProperty addonList = property.FindPropertyRelative("m_AddonList");
                EditorGUI.BeginDisabledGroup(true);
                EditorGUI.TextArea(line, addonList.stringValue);
                EditorGUI.EndDisabledGroup();
            }

            EditorGUI.EndProperty();
        }
        void OnGUI()
        {
            this.ScrollPosition = GUILayout.BeginScrollView(this.ScrollPosition);

            foreach (var referent in results.Keys.OrderBy(key => key.Name).ToList())
            {
                foldOuts.AddSafety(referent, true);

                if (foldOuts[referent] = EditorGUILayout.Foldout(foldOuts[referent], referent.Name))
                {
                    foreach (var target in results[referent])
                    {
                        var iconSize = EditorGUIUtility.GetIconSize();
                        EditorGUIUtility.SetIconSize(Vector2.one * 16);

                        if (GUILayout.Button(target.Name))
                        {
                            var obj = target.ToObject();
                            Selection.objects = new[] { obj };
                        }

                        EditorGUIUtility.SetIconSize(iconSize);
                    }
                }
            }

            GUILayout.EndScrollView();
        }
예제 #3
0
        public static bool LayoutButtonLink(GUIContent content, params GUILayoutOption[] options)
        {
            var controlId = GUIUtility.GetControlID(FocusType.Passive) + 1;               // @Hack, predicting the next control id... may not always work.
            var clicked   = GUILayout.Button(content, linkStyle, options);
            var rect      = GUILayoutUtility.GetLastRect();

            var widthOffset  = 0f;
            var widthContent = content;

            if (content.image != null)
            {
                widthContent = new GUIContent(content.text);
                widthOffset  = EditorGUIUtility.GetIconSize().x;
            }
            float min, max;

            linkStyle.CalcMinMaxWidth(widthContent, out min, out max);

            var start = new Vector2(rect.x + 2 + widthOffset, rect.y + rect.height - 2);
            var end   = new Vector2(rect.x - 2 + min + widthOffset, start.y);

            var color = linkStyle.normal.textColor;

            if (GUIUtility.hotControl == controlId)
            {
                color = linkStyle.active.textColor;
            }

            Handles.BeginGUI();
            Handles.color = color;
            Handles.DrawLine(start, end);
            Handles.EndGUI();

            return(clicked);
        }
        public static void ExportMessageIcon()
        {
            var size = 16;

            var type = MessageType.Warning;

            var restoreSize = EditorGUIUtility.GetIconSize();

            EditorGUIUtility.SetIconSize(new Vector2(size, size));

            var icon = LudiqGUIUtility.GetHelpIcon(type);

            icon.filterMode = FilterMode.Point;
            var rt = RenderTexture.GetTemporary(icon.width, icon.height);

            rt.filterMode        = FilterMode.Point;
            RenderTexture.active = rt;
            Graphics.Blit(icon, rt);
            var readableIcon = new Texture2D(icon.width, icon.height);

            readableIcon.ReadPixels(new Rect(0, 0, icon.width, icon.height), 0, 0);
            readableIcon.Apply();
            RenderTexture.active = null;
            icon = readableIcon;

            File.WriteAllBytes($"{Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop), type.ToString())}@{size}x.png", icon.EncodeToPNG());

            EditorGUIUtility.SetIconSize(restoreSize);
        }
        public override void OnInspectorGUI()
        {
            MonoImporter target = this.target as MonoImporter;
            MonoScript   script = target.GetScript();

            if (!(bool)((UnityEngine.Object)script))
            {
                return;
            }
            System.Type type = script.GetClass();
            if (!MonoScriptImporterInspector.IsTypeCompatible(type))
            {
                EditorGUILayout.HelpBox("No MonoBehaviour scripts in the file, or their names do not match the file name.", MessageType.Info);
            }
            XMonoBehaviourEditor.ShowXAttributeType(type);
            Vector2 iconSize = EditorGUIUtility.GetIconSize();

            EditorGUIUtility.SetIconSize(new Vector2(16f, 16f));
            List <string>             names   = new List <string>();
            List <UnityEngine.Object> objects = new List <UnityEngine.Object>();
            bool didModify = false;

            this.ShowFieldInfo(type, target, names, objects, ref didModify);
            EditorGUIUtility.SetIconSize(iconSize);
            if (!didModify)
            {
                return;
            }
            target.SetDefaultReferences(names.ToArray(), objects.ToArray());
            AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath((UnityEngine.Object)target));
        }
        void OnGUI()
        {
            this.ScrollPosition = GUILayout.BeginScrollView(this.ScrollPosition);

            foreach (var referent in Results.Keys.OrderBy(key => key.Name).ToList())
            {
                Foldouts.AddSafety(referent, true);

                if (Foldouts[referent] = EditorGUILayout.Foldout(Foldouts[referent], referent.Name))
                {
                    foreach (var target in Results[referent])
                    {
                        var iconSize = EditorGUIUtility.GetIconSize();
                        EditorGUIUtility.SetIconSize(Vector2.one * 16);

                        var obj     = target.ToObject();
                        var content = new GUIContent(target.Name, EditorGUIUtility.ObjectContent(obj, obj.GetType()).image);

                        if (GUILayout.Button(content, "Label"))
                        {
                            Selection.objects = new [] { obj };
                        }

                        EditorGUIUtility.SetIconSize(iconSize);
                    }
                }
            }

            GUILayout.EndScrollView();
        }
        public virtual void OnGUI(Rect position, SerializedProperty property, GUIContent label, bool includeChildren)
        {
            if (!includeChildren || !HasVisibleChildFields(property))
            {
                DefaultPropertyField(position, property, label);
            }
            else
            {
                var  iconSize    = EditorGUIUtility.GetIconSize();
                bool enabled     = GUI.enabled;
                int  indentLevel = EditorGUI.indentLevel;

                var propertyHeights = m_PropertyHeights.Get(property.propertyPath);
                int index           = 0;

                var prop  = property.Copy();
                var depth = prop.depth;
                EditorGUI.indentLevel = prop.depth + (indentLevel - depth);
                position.height       = EditorGUI.GetPropertyHeight(property.propertyType, label);
                bool enter = DefaultPropertyField(position, prop, label) && HasVisibleChildFields(prop);
                if (!enter)
                {
                    return;
                }

                position.y += position.height + 2f;
                while (prop.NextVisible(enter) && prop.depth > depth)
                {
                    enter = false;
                    prop.GetFieldInfos(s_FieldInfos);
                    if (s_FieldInfos[s_FieldInfos.Count - 1].GetCustomAttributes(typeof(InGroupAttribute), false).Any())
                    {
                        continue;
                    }

                    EditorGUI.indentLevel = prop.depth + (indentLevel - depth);
                    if (propertyHeights.Any())
                    {
                        position.height = propertyHeights[index];
                    }
                    else
                    {
                        position.height = EditorGUI.GetPropertyHeight(prop, null, false);
                    }
                    index++;

                    EditorGUI.BeginChangeCheck();
                    enter = EditorGUI.PropertyField(position, prop, null, false) && HasVisibleChildFields(prop);
                    if (EditorGUI.EndChangeCheck())
                    {
                        break;
                    }
                    position.y += position.height + 2f;
                }
                GUI.enabled = enabled;
                EditorGUIUtility.SetIconSize(iconSize);
                EditorGUI.indentLevel = indentLevel;
            }
        }
        void OnGUIIconLabel(Texture2D icon, Vector2 size, params GUILayoutOption[] options)
        {
            var iconSize = EditorGUIUtility.GetIconSize();

            EditorGUIUtility.SetIconSize(size);
            GUILayout.Label(icon, options);
            EditorGUIUtility.SetIconSize(iconSize);
        }
        private void DrawObjectReferenceField(Rect position, SerializedProperty property, GUIContent label)
        {
            Vector2 iconSize = EditorGUIUtility.GetIconSize();

            EditorGUIUtility.SetIconSize(new Vector2(12f, 12f));
            DynamicDNAConverterController converterControllerObject = null;

            if (property.objectReferenceValue != null)
            {
                converterControllerObject = property.objectReferenceValue.GetType() == typeof(DynamicDNAConverterController) ? property.objectReferenceValue as DynamicDNAConverterController : null;
            }

            var dummyFieldStyle = new GUIStyle(EditorStyles.objectField);            //could be objectFieldMiniThumb

            dummyFieldStyle.normal.background = null;

            var labelPos = new Rect(position.xMin, position.yMin, EditorGUIUtility.labelWidth, position.height);
            var fieldPos = new Rect(labelPos.xMax, position.yMin, position.width - labelPos.width, position.height);

            //unfortunately we can use PrefixLabel because it inherits the GUI.content color of the field (which is transparent)
            //the result is the label doesn't highlight- but I think we can live with that!
            EditorGUI.LabelField(labelPos, label);

            var prevContentColor = GUI.contentColor;

            GUI.contentColor = new Color(0, 0, 0, 0);            //hide the content of the field so we can use our own label
            EditorGUI.BeginChangeCheck();
            //We use a converterController field rather than an object field so that the 'dot' button shows ConverterControllers when clicked
            converterControllerObject = (DynamicDNAConverterController)EditorGUI.ObjectField(fieldPos, "", converterControllerObject, typeof(DynamicDNAConverterController), false);
            if (EditorGUI.EndChangeCheck())
            {
                property.objectReferenceValue = converterControllerObject;
            }
            GUI.contentColor = prevContentColor;

            Rect dropRect = fieldPos;

            dropRect.width = dropRect.width - 18f;

            System.Type fieldType = typeof(DynamicDNAConverterController);

            if (property.objectReferenceValue != null)
            {
                fieldType = property.objectReferenceValue.GetType();
            }

            GUIContent typeContent = EditorGUIUtility.ObjectContent(property.objectReferenceValue, fieldType);

            if (property.objectReferenceValue == null)
            {
                typeContent.text  = "None (DNAConverterController/Behaviour)";
                typeContent.image = null;
            }

            GUI.Box(dropRect, typeContent, dummyFieldStyle);
            DoDropArea(dropRect, property);
            EditorGUIUtility.SetIconSize(iconSize);
        }
        private void DrawControl(SerializedProperty property, string nameToUse, bool isNotAddressable, string guid)
        {
            float pickerWidth = 20f;
            Rect  pickerRect  = assetDropDownRect;

            pickerRect.width = pickerWidth;
            pickerRect.x     = assetDropDownRect.xMax - pickerWidth;

            bool isPickerPressed   = Event.current.type == EventType.MouseDown && Event.current.button == 0 && pickerRect.Contains(Event.current.mousePosition);
            bool isEnterKeyPressed = Event.current.type == EventType.KeyDown && Event.current.isKey && (Event.current.keyCode == KeyCode.KeypadEnter || Event.current.keyCode == KeyCode.Return);

            var asset = m_AssetRefObject?.editorAsset;

            if (asset != null && m_ReferencesSame)
            {
                float   iconHeight = EditorGUIUtility.singleLineHeight - EditorGUIUtility.standardVerticalSpacing * 3;
                Vector2 iconSize   = EditorGUIUtility.GetIconSize();
                EditorGUIUtility.SetIconSize(new Vector2(iconHeight, iconHeight));
                string    assetPath = AssetDatabase.GUIDToAssetPath(m_AssetRefObject.AssetGUID);
                Texture2D assetIcon = AssetDatabase.GetCachedIcon(assetPath) as Texture2D;

                UnityEngine.GUI.SetNextControlName(k_FieldControlName);
                if (EditorGUI.DropdownButton(assetDropDownRect, new GUIContent(nameToUse, assetIcon), FocusType.Keyboard, EditorStyles.objectField))
                {
                    if (Event.current.clickCount == 1)
                    {
                        UnityEngine.GUI.FocusControl(k_FieldControlName);
                        EditorGUIUtility.PingObject(asset);
                    }
                    if (Event.current.clickCount == 2)
                    {
                        AssetDatabase.OpenAsset(asset);
                        GUIUtility.ExitGUI();
                    }
                }

                EditorGUIUtility.SetIconSize(iconSize);
            }
            else
            {
                UnityEngine.GUI.SetNextControlName(k_FieldControlName);
                if (EditorGUI.DropdownButton(assetDropDownRect, new GUIContent(nameToUse), FocusType.Keyboard, EditorStyles.objectField))
                {
                    UnityEngine.GUI.FocusControl(k_FieldControlName);
                }
            }

            DrawCaret(pickerRect);

            bool enterKeyRequestsPopup = isEnterKeyPressed && (k_FieldControlName == UnityEngine.GUI.GetNameOfFocusedControl());

            if (isPickerPressed || enterKeyRequestsPopup)
            {
                newGuidPropertyPath = property.propertyPath;
                var nonAddressedOption = isNotAddressable ? m_AssetName : string.Empty;
                PopupWindow.Show(assetDropDownRect, new AssetReferencePopup(this, guid, nonAddressedOption, enterKeyRequestsPopup));
            }
        }
예제 #11
0
 public override bool BeforeGUI(ref Rect position, ref SerializedProperty property, ref GUIContent label, ref bool includeChildren, bool visible)
 {
     m_SavedSize = EditorGUIUtility.GetIconSize();
     if (!IsVisible())
     {
         return(visible);
     }
     EditorGUIUtility.SetIconSize(new Vector2(m_Width, m_Height));
     return(visible);
 }
예제 #12
0
        /// <summary>
        /// 各セルのGUIを描画する
        /// </summary>
        private void CellGUI(Rect rect, CanvasTreeViewItem item, CanvasColumnType columnType, RowGUIArgs args)
        {
            switch (columnType)
            {
            case CanvasColumnType.Name:
                args.rowRect = rect;
                base.RowGUI(args);
                break;

            case CanvasColumnType.Note:
                var canvas = item.unityObject as Canvas;
                if (canvas != null)
                {
                    if (IsInactiveSubCanvas(canvas))
                    {
                        var redTextStyle = new GUIStyle(EditorStyles.label)
                        {
                            normal = new GUIStyleState
                            {
                                textColor = Color.red,
                            }
                        };
                        EditorGUI.LabelField(rect, new GUIContent("Inactive Sub-canvas"), redTextStyle);
                    }
                    else if (canvas.gameObject.activeInHierarchy == false)
                    {
                        EditorGUI.LabelField(rect, new GUIContent("Inactive Canvas"));
                    }
                }

                break;

            case CanvasColumnType.Object:
                if (item.hasUnityObject)
                {
                    var obj           = item.unityObject;
                    var objectContent = EditorGUIUtility.ObjectContent(obj, item.objectType);
                    var objectStyle   = new GUIStyle(EditorStyles.textField)
                    {
                        imagePosition = obj ? ImagePosition.ImageLeft : ImagePosition.TextOnly
                    };
                    var originalSize = EditorGUIUtility.GetIconSize();
                    EditorGUIUtility.SetIconSize(new Vector2(10, 10));
                    if (GUI.Button(rect, objectContent, objectStyle) && obj)
                    {
                        EditorGUIUtility.PingObject(obj);
                        Selection.activeObject = obj;
                    }

                    EditorGUIUtility.SetIconSize(originalSize);
                }

                break;
            }
        }
예제 #13
0
        // Token: 0x0600020C RID: 524 RVA: 0x0000E62C File Offset: 0x0000C82C
        protected override void DoGUI()
        {
            Vector2 iconSize = EditorGUIUtility.GetIconSize();

            EditorGUIUtility.SetIconSize(this.ImageSize);
            foreach (GUIToolbarRadioControl guitoolbarRadioControl in this._controls)
            {
                EditorGUIUtility.SetIconSize(Vector2.Min(this.ImageSize, guitoolbarRadioControl.ImageSize));
                guitoolbarRadioControl.OnGUI();
            }
            EditorGUIUtility.SetIconSize(iconSize);
        }
예제 #14
0
        public Icon GetDefaultIcon(int size = 16)
        {
            var iconSizeWas = EditorGUIUtility.GetIconSize();

            EditorGUIUtility.SetIconSize(new Vector2(size, size));
            var icon = new Icon();

            icon.open   = EditorGUIUtility.IconContent("Folder Icon").image;
            icon.closed = icon.open;
            EditorGUIUtility.SetIconSize(iconSizeWas);
            return(icon);
        }
예제 #15
0
        private void OnDrawHierarchy(int instandeID, Rect rect)
        {
            if (Application.isPlaying)
            {
                return;
            }

            if (!HierarchyComponentIcon.Prefs.enable)
            {
                return;
            }

            var go = EditorUtility.InstanceIDToObject(instandeID) as GameObject;

            if (go == null)
            {
                return;
            }

            var components = UnityUtility.GetComponents <Component>(go)
                             .Where(x => x != null)
                             .ToArray();

            if (components.Any())
            {
                var originIconSize = EditorGUIUtility.GetIconSize();

                EditorGUIUtility.SetIconSize(new Vector2(IconSize, IconSize));

                var padding     = new Vector2(5, 0);
                var iconOffectX = IconSize + 1.5f;

                var iconDrawRect = new Rect(rect.xMax - (IconSize + padding.x), rect.yMin, rect.width, rect.height);

                foreach (var component in components)
                {
                    var type = component.GetType();

                    var item = iconTextureCache.FirstOrDefault(x => type == x.Key || type.IsSubclassOf(x.Key));

                    if (item.Equals(default(KeyValuePair <Type, Texture>)))
                    {
                        continue;
                    }

                    DrawComponentIcon(iconDrawRect, item.Value);

                    iconDrawRect.center = Vector.SetX(iconDrawRect.center, iconDrawRect.center.x - iconOffectX);
                }

                EditorGUIUtility.SetIconSize(originIconSize);
            }
        }
예제 #16
0
        //------------------------------------------------------------------------------------------------
        protected void DrawCommonField(Object pTarget, Texture pIcon, ref bool bIsFavorite, out bool bRemoved)
        {
            bRemoved = false;
            var iWidth  = this.position.width;
            var iHeight = EditorGUIUtility.singleLineHeight;

            GUILayout.BeginHorizontal(GUILayout.Height(iHeight), GUILayout.Width(iWidth));
            GUILayout.Space(2);

            var t = EditorGUIUtility.GetIconSize();

            EditorGUIUtility.SetIconSize(new Vector2(iHeight - 1, iHeight - 1));

            GUILayout.Label(new GUIContent(pTarget.name, pIcon),
                            GUILayout.Height(iHeight),
                            GUILayout.Width(iWidth - 85));

            EditorGUIUtility.SetIconSize(t);

            if (GUILayout.Button(EditorGUIUtility.FindTexture("VisibilityOn"),
                                 EditorStyles.miniButtonLeft,
                                 GUILayout.Height(iHeight),
                                 GUILayout.Width(25)))
            {
                EditorGUIUtility.PingObject(pTarget);
            }

            var pDefaultColor = GUI.color;

            GUI.color = bIsFavorite ? Color.yellow : pDefaultColor;
            if (GUILayout.Toggle(false,
                                 EditorGUIUtility.FindTexture("Favorite"),
                                 EditorStyles.miniButtonMid,
                                 GUILayout.Height(iHeight),
                                 GUILayout.Width(25)))
            {
                bIsFavorite = !bIsFavorite;
            }

            GUI.color = pDefaultColor;
            if (GUILayout.Button(EditorGUIUtility.FindTexture("winbtn_win_close_h"),
                                 EditorStyles.miniButtonRight,
                                 GUILayout.Height(iHeight),
                                 GUILayout.Width(25)))
            {
                bRemoved = true;
            }

            GUILayout.EndHorizontal();
        }
예제 #17
0
        // Token: 0x06000204 RID: 516 RVA: 0x0000E4E4 File Offset: 0x0000C6E4
        protected override void DoGUI()
        {
            Vector2 iconSize = EditorGUIUtility.GetIconSize();

            EditorGUIUtility.SetIconSize(this.ImageSize);
            GUILayout.BeginHorizontal(this.Style, this.LayoutOptions);
            foreach (GUIControl guicontrol in this._controls)
            {
                EditorGUIUtility.SetIconSize(Vector2.Min(this.ImageSize, guicontrol.ImageSize));
                guicontrol.OnGUI();
            }
            GUILayout.Space(1f);
            GUILayout.EndHorizontal();
            EditorGUIUtility.SetIconSize(iconSize);
        }
예제 #18
0
        private static void DrawStandardLabel(Rect rect, GUIContent icon, string label, GUIStyle style)
        {
            // Draw Label + Icon
            Vector2 originalIconSize = EditorGUIUtility.GetIconSize();

            EditorGUIUtility.SetIconSize(Vector2.one * rect.height);
            {
                EditorGUI.LabelField(rect, icon, style);

                rect.x += 18f;
                rect.y--;

                EditorGUI.LabelField(rect, label, style);
            }
            EditorGUIUtility.SetIconSize(originalIconSize);
        }
예제 #19
0
        public override Rect Draw(GameObject targetObject, Rect rect)
        {
            rect.center = Vector.SetX(rect.center, rect.center.x - 2f);

            var components = UnityUtility.GetComponents <Component>(targetObject).ToArray();

            var originIconSize = EditorGUIUtility.GetIconSize();

            if (components.Any())
            {
                using (new EditorGUIUtility.IconSizeScope(new Vector2(ComponentIconSize, ComponentIconSize)))
                {
                    var iconOffsetX = ComponentIconSize + 1.5f;

                    foreach (var component in components)
                    {
                        if (component == null)
                        {
                            continue;
                        }

                        var type = component.GetType();

                        var item = iconGUIContentDictionary.FirstOrDefault(x => type == x.Key || type.IsSubclassOf(x.Key));

                        if (item.IsDefault())
                        {
                            continue;
                        }

                        var drawRect = rect;

                        drawRect.center = Vector.SetY(rect.center, rect.center.y + 1f);

                        EditorGUI.LabelField(drawRect, item.Value);

                        rect.center = Vector.SetX(rect.center, rect.center.x - iconOffsetX);
                    }
                }
            }

            EditorGUIUtility.SetIconSize(originIconSize);

            return(rect);
        }
        private void OnGUI()
        {
            if (result == null)
            {
                return;
            }
            EditorGUILayout.Separator();
            GUILayout.Label(HeaderLabelTitle);

            var iconSize = EditorGUIUtility.GetIconSize();

            EditorGUIUtility.SetIconSize(Vector2.one * 16f);

            // アセット毎の参照リスト
            // Reference list for each asset.
            scrollPosition = EditorGUILayout.BeginScrollView(scrollPosition);
            foreach (var referenceData in result.Assets)
            {
                if (referenceData.Asset == null)
                {
                    // 削除済み
                    // Deleted.
                    continue;
                }
                DrawReferences(referenceData);
            }
            EditorGUILayout.EndScrollView();

            EditorGUIUtility.SetIconSize(iconSize);

            // Spotlightの時のみヘルプ情報
            // Help information only for Spotlight.
            if (result.Type == Result.SearchType.OSX_Spotlight)
            {
                EditorGUILayout.Separator();
                EditorGUILayout.HelpBox(
                    "Assets内のインデックスが作られていない場合など、正しく検索できないことがあります。" +
                    "正確に検索するにはGrep版を使用して下さい。\n\n" +
                    "Spotlight is not be able to search correctly, for example, when an file index in Assets is not created. " +
                    "Please use Grep version to search exactly.",
                    MessageType.Info
                    );
                EditorGUILayout.Separator();
            }
        }
예제 #21
0
        public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
        {
            Vector2 orgIconSize = EditorGUIUtility.GetIconSize();

            EditorGUI.BeginProperty(position, label, property);

            Rect line = position.Clone(height: lineH);
            Rect cell = EditorGUI.PrefixLabel(line, label);

            EditorGUI.PropertyField(cell, property.FindPropertyRelative("m_Coordinates"), GUIContent.none);

            line = line.GetRectBottom(height: 33f).Modify(y: lineS);
            Rect[]
            cols = line.SplitHorizontal(.5f),
            lc = cols[0].SplitHorizontal(.3f, 30f, 30f),
            rc = cols[1].SplitHorizontal(.3f, 30f, 30f);

            EditorGUIUtility.SetIconSize(Vector2.one * 16f);
            EditorGUI.LabelField(lc[0], MouseIcon);
            EditorGUI.LabelField(lc[0].Modify(y: 10f, width: 30f, height: 20f), ArrowLeftIcon);

            EditorGUIUtility.SetIconSize(Vector2.one * 24f);
            bool IsRight = property.FindPropertyRelative("m_OppositePolar").boolValue;

            if (GUI.Button(lc[1], ((IsRight) ? ArrowRightIcon : ArrowLeftIcon)))
            {
                property.FindPropertyRelative("m_OppositePolar").boolValue = !IsRight;
            }

            EditorGUIUtility.SetIconSize(Vector2.one * 16f);
            EditorGUI.LabelField(rc[0], MouseIcon);
            EditorGUI.LabelField(rc[0].Modify(y: 10f, width: 30f, height: 20f), ArrowUpIcon);

            EditorGUIUtility.SetIconSize(Vector2.one * 24f);
            bool IsDown = property.FindPropertyRelative("m_OppositeElevation").boolValue;

            if (GUI.Button(rc[1], ((IsDown) ? ArrowDownIcon : ArrowUpIcon)))
            {
                property.FindPropertyRelative("m_OppositeElevation").boolValue = !IsDown;
            }

            EditorGUIUtility.SetIconSize(orgIconSize);
            EditorGUI.EndProperty();
        }
예제 #22
0
        private void OnHeaderGUI()
        {
            if (e.type == EventType.Layout || e.type == EventType.Repaint)
            {
                headerWidth = 0;
            }

            var previousIconSize = EditorGUIUtility.GetIconSize();

            EditorGUIUtility.SetIconSize(new Vector2(IconSize.Small, IconSize.Small));

            LudiqGUI.BeginHorizontal(Styles.headerBackground);

            foreach (var node in stack)
            {
                node.EnsureDrawable();

                var content   = new GUIContent(node.option.headerLabel, node.option.showHeaderIcon ? node.icon?[IconSize.Small] : null);
                var isCurrent = node == stack[stack.Count - 1];

                var style = node == stack[0] ? Styles.headerBreadcrumbRoot : Styles.headerBreadcrumbElement;
                if (isCurrent)
                {
                    style = node == stack[0] ? Styles.headerBreadcrumbRootCurrent : Styles.headerBreadcrumbElementCurrent;
                }
                var width = style.CalcSize(content).x;

                if (GUILayout.Toggle(isCurrent, content, style) && !isCurrent)
                {
                    SelectAncestor(node);
                }

                if (e.type == EventType.Layout || e.type == EventType.Repaint)
                {
                    headerWidth += width;
                }
            }

            LudiqGUI.FlexibleSpace();
            LudiqGUI.EndHorizontal();

            EditorGUIUtility.SetIconSize(previousIconSize);
        }
        public void OnGUI()
        {
            InitStyles();

            Vector2 oldIconSize = EditorGUIUtility.GetIconSize();

            EditorGUIUtility.SetIconSize(Content.k_IconSize);

            var activeBuildTargetGroup = selectedBuildTargetGroup;

            if (activeBuildTargetGroup == BuildTargetGroup.Unknown)
            {
                activeBuildTargetGroup = BuildPipeline.GetBuildTargetGroup(EditorUserBuildSettings.activeBuildTarget);
            }
            OpenXRProjectValidation.GetCurrentValidationIssues(_failures, activeBuildTargetGroup);

            EditorGUILayout.BeginVertical();

            bool fixAllSelected = DrawIssuesAndFixAll();

            if (EditorApplication.isPlaying)
            {
                GUILayout.Space(Content.k_Space);
                GUILayout.Label(Content.k_PlayMode);
            }

            EditorGUILayout.Space();

            bool anyFixApplied = false;

            if (_failures.Count > 0)
            {
                anyFixApplied = DrawIssuesList();
            }

            EditorGUILayout.EndVertical();

            EditorGUIUtility.SetIconSize(oldIconSize);

            ActionAnyFixes(fixAllSelected, anyFixApplied, activeBuildTargetGroup);
        }
예제 #24
0
        private static void StaticSetup()
        {
            staticSetupDone                     = true;
            defaultEditorType                   = typeof(Editor).Assembly.GetType("UnityEditor.GameObjectInspector", false, false);
            hierarchyFolderInfoLabel.text       = HierarchyFolderPreferences.Get().infoBoxText;
            prefabHierarchyFolderInfoLabel.text = HierarchyFolderPreferences.Get().prefabInfoBoxText;

            var iconSizeWas = EditorGUIUtility.GetIconSize();

            EditorGUIUtility.SetIconSize(new Vector2(30f, 30f));
            folderIcon = EditorGUIUtility.IconContent("Folder Icon").image;
            EditorGUIUtility.SetIconSize(iconSizeWas);

            defaultOnHeaderGUI = defaultEditorType.GetMethod("OnHeaderGUI", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public);

                        #if UNITY_2019_1_OR_NEWER
            backgroundColor = EditorGUIUtility.isProSkin ? new Color(0.23529412f, 0.23529412f, 0.23529412f, 1f) : new Color(0.79607844f, 0.79607844f, 0.79607844f, 1f);
                        #else
            backgroundColor = EditorGUIUtility.isProSkin ? new Color(0.24313726f, 0.24313726f, 0.24313726f, 1f) : new Color(0.85490197f, 0.85490197f, 0.85490197f, 1f);
                        #endif
        }
        public override void DrawForeground()
        {
            base.DrawForeground();

            if (BoltFlow.Configuration.showConnectionValues)
            {
                var showLastValue      = EditorApplication.isPlaying && ConnectionDebugData.assignedLastValue;
                var showPredictedvalue = BoltFlow.Configuration.predictConnectionValues && !EditorApplication.isPlaying && Flow.CanPredict(connection.source, reference);

                if (showLastValue || showPredictedvalue)
                {
                    var previousIconSize = EditorGUIUtility.GetIconSize();
                    EditorGUIUtility.SetIconSize(new Vector2(IconSize.Small, IconSize.Small));

                    object value;

                    if (showLastValue)
                    {
                        value = ConnectionDebugData.lastValue;
                    }
                    else // if (showPredictedvalue)
                    {
                        value = Flow.Predict(connection.source, reference);
                    }

                    var label         = new GUIContent(value.ToShortString(), Icons.Type(value?.GetType())?[IconSize.Small]);
                    var labelSize     = Styles.prediction.CalcSize(label);
                    var labelPosition = new Rect(position.position - labelSize / 2, labelSize);

                    BeginDim();

                    GUI.Label(labelPosition, label, Styles.prediction);

                    EndDim();

                    EditorGUIUtility.SetIconSize(previousIconSize);
                }
            }
        }
예제 #26
0
        /// <summary>
        /// Renders the properties in the block.
        /// </summary>
        public override void OnGUI()
        {
            if (layerUIBlocks == null)
            {
                CreateUIBlockLayers();
            }

            var iconSize = EditorGUIUtility.GetIconSize();

            for (int layerIndex = 0; layerIndex < layerCount.floatValue; layerIndex++)
            {
                EditorGUIUtility.SetIconSize(Styles.layerIconSize);
                using (var header = new MaterialHeaderScope(Styles.layers[layerIndex], (uint)Styles.layerExpandableBits[layerIndex], materialEditor))
                {
                    if (header.expanded)
                    {
                        EditorGUIUtility.SetIconSize(iconSize);
                        DrawLayerGUI(layerIndex);
                    }
                }
            }
            EditorGUIUtility.SetIconSize(iconSize);
        }
예제 #27
0
    public static bool PropertyField(Rect position, SerializedProperty property, GUIContent label)
    {
        Vector2 iconSize = EditorGUIUtility.GetIconSize();

        if (lookLikeInspector)
        {
            EditorGUIUtility.SetIconSize(new Vector2(16f, 16f));
        }
        bool enabled     = GUI.enabled;
        int  indentLevel = EditorGUI.indentLevel;
        int  num         = indentLevel - property.depth;

        position.height = 16f;
        SerializedProperty serializedProperty = property.Copy();
        SerializedProperty endProperty        = serializedProperty.GetEndProperty();

        EditorGUI.indentLevel = serializedProperty.depth + num;
        bool enterChildren = SinglePropertyField(position, serializedProperty, label) && HasVisibleChildFields(serializedProperty);

        position.y += GetSinglePropertyHeight(serializedProperty);
        while (serializedProperty.NextVisible(enterChildren) && !SerializedProperty.EqualContents(serializedProperty, endProperty))
        {
            EditorGUI.indentLevel = serializedProperty.depth + num;
            EditorGUI.BeginChangeCheck();
            enterChildren = (SinglePropertyField(position, serializedProperty) && HasVisibleChildFields(serializedProperty));
            if (EditorGUI.EndChangeCheck())
            {
                break;
            }
            position.y += GetSinglePropertyHeight(serializedProperty);
        }
        GUI.enabled = enabled;
        EditorGUIUtility.SetIconSize(iconSize);
        EditorGUI.indentLevel = indentLevel;
        return(false);
    }
예제 #28
0
 public static bool ProperyField(Rect position, SerializedProperty property, GUIContent label, bool includeChildren, Func <Rect, SerializedProperty, GUIContent, bool> propertyDrawer)
 {
     if (!includeChildren)
     {
         return(propertyDrawer(position, property, label));
     }
     else
     {
         Vector2            iconSize           = EditorGUIUtility.GetIconSize();
         bool               enabled            = GUI.enabled;
         int                indentLevel        = EditorGUI.indentLevel;
         int                num2               = indentLevel - property.depth;
         SerializedProperty serializedProperty = property.Copy();
         SerializedProperty endProperty        = serializedProperty.GetEndProperty();
         position.height       = GetSinglePropertyHeight(serializedProperty, label);
         EditorGUI.indentLevel = serializedProperty.depth + num2;
         bool enterChildren = ProperyField(position, serializedProperty, label, false, propertyDrawer) && serializedProperty.hasVisibleChildren;
         position.y += position.height + 2f;
         while (serializedProperty.NextVisible(enterChildren) && !SerializedProperty.EqualContents(serializedProperty, endProperty))
         {
             EditorGUI.indentLevel = serializedProperty.depth + num2;
             position.height       = EditorGUI.GetPropertyHeight(serializedProperty, null, false);
             EditorGUI.BeginChangeCheck();
             enterChildren = ProperyField(position, serializedProperty, label, false, propertyDrawer) && serializedProperty.hasVisibleChildren;
             if (EditorGUI.EndChangeCheck())
             {
                 break;
             }
             position.y += position.height + 2f;
         }
         GUI.enabled = enabled;
         EditorGUIUtility.SetIconSize(iconSize);
         EditorGUI.indentLevel = indentLevel;
         return(false);
     }
 }
예제 #29
0
        protected override void OnContentGUI()
        {
            var previousIconSize = EditorGUIUtility.GetIconSize();

            EditorGUIUtility.SetIconSize(new Vector2(IconSize.Small, IconSize.Small));

            GUILayout.BeginVertical(Styles.background, GUILayout.ExpandHeight(true));

            var question = "How do you want names to be displayed?" + "\n";

            question += "If you're not an experienced programmer, we recommend Human Naming.";

            LudiqGUI.FlexibleSpace();
            GUILayout.Label(question, LudiqStyles.centeredLabel);
            LudiqGUI.FlexibleSpace();
            LudiqGUI.BeginHorizontal();
            LudiqGUI.FlexibleSpace();

            LudiqGUI.BeginVertical();

            if (GUILayout.Button("Human Naming", Styles.modeButton))
            {
                LudiqCore.Configuration.humanNaming = true;
                LudiqCore.Configuration.Save();
                Complete();
            }

            LudiqGUI.Space(-1);
            GUILayout.BeginVertical(Styles.modeBox);
            GUILayout.Label(new GUIContent(" Transform: Get Position", typeof(Transform).Icon()[IconSize.Small]), Styles.example);
            GUILayout.Label(new GUIContent(" Integer", typeof(int).Icon()[IconSize.Small]), Styles.example);
            GUILayout.Label(new GUIContent(" List of Game Object", typeof(List <GameObject>).Icon()[IconSize.Small]), Styles.example);
            GUILayout.Label(new GUIContent(" Rigidbody: Add Force (Force)", typeof(Rigidbody).Icon()[IconSize.Small]), Styles.example);
            LudiqGUI.EndVertical();
            LudiqGUI.EndVertical();

            LudiqGUI.Space(10);

            LudiqGUI.BeginVertical();

            if (GUILayout.Button("Programmer Naming", Styles.modeButton))
            {
                LudiqCore.Configuration.humanNaming = false;
                LudiqCore.Configuration.Save();
                Complete();
            }

            LudiqGUI.Space(-1);
            GUILayout.BeginVertical(Styles.modeBox);
            GUILayout.Label(new GUIContent(" Transform.position (Get)", typeof(Transform).Icon()[IconSize.Small]), Styles.example);
            GUILayout.Label(new GUIContent(" int", typeof(int).Icon()[IconSize.Small]), Styles.example);
            GUILayout.Label(new GUIContent(" List<GameObject>", typeof(List <GameObject>).Icon()[IconSize.Small]), Styles.example);
            GUILayout.Label(new GUIContent(" Rigidbody.AddForce(force)", typeof(Rigidbody).Icon()[IconSize.Small]), Styles.example);
            LudiqGUI.EndVertical();
            LudiqGUI.EndVertical();

            LudiqGUI.FlexibleSpace();
            LudiqGUI.EndHorizontal();
            LudiqGUI.FlexibleSpace();
            GUILayout.Label("You can change this setting at any time from the setup or configuration.", EditorStyles.centeredGreyMiniLabel);
            LudiqGUI.FlexibleSpace();

            LudiqGUI.EndVertical();

            EditorGUIUtility.SetIconSize(previousIconSize);
        }
예제 #30
0
        public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
        {
            EditorGUI.BeginProperty(position, label, property);
            Vector2 orgIconSize = EditorGUIUtility.GetIconSize();

            EditorGUIUtility.SetIconSize(Vector2.one * 32f);

            Rect line = position.Clone(height: lineH + 16f);

            property.isExpanded = EditorGUI.Foldout(line, property.isExpanded, ZoomSectionLabel, true);
            EditorGUIUtility.SetIconSize(orgIconSize);

            if (property.isExpanded)
            {
                float forward  = property.FindPropertyRelative("m_ForwardLimit").floatValue;
                float backward = property.FindPropertyRelative("m_BackwardLimit").floatValue;
                line = line.GetRectBottom(height: lineH * 2f).Modify(y: lineS);
                if (property.FindPropertyRelative("m_Distance").floatValue < 0.1f)
                {
                    EditorGUI.HelpBox(line, "To enable zoom method, input vaild [Distance]", MessageType.Warning);
                }
                else if (forward < 0.1f && backward < 0.1f)
                {
                    EditorGUI.HelpBox(line, "Drag slider bar or input [Forward] & [Backward] to config zoom range.", MessageType.Warning);
                }
                else
                {
                    EditorGUI.HelpBox(line, "You may adjust [Speed] to override the camera zoom speed.", MessageType.Info);
                }

                // Distance
                line = line.GetRectBottom(height: lineH).Modify(y: lineS);
                SerializedProperty distanceProp = property.FindPropertyRelative("m_Distance");
                EditorGUI.BeginChangeCheck();
                EditorGUI.PropertyField(line, distanceProp, ZoomDistanceLabel);
                if (EditorGUI.EndChangeCheck())
                {
                    distanceProp.floatValue = Mathf.Abs(distanceProp.floatValue);
                }

                // Speed
                line = line.GetRectBottom().Modify(y: lineS);
                SerializedProperty speedProp = property.FindPropertyRelative("m_Speed");
                EditorGUI.BeginChangeCheck();
                EditorGUI.PropertyField(line, speedProp, ZoomSpeedLabel);
                if (EditorGUI.EndChangeCheck() && speedProp.floatValue <= 0f)
                {
                    speedProp.floatValue = 1f;
                }

                line = line.GetRectBottom().Modify(y: lineS);
                SerializedProperty
                    forwardLimitProp  = property.FindPropertyRelative("m_ForwardLimit"),
                    backwardLimitProp = property.FindPropertyRelative("m_BackwardLimit");
                float max             = distanceProp.floatValue;
                float min             = -max;
                EditorGUI.BeginChangeCheck();
                EditorGUI.MinMaxSlider(line, ref forward, ref backward, min, max);
                if (EditorGUI.EndChangeCheck() && forward <= 0 && backward >= 0)
                {
                    forwardLimitProp.floatValue  = Mathf.Clamp(forward, min, 0f);;
                    backwardLimitProp.floatValue = Mathf.Clamp(backward, 0f, max);
                }

                line = line.GetRectBottom().Modify(y: lineS);
                Rect cell = line.Clone(width: line.width / 4f);
                EditorGUI.BeginChangeCheck();
                EditorGUI.PrefixLabel(cell, ZoomForwardLabel);
                cell = cell.GetRectRight();
                float forward2 = EditorGUI.FloatField(cell, GUIContent.none, forwardLimitProp.floatValue);
                cell = cell.GetRectRight();
                EditorGUI.PrefixLabel(cell, ZoomBackwardLabel);
                cell = cell.GetRectRight();
                float backward2 = EditorGUI.FloatField(cell, GUIContent.none, backwardLimitProp.floatValue);
                if (EditorGUI.EndChangeCheck())
                {
                    if (forward2 <= 0 && forward2 >= min)
                    {
                        forwardLimitProp.floatValue = Mathf.Clamp(forward2, min, 0f);
                    }
                    if (backward2 >= 0)
                    {
                        backwardLimitProp.floatValue = Mathf.Clamp(backward2, 0f, max);
                    }
                }

                SerializedProperty reboundProp = property.FindPropertyRelative("m_Rebound");
                if (reboundProp.boolValue)
                {
                    line = line.GetRectBottom(height: lineH * 2f).Modify(y: lineS + 10f);
                    EditorGUI.HelpBox(line,
                                      string.Format("Enable \"Rebound\" method, the camera will trying to reset its position to the initial direction."),
                                      MessageType.Info);
                }

                line = line.GetRectBottom(height: lineH).Modify(y: lineS);
                EditorGUI.PropertyField(line, reboundProp, ReboundLabel);
                if (reboundProp.boolValue)
                {
                    line = line.GetRectBottom(height: lineH).Modify(y: lineS);
                    EditorGUI.PropertyField(line, property.FindPropertyRelative("m_ReboundDelay"), ReboundDelayLabel);
                    line = line.GetRectBottom(height: lineH).Modify(y: lineS);
                    EditorGUI.PropertyField(line, property.FindPropertyRelative("m_ReboundPeriod"), ReboundPeriodLabel);
                    line = line.GetRectBottom(height: lineH).Modify(y: lineS);
                    AnimationCurve curve = EditorGUI.CurveField(line, ReboundCurveLabel, property.FindPropertyRelative("m_ReboundCurve").animationCurveValue);
                    curve.Clamp(0f, -1f, 1f, 1f);
                    property.FindPropertyRelative("m_ReboundCurve").animationCurveValue = curve;
                    if (!curve.MatchStartEndKeysValues(0f, 1f))
                    {
                        line = line.GetRectBottom(height: 40f).Modify(y: lineS);
                        if (GUI.Button(line, "Fix curve values into 0f..1f"))
                        {
                            property.FindPropertyRelative("m_ReboundCurve").animationCurveValue = curve.FixStartEndKeysValues(0f, 1f);
                        }
                    }
                    line = line.GetRectBottom(height: lineH).Modify(y: lineS);
                    EditorGUI.PropertyField(line, property.FindPropertyRelative("m_WaitForClampAngle"), ReboundWaitClampAngleLabel);
                }
            }
            EditorGUI.EndProperty();
        }