GetMiniThumbnail() private méthode

private GetMiniThumbnail ( Object obj ) : Texture2D
obj Object
Résultat UnityEngine.Texture2D
Exemple #1
0
        internal virtual void OnHeaderIconGUI(Rect iconRect)
        {
            if (Editor.s_Styles == null)
            {
                Editor.s_Styles = new Editor.Styles();
            }
            Texture2D texture2D = null;

            if (!this.HasPreviewGUI())
            {
                bool flag = AssetPreview.IsLoadingAssetPreview(this.target.GetInstanceID());
                texture2D = AssetPreview.GetAssetPreview(this.target);
                if (!texture2D)
                {
                    if (flag)
                    {
                        this.Repaint();
                    }
                    texture2D = AssetPreview.GetMiniThumbnail(this.target);
                }
            }
            if (this.HasPreviewGUI())
            {
                this.OnPreviewGUI(iconRect, Editor.s_Styles.inspectorBigInner);
            }
            else if (texture2D)
            {
                GUI.Label(iconRect, texture2D, Editor.s_Styles.centerStyle);
            }
        }
Exemple #2
0
        internal virtual void OnHeaderIconGUI(Rect iconRect)
        {
            if (s_Styles == null)
            {
                s_Styles = new Styles();
            }
            Texture2D image = null;

            if (!this.HasPreviewGUI())
            {
                bool flag = AssetPreview.IsLoadingAssetPreview(this.target.GetInstanceID());
                image = AssetPreview.GetAssetPreview(this.target);
                if (image == null)
                {
                    if (flag)
                    {
                        this.Repaint();
                    }
                    image = AssetPreview.GetMiniThumbnail(this.target);
                }
            }
            if (this.HasPreviewGUI())
            {
                this.OnPreviewGUI(iconRect, s_Styles.inspectorBigInner);
            }
            else if (image != null)
            {
                GUI.Label(iconRect, image, s_Styles.centerStyle);
            }
        }
Exemple #3
0
        internal virtual void OnHeaderIconGUI(Rect iconRect)
        {
            Texture2D icon = null;

            if (!HasPreviewGUI())
            {
                //  Fetch isLoadingAssetPreview to ensure that there is no situation where a preview needs a repaint because it hasn't finished loading yet.
                bool isLoadingAssetPreview = AssetPreview.IsLoadingAssetPreview(target.GetInstanceID());
                icon = AssetPreview.GetAssetPreview(target);
                if (!icon)
                {
                    // We have a static preview it just hasn't been loaded yet. Repaint until we have it loaded.
                    if (isLoadingAssetPreview)
                    {
                        Repaint();
                    }
                    icon = AssetPreview.GetMiniThumbnail(target);
                }
            }

            if (HasPreviewGUI())
            {
                // OnPreviewGUI must have all events; not just Repaint, or else the control IDs will mis-match.
                OnPreviewGUI(iconRect, Styles.inspectorBigInner);
            }
            else if (icon)
            {
                GUI.Label(iconRect, icon, Styles.centerStyle);
            }
        }
        void DoObjectLabel(Rect rect, Object entry, GUIStyle style)
        {
            GUI.Label(rect, AssetPreview.GetMiniThumbnail(entry));

            if (Event.current.type == EventType.MouseDown && Event.current.button == 0 && rect.Contains(Event.current.mousePosition))
            {
                // One click shows where the referenced object is
                if (Event.current.clickCount == 1)
                {
                    GUIUtility.keyboardControl = GUIUtility.GetControlID(FocusType.Keyboard);

                    EditorGUIUtility.PingObject(entry);
                    Event.current.Use();
                }
                // Double click changes selection to referenced object
                else if (Event.current.clickCount == 2)
                {
                    if (entry)
                    {
                        Selection.SetActiveObjectWithContext(entry, null);
                        Event.current.Use();
                        editorWindow.Close();
                        GUIUtility.ExitGUI();
                    }
                }
            }

            rect.x     += rect.height;
            rect.width -= rect.height;
            GUI.Label(rect, EditorGUIUtility.TempContent(entry.name, entry.name), style);
        }
        private void Refresh(int instanceID, Rect rect)
        {
            if (!display)
            {
                return;
            }

            if (items.ContainsKey(instanceID) && items[instanceID].go != null)
            {
                RefreshActive(items[instanceID], rect);

                RefreshIcon(items[instanceID], rect);
            }
            else
            {
                GameObject target = EditorUtility.InstanceIDToObject(instanceID) as GameObject;

                if (target == null)
                {
                    return;
                }

                items.Add(instanceID, new Information()
                {
                    go         = target,
                    components = new List <Texture2D>(),
                });
                Component[] components = items[instanceID].go.GetComponents <Component>();

                int count = components.Length;

                for (int i = 0; i < count; i++)
                {
                    if (components[i] == null)
                    {
                        continue;
                    }
                    else if (ignore.Exists(x => x.Equals(components[i].GetType()) || x.IsSubclassOf(components[i].GetType())))
                    {
                        continue;
                    }
                    else
                    {
                        if (AssetPreview.GetMiniThumbnail(components[i]) is Texture2D texture)
                        {
                            items[instanceID].components.Add(texture);
                        }
                    }
                }
            }
        }
        private Texture GetAssetPreviewTexture()
        {
            bool    flag    = AssetPreview.IsLoadingAssetPreview(base.target.GetInstanceID());
            Texture texture = AssetPreview.GetAssetPreview(base.target);

            if (!texture)
            {
                if (flag)
                {
                    GUIView.current.Repaint();
                }
                texture = AssetPreview.GetMiniThumbnail(base.target);
            }
            return(texture);
        }
 public ComponentElement(int level, string name, string menuPath, string commandString)
 {
     this.level    = level;
     this.typeName = name.Replace(" ", string.Empty);
     this.menuPath = menuPath;
     if (commandString.StartsWith("SCRIPT"))
     {
         Texture miniThumbnail = (Texture)AssetPreview.GetMiniThumbnail(EditorUtility.InstanceIDToObject(int.Parse(commandString.Substring(6))));
         this.content = new GUIContent(name, miniThumbnail);
     }
     else
     {
         int classID = int.Parse(commandString);
         this.content = new GUIContent(name, (Texture)AssetPreview.GetMiniTypeThumbnailFromClassID(classID));
     }
 }
        Texture GetAssetPreviewTexture()
        {
            Texture tex = null;
            bool    isLoadingAssetPreview = AssetPreview.IsLoadingAssetPreview(target.GetInstanceID());

            tex = AssetPreview.GetAssetPreview(target);
            if (!tex)
            {
                // We have a static preview it just hasn't been loaded yet. Repaint until we have it loaded.
                if (isLoadingAssetPreview)
                {
                    GUIView.current.Repaint();
                }
                tex = AssetPreview.GetMiniThumbnail(target);
            }
            return(tex);
        }
        internal virtual void OnHeaderIconGUI(Rect iconRect)
        {
            Texture2D icon = null;

            //  Fetch isLoadingAssetPreview to ensure that there is no situation where a preview needs a repaint because it hasn't finished loading yet.
            bool isLoadingAssetPreview = AssetPreview.IsLoadingAssetPreview(target.GetInstanceID());
            icon = AssetPreview.GetAssetPreview(target);
            if (!icon)
            {
                // We have a static preview it just hasn't been loaded yet. Repaint until we have it loaded.
                if (isLoadingAssetPreview)
                    Repaint();
                icon = AssetPreview.GetMiniThumbnail(target);
            }

            GUI.Label(iconRect, icon, BaseStyles.centerStyle);
        }
 public ComponentElement(int level, string name, string menuPath, string commandString)
 {
     this.level    = level;
     this.menuPath = menuPath;
     this.isLegacy = menuPath.Contains("Legacy");
     if (commandString.StartsWith("SCRIPT"))
     {
         int instanceID                   = int.Parse(commandString.Substring(6));
         UnityEngine.Object obj           = EditorUtility.InstanceIDToObject(instanceID);
         Texture            miniThumbnail = AssetPreview.GetMiniThumbnail(obj);
         this.content = new GUIContent(name, miniThumbnail);
     }
     else
     {
         int classID = int.Parse(commandString);
         this.content = new GUIContent(name, AssetPreview.GetMiniTypeThumbnailFromClassID(classID));
     }
 }
 public static GUIContent ObjectContent(UnityEngine.Object obj, Type type)
 {
     if (obj)
     {
         if (obj is AudioMixerGroup)
         {
             EditorGUIUtility.s_ObjectContent.text = obj.name + " (" + ((AudioMixerGroup)obj).audioMixer.name + ")";
         }
         else
         {
             if (obj is AudioMixerSnapshot)
             {
                 EditorGUIUtility.s_ObjectContent.text = obj.name + " (" + ((AudioMixerSnapshot)obj).audioMixer.name + ")";
             }
             else
             {
                 EditorGUIUtility.s_ObjectContent.text = obj.name;
             }
         }
         EditorGUIUtility.s_ObjectContent.image = AssetPreview.GetMiniThumbnail(obj);
     }
     else
     {
         string arg;
         if (type == null)
         {
             arg = "<no type>";
         }
         else
         {
             if (type.Namespace != null)
             {
                 arg = type.ToString().Substring(type.Namespace.ToString().Length + 1);
             }
             else
             {
                 arg = type.ToString();
             }
         }
         EditorGUIUtility.s_ObjectContent.text  = string.Format("None ({0})", arg);
         EditorGUIUtility.s_ObjectContent.image = AssetPreview.GetMiniTypeThumbnail(type);
     }
     return(EditorGUIUtility.s_ObjectContent);
 }
Exemple #12
0
 public static GUIContent ObjectContent(UnityEngine.Object obj, Type type)
 {
     if (obj)
     {
         EditorGUIUtility.s_ObjectContent.text  = EditorGUIUtility.GetObjectNameWithInfo(obj);
         EditorGUIUtility.s_ObjectContent.image = AssetPreview.GetMiniThumbnail(obj);
     }
     else if (type != null)
     {
         EditorGUIUtility.s_ObjectContent.text  = EditorGUIUtility.GetTypeNameWithInfo(type.Name);
         EditorGUIUtility.s_ObjectContent.image = AssetPreview.GetMiniTypeThumbnail(type);
     }
     else
     {
         EditorGUIUtility.s_ObjectContent.text  = "<no type>";
         EditorGUIUtility.s_ObjectContent.image = null;
     }
     return(EditorGUIUtility.s_ObjectContent);
 }
Exemple #13
0
 public static GUIContent ObjectContent(Object obj, Type type)
 {
     if (obj != null)
     {
         if (obj is AudioMixerGroup)
         {
             s_ObjectContent.text = obj.name + " (" + ((AudioMixerGroup)obj).audioMixer.name + ")";
         }
         else if (obj is AudioMixerSnapshot)
         {
             s_ObjectContent.text = obj.name + " (" + ((AudioMixerSnapshot)obj).audioMixer.name + ")";
         }
         else
         {
             s_ObjectContent.text = obj.name;
         }
         s_ObjectContent.image = AssetPreview.GetMiniThumbnail(obj);
     }
     else
     {
         string str;
         if (type == null)
         {
             str = "<no type>";
         }
         else if (type.Namespace != null)
         {
             str = type.ToString().Substring(type.Namespace.ToString().Length + 1);
         }
         else
         {
             str = type.ToString();
         }
         s_ObjectContent.text  = string.Format("None ({0})", str);
         s_ObjectContent.image = AssetPreview.GetMiniTypeThumbnail(type);
     }
     return(s_ObjectContent);
 }
        public ComponentDropdownItem(string name, string menuPath, string command) : base(name, -1)
        {
            m_MenuPath = menuPath;
            m_IsLegacy = menuPath.Contains("Legacy");

            if (command.StartsWith("SCRIPT"))
            {
                var scriptId = int.Parse(command.Substring(6));
                var obj      = EditorUtility.InstanceIDToObject(scriptId);
                var icon     = AssetPreview.GetMiniThumbnail(obj);
                m_Content = new GUIContent(name, icon);
            }
            else
            {
                var classId = int.Parse(command);
                m_Content = new GUIContent(name, AssetPreview.GetMiniTypeThumbnailFromClassID(classId));
            }
            m_ContentWhenSearching = new GUIContent(m_Content);
            if (m_IsLegacy)
            {
                m_ContentWhenSearching.text += " (Legacy)";
            }
        }
 public ComponentDropdownElement(string name, string menuPath, string command) : base(name)
 {
     this.m_MenuPath = menuPath;
     this.m_Command  = command;
     this.m_IsLegacy = menuPath.Contains("Legacy");
     if (command.StartsWith("SCRIPT"))
     {
         int instanceID                   = int.Parse(command.Substring(6));
         UnityEngine.Object obj           = EditorUtility.InstanceIDToObject(instanceID);
         Texture2D          miniThumbnail = AssetPreview.GetMiniThumbnail(obj);
         this.m_Content = new GUIContent(name, miniThumbnail);
     }
     else
     {
         int classID = int.Parse(command);
         this.m_Content = new GUIContent(name, AssetPreview.GetMiniTypeThumbnailFromClassID(classID));
     }
     this.m_ContentWhenSearching = new GUIContent(this.m_Content);
     if (this.m_IsLegacy)
     {
         GUIContent expr_A4 = this.m_ContentWhenSearching;
         expr_A4.text += " (Legacy)";
     }
 }
Exemple #16
0
        private void OnGUIShaderPropTexture(Rect nameRect, Rect flagsRect, Rect valueRect, ShaderTextureInfo t)
        {
            GUI.Label(nameRect, t.name, EditorStyles.miniLabel);
            this.DrawShaderPropertyFlags(flagsRect, t.flags);
            Event current  = Event.current;
            Rect  position = valueRect;

            position.width = position.height;
            if (t.value != null && position.Contains(current.mousePosition))
            {
                GUI.Label(position, GUIContent.Temp(string.Empty, "Ctrl + Click to show preview"));
            }
            if (current.type == EventType.Repaint)
            {
                Rect position2 = valueRect;
                position2.xMin += position.width;
                if (t.value != null)
                {
                    Texture texture = t.value;
                    if (texture.dimension != TextureDimension.Tex2D)
                    {
                        texture = AssetPreview.GetMiniThumbnail(texture);
                    }
                    EditorGUI.DrawPreviewTexture(position, texture);
                }
                GUI.Label(position2, (!(t.value != null)) ? t.textureName : t.value.name);
            }
            else if (current.type == EventType.MouseDown)
            {
                if (valueRect.Contains(current.mousePosition))
                {
                    EditorGUI.PingObjectOrShowPreviewOnClick(t.value, valueRect);
                    current.Use();
                }
            }
        }
 public static void CreateAsset(UnityEngine.Object asset, string pathName)
 {
     ProjectWindowUtil.StartNameEditingIfProjectWindowExists(asset.GetInstanceID(), ScriptableObject.CreateInstance <DoCreateNewAsset>(), pathName, AssetPreview.GetMiniThumbnail(asset), null);
 }
        static void ShowAssetsPopupMenu <T>(Rect buttonRect, string typeName, SerializedProperty serializedProperty, string fileExtension, string defaultFieldName) where T : Object, new()
        {
            GenericMenu gm = new GenericMenu();

            int selectedInstanceID = serializedProperty.objectReferenceValue != null?serializedProperty.objectReferenceValue.GetInstanceID() : 0;


            bool foundDefaultAsset = false;
            var  type    = UnityEditor.UnityType.FindTypeByName(typeName);
            int  classID = type != null ? type.persistentTypeID : 0;

            BuiltinResource[] resourceList = null;

            // Check the assets for one that matches the default name.
            if (classID > 0)
            {
                resourceList = EditorGUIUtility.GetBuiltinResourceList(classID);
                foreach (var resource in resourceList)
                {
                    if (resource.m_Name == defaultFieldName)
                    {
                        gm.AddItem(new GUIContent(resource.m_Name), resource.m_InstanceID == selectedInstanceID, AssetPopupMenuCallback, new object[] { resource.m_InstanceID, serializedProperty });
                        resourceList      = resourceList.Where(x => x != resource).ToArray();
                        foundDefaultAsset = true;
                        break;
                    }
                }
            }

            // If no defalut asset was found, add defualt null value.
            if (!foundDefaultAsset)
            {
                gm.AddItem(new GUIContent(defaultFieldName), selectedInstanceID == 0, AssetPopupMenuCallback, new object[] { 0, serializedProperty });
            }

            // Add items from asset database
            foreach (var property in AssetDatabase.FindAllAssets(new SearchFilter()
            {
                classNames = new[] { typeName }
            }))
            {
                gm.AddItem(new GUIContent(property.name), property.instanceID == selectedInstanceID, AssetPopupMenuCallback, new object[] { property.instanceID, serializedProperty });
            }

            // Add builtin items, except for the already added default item.
            if (classID > 0 && resourceList != null)
            {
                foreach (var resource in resourceList)
                {
                    gm.AddItem(new GUIContent(resource.m_Name), resource.m_InstanceID == selectedInstanceID, AssetPopupMenuCallback, new object[] { resource.m_InstanceID, serializedProperty });
                }
            }

            var  target   = serializedProperty.serializedObject.targetObject;
            bool isPreset = target is Component ? ((int)(target as Component).gameObject.hideFlags == 93) : !AssetDatabase.Contains(target);

            // the preset object is destroyed with the inspector, and nothing new can be created that needs this link. Fix for case 1208437
            if (!isPreset)
            {
                // Create item
                gm.AddSeparator("");
                gm.AddItem(EditorGUIUtility.TrTextContent("Create New..."), false, delegate
                {
                    var newAsset = Activator.CreateInstance <T>();
                    var doCreate = ScriptableObject.CreateInstance <DoCreateNewAsset>();
                    doCreate.SetProperty(serializedProperty);
                    ProjectWindowUtil.StartNameEditingIfProjectWindowExists(newAsset.GetInstanceID(), doCreate, "New " + typeName + "." + fileExtension, AssetPreview.GetMiniThumbnail(newAsset), null);
                });
            }

            gm.DropDown(buttonRect);
        }
Exemple #19
0
        // This method takes either object reference directly, or via SerializedObject.
        // Since it's not easy to know which parameters are mutually exclusively used, this method is
        // private and internal/public methods instead EITHER take SerializedObject OR direct reference.
        static Object DoObjectField(Rect position, Rect dropRect, int id, Object obj, Object objBeingEdited, System.Type objType, SerializedProperty property, ObjectFieldValidator validator, bool allowSceneObjects, GUIStyle style)
        {
            if (validator == null)
            {
                validator = ValidateObjectFieldAssignment;
            }
            if (property != null)
            {
                obj = property.objectReferenceValue;
            }
            Event     evt       = Event.current;
            EventType eventType = evt.type;

            // special case test, so we continue to ping/select objects with the object field disabled
            if (!GUI.enabled && GUIClip.enabled && (Event.current.rawType == EventType.MouseDown))
            {
                eventType = Event.current.rawType;
            }

            bool hasThumbnail = EditorGUIUtility.HasObjectThumbnail(objType);

            // Determine visual type
            ObjectFieldVisualType visualType = ObjectFieldVisualType.IconAndText;

            if (hasThumbnail && position.height <= kObjectFieldMiniThumbnailHeight && position.width <= kObjectFieldMiniThumbnailWidth)
            {
                visualType = ObjectFieldVisualType.MiniPreview;
            }
            else if (hasThumbnail && position.height > kSingleLineHeight)
            {
                visualType = ObjectFieldVisualType.LargePreview;
            }

            Vector2 oldIconSize = EditorGUIUtility.GetIconSize();

            if (visualType == ObjectFieldVisualType.IconAndText)
            {
                EditorGUIUtility.SetIconSize(new Vector2(12, 12));  // Have to be this small to fit inside a single line height ObjectField
            }
            else if (visualType == ObjectFieldVisualType.LargePreview)
            {
                EditorGUIUtility.SetIconSize(new Vector2(64, 64));
            }

            switch (eventType)
            {
            case EventType.DragExited:
                if (GUI.enabled)
                {
                    HandleUtility.Repaint();
                }

                break;

            case EventType.DragUpdated:
            case EventType.DragPerform:

                if (eventType == EventType.DragPerform)
                {
                    string errorString;
                    if (!ValidDroppedObject(DragAndDrop.objectReferences, objType, out errorString))
                    {
                        Object reference = DragAndDrop.objectReferences[0];
                        EditorUtility.DisplayDialog("Can't assign script", errorString, "OK");
                        break;
                    }
                }

                if (dropRect.Contains(Event.current.mousePosition) && GUI.enabled)
                {
                    Object[] references      = DragAndDrop.objectReferences;
                    Object   validatedObject = validator(references, objType, property, ObjectFieldValidatorOptions.None);

                    if (validatedObject != null)
                    {
                        // If scene objects are not allowed and object is a scene object then clear
                        if (!allowSceneObjects && !EditorUtility.IsPersistent(validatedObject))
                        {
                            validatedObject = null;
                        }
                    }

                    if (validatedObject != null)
                    {
                        DragAndDrop.visualMode = DragAndDropVisualMode.Generic;
                        if (eventType == EventType.DragPerform)
                        {
                            if (property != null)
                            {
                                property.objectReferenceValue = validatedObject;
                            }
                            else
                            {
                                obj = validatedObject;
                            }

                            GUI.changed = true;
                            DragAndDrop.AcceptDrag();
                            DragAndDrop.activeControlID = 0;
                        }
                        else
                        {
                            DragAndDrop.activeControlID = id;
                        }
                        Event.current.Use();
                    }
                }
                break;

            case EventType.MouseDown:
                // Ignore right clicks
                if (Event.current.button != 0)
                {
                    break;
                }
                if (position.Contains(Event.current.mousePosition))
                {
                    // Get button rect for Object Selector
                    Rect buttonRect = GetButtonRect(visualType, position);

                    EditorGUIUtility.editingTextField = false;

                    if (buttonRect.Contains(Event.current.mousePosition))
                    {
                        if (GUI.enabled)
                        {
                            GUIUtility.keyboardControl = id;
                            if (property != null)
                            {
                                ObjectSelector.get.Show(objType, property, allowSceneObjects);
                            }
                            else
                            {
                                ObjectSelector.get.Show(obj, objType, objBeingEdited, allowSceneObjects);
                            }
                            ObjectSelector.get.objectSelectorID = id;

                            evt.Use();
                            GUIUtility.ExitGUI();
                        }
                    }
                    else
                    {
                        Object    actualTargetObject = property != null ? property.objectReferenceValue : obj;
                        Component com = actualTargetObject as Component;
                        if (com)
                        {
                            actualTargetObject = com.gameObject;
                        }
                        if (showMixedValue)
                        {
                            actualTargetObject = null;
                        }

                        // One click shows where the referenced object is, or pops up a preview
                        if (Event.current.clickCount == 1)
                        {
                            GUIUtility.keyboardControl = id;

                            PingObjectOrShowPreviewOnClick(actualTargetObject, position);
                            evt.Use();
                        }
                        // Double click opens the asset in external app or changes selection to referenced object
                        else if (Event.current.clickCount == 2)
                        {
                            if (actualTargetObject)
                            {
                                AssetDatabase.OpenAsset(actualTargetObject);
                                GUIUtility.ExitGUI();
                            }
                            evt.Use();
                        }
                    }
                }
                break;

            case EventType.ExecuteCommand:
                string commandName = evt.commandName;
                if (commandName == ObjectSelector.ObjectSelectorUpdatedCommand && ObjectSelector.get.objectSelectorID == id && GUIUtility.keyboardControl == id && (property == null || !property.isScript))
                {
                    return(AssignSelectedObject(property, validator, objType, evt));
                }
                else if (commandName == ObjectSelector.ObjectSelectorClosedCommand && ObjectSelector.get.objectSelectorID == id && GUIUtility.keyboardControl == id && property != null && property.isScript)
                {
                    if (ObjectSelector.get.GetInstanceID() == 0)
                    {
                        // User canceled object selection; don't apply
                        evt.Use();
                        break;
                    }
                    return(AssignSelectedObject(property, validator, objType, evt));
                }
                break;

            case EventType.KeyDown:
                if (GUIUtility.keyboardControl == id)
                {
                    if (evt.keyCode == KeyCode.Backspace || (evt.keyCode == KeyCode.Delete && (evt.modifiers & EventModifiers.Shift) == 0))
                    {
                        if (property != null)
                        {
                            property.objectReferenceValue = null;
                        }
                        else
                        {
                            obj = null;
                        }

                        GUI.changed = true;
                        evt.Use();
                    }

                    // Apparently we have to check for the character being space instead of the keyCode,
                    // otherwise the Inspector will maximize upon pressing space.
                    if (evt.MainActionKeyForControl(id))
                    {
                        if (property != null)
                        {
                            ObjectSelector.get.Show(objType, property, allowSceneObjects);
                        }
                        else
                        {
                            ObjectSelector.get.Show(obj, objType, objBeingEdited, allowSceneObjects);
                        }
                        ObjectSelector.get.objectSelectorID = id;
                        evt.Use();
                        GUIUtility.ExitGUI();
                    }
                }
                break;

            case EventType.Repaint:
                GUIContent temp;
                if (showMixedValue)
                {
                    temp = s_MixedValueContent;
                }
                else if (property != null)
                {
                    temp = EditorGUIUtility.TempContent(property.objectReferenceStringValue, AssetPreview.GetMiniThumbnail(property.objectReferenceValue));
                    obj  = property.objectReferenceValue;
                    if (obj != null)
                    {
                        Object[] references = { obj };
                        if (EditorSceneManager.preventCrossSceneReferences && CheckForCrossSceneReferencing(obj, property.serializedObject.targetObject))
                        {
                            if (!EditorApplication.isPlaying)
                            {
                                temp = s_SceneMismatch;
                            }
                            else
                            {
                                temp.text = temp.text + string.Format(" ({0})", GetGameObjectFromObject(obj).scene.name);
                            }
                        }
                        else if (validator(references, objType, property, ObjectFieldValidatorOptions.ExactObjectTypeValidation) == null)
                        {
                            temp = s_TypeMismatch;
                        }
                    }
                }
                else
                {
                    temp = EditorGUIUtility.ObjectContent(obj, objType);
                }

                switch (visualType)
                {
                case ObjectFieldVisualType.IconAndText:
                    BeginHandleMixedValueContentColor();
                    style.Draw(position, temp, id, DragAndDrop.activeControlID == id, position.Contains(Event.current.mousePosition));

                    Rect buttonRect = EditorStyles.objectFieldButton.margin.Remove(GetButtonRect(visualType, position));
                    EditorStyles.objectFieldButton.Draw(buttonRect, GUIContent.none, id, DragAndDrop.activeControlID == id, buttonRect.Contains(Event.current.mousePosition));
                    EndHandleMixedValueContentColor();
                    break;

                case ObjectFieldVisualType.LargePreview:
                    DrawObjectFieldLargeThumb(position, id, obj, temp);
                    break;

                case ObjectFieldVisualType.MiniPreview:
                    DrawObjectFieldMiniThumb(position, id, obj, temp);
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
                break;
            }

            EditorGUIUtility.SetIconSize(oldIconSize);

            return(obj);
        }
Exemple #20
0
 internal override void OnHeaderIconGUI(Rect iconRect)
 {
     // Even though we have a Preview panel, we don't want to reuse it for the header icon, because it looks very odd when
     // you start scrubbing through different slices etc. Just render the default icon for Texture2DArray objects.
     GUI.Label(iconRect, AssetPreview.GetMiniThumbnail(target));
 }
 private static void CreateDefaultAsset(Object asset, string pathName)
 {
     StartNameEditingIfProjectWindowExists(asset.GetInstanceID(), ScriptableObject.CreateInstance <DoCreateNewDefaultAsset>(), pathName, AssetPreview.GetMiniThumbnail(asset), null);
 }