public static bool Execute(object container, InspectorVisitor <T> visitor, IProperty property, PropertyPath path, string propertyName, InspectorVisitLevel visitLevel) { var action = new GetCustomInspectorCallback(visitor, property, path, propertyName, visitLevel); PropertyBagResolver.Resolve(container.GetType()).Cast(ref action); return(action.Visited); }
GetCustomInspectorCallback(InspectorVisitor <T> visitor, IProperty property, PropertyPath propertyPath, string propertyName, InspectorVisitLevel visitLevel) { m_Visitor = visitor; Visited = false; m_PropertyPath = propertyPath; m_PropertyName = propertyName; m_VisitLevel = visitLevel; m_Property = property; }
public bool Visit(VisualElement parent, PropertyPath path) { var visitor = new InspectorVisitor <TTarget>(m_Element, m_Target); visitor.AddAdapter(new UnityObjectAdapter <TTarget>(visitor)); visitor.AddAdapter(new NullAdapter <TTarget>(visitor)); visitor.AddAdapter(new PrimitivesAdapter <TTarget>(visitor)); var changerTracker = new ChangeTracker(); using (visitor.VisitorContext.MakeParentScope(parent)) { return(PropertyContainer.TryVisitAtPath(ref m_Target, path, visitor, ref changerTracker)); } }
private static bool TryGetInspector <TValue>( InspectorVisitor <T> visitor, IProperty property, PropertyPath propertyPath, string propertyName, InspectorVisitLevel visitLevel) { var inspector = CustomInspectorDatabase.GetInspector <TValue>(property); if (null == inspector) { return(false); } var proxy = new InspectorContext <TValue>(visitor.VisitorContext.Binding, property, propertyPath, propertyName, visitLevel); var customInspector = new CustomInspectorElement <TValue>(inspector, proxy); visitor.VisitorContext.Parent.contentContainer.Add(customInspector); inspector.Update(proxy); return(true); }