8static int BIH_BuildNode(
bih_t *bih,
int numchildren,
int *leaflist,
float *totalmins,
float *totalmaxs)
29 child = bih->
leafs + leaflist[0];
36 for (
i = 1;
i < numchildren;
i++)
38 child = bih->
leafs + leaflist[
i];
50 totalmins[0] =
mins[0];
51 totalmins[1] =
mins[1];
52 totalmins[2] =
mins[2];
53 totalmaxs[0] =
maxs[0];
54 totalmaxs[1] =
maxs[1];
55 totalmaxs[2] =
maxs[2];
64 node = bih->
nodes + nodenum;
81 for (j = 0;j < numchildren;j++)
87 if (
size[0] <
size[1]) longestaxis = 1;
88 if (
size[longestaxis] <
size[2]) longestaxis = 2;
95 axis = (longestaxis + j) % 3;
97 splitdist = (node->
mins[axis] + node->
maxs[axis]) * 0.5f;
100 for (
i = 0;
i < numchildren;
i++)
102 child = bih->
leafs + leaflist[
i];
103 d = (child->
mins[axis] + child->
maxs[axis]) * 0.5f;
107 leaflist[front++] = leaflist[
i];
111 memcpy(leaflist + front, bih->
leafsortscratch, back*
sizeof(leaflist[0]));
120 back = numchildren >> 1;
121 front = numchildren - back;
129 node->
backmax = backmaxs[axis];
137 memset(bih, 0,
sizeof(*bih));
162 node = bih->
nodes + nodenum;
176 if (*numtrianglespointer >= maxtriangles)
178 ++*numtrianglespointer;
181 if(trianglelist_surf)
182 trianglelist_surf[*numtrianglespointer] = leaf->
surfaceindex;
183 trianglelist_idx[*numtrianglespointer] = leaf->
itemindex;
184 ++*numtrianglespointer;
198 nodenum = node->
back;
203 nodenum = node->
front;
213 int numtriangles = 0;
int BIH_GetTriangleListForBox(const bih_t *bih, int maxtriangles, int *trianglelist_idx, int *trianglelist_surf, const float *mins, const float *maxs)
static void BIH_GetTriangleListForBox_Node(const bih_t *bih, int nodenum, int maxtriangles, int *trianglelist_idx, int *trianglelist_surf, int *numtrianglespointer, const float *mins, const float *maxs)
static int BIH_BuildNode(bih_t *bih, int numchildren, int *leaflist, float *totalmins, float *totalmaxs)
int BIH_Build(bih_t *bih, int numleafs, bih_leaf_t *leafs, int maxnodes, bih_node_t *nodes, int *temp_leafsort, int *temp_leafsortscratch)
#define BIH_MAXUNORDEREDCHILDREN
int children[BIH_MAXUNORDEREDCHILDREN]