46{
48
49
50 QueryResult result =
WorldDatabase.Query(
"SELECT id, point, position_x, position_y, position_z, orientation, move_type, delay, action, action_chance FROM waypoint_data ORDER BY id, point");
51
52 if (!result)
53 {
54 LOG_WARN(
"server.loading",
">> Loaded 0 waypoints. DB table `waypoint_data` is empty!");
56 return;
57 }
58
60
61 do
62 {
63 Field* fields = result->Fetch();
65
68
69 float x = fields[2].
Get<
float>();
70 float y = fields[3].
Get<
float>();
71 float z = fields[4].
Get<
float>();
72 std::optional<float > o;
73 if (!fields[5].IsNull())
74 o = fields[5].Get<float>();
75
78
85
87 {
88
89 continue;
90 }
91
95
96 path.emplace(data.
id, data);
97 ++count;
98 } while (result->NextRow());
99
101 {
102 uint32 first = itr->second.begin()->first;
103 uint32 last = itr->second.rbegin()->first;
104 if (last - first + 1 != itr->second.size())
105 {
106 LOG_ERROR(
"sql.sql",
"Waypoint {} in waypoint_data has non-contiguous pointids, skipping", itr->first);
108 }
109 else
110 ++itr;
111 }
112
115}
std::shared_ptr< ResultSet > QueryResult
Definition DatabaseEnvFwd.h:27
DatabaseWorkerPool< WorldDatabaseConnection > WorldDatabase
Accessor to the world database.
Definition DatabaseEnv.cpp:20
std::uint32_t uint32
Definition Define.h:107
std::int16_t int16
Definition Define.h:104
#define LOG_INFO(filterType__,...)
Definition Log.h:166
#define LOG_ERROR(filterType__,...)
Definition Log.h:158
#define LOG_WARN(filterType__,...)
Definition Log.h:162
uint32 GetMSTimeDiffToNow(uint32 oldMSTime)
Definition Timer.h:131
uint32 getMSTime()
Definition Timer.h:103
@ WAYPOINT_MOVE_TYPE_MAX
Definition WaypointMgr.h:34
std::map< uint32, WaypointData > WaypointPath
Definition WaypointMgr.h:48
Class used to access individual fields of database query result.
Definition Field.h:98
std::enable_if_t< std::is_arithmetic_v< T >, T > Get() const
Definition Field.h:112
void NormalizeMapCoord(float &c)
Definition GridDefines.h:202
Definition WaypointMgr.h:38
float z
Definition WaypointMgr.h:40
uint32 event_id
Definition WaypointMgr.h:43
float x
Definition WaypointMgr.h:40
float y
Definition WaypointMgr.h:40
std::optional< float > orientation
Definition WaypointMgr.h:41
uint32 delay
Definition WaypointMgr.h:42
uint8 event_chance
Definition WaypointMgr.h:45
uint32 id
Definition WaypointMgr.h:39
uint32 move_type
Definition WaypointMgr.h:44