mobius3 / tweeny

A modern C++ tweening library
http://mobius3.github.io/tweeny
MIT License
742 stars 53 forks source link

Coroutine support #32

Open wxjz2 opened 2 years ago

wxjz2 commented 2 years ago

hi, Coroutine is powerful and convenient feature for animation scene. just like

await tweeny::from(130).to(130).during(300);

is there a plan to implement coroutine version?

mobius3 commented 2 years ago

Hello, there is no plan on supporting that. From what I gather (according to my own experience with await in other languages)

await tweeny::from(130).to(130).during(300);

is supposed to wait for the whole interpolation to finish before going on with the next statement? If that's the case, how is that desirable? I mean, it clearly sounds cool but I'm not sure how that's useful (I may be that ignorant), usually tweens are controlled elsewhere because animations tend to move forward regardless of other things happening in the code.

Moreover, at least judging by your code, who is going to step the tween? the coroutine? Tweeny itself has no notion of "frame", it has no self register for interpolations to interpolate, it does not calculate any kind of delta-time by itself, that is left for the application developer to do. If we are going to support this idiom, we'll need to keep track of time.

Maybe we can have a coroutine wrapper in an "extension" header that knows how to handle these things? Specially because that's not a core goal of tweeny, but would be a nice feature to have, if the use case is actually useful and pertinent.

I have a lot of catch-ups to do with the C++ standard so I don't see myself researching or working on this myself, so as for me, I have no plans on adding that.