示例#1
0
        public EntityQuery <TEntity> Do <T1>(Action <Entity <TEntity>, T1> process, T1 p1)
        {
            IndexPool.Enumerator enumerator = _entitySystem.GetEntityIndexEnumerator();

            // If we`re not excluding components ("HasNot") then use simpler bit test case within the loop
            if (_hasNone == ComponentFlags.None)
            {
                while (enumerator.MoveNext())
                {
                    int index = enumerator.Current;
                    if (_entitySystem.componentFlags[index].Matches(_hasAll))
                    {
                        process(_entitySystem.entities[index], p1);
                    }
                }
            }
            else
            {
                while (enumerator.MoveNext())
                {
                    int index = enumerator.Current;
                    if (_entitySystem.componentFlags[index].Matches(_hasAll, _hasNone))
                    {
                        process(_entitySystem.entities[index], p1);
                    }
                }
            }

            return(this);
        }
示例#2
0
 public bool MoveNext()
 {
     while (_entityIndexEnumerator.MoveNext())
     {
         int index = _entityIndexEnumerator.Current;
         if (_entitySystem.componentFlags[index].Matches(_hasAll, _hasNone))
         {
             _current = _entitySystem.entities[index];
             return(true);
         }
     }
     return(false);
 }