AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
SmartWaypointMgr Class Reference

#include "SmartScriptMgr.h"

Public Member Functions

 ~SmartWaypointMgr ()=default
 
void LoadFromDB ()
 
WaypointPath const * GetPath (uint32 id) const
 

Static Public Member Functions

static SmartWaypointMgrinstance ()
 

Private Member Functions

 SmartWaypointMgr ()
 

Private Attributes

std::unordered_map< uint32, WaypointPathwaypoint_map
 

Detailed Description

Constructor & Destructor Documentation

◆ SmartWaypointMgr()

SmartWaypointMgr::SmartWaypointMgr ( )
inlineprivate
2065{}

◆ ~SmartWaypointMgr()

SmartWaypointMgr::~SmartWaypointMgr ( )
default

Member Function Documentation

◆ GetPath()

WaypointPath const * SmartWaypointMgr::GetPath ( uint32  id) const
inline
2074 {
2075 auto itr = waypoint_map.find(id);
2076 if (itr != waypoint_map.end())
2077 return &itr->second;
2078 return nullptr;
2079 }
std::unordered_map< uint32, WaypointPath > waypoint_map
Definition SmartScriptMgr.h:2082

References waypoint_map.

◆ instance()

SmartWaypointMgr * SmartWaypointMgr::instance ( )
static
42{
44 return &instance;
45}
Definition SmartScriptMgr.h:2064
static SmartWaypointMgr * instance()
Definition SmartScriptMgr.cpp:41

References instance().

Referenced by instance().

◆ LoadFromDB()

void SmartWaypointMgr::LoadFromDB ( )
48{
49 uint32 oldMSTime = getMSTime();
50
51 waypoint_map.clear();
52
54 PreparedQueryResult result = WorldDatabase.Query(stmt);
55
56 if (!result)
57 {
58 LOG_WARN("server.loading", ">> Loaded 0 SmartAI Waypoint Paths. DB table `waypoints` is empty.");
59 LOG_INFO("server.loading", " ");
60 return;
61 }
62
63 uint32 count = 0;
64 uint32 total = 0;
65 uint32 last_entry = 0;
66 uint32 last_id = 1;
67
68 do
69 {
70 Field* fields = result->Fetch();
71 uint32 entry = fields[0].Get<uint32>();
72 uint32 id = fields[1].Get<uint32>();
73 float x = fields[2].Get<float>();
74 float y = fields[3].Get<float>();
75 float z = fields[4].Get<float>();
76 std::optional<float> o;
77 if (!fields[5].IsNull())
78 o = fields[5].Get<float>();
79 uint32 delay = fields[6].Get<uint32>();
80
81 if (last_entry != entry)
82 {
83 waypoint_map[entry] = WaypointPath();
84 waypoint_map[entry].Id = entry;
85 last_id = 1;
86 count++;
87 }
88
89 if (last_id != id)
90 LOG_ERROR("sql.sql", "SmartWaypointMgr::LoadFromDB: Path entry {}, unexpected point id {}, expected {}.", entry, id, last_id);
91
92 last_id++;
93 WaypointNode node;
94 node.Id = id;
95 node.X = x;
96 node.Y = y;
97 node.Z = z;
98 node.Orientation = o;
99 node.Delay = delay;
101 waypoint_map[entry].Nodes.push_back(std::move(node));
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));
108 LOG_INFO("server.loading", " ");
109}
std::shared_ptr< PreparedResultSet > PreparedQueryResult
Definition DatabaseEnvFwd.h:45
DatabaseWorkerPool< WorldDatabaseConnection > WorldDatabase
Accessor to the world database.
Definition DatabaseEnv.cpp:20
std::uint32_t uint32
Definition Define.h:107
#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
@ WORLD_SEL_SMARTAI_WP
Definition WorldDatabase.h:36
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
Definition PreparedStatement.h:157
Definition WaypointDefines.h:37
uint32 Delay
Definition WaypointDefines.h:51
std::optional< float > Orientation
Definition WaypointDefines.h:49
float X
Definition WaypointDefines.h:48
float Z
Definition WaypointDefines.h:48
float Y
Definition WaypointDefines.h:48
uint32 Id
Definition WaypointDefines.h:47
uint32 MoveType
Definition WaypointDefines.h:53
Definition WaypointDefines.h:60

References WaypointNode::Delay, Field::Get(), getMSTime(), GetMSTimeDiffToNow(), WaypointNode::Id, LOG_ERROR, LOG_INFO, LOG_WARN, WaypointNode::MoveType, WaypointNode::Orientation, waypoint_map, WAYPOINT_MOVE_TYPE_MAX, WORLD_SEL_SMARTAI_WP, WorldDatabase, WaypointNode::X, WaypointNode::Y, and WaypointNode::Z.

Member Data Documentation

◆ waypoint_map

std::unordered_map<uint32, WaypointPath> SmartWaypointMgr::waypoint_map
private

Referenced by GetPath(), and LoadFromDB().


The documentation for this class was generated from the following files: