TodePond / ScreenPond

screens in screens in screens
https://screenpond.cool
MIT License
135 stars 7 forks source link

Yanking is broken #38

Closed TodePond closed 2 years ago

TodePond commented 2 years ago

The recent changes to warping+moving broke yanking at deeper levels. Not sure why :(

TodePond commented 2 years ago

Ok so the problem is this: the move and warp functions both CONTINUALLY try VERY HARD to place the screen in the place that they currently are. They aren't satisfied with the movement that has gone on - they don't care about doing things bit-by-bit. They say, "IT SHOULD BE HERE" and this causes the engine to freak out when it struggles to do that due to higher up screens making that impossible.

I think, before, I somehow just moved the screen WITHIN its own screen, rather than trying to re-place it down or something. I need to somehow allow it to move along each frame without freaking out.

It's ok if it loses a bit of accuracy! But also I think I can stick with the newer 'world-level' movement too (rather than revert to the old parent-level movement, which caused issues with warping). Combine the best of both worlds!

TodePond commented 2 years ago

some thoughts for after the weekend: move along the world-level somehow place into the parent-level

ah wait but isn't that actually what happens currently damn

base it off the starting point in parent-level so yeah, like go back to what it was before but then make the calculated DESIRED MOVEMENT along a different plane (ie: the world-level plane) - just needs an extra transformation at the end i think

TodePond commented 2 years ago

So yeah, just revert to the old method and try to add an extra step on the end or just before the end

TodePond commented 2 years ago

Oh wow all that fuss and it's fixed with one line:

hand.startCorners = getDrawnScreenFromRoute(pick.route).corners

This makes it 'recentre' itself on wherever the screen was moved to. This makes the moved-position relative, instead of absolute - which makes it forget about any long-term error.

TodePond commented 2 years ago

Warp yanking was still a bit broken. I simplified it to fix it - instead of warping the world, let's just move the world!