This commit is contained in:
@@ -435,8 +435,8 @@ function simulatePlayer(player: DeadAirAuthorityPlayer, deltaSeconds: number): v
|
||||
const speed = player.sprinting && !player.carryingArtifact ? sprintSpeed : walkSpeed;
|
||||
const sin = Math.sin(player.yaw);
|
||||
const cos = Math.cos(player.yaw);
|
||||
let desiredX = (sin * player.inputForward + cos * player.inputStrafe) * speed;
|
||||
let desiredZ = (cos * player.inputForward - sin * player.inputStrafe) * speed;
|
||||
let desiredX = (sin * player.inputForward - cos * player.inputStrafe) * speed;
|
||||
let desiredZ = (cos * player.inputForward + sin * player.inputStrafe) * speed;
|
||||
const inputLength = Math.hypot(player.inputForward, player.inputStrafe);
|
||||
if (inputLength > 1) {
|
||||
desiredX /= inputLength;
|
||||
@@ -457,8 +457,8 @@ function simulateVisiblePlayer(player: DeadAirPlayerView, deltaSeconds: number):
|
||||
const speed = player.sprinting && !player.carryingArtifact ? sprintSpeed : walkSpeed;
|
||||
const sin = Math.sin(player.yaw);
|
||||
const cos = Math.cos(player.yaw);
|
||||
let desiredX = (sin * player.inputForward + cos * player.inputStrafe) * speed;
|
||||
let desiredZ = (cos * player.inputForward - sin * player.inputStrafe) * speed;
|
||||
let desiredX = (sin * player.inputForward - cos * player.inputStrafe) * speed;
|
||||
let desiredZ = (cos * player.inputForward + sin * player.inputStrafe) * speed;
|
||||
const inputLength = Math.hypot(player.inputForward, player.inputStrafe);
|
||||
if (inputLength > 1) {
|
||||
desiredX /= inputLength;
|
||||
|
||||
@@ -126,3 +126,20 @@ test("visible wardens expose pose but redact combat inventory", () => {
|
||||
assert.equal(replicated.magazine, null);
|
||||
assert.equal(replicated.reserve, null);
|
||||
});
|
||||
|
||||
test("DEAD AIR strafe-right matches the first-person camera's screen right", () => {
|
||||
const server = deadAirGame.createServer();
|
||||
server.addPlayer(1);
|
||||
const player = server.currentState.players.find((candidate) => candidate.id === 1);
|
||||
player.x = 0;
|
||||
player.z = 25;
|
||||
player.yaw = 0;
|
||||
assert.deepEqual(server.submitInput(1, {
|
||||
sequence: 1,
|
||||
targetTick: 1,
|
||||
observedTick: 0,
|
||||
input: input({ strafe: 1, yaw: 0 }),
|
||||
}), { accepted: true });
|
||||
server.step();
|
||||
assert.ok(player.x < 0, `camera-right at yaw 0 should reduce world x, saw ${player.x}`);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user