diff options
Diffstat (limited to 'src/game/client/components')
| -rw-r--r-- | src/game/client/components/camera.cpp | 4 | ||||
| -rw-r--r-- | src/game/client/components/items.cpp | 11 | ||||
| -rw-r--r-- | src/game/client/components/players.cpp | 4 |
3 files changed, 11 insertions, 8 deletions
diff --git a/src/game/client/components/camera.cpp b/src/game/client/components/camera.cpp index ba9aed46..7b188e00 100644 --- a/src/game/client/components/camera.cpp +++ b/src/game/client/components/camera.cpp @@ -19,7 +19,8 @@ void CAMERA::on_render() { //vec2 center; zoom = 1.0f; - + + // update camera center if(gameclient.snap.spectate) center = gameclient.controls->mouse_pos; else @@ -37,4 +38,3 @@ void CAMERA::on_render() center = gameclient.local_character_pos + camera_offset; } } - diff --git a/src/game/client/components/items.cpp b/src/game/client/components/items.cpp index 43ad3319..c880b93e 100644 --- a/src/game/client/components/items.cpp +++ b/src/game/client/components/items.cpp @@ -14,8 +14,6 @@ void ITEMS::render_projectile(const NETOBJ_PROJECTILE *current, int itemid) { - gfx_texture_set(data->images[IMAGE_GAME].id); - gfx_quads_begin(); // get positions float curvature = 0; @@ -36,12 +34,19 @@ void ITEMS::render_projectile(const NETOBJ_PROJECTILE *current, int itemid) speed = gameclient.tuning.gun_speed; } - float ct = (client_tick()-current->start_tick)/(float)SERVER_TICK_SPEED + client_ticktime()*1/(float)SERVER_TICK_SPEED; + float ct = (client_prevtick()-current->start_tick)/(float)SERVER_TICK_SPEED + client_ticktime(); + if(ct < 0) + return; // projectile havn't been shot yet + vec2 startpos(current->x, current->y); vec2 startvel(current->vx/100.0f, current->vy/100.0f); vec2 pos = calc_pos(startpos, startvel, curvature, speed, ct); vec2 prevpos = calc_pos(startpos, startvel, curvature, speed, ct-0.001f); + + gfx_texture_set(data->images[IMAGE_GAME].id); + gfx_quads_begin(); + select_sprite(data->weapons.id[clamp(current->type, 0, NUM_WEAPONS-1)].sprite_proj); vec2 vel = pos-prevpos; //vec2 pos = mix(vec2(prev->x, prev->y), vec2(current->x, current->y), client_intratick()); diff --git a/src/game/client/components/players.cpp b/src/game/client/components/players.cpp index 02977632..8125b6d9 100644 --- a/src/game/client/components/players.cpp +++ b/src/game/client/components/players.cpp @@ -145,12 +145,10 @@ void PLAYERS::render_player( intratick = client_predintratick(); } } - + vec2 position = mix(vec2(prev.x, prev.y), vec2(player.x, player.y), intratick); vec2 vel = mix(vec2(prev.vx/256.0f, prev.vy/256.0f), vec2(player.vx/256.0f, player.vy/256.0f), intratick); - //dbg_msg("", "%d %d %d %d %f", prev.x, prev.y, player.x, player.y, intratick); - gameclient.flow->add(position, vel*100.0f, 10.0f); render_info.got_airjump = player.jumped&2?0:1; |