//// <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 }
//// <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; }