mirror of
https://git.do.srb2.org/KartKrew/Kart-Public.git
synced 2024-12-25 20:01:04 +00:00
Don't use interpolation code if the frame lasts instantaneously or infinitely
Also removed the + 1 from newtime, since there was never really any need for it. It just offset the interpolation so it went like (1 -> 2] instead of [1 -> 2), so you never saw the base appearance for each frame except at the end of any frames interpolating to it Changed DrawMD2Ex's duration/tics type to INT32 so -1 comparisons work, probably want to change the signs elsewhere too but this is fine for now
This commit is contained in:
parent
1b576bacf3
commit
0cc8fbdb4e
1 changed files with 12 additions and 13 deletions
|
@ -1819,15 +1819,14 @@ EXPORT void HWRAPI(SetSpecialState) (hwdspecialstate_t IdState, INT32 Value)
|
|||
}
|
||||
}
|
||||
|
||||
static void DrawMD2Ex(INT32 *gl_cmd_buffer, md2_frame_t *frame, UINT32 duration, UINT32 tics, md2_frame_t *nextframe, FTransform *pos, float scale, UINT8 flipped, UINT8 *color)
|
||||
static void DrawMD2Ex(INT32 *gl_cmd_buffer, md2_frame_t *frame, INT32 duration, INT32 tics, md2_frame_t *nextframe, FTransform *pos, float scale, UINT8 flipped, UINT8 *color)
|
||||
{
|
||||
INT32 val, count, pindex;
|
||||
GLfloat s, t;
|
||||
GLfloat ambient[4];
|
||||
GLfloat diffuse[4];
|
||||
|
||||
float pol;
|
||||
UINT32 newtime;
|
||||
float pol = 0.0f;
|
||||
float scalex = scale, scaley = scale, scalez = scale;
|
||||
|
||||
// Because Otherwise, scaling the screen negatively vertically breaks the lighting
|
||||
|
@ -1835,18 +1834,18 @@ static void DrawMD2Ex(INT32 *gl_cmd_buffer, md2_frame_t *frame, UINT32 duration
|
|||
GLfloat LightPos[] = {0.0f, 1.0f, 0.0f, 0.0f};
|
||||
#endif
|
||||
|
||||
if (duration == 0)
|
||||
duration = 1;
|
||||
if (duration != 0 && duration != -1 && tics != -1) // don't interpolate if instantaneous or infinite in length
|
||||
{
|
||||
UINT32 newtime = (duration - tics); // + 1;
|
||||
|
||||
newtime = (duration - tics) + 1;
|
||||
pol = (newtime)/(float)duration;
|
||||
|
||||
pol = (newtime)/(float)duration;
|
||||
if (pol > 1.0f)
|
||||
pol = 1.0f;
|
||||
|
||||
if (pol > 1.0f)
|
||||
pol = 1.0f;
|
||||
|
||||
if (pol < 0.0f)
|
||||
pol = 0.0f;
|
||||
if (pol < 0.0f)
|
||||
pol = 0.0f;
|
||||
}
|
||||
|
||||
if (color)
|
||||
{
|
||||
|
@ -1940,7 +1939,7 @@ static void DrawMD2Ex(INT32 *gl_cmd_buffer, md2_frame_t *frame, UINT32 duration
|
|||
|
||||
pglTexCoord2f(s, t);
|
||||
|
||||
if (!nextframe)
|
||||
if (!nextframe || pol == 0.0f)
|
||||
{
|
||||
pglNormal3f(frame->vertices[pindex].normal[0],
|
||||
frame->vertices[pindex].normal[1],
|
||||
|
|
Loading…
Reference in a new issue