aboutsummaryrefslogtreecommitdiff
path: root/docs/specs/wear.md
diff options
context:
space:
mode:
authorValentin Popov <valentin@popov.link>2026-06-22 00:58:51 +0300
committerValentin Popov <valentin@popov.link>2026-06-22 00:58:51 +0300
commit78fc5f1debf1395d5df0bab7cc0dde54351205cb (patch)
treeef8f7c72a183723fcbea0b2d1fefd7c28ca7bc18 /docs/specs/wear.md
parent50c2cf4686b53ebd2b76318223096660e92305a4 (diff)
downloadfparkan-78fc5f1debf1395d5df0bab7cc0dde54351205cb.tar.xz
fparkan-78fc5f1debf1395d5df0bab7cc0dde54351205cb.zip
docs: rewrite MkDocs documentation
Diffstat (limited to 'docs/specs/wear.md')
-rw-r--r--docs/specs/wear.md96
1 files changed, 0 insertions, 96 deletions
diff --git a/docs/specs/wear.md b/docs/specs/wear.md
deleted file mode 100644
index e969f9c..0000000
--- a/docs/specs/wear.md
+++ /dev/null
@@ -1,96 +0,0 @@
-# Wear table (`WEAR`)
-
-`WEAR` — текстовый ресурс, который связывает слоты wear с именами материалов и lightmap.
-
-Связанные страницы:
-
-- [Material (`MAT0`)](material.md)
-- [Texture (`Texm`)](texture.md)
-
-## 1. Контейнер
-
-- Тип ресурса: `0x52414557` (`WEAR`).
-- Обычно хранится как `*.wea` внутри world/mission архивов.
-
-## 2. Формат текста
-
-```text
-<wearCount:int>
-<legacyId:int> <materialName>
-... (wearCount строк)
-
-[пустая строка]
-[LIGHTMAPS
-<lightmapCount:int>
-<legacyId:int> <lightmapName>
-... (lightmapCount строк)]
-```
-
-`legacyId` читается, но логика выбора работает по имени.
-
-## 3. Совместимость парсинга
-
-В движке используются два режима чтения (`из файла` и `из буфера`), у которых различается обработка блока `LIGHTMAPS`.
-
-Практическое правило для полного совпадения:
-
-- если присутствует блок `LIGHTMAPS`, перед строкой `LIGHTMAPS` должна быть пустая строка-разделитель.
-
-## 4. Runtime-ограничения
-
-- Число wear-таблиц в менеджере ограничено: максимум `70`.
-- Для `wearCount <= 0` ресурс считается некорректным.
-- Для `LIGHTMAPS` блока `lightmapCount <= 0` — также ошибка формата.
-
-## 5. Поведение резолва
-
-### 5.1. Материал
-
-Для каждого wear-слота:
-
-1. Ищется материал по имени.
-2. Если не найден — используется fallback (`DEFAULT`, затем индекс 0).
-
-### 5.2. Lightmap
-
-Для каждого lightmap-слота:
-
-1. Ищется текстура lightmap по имени.
-2. Если не найдено — слот получает `-1`.
-
-## 6. Handle-кодирование
-
-Движок кодирует ссылку на material-slot как:
-
-```c
-handle = (tableIndex << 16) | wearIndex
-```
-
-- `tableIndex` — номер wear-таблицы.
-- `wearIndex` — индекс строки внутри таблицы.
-
-## 7. Правила writer/editor
-
-1. Сохранять порядок строк.
-2. Не переставлять и не нормализовать `legacyId`.
-3. Для совместимости buffer-парсинга сохранять пустую строку перед `LIGHTMAPS`.
-4. Проверять, что число строк соответствует `wearCount`/`lightmapCount`.
-
-## 8. Статус валидации
-
-- Поведение `WEAR` согласовано с текущей спецификацией материалов/текстур и runtime-пайплайном.
-- Корпусные проверки связки `WEAR -> MAT0 -> Texm` включены в текущий валидаторный контур проекта.
-
-## 9. Статус покрытия и что осталось до 100%
-
-Закрыто:
-
-1. Текстовый формат `WEAR`, включая блок `LIGHTMAPS`.
-2. Handle-кодирование material slot и fallback-резолв.
-3. Правила совместимого writer/editor path.
-
-Осталось:
-
-1. Полная спецификация edge-case форматов строк (кодировки, редкие разделители, возможные legacy-варианты).
-2. Формализация всех ограничений менеджера wear-таблиц в runtime (лимиты и политики вытеснения).
-3. Интеграционные parity-тесты на полном цикле «модель -> wear -> material -> texture/lightmap».