smoother simulation ans some fixes on network part

This commit is contained in:
Anselme 2015-09-22 11:30:16 +02:00
parent d956b8f2b3
commit cf49c8699c
2 changed files with 10 additions and 16 deletions

View File

@ -28,9 +28,9 @@ void Server::update()
if(!clients[i]->isOk()) if(!clients[i]->isOk())
{ {
delete clients[i]; delete clients[i];
clients[i--] = clients.back(); clients[i] = clients.back();
clients.pop_back(); clients.pop_back();
simulation.removeClient(i); simulation.removeClient(i--);
} }
} }
// update the simulation // update the simulation
@ -42,13 +42,13 @@ void Server::update()
Server::~Server() Server::~Server()
{ {
if(server->isListening())
server->close();
server->deleteLater();
timer->stop(); timer->stop();
delete timer; delete timer;
for(ServerClient *c : clients) for(ServerClient *c : clients)
delete c; delete c;
if(server->isListening())
server->close();
server->deleteLater();
} }
void Server::on_newConnection() void Server::on_newConnection()

View File

@ -6,7 +6,7 @@
#define PI 3.1416f #define PI 3.1416f
#define MAX_ANGULAR_SPEED 0.05f #define MAX_ANGULAR_SPEED 0.05f
#define MAX_FORWARD_SPEED 1.f #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_ACCELERATION 0.02f
#define MAX_DECELERATION (MAX_ACCELERATION*2) #define MAX_DECELERATION (MAX_ACCELERATION*2)
@ -48,19 +48,13 @@ void Simulation::clientInput(int i, const DeltaClientPacket &delta)
InitClientPacket *info = &(worldData[i]); InitClientPacket *info = &(worldData[i]);
float dvforward; float dvforward;
// handling speed // 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) if(fabs(delta.acceleration) < 1)
dvforward = delta.acceleration*MAX_ACCELERATION; dvforward = delta.acceleration*max;
else else
dvforward = info->vforward >= 0 ? MAX_ACCELERATION : -MAX_ACCELERATION; dvforward = delta.acceleration > 0 ? max : -max;
}
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;
} }
else // not accelerating else // not accelerating
dvforward = -info->vforward/8; dvforward = -info->vforward/8;