MCPcopy Create free account
hub / github.com/Norbyte/bg3se / UpdateQueryCache

Method UpdateQueryCache

BG3Extender/GameDefinitions/EntitySystem.cpp:1605–1660  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1603}
1604
1605void 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
1662EntityHandle EntitySystemHelpersBase::GetEntityHandle(FixedString const& guidString)

Callers

nothing calls this directly

Calls 9

GetEntityWorldFunction · 0.85
GetIncludesMethod · 0.80
GetIncludeAnyMethod · 0.80
GetExcludesMethod · 0.80
GetAddAndsMethod · 0.80
GetOneFramesMethod · 0.80
SetMethod · 0.45
emptyMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected