//of the node unsigned short numFaces; // number of faces
};
Здесь plane - это индекс разбивающей плоскости в массиве плоскостей. Величины frontChild и backChild представляют собой индексы переднего и заднего поддеревьев (узлов) данного узла. Отрицательное значение соответствующей величины означает, что ссылка идет на лист дерева и номер листа определяется как ~(index+I), так что первое отрицательное значение ссылается на нулевой лист.
Далее идет ограничивающее тело (ААВВ) для данного узла, причем для задания координат используются 16-битовые целочисленные величины.
После этого идут номер первой грани (firstFace) и количество граней (nuinFaces) в массиве граней.
Блок листьев (leaf lump) - содержит описание всех листьев дерева в виде массива следующих структур:
am.1
struct Quake2BspLeaf // bsp node leaf (stored in
// the leaves lump)
{
long brushOr; // OR'ed brushes
unsigned short cluster; // -1 (OxFFFF) if
//no visibility information
unsigned short area;
short mins [3]; // bbox min value as shorts
short maxs [3]; // bbox max values as shorts
unsigned short firstLeafFace; // index of 1st leaf
// face in the leaf // face table
unsigned short numLeafFaces; // # of leaf faces
unsigned short firstLeafBrush; unsigned short numLeafBrushes;
};
Список всех граней, содержащихся в данном листе, содержится в массиве граней листьев (face leaf lump) начиная с firstLeafFace и содержит пит-LeafFaces значений. Поле cluster содержит номер кластера, которому принадлежит данный лист.
Блок граней листьев (face leaf lump). Для доступа к граням из листьев дерева в данном блоке содержатся индексы всех граней для каждого листа. Этот массив состоит из 16-битовых беззнаковых значений.
Блок информации по текстурированию (texture information lump)
содержит информацию по текстурированию для каждой из граней сцены в виде массива следующих структур:
struct Quake2TexInfо // texture coordinates