Change how ticking works

This commit is contained in:
2026-09-25 16:13:38 -03:00
parent 213363d0be
commit 5fb23cf404
9 changed files with 169 additions and 92 deletions
+4 -3
View File
@@ -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();
+4 -4
View File
@@ -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);