Change how ticking works
This commit is contained in:
@@ -10,14 +10,15 @@ export class GameRenderer {
|
||||
hud = new Hud();
|
||||
debug_overlay = new DebugOverlay();
|
||||
|
||||
render(client: Client) {
|
||||
// partial_tick is how far this frame is between the last tick and the next, entities are drawn in between
|
||||
render(client: Client, partial_tick: number) {
|
||||
const camera = client.camera;
|
||||
camera.setup(client.player);
|
||||
camera.setup(client.player, partial_tick);
|
||||
|
||||
begin_mode_3d(camera);
|
||||
this.level_renderer.render_opaque(client.level, camera);
|
||||
this.level_renderer.render_destroy_progress(client.game_mode);
|
||||
this.level_renderer.render_entities(client.level, client.player);
|
||||
this.level_renderer.render_entities(client.level, client.player, partial_tick);
|
||||
this.level_renderer.render_translucent(client.level, camera);
|
||||
end_mode_3d();
|
||||
|
||||
|
||||
@@ -75,13 +75,13 @@ export class LevelRenderer {
|
||||
}
|
||||
|
||||
// every entity but the one the camera is in
|
||||
render_entities(level: ClientLevel, camera_entity: Entity) {
|
||||
render_entities(level: ClientLevel, camera_entity: Entity, partial_tick: number) {
|
||||
flush_batch();
|
||||
set_current_texture(white_tex!);
|
||||
|
||||
for (const entity of level.entities.values()) {
|
||||
if (entity !== camera_entity && entity instanceof RemotePlayer) {
|
||||
render_player(entity);
|
||||
render_player(entity, partial_tick);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -119,9 +119,9 @@ export class LevelRenderer {
|
||||
}
|
||||
|
||||
// a box body and head in the player's color
|
||||
function render_player(player: RemotePlayer) {
|
||||
function render_player(player: RemotePlayer, partial_tick: number) {
|
||||
const [r, g, b] = player.color;
|
||||
const { x, y, z } = player;
|
||||
const { x, y, z } = player.render_position(partial_tick);
|
||||
|
||||
// body
|
||||
push_box(x - 0.3, y, z - 0.15, 0.6, 1.3, 0.3, r, g, b);
|
||||
|
||||
Reference in New Issue
Block a user