| 1603 | } |
| 1604 | |
| 1605 | void EntitySystemHelpersBase::UpdateQueryCache() |
| 1606 | { |
| 1607 | if (queryCacheInitialized_) return; |
| 1608 | |
| 1609 | OPTICK_EVENT(); |
| 1610 | auto world = GetEntityWorld(); |
| 1611 | |
| 1612 | BitSet<> persistentQueries; |
| 1613 | BitSet<> aliveQueries; |
| 1614 | |
| 1615 | for (auto queryIndex : world->Queries.PersistentQueries) { |
| 1616 | persistentQueries.Set((uint32_t)queryIndex); |
| 1617 | } |
| 1618 | |
| 1619 | for (auto queryIndex : world->Queries.AliveQueries) { |
| 1620 | aliveQueries.Set((uint32_t)queryIndex); |
| 1621 | } |
| 1622 | |
| 1623 | unsigned queryIndex{ 0 }; |
| 1624 | for (auto const& query : world->Queries.Queries) { |
| 1625 | |
| 1626 | if (query.Flags == QueryFlags::Added |
| 1627 | && aliveQueries[queryIndex] |
| 1628 | && query.GetIncludes().empty() |
| 1629 | && query.GetIncludeAny().empty() |
| 1630 | && query.GetExcludes().empty() |
| 1631 | // && query.GetAddOrs().empty() |
| 1632 | // && query.GetOptionalOneFrames().empty() |
| 1633 | // && query.GetImmediates().empty() |
| 1634 | && query.GetAddAnds().size() == 1 |
| 1635 | && query.GetOneFrames().size() == 1) { |
| 1636 | |
| 1637 | MapSingleComponentQuery((QueryIndex)queryIndex, query.GetOneFrames()[0]); |
| 1638 | } |
| 1639 | |
| 1640 | // Only include "normal" single-component include queries |
| 1641 | if ((unsigned)query.Flags == 0 |
| 1642 | && persistentQueries[queryIndex] |
| 1643 | && ( |
| 1644 | (query.GetIncludes().size() == 1 && query.GetIncludeAny().empty()) |
| 1645 | || (query.GetIncludes().empty() && query.GetIncludeAny().size() == 1) |
| 1646 | ) |
| 1647 | && query.GetExcludes().empty()) { |
| 1648 | |
| 1649 | if (query.GetIncludes().empty()) { |
| 1650 | MapSingleComponentQuery((QueryIndex)queryIndex, query.GetIncludes()[0]); |
| 1651 | } else { |
| 1652 | MapSingleComponentQuery((QueryIndex)queryIndex, query.GetIncludeAny()[0]); |
| 1653 | } |
| 1654 | } |
| 1655 | |
| 1656 | queryIndex++; |
| 1657 | } |
| 1658 | |
| 1659 | queryCacheInitialized_ = true; |
| 1660 | } |
| 1661 | |
| 1662 | EntityHandle EntitySystemHelpersBase::GetEntityHandle(FixedString const& guidString) |
nothing calls this directly
no test coverage detected