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
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>
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 implementsCubedEase
,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 likeInteger
it isEasable<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 intoConstantEase<Integer>
The syntax to the user would look like
Helpful resources https://lisyarus.github.io/blog/posts/exponential-smoothing.html https://easings.net/ https://github.com/nicolausYes/easing-functions