Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Lazy KeyFrames + Speed Controlled Keyframes + Pong Example #8

Merged
merged 15 commits into from
Mar 28, 2023
Merged

Conversation

13r0ck
Copy link
Contributor

@13r0ck 13r0ck commented Mar 22, 2023

Lazy Keyframes:
Lets an animation pick up where another previous animation
left off.

Speed Controlled Keyframes:
Control an animation by defining the speed that you would like
it to animate at, rather than the time which it should have
its value at.

Pong Example:
A game of pong. Also an example of the previous two new
features.

  • Some bug fixes and features to add to the pong example before release.

Lazy Keyframes:
  Lets an animation pick up where another previous animation
  left off.

Speed Controlled Keyframes:
  Control an animation by defining the speed that you would like
  it to animate at, rather than the time which it should have
  its value at.

Pong Example:
  A game of pong. Also an example of the previous two new
  features.
1. Optimizes the `start_at` logic. Caches keyframe times, rather
   than recalculating them for each `Frame`.
2. `Frame` now requires it's index in it's keyframe's chain.
3. Speed controlled frames actually work.
@13r0ck
Copy link
Contributor Author

13r0ck commented Mar 26, 2023

Most objectives on this PR have been solved. A few missing ones:

  • Fix bug with pong paddles speed not being constant with "speed controlled keyframes" when at the extremes of their animation
  • Clean up cosmic time imports. Macros probably
  • remove index value from keyframes. No longer necessary.
  • keyframes should return a vec, not an iterator. This skips an iter collect(), also no longer necessary.
  • Make the pong example playable (optional)

Using too large of a unit was causing the animations to jump
and/or seemingly animate at different rates. This was because
the animation speed was defined using Seconds, so any granularity
less than seconds was being dropped. Using per_millis was the fix.
Was left over from a previous API.
With recent changes to improve the `set_chain` and `start_at`
logic in `timeline.rs` the locgic wasn't iterating immedialy.
This meant that we had to collect the iterator into a vec in
`set_chain`. Which meant we were heap allocating twice for each
keyframe in the chain. By using `vec!` and
passign a vector to build `struct Chain`, that allocation can be
reused. Meaning only one heap allocation.
Cleans up a lot of the imports for cosmic-time aniomation
building.
Simplifies the animation code in the `view()`
This is for the goal of cleaning up the code code imports.
Building animations is now a lot cleaner.
@13r0ck 13r0ck marked this pull request as ready for review March 28, 2023 17:04
@13r0ck 13r0ck merged commit a315337 into main Mar 28, 2023
@13r0ck 13r0ck deleted the lazy branch March 28, 2023 17:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant