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

@@ -192,24 +192,47 @@ public abstract class RSModelMixin implements RSModel
int translateZ; int translateZ;
if (type == 2) if (type == 2)
{ {
int deltaX = nextTranslateX - currentTranslateX & 0xFF; if (nextTranslateX != 0)
int deltaY = nextTranslateY - currentTranslateY & 0xFF;
int deltaZ = nextTranslateZ - currentTranslateZ & 0xFF;
if (deltaX >= 128)
{ {
deltaX -= 256; int deltaX = nextTranslateX - currentTranslateX & 0xFF;
if (deltaX >= 128)
{
deltaX -= 256;
}
translateX = currentTranslateX + deltaX * interval / intervalCount & 0xFF;
} }
if (deltaY >= 128) else
{ {
deltaY -= 256; translateX = currentTranslateX;
} }
if (deltaZ >= 128)
if (nextTranslateY != 0)
{ {
deltaZ -= 256; int deltaY = nextTranslateY - currentTranslateY & 0xFF;
if (deltaY >= 128)
{
deltaY -= 256;
}
translateY = currentTranslateY + deltaY * interval / intervalCount & 0xFF;
}
else
{
translateY = currentTranslateY;
}
if (nextTranslateZ != 0)
{
int deltaZ = nextTranslateZ - currentTranslateZ & 0xFF;
if (deltaZ >= 128)
{
deltaZ -= 256;
}
translateZ = currentTranslateZ + deltaZ * interval / intervalCount & 0xFF;
}
else
{
translateZ = currentTranslateZ;
} }
translateX = currentTranslateX + deltaX * interval / intervalCount & 0xFF;
translateY = currentTranslateY + deltaY * interval / intervalCount & 0xFF;
translateZ = currentTranslateZ + deltaZ * interval / intervalCount & 0xFF;
} }
else if (type == 5) else if (type == 5)
{ {