Image_Copy8bitRGBA(mtdata, basepixels, basepixels_width * basepixels_height, palette_nofullbrights);
if (!glowpixels)
{
- for (j = 0;j < tx->width*tx->height;j++)
+ for (j = 0;j < (int)(tx->width*tx->height);j++)
if (((qbyte *)&palette_onlyfullbrights[mtdata[j]])[3] > 0) // fullbright
break;
- if (j < tx->width * tx->height)
+ if (j < (int)(tx->width * tx->height))
{
glowpixels_width = tx->width;
glowpixels_height = tx->height;
}
// start out with no animation
- tx->currentframe[0] = tx;
- tx->currentframe[1] = tx;
+ tx->currentframe = tx;
}
// sequence the animations
}
}
+/*
static int castshadowcount = 0;
void Mod_ProcessLightList(void)
{
dist = -dist;
if (dist > 0 && dist < e->cullradius)
{
- VectorSubtract(e->origin, surf->poly_center, temp);
- if (DotProduct(temp, temp) - surf->poly_radius2 < e->cullradius2)
+ temp[0] = bound(surf->poly_mins[0], e->origin[0], surf->poly_maxs[0]) - e->origin[0];
+ temp[1] = bound(surf->poly_mins[1], e->origin[1], surf->poly_maxs[1]) - e->origin[1];
+ temp[2] = bound(surf->poly_mins[2], e->origin[2], surf->poly_maxs[2]) - e->origin[2];
+ if (DotProduct(temp, temp) < lightradius2)
loadmodel->surfacevisframes[*mark] = -2;
}
}
float *verts = Mem_Alloc(loadmodel->mempool, maxverts * sizeof(float[3]));
float f, *v0, *v1, projectdistance;
- e->shadowvolume = Mod_ShadowMesh_Begin(loadmodel->mempool);
+ e->shadowvolume = Mod_ShadowMesh_Begin(loadmodel->mempool, 1024);
#if 0
{
vec3_t outermins, outermaxs, innermins, innermaxs;
}
}
}
+*/
/*
void Mod_GenerateSurfacePolygon (msurface_t *surf)
{
int i, lindex;
- float *vec, *vert, mins[3], maxs[3], temp[3], dist;
+ float *vec, *vert, mins[3], maxs[3];
// convert edges back to a normal polygon
surf->poly_numverts = surf->numedges;
VectorCopy(vert, mins);
VectorCopy(vert, maxs);
vert += 3;
- for (i = 1;i < surf->poly_numverts;i++)
+ for (i = 1;i < surf->poly_numverts;i++, vert += 3)
{
if (mins[0] > vert[0]) mins[0] = vert[0];if (maxs[0] < vert[0]) maxs[0] = vert[0];
if (mins[1] > vert[1]) mins[1] = vert[1];if (maxs[1] < vert[1]) maxs[1] = vert[1];
if (mins[2] > vert[2]) mins[2] = vert[2];if (maxs[2] < vert[2]) maxs[2] = vert[2];
- vert += 3;
}
VectorCopy(mins, surf->poly_mins);
VectorCopy(maxs, surf->poly_maxs);
surf->poly_center[0] = (mins[0] + maxs[0]) * 0.5f;
surf->poly_center[1] = (mins[1] + maxs[1]) * 0.5f;
surf->poly_center[2] = (mins[2] + maxs[2]) * 0.5f;
- surf->poly_radius2 = 0;
- vert = surf->poly_verts;
- for (i = 0;i < surf->poly_numverts;i++)
- {
- VectorSubtract(vert, surf->poly_center, temp);
- dist = DotProduct(temp, temp);
- if (surf->poly_radius2 < dist)
- surf->poly_radius2 = dist;
- vert += 3;
- }
- surf->poly_radius = sqrt(surf->poly_radius2);
}
/*
static void Mod_BuildSurfaceNeighbors (msurface_t *surfaces, int numsurfaces, mempool_t *mempool)
{
- int surfnum, vertnum, snum, vnum;
+#if 0
+ int surfnum, vertnum, vertnum2, snum, vnum, vnum2;
msurface_t *surf, *s;
float *v0, *v1, *v2, *v3;
for (surf = surfaces, surfnum = 0;surfnum < numsurfaces;surf++, surfnum++)
- {
surf->neighborsurfaces = Mem_Alloc(mempool, surf->poly_numverts * sizeof(msurface_t *));
- for (vertnum = 0;vertnum < surf->poly_numverts;vertnum++)
+ for (surf = surfaces, surfnum = 0;surfnum < numsurfaces;surf++, surfnum++)
+ {
+ for (vertnum = surf->poly_numverts - 1, vertnum2 = 0, v0 = surf->poly_verts + (surf->poly_numverts - 1) * 3, v1 = surf->poly_verts;vertnum2 < surf->poly_numverts;vertnum = vertnum2, vertnum2++, v0 = v1, v1 += 3)
{
- v0 = surf->poly_verts + ((vertnum + 1) % surf->poly_numverts) * 3;
- v1 = surf->poly_verts + vertnum * 3;
+ if (surf->neighborsurfaces[vertnum])
+ continue;
surf->neighborsurfaces[vertnum] = NULL;
for (s = surfaces, snum = 0;snum < numsurfaces;s++, snum++)
{
|| s->poly_mins[2] > (surf->poly_maxs[2] + 1) || s->poly_maxs[2] < (surf->poly_mins[2] - 1)
|| s == surf)
continue;
- for (vnum = 0, v2 = s->poly_verts + (s->poly_numverts - 1) * 3, v3 = s->poly_verts;vnum < s->poly_numverts;vnum++, v2 = v3, v3 += 3)
+ for (vnum = 0;vnum < s->poly_numverts;vnum++)
+ if (s->neighborsurfaces[vnum] == surf)
+ break;
+ if (vnum < s->poly_numverts)
+ continue;
+ for (vnum = s->poly_numverts - 1, vnum2 = 0, v2 = s->poly_verts + (s->poly_numverts - 1) * 3, v3 = s->poly_verts;vnum2 < s->poly_numverts;vnum = vnum2, vnum2++, v2 = v3, v3 += 3)
{
- if (v0[0] == v2[0] && v0[1] == v2[1] && v0[2] == v2[2] && v1[0] == v3[0] && v1[1] == v3[1] && v1[2] == v3[2])
+ if (s->neighborsurfaces[vnum] == NULL
+ && ((v0[0] == v2[0] && v0[1] == v2[1] && v0[2] == v2[2] && v1[0] == v3[0] && v1[1] == v3[1] && v1[2] == v3[2])
+ || (v1[0] == v2[0] && v1[1] == v2[1] && v1[2] == v2[2] && v0[0] == v3[0] && v0[1] == v3[1] && v0[2] == v3[2])))
{
surf->neighborsurfaces[vertnum] = s;
+ s->neighborsurfaces[vnum] = surf;
break;
}
}
}
}
}
+#endif
}
/*
extern void R_Model_Brush_DrawSky(entity_render_t *ent);
extern void R_Model_Brush_Draw(entity_render_t *ent);
extern void R_Model_Brush_DrawShadowVolume(entity_render_t *ent, vec3_t relativelightorigin, float lightradius);
-extern void R_Model_Brush_DrawLight(entity_render_t *ent, vec3_t relativelightorigin, vec3_t relativeeyeorigin, float lightradius2, float lightdistbias, float lightsubtract, float *lightcolor);
+extern void R_Model_Brush_DrawLight(entity_render_t *ent, vec3_t relativelightorigin, vec3_t relativeeyeorigin, float lightradius, float *lightcolor);
void Mod_LoadBrushModel (model_t *mod, void *buffer)
{
int i, j;
// swap all the lumps
mod_base = (qbyte *)header;
- for (i=0 ; i<sizeof(dheader_t)/4 ; i++)
+ for (i = 0;i < (int) sizeof(dheader_t) / 4;i++)
((int *)header)[i] = LittleLong ( ((int *)header)[i]);
// load into heap
mod->radius2 = modelradius * modelradius;
// LordHavoc: build triangle meshs for entire model's geometry
// (only used for shadow volumes)
- mod->shadowmesh = Mod_ShadowMesh_Begin(originalloadmodel->mempool);
+ mod->shadowmesh = Mod_ShadowMesh_Begin(originalloadmodel->mempool, 1024);
for (j = 0, surf = &mod->surfaces[mod->firstmodelsurface];j < mod->nummodelsurfaces;j++, surf++)
if (surf->flags & SURF_SHADOWCAST)
Mod_ShadowMesh_AddPolygon(originalloadmodel->mempool, mod->shadowmesh, surf->poly_numverts, surf->poly_verts);
}
loadmodel = originalloadmodel;
- Mod_ProcessLightList ();
+ //Mod_ProcessLightList ();
}