Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .github/workflows/portao-browser.yml
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,12 @@ jobs:
if: ${{ !cancelled() }}
run: npm run eval:armas

# O que o jogador sente é o relógio, não a VRAM: dois PRs meus passaram em régua de
# grandeza vizinha e foram reprovados jogando. Esta mede tempo até o elenco na tela.
- name: eval:tela (tempo até o elenco aparecer)
if: ${{ !cancelled() }}
run: npm run eval:tela

# Número diz que caiu; imagem diz por quê. Só quando algum passo acima reprova.
- name: Fotos das piores células (só em falha)
if: failure()
Expand Down
4 changes: 2 additions & 2 deletions ARCH.generated.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ Números atuais das zonas, do quality gate e do `package.json`:

| Zona | O que é | Tamanho medido | Regra |
|---|---|---|---|
| `public/` | o **jogo** | 44 arquivos `.js`, 32.001 linhas · Three.js `r160` vendorizado | ES modules servidos crus, **zero build**, sem dependência de runtime |
| `public/` | o **jogo** | 45 arquivos `.js`, 32.024 linhas · Three.js `r160` vendorizado | ES modules servidos crus, **zero build**, sem dependência de runtime |
| `src/` | o **site** | 18 páginas `.astro`, 21 rotas `/api` · Astro `^7.1.1` | framework é bem-vindo; `service_role` só no servidor |
| `tools/` | o **arnês** | 200 scripts em `tools/eval/`, 54 em `tools/` | node puro: sobe o jogo real sem browser |
| `tools/` | o **arnês** | 201 scripts em `tools/eval/`, 55 em `tools/` | node puro: sobe o jogo real sem browser |

**Não existe `public/index.html`.** O HTML do jogo é `src/pages/index.astro`, servido na rota `/`. Servir `public/` estaticamente entrega os arnêses visuais, **não o jogo** — é a pegadinha que custa a primeira hora de todo mundo.

Expand Down
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,18 +34,18 @@ contra bots, direto na aba. Sem download, sem instalação, sem cadastro.

| O que | Quanto | Onde confere |
|---|---:|---|
| Código do jogo | 32.001 linhas em 44 arquivos | `git ls-files public/js/*.js \| xargs wc -l` |
| Código do jogo | 32.024 linhas em 45 arquivos | `git ls-files public/js/*.js \| xargs wc -l` |
| `game.js` | **6.910** linhas | `wc -l public/js/game.js` |
| `main.js` | 2.698 linhas | `wc -l public/js/main.js` |
| `main.js` | 2.700 linhas | `wc -l public/js/main.js` |
| Armas com GLB | 26 | `git ls-files 'public/models/weapons/*.glb' \| wc -l` |
| GLBs de personagem | 45 | `git ls-files 'public/models/characters/*.glb' \| wc -l` |
| Props em GLB | 108 | `git ls-files 'public/models/props/*.glb' \| wc -l` |
| Clipes de animação versionados | 573 | `git ls-files public/models/anims \| wc -l` |
| Personagens jogáveis | 44, em 5 facções | array `CHARACTERS` de `characters.js` |
| Mapas no registro | 12 | objeto `MAPS` de `maps.js` |
| Arnêses visuais em HTML | 15 | `git ls-files 'public/*.html' \| wc -l` |
| Scripts do arnês | 200 | `git ls-files 'tools/eval/*.mjs' 'tools/eval/*.py' \| wc -l` |
| Scripts de pipeline | 54 | `git ls-files 'tools/*.mjs' \| wc -l` |
| Scripts do arnês | 201 | `git ls-files 'tools/eval/*.mjs' 'tools/eval/*.py' \| wc -l` |
| Scripts de pipeline | 55 | `git ls-files 'tools/*.mjs' \| wc -l` |
| Tarefas de entrada escritas | 26 | `git ls-files 'docs/issues/[0-9]*.md' \| wc -l` |
| Versão | `2.0.0-alpha.179` | `public/js/version.js` e `package.json` (batem) |

Expand Down Expand Up @@ -89,7 +89,7 @@ arquitetura): `cd docs && npm install && npm start` → <http://localhost:3000/d
| Camada | Ferramenta | Versão |
|---|---|---|
| Motor 3D (WebGL) | **Three.js**, vendorizado | `r160` |
| Jogo | ES modules vanilla, **zero build** | 44 arquivos |
| Jogo | ES modules vanilla, **zero build** | 45 arquivos |
| Site | **Astro** com SSR | `^7.1.1` |
| Hospedagem | adapter **Vercel** | `^11.0.6` |
| Banco | **Postgres gerenciado** (RLS; schema privado, fora do repo) | `^2.110.7` |
Expand All @@ -100,7 +100,7 @@ arquitetura): `cd docs && npm install && npm start` → <http://localhost:3000/d
| Esta documentação | **Docusaurus** | `3.6.3` |
| Runtime de CI | **Node** | `22` |

Three.js sai de `public/vendor/three.module.js` (**sem CDN, sem npm no runtime**). Astro e Vercel de `package.json` + `astro.config.mjs` + `vercel.json`. Dos scripts de `tools/`, **110** importam Playwright, **37** importam gltf-transform e **4** importam meshoptimizer.
Three.js sai de `public/vendor/three.module.js` (**sem CDN, sem npm no runtime**). Astro e Vercel de `package.json` + `astro.config.mjs` + `vercel.json`. Dos scripts de `tools/`, **111** importam Playwright, **38** importam gltf-transform e **5** importam meshoptimizer.

> Bloco gerado por `node tools/gen-docs.mjs`. Fonte: `dependencies/devDependencies do package.json · REVISION de public/vendor/three.module.js`

Expand Down
4 changes: 2 additions & 2 deletions STATUS.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@

- **Versão:** `2.0.0-alpha.179`
- **Conteúdo jogável:** 5 facções, 44 personagens, 12 mapas e 26 armas com GLB
- **Código do jogo:** 32.001 linhas em 44 módulos JavaScript
- **Automação:** 124 comandos npm, 200 scripts de avaliação e 54 scripts de pipeline
- **Código do jogo:** 32.024 linhas em 45 módulos JavaScript
- **Automação:** 124 comandos npm, 201 scripts de avaliação e 55 scripts de pipeline

> Bloco gerado por `node tools/gen-docs.mjs`. Fonte: `package.json · CHARACTERS · MAPS · public/models/weapons · public/js · tools/`

Expand Down
8 changes: 4 additions & 4 deletions docs/docs/arquitetura.md
Original file line number Diff line number Diff line change
Expand Up @@ -63,14 +63,14 @@ Tamanho dos arquivos que o `gen-arch.mjs` indexa — bloco gerado, regenerado po
| Arquivo | Linhas |
|---|---:|
| `public/js/game.js` | 6.910 |
| `public/js/main.js` | 2.698 |
| `public/js/main.js` | 2.700 |
| `public/js/characters.js` | 1.068 |
| `public/js/glbchars.js` | 844 |
| `public/js/glbchars.js` | 845 |
| `public/js/vmattach.js` | 628 |
| `public/js/weapons.js` | 346 |
| `public/js/weapons.js` | 347 |
| `public/js/springs.js` | 260 |

Total de `public/js/`: **32.001 linhas em 44 arquivos**. O índice símbolo→linha, com a tabela de conflito, é outro bloco gerado: `tools/eval/ARCH.md` (`npm run arch`).
Total de `public/js/`: **32.024 linhas em 45 arquivos**. O índice símbolo→linha, com a tabela de conflito, é outro bloco gerado: `tools/eval/ARCH.md` (`npm run arch`).

> Bloco gerado por `node tools/gen-docs.mjs`. Fonte: ``git ls-files public/js/*.js | xargs wc -l``

Expand Down
8 changes: 4 additions & 4 deletions docs/docs/comecando.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,18 +39,18 @@ esta página envelhecia no primeiro commit — ver

| O que | Quanto | Onde confere |
|---|---:|---|
| Código do jogo | 32.001 linhas em 44 arquivos | `git ls-files public/js/*.js \| xargs wc -l` |
| Código do jogo | 32.024 linhas em 45 arquivos | `git ls-files public/js/*.js \| xargs wc -l` |
| `game.js` | **6.910** linhas | `wc -l public/js/game.js` |
| `main.js` | 2.698 linhas | `wc -l public/js/main.js` |
| `main.js` | 2.700 linhas | `wc -l public/js/main.js` |
| Armas com GLB | 26 | `git ls-files 'public/models/weapons/*.glb' \| wc -l` |
| GLBs de personagem | 45 | `git ls-files 'public/models/characters/*.glb' \| wc -l` |
| Props em GLB | 108 | `git ls-files 'public/models/props/*.glb' \| wc -l` |
| Clipes de animação versionados | 573 | `git ls-files public/models/anims \| wc -l` |
| Personagens jogáveis | 44, em 5 facções | array `CHARACTERS` de `characters.js` |
| Mapas no registro | 12 | objeto `MAPS` de `maps.js` |
| Arnêses visuais em HTML | 15 | `git ls-files 'public/*.html' \| wc -l` |
| Scripts do arnês | 200 | `git ls-files 'tools/eval/*.mjs' 'tools/eval/*.py' \| wc -l` |
| Scripts de pipeline | 54 | `git ls-files 'tools/*.mjs' \| wc -l` |
| Scripts do arnês | 201 | `git ls-files 'tools/eval/*.mjs' 'tools/eval/*.py' \| wc -l` |
| Scripts de pipeline | 55 | `git ls-files 'tools/*.mjs' \| wc -l` |
| Tarefas de entrada escritas | 26 | `git ls-files 'docs/issues/[0-9]*.md' \| wc -l` |
| Versão | `2.0.0-alpha.179` | `public/js/version.js` e `package.json` (batem) |

Expand Down
2 changes: 1 addition & 1 deletion docs/docs/quality-gates.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ PR (`.github/workflows/ci.yml`).
{/* BEGIN:GERADO:invariantes — não edite à mão, rode `npm run docs` */}

- `tools/eval/invariants.mjs`: **2.275 linhas**, **65 identificadores de invariante declarados** (`put()`), dos quais **28** têm caminho de `skip()` declarado.
- O arnês inteiro são **200 scripts** em `tools/eval/` (`.mjs` + `.py`), mais **54 scripts** de pipeline em `tools/`.
- O arnês inteiro são **201 scripts** em `tools/eval/` (`.mjs` + `.py`), mais **55 scripts** de pipeline em `tools/`.
- Quantas invariantes rodam como **críticas** numa execução **não é derivável do fonte**: depende de qual insumo existe na máquina (o JSON do auditor de viewmodel, um GLB, uma pasta de anims). Esse número só sai rodando o quality gate — e o lugar dele é o cabeçalho do `KNOWN-BUGS.md`, atualizado com saída real.

Reproduza:
Expand Down
4 changes: 2 additions & 2 deletions docs/docs/stack.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ a partir do `package.json`, do `docs/package.json` e do próprio Three.js vendor
| Camada | Ferramenta | Versão |
|---|---|---|
| Motor 3D (WebGL) | **Three.js**, vendorizado | `r160` |
| Jogo | ES modules vanilla, **zero build** | 44 arquivos |
| Jogo | ES modules vanilla, **zero build** | 45 arquivos |
| Site | **Astro** com SSR | `^7.1.1` |
| Hospedagem | adapter **Vercel** | `^11.0.6` |
| Banco | **Postgres gerenciado** (RLS; schema privado, fora do repo) | `^2.110.7` |
Expand All @@ -28,7 +28,7 @@ a partir do `package.json`, do `docs/package.json` e do próprio Three.js vendor
| Esta documentação | **Docusaurus** | `3.6.3` |
| Runtime de CI | **Node** | `22` |

Three.js sai de `public/vendor/three.module.js` (**sem CDN, sem npm no runtime**). Astro e Vercel de `package.json` + `astro.config.mjs` + `vercel.json`. Dos scripts de `tools/`, **110** importam Playwright, **37** importam gltf-transform e **4** importam meshoptimizer.
Three.js sai de `public/vendor/three.module.js` (**sem CDN, sem npm no runtime**). Astro e Vercel de `package.json` + `astro.config.mjs` + `vercel.json`. Dos scripts de `tools/`, **111** importam Playwright, **38** importam gltf-transform e **5** importam meshoptimizer.

> Bloco gerado por `node tools/gen-docs.mjs`. Fonte: `dependencies/devDependencies do package.json · REVISION de public/vendor/three.module.js`

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,14 +70,14 @@ Size of the files `gen-arch.mjs` indexes — a generated block, regenerated by
| File | Lines |
|---|---:|
| `public/js/game.js` | 6,910 |
| `public/js/main.js` | 2,698 |
| `public/js/main.js` | 2,700 |
| `public/js/characters.js` | 1,068 |
| `public/js/glbchars.js` | 844 |
| `public/js/glbchars.js` | 845 |
| `public/js/vmattach.js` | 628 |
| `public/js/weapons.js` | 346 |
| `public/js/weapons.js` | 347 |
| `public/js/springs.js` | 260 |

Total in `public/js/`: **32,001 lines in 44 files**. The symbol-to-line index lives in `tools/eval/ARCH.md`.
Total in `public/js/`: **32,024 lines in 45 files**. The symbol-to-line index lives in `tools/eval/ARCH.md`.

> Block generated by `node tools/gen-docs.mjs`. Source: ``wc -l public/js/*.js``

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,18 +41,18 @@ this page was aging at the very first commit — see

| What | How much | Where to check |
|---|---:|---|
| Game code | 32,001 lines in 44 files | `git ls-files public/js/*.js \| xargs wc -l` |
| Game code | 32,024 lines in 45 files | `git ls-files public/js/*.js \| xargs wc -l` |
| `game.js` | **6,910** lines | `wc -l public/js/game.js` |
| `main.js` | 2,698 lines | `wc -l public/js/main.js` |
| `main.js` | 2,700 lines | `wc -l public/js/main.js` |
| Weapons with GLB | 26 | `git ls-files 'public/models/weapons/*.glb' \| wc -l` |
| Character GLBs | 45 | `git ls-files 'public/models/characters/*.glb' \| wc -l` |
| Props in GLB | 108 | `git ls-files 'public/models/props/*.glb' \| wc -l` |
| Versioned animation clips | 573 | `git ls-files public/models/anims \| wc -l` |
| Playable characters | 44, in 5 factions | `CHARACTERS` array in `characters.js` |
| Maps in the registry | 12 | `MAPS` object in `maps.js` |
| Visual harnesses in HTML | 15 | `git ls-files 'public/*.html' \| wc -l` |
| Harness scripts | 200 | `git ls-files 'tools/eval/*.mjs' 'tools/eval/*.py' \| wc -l` |
| Pipeline scripts | 54 | `git ls-files 'tools/*.mjs' \| wc -l` |
| Harness scripts | 201 | `git ls-files 'tools/eval/*.mjs' 'tools/eval/*.py' \| wc -l` |
| Pipeline scripts | 55 | `git ls-files 'tools/*.mjs' \| wc -l` |
| Written entry tasks | 26 | `git ls-files 'docs/issues/[0-9]*.md' \| wc -l` |
| Version | `2.0.0-alpha.179` | `public/js/version.js` and `package.json` (match) |

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ PR (`.github/workflows/ci.yml`).
{/* BEGIN:GERADO:invariantes — não edite à mão, rode `npm run docs` */}

- `tools/eval/invariants.mjs`: **2,275 lines**, **65 declared invariant identifiers**, with **28** declared `skip()` paths.
- The harness contains **200 scripts** in `tools/eval/`, plus **54 pipeline scripts** in `tools/`.
- The harness contains **201 scripts** in `tools/eval/`, plus **55 pipeline scripts** in `tools/`.
- The number of critical checks in one run depends on the inputs present on that machine; dated results belong in `KNOWN-BUGS.md`.

```bash
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ from `package.json`, `docs/package.json` and the vendored Three.js itself.
| Layer | Tool | Version |
|---|---|---|
| 3D engine (WebGL) | **Three.js**, vendored | `r160` |
| Game | vanilla ES modules, **zero build** | 44 files |
| Game | vanilla ES modules, **zero build** | 45 files |
| Site | **Astro** with SSR | `^7.1.1` |
| Hosting | **Vercel** adapter | `^11.0.6` |
| Database | **managed Postgres** (RLS; private schema) | `^2.110.7` |
Expand All @@ -31,7 +31,7 @@ from `package.json`, `docs/package.json` and the vendored Three.js itself.
| This documentation | **Docusaurus** | `3.6.3` |
| CI runtime | **Node** | `22` |

Three.js comes from `public/vendor/three.module.js`. Of the scripts in `tools/`, **110** import Playwright, **37** import gltf-transform, and **4** import meshoptimizer.
Three.js comes from `public/vendor/three.module.js`. Of the scripts in `tools/`, **111** import Playwright, **38** import gltf-transform, and **5** import meshoptimizer.

> Block generated by `node tools/gen-docs.mjs`. Source: `dependencies/devDependencies do package.json · REVISION de public/vendor/three.module.js`

Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@
"eval:pickuparma": "node tools/eval/pickup-arma-check.mjs",
"eval:fixture": "node tools/eval/fixture-check.mjs",
"eval:preload": "node tools/eval/preload-check.mjs",
"eval:tela": "node tools/eval/tela-check.mjs",
"eval:armas": "node tools/eval/armas-check.mjs",
"eval:comentario": "node tools/eval/comentario-check.mjs",
"eval:posters": "node tools/eval/poster-aspect-check.mjs",
Expand Down
3 changes: 2 additions & 1 deletion public/js/fparms.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
import * as THREE from 'three';
import { clone as skeletonClone } from 'three/addons/utils/SkeletonUtils.js';
import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
import { aplicaKtx2 } from './ktx2.js';
import { VERSION } from './version.js';
import { getSharedClips, measurePalmLocal } from './glbchars.js';
import { gripPoints, ONE_HANDED, weaponMetrics } from './weapons.js';
Expand Down Expand Up @@ -78,7 +79,7 @@ const _loader = new GLTFLoader();
// fallback procedural (fpArm/frontHand do game.js).
export function preloadFPArms() {
if (!_loading) {
_loading = new Promise((res, rej) => _loader.load(`models/fparms/arms.glb?v=${VERSION}`, res, undefined, rej))
_loading = new Promise((res, rej) => aplicaKtx2(_loader).load(`models/fparms/arms.glb?v=${VERSION}`, res, undefined, rej))
.then((g) => { _armsTpl = g.scene; })
.catch((e) => { console.warn('[fparms] arms.glb falhou no load — mãos procedurais', e); });
}
Expand Down
3 changes: 2 additions & 1 deletion public/js/glbchars.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import * as THREE from 'three';
import { VERSION } from './version.js';
import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
import { aplicaKtx2 } from './ktx2.js';
import { clone as skeletonClone } from 'three/addons/utils/SkeletonUtils.js';
import { buildRifle, CHAR_FX, charRimColor, upgradeCharMaterial, makeContactShadow } from './characters.js';
import { weaponModel, preloadWeapons, ONE_HANDED, gripPoints } from './weapons.js';
Expand Down Expand Up @@ -157,7 +158,7 @@ const PALM_GUARD = qp.get('palmguard') !== '0';
const PALM_MAX_LEVER = parseFloat(qp.get('palmlever')) || 0.9;

const loader = new GLTFLoader();
const loadGLB = (url) => new Promise((res, rej) => loader.load(url, res, undefined, rej));
const loadGLB = (url) => new Promise((res, rej) => aplicaKtx2(loader).load(url, res, undefined, rej));

let _clips = null; // { idle: AnimationClip, ... } shared fallback
const _clipsByChar = {}; // id -> per-character retargeted clip set (fallback to _clips)
Expand Down
18 changes: 18 additions & 0 deletions public/js/ktx2.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
/* Textura que chega COMPRIMIDA na GPU: 1024² RGBA8+mips custa 5,6 MB de VRAM, transcodificado
cai a ~0,7 MB. Números e o preço em download: docs/LICOES.md e o PR do KTX2. */
import { KTX2Loader } from 'three/addons/loaders/KTX2Loader.js';

let _ktx2 = null;
export function armaKtx2(renderer) {
if (_ktx2 || !renderer) return _ktx2;
try {
_ktx2 = new KTX2Loader().setTranscoderPath('/vendor/addons/libs/basis/').detectSupport(renderer);
} catch (e) { console.warn('[ktx2] transcoder não subiu — textura basisu vai falhar', e); }
return _ktx2;
}
/* Aplicado NA CARGA, não na montagem do módulo: glbchars/weapons/fparms avaliam ANTES do
main.js, então no topo deles o transcoder ainda não existe. Idempotente e barato. */
export function aplicaKtx2(loader) {
if (_ktx2 && loader && loader.ktx2Loader !== _ktx2) { loader.setKTX2Loader(_ktx2); loader.ktx2Loader = _ktx2; }
return loader;
}
2 changes: 2 additions & 0 deletions public/js/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,9 +41,11 @@ const PLAYER_AVATAR_KEY = 'awpbr_player_avatar';
// o tom do caminho SEM pós mora no bloom.js, que é o dono da tabela de exposição/piso por mapa.
import { applyNoPostTone } from './bloom.js';
import { criaRenderer, avisaSemWebgl } from './glcontext.js';
import { armaKtx2 } from './ktx2.js';
const container = document.getElementById('game-container');
const SAFE_MODE = new URLSearchParams(location.search).get('safe') === '1';
const renderer = criaRenderer({}, { compatibility: SAFE_MODE });
armaKtx2(renderer); // textura basisu precisa saber o formato que a GPU aceita
if (!renderer) {
avisaSemWebgl('WebGL indisponível neste navegador/driver');
throw new Error('sem_webgl');
Expand Down
3 changes: 2 additions & 1 deletion public/js/weapons.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import * as THREE from 'three';
import { VERSION } from './version.js';
import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
import { aplicaKtx2 } from './ktx2.js';

const loader = new GLTFLoader();
const _cache = new Map();
Expand Down Expand Up @@ -229,7 +230,7 @@ function buildMag(id) {
return g;
}

const loadGLB = (url) => new Promise((res, rej) => loader.load(url, res, undefined, rej));
const loadGLB = (url) => new Promise((res, rej) => aplicaKtx2(loader).load(url, res, undefined, rej));

/* `ids` opcional: a partida carrega SÓ as armas que ela sorteou (ver pickMatchWeapons), e o
resto chega em ocioso. Sem lista = elenco inteiro, que é o caminho do arnês e do menu. */
Expand Down
Binary file modified public/models/weapons/ak.glb
Binary file not shown.
Binary file modified public/models/weapons/akm.glb
Binary file not shown.
Binary file modified public/models/weapons/awp.glb
Binary file not shown.
Binary file modified public/models/weapons/carbine.glb
Binary file not shown.
Binary file modified public/models/weapons/deagle.glb
Binary file not shown.
Binary file modified public/models/weapons/famas.glb
Binary file not shown.
Binary file modified public/models/weapons/g3.glb
Binary file not shown.
Binary file modified public/models/weapons/g3sg1.glb
Binary file not shown.
Binary file modified public/models/weapons/knife.glb
Binary file not shown.
Binary file modified public/models/weapons/lmg.glb
Binary file not shown.
Binary file modified public/models/weapons/m4.glb
Binary file not shown.
Binary file modified public/models/weapons/m400.glb
Binary file not shown.
Binary file modified public/models/weapons/m92.glb
Binary file not shown.
Binary file modified public/models/weapons/md97.glb
Binary file not shown.
Binary file modified public/models/weapons/mosin.glb
Binary file not shown.
Binary file modified public/models/weapons/mp5.glb
Binary file not shown.
Binary file modified public/models/weapons/p90.glb
Binary file not shown.
Binary file modified public/models/weapons/pistol.glb
Binary file not shown.
Binary file modified public/models/weapons/rem700.glb
Binary file not shown.
Binary file modified public/models/weapons/revolver38.glb
Binary file not shown.
Binary file modified public/models/weapons/scar.glb
Binary file not shown.
Binary file modified public/models/weapons/shotgun.glb
Binary file not shown.
Binary file modified public/models/weapons/sks.glb
Binary file not shown.
Binary file modified public/models/weapons/svd.glb
Binary file not shown.
Binary file modified public/models/weapons/tavor.glb
Binary file not shown.
Binary file modified public/models/weapons/uzi.glb
Binary file not shown.
21 changes: 21 additions & 0 deletions public/vendor/addons/libs/basis/basis_transcoder.js

Large diffs are not rendered by default.

Binary file not shown.
1 change: 1 addition & 0 deletions public/vendor/addons/libs/ktx-parse.module.js

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions public/vendor/addons/libs/zstddec.module.js

Large diffs are not rendered by default.

Loading
Loading