Once FX3 kicks in everything is good but I stil get that awkward rotation of the loading image until PBY goes to the background and FX3 takes over.
Yeah, I figured that would probably be the case. The point of the "loading game" screen is, after all, to show something other than a blank screen while waiting for the game to put up its UI, so it's inherently going to be visible for however long it takes for the game to load. And your script that changes the monitor layout necessarily has to run before the game starts loading. What you *really* want is for FX3 to give you a scripting hook for "I'm going to show my UI window the instant this script returns", because that's the actual point where you want the monitor layout change to kick in. But I assume they don't give you such a hook, so we have to do this on the launcher side, which has no way of knowing when "I'm going to show my UI window in .0001 seconds" is. The points in time that we can exploit on the launcher side are:
- User selects Play Game command
- PinballY creates child process for game
- PinballY window loses activation (probably meaning game just opened its first window)
I don't see any point in there where you can do the rotation without having something rotated wrong, at least briefly. If you do it at the "user selects Play game command" point, which is effectively what you're doing with Run Before (1), you're going to change the layout while PinballY is still the active UI window, so PinballY is going to appear rotated. I.e., the current problem. If you do it at "PinballY loses activation", the "loading" message will stay correct, but FX3 will already have briefly appeared at the wrong rotation, so you'll get a glitchy moment where FX3 is screwy and then rights itself. So I don't see any way to time it exactly right.
Two possibilities come mind:
- Give you an option to remove the "loading" message entirely. Nothing appears rotated wrong because it's just a blank screen. Solves the problem but at the expense of losing the feature.
- Add a way to tell PinballY to rotate its layout when the script runs. Maybe a new command flag like [rotate(playfield,90)] . That way you could compensate for the display rotation by counter-rotating the PBY display. I think this would be easy to implement and seems like it might do the trick for this situation.
Before going down that road, do you suppose there's any way to bypass this whole issue by just getting FX3 to work in the same monitor rotation that you're using for other programs? Or, failing that, maybe everything else can work in the monitor rotation FX3 is forcing on you? PinballY will let you rotate any window in any orientation you want, and VP will let you show the playfield with any desired rotation..