From cf49c8699c8580f4b475561d0b2396b9b49bf508 Mon Sep 17 00:00:00 2001 From: Anselme Date: Tue, 22 Sep 2015 11:30:16 +0200 Subject: [PATCH] smoother simulation ans some fixes on network part --- app/server.cpp | 10 +++++----- app/simulation.cpp | 16 +++++----------- 2 files changed, 10 insertions(+), 16 deletions(-) diff --git a/app/server.cpp b/app/server.cpp index 2814cb9..4fffcce 100644 --- a/app/server.cpp +++ b/app/server.cpp @@ -28,9 +28,9 @@ void Server::update() if(!clients[i]->isOk()) { delete clients[i]; - clients[i--] = clients.back(); + clients[i] = clients.back(); clients.pop_back(); - simulation.removeClient(i); + simulation.removeClient(i--); } } // update the simulation @@ -42,13 +42,13 @@ void Server::update() Server::~Server() { - if(server->isListening()) - server->close(); - server->deleteLater(); timer->stop(); delete timer; for(ServerClient *c : clients) delete c; + if(server->isListening()) + server->close(); + server->deleteLater(); } void Server::on_newConnection() diff --git a/app/simulation.cpp b/app/simulation.cpp index ba9cba4..1502eef 100644 --- a/app/simulation.cpp +++ b/app/simulation.cpp @@ -6,7 +6,7 @@ #define PI 3.1416f #define MAX_ANGULAR_SPEED 0.05f #define MAX_FORWARD_SPEED 1.f -#define MAX_REVERSE_SPEED 0.5f +#define MAX_REVERSE_SPEED 0.2f #define MAX_ACCELERATION 0.02f #define MAX_DECELERATION (MAX_ACCELERATION*2) @@ -48,19 +48,13 @@ void Simulation::clientInput(int i, const DeltaClientPacket &delta) InitClientPacket *info = &(worldData[i]); float dvforward; // handling speed - if(delta.acceleration > 0.01f) // if accelerating + if(fabs(delta.acceleration) > 0.01f) // if accelerating { + float max = delta.acceleration * info->vforward > 0 ? MAX_ACCELERATION : MAX_DECELERATION; if(fabs(delta.acceleration) < 1) - dvforward = delta.acceleration*MAX_ACCELERATION; + dvforward = delta.acceleration*max; else - dvforward = info->vforward >= 0 ? MAX_ACCELERATION : -MAX_ACCELERATION; - } - else if(delta.acceleration < -0.01f) - { - if(fabs(delta.acceleration) < 1) - dvforward = delta.acceleration*MAX_DECELERATION; - else - dvforward = info->vforward >= 0 ? -MAX_DECELERATION : MAX_DECELERATION; + dvforward = delta.acceleration > 0 ? max : -max; } else // not accelerating dvforward = -info->vforward/8;