49{
51
53 {
54 for (WPPath::iterator pathItr = itr->second->begin(); pathItr != itr->second->end(); ++pathItr)
55 delete pathItr->second;
56
57 delete itr->second;
58 }
59
61
64
65 if (!result)
66 {
67 LOG_WARN(
"server.loading",
">> Loaded 0 SmartAI Waypoint Paths. DB table `waypoints` is empty.");
69 return;
70 }
71
76
77 do
78 {
79 Field* fields = result->Fetch();
82 float x = fields[2].
Get<
float>();
83 float y = fields[3].
Get<
float>();
84 float z = fields[4].
Get<
float>();
86 if (!fields[5].IsNull())
87 o = fields[5].Get<float>();
89
90 if (last_entry != entry)
91 {
93 last_id = 1;
94 count++;
95 }
96
97 if (last_id != id)
98 LOG_ERROR(
"sql.sql",
"SmartWaypointMgr::LoadFromDB: Path entry {}, unexpected point id {}, expected {}.", entry,
id, last_id);
99
100 last_id++;
102
103 last_entry = entry;
104 total++;
105 } while (result->NextRow());
106
107 LOG_INFO(
"server.loading",
">> Loaded {} SmartAI waypoint paths (total {} waypoints) in {} ms", count, total,
GetMSTimeDiffToNow(oldMSTime));
109}
std::uint32_t uint32
Definition: Define.h:108
#define LOG_INFO(filterType__,...)
Definition: Log.h:167
#define LOG_ERROR(filterType__,...)
Definition: Log.h:159
#define LOG_WARN(filterType__,...)
Definition: Log.h:163
std::optional< T > Optional
Optional helper class to wrap optional values within.
Definition: Optional.h:24
uint32 GetMSTimeDiffToNow(uint32 oldMSTime)
Definition: Timer.h:131
uint32 getMSTime()
Definition: Timer.h:103
DatabaseWorkerPool< WorldDatabaseConnection > WorldDatabase
Accessor to the world database.
Definition: DatabaseEnv.cpp:20
std::shared_ptr< PreparedResultSet > PreparedQueryResult
Definition: DatabaseEnvFwd.h:50
@ WORLD_SEL_SMARTAI_WP
Definition: WorldDatabase.h:36
std::unordered_map< uint32, WayPoint * > WPPath
Definition: SmartScriptMgr.h:1914
Definition: PreparedStatement.h:158
Class used to access individual fields of database query result.
Definition: Field.h:99
std::enable_if_t< std::is_arithmetic_v< T >, T > Get() const
Definition: Field.h:113
Definition: SmartScriptMgr.h:33