Skip to content

Commit

Permalink
See desc
Browse files Browse the repository at this point in the history
* correct bodyview camera zoom out interpolation
* stop ping thread when serverlist is reopened and clear ping list
  • Loading branch information
xtreme8000 committed Aug 27, 2018
1 parent 8aa0306 commit 4bc9a39
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 1 deletion.
2 changes: 1 addition & 1 deletion src/cameracontroller.c
Expand Up @@ -227,7 +227,7 @@ void cameracontroller_bodyview(float dt) {

float tmp = (traverse_lengths[0]<=0)?(-traverse_lengths[1]):traverse_lengths[0];

cameracontroller_bodyview_zoom = (tmp<cameracontroller_bodyview_zoom)?tmp:min(tmp,cameracontroller_bodyview_zoom*pow(0.9F,dt*60.0F)+tmp*pow(0.1F,dt*60.0F));
cameracontroller_bodyview_zoom = (tmp<cameracontroller_bodyview_zoom)?tmp:min(tmp,cameracontroller_bodyview_zoom+dt*8.0F);

//this is needed to determine which chunks need/can be rendered and for sound, minimap etc...
camera_x = players[cameracontroller_bodyview_player].pos.x-sin(camera_rot_x)*sin(camera_rot_y)*cameracontroller_bodyview_zoom;
Expand Down
3 changes: 3 additions & 0 deletions src/hud.c
Expand Up @@ -1595,6 +1595,9 @@ static void hud_serverlist_render(float scalex, float scaley) {
pthread_mutex_lock(&serverlist_lock);
serverlist = realloc(serverlist,server_count*sizeof(struct serverlist_entry));
CHECK_ALLOCATION_ERROR(serverlist)

ping_stop();

player_count = 0;
for(int k=0;k<server_count;k++) {
JSON_Object* s = json_array_get_object(servers,k);
Expand Down
16 changes: 16 additions & 0 deletions src/ping.c
Expand Up @@ -4,6 +4,7 @@
struct list list_pings;
ENetSocket sock, lan;
pthread_t ping_thread;
pthread_mutex_t ping_lock;
void (*ping_finished) ();
void (*ping_result) (void*, float time_delta, void* user_data);

Expand All @@ -16,6 +17,8 @@ void ping_init() {
lan = enet_socket_create(ENET_SOCKET_TYPE_DATAGRAM);
enet_socket_set_option(lan,ENET_SOCKOPT_NONBLOCK,1);
enet_socket_set_option(lan,ENET_SOCKOPT_BROADCAST,1);

pthread_mutex_init(&ping_lock,NULL);
}

void ping_deinit() {
Expand All @@ -35,6 +38,8 @@ void* ping_update(void* data) {

ENetAddress from;

pthread_mutex_lock(&ping_lock);

while(1) {
buf.dataLength = 512;
memset(tmp,0,buf.dataLength);
Expand Down Expand Up @@ -110,6 +115,8 @@ void* ping_update(void* data) {
return NULL;
}

pthread_mutex_unlock(&ping_lock);

usleep(1);
}
}
Expand All @@ -126,6 +133,7 @@ void ping_lan() {
}

void ping_check(char* addr, int port, void* user_data) {
pthread_mutex_lock(&ping_lock);
struct ping_entry* entry = list_add(&list_pings,NULL);

strcpy(entry->user_data,user_data);
Expand All @@ -140,10 +148,18 @@ void ping_check(char* addr, int port, void* user_data) {

entry->time_start = window_time();
enet_socket_send(sock,&entry->addr,&buffer,1);
pthread_mutex_unlock(&ping_lock);
}

void ping_start(void (*finished) (), void (*result) (void*, float, void*)) {
pthread_create(&ping_thread,NULL,ping_update,NULL);
ping_finished = finished;
ping_result = result;
}

void ping_stop() {
pthread_mutex_lock(&ping_lock);
list_clear(&list_pings);
pthread_cancel(ping_thread);
pthread_mutex_unlock(&ping_lock);
}
1 change: 1 addition & 0 deletions src/ping.h
Expand Up @@ -11,3 +11,4 @@ void ping_check(char* addr, int port, void* user_data);
void* ping_update(void* data);
void ping_start(void (*finished) (), void (*result) (void*, float, void*));
void ping_lan();
void ping_stop();

0 comments on commit 4bc9a39

Please sign in to comment.