Speedup loading in LoadCreatureFormations

Signed-off-by: Subv2112 <[email protected]>
This commit is contained in:
Subv2112
2011-12-26 22:03:40 -05:00
parent 3176289024
commit 83d5924715
@@ -88,21 +88,6 @@ void LoadCreatureFormations()
return; return;
} }
std::set<uint32> guidSet;
QueryResult guidResult = WorldDatabase.PQuery("SELECT guid FROM creature");
if (guidResult)
{
do
{
Field* fields = guidResult->Fetch();
uint32 guid = fields[0].GetUInt32();
guidSet.insert(guid);
} while (guidResult->NextRow());
}
uint32 count = 0; uint32 count = 0;
Field* fields; Field* fields;
FormationInfo* group_member; FormationInfo* group_member;
@@ -114,8 +99,8 @@ void LoadCreatureFormations()
//Load group member data //Load group member data
group_member = new FormationInfo; group_member = new FormationInfo;
group_member->leaderGUID = fields[0].GetUInt32(); group_member->leaderGUID = fields[0].GetUInt32();
uint32 memberGUID = fields[1].GetUInt32(); uint32 memberGUID = fields[1].GetUInt32();
group_member->groupAI = fields[4].GetUInt8(); group_member->groupAI = fields[4].GetUInt8();
//If creature is group leader we may skip loading of dist/angle //If creature is group leader we may skip loading of dist/angle
if (group_member->leaderGUID != memberGUID) if (group_member->leaderGUID != memberGUID)
{ {
@@ -130,14 +115,14 @@ void LoadCreatureFormations()
// check data correctness // check data correctness
{ {
if (guidSet.find(group_member->leaderGUID) == guidSet.end()) if (!sObjectMgr->GetCreatureData(group_member->leaderGUID))
{ {
sLog->outErrorDb("creature_formations table leader guid %u incorrect (not exist)", group_member->leaderGUID); sLog->outErrorDb("creature_formations table leader guid %u incorrect (not exist)", group_member->leaderGUID);
delete group_member; delete group_member;
continue; continue;
} }
if (guidSet.find(memberGUID) == guidSet.end()) if (!sObjectMgr->GetCreatureData(memberGUID))
{ {
sLog->outErrorDb("creature_formations table member guid %u incorrect (not exist)", memberGUID); sLog->outErrorDb("creature_formations table member guid %u incorrect (not exist)", memberGUID);
delete group_member; delete group_member;