private static ScriptingGraphAuthoring.InputBindingAuthoring GetExistingBinding( ScriptingGraphAuthoring authoring, BindingId id) { var binding = authoring.Values?.FirstOrDefault(v => v.Id.Equals(id)); return(binding); }
private void Construct(SignalManager manager, SignalSettings settings, BindInfo bindInfo) { _manager = manager; SignalId = new BindingId(this.GetType(), bindInfo.Identifier); Settings = settings; }
public LookupId(IProvider provider, BindingId bindingId) { Assert.IsNotNull(provider); Assert.IsNotNull(bindingId); Provider = provider; BindingId = bindingId; }
public static LookupId SpawnLookupId(IProvider provider, BindingId bindingId) { var lookupId = _lookupIdPool.Spawn(); lookupId.Provider = provider; lookupId.BindingId = bindingId; return(lookupId); }
public void ShouldThrowIfBindingReferenceToUnboundId() { var fooId = new BindingId(); _fixture.BindReference <IBar>(fooId); var exception = Assert.Throws <DependencyException>(() => _fixture.Resolve <IBar>()); Assert.That(exception.Message, Does.StartWith("No binding associated with Id for abstraction type IBar. You are missing a call to .Id(...)")); }
public void OnSpawned( Action <object> callback, SignalDeclaration declaration) { Assert.IsNull(_callback); _callback = callback; _declaration = declaration; // Cache this in case OnDeclarationDespawned is called _signalId = declaration.BindingId; declaration.Add(this); }
public void ShouldResolveReferenceToBindingIdDefinedOutsideUsingScope() { var bar = new Bar(); var barId = new BindingId(); _fixture.BindInstance(bar).Id(barId); _fixture.BindToSelf <Foo>().Using(x => x.BindReference <IBar>(barId)); var foo = _fixture.Resolve <Foo>(); Assert.That(foo.Bar, Is.SameAs(bar)); }
public SignalDeclaration( SignalDeclarationBindInfo bindInfo, [InjectOptional] ZenjectSettings zenjectSettings) { zenjectSettings = zenjectSettings ?? ZenjectSettings.Default; _settings = zenjectSettings.Signals ?? ZenjectSettings.SignalSettings.Default; _bindingId = new BindingId(bindInfo.SignalType, bindInfo.Identifier); _missingHandlerResponses = bindInfo.MissingHandlerResponse; _isAsync = bindInfo.RunAsync; TickPriority = bindInfo.TickPriority; }
public InjectContext( DiContainer container, Type memberType, string identifier, bool optional, Type objectType, object objectInstance, string memberName, InjectContext parentContext) { ObjectType = objectType; ObjectInstance = objectInstance; Identifier = identifier; MemberName = memberName; MemberType = memberType; Optional = optional; Container = container; BindingId = new BindingId(memberType, identifier); ParentContext = parentContext; }
public InjectContext( DiContainer container, Type memberType, string identifier, bool optional, Type objectType, object objectInstance, string memberName, InjectContext parentContext, string concreteIdentifier, object fallBackValue, InjectSources sourceType) { ObjectType = objectType; ObjectInstance = objectInstance; Identifier = identifier; ConcreteIdentifier = concreteIdentifier; MemberName = memberName; MemberType = memberType; Optional = optional; FallBackValue = fallBackValue; Container = container; BindingId = new BindingId(memberType, identifier); ParentContext = parentContext; SourceType = sourceType; }
SignalDeclaration GetDeclaration(BindingId signalId, bool requireDeclaration) { SignalDeclaration handler; if (_localDeclarationMap.TryGetValue(signalId, out handler)) { return(handler); } if (_parentBus != null) { return(_parentBus.GetDeclaration(signalId, requireDeclaration)); } if (requireDeclaration) { throw Assert.CreateException("Fired undeclared signal '{0}'!", signalId); } return(null); }
public static LookupId SpawnLookupId(IProvider provider, BindingId bindingId) { return(new LookupId(provider, bindingId)); }
void InstallSingleBinding(Type type, string identifier, ComponentInfo componentInfo) { var bindingId = new BindingId(type, identifier); List<ComponentInfo> infoList; if (!_bindings.TryGetValue(bindingId, out infoList)) { infoList = new List<ComponentInfo>(); _bindings.Add(bindingId, infoList); // Note: We only want to register for each unique BindingId once // since we return multiple matches in GetAllInstancesWithInjectSplit _container.RegisterProvider(bindingId, null, this); } infoList.Add(componentInfo); }
public static BindingId ToBidingId(this string s) => BindingId.From((ulong)s.GetHashCode(), 0);
/// <summary> /// Returns a System.String containing an Xml representation of the specified property of the current object /// </summary> /// <param name="property">name of a specific property that is to be written out as Xml. /// If this value is filled in, only the <id/> node and the node for property are output. /// At the time of this writing, this is only used for product_pictures. /// </param> /// <returns></returns> public string ToXml(string property) { var xml = new XElement(_objectName); xml.Add(new XElement("id", Id.ToString())); if ((property == null || property == "product_type_id") && LogBits.BitTest(Enums.Logfield.ProductTypeId)) { xml.Add(new XElement("product_type_id", (int)ProductTypeId)); } if ((property == null || property == "name_nl") && Name_NL != null && LogBits.BitTest(Enums.Logfield.PublicProductName_NL)) { xml.Add(new XElement("name_nl", Name_NL)); } //if ((property == null || property == "name_en") && Name_EN != null && LogBits.BitTest(Enums.Logfield.PublicProductName_EN)) // xml.Add(new XElement("name_en", Name_EN)); if ((property == null || property == "songs") && LogBits.BitTest(Enums.Logfield.SongSortOrder)) { xml.Add(new XElement("songs", from song in Songs select new XElement(XElement.Parse(song.ToXml())))); } if ((property == null || property == "subtitle_nl") && LogBits.BitTest(Enums.Logfield.Subtitle_NL)) { xml.Add(new XElement("subtitle_nl", Subtitle_NL)); } if ((property == null || property == "author_id") && LogBits.BitTest(Enums.Logfield.AuthorId)) { xml.Add(new XElement("author_id", AuthorId.ToString())); } if ((property == null || property == "arranger_id") && LogBits.BitTest(Enums.Logfield.ArrangerId)) { xml.Add(new XElement("arranger_id", ArrangerId.ToString())); } if ((property == null || property == "manufacturer_id") && LogBits.BitTest(Enums.Logfield.ManufacturerId)) { xml.Add(new XElement("manufacturer_id", ManufacturerId.ToString())); } if ((property == null || property == "instrument_id") && LogBits.BitTest(Enums.Logfield.InstrumentId)) { xml.Add(new XElement("instrument_id", InstrumentId.ToString())); } if ((property == null || property == "sell_price") && !SalesPrice.IsNullOrZero() && LogBits.BitTest(Enums.Logfield.SalesPrice)) { xml.Add(new XElement("sell_price", SalesPrice)); } if ((property == null || property == "reference") && LogBits.BitTest(Enums.Logfield.ReferenceNumber)) { xml.Add(new XElement("reference", ReferenceNumber)); } if ((property == null || property == "isbn") && LogBits.BitTest(Enums.Logfield.Isbn)) { xml.Add(new XElement("isbn", Isbn)); } if ((property == null || property == "ismn") && LogBits.BitTest(Enums.Logfield.Ismn)) { xml.Add(new XElement("ismn", Ismn)); } if ((property == null || property == "ean") && LogBits.BitTest(Enums.Logfield.Ean)) { xml.Add(new XElement("ean", Ean)); } if ((property == null || property == "upc") && LogBits.BitTest(Enums.Logfield.Upc)) { xml.Add(new XElement("upc", Upc)); } if ((property == null || property == "language_id") && LogBits.BitTest(Enums.Logfield.LanguageId)) { xml.Add(new XElement("language_id", LanguageId != null ? ((int)LanguageId).ToString() : String.Empty)); } if ((property == null || property == "binding_id") && LogBits.BitTest(Enums.Logfield.BindingId)) { xml.Add(new XElement("binding_id", BindingId.ToString())); } if ((property == null || property == "grade_level") && LogBits.BitTest(Enums.Logfield.GradeLevel)) { xml.Add(new XElement("grade_level", GradeLevel)); } if ((property == null || property == "product_series_id") && LogBits.BitTest(Enums.Logfield.SeriesId)) { xml.Add(new XElement("product_series_id", SeriesId.ToString())); } if ((property == null || property == "nr_of_pages") && LogBits.BitTest(Enums.Logfield.Pages)) { xml.Add(new XElement("nr_of_pages", Pages.ToString())); } if ((property == null || property == "tax_rate_id") && LogBits.BitTest(Enums.Logfield.TaxRateId)) { xml.Add(new XElement("tax_rate_id", ((int)TaxRateId).ToString())); } if ((property == null || property == "product_pictures") && LogBits.BitTest(Enums.Logfield.ProductPictureFilename)) { xml.Add(new XElement("product_pictures", from picture in ProductPictures select new XElement(XElement.Parse(picture.ToXml())))); } if ((property == null || property == "description_nl") && LogBits.BitTest(Enums.Logfield.Description_NL)) { xml.Add(new XElement("description_nl", Description_NL)); } if ((property == null || property == "weight") && LogBits.BitTest(Enums.Logfield.Weight)) { xml.Add(new XElement("weight", Weight.ToString())); } if ((property == null || property == "length") && LogBits.BitTest(Enums.Logfield.Length)) { xml.Add(new XElement("length", Length.ToString())); } if ((property == null || property == "width") && LogBits.BitTest(Enums.Logfield.Width)) { xml.Add(new XElement("width", Width.ToString())); } if ((property == null || property == "height") && LogBits.BitTest(Enums.Logfield.Height)) { xml.Add(new XElement("height", Height.ToString())); } if ((property == null || property == "product_categories") && LogBits.BitTest(Enums.Logfield.ProductCategory)) { xml.Add(new XElement("product_categories", from category in ProductCategories select new XElement("product_category", new XElement("id", category.Id), new XElement("test", Test.ToInt())))); } if ((property == null || property == "internal_stock_qty") && LogBits.BitTest(Enums.Logfield.InternalStock)) { xml.Add(new XElement("internal_stock_qty", InternalStock.ToString())); } if ((property == null || property == "external_stock_qty") && LogBits.BitTest(Enums.Logfield.ExternalStock)) { xml.Add(new XElement("external_stock_qty", ExternalStock != null ? ExternalStock.ToString() : "1")); } if ((property == null || property == "supplier_id") && LogBits.BitTest(Enums.Logfield.SupplierId)) { xml.Add(new XElement("supplier_id", SupplierId.ToString())); } if ((property == null || property == "promotion") && LogBits.BitTest(Enums.Logfield.Promotion)) { xml.Add(new XElement("promotion", Promotion.ToInt().ToString())); } if ((property == null || property == "highlight_on_home") && LogBits.BitTest(Enums.Logfield.HighlightOnHome)) { xml.Add(new XElement("highlight_on_home", HighlightOnHome.ToInt().ToString())); } if ((property == null || property == "available") && LogBits.BitTest(Enums.Logfield.ActiveInWebshop)) { xml.Add(new XElement("available", ActiveInWebshop.ToInt().ToString())); } if ((property == null || property == "bestseller") && LogBits.BitTest(Enums.Logfield.BestSeller)) { xml.Add(new XElement("bestseller", BestSeller.ToInt().ToString())); } if ((property == null || property == "minimum_order_qty") && LogBits.BitTest(Enums.Logfield.MinimumOrderQty)) { xml.Add(new XElement("minimum_order_qty", (MinimumOrderQuantity != 0) ? MinimumOrderQuantity.ToString() : String.Empty)); } if ((property == null || property == "teacher_discount") && LogBits.BitTest(Enums.Logfield.WebshopTeacherDiscount)) { xml.Add(new XElement("teacher_discount", TeacherDiscount.ToString())); } if ((property == null || property == "reseller_discount") && LogBits.BitTest(Enums.Logfield.WebshopResellerDiscount)) { xml.Add(new XElement("reseller_discount", ResellerDiscount.ToString())); } if ((property == null || property == "search_keywords") && LogBits.BitTest(Enums.Logfield.SearchKeywords)) { xml.Add(new XElement("search_keywords", SearchKeywords)); } if ((property == null || property == "store_pickup_only") && LogBits.BitTest(Enums.Logfield.StorePickupOnly)) { xml.Add(new XElement("store_pickup_only", StorePickupOnly.ToInt().ToString())); } if ((property == null || property == "test")) { xml.Add(new XElement("test", Test.ToInt())); } if ((property == null || property == "created") && LogBits.BitTest(Enums.Logfield.CreateDttm)) { xml.Add(new XElement("created", (!CreatedDttm.IsNullOrDefault()) ? ((DateTime)CreatedDttm).ToString("yyyy-MM-dd HH:mm:ss") : String.Empty)); } if ((property == null || property == "updated") && LogBits.BitTest(Enums.Logfield.UpdateDttm)) { xml.Add(new XElement("updated", (!UpdatedDttm.IsNullOrDefault()) ? ((DateTime)UpdatedDttm).ToString("yyyy-MM-dd HH:mm:ss") : String.Empty)); } if ((property == null || property == "deleted") && LogBits.BitTest(Enums.Logfield.DeleteDttm)) { xml.Add(new XElement("deleted", (!DeletedDttm.IsNullOrDefault()) ? ((DateTime)DeletedDttm).ToString("yyyy-MM-dd HH:mm:ss") : String.Empty)); } string xmlString = xml.ToString(); return(xmlString); }
List<ComponentInfo> GetBoundInfosWithId(BindingId bindingId) { List<ComponentInfo> result; if (!_bindings.TryGetValue(bindingId, out result)) { result = new List<ComponentInfo>(); } return result; }
public SignalSubscriptionId(BindingId signalId, object callback) { _signalId = signalId; _callback = callback; }
public InjectContext() { _bindingId = new BindingId(); Reset(); }
void SetDefaults() { _callback = null; _declaration = null; _signalId = new BindingId(); }
void UnsubscribeInternal(BindingId signalId, object token, bool throwIfMissing) { UnsubscribeInternal( new SignalSubscriptionId(signalId, token), throwIfMissing); }
public override void OnInspectorGUI() { bool dirty = false; ScriptingGraphAuthoring authoring = target as ScriptingGraphAuthoring; VSGraphAssetModel assetModel = null; if (authoring.ScriptingGraph) { var path = AssetDatabase.GetAssetPath(authoring.ScriptingGraph); assetModel = AssetDatabase.LoadAssetAtPath <VSGraphAssetModel>(path); } var newAssetModel = EditorGUILayout.ObjectField("Scripting Graph", assetModel, typeof(VSGraphAssetModel)) as VSGraphAssetModel; if (assetModel != newAssetModel) { dirty = true; if (newAssetModel) { authoring.ScriptingGraph = ((DotsStencil)newAssetModel.GraphModel.Stencil).CompiledScriptingGraphAsset; } else { authoring.ScriptingGraph = null; } } // I/O if (!(newAssetModel?.GraphModel is VSGraphModel graph)) { return; } if (m_ProcessedBindings == null) { m_ProcessedBindings = new HashSet <BindingId>(); } else { m_ProcessedBindings.Clear(); } foreach (var graphVariableModel in graph.GraphVariableModels) { var variableType = GraphBuilder.GetVariableType(graphVariableModel); switch (variableType) { case GraphBuilder.VariableType.SmartObject: case GraphBuilder.VariableType.ObjectReference: BindingId id = GetExistingBinding(graphVariableModel, authoring, out var binding); m_ProcessedBindings.Add(id); if (binding == null) { dirty = true; authoring.Values.Add(binding = new ScriptingGraphAuthoring.InputBindingAuthoring(id)); } var valueType = graphVariableModel.DataType.TypeHandleToValueType(); EditorGUI.BeginChangeCheck(); switch (valueType) { case ValueType.Entity: binding.Object = EditorGUILayout.ObjectField(graphVariableModel.Name, binding.Object, typeof(GameObject), true); break; default: EditorGUILayout.LabelField(graphVariableModel.Name, valueType.ToString()); break; } if (EditorGUI.EndChangeCheck()) { dirty = true; } break; case GraphBuilder.VariableType.InputOutput: case GraphBuilder.VariableType.Variable: continue; default: throw new ArgumentOutOfRangeException(); } } if (authoring.Values != null) { for (var index = authoring.Values.Count - 1; index >= 0; index--) { var binding = authoring.Values[index]; if (!m_ProcessedBindings.Contains(binding.Id)) { authoring.Values.RemoveAt(index); dirty = true; } } } if (dirty) { EditorUtility.SetDirty(authoring); } }
void SubscribeInternal(BindingId signalId, object token, Action <object> callback) { SubscribeInternal( new SignalSubscriptionId(signalId, token), callback); }
protected static BindingId BindingIdFromString(string s) => BindingId.From((ulong)s.GetHashCode(), 0);