forked from mirror/openmw-tes3mp
improved performance of CSVRender::Cell::addObjects by bypassing Qt model
This commit is contained in:
parent
be6ee927b9
commit
a9a8b5ad47
1 changed files with 6 additions and 12 deletions
|
@ -10,6 +10,7 @@
|
||||||
#include "../../model/world/idtable.hpp"
|
#include "../../model/world/idtable.hpp"
|
||||||
#include "../../model/world/columns.hpp"
|
#include "../../model/world/columns.hpp"
|
||||||
#include "../../model/world/data.hpp"
|
#include "../../model/world/data.hpp"
|
||||||
|
#include "../../model/world/refcollection.hpp"
|
||||||
#include "../world/physicssystem.hpp"
|
#include "../world/physicssystem.hpp"
|
||||||
|
|
||||||
#include "elements.hpp"
|
#include "elements.hpp"
|
||||||
|
@ -30,26 +31,19 @@ bool CSVRender::Cell::removeObject (const std::string& id)
|
||||||
|
|
||||||
bool CSVRender::Cell::addObjects (int start, int end)
|
bool CSVRender::Cell::addObjects (int start, int end)
|
||||||
{
|
{
|
||||||
CSMWorld::IdTable& references = dynamic_cast<CSMWorld::IdTable&> (
|
|
||||||
*mData.getTableModel (CSMWorld::UniversalId::Type_References));
|
|
||||||
|
|
||||||
int idColumn = references.findColumnIndex (CSMWorld::Columns::ColumnId_Id);
|
|
||||||
int cellColumn = references.findColumnIndex (CSMWorld::Columns::ColumnId_Cell);
|
|
||||||
int stateColumn = references.findColumnIndex (CSMWorld::Columns::ColumnId_Modification);
|
|
||||||
|
|
||||||
bool modified = false;
|
bool modified = false;
|
||||||
|
|
||||||
|
const CSMWorld::RefCollection& collection = mData.getReferences();
|
||||||
|
|
||||||
for (int i=start; i<=end; ++i)
|
for (int i=start; i<=end; ++i)
|
||||||
{
|
{
|
||||||
std::string cell = Misc::StringUtils::lowerCase (references.data (
|
std::string cell = Misc::StringUtils::lowerCase (collection.getRecord (i).get().mCell);
|
||||||
references.index (i, cellColumn)).toString().toUtf8().constData());
|
|
||||||
|
|
||||||
int state = references.data (references.index (i, stateColumn)).toInt();
|
CSMWorld::RecordBase::State state = collection.getRecord (i).mState;
|
||||||
|
|
||||||
if (cell==mId && state!=CSMWorld::RecordBase::State_Deleted)
|
if (cell==mId && state!=CSMWorld::RecordBase::State_Deleted)
|
||||||
{
|
{
|
||||||
std::string id = Misc::StringUtils::lowerCase (references.data (
|
std::string id = Misc::StringUtils::lowerCase (collection.getRecord (i).get().mId);
|
||||||
references.index (i, idColumn)).toString().toUtf8().constData());
|
|
||||||
|
|
||||||
mObjects.insert (std::make_pair (id, new Object (mData, mCellNode, id, false, mPhysics)));
|
mObjects.insert (std::make_pair (id, new Object (mData, mCellNode, id, false, mPhysics)));
|
||||||
modified = true;
|
modified = true;
|
||||||
|
|
Loading…
Reference in a new issue