ID:2388435
 
Resolved
Rounding errors in the mouse hit routines (due to a point structure based on integers) caused some objects to register mouse hits just outside of their actual bounds. The internal routines have been switched to use floating point for more accuracy.
BYOND Version:512.1441
Operating System:Windows 7 Ultimate 64-bit
Web Browser:Chrome 67.0.3396.99
Applies to:Dream Seeker
Status: Resolved (512.1443)

This issue has been resolved.
Descriptive Problem Summary:

When using a scaled up atom in the screen, the visual bounds for mouse picking appear to be inaccurate.

A test demo has been attached. It generates 100 randomly sized boxes in the client's screen. When one is hovered, its alpha value is increased to 255. Check the message log for bug messages showing when the mouse is outside of the object's bounds according to where I've calculated the extents should be.

I am pretty certain my math is correct.

http://files.byondhome.com/Ter13/testworld_mousebug_src.zip

In addition, there's an interesting oversight in how MouseDrag(), MouseMove(), etc. are called that's been exposed by the 500 series features. When moving a mouse over a scaled up sprite, MouseDrag()/MouseMove() are called less frequently than they would be with a larger sprite.

I believe that this is because the client is determining when it should send that information by using the calculated icon-x and icon-y values of the object under the mouse to check whether or not it should send those hooks.

This can cause some interesting problems when using a small-ish icon that's been scaled up to function as a catch-all for the client's mouse movement.

I would recommend instead that the client uses the screen-loc instead of icon-x to calculate when to send these calls, as that calculated value is no longer necessarily accurate enough thanks to the inclusion of matrices in the language.
I think I can also confirm this and this may also be an issue I'm having.
I can confirm the MouseDrag() and MouseMove() when they're scaled. I had to change my icons' size with another program as they wouldn't be detected all the time when scaled in-game. (I was using transform *= in order to update their size before)
Lummox JR resolved issue with message:
Rounding errors in the mouse hit routines (due to a point structure based on integers) caused some objects to register mouse hits just outside of their actual bounds. The internal routines have been switched to use floating point for more accuracy.