Client position updates should be smoother (granted the client has a good connection)

Clients should also no longer randomly disappear
This commit is contained in:
Akkadius
2017-07-14 20:49:57 -05:00
parent 5c75a68715
commit 43204e52f8
15 changed files with 165 additions and 230 deletions
+21 -40
View File
@@ -63,64 +63,49 @@ extern EntityList entity_list;
bool Client::Process() {
bool ret = true;
if (Connected() || IsLD())
{
if (Connected() || IsLD()) {
// try to send all packets that weren't sent before
if (!IsLD() && zoneinpacket_timer.Check())
{
if (!IsLD() && zoneinpacket_timer.Check()) {
SendAllPackets();
}
if (adventure_request_timer)
{
if (adventure_request_timer->Check())
{
if (adventure_request_timer) {
if (adventure_request_timer->Check()) {
safe_delete(adventure_request_timer);
}
}
if (adventure_create_timer)
{
if (adventure_create_timer->Check())
{
if (adventure_create_timer) {
if (adventure_create_timer->Check()) {
safe_delete(adventure_create_timer);
}
}
if (adventure_leave_timer)
{
if (adventure_leave_timer->Check())
{
if (adventure_leave_timer) {
if (adventure_leave_timer->Check()) {
safe_delete(adventure_leave_timer);
}
}
if (adventure_door_timer)
{
if (adventure_door_timer->Check())
{
if (adventure_door_timer) {
if (adventure_door_timer->Check()) {
safe_delete(adventure_door_timer);
}
}
if (adventure_stats_timer)
{
if (adventure_stats_timer->Check())
{
if (adventure_stats_timer) {
if (adventure_stats_timer->Check()) {
safe_delete(adventure_stats_timer);
}
}
if (adventure_leaderboard_timer)
{
if (adventure_leaderboard_timer->Check())
{
if (adventure_leaderboard_timer) {
if (adventure_leaderboard_timer->Check()) {
safe_delete(adventure_leaderboard_timer);
}
}
if (dead)
{
if (dead) {
SetHP(-100);
if (RespawnFromHoverTimer.Check())
HandleRespawnFromHover(0);
@@ -134,6 +119,11 @@ bool Client::Process() {
if (hpupdate_timer.Check(false))
SendHPUpdate();
/* I haven't naturally updated my position in 10 seconds, updating manually */
if (position_update_timer.Check()) {
SendPositionUpdate();
}
if (mana_timer.Check())
CheckManaEndUpdate();
@@ -271,15 +261,6 @@ bool Client::Process() {
close_mobs.insert(std::pair<Mob *, float>(mob, distance));
}
}
/* Clients need to be kept up to date for position updates more often otherwise they disappear */
if (mob->IsClient() && this != mob && !mob->IsMoving() && distance <= client_update_range) {
auto app = new EQApplicationPacket(OP_ClientUpdate, sizeof(PlayerPositionUpdateServer_Struct));
PlayerPositionUpdateServer_Struct* spawn_update = (PlayerPositionUpdateServer_Struct*)app->pBuffer;
mob->MakeSpawnUpdate(spawn_update);
this->FastQueuePacket(&app, false);
safe_delete(app);
}
}
}
@@ -460,7 +441,7 @@ bool Client::Process() {
{
animation = 0;
m_Delta = glm::vec4(0.0f, 0.0f, 0.0f, m_Delta.w);
SendPosUpdate(2);
SendPositionUpdate(2);
}
}