mirror of
https://github.com/ZDoom/raze-gles.git
synced 2024-11-11 07:11:39 +00:00
Fixes floor-aligned sprite and flipping/1-way interaction (bug 2783071).
git-svn-id: https://svn.eduke32.com/eduke32@1371 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
87c2ab5cc6
commit
0f95655e27
1 changed files with 18 additions and 12 deletions
|
@ -51,14 +51,14 @@ static GLfloat vertsprite[4 * 5] =
|
||||||
|
|
||||||
static GLfloat horizsprite[4 * 5] =
|
static GLfloat horizsprite[4 * 5] =
|
||||||
{
|
{
|
||||||
-0.5f, 0.0f, -0.5f,
|
|
||||||
0.0f, 1.0f,
|
|
||||||
0.5f, 0.0f, -0.5f,
|
|
||||||
1.0f, 1.0f,
|
|
||||||
0.5f, 0.0f, 0.5f,
|
|
||||||
1.0f, 0.0f,
|
|
||||||
-0.5f, 0.0f, 0.5f,
|
-0.5f, 0.0f, 0.5f,
|
||||||
0.0f, 0.0f,
|
0.0f, 0.0f,
|
||||||
|
0.5f, 0.0f, 0.5f,
|
||||||
|
1.0f, 0.0f,
|
||||||
|
0.5f, 0.0f, -0.5f,
|
||||||
|
1.0f, 1.0f,
|
||||||
|
-0.5f, 0.0f, -0.5f,
|
||||||
|
0.0f, 1.0f,
|
||||||
};
|
};
|
||||||
|
|
||||||
static GLfloat skyboxdata[4 * 5 * 6] =
|
static GLfloat skyboxdata[4 * 5 * 6] =
|
||||||
|
@ -573,8 +573,6 @@ int32_t polymer_init(void)
|
||||||
if (spriteplane.buffer == NULL) {
|
if (spriteplane.buffer == NULL) {
|
||||||
spriteplane.buffer = Bcalloc(4, sizeof(GLfloat) * 5);
|
spriteplane.buffer = Bcalloc(4, sizeof(GLfloat) * 5);
|
||||||
spriteplane.vertcount = 4;
|
spriteplane.vertcount = 4;
|
||||||
|
|
||||||
Bmemcpy(spriteplane.buffer, horizsprite, sizeof(GLfloat) * 4 * 5);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
|
@ -1080,6 +1078,10 @@ void polymer_drawsprite(int32_t snum)
|
||||||
|
|
||||||
bglTranslatef(spos[0], spos[1], spos[2]);
|
bglTranslatef(spos[0], spos[1], spos[2]);
|
||||||
bglRotatef(-ang, 0.0f, 1.0f, 0.0f);
|
bglRotatef(-ang, 0.0f, 1.0f, 0.0f);
|
||||||
|
if (tspr->cstat & 8) {
|
||||||
|
bglRotatef(-180.0, 0.0f, 0.0f, 1.0f);
|
||||||
|
spriteplane.material.diffusescale[0] = -spriteplane.material.diffusescale[0];
|
||||||
|
}
|
||||||
bglTranslatef((float)(-xoff), 1.0f, (float)(yoff));
|
bglTranslatef((float)(-xoff), 1.0f, (float)(yoff));
|
||||||
bglScalef((float)(xsize), 1.0f, (float)(ysize));
|
bglScalef((float)(xsize), 1.0f, (float)(ysize));
|
||||||
|
|
||||||
|
@ -1091,15 +1093,19 @@ void polymer_drawsprite(int32_t snum)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((tspr->cstat & 4) || (((tspr->cstat>>4) & 3) == 2))
|
if ((tspr->cstat & 4) && (((tspr->cstat>>4) & 3) != 2))
|
||||||
|
spriteplane.material.diffusescale[0] = -spriteplane.material.diffusescale[0];
|
||||||
|
if (!(tspr->cstat & 4) && (((tspr->cstat>>4) & 3) == 2))
|
||||||
spriteplane.material.diffusescale[0] = -spriteplane.material.diffusescale[0];
|
spriteplane.material.diffusescale[0] = -spriteplane.material.diffusescale[0];
|
||||||
|
|
||||||
if (tspr->cstat & 8)
|
if ((tspr->cstat & 8) && (((tspr->cstat>>4) & 3) != 2))
|
||||||
spriteplane.material.diffusescale[1] = -spriteplane.material.diffusescale[1];
|
spriteplane.material.diffusescale[1] = -spriteplane.material.diffusescale[1];
|
||||||
|
|
||||||
bglGetFloatv(GL_MODELVIEW_MATRIX, spritemodelview);
|
bglGetFloatv(GL_MODELVIEW_MATRIX, spritemodelview);
|
||||||
bglPopMatrix();
|
bglPopMatrix();
|
||||||
|
|
||||||
|
Bmemcpy(spriteplane.buffer, inbuffer, sizeof(GLfloat) * 4 * 5);
|
||||||
|
|
||||||
i = 0;
|
i = 0;
|
||||||
while (i < 4)
|
while (i < 4)
|
||||||
{
|
{
|
||||||
|
@ -1121,7 +1127,7 @@ void polymer_drawsprite(int32_t snum)
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((tspr->cstat & 64) && (((tspr->cstat>>4) & 3) == 1))
|
if ((tspr->cstat & 64) && ((tspr->cstat>>4) & 3))
|
||||||
bglEnable(GL_CULL_FACE);
|
bglEnable(GL_CULL_FACE);
|
||||||
|
|
||||||
if (!depth || mirrors[depth-1].plane)
|
if (!depth || mirrors[depth-1].plane)
|
||||||
|
@ -1132,7 +1138,7 @@ void polymer_drawsprite(int32_t snum)
|
||||||
if (!depth || mirrors[depth-1].plane)
|
if (!depth || mirrors[depth-1].plane)
|
||||||
bglDisable(GL_POLYGON_OFFSET_FILL);
|
bglDisable(GL_POLYGON_OFFSET_FILL);
|
||||||
|
|
||||||
if ((tspr->cstat & 64) && (((tspr->cstat>>4) & 3) == 1))
|
if ((tspr->cstat & 64) && ((tspr->cstat>>4) & 3))
|
||||||
bglDisable(GL_CULL_FACE);
|
bglDisable(GL_CULL_FACE);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue