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 speed = player.sprinting && !player.carryingArtifact ? sprintSpeed : walkSpeed;
|
||||||
const sin = Math.sin(player.yaw);
|
const sin = Math.sin(player.yaw);
|
||||||
const cos = Math.cos(player.yaw);
|
const cos = Math.cos(player.yaw);
|
||||||
let desiredX = (sin * player.inputForward + cos * player.inputStrafe) * speed;
|
let desiredX = (sin * player.inputForward - cos * player.inputStrafe) * speed;
|
||||||
let desiredZ = (cos * player.inputForward - sin * player.inputStrafe) * speed;
|
let desiredZ = (cos * player.inputForward + sin * player.inputStrafe) * speed;
|
||||||
const inputLength = Math.hypot(player.inputForward, player.inputStrafe);
|
const inputLength = Math.hypot(player.inputForward, player.inputStrafe);
|
||||||
if (inputLength > 1) {
|
if (inputLength > 1) {
|
||||||
desiredX /= inputLength;
|
desiredX /= inputLength;
|
||||||
@@ -457,8 +457,8 @@ function simulateVisiblePlayer(player: DeadAirPlayerView, deltaSeconds: number):
|
|||||||
const speed = player.sprinting && !player.carryingArtifact ? sprintSpeed : walkSpeed;
|
const speed = player.sprinting && !player.carryingArtifact ? sprintSpeed : walkSpeed;
|
||||||
const sin = Math.sin(player.yaw);
|
const sin = Math.sin(player.yaw);
|
||||||
const cos = Math.cos(player.yaw);
|
const cos = Math.cos(player.yaw);
|
||||||
let desiredX = (sin * player.inputForward + cos * player.inputStrafe) * speed;
|
let desiredX = (sin * player.inputForward - cos * player.inputStrafe) * speed;
|
||||||
let desiredZ = (cos * player.inputForward - sin * player.inputStrafe) * speed;
|
let desiredZ = (cos * player.inputForward + sin * player.inputStrafe) * speed;
|
||||||
const inputLength = Math.hypot(player.inputForward, player.inputStrafe);
|
const inputLength = Math.hypot(player.inputForward, player.inputStrafe);
|
||||||
if (inputLength > 1) {
|
if (inputLength > 1) {
|
||||||
desiredX /= inputLength;
|
desiredX /= inputLength;
|
||||||
|
|||||||
@@ -126,3 +126,20 @@ test("visible wardens expose pose but redact combat inventory", () => {
|
|||||||
assert.equal(replicated.magazine, null);
|
assert.equal(replicated.magazine, null);
|
||||||
assert.equal(replicated.reserve, 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