32{
34
35
36 QueryResult result =
WorldDatabase.Query(
"SELECT id, point, position_x, position_y, position_z, orientation, velocity, delay, smoothTransition, move_type, action, action_chance FROM waypoint_data ORDER BY id, point");
37
38 if (!result)
39 {
40 LOG_WARN(
"server.loading",
">> Loaded 0 waypoints. DB table `waypoint_data` is empty!");
42 return;
43 }
44
46
47 do
48 {
49 Field* fields = result->Fetch();
51 float x = fields[2].
Get<
float>();
52 float y = fields[3].
Get<
float>();
53 float z = fields[4].
Get<
float>();
54 std::optional<float> o;
55 if (!fields[5].IsNull())
56 o = fields[5].Get<float>();
57
58 float velocity = fields[6].
Get<
float>();
59
62
68 if (o.has_value())
74
76 {
77 LOG_ERROR(
"sql.sql",
"Waypoint {} in waypoint_data has invalid move_type, ignoring", waypoint.
Id);
78 continue;
79 }
80
83
86 path.Nodes.push_back(std::move(waypoint));
87 ++count;
88 } while (result->NextRow());
89
92}
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 WaypointDefines.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:202
Definition WaypointDefines.h:37
uint32 Delay
Definition WaypointDefines.h:51
uint32 EventId
Definition WaypointDefines.h:52
uint8 EventChance
Definition WaypointDefines.h:54
bool SmoothTransition
Definition WaypointDefines.h:55
std::optional< float > Orientation
Definition WaypointDefines.h:49
float X
Definition WaypointDefines.h:48
float Z
Definition WaypointDefines.h:48
float Velocity
Definition WaypointDefines.h:50
float Y
Definition WaypointDefines.h:48
uint32 Id
Definition WaypointDefines.h:47
uint32 MoveType
Definition WaypointDefines.h:53
Definition WaypointDefines.h:60
uint32 Id
Definition WaypointDefines.h:69