GitBrincie212 / Apel-Mod

Apel is a library that brings particle animations to the table with flexible behaviour and a clean developer interface. It promises also lots of predefined shapes & paths to help the developer on their particle scene
Other
2 stars 1 forks source link

Property Easing For Detailed Animation #54

Open GitBrincie212 opened 1 month ago

GitBrincie212 commented 1 month ago

Apel right now does things in a linear fashion, it can be just enough but in most cases, one might need to control the easing curve which is currently not possible without some interceptor trickery. So this is why i propose we use a Easable<...> where the ... is the type we want to ease and the Easable is an interface that implements CubedEase, QuadEase, SpringEase, BezierEase... etc. The ease functions take in the current rendering step and spit out the appropriate value. This basically is the same interface but the key change is instead of having a property something like Integer it is Easable<Integer> and both the developer as well as the user don't need to think much of the inner workings of easing, APEL will handle it accordingly. We should still support the way we change the properties, by inputting a normal integer for example it would resort into ConstantEase<Integer>

The syntax to the user would look like

object.setRotation(new CubicEase<>(...))

Helpful resources https://lisyarus.github.io/blog/posts/exponential-smoothing.html https://easings.net/ https://github.com/nicolausYes/easing-functions