mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2025-01-31 05:30:48 +00:00
Merge branch 'ogl-sector-alignment-fix' into 'next'
Fix sector flat alignment issues in OpenGL See merge request STJr/SRB2!1094
This commit is contained in:
commit
d8834143cb
1 changed files with 10 additions and 12 deletions
|
@ -494,7 +494,7 @@ static void HWR_RenderPlane(subsector_t *subsector, extrasubsector_t *xsub, bool
|
||||||
if (angle) // Only needs to be done if there's an altered angle
|
if (angle) // Only needs to be done if there's an altered angle
|
||||||
{
|
{
|
||||||
|
|
||||||
angle = (InvAngle(angle)+ANGLE_180)>>ANGLETOFINESHIFT;
|
angle = (InvAngle(angle))>>ANGLETOFINESHIFT;
|
||||||
|
|
||||||
// This needs to be done so that it scrolls in a different direction after rotation like software
|
// This needs to be done so that it scrolls in a different direction after rotation like software
|
||||||
/*tempxsow = FLOAT_TO_FIXED(scrollx);
|
/*tempxsow = FLOAT_TO_FIXED(scrollx);
|
||||||
|
@ -528,8 +528,6 @@ static void HWR_RenderPlane(subsector_t *subsector, extrasubsector_t *xsub, bool
|
||||||
{\
|
{\
|
||||||
tempxsow = FLOAT_TO_FIXED(vert->s);\
|
tempxsow = FLOAT_TO_FIXED(vert->s);\
|
||||||
tempytow = FLOAT_TO_FIXED(vert->t);\
|
tempytow = FLOAT_TO_FIXED(vert->t);\
|
||||||
if (texflat)\
|
|
||||||
tempytow = -tempytow;\
|
|
||||||
vert->s = (FIXED_TO_FLOAT(FixedMul(tempxsow, FINECOSINE(angle)) - FixedMul(tempytow, FINESINE(angle))));\
|
vert->s = (FIXED_TO_FLOAT(FixedMul(tempxsow, FINECOSINE(angle)) - FixedMul(tempytow, FINESINE(angle))));\
|
||||||
vert->t = (FIXED_TO_FLOAT(FixedMul(tempxsow, FINESINE(angle)) + FixedMul(tempytow, FINECOSINE(angle))));\
|
vert->t = (FIXED_TO_FLOAT(FixedMul(tempxsow, FINESINE(angle)) + FixedMul(tempytow, FINECOSINE(angle))));\
|
||||||
}\
|
}\
|
||||||
|
@ -2752,13 +2750,13 @@ static void HWR_RenderPolyObjectPlane(polyobj_t *polysector, boolean isceiling,
|
||||||
{
|
{
|
||||||
scrollx = FIXED_TO_FLOAT(FOFsector->floor_xoffs)/fflatwidth;
|
scrollx = FIXED_TO_FLOAT(FOFsector->floor_xoffs)/fflatwidth;
|
||||||
scrolly = FIXED_TO_FLOAT(FOFsector->floor_yoffs)/fflatheight;
|
scrolly = FIXED_TO_FLOAT(FOFsector->floor_yoffs)/fflatheight;
|
||||||
angle = FOFsector->floorpic_angle>>ANGLETOFINESHIFT;
|
angle = FOFsector->floorpic_angle;
|
||||||
}
|
}
|
||||||
else // it's a ceiling
|
else // it's a ceiling
|
||||||
{
|
{
|
||||||
scrollx = FIXED_TO_FLOAT(FOFsector->ceiling_xoffs)/fflatwidth;
|
scrollx = FIXED_TO_FLOAT(FOFsector->ceiling_xoffs)/fflatwidth;
|
||||||
scrolly = FIXED_TO_FLOAT(FOFsector->ceiling_yoffs)/fflatheight;
|
scrolly = FIXED_TO_FLOAT(FOFsector->ceiling_yoffs)/fflatheight;
|
||||||
angle = FOFsector->ceilingpic_angle>>ANGLETOFINESHIFT;
|
angle = FOFsector->ceilingpic_angle;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (gl_frontsector)
|
else if (gl_frontsector)
|
||||||
|
@ -2767,23 +2765,25 @@ static void HWR_RenderPolyObjectPlane(polyobj_t *polysector, boolean isceiling,
|
||||||
{
|
{
|
||||||
scrollx = FIXED_TO_FLOAT(gl_frontsector->floor_xoffs)/fflatwidth;
|
scrollx = FIXED_TO_FLOAT(gl_frontsector->floor_xoffs)/fflatwidth;
|
||||||
scrolly = FIXED_TO_FLOAT(gl_frontsector->floor_yoffs)/fflatheight;
|
scrolly = FIXED_TO_FLOAT(gl_frontsector->floor_yoffs)/fflatheight;
|
||||||
angle = gl_frontsector->floorpic_angle>>ANGLETOFINESHIFT;
|
angle = gl_frontsector->floorpic_angle;
|
||||||
}
|
}
|
||||||
else // it's a ceiling
|
else // it's a ceiling
|
||||||
{
|
{
|
||||||
scrollx = FIXED_TO_FLOAT(gl_frontsector->ceiling_xoffs)/fflatwidth;
|
scrollx = FIXED_TO_FLOAT(gl_frontsector->ceiling_xoffs)/fflatwidth;
|
||||||
scrolly = FIXED_TO_FLOAT(gl_frontsector->ceiling_yoffs)/fflatheight;
|
scrolly = FIXED_TO_FLOAT(gl_frontsector->ceiling_yoffs)/fflatheight;
|
||||||
angle = gl_frontsector->ceilingpic_angle>>ANGLETOFINESHIFT;
|
angle = gl_frontsector->ceilingpic_angle;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (angle) // Only needs to be done if there's an altered angle
|
if (angle) // Only needs to be done if there's an altered angle
|
||||||
{
|
{
|
||||||
|
angle = (InvAngle(angle))>>ANGLETOFINESHIFT;
|
||||||
|
|
||||||
// This needs to be done so that it scrolls in a different direction after rotation like software
|
// This needs to be done so that it scrolls in a different direction after rotation like software
|
||||||
tempxs = FLOAT_TO_FIXED(scrollx);
|
/*tempxs = FLOAT_TO_FIXED(scrollx);
|
||||||
tempyt = FLOAT_TO_FIXED(scrolly);
|
tempyt = FLOAT_TO_FIXED(scrolly);
|
||||||
scrollx = (FIXED_TO_FLOAT(FixedMul(tempxs, FINECOSINE(angle)) - FixedMul(tempyt, FINESINE(angle))));
|
scrollx = (FIXED_TO_FLOAT(FixedMul(tempxs, FINECOSINE(angle)) - FixedMul(tempyt, FINESINE(angle))));
|
||||||
scrolly = (FIXED_TO_FLOAT(FixedMul(tempxs, FINESINE(angle)) + FixedMul(tempyt, FINECOSINE(angle))));
|
scrolly = (FIXED_TO_FLOAT(FixedMul(tempxs, FINESINE(angle)) + FixedMul(tempyt, FINECOSINE(angle))));*/
|
||||||
|
|
||||||
// This needs to be done so everything aligns after rotation
|
// This needs to be done so everything aligns after rotation
|
||||||
// It would be done so that rotation is done, THEN the translation, but I couldn't get it to rotate AND scroll like software does
|
// It would be done so that rotation is done, THEN the translation, but I couldn't get it to rotate AND scroll like software does
|
||||||
|
@ -2813,10 +2813,8 @@ static void HWR_RenderPolyObjectPlane(polyobj_t *polysector, boolean isceiling,
|
||||||
{
|
{
|
||||||
tempxs = FLOAT_TO_FIXED(v3d->s);
|
tempxs = FLOAT_TO_FIXED(v3d->s);
|
||||||
tempyt = FLOAT_TO_FIXED(v3d->t);
|
tempyt = FLOAT_TO_FIXED(v3d->t);
|
||||||
if (texflat)
|
|
||||||
tempyt = -tempyt;
|
|
||||||
v3d->s = (FIXED_TO_FLOAT(FixedMul(tempxs, FINECOSINE(angle)) - FixedMul(tempyt, FINESINE(angle))));
|
v3d->s = (FIXED_TO_FLOAT(FixedMul(tempxs, FINECOSINE(angle)) - FixedMul(tempyt, FINESINE(angle))));
|
||||||
v3d->t = (FIXED_TO_FLOAT(-FixedMul(tempxs, FINESINE(angle)) - FixedMul(tempyt, FINECOSINE(angle))));
|
v3d->t = (FIXED_TO_FLOAT(FixedMul(tempxs, FINESINE(angle)) + FixedMul(tempyt, FINECOSINE(angle))));
|
||||||
}
|
}
|
||||||
|
|
||||||
v3d->x = FIXED_TO_FLOAT(polysector->vertices[i]->x);
|
v3d->x = FIXED_TO_FLOAT(polysector->vertices[i]->x);
|
||||||
|
|
Loading…
Reference in a new issue