Пример #1
0
        public ReadOnlySpan <Entity> GetEntities(EntityArchetype archetype)        // Buffered?
        {
            Archetype *   ptr      = GetArchetypeInternal(archetype);
            Span <Entity> entities = new Entity[ptr->entityCount];

            ChunkUtility.WriteEntitiesToBuffer(ptr->chunkArray->chunks, ptr->chunkArray->count, entities);

            return(entities);
        }
Пример #2
0
        public ReadOnlySpan <Entity> GetEntities(EntityQuery query)
        {
            var queryData      = GetUpdatedQueryData(query);
            var archetypes     = queryData->archetypes;
            var archetypeCount = queryData->archetypeCount;
            var entityCount    = 0;

            for (int i = 0; i < archetypeCount; ++i)
            {
                entityCount += archetypes[i]->entityCount;
            }

            int           entitiesInBuffer = 0;
            Span <Entity> entities         = new Entity[entityCount];

            for (int i = 0; i < archetypeCount; ++i)
            {
                var chunks     = archetypes[i]->chunkArray->chunks;
                var chunkCount = archetypes[i]->chunkArray->count;
                entitiesInBuffer += ChunkUtility.WriteEntitiesToBuffer(chunks, chunkCount, entities.Slice(entitiesInBuffer));
            }

            return(entities);
        }