mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
Fixes for using std:vector in ABMHander and further perf improvements
This commit is contained in:
parent
ad10b8b762
commit
ca3629637c
3 changed files with 22 additions and 13 deletions
|
@ -827,7 +827,7 @@ public:
|
|||
{
|
||||
content_t c = *k;
|
||||
if (c >= m_aabms.size())
|
||||
m_aabms.resize(c + 256, (std::vector<ActiveABM> *) NULL);
|
||||
m_aabms.resize(c + 256, NULL);
|
||||
if (!m_aabms[c])
|
||||
m_aabms[c] = new std::vector<ActiveABM>;
|
||||
m_aabms[c]->push_back(aabm);
|
||||
|
@ -872,7 +872,7 @@ public:
|
|||
}
|
||||
void apply(MapBlock *block)
|
||||
{
|
||||
if(m_aabms.empty())
|
||||
if(m_aabms.empty() || block->isDummy())
|
||||
return;
|
||||
|
||||
ServerMap *map = &m_env->getServerMap();
|
||||
|
@ -886,13 +886,13 @@ public:
|
|||
for(p0.Y=0; p0.Y<MAP_BLOCKSIZE; p0.Y++)
|
||||
for(p0.Z=0; p0.Z<MAP_BLOCKSIZE; p0.Z++)
|
||||
{
|
||||
MapNode n = block->getNodeNoEx(p0);
|
||||
const MapNode &n = block->getNodeUnsafe(p0);
|
||||
content_t c = n.getContent();
|
||||
v3s16 p = p0 + block->getPosRelative();
|
||||
|
||||
if (!m_aabms[c])
|
||||
if (c >= m_aabms.size() || !m_aabms[c])
|
||||
continue;
|
||||
|
||||
v3s16 p = p0 + block->getPosRelative();
|
||||
for(std::vector<ActiveABM>::iterator
|
||||
i = m_aabms[c]->begin(); i != m_aabms[c]->end(); ++i) {
|
||||
if(myrand() % i->chance != 0)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue