ID:2336862
 
Resolved
Fixing the translation issue with plane masters unintentionally broke other plane transforms such as scaling. Both have been corrected.
BYOND Version:512.1403
Operating System:Windows 7 Home Premium
Web Browser:Firefox 57.0
Applies to:Dream Seeker
Status: Resolved (512.1404)

This issue has been resolved.
Descriptive Problem Summary: Scaled planes position and clip strangely.

Code Snippet (if applicable) to Reproduce Problem:
turf
icon = '32px.dmi'
icon_state = "turf"
plane = 1

var
testTime = 40
obj/testPlane

world
icon_size = 32
maxx = 4
maxy = 4
maxz = 1
New()
. = ..()
testPlane = new(locate(1,1,1))
testPlane.plane = 1
testPlane.appearance_flags = PLANE_MASTER | PIXEL_SCALE
spawn(1)
while(src) // Run the test continually
animate(testPlane, transform = matrix().Scale(2), testTime)
sleep(testTime)
animate(testPlane, transform = matrix(), testTime)
sleep(testTime)

client/Center()
world.Reboot()


Expected Results: The map scaling while staying centered on the center of the client view.

Actual Results: The map translates up slightly and then turns downward, ending the animation with its bottom edge located 50% (of its scaled height) below the client view area. Also, the graphic gets clipped progressively as the animation continues. By the end, only the top quarter of the graphic is still visible.

Does the problem occur:
Every time? Or how often? Every Time
In other games? N/A
In other user accounts? Yes.
On other computers? Can't Test.

Did the problem NOT occur in any earlier versions? If so, what was the last version that worked? Seems to work okay in 1402.

Workarounds: None that I know of.

Dang. Do you have a quick test project of this? I can take a look Monday and try to square it with the fix from 1403.
The above code should be enough to test it. Just slap that into a new dme and provide a suitable '32px.dmi'. I'd put together a robust "acid test" if I understood the intended behavior. I'm running into these issues because I'm trying to understand how the numbers I feed DS translate into output.
At it's most basic level, if I have a graphic displayed at scale factor S, on the map at (x1,y1) (we'll ignore pixel/step/bound for now), a display with dimensions w/h centered on (x2,y2), and I want the graphic to display at (x3,y3) - how do I do that?

One of the weirdest things I'm running into is that display dimensions seem to make a huge difference. If a run a test with screen size 4x4, I get one result. If I add a screen object with screen_loc = "-4,-4 to 8,8" [clarification: not the item I'm transforming] and run the same test with otherwise the exact same code, I get dramatically stretched results. That boggles my mind.
I think I'm having a similar issue to this involving scaled plane. Previously (now downgraded back to 512.1402 until this is fixed) I had BYOND version 512.1403 installed and opening Kidpaddle45's Mouse Wheel Zoom library and notice this:


Bottom screen being 50% nothing but darkness.

Against the previous version 512.1402:


Lummox JR resolved issue with message:
Fixing the translation issue with plane masters unintentionally broke other plane transforms such as scaling. Both have been corrected.