animation smoothing: do not interpolate to angle 0

This fixes most of the issue with hellhounds (npc 104, anim 6566)
This commit is contained in:
Adam
2018-06-24 21:08:37 -04:00
parent 784d39324c
commit 68639d8932

View File

@@ -191,26 +191,49 @@ public abstract class RSModelMixin implements RSModel
int translateY; int translateY;
int translateZ; int translateZ;
if (type == 2) if (type == 2)
{
if (nextTranslateX != 0)
{ {
int deltaX = nextTranslateX - currentTranslateX & 0xFF; int deltaX = nextTranslateX - currentTranslateX & 0xFF;
int deltaY = nextTranslateY - currentTranslateY & 0xFF;
int deltaZ = nextTranslateZ - currentTranslateZ & 0xFF;
if (deltaX >= 128) if (deltaX >= 128)
{ {
deltaX -= 256; deltaX -= 256;
} }
translateX = currentTranslateX + deltaX * interval / intervalCount & 0xFF;
}
else
{
translateX = currentTranslateX;
}
if (nextTranslateY != 0)
{
int deltaY = nextTranslateY - currentTranslateY & 0xFF;
if (deltaY >= 128) if (deltaY >= 128)
{ {
deltaY -= 256; deltaY -= 256;
} }
translateY = currentTranslateY + deltaY * interval / intervalCount & 0xFF;
}
else
{
translateY = currentTranslateY;
}
if (nextTranslateZ != 0)
{
int deltaZ = nextTranslateZ - currentTranslateZ & 0xFF;
if (deltaZ >= 128) if (deltaZ >= 128)
{ {
deltaZ -= 256; deltaZ -= 256;
} }
translateX = currentTranslateX + deltaX * interval / intervalCount & 0xFF;
translateY = currentTranslateY + deltaY * interval / intervalCount & 0xFF;
translateZ = currentTranslateZ + deltaZ * interval / intervalCount & 0xFF; translateZ = currentTranslateZ + deltaZ * interval / intervalCount & 0xFF;
} }
else
{
translateZ = currentTranslateZ;
}
}
else if (type == 5) else if (type == 5)
{ {
// don't interpolate alpha transformations // don't interpolate alpha transformations