Updates to use the new color method `withValues`.
---------
Co-authored-by: Lukas Klingsbo <lukas.klingsbo@gmail.com>
Co-authored-by: Jochum van der Ploeg <jochum@vdploeg.net>
Update cicd.yml file on flame_3d to match main.
Since we finally updated main, we should require no difference
whatsoever on this file anymore.
This will require downgrading all the color changes, which is fine. This
should never have been a part of flame_3d to begin with.
Files were "untouched" by checking out the exact version as they are in
main right now (will need to rebase flame_3d to main later). I had to
add a couple more files because the files on main had dependencies on
changes that are not yet rebased on flame_3d. These extra diffs should
disappear when I do the final rebase.
Update flame_noise to use the latest version of fast_noise, basically
replacing the Perlin-specific effect controller with a generic
`NoiseEffectController` that can take in any noise class (leveraging the
new Noise2 interface).
Just update from `PerlinNoiseEffectController` to
`NoiseEffectController` and provide the noise/parameters you want
directly into the `noise` field.
---------
Co-authored-by: Lukas Klingsbo <me@lukas.fyi>
`ColorEffect`'s API was a bit confusing because it used `Offset` for
getting values of opacity start and end from user. This PR changes that
to use optional `opacityFrom` and `opacityTo` double parameters. It also
adds validate checks on these value to make sure that are between 0 and
1.
This PR is the second in a series of refactors that aim to simplify event handling in Flame. The approach is as follows:
Added the MultiTapDispatcher component, which contains the logic that used to be within the HasTappableComponents mixin. This component is internal; it mounts to a FlameGame directly, and ensures that it is a singleton.
Whenever any TapCallbacks component is added to a game, it automatically adds the MultiTapDispatcher component (unless there is already one), which in turn registers a tap gesture detector with GestureDetectorBuilder and rebuilds the game widget.
The end result is that now in order to make a component tappable you only need to add the TapCallbacks mixin to that component, everything else will be handled by the framework.
Consequently, the HasTappableComponents mixin is now empty and marked as deprecated.
This:
* Deprecates the NoiseEffectController that is based on the deprecated
vector_math library impl
* Adds a new bridge package `flame_noise` to bridge fast noise
Note: the *goal* of this PR is to allow the immediate deprecation of the
old NoiseEffectController by providing an experimental, suitable
replacement. I believe the package flame_noise will look nothing like
this at all if I am able to land [some improvements to the underlying
fast_noise lib](https://github.com/frankpepermans/fast_noise/pull/5). We
will be able to have for example a generic NoiseEffectController.
However I believe we should merge this as an experimental package for
now to unblock removing the current implementation from Flame which is
negatively affecting our scores on pub. Therefore I would advise we
don't spend any time discussing specifics of how the API/impl provided
for the flame_noise, and just go with _something_ instead of nothing.
An effect controller that represents a single period of the sine function. Use this to create
natural-looking harmonic oscillations. Two perpendicular move effects governed by
SineEffectControllers with different periods, will create a [Lissajous curve].
Added SequenceEffect, which performs a series of other effects.
The biggest challenge in implementing this feature came from the need to run the sequence in reverse, due to the alternate flag. This required that every effect and every controller supported running "back in time", which is not as simple as it sounds.
The following breaking changes were introduced:
The Effect class no longer supports .reverse() method and .isReversed flag.
This flag was added only 2 weeks ago (
Effect controllers restructuring #1134), with the idea that it will be necessary for the SequenceEffect. However, as it turned out, this flag is not as helpful as I thought it would be. In fact, given the user's ability to change it any point, it makes the implementation very error-prone.
To be clear, the ability for each effect to run in reverse remains -- only now it can no longer be triggered by the user manually. Instead, SequenceEffect triggers that ability itself at the alternation point. If there is demand in the future to manually force any effect to run backwards, we could restore this flag, but this would require thorough testing to make it work correctly.
Infinite effects now return duration = double.infinity instead of null, which seems more appropriate.
Simple alternating effect controller. Over the course of one period, this controller will proceed
linearly from 0 to 1, then to -1, and then back to 0. Use this for oscillating effects where the
starting position should be the center of the oscillations, rather than the extreme (as provided
by the standard alternating EffectController).
* Added Component.childrenFactory
* fix some of the lint warnings
* more lint warnings
* remove changelog entry
* more analyzer warnings
* one more warning
* one more warning
* remove more unused imports
* fix more warnings
* another warning
* one more warning
* a lot more warnings
* some more warnings
* fix warnings in flame_svg
* fix warnings in flame_bloc
* Remove OrderedSet override feature
* Remove testRandom change
* Remove unnecessary type checks
* Re-remove deprecated argument in random_test
Co-authored-by: Pasha Stetsenko <stpasha@google.com>
* Implementing ColorEffect on the new effects system
* docs and test
* docs
* Apply suggestions from code review
Co-authored-by: Lukas Klingsbo <lukas.klingsbo@gmail.com>
* PR suggestions
Co-authored-by: Lukas Klingsbo <lukas.klingsbo@gmail.com>
* MoveAlongPathEffect separated from MoveEffect
* rename _lastPosition -> _lastOffset
* Added absolute= flag in MoveAlongPathEffect
* added test for absolute path
* add oriented= flag
* added test
* changelog
Co-authored-by: Lukas Klingsbo <lukas.klingsbo@gmail.com>
* OpacityEffect example
* Add OpacityEffect example
* Added test for OpacityEffect
* Added changelog entry
* Fix dartdocs
* Reset rounding errors between runs
* Fix test and rounding error
* Update rounding error calculation
* Rounding error should be private
* Bump test epsilon
* Added the `SizeEffect` and a general `ComponentEffect`
* Added changelog entry
* Format throw
* Fix analyze issue
* Fix Transform2DEffect test
* Apply suggestions from code review
Co-authored-by: Luan Nico <luanpotter27@gmail.com>
* Fix missing example parenthesis
* Fix according to comments
Co-authored-by: Luan Nico <luanpotter27@gmail.com>
* Animations, CameraAndViewport, CollisionDetection and Components unified
* Added descriptions to effects
* Rename input games
* Unify input stories
* Add info to parallax section
* Added descriptions to the rendering examples
* Add descriptions to the sprites directory
* Fix utils and rendering section
* Add descriptions to the widgets section
* Delete directory that rebase brought back
* Unify game names
* Added some styleguide docs for examples
* Fix analyze issues
* All files should have _example as suffix
* Made the FollowComponentExample a bit easier to understand
* Change priority of ember
* `ShapeComponent` changes size, position and angle of underlying Shape
* Added description to ShapeComponent
* Fix test
* Update packages/flame/lib/src/components/shape_component.dart
Co-authored-by: Erick <erickzanardoo@gmail.com>
* Add absoluteScale and absoluteAngle to PositionComponent
* Refactor ShapeComponent
* Should be scaled by total scale, not scaled size
* Premature optimization for creation for objects in Polygon
* Use path for default Polygon constructor
* Do not sync component and hitbox shape
* Fix analyze issue
* Add example for flipping with collision detection
* Don't use absoluteScale
* Fix examples
* Fix examples
* Doesn't need super.render
* Fix Circle dartdoc
* Update changelog
* Update names of vertices caches in Polygon
* Update text docs
* Revert "Update text docs"
This reverts commit 73a68a465d76eb0eb50bb3753e57b2f4e3b5a7f4.
* Fix examples
* ShapeComponents docs
* Move example games to the top
* Fix dartdoc comment about polygon vertex relation
* Fix order of polygon vertices in dartdoc
* Fix anchor for PolygonComponent.fromPoints
* Add test with ancestors
* Update doc/components.md
Co-authored-by: Pasha Stetsenko <stpasha@google.com>
* Update doc/components.md
Co-authored-by: Erick <erickzanardoo@gmail.com>
* Rename example classes
* Fix linting issues in examples
* Don't use px
* Use isTrue and isFalse
* Update doc/components.md
Co-authored-by: Erick <erickzanardoo@gmail.com>
* Fixed comments on PR
Co-authored-by: Erick <erickzanardoo@gmail.com>
Co-authored-by: Pasha Stetsenko <stpasha@google.com>
* Simplified the usage of ShapeComponent
* Default constructor for _RandomCircle
* Use default constructor
* Forced Anchor.center on ShapeComponent
* Fix examples using SquareComponent
* Removed unnecesary import
* Renamed edgeLength to size
* Added FlameAnimationController class
* Added MainAnimationController class
* Update doc comments
* formatting
* rename MainAnimationController
* Added tests for StandardAnimationController
* Added more tests
* comment
* Added changelog note
* Export StandardAnimationController
* formatting
* Use a default for 'curve' parameter
* rename onsetDelay -> startDelay
* Added Transofm2DEffect
* Added EffectComponent
* Added .transform getter
* formatting
* Rename EffectComponent -> Effect
* Add documentation for the Effect class
* minor
* Added a test for Effect class
* Adding tests for removeOnFinish
* Adding tests for onStart and onFinish
* Also check the effect after reset
* Fix-up merge
* formatting
* added doc-comments
* changelog note
* Added test for transform2DEffect
* Adjusted comments
* Make PositionComponent._transform public
* change changelog
* Adding RotateEffect
* wip on rotate2 example
* Rename -> RotateEffect2
* export rotation effect
* Finish example for RotateEffect2
* formatting
* rename RotateEffect2 -> RotateEffect
* Changelog note
* Added test file
* flutter format
* Remove a print() call
* _lastProgress moved to Transform2DEffect class
* remove avoid_print for now
* Moved description
* Initialize paints during construction
* Added a random test
* flutter format
Co-authored-by: Lukas Klingsbo <lukas.klingsbo@gmail.com>
* Added FlameAnimationController class
* Added MainAnimationController class
* Update doc comments
* formatting
* rename MainAnimationController
* Added tests for StandardAnimationController
* Added more tests
* comment
* Added changelog note
* Export StandardAnimationController
* formatting
* Use a default for 'curve' parameter
* rename onsetDelay -> startDelay
* Added Transofm2DEffect
* Added EffectComponent
* Added .transform getter
* formatting
* Rename EffectComponent -> Effect
* Add documentation for the Effect class
* minor
* Added a test for Effect class
* Adding tests for removeOnFinish
* Adding tests for onStart and onFinish
* Also check the effect after reset
* Fix-up merge
* formatting
* added doc-comments
* changelog note
* Added test for transform2DEffect
* Adjusted comments
* Make PositionComponent._transform public
* change changelog
* Added SimpleEffectController
* Added DestroyEffect
* Changelog note
* Rename DestroyEffect -> RemoveEffect
* Added example for RemoveEffect
* flutter format
* Move description of the RemoveEffectExample game
* move the description again
* minor
* Game as a component
* Fix component stories
* Effects are now components
* Update effects docs
* Handle swap of parent
* Fix reAddChildren
* Wait for children to be added
* BaseComponent and PositionComponent to be non-abstract
* Simplify HasGameRef
* Revert so that onLoad can be null
* Fix example description
* Effects as components
* Remove gameRef from addChildren
* Fix hasGameRef
* Start migrating effects
* Updated comments of effect fields
* Fix comments
* Continue to fix sequence and combined effects
* Upgrade ordered_set
* Fix position_component_test
* BaseComponent -> Component
* Fix combined and sequence effects
* Await components to be added in tests
* Remove unnecessary game.update in tests
* Fix some tests related to composition
* BaseGame should be used in examples
* Fix CombinedEffect test
* Keyboard code to be based on Component
* Fix keyboard tests
* Fix analyze problems
* Fix sequence_effect
* Fix combined_effect_test
* Store peak state instead of end state
* Fix sequence_effect tests
* Update tutorial
* Fix tutorial 1
* Remove SimplePositionComponentEffect
* Remove unused test variable
* Update docs
* Removed onMount
* Remove onMount
* Add missing dartdoc
* Fix dart docs
* Add super.update where needed
* Move reAddChildren to component
* Reorganize method order in game widget
* preOffset -> initialDelay, postOffset -> peakDelay
* Introduce component.onParentChange
* Remove tests in wrong file
* Fix composed component test
* Add game lifecycle test
* Use BaseGame for mouse cursor test
* Oxygen should (?) not call super.update
* Use BaseGame in keyboard_test
* Fix onLoad to be properly cached
* Re-add unintentionally removed override
* Fix info for collision detection tests
* Add test for correct lifecycle on parent change
* Fix particles example
* Add component lifecycle diagram to the docs
* Add docs for the game lifecycle
* onRemove should be called when a game is removed from the widget
* Fix analyze errors
* prepare should be called from the component itself, not its parent
* Fix dartdoc
* onParentChange -> onMount
* onMount should have void as return type
* Simplify the loaderFuture in GameWidget
* Fix mock_canvas
* Fix rebase problem
* Remove asComponent
* Less complex _loaderFuture
* Add super.update to no_fcs parallax example
* Fix async tests
* Revert _loaderFuture
* Fix analyze issues
* await gameWithCollidables
* Keep epsilon small where it can be
* tappable methods should return bool
* Game lifecycle is now the same as for Component
* Remove mustCallSuper from component.update
* Make onLoadCache protected
* @internal on onLoadCache
* Cache/Memoize debugPaint and debugTextPaint
* Fix imports
* Fix comments
* Always call super.onLoad so that mixins can override it
* Add forgotten super.onLoad
* Bump coverage percentage
* HasCollidables should override update
* Fix Game comments
* Fix some dartdoc
* Apply suggestions from code review
Co-authored-by: Erick <erickzanardoo@gmail.com>
* Game + Loadable as mixins
* Update packages/flame/lib/src/game/game_widget/game_widget.dart
Co-authored-by: Luan Nico <luanpotter27@gmail.com>
* Update loadable docs
* Fix comments
* Move fps_counter
* Fix keyboard example
* Fix dartdoc
* Remove tutorials temporarily
* Fix game lowlevel graph
* Fix resize issue
Co-authored-by: Erick <erickzanardoo@gmail.com>
Co-authored-by: Luan Nico <luanpotter27@gmail.com>
* Draft of PositionComponent.scale
* Use matrix transformations
* Update tests to take matrix transform into consideration
* Add tests for collision detection with scale
* Rename ScaleEffect to SizeEffect
* Use transform matrix to prepare canvas
* Fix scaledSizeCache
* Add changelog entries and docs
* Dartdoc on public access methods
* Update packages/flame/CHANGELOG.md
Co-authored-by: Jochum van der Ploeg <jochum@vdploeg.net>
* Move cache classes to own directory
Co-authored-by: Jochum van der Ploeg <jochum@vdploeg.net>
* Initial implementation of paint effects
* Improving HasPaint
* Adding color effect
* Adding exaustive tests for the HasPaint mixin
* Adding tests for the effects
* some adjustments
* Fixing some imports
* Adding docs
* Adding types to the has paint mixin
* Fixing constructor name for the opacity effect
* Apply suggestions from code review
Co-authored-by: Luan Nico <luanpotter27@gmail.com>
* Luan's suggestion
* Luan's comments
* formatting issues
* dartcodemetrics don't help me :(
* Adding assert
Co-authored-by: Luan Nico <luanpotter27@gmail.com>