예제 #1
0
        void CollectPotentialConditions <T>(Dictionary <string, T> traitCollection, List <PotentialCondition> results, GameObject gameObject)
        {
            foreach (var trait in traitCollection)
            {
                var types = new List <Type>();
                ConditionsAnalyzer.GetConditionTypesForTrait(trait.Key, types);
                foreach (var conditionType in types)
                {
                    if (!conditionType.IsDefined(typeof(CreateFromDataOptions), true))
                    {
                        continue;
                    }

                    var options            = conditionType.GetAttribute <CreateFromDataOptions>(true);
                    var potentialCondition = new PotentialCondition
                    {
                        componentType    = conditionType,
                        data             = this,
                        gameObjectOwner  = gameObject,
                        createdComponent = gameObject.GetComponent(conditionType),
                        use   = options.AddByDefault,
                        order = options.Order
                    };

                    potentialCondition.UpdateComponent();
                    results.Add(potentialCondition);
                }
            }
        }
예제 #2
0
        static void CollectPotentialRelationsOfType <T>(Dictionary <string, T> collection, List <Type> resultTypes, int index)
        {
            foreach (var traitValue in collection)
            {
                var trait = traitValue.Key;
                switch (index)
                {
                case 0:
                    ConditionsAnalyzer.GetRelationTypesForChild1Trait(trait, resultTypes);
                    break;

                case 1:
                    ConditionsAnalyzer.GetRelationTypesForChild2Trait(trait, resultTypes);
                    break;
                }
            }
        }