コード例 #1
0
        private static ScriptingGraphAuthoring.InputBindingAuthoring GetExistingBinding(
            ScriptingGraphAuthoring authoring, BindingId id)
        {
            var binding = authoring.Values?.FirstOrDefault(v => v.Id.Equals(id));

            return(binding);
        }
コード例 #2
0
        private void Construct(SignalManager manager, SignalSettings settings, BindInfo bindInfo)
        {
            _manager = manager;

            SignalId = new BindingId(this.GetType(), bindInfo.Identifier);
            Settings = settings;
        }
コード例 #3
0
        public LookupId(IProvider provider, BindingId bindingId)
        {
            Assert.IsNotNull(provider);
            Assert.IsNotNull(bindingId);

            Provider  = provider;
            BindingId = bindingId;
        }
コード例 #4
0
        public static LookupId SpawnLookupId(IProvider provider, BindingId bindingId)
        {
            var lookupId = _lookupIdPool.Spawn();

            lookupId.Provider  = provider;
            lookupId.BindingId = bindingId;

            return(lookupId);
        }
コード例 #5
0
        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(...)"));
        }
コード例 #6
0
        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);
        }
コード例 #7
0
        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));
        }
コード例 #8
0
        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;
        }
コード例 #9
0
ファイル: InjectContext.cs プロジェクト: IllusiveS/Asteroids
 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;
 }
コード例 #10
0
ファイル: InjectContext.cs プロジェクト: Aszan/Zenject
 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;
 }
コード例 #11
0
ファイル: SignalBus.cs プロジェクト: GooRain/Cyber-Infection
        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);
        }
コード例 #12
0
 public static LookupId SpawnLookupId(IProvider provider, BindingId bindingId)
 {
     return(new LookupId(provider, bindingId));
 }
コード例 #13
0
        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);
コード例 #15
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);
        }
コード例 #16
0
        List<ComponentInfo> GetBoundInfosWithId(BindingId bindingId)
        {
            List<ComponentInfo> result;

            if (!_bindings.TryGetValue(bindingId, out result))
            {
                result = new List<ComponentInfo>();
            }

            return result;
        }
コード例 #17
0
 public SignalSubscriptionId(BindingId signalId, object callback)
 {
     _signalId = signalId;
     _callback = callback;
 }
コード例 #18
0
 public InjectContext()
 {
     _bindingId = new BindingId();
     Reset();
 }
コード例 #19
0
 void SetDefaults()
 {
     _callback    = null;
     _declaration = null;
     _signalId    = new BindingId();
 }
コード例 #20
0
ファイル: SignalBus.cs プロジェクト: GooRain/Cyber-Infection
 void UnsubscribeInternal(BindingId signalId, object token, bool throwIfMissing)
 {
     UnsubscribeInternal(
         new SignalSubscriptionId(signalId, token), throwIfMissing);
 }
コード例 #21
0
        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);
            }
        }
コード例 #22
0
ファイル: SignalBus.cs プロジェクト: GooRain/Cyber-Infection
 void SubscribeInternal(BindingId signalId, object token, Action <object> callback)
 {
     SubscribeInternal(
         new SignalSubscriptionId(signalId, token), callback);
 }
コード例 #23
0
 protected static BindingId BindingIdFromString(string s) => BindingId.From((ulong)s.GetHashCode(), 0);