Exemple #1
0
        //// <summary>
        /// Gets the message renderer for <c>InspectorItemRenderer</c> with the attribute MessageAttribute.
        /// </summary>
        /// <returns>The message renderer created to render MessageAttribute in the inspector.</returns>
        /// <param name="renderer">An item renderer.</param>
        protected override MessageRenderer GetMessageRenderer(InspectorItemRenderer renderer)
        {
            MessageRenderer result = null;

            MessageAttribute messageAttribute = AttributeHelper.GetAttribute<MessageAttribute>(renderer.entityInfo);
            if(messageAttribute != null)
            {
                result = new MessageRenderer(renderer, subtarget, subtarget, renderers.ToArray());
            }

            return result;
        }
        //// <summary>
        /// Gets the message renderer for <c>InspectorItemRenderer</c> with the attribute MessageAttribute.
        /// </summary>
        /// <returns>The message renderer created to render MessageAttribute in the inspector.</returns>
        /// <param name="renderer">An item renderer.</param>
        protected override MessageRenderer GetMessageRenderer(InspectorItemRenderer renderer)
        {
            MessageRenderer result = null;

            MessageAttribute messageAttribute = AttributeHelper.GetAttribute <MessageAttribute>(renderer.entityInfo);

            if (messageAttribute != null)
            {
                result = new MessageRenderer(renderer, subtarget, subtarget, renderers.ToArray());
            }

            return(result);
        }
        private void InitializeMessageRenderers()
        {
            messageRenderers = MessageRenderer.GetMessageRenderers(renderer, contextRenderer);
            foreach (MessageRenderer messageRenderer in messageRenderers)
            {
                drawMessage += messageRenderer.Render;
            }

            #pragma warning disable 162
            if (Settings.messageRenderPosition == Settings.RenderPosition.Above)
            {
                preRenderOperations += drawMessage;
            }
            else if (Settings.messageRenderPosition == Settings.RenderPosition.Below)
            {
                postRenderOperations += drawMessage;
            }
            #pragma warning restore 162
        }
Exemple #4
0
        //// <summary>
        /// Gets the message renderer for <c>InspectorItemRenderer</c> with the attribute MessageAttribute.
        /// If the renderer belongs to the editor script, then the method specified in MessageAttribute
        /// is looked for in the editor script.
        /// </summary>
        /// <returns>The message renderer created to render MessageAttribute in the inspector.</returns>
        /// <param name="renderer">An item renderer.</param>
        protected override MessageRenderer GetMessageRenderer(InspectorItemRenderer renderer)
        {
            MessageRenderer result = null;

            MessageAttribute messageAttribute = AttributeHelper.GetAttribute <MessageAttribute>(renderer.entityInfo);

            if (messageAttribute != null)
            {
                object caller = serializedObject.targetObject;

                if (renderer.entityInfo.isMethod)
                {
                    if (typeof(EasyEditorBase).IsAssignableFrom(renderer.entityInfo.methodInfo.DeclaringType))
                    {
                        caller = editorScript;
                    }
                }

                result = new MessageRenderer(renderer, caller, serializedObject.targetObject, renderers.ToArray());
            }

            return(result);
        }
        public override void Render(Action preRender = null)
        {
            base.Render(preRender);

            if (groups == null)
            {
                RetrieveGroupList();

                if (groups == null)
                {
                    Debug.LogError("You should ensure your implementation of FullObjectRenderer set Groups groups in InitializeGroups() before to call Render on FullObjectRenderer. If there is not groups to set," +
                                   " initialize it with new Groups(string[]{''})");
                }
            }

            if (renderers == null)
            {
                InitializeRenderersList();
            }

            if (!groupInitialized)
            {
                InitializeGroups();
            }

            SetVisibility();

            EditorGUILayout.BeginVertical();

            Group nextGroup = groups[0];

            foreach (InspectorItemRenderer renderer in renderers)
            {
                if (nextGroup != null)
                {
                    if (renderer.inspectorAttribute.group == nextGroup.name)
                    {
                        if (nextGroup.hidden == false)
                        {
                            DrawGroupHeader(nextGroup);
                        }

                        int currentGroupIndex = groups.GetGroupIndex(nextGroup.name);
                        nextGroup = groups[currentGroupIndex + 1];
                    }
                }

                if (GroupDoesNotExist(renderer.inspectorAttribute.group, groups) || GroupExistsAndNotHidden(renderer.inspectorAttribute.group, groups))
                {
                    SetBeginLayout(renderer);

                    if (renderer.hidden == false)
                    {
                        renderer.serializedObject = serializedObject;

                        EditorGUILayout.BeginVertical();

                        Action preRenderOperations  = null;
                        Action postRenderOperations = null;


                        Action optimizeLabelWidth       = null;
                        Action cancelOptimizeLabelWidth = null;
                        float  oldLabelWidth            = EditorGUIUtility.labelWidth;

                        if (currentLayoutIsHorizontal)
                        {
                            if (!string.IsNullOrEmpty(renderer.GetLabel()))
                            {
                                optimizeLabelWidth = () =>
                                {
                                    var textDimensions = GUI.skin.label.CalcSize(new GUIContent(renderer.GetLabel()));
                                    EditorGUIUtility.labelWidth = textDimensions.x + 20f;
                                };

                                cancelOptimizeLabelWidth = () =>
                                {
                                    EditorGUIUtility.labelWidth = oldLabelWidth;
                                };
                            }
                        }

                        Action          drawMessage     = null;
                        MessageRenderer messageRenderer = GetMessageRenderer(renderer);
                        if (messageRenderer != null)
                        {
                            drawMessage += messageRenderer.Render;
                        }

                        preRenderOperations  += optimizeLabelWidth;
                        postRenderOperations += cancelOptimizeLabelWidth + drawMessage;

                        renderer.Render(preRenderOperations);
                        renderer.PostRender(postRenderOperations);


                        EditorGUILayout.EndVertical();
                    }

                    SetEndLayout(renderer);
                }

                GUILayout.Space(1f);
            }

            EditorGUILayout.EndVertical();
        }
        //// <summary>
        /// Gets the message renderer for <c>InspectorItemRenderer</c> with the attribute MessageAttribute.
        /// If the renderer belongs to the editor script, then the method specified in MessageAttribute
        /// is looked for in the editor script.
        /// </summary>
        /// <returns>The message renderer created to render MessageAttribute in the inspector.</returns>
        /// <param name="renderer">An item renderer.</param>
        protected override MessageRenderer GetMessageRenderer(InspectorItemRenderer renderer)
        {
            MessageRenderer result = null;

            MessageAttribute messageAttribute = AttributeHelper.GetAttribute<MessageAttribute>(renderer.entityInfo);
            if(messageAttribute != null)
            {
                object caller = serializedObject.targetObject;

                if(renderer.entityInfo.isMethod)
                {
                    if(typeof(EasyEditorBase).IsAssignableFrom(renderer.entityInfo.methodInfo.DeclaringType))
                    {
                        caller = editorScript;
                    }
                }

                result = new MessageRenderer(renderer, caller, serializedObject.targetObject, renderers.ToArray());
            }

            return result;
        }