public void BindAttrs(XmlLayoutElement element, BoundAttributeCollection collection) { for (var i = 0; i < objectBuildActions.Count; i++) { objectBuildActions[i](element, collection); } }
public Layout <T> InflateChild <T>(XmlLayoutElement parent, string layoutXml, IVariableProvider provider = null) where T : Component { var element = InflateChild(parent, layoutXml, provider); return(new Layout <T>(element, element.GetComponent <T>())); }
public void AddAttributes <T>(XmlLayoutElement element, T component, IVariableBinder <T>[] binders, IConstantSetter <T>[] constants) where T : Object { if (binders.Length == 0 && constants.Length == 0) { return; } var holder = ScriptableObject.CreateInstance <VariableReferenceHolder>(); holder.variables = new Func <object, IVariableProvider, IBoundVariable> [binders.Length]; holder.constants = new Action <object> [constants.Length]; for (var i = 0; i < binders.Length; i++) { var setter = binders[i]; holder.variables[i] = (c, p) => setter.Bind(element, (T)c, p); } for (var i = 0; i < constants.Length; i++) { var setter = constants[i].Setter; holder.constants[i] = (c) => setter(element, (T)c); } setters.Add(new BoundReference { target = component, holder = holder }); }
public XmlLayoutElement InflateChild(XmlLayoutElement parent, string xmlString, IVariableProvider provider = null) { var child = Inflate(parent.ChildParentTransform, xmlString, provider); parent.Container.AddChild(child); return(child); }
public BoundVariable(XmlLayoutElement element, T instance, IVariableValue <P> value, ValueSetterDelegate <T, P> setter) { this.element = element; this.instance = instance; this.value = value; this.setter = setter; value.OnValueChanged += ApplyChanged; }
private XmlLayoutElement CreateInstance(XmlLayoutElement elementRoot, Transform root, ElementNode element, BoundAttributeCollection binders) { var instance = element.factory.CreateElement(root, binders, this, element.ownAttrs); var container = instance.Container; if (!elementRoot) { elementRoot = instance; } for (var i = 0; i < element.childNodes.Count; i++) { var node = element.childNodes[i]; switch (node.type) { case XmlUIUtils.AttrsChildRootName: elementRoot.Container = instance; break; default: var childInstance = CreateInstance(elementRoot, container.ChildParentTransform, node, binders); container.AddChild(childInstance); break; } } element.factory.BindAttrs(instance, binders); foreach (var c in element.components) { c.BindAttrs(instance, binders); } instance.OnCreatedFromXml(); return(instance); }
public void SetElement(XmlLayoutElement e, string layout) { this.element = e; this.layout = layout; }
public IBoundVariable Bind(XmlLayoutElement element, T instance, IVariableProvider provider) { var value = provider.GetValue <P>(VariableName); return(new BoundVariable(element, instance, value, Setter)); }
public void Apply(XmlLayoutElement element, T instance) => Setter(element, instance);
public XmlPrefabElementInfo(string name, XmlLayoutElement prefab) : base(name) { prefabElement = prefab; }