public void AddWaypoint(uint id, float x, float y, float z, uint waitTime = 0) { Escort_Waypoint t = new Escort_Waypoint(id, x, y, z, waitTime); WaypointList.Add(t); ScriptWP = true; }
void FillPointMovementListForCreature() { var movePoints = Global.ScriptMgr.GetPointMoveList(me.GetEntry()); if (movePoints.Empty()) { return; } foreach (var point in movePoints) { Escort_Waypoint wayPoint = new Escort_Waypoint(point.uiPointId, point.fX, point.fY, point.fZ, point.uiWaitTime); WaypointList.Add(wayPoint); } }
bool SetNextWaypoint(uint pointId, bool setPosition, bool resetWaypointsOnFail) { if (!WaypointList.Empty()) { WaypointList.Clear(); } FillPointMovementListForCreature(); if (WaypointList.Empty()) { return(false); } int size = WaypointList.Count; Escort_Waypoint waypoint = new Escort_Waypoint(0, 0, 0, 0, 0); do { waypoint = WaypointList.First(); WaypointList.RemoveAt(0); if (waypoint.Id == pointId) { if (setPosition) { me.UpdatePosition(waypoint.X, waypoint.Y, waypoint.Z, me.GetOrientation()); } CurrentWPIndex = 0; return(true); } }while (!WaypointList.Empty()); // we failed. // we reset the waypoints in the start; if we pulled any, reset it again if (resetWaypointsOnFail && size != WaypointList.Count) { if (!WaypointList.Empty()) { WaypointList.Clear(); } FillPointMovementListForCreature(); } return(false); }