public NodeValue?Calculate(IValueCalculationContext valueCalculationContext)
        {
            var paths =
                from source in _path.ModifierSource.InfluencingSources
                let path = new PathDefinition(source)
                           from stat in _stat.Concat(_path.ConversionStats)
                           select(stat, path);

            return(_aggregator(valueCalculationContext.GetValues(_form, paths)));
        }
        private IEnumerable <PathDefinition> GetPaths(IValueCalculationContext context, IStat stat)
        {
            if (!_target.Equals(stat))
            {
                return(context.GetPaths(stat));
            }

            var originalPaths   = context.GetPaths(_target);
            var conversionPaths = context.GetPaths(_source)
                                  .Select(p => new PathDefinition(p.ModifierSource, _source.Concat(p.ConversionStats).ToList()));

            return(originalPaths.Concat(conversionPaths).Distinct());
        }
예제 #3
0
            public IEnumerable <PathDefinition> GetPaths(IStat stat)
            {
                if (!_foo.Equals(stat))
                {
                    return(_originalContext.GetPaths(stat));
                }

                var originalPaths   = _originalContext.GetPaths(_foo);
                var conversionPaths = _originalContext.GetPaths(_bar)
                                      .Select(p => new PathDefinition(p.ModifierSource, _bar.Concat(p.ConversionStats).ToList()));

                return(originalPaths.Concat(conversionPaths).Distinct());
            }