diff options
-rw-r--r-- | src/server/game/Movement/Waypoints/WaypointDefines.h | 8 | ||||
-rw-r--r-- | src/server/game/Movement/Waypoints/WaypointManager.cpp | 12 |
2 files changed, 9 insertions, 11 deletions
diff --git a/src/server/game/Movement/Waypoints/WaypointDefines.h b/src/server/game/Movement/Waypoints/WaypointDefines.h index d801531b316..af47ccfd0db 100644 --- a/src/server/game/Movement/Waypoints/WaypointDefines.h +++ b/src/server/game/Movement/Waypoints/WaypointDefines.h @@ -68,18 +68,18 @@ struct WaypointNode struct WaypointPath { - WaypointPath() : Id(0), MoveType(WaypointMoveType::Walk), Flags(WaypointPathFlags::None) { } + WaypointPath() = default; WaypointPath(uint32 id, std::vector<WaypointNode>&& nodes, WaypointMoveType moveType = WaypointMoveType::Walk, WaypointPathFlags flags = WaypointPathFlags::None) { Id = id; - Nodes = nodes; + Nodes = std::move(nodes); Flags = flags; MoveType = moveType; } std::vector<WaypointNode> Nodes; - uint32 Id; - WaypointMoveType MoveType; + uint32 Id = 0; + WaypointMoveType MoveType = WaypointMoveType::Walk; EnumFlag<WaypointPathFlags> Flags = WaypointPathFlags::None; }; diff --git a/src/server/game/Movement/Waypoints/WaypointManager.cpp b/src/server/game/Movement/Waypoints/WaypointManager.cpp index cb282e6ec30..eec635bf6d1 100644 --- a/src/server/game/Movement/Waypoints/WaypointManager.cpp +++ b/src/server/game/Movement/Waypoints/WaypointManager.cpp @@ -89,14 +89,14 @@ void WaypointMgr::LoadPathFromDB(Field* fields) WaypointPath& path = _pathStore[pathId]; path.Id = pathId; - path.MoveType = (WaypointMoveType)fields[1].GetUInt8(); + path.MoveType = WaypointMoveType(fields[1].GetUInt8()); if (path.MoveType >= WaypointMoveType::Max) { TC_LOG_ERROR("sql.sql", "PathId {} in `waypoint_path` has invalid MoveType {}, ignoring", pathId, AsUnderlyingType(path.MoveType)); return; } - path.Flags = (WaypointPathFlags)fields[2].GetUInt8(); + path.Flags = WaypointPathFlags(fields[2].GetUInt8()); path.Nodes.clear(); } @@ -104,7 +104,8 @@ void WaypointMgr::LoadPathNodesFromDB(Field* fields) { uint32 pathId = fields[0].GetUInt32(); - if (_pathStore.find(pathId) == _pathStore.end()) + WaypointPath* path = Trinity::Containers::MapGetValuePtr(_pathStore, pathId); + if (!path) { TC_LOG_ERROR("sql.sql", "PathId {} in `waypoint_path_node` does not exist in `waypoint_path`, ignoring", pathId); return; @@ -120,10 +121,7 @@ void WaypointMgr::LoadPathNodesFromDB(Field* fields) Trinity::NormalizeMapCoord(x); Trinity::NormalizeMapCoord(y); - WaypointNode waypoint(fields[1].GetUInt32(), x, y, z, o, fields[6].GetUInt32()); - - WaypointPath& path = _pathStore[pathId]; - path.Nodes.push_back(std::move(waypoint)); + path->Nodes.emplace_back(fields[1].GetUInt32(), x, y, z, o, fields[6].GetUInt32()); } void WaypointMgr::DoPostLoadingChecks() |