smooth out pathing by not enforcing Y all the time, still need to do something about gaps in objects that cause spawns to fall through :-/
This commit is contained in:
parent
79a010e055
commit
782f84e67e
@ -2112,7 +2112,10 @@ void Spawn::InitializePosPacketData(Player* player, PacketStruct* packet, bool b
|
||||
{
|
||||
m_GridMutex.writelock(__FUNCTION__, __LINE__);
|
||||
std::map<int32,TimedGridData>::iterator itr = established_grid_id.find(version);
|
||||
if ( itr == established_grid_id.end() || itr->second.npc_save || itr->second.timestamp <= (Timer::GetCurrentTime2()))
|
||||
if (!EngagedInCombat() && player->GetMap() == GetMap()) {
|
||||
new_y = GetY();
|
||||
}
|
||||
else if ( itr == established_grid_id.end() || itr->second.npc_save || itr->second.timestamp <= (Timer::GetCurrentTime2()))
|
||||
{
|
||||
if(itr != established_grid_id.end() && itr->second.x == GetX() && itr->second.z == GetZ() && !itr->second.npc_save) {
|
||||
itr->second.timestamp = Timer::GetCurrentTime2()+100;
|
||||
@ -3642,10 +3645,12 @@ bool Spawn::CalculateChange(){
|
||||
else {
|
||||
SetX(nx + tar_vx, false);
|
||||
SetZ(nz + tar_vz, false);
|
||||
if ( IsWidget() )
|
||||
if(IsWidget()) {
|
||||
SetY(ny + tar_vy, false, true);
|
||||
else
|
||||
}
|
||||
else {
|
||||
SetY(ny + tar_vy, false);
|
||||
}
|
||||
}
|
||||
|
||||
int32 newGrid = GetLocation();
|
||||
|
@ -324,9 +324,9 @@ public:
|
||||
glm::vec2 ndir = glm::normalize(dir);
|
||||
double distance_moved = frame_time * current_speed * 0.4f * 1.45f;
|
||||
|
||||
mob->SetX(m_move_to_x);
|
||||
mob->SetZ(m_move_to_z);
|
||||
mob->SetY(m_move_to_y);
|
||||
mob->SetX(m_move_to_x, false);
|
||||
mob->SetZ(m_move_to_z, false);
|
||||
mob->SetY(m_move_to_y, true, true);
|
||||
if (distance_moved > len) {
|
||||
return true;
|
||||
}
|
||||
@ -338,9 +338,9 @@ public:
|
||||
double start_y = m_move_to_y - m_total_v_dist;
|
||||
double y_at_pos = start_y + (m_total_v_dist * (total_distance_traveled / m_total_h_dist));
|
||||
|
||||
mob->SetX(npos.x);
|
||||
mob->SetZ(npos.y);
|
||||
mob->SetY(y_at_pos);
|
||||
mob->SetX(npos.x, false);
|
||||
mob->SetZ(npos.y, false);
|
||||
mob->SetY(y_at_pos, true, true);
|
||||
}
|
||||
|
||||
return false;
|
||||
@ -364,9 +364,9 @@ public:
|
||||
|
||||
virtual bool Process(MobMovementManager* mob_movement_manager, Entity* mob)
|
||||
{
|
||||
mob->SetX(m_teleport_to_x);
|
||||
mob->SetZ(m_teleport_to_z);
|
||||
mob->SetY(m_teleport_to_y);
|
||||
mob->SetX(m_teleport_to_x, false);
|
||||
mob->SetZ(m_teleport_to_z, false);
|
||||
mob->SetY(m_teleport_to_y, true, true);
|
||||
mob->SetHeading(mob_movement_manager->FixHeading(m_teleport_to_heading));
|
||||
//mob_movement_manager->SendCommandToClients(mob, 0.0, 0.0, 0.0, 0.0, 0, ClientRangeAny);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user