quake2ts 0.0.417 → 0.0.420
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/packages/client/dist/browser/index.global.js +16 -16
- package/packages/client/dist/browser/index.global.js.map +1 -1
- package/packages/client/dist/cjs/index.cjs +151 -16
- package/packages/client/dist/cjs/index.cjs.map +1 -1
- package/packages/client/dist/esm/index.js +151 -16
- package/packages/client/dist/esm/index.js.map +1 -1
- package/packages/client/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/client/dist/types/blend.d.ts +9 -0
- package/packages/client/dist/types/blend.d.ts.map +1 -0
- package/packages/client/dist/types/index.d.ts.map +1 -1
- package/packages/client/dist/types/net/serverBrowser.d.ts +17 -0
- package/packages/client/dist/types/net/serverBrowser.d.ts.map +1 -0
- package/packages/client/dist/types/session.d.ts +1 -0
- package/packages/client/dist/types/session.d.ts.map +1 -1
- package/packages/engine/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/engine/dist/types/render/debug.d.ts +7 -0
- package/packages/engine/dist/types/render/debug.d.ts.map +1 -1
- package/packages/engine/dist/types/render/frame.d.ts +1 -0
- package/packages/engine/dist/types/render/frame.d.ts.map +1 -1
- package/packages/engine/dist/types/render/gpuProfiler.d.ts +19 -2
- package/packages/engine/dist/types/render/gpuProfiler.d.ts.map +1 -1
- package/packages/engine/dist/types/render/renderer.d.ts +2 -2
- package/packages/engine/dist/types/render/renderer.d.ts.map +1 -1
- package/packages/game/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/server/dist/index.cjs +35 -0
- package/packages/server/dist/index.d.cts +1 -0
- package/packages/server/dist/index.d.ts +1 -0
- package/packages/server/dist/index.js +35 -0
|
@@ -13938,6 +13938,33 @@ var ClientEffectSystem = class {
|
|
|
13938
13938
|
}
|
|
13939
13939
|
};
|
|
13940
13940
|
|
|
13941
|
+
// src/blend.ts
|
|
13942
|
+
var createBlendState = () => ({
|
|
13943
|
+
damageAlpha: 0,
|
|
13944
|
+
bonusAlpha: 0,
|
|
13945
|
+
lastFlashes: 0
|
|
13946
|
+
});
|
|
13947
|
+
var updateBlend = (state, ps, dt, damageIntensity = 0) => {
|
|
13948
|
+
state.damageAlpha -= dt;
|
|
13949
|
+
if (state.damageAlpha < 0) state.damageAlpha = 0;
|
|
13950
|
+
if (damageIntensity > 0) {
|
|
13951
|
+
state.damageAlpha = damageIntensity;
|
|
13952
|
+
}
|
|
13953
|
+
state.bonusAlpha -= dt;
|
|
13954
|
+
if (state.bonusAlpha < 0) state.bonusAlpha = 0;
|
|
13955
|
+
const flashes = ps.stats ? ps.stats[PlayerStat.STAT_FLASHES] ?? 0 : 0;
|
|
13956
|
+
if (flashes !== state.lastFlashes) {
|
|
13957
|
+
state.bonusAlpha = 0.6;
|
|
13958
|
+
state.lastFlashes = flashes;
|
|
13959
|
+
}
|
|
13960
|
+
if (state.bonusAlpha > 0) {
|
|
13961
|
+
return [1, 1, 0, state.bonusAlpha * 0.3];
|
|
13962
|
+
} else if (state.damageAlpha > 0) {
|
|
13963
|
+
return [1, 0, 0, state.damageAlpha * 0.5];
|
|
13964
|
+
}
|
|
13965
|
+
return [0, 0, 0, 0];
|
|
13966
|
+
};
|
|
13967
|
+
|
|
13941
13968
|
// src/input/bindings.ts
|
|
13942
13969
|
var DEFAULT_BINDINGS = [
|
|
13943
13970
|
{ code: "KeyW", command: "+forward" },
|
|
@@ -14548,13 +14575,111 @@ var GameSession = class {
|
|
|
14548
14575
|
}
|
|
14549
14576
|
}
|
|
14550
14577
|
loadSavedGame(saveData) {
|
|
14578
|
+
if (this.host) {
|
|
14579
|
+
this.shutdown();
|
|
14580
|
+
}
|
|
14581
|
+
const mapName = saveData.map;
|
|
14582
|
+
const skill = saveData.difficulty;
|
|
14583
|
+
const gameOptions = {
|
|
14584
|
+
gravity: { x: 0, y: 0, z: -800 },
|
|
14585
|
+
skill,
|
|
14586
|
+
deathmatch: false,
|
|
14587
|
+
coop: false
|
|
14588
|
+
};
|
|
14589
|
+
const gameEngineAdapter = {
|
|
14590
|
+
trace: (start, end) => {
|
|
14591
|
+
return this.engine.trace(start, end);
|
|
14592
|
+
},
|
|
14593
|
+
centerprintf: (ent, msg) => {
|
|
14594
|
+
if (this.client) {
|
|
14595
|
+
this.client.ParseCenterPrint(msg);
|
|
14596
|
+
}
|
|
14597
|
+
},
|
|
14598
|
+
configstring: (idx, val) => {
|
|
14599
|
+
if (this.client) {
|
|
14600
|
+
this.client.ParseConfigString(idx, val);
|
|
14601
|
+
}
|
|
14602
|
+
},
|
|
14603
|
+
multicast: () => {
|
|
14604
|
+
},
|
|
14605
|
+
unicast: () => {
|
|
14606
|
+
},
|
|
14607
|
+
serverCommand: () => {
|
|
14608
|
+
}
|
|
14609
|
+
};
|
|
14610
|
+
const gameImports = {
|
|
14611
|
+
trace: (start, mins, maxs, end, passent, contentmask) => {
|
|
14612
|
+
const tr = this.engine.trace(start, end, mins || void 0, maxs || void 0);
|
|
14613
|
+
let plane = null;
|
|
14614
|
+
if (tr.planeNormal) {
|
|
14615
|
+
plane = {
|
|
14616
|
+
normal: tr.planeNormal,
|
|
14617
|
+
dist: 0,
|
|
14618
|
+
type: 0,
|
|
14619
|
+
signbits: 0
|
|
14620
|
+
};
|
|
14621
|
+
}
|
|
14622
|
+
return {
|
|
14623
|
+
allsolid: tr.allsolid,
|
|
14624
|
+
startsolid: tr.startsolid,
|
|
14625
|
+
fraction: tr.fraction,
|
|
14626
|
+
endpos: tr.endpos,
|
|
14627
|
+
plane,
|
|
14628
|
+
surfaceFlags: tr.surfaceFlags ?? 0,
|
|
14629
|
+
contents: tr.contents ?? 0,
|
|
14630
|
+
ent: null
|
|
14631
|
+
};
|
|
14632
|
+
},
|
|
14633
|
+
pointcontents: (p) => {
|
|
14634
|
+
const t = this.engine.trace(p, p, void 0, void 0);
|
|
14635
|
+
return t.contents || 0;
|
|
14636
|
+
},
|
|
14637
|
+
multicast: () => {
|
|
14638
|
+
},
|
|
14639
|
+
unicast: () => {
|
|
14640
|
+
},
|
|
14641
|
+
configstring: (idx, val) => {
|
|
14642
|
+
if (this.client) {
|
|
14643
|
+
this.client.ParseConfigString(idx, val);
|
|
14644
|
+
}
|
|
14645
|
+
},
|
|
14646
|
+
serverCommand: (cmd) => {
|
|
14647
|
+
}
|
|
14648
|
+
};
|
|
14649
|
+
this.game = createGame(gameImports, gameEngineAdapter, gameOptions);
|
|
14650
|
+
const clientProxy = {
|
|
14651
|
+
init: (initial) => this.client?.init(initial),
|
|
14652
|
+
render: (sample) => this.client?.render(sample),
|
|
14653
|
+
shutdown: () => this.client?.shutdown(),
|
|
14654
|
+
get camera() {
|
|
14655
|
+
return this.client?.camera;
|
|
14656
|
+
}
|
|
14657
|
+
};
|
|
14658
|
+
this.host = new EngineHost(this.game, clientProxy);
|
|
14659
|
+
const clientImports = {
|
|
14660
|
+
engine: this.engine,
|
|
14661
|
+
host: this.host
|
|
14662
|
+
};
|
|
14663
|
+
this.client = createClient(clientImports);
|
|
14664
|
+
if (this.engine.cmd) {
|
|
14665
|
+
this.engine.cmd.executeText(`map ${mapName}`);
|
|
14666
|
+
} else if (this.host.commands) {
|
|
14667
|
+
this.host.commands.execute(`map ${mapName}`);
|
|
14668
|
+
}
|
|
14669
|
+
if (this.game) {
|
|
14670
|
+
this.game.loadSave(saveData);
|
|
14671
|
+
}
|
|
14672
|
+
this.host.start();
|
|
14551
14673
|
}
|
|
14552
14674
|
shutdown() {
|
|
14553
14675
|
if (this.host) {
|
|
14554
14676
|
this.host.stop();
|
|
14555
14677
|
this.host = null;
|
|
14556
14678
|
}
|
|
14557
|
-
this.client
|
|
14679
|
+
if (this.client) {
|
|
14680
|
+
this.client.shutdown();
|
|
14681
|
+
this.client = null;
|
|
14682
|
+
}
|
|
14558
14683
|
this.game = null;
|
|
14559
14684
|
}
|
|
14560
14685
|
getClient() {
|
|
@@ -14635,6 +14760,9 @@ function createClient(imports) {
|
|
|
14635
14760
|
let pauseMenuFactory;
|
|
14636
14761
|
let optionsFactory;
|
|
14637
14762
|
const configStrings = new ClientConfigStrings();
|
|
14763
|
+
const blendState = createBlendState();
|
|
14764
|
+
let currentBlend = [0, 0, 0, 0];
|
|
14765
|
+
let pendingDamage = 0;
|
|
14638
14766
|
let latestFrame;
|
|
14639
14767
|
let lastRenderTime = 0;
|
|
14640
14768
|
let clientInAutoDemo = false;
|
|
@@ -14706,6 +14834,9 @@ function createClient(imports) {
|
|
|
14706
14834
|
if (pos) {
|
|
14707
14835
|
effectSystem.onTempEntity(type, pos, time);
|
|
14708
14836
|
}
|
|
14837
|
+
},
|
|
14838
|
+
onDamage: (indicators) => {
|
|
14839
|
+
pendingDamage = 0.5;
|
|
14709
14840
|
}
|
|
14710
14841
|
});
|
|
14711
14842
|
demoPlayback.setHandler(demoHandler);
|
|
@@ -15016,7 +15147,16 @@ function createClient(imports) {
|
|
|
15016
15147
|
}
|
|
15017
15148
|
}
|
|
15018
15149
|
const frameTimeMs = sample.latest && sample.previous ? Math.max(0, sample.latest.timeMs - sample.previous.timeMs) : 0;
|
|
15150
|
+
if (frameTimeMs > 0) {
|
|
15151
|
+
prediction.decayError(frameTimeMs / 1e3);
|
|
15152
|
+
}
|
|
15019
15153
|
lastView = view.sample(lastRendered, frameTimeMs);
|
|
15154
|
+
if (lastRendered) {
|
|
15155
|
+
currentBlend = updateBlend(blendState, lastRendered, frameTimeMs / 1e3, pendingDamage);
|
|
15156
|
+
pendingDamage = 0;
|
|
15157
|
+
} else {
|
|
15158
|
+
currentBlend = [0, 0, 0, 0];
|
|
15159
|
+
}
|
|
15020
15160
|
const command = {};
|
|
15021
15161
|
const timeSeconds = sample.nowMs / 1e3;
|
|
15022
15162
|
dlightManager.update(timeSeconds);
|
|
@@ -15072,23 +15212,18 @@ function createClient(imports) {
|
|
|
15072
15212
|
}, renderEntities);
|
|
15073
15213
|
}
|
|
15074
15214
|
if (imports.engine.renderer && lastRendered && lastRendered.client) {
|
|
15075
|
-
const
|
|
15076
|
-
|
|
15077
|
-
batches:
|
|
15078
|
-
facesDrawn:
|
|
15079
|
-
|
|
15080
|
-
|
|
15081
|
-
viewModelDrawn: false,
|
|
15082
|
-
fps: 0,
|
|
15083
|
-
vertexCount: 0
|
|
15084
|
-
} : {
|
|
15085
|
-
batches: 0,
|
|
15086
|
-
facesDrawn: 0,
|
|
15087
|
-
drawCalls: 0,
|
|
15215
|
+
const perfReport = imports.engine.renderer.getPerformanceReport();
|
|
15216
|
+
const stats = {
|
|
15217
|
+
batches: perfReport.textureBinds,
|
|
15218
|
+
facesDrawn: perfReport.triangles,
|
|
15219
|
+
// approximate
|
|
15220
|
+
drawCalls: perfReport.drawCalls,
|
|
15088
15221
|
skyDrawn: false,
|
|
15222
|
+
// Not exposed in report
|
|
15089
15223
|
viewModelDrawn: false,
|
|
15224
|
+
// Not exposed in report
|
|
15090
15225
|
fps: 0,
|
|
15091
|
-
vertexCount:
|
|
15226
|
+
vertexCount: perfReport.vertices
|
|
15092
15227
|
};
|
|
15093
15228
|
const timeMs = sample.latest?.timeMs ?? 0;
|
|
15094
15229
|
this.DrawHUD(stats, timeMs);
|
|
@@ -15111,7 +15246,7 @@ function createClient(imports) {
|
|
|
15111
15246
|
maxs: { x: 16, y: 16, z: 32 },
|
|
15112
15247
|
damageAlpha: lastRendered.damageAlpha ?? 0,
|
|
15113
15248
|
damageIndicators: lastRendered.damageIndicators ?? [],
|
|
15114
|
-
blend:
|
|
15249
|
+
blend: currentBlend,
|
|
15115
15250
|
pickupIcon: lastRendered.pickupIcon,
|
|
15116
15251
|
centerPrint: void 0,
|
|
15117
15252
|
// Handled by CGame MessageSystem now
|