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;
if (type == 2)
{
int deltaX = nextTranslateX - currentTranslateX & 0xFF;
int deltaY = nextTranslateY - currentTranslateY & 0xFF;
int deltaZ = nextTranslateZ - currentTranslateZ & 0xFF;
if (deltaX >= 128)
if (nextTranslateX != 0)
{
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)
{