- Обновлены спецификации `runtime-pipeline`, `sound`, `terrain-map-loading`, `texture`, `ui` и `wear`. - Добавлены разделы о статусе покрытия и оставшихся задачах для достижения 100% завершенности. - Внесены уточнения по архитектурным ролям, минимальным контрактам и требованиям к toolchain для каждой подсистемы. - Уточнены форматы данных и правила взаимодействия между компонентами системы.
3.8 KiB
3.8 KiB
Wear table (WEAR)
WEAR — текстовый ресурс, который связывает слоты wear с именами материалов и lightmap.
Связанные страницы:
1. Контейнер
- Тип ресурса:
0x52414557(WEAR). - Обычно хранится как
*.weaвнутри world/mission архивов.
2. Формат текста
<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-слота:
- Ищется материал по имени.
- Если не найден — используется fallback (
DEFAULT, затем индекс 0).
5.2. Lightmap
Для каждого lightmap-слота:
- Ищется текстура lightmap по имени.
- Если не найдено — слот получает
-1.
6. Handle-кодирование
Движок кодирует ссылку на material-slot как:
handle = (tableIndex << 16) | wearIndex
tableIndex— номер wear-таблицы.wearIndex— индекс строки внутри таблицы.
7. Правила writer/editor
- Сохранять порядок строк.
- Не переставлять и не нормализовать
legacyId. - Для совместимости buffer-парсинга сохранять пустую строку перед
LIGHTMAPS. - Проверять, что число строк соответствует
wearCount/lightmapCount.
8. Статус валидации
- Поведение
WEARсогласовано с текущей спецификацией материалов/текстур и runtime-пайплайном. - Корпусные проверки связки
WEAR -> MAT0 -> Texmвключены в текущий валидаторный контур проекта.
9. Статус покрытия и что осталось до 100%
Закрыто:
- Текстовый формат
WEAR, включая блокLIGHTMAPS. - Handle-кодирование material slot и fallback-резолв.
- Правила совместимого writer/editor path.
Осталось:
- Полная спецификация edge-case форматов строк (кодировки, редкие разделители, возможные legacy-варианты).
- Формализация всех ограничений менеджера wear-таблиц в runtime (лимиты и политики вытеснения).
- Интеграционные parity-тесты на полном цикле «модель -> wear -> material -> texture/lightmap».