コード例 #1
0
        public bool MoveNext()
        {
            while (Archetypes.Length > index)
            {
                var arch = Archetypes[index++];

                var span = Board.GetEntities(arch.Id);
                if (span.Length == 0)
                {
                    continue;
                }

                var matches       = 0;
                var componentSpan = Board.GetComponentTypes(arch.Id);
                for (var i = 0; i != finalizedQuery.All.Length; i++)
                {
                    if (componentSpan.Contains(finalizedQuery.All[i].Id))
                    {
                        matches++;
                    }
                }

                if (matches != finalizedQuery.All.Length)
                {
                    continue;
                }

                matches = 0;
                for (var i = 0; i != finalizedQuery.None.Length && matches == 0; i++)
                {
                    if (componentSpan.Contains(finalizedQuery.None[i].Id))
                    {
                        matches++;
                    }
                }

                if (matches > 0)
                {
                    continue;
                }

                Current = arch;
                return(true);
            }

            return(false);
        }