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())
{
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()

View File

@ -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;