lyolik, подложил обратно exe без правки - все Ок, в принципе закономерно, БД не изменяется и симулятор использует траекторию записанную в БД с той точностью как записано, он туда вновь стыкуемые секции и писал достаточно точно, а вот при переборке (когда данные берутся из W) начинался ужас со стыковкой.
Изменять путь проложенный в правленой версии из обычной пробовал - без проблем.
Насчет всех цифр, похоже "досталось" QDirection, раньше записывался до 9 знаков после запятой, теперь до 6 как и Position.
А что если другие значения кроме 66?
add
Очень интересные эксперименты =)), в исходном варианте было % g (67), мы задаем f (66) может это заглавные буквы разрядности? Пробую разные варианты, при d (64) он пишет вообще без запятой до 10 разрядов, при Q (51) выдал во всем файле "Position ( Q Q Q )"
По соседним сходным значениям он понимает e, u, d и 0.2 но 0.2 это уже выход за смещение, очень интересно…
% p (70)
Цитата:
Position ( 60000000 00000000 A0000000 )
QDirection ( 00000000 40000000 00000000 40000000 )
|
весело
===============
Изрядно погуглив пришел к выводу что мы имеем дело с модификатором точности и кодом формата функции printf (почитать можно
тут и
тут, исходя из этого получается, что приемлемым вариантом будут только коды g и f.
Как я понимаю это коды вывода числа с плавающей точкой и "по умолчанию" число знаков после запятой (точки) как раз равно 6, g это более короткий вариант формата f (Билл скотина!).
Меняя код % g (67) на % f (66) мы указываем функции printf выводить в W файлы числа в "полном формате" f, но по умолчанию он ограничен 6 знаками, что для QDirection вероятно недостаточно, да и нужно стремиться к совместимости со "стандартным" вариантом, там максимум 10 разрядов.
Почитав описание функции решил обнаглеть и попробовать указать число знаков явным образом записав в файл %0.8f выйдя за пределы строки, ожидал ошибки, но как ни странно все работает и я явно "перестарался" ( т.е. симулятору плевать на ".8" ):
Цитата:
TrackObj (
UiD ( 382 )
SectionIdx ( 38110 )
Elevation ( 0.0000019c9c )
CollideFlags ( 535 )
FileName ( A1t2_6mtrConcrete.s )
StaticFlags ( 00200180 )
Position ( 877.4630135478814 17.0998995478814 375.0440065478814 )
QDirection ( 0.0000015478814 0.3445125478814 0.0000015478814 0.9387825478814 )
VDbId ( 4294967294 )
StaticDetailLevel ( 0 )
)
|
Курим описание функции дальше…
ps могу конечно ошибаться ибо не программист, но ИМХО путь указанный
lyolik
правильный, тут совсем нелишней была бы помощь программистов.