Exemple #1
0
        public static List <FilterResult <T> > MedianValueFilter <T>
            (IEnumerable <T> items,
            Func <T, IComparable> valueFunc,
            int sampleCount, int jump)
        {
            T[] itemArray = items.ToArray();
            if (itemArray.Length < sampleCount)
            {
                itemArray = itemArray.OrderBy(p => valueFunc(p)).ToArray();
                var item = GetMedianItem(itemArray);
                return(new List <FilterResult <T> >()
                {
                    new FilterResult <T>(item, itemArray, valueFunc(item))
                });
            }
            List <FilterResult <T> > results = new List <FilterResult <T> >();

            for (int i = sampleCount - 1; i < itemArray.Length; i += jump)
            {
                AutoSortList <T> sortedList = new AutoSortList <T>(valueFunc);
                for (int j = i - sampleCount + 1; j <= i; j++)
                {
                    sortedList.Add(itemArray[j]);
                }
                T medianValue = GetMedianItem(sortedList);
                results.Add(new FilterResult <T>(medianValue, sortedList, valueFunc(medianValue)));
            }

            return(results);
        }
Exemple #2
0
        public GameSourceManager(Game game, PhysicEngineProxy physicEngine, IDebugger debugger)
        {
            serialSID = 0;
            //GSList = new KeyedList<uint, GameSource>();
            GSList        = new AutoSortList <GameSource>(GameSource.CompareSID);
            GSAdapterList = new AutoSortList <GameSourceAdapter>(GameSourceAdapter.CompareSID);
            visitors      = new List <IGSVisitor>();

            added   = new List <GameSource>();
            removed = new List <GameSource>();

            temp_adding   = new List <GameSource>();
            temp_removing = new List <GameSource>();

            temp_stateUpdating = new List <GameSource>();

            PhysicEngine = physicEngine;
            Debugger     = debugger;
            this.game    = game;
        }
 public TrackableObjectPool()
 {
     tracker = new AutoSortList <T>(Comparison);
 }