light, common: move WindingFromFace to bspfile.c/h

This commit is contained in:
Eric Wasylishen 2016-05-19 15:07:31 -06:00
parent fff12697e5
commit 45010089f3
4 changed files with 39 additions and 37 deletions

View File

@ -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 ; i<f->numedges ; 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;
}

View File

@ -24,6 +24,7 @@
#include <common/cmdlib.h>
#include <common/log.h>
#include <common/polylib.h>
#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

View File

@ -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;

View File

@ -873,42 +873,6 @@ std::unordered_map<int, std::vector<patch_t *>> 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 ; i<f->numedges ; 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)
{