bool P_AlignFlat (int linenum, int side, int fc) { line_t *line = lines + linenum; sector_t *sec = side ? line->backsector : line->frontsector; if (!sec) return false; fixed_t x = line->v1->x; fixed_t y = line->v1->y; angle_t angle = R_PointToAngle2 (x, y, line->v2->x, line->v2->y); angle_t norm = (angle-ANGLE_90) >> ANGLETOFINESHIFT; fixed_t dist = -DMulScale16 (finecosine[norm], x, finesine[norm], y); if (side) { angle = angle + ANGLE_180; dist = -dist; } sec->SetBase(fc, dist & ((1<<(FRACBITS+8))-1), 0-angle); return true; }
void EV_LightTurnOnPartway (int tag, fixed_t frac) { int i; frac = clamp<fixed_t> (frac, 0, FRACUNIT); // Search all sectors for ones with same tag as activating line i = -1; while ((i = P_FindSectorFromTag (tag, i)) >= 0) { sector_t *temp, *sector = sectors + i; int j, bright = 0, min = sector->lightlevel; for (j = 0; j < sector->linecount; ++j) { if ((temp = getNextSector (sector->lines[j], sector)) != NULL) { if (temp->lightlevel > bright) { bright = temp->lightlevel; } if (temp->lightlevel < min) { min = temp->lightlevel; } } } sector->SetLightLevel(DMulScale16 (frac, bright, FRACUNIT-frac, min)); } }