Цитата:
Сообщение от oSg
пишу в надежде, что кто-нибудь подскажет в каком направлении курить
задача: сменить на карте один статикмеш на другой (конкретно - качающиеся деревья на статичные)
что делаю (в карте):
1) заменяю имена (строковые)
2) меняю позиции таблицы экспорта и импорта с учетом сдвигов из-за разной длины строк
вот тут пока уперся из-за незнания, как работает экспорт/импорт
подозреваю, что нужны изменения в таблице импорта (name index / object index), пока не пойму откуда их брать
можно в пм, за любую инфу буду благодарен
upd: собственно, запись импорта
Код:
60 7e Engine
19 StaticMesh
f8 ff ff ff Outer (-8)
4e 7f Name (orenGtree3)
и вопросы:
1) что есть OuterObject? (тоже разобрался)
2) как резолвится по последним 2 байтам имя объекта ? (разобрался)
|
Не думаю что менять текущие строки хорошая идея, так так можно поломать другие объекты, безопаснее добавлять новые.
NameTable стоит перед массивом основных данных который нельзя менять, так как в нем хранятся смещения по файлу. Поэтому новую увеличенную NameTable переносим за данные.
С изменением координат проблем нет, так как тип float имеет фиксированный размер 4 байта.
А вот ссылка на StaticMesh в зависимости от индекса в ImportTable может быть 1 байт(если < 64) или 2 байта. Поэтому если ссылка занимала 1 байт, а размер ImportTable >= 63, то объект заменить на новый не получится.
Еще печалька в том, что не у всех объектов есть свойство Rotation, что тоже накладывает некоторые ограничения на замену.