Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Optimize: Plotted decoration origins do not change on the XY plane du…
…ring plotting in decorateLineSection() so they are invariant to the inner vertical pattern loop.
  • Loading branch information
danij committed Mar 29, 2008
1 parent 8358b48 commit b50c460
Showing 1 changed file with 16 additions and 8 deletions.
24 changes: 16 additions & 8 deletions doomsday/engine/portable/src/rend_decor.c
Expand Up @@ -571,24 +571,28 @@ static void decorateLineSection(const linedef_t *line, sidedef_t *side,

for(; s < line->length; s += patternW)
{
subsector_t *subsector;

t = M_CycleIntoRange(modelDef->pos[VY] - suf->visOffset[VY] -
surfTexH * modelDef->patternOffset[VY] +
offsetY, patternH);

pos[VX] = posBase[VX] + delta[VX] * s / line->length;
pos[VY] = posBase[VY] + delta[VY] * s / line->length;
subsector = R_PointInSubsector(pos[VX], pos[VY]);

for(; t < lh; t += patternH)
{
surfacedecor_t *d;
surfacedecor_t *d;

pos[VX] = posBase[VX] + delta[VX] * s / line->length;
pos[VY] = posBase[VY] + delta[VY] * s / line->length;
pos[VZ] = top - t;

if(NULL != (d = R_CreateSurfaceDecoration(DT_MODEL, suf)))
{
d->pos[VX] = pos[VX];
d->pos[VY] = pos[VY];
d->pos[VZ] = pos[VZ];
d->subsector = R_PointInSubsector(d->pos[VX], d->pos[VY]);
d->subsector = subsector;

DEC_MODEL(d)->mf = mf;
DEC_MODEL(d)->def = modelDef;
Expand Down Expand Up @@ -624,24 +628,28 @@ static void decorateLineSection(const linedef_t *line, sidedef_t *side,

for(; s < line->length; s += patternW)
{
subsector_t *subsector;

t = M_CycleIntoRange(lightDef->pos[VY] - suf->visOffset[VY] -
surfTexH * lightDef->patternOffset[VY] +
offsetY, patternH);

pos[VX] = posBase[VX] + delta[VX] * s / line->length;
pos[VY] = posBase[VY] + delta[VY] * s / line->length;
subsector = R_PointInSubsector(pos[VX], pos[VY]);

for(; t < lh; t += patternH)
{
surfacedecor_t *d;
surfacedecor_t *d;

pos[VX] = posBase[VX] + delta[VX] * s / line->length;
pos[VY] = posBase[VY] + delta[VY] * s / line->length;
pos[VZ] = top - t;

if(NULL != (d = R_CreateSurfaceDecoration(DT_LIGHT, suf)))
{
d->pos[VX] = pos[VX];
d->pos[VY] = pos[VY];
d->pos[VZ] = pos[VZ];
d->subsector = R_PointInSubsector(d->pos[VX], d->pos[VY]);
d->subsector = subsector;

DEC_LIGHT(d)->def = lightDef;
}
Expand Down

0 comments on commit b50c460

Please sign in to comment.