49{
51
52
53 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");
54
55 if (!result)
56 {
57 LOG_WARN(
"server.loading",
">> Loaded 0 waypoints. DB table `waypoint_data` is empty!");
59 return;
60 }
61
63
64 do
65 {
66 Field* fields = result->Fetch();
68
71
72 float x = fields[2].
Get<
float>();
73 float y = fields[3].
Get<
float>();
74 float z = fields[4].
Get<
float>();
75 std::optional<float > o;
76 if (!fields[5].IsNull())
77 o = fields[5].Get<float>();
78
81
88
90 {
91
92 delete wp;
93 continue;
94 }
95
99
100 path.push_back(wp);
101 ++count;
102 } while (result->NextRow());
103
106}
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:165
#define LOG_WARN(filterType__,...)
Definition Log.h:161
uint32 GetMSTimeDiffToNow(uint32 oldMSTime)
Definition Timer.h:131
uint32 getMSTime()
Definition Timer.h:103
std::vector< WaypointData * > WaypointPath
Definition WaypointMgr.h:47
@ WAYPOINT_MOVE_TYPE_MAX
Definition WaypointMgr.h:33
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:198
Definition WaypointMgr.h:37
float z
Definition WaypointMgr.h:39
uint32 event_id
Definition WaypointMgr.h:42
float x
Definition WaypointMgr.h:39
float y
Definition WaypointMgr.h:39
std::optional< float > orientation
Definition WaypointMgr.h:40
uint32 delay
Definition WaypointMgr.h:41
uint8 event_chance
Definition WaypointMgr.h:44
uint32 id
Definition WaypointMgr.h:38
uint32 move_type
Definition WaypointMgr.h:43