Выкладываю, если кому интересно... На этом понятные вещи в pdd закончились, и начался БРЕД! Если кто может помочь, буду рад.
// точка в системе координат OpenGLя (вроде)
typedef struct _PDD_POINT {
FLOAT x;
FLOAT y;
FLOAT z;
} PDD_POINT;
// линия, ограничивающая ряды движения
typedef struct _PDD_LINE {
BYTE unknown[5*4];
PDD_POINT positions[2]; // координаты начала и конца линии
PDD_POINT normals[2]; // разрешенное направление движения
DWORD unknown;
BYTE unknowm[44];
} PDD_LINE;
// точка с помощью которой происходит
// соединение перекрестка с дорогой
typedef struct _PDD_NODE {
blob unknown[1376];
} PDD_NODE;
typedef struct _PDD_UNKNOWN1 {
byte unknown[60];
} PDD_UNKNOWN1;
typedef struct _PDD_UNKNOWN2 {
byte unknown[12];
} PDD_UNKNOWN2;
struct PDD_HEADER {
DWORD magic; // всегда 15. по видимому магическое число
DWORD nodesNumber; // количество нодов
DWORD linesNumber; // количество линий (в редакторе отображаются зеленым цветом)
DWORD unknownNumber1; // неизвестное количество (есть в сложных развязках)
DWORD unknown2;
DWORD unknown3;
DWORD unknown4;
DWORD pointsNumber; // количество точек описывающих периметр перекрестка
DWORD unknownNumber2; // неизвестное количество (вроде всегда 1)
DWORD nodeListOffset; // смещение от начала файла до списка нодов
DWORD lineListOffset; // смещение от начала файла до списка линий
DWORD unknownOffset1; // смещение до неизвестного списка
DWORD unknownOffset2;
DWORD unknownOffset3;
DWORD unknownOffset4;
DWORD positionListOffset; // смещение от начала файла до списка точек
DWORD normalListOffset; // смещение от начала файла до списка нормалей для точек
DWORD unknownOffset5; // смещение до неизвестного списка
PDD_NODE nodeList[nodesNumber]; // список нодов
PDD_LINE lineList[linesNumber]; // список линий
PDD_UNKNOWN1 unknownList1[unknownNumber1];// неизвестный список (есть в сложных развязках)
// теоретически тут еще что-то может быть
PDD_POINT positionList[pointsNumber]; // список точек
PDD_POINT normalList[pointsNumber]; // список нормалей
PDD_UNKNOWN2 unknownList2[unknownNumber2];// неизвестный список (вроде одинаковые данные во всех pdd)
};