public Object Build(GameObject gameObject, ComponentElementBuilder previousBuilder) { component = previousBuilder?.component ? previousBuilder?.component : gameObject.AddComponent(currentType); foreach (var key in setters.Keys) { var value = valuesForSetters.ContainsKey(key) ? valuesForSetters[key] : null; var previousValue = previousBuilder?.valuesForSetters.ContainsKey(key) == true ? previousBuilder?.valuesForSetters[key] : null; if (previousValue != null && previousValue.Equals(value)) { continue; } ReflectionUtils.SetProperty(component, setters[key], value); } return(component); }
public ComponentElementBuilder <TComponent> AddComponent <TComponent>() { var component = new ComponentElementBuilder <TComponent>(); this.components.Add(component); return(component); }
public Object Build(GameObject gameObject, ComponentElementBuilder previousBuilder) { component = previousBuilder?.component ? previousBuilder?.component : gameObject.AddComponent(currentType); foreach (var key in setters.Keys) { var value = valuesForSetters.ContainsKey(key) ? valuesForSetters[key] : valueFactoriesForSetters[key].DynamicInvoke(); ReflectionUtils.SetProperty(component, setters[key], value); } return(component); }