diff --git a/common/bspfile.c b/common/bspfile.c index 01ac3afd..38ef2e20 100644 --- a/common/bspfile.c +++ b/common/bspfile.c @@ -1565,3 +1565,39 @@ PrintBSPFileSizes(const bspdata_t *bspdata) } } } + +/* + ============= + WindingFromFace + From q2 tools + ============= + */ +winding_t *WindingFromFace (const bsp2_t *bsp, const bsp2_dface_t *f) +{ + int i; + int se; + dvertex_t *dv; + int v; + winding_t *w; + + w = AllocWinding (f->numedges); + w->numpoints = f->numedges; + + for (i=0 ; inumedges ; i++) + { + se = bsp->dsurfedges[f->firstedge + i]; + if (se < 0) + v = bsp->dedges[-se].v[1]; + else + v = bsp->dedges[se].v[0]; + + dv = &bsp->dvertexes[v]; + for (int j=0; j<3; j++) { + w->p[i][j] = dv->point[j]; + } + } + + RemoveColinearPoints (w); + + return w; +} diff --git a/include/common/bspfile.h b/include/common/bspfile.h index 0c6202d2..89b71a7f 100644 --- a/include/common/bspfile.h +++ b/include/common/bspfile.h @@ -24,6 +24,7 @@ #include #include +#include #ifdef __cplusplus extern "C" { @@ -480,6 +481,8 @@ void ConvertBSPFormat(int32_t version, bspdata_t *bspdata); void BSPX_AddLump(bspdata_t *bspdata, const char *xname, const void *xdata, size_t xsize); const void *BSPX_GetLump(bspdata_t *bspdata, const char *xname, size_t *xsize); +winding_t *WindingFromFace (const bsp2_t *bsp, const bsp2_dface_t *f); + #ifdef __cplusplus } #endif diff --git a/include/light/light.h b/include/light/light.h index 30952b7b..b781e591 100644 --- a/include/light/light.h +++ b/include/light/light.h @@ -176,7 +176,6 @@ typedef struct { void AddBounceLight(const vec3_t pos, const vec3_t color, const vec3_t surfnormal, vec_t area, const bsp2_t *bsp); int NumBounceLights(); const bouncelight_t *BounceLightAtIndex(int i); -winding_t *WindingFromFace (const bsp2_t *bsp, const bsp2_dface_t *f); extern const bouncelight_t *bouncelights; extern int numbouncelights; diff --git a/light/light.cc b/light/light.cc index 328fdaef..543c60a2 100644 --- a/light/light.cc +++ b/light/light.cc @@ -873,42 +873,6 @@ std::unordered_map> facenumToPatches; mutex facenumToPatches_mutex; #endif -/* -============= -WindingFromFace -From q2 tools -============= -*/ -winding_t *WindingFromFace (const bsp2_t *bsp, const bsp2_dface_t *f) -{ - int i; - int se; - dvertex_t *dv; - int v; - winding_t *w; - - w = AllocWinding (f->numedges); - w->numpoints = f->numedges; - - for (i=0 ; inumedges ; i++) - { - se = bsp->dsurfedges[f->firstedge + i]; - if (se < 0) - v = bsp->dedges[-se].v[1]; - else - v = bsp->dedges[se].v[0]; - - dv = &bsp->dvertexes[v]; - for (int j=0; j<3; j++) { - w->p[i][j] = dv->point[j]; - } - } - - RemoveColinearPoints (w); - - return w; -} - #if 0 void SavePatch (const bsp2_t *bsp, const bsp2_dface_t *sourceface, winding_t *w) {