public void SetVisibility() { bool renderRenderer = !inspectorItemRenderer.hidden; if (inspectorItemRenderer.entityInfo.isField && AttributeHelper.GetAttribute <HideInInspector>(inspectorItemRenderer.entityInfo.fieldInfo) != null) { renderRenderer = false; } else if (!string.IsNullOrEmpty(method)) { MethodInfo methodInfo = caller.GetType().GetMethod(method, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static); if (methodInfo != null) { if (methodInfo.ReturnType == typeof(bool)) { renderRenderer = (bool)methodInfo.Invoke(caller, null); } else { Debug.LogError("The method specified in the attribute Visibility have to return a bool."); } } else { Debug.LogError("The method specified in the attribute Visibility does not exist."); } } else if (!string.IsNullOrEmpty(id) && value != null) { InspectorItemRenderer conditionalRenderer = InspectorItemRenderer.LookForRenderer(id, otherRenderers); if (conditionalRenderer != null && conditionalRenderer.entityInfo.isField) { if (!value.Equals(conditionalRenderer.entityInfo.fieldInfo.GetValue(classFieldBelongTo))) { renderRenderer = false; } else { renderRenderer = true; } } else { Debug.LogWarning("The identifier " + id + " was not found in the list of renderers, or this renderer " + "was not initialized from a field. Ensure that the id parameter of the attribute Visibility refers to the id of a field " + "(name of the field if you did not specify explicitly the id of the field in [Inspector(id = \"...\")."); } } if (renderRenderer) { inspectorItemRenderer.hidden = false; } else { inspectorItemRenderer.hidden = true; } }
public InspectorItemRenderer LookForRenderer(string id) { return(InspectorItemRenderer.LookForRenderer(id, renderers.ToArray())); }