*Update waypoint movement code. Also fix Linux build.

--HG--
branch : trunk
This commit is contained in:
megamage
2008-12-30 19:39:43 -06:00
parent bf3f187785
commit 12d4ce413e
3 changed files with 14 additions and 14 deletions
+1 -1
View File
@@ -1519,7 +1519,7 @@ Creature* WorldObject::SummonCreature(uint32 id, float x, float y, float z, floa
{ {
TemporarySummon* pCreature = new TemporarySummon(GetGUID()); TemporarySummon* pCreature = new TemporarySummon(GetGUID());
pCreature->SetInstanceId(GetInstanceId()); //pCreature->SetInstanceId(GetInstanceId());
uint32 team = 0; uint32 team = 0;
if (GetTypeId()==TYPEID_PLAYER) if (GetTypeId()==TYPEID_PLAYER)
team = ((Player*)this)->GetTeam(); team = ((Player*)this)->GetTeam();
+12 -12
View File
@@ -107,7 +107,7 @@ WaypointMovementGenerator<Creature>::Initialize(Creature &u)
Traveller<Creature> traveller(u); Traveller<Creature> traveller(u);
node = *(waypoints->at(i_currentNode)); node = *(waypoints->at(i_currentNode));
InitTraveller(u,node); InitTraveller(u,node);
i_destinationHolder.SetDestination(traveller, node.x, node.y, node.z); i_destinationHolder.SetDestination(traveller, node->x, node->y, node->z);
i_nextMoveTime.Reset(i_destinationHolder.GetTotalTravelTime()); i_nextMoveTime.Reset(i_destinationHolder.GetTotalTravelTime());
}*/ }*/
} }
@@ -153,8 +153,8 @@ WaypointMovementGenerator<Creature>::Update(Creature &unit, const uint32 &diff)
if(StopedByPlayer) if(StopedByPlayer)
{ {
assert(node); assert(node);
InitTraveller(unit,node); InitTraveller(unit, *node);
i_destinationHolder.SetDestination(traveller, node.x, node.y, node.z); i_destinationHolder.SetDestination(traveller, node->x, node->y, node->z);
i_nextMoveTime.Reset(i_destinationHolder.GetTotalTravelTime()); i_nextMoveTime.Reset(i_destinationHolder.GetTotalTravelTime());
StopedByPlayer = false; StopedByPlayer = false;
return true; return true;
@@ -166,7 +166,7 @@ WaypointMovementGenerator<Creature>::Update(Creature &unit, const uint32 &diff)
i_currentNode = 0; //Start moving all over again i_currentNode = 0; //Start moving all over again
else else
{ {
unit.SetHomePosition(node.x, node.y, node.z, unit.GetOrientation()); unit.SetHomePosition(node->x, node->y, node->z, unit.GetOrientation());
unit.GetMotionMaster()->Initialize(); unit.GetMotionMaster()->Initialize();
return false; //Clear the waypoint movement return false; //Clear the waypoint movement
} }
@@ -174,24 +174,24 @@ WaypointMovementGenerator<Creature>::Update(Creature &unit, const uint32 &diff)
else else
i_currentNode++; i_currentNode++;
node = *(waypoints->at(i_currentNode)); node = waypoints->at(i_currentNode);
InitTraveller(unit,node); InitTraveller(unit, *node);
i_destinationHolder.SetDestination(traveller, node.x, node.y, node.z); i_destinationHolder.SetDestination(traveller, node->x, node->y, node->z);
i_nextMoveTime.Reset(i_destinationHolder.GetTotalTravelTime()); i_nextMoveTime.Reset(i_destinationHolder.GetTotalTravelTime());
} }
else else
{ {
//Determine waittime //Determine waittime
if(node.delay) if(node->delay)
i_nextMoveTime.Reset(node.delay); i_nextMoveTime.Reset(node->delay);
if(node.event_id && rand()%100 < node.event_chance) if(node->event_id && rand()%100 < node->event_chance)
sWorld.ScriptsStart(sWaypointScripts, node.event_id, &unit, NULL); sWorld.ScriptsStart(sWaypointScripts, node->event_id, &unit, NULL);
MovementInform(unit); MovementInform(unit);
unit.UpdateWaypointID(i_currentNode); unit.UpdateWaypointID(i_currentNode);
unit.clearUnitState(UNIT_STAT_MOVING); unit.clearUnitState(UNIT_STAT_MOVING);
unit.Relocate(node.x, node.y, node.z); unit.Relocate(node->x, node->y, node->z);
} }
} }
else else
+1 -1
View File
@@ -80,7 +80,7 @@ class TRINITY_DLL_SPEC WaypointMovementGenerator
MovementGeneratorType GetMovementGeneratorType() { return WAYPOINT_MOTION_TYPE; } MovementGeneratorType GetMovementGeneratorType() { return WAYPOINT_MOTION_TYPE; }
private: private:
WaypointData node; WaypointData *node;
uint32 path_id; uint32 path_id;
TimeTrackerSmall i_nextMoveTime; TimeTrackerSmall i_nextMoveTime;
WaypointPath *waypoints; WaypointPath *waypoints;