ID:2184873
 
BYOND Version:510
Operating System:Windows 10 Home
Web Browser:Chrome 54.0.2840.99
Applies to:DM Language
Status: Open

Issue hasn't been assigned a status value.
Descriptive Problem Summary:
When using animate() and supplying the new color matrix in list() form, it shifts the pixel offsets of the atom for the duration

Code Snippet (if applicable) to Reproduce Problem:
animate(src, color = list(0.3,0.3,0.3, 0.59,0.59,0.59, 0.11,0.11,0.11, -0.1,-0.1,-0.1), time = 1)

This may have already been fixed in 511. I'll need a demo project that shows the problem in action, but while you're getting that together I suggest giving the most recent 511 build a try.
I can't seem to reproduce it in a test environment, so it must have some weird interactions with something else. I'll poke around and see if I can figure anything out.
I'm absolutely uncertain, but it seems like color is being lumped into the atom's transform. Depending on the color matrix passed it modifies the pixel_x / pixel_y differently. This happens even when you pass the color as an rgb() or as an explicit value. The pixel offsets remain after the animate() has finished.
Bump. This issue is still present on 511. On further investigation with the help of the BYOND Discord we've discovered that it actually offsets the transform for the duration of the animation.

I have had no luck reproducing it in a test environment, but there is absolutely nothing it could be other than color animations - for example:
animate(src, color = list(0.3,0.3,0.3, 0.59,0.59,0.59, 0.11,0.11,0.11, -0.1,-0.1,-0.1), time = 1)

When that isn't included in the code, the transform is not offset. There are no other animations running in parallel that could be affecting it as well.

Here is a reference image
I need some kind of reproducible test project to deal with this. Otherwise there's no way to figure out what's going on.