Use std::vector instead of std::list in StaticObjectList and MutexedMap::getValues()
parent
06f328207f
commit
cd684497c2
|
@ -1675,12 +1675,13 @@ void ServerEnvironment::activateObjects(MapBlock *block, u32 dtime_s)
|
||||||
// Ignore if no stored objects (to not set changed flag)
|
// Ignore if no stored objects (to not set changed flag)
|
||||||
if(block->m_static_objects.m_stored.empty())
|
if(block->m_static_objects.m_stored.empty())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
verbosestream<<"ServerEnvironment::activateObjects(): "
|
verbosestream<<"ServerEnvironment::activateObjects(): "
|
||||||
<<"activating objects of block "<<PP(block->getPos())
|
<<"activating objects of block "<<PP(block->getPos())
|
||||||
<<" ("<<block->m_static_objects.m_stored.size()
|
<<" ("<<block->m_static_objects.m_stored.size()
|
||||||
<<" objects)"<<std::endl;
|
<<" objects)"<<std::endl;
|
||||||
bool large_amount = (block->m_static_objects.m_stored.size() > g_settings->getU16("max_objects_per_block"));
|
bool large_amount = (block->m_static_objects.m_stored.size() > g_settings->getU16("max_objects_per_block"));
|
||||||
if(large_amount){
|
if (large_amount) {
|
||||||
errorstream<<"suspiciously large amount of objects detected: "
|
errorstream<<"suspiciously large amount of objects detected: "
|
||||||
<<block->m_static_objects.m_stored.size()<<" in "
|
<<block->m_static_objects.m_stored.size()<<" in "
|
||||||
<<PP(block->getPos())
|
<<PP(block->getPos())
|
||||||
|
@ -1695,7 +1696,7 @@ void ServerEnvironment::activateObjects(MapBlock *block, u32 dtime_s)
|
||||||
|
|
||||||
// Activate stored objects
|
// Activate stored objects
|
||||||
std::vector<StaticObject> new_stored;
|
std::vector<StaticObject> new_stored;
|
||||||
for(std::list<StaticObject>::iterator
|
for (std::vector<StaticObject>::iterator
|
||||||
i = block->m_static_objects.m_stored.begin();
|
i = block->m_static_objects.m_stored.begin();
|
||||||
i != block->m_static_objects.m_stored.end(); ++i) {
|
i != block->m_static_objects.m_stored.end(); ++i) {
|
||||||
StaticObject &s_obj = *i;
|
StaticObject &s_obj = *i;
|
||||||
|
|
|
@ -249,8 +249,8 @@ public:
|
||||||
virtual ~CItemDefManager()
|
virtual ~CItemDefManager()
|
||||||
{
|
{
|
||||||
#ifndef SERVER
|
#ifndef SERVER
|
||||||
const std::list<ClientCached*> &values = m_clientcached.getValues();
|
const std::vector<ClientCached*> &values = m_clientcached.getValues();
|
||||||
for(std::list<ClientCached*>::const_iterator
|
for(std::vector<ClientCached*>::const_iterator
|
||||||
i = values.begin(); i != values.end(); ++i)
|
i = values.begin(); i != values.end(); ++i)
|
||||||
{
|
{
|
||||||
ClientCached *cc = *i;
|
ClientCached *cc = *i;
|
||||||
|
|
|
@ -47,10 +47,9 @@ void StaticObjectList::serialize(std::ostream &os)
|
||||||
// count
|
// count
|
||||||
u16 count = m_stored.size() + m_active.size();
|
u16 count = m_stored.size() + m_active.size();
|
||||||
writeU16(os, count);
|
writeU16(os, count);
|
||||||
for(std::list<StaticObject>::iterator
|
for(std::vector<StaticObject>::iterator
|
||||||
i = m_stored.begin();
|
i = m_stored.begin();
|
||||||
i != m_stored.end(); ++i)
|
i != m_stored.end(); ++i) {
|
||||||
{
|
|
||||||
StaticObject &s_obj = *i;
|
StaticObject &s_obj = *i;
|
||||||
s_obj.serialize(os);
|
s_obj.serialize(os);
|
||||||
}
|
}
|
||||||
|
@ -68,8 +67,7 @@ void StaticObjectList::deSerialize(std::istream &is)
|
||||||
u8 version = readU8(is);
|
u8 version = readU8(is);
|
||||||
// count
|
// count
|
||||||
u16 count = readU16(is);
|
u16 count = readU16(is);
|
||||||
for(u16 i=0; i<count; i++)
|
for(u16 i = 0; i < count; i++) {
|
||||||
{
|
|
||||||
StaticObject s_obj;
|
StaticObject s_obj;
|
||||||
s_obj.deSerialize(is, version);
|
s_obj.deSerialize(is, version);
|
||||||
m_stored.push_back(s_obj);
|
m_stored.push_back(s_obj);
|
||||||
|
|
|
@ -23,7 +23,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
||||||
#include "irrlichttypes_bloated.h"
|
#include "irrlichttypes_bloated.h"
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <list>
|
#include <vector>
|
||||||
#include <map>
|
#include <map>
|
||||||
#include "debug.h"
|
#include "debug.h"
|
||||||
|
|
||||||
|
@ -95,7 +95,7 @@ public:
|
||||||
from m_stored and inserted to m_active.
|
from m_stored and inserted to m_active.
|
||||||
The caller directly manipulates these containers.
|
The caller directly manipulates these containers.
|
||||||
*/
|
*/
|
||||||
std::list<StaticObject> m_stored;
|
std::vector<StaticObject> m_stored;
|
||||||
std::map<u16, StaticObject> m_active;
|
std::map<u16, StaticObject> m_active;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -77,7 +77,6 @@ private:
|
||||||
std::queue<Value> m_queue;
|
std::queue<Value> m_queue;
|
||||||
};
|
};
|
||||||
|
|
||||||
#if 1
|
|
||||||
template<typename Key, typename Value>
|
template<typename Key, typename Value>
|
||||||
class MutexedMap
|
class MutexedMap
|
||||||
{
|
{
|
||||||
|
@ -109,9 +108,9 @@ public:
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::list<Value> getValues()
|
std::vector<Value> getValues()
|
||||||
{
|
{
|
||||||
std::list<Value> result;
|
std::vector<Value> result;
|
||||||
for(typename std::map<Key, Value>::iterator
|
for(typename std::map<Key, Value>::iterator
|
||||||
i = m_values.begin();
|
i = m_values.begin();
|
||||||
i != m_values.end(); ++i){
|
i != m_values.end(); ++i){
|
||||||
|
@ -129,7 +128,6 @@ private:
|
||||||
std::map<Key, Value> m_values;
|
std::map<Key, Value> m_values;
|
||||||
JMutex m_mutex;
|
JMutex m_mutex;
|
||||||
};
|
};
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Generates ids for comparable values.
|
Generates ids for comparable values.
|
||||||
|
|
Loading…
Reference in New Issue