gitextract_z4rtht8z/ ├── .github/ │ ├── .cspell/ │ │ ├── dart_dictionary.txt │ │ ├── flame_dictionary.txt │ │ ├── gamedev_dictionary.txt │ │ ├── people_usernames.txt │ │ ├── sphinx_dictionary.txt │ │ └── words_dictionary.txt │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.yml │ │ ├── config.yml │ │ ├── feature_request.yml │ │ └── improvement_suggestion.yml │ ├── cspell.json │ ├── pull_request_template.md │ └── workflows/ │ ├── cicd.yml │ ├── gh-pages.yml │ ├── release-prepare.yml │ ├── release-publish.yml │ ├── release-tag.yml │ ├── spell_checker.yml │ └── title-validation.yml ├── .gitignore ├── .markdownlint.yaml ├── .markdownlintignore ├── .readthedocs.yaml ├── CHANGELOG.md ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── doc/ │ ├── README.md │ ├── _sphinx/ │ │ ├── Makefile │ │ ├── conf.py │ │ ├── extensions/ │ │ │ ├── dart_domain.css │ │ │ ├── dart_domain.py │ │ │ ├── flutter_app.css │ │ │ ├── flutter_app.js │ │ │ ├── flutter_app.py │ │ │ ├── package.css │ │ │ ├── package.py │ │ │ ├── yarn_lexer.css │ │ │ └── yarn_lexer.py │ │ ├── kill-server.py │ │ ├── make.bat │ │ ├── requirements.txt │ │ ├── scripts/ │ │ │ ├── menu-expand.js │ │ │ └── versions.js │ │ └── theme/ │ │ ├── copy-button.css │ │ ├── doctools.js │ │ ├── flames.css │ │ ├── layout.html │ │ ├── search.html │ │ └── theme.conf │ ├── bridge_packages/ │ │ ├── bridge_packages.md │ │ ├── flame_3d/ │ │ │ ├── basic_concepts.md │ │ │ ├── flame_3d.md │ │ │ └── getting_started.md │ │ ├── flame_audio/ │ │ │ ├── audio.md │ │ │ ├── audio_pool.md │ │ │ ├── bgm.md │ │ │ └── flame_audio.md │ │ ├── flame_behaviors/ │ │ │ ├── collision-detection.md │ │ │ ├── conventions/ │ │ │ │ ├── coding-conventions.md │ │ │ │ └── naming-conventions.md │ │ │ ├── event-behaviors.md │ │ │ ├── flame_behaviors.md │ │ │ └── getting_started.md │ │ ├── flame_bloc/ │ │ │ ├── bloc.md │ │ │ ├── bloc_components.md │ │ │ └── flame_bloc.md │ │ ├── flame_console/ │ │ │ └── flame_console.md │ │ ├── flame_fire_atlas/ │ │ │ ├── fire_atlas.md │ │ │ └── flame_fire_atlas.md │ │ ├── flame_forge2d/ │ │ │ ├── flame_forge2d.md │ │ │ ├── forge2d.md │ │ │ └── joints.md │ │ ├── flame_isolate/ │ │ │ ├── flame_isolate.md │ │ │ └── isolate.md │ │ ├── flame_lottie/ │ │ │ └── flame_lottie.md │ │ ├── flame_network_assets/ │ │ │ └── flame_network_assets.md │ │ ├── flame_oxygen/ │ │ │ └── flame_oxygen.md │ │ ├── flame_rive/ │ │ │ ├── flame_rive.md │ │ │ └── rive.md │ │ ├── flame_riverpod/ │ │ │ ├── component.md │ │ │ ├── flame_riverpod.md │ │ │ ├── riverpod.md │ │ │ └── widget.md │ │ ├── flame_spine/ │ │ │ └── flame_spine.md │ │ ├── flame_splash_screen/ │ │ │ └── flame_splash_screen.md │ │ ├── flame_svg/ │ │ │ ├── flame_svg.md │ │ │ └── svg.md │ │ ├── flame_texturepacker/ │ │ │ └── flame_texturepacker.md │ │ └── flame_tiled/ │ │ ├── flame_tiled.md │ │ ├── layers.md │ │ └── tiled.md │ ├── development/ │ │ ├── contributing.md │ │ ├── development.md │ │ ├── documentation.md │ │ ├── style_guide.md │ │ └── testing_guide.md │ ├── flame/ │ │ ├── camera.md │ │ ├── collision_detection.md │ │ ├── components/ │ │ │ ├── components.md │ │ │ ├── parallax_component.md │ │ │ ├── position_component.md │ │ │ ├── shape_components.md │ │ │ ├── sprite_components.md │ │ │ └── utility_components.md │ │ ├── diagrams/ │ │ │ ├── component.md │ │ │ ├── component_life_cycle.md │ │ │ ├── flame_3d_components.md │ │ │ ├── flame_game_life_cycle.md │ │ │ └── low_level_game_api.md │ │ ├── effects/ │ │ │ ├── anchor_effects.md │ │ │ ├── color_effects.md │ │ │ ├── combined_effect.md │ │ │ ├── effect_controllers.md │ │ │ ├── effects.md │ │ │ ├── function_effect.md │ │ │ ├── move_effects.md │ │ │ ├── remove_effect.md │ │ │ ├── rotate_effects.md │ │ │ ├── scale_effects.md │ │ │ ├── sequence_effect.md │ │ │ └── size_effects.md │ │ ├── examples/ │ │ │ ├── analysis_options.yaml │ │ │ ├── assets/ │ │ │ │ ├── rewards.riv │ │ │ │ └── skills.riv │ │ │ ├── lib/ │ │ │ │ ├── anchor.dart │ │ │ │ ├── anchor_by_effect.dart │ │ │ │ ├── anchor_to_effect.dart │ │ │ │ ├── collision_detection.dart │ │ │ │ ├── color_effect.dart │ │ │ │ ├── decorator_blur.dart │ │ │ │ ├── decorator_grayscale.dart │ │ │ │ ├── decorator_hue.dart │ │ │ │ ├── decorator_rotate3d.dart │ │ │ │ ├── decorator_shadow3d.dart │ │ │ │ ├── decorator_tint.dart │ │ │ │ ├── drag_events.dart │ │ │ │ ├── ember.dart │ │ │ │ ├── flower.dart │ │ │ │ ├── glow_effect.dart │ │ │ │ ├── hue_effect.dart │ │ │ │ ├── main.dart │ │ │ │ ├── move_along_path_effect.dart │ │ │ │ ├── move_by_effect.dart │ │ │ │ ├── move_to_effect.dart │ │ │ │ ├── opacity_by_effect.dart │ │ │ │ ├── opacity_effect_with_target.dart │ │ │ │ ├── opacity_to_effect.dart │ │ │ │ ├── pointer_events.dart │ │ │ │ ├── post_process.dart │ │ │ │ ├── ray_cast.dart │ │ │ │ ├── ray_trace.dart │ │ │ │ ├── remove_effect.dart │ │ │ │ ├── rive_example.dart │ │ │ │ ├── rotate_around_effect.dart │ │ │ │ ├── rotate_by_effect.dart │ │ │ │ ├── rotate_to_effect.dart │ │ │ │ ├── router.dart │ │ │ │ ├── scale_by_effect.dart │ │ │ │ ├── scale_to_effect.dart │ │ │ │ ├── sequence_effect.dart │ │ │ │ ├── size_by_effect.dart │ │ │ │ ├── size_to_effect.dart │ │ │ │ ├── tap_events.dart │ │ │ │ ├── time_scale.dart │ │ │ │ └── value_route.dart │ │ │ ├── pubspec.yaml │ │ │ └── web/ │ │ │ └── index.html │ │ ├── flame.md │ │ ├── game.md │ │ ├── game_widget.md │ │ ├── inputs/ │ │ │ ├── drag_events.md │ │ │ ├── gesture_input.md │ │ │ ├── hardware_keyboard_detector.md │ │ │ ├── inputs.md │ │ │ ├── keyboard_input.md │ │ │ ├── other_inputs.md │ │ │ ├── pointer_events.md │ │ │ ├── scale_events.md │ │ │ └── tap_events.md │ │ ├── layout/ │ │ │ ├── align_component.md │ │ │ ├── column_component.md │ │ │ ├── expanded_component.md │ │ │ ├── layout.md │ │ │ ├── padding_component.md │ │ │ └── row_component.md │ │ ├── other/ │ │ │ ├── debug.md │ │ │ ├── other.md │ │ │ ├── performance.md │ │ │ ├── util.md │ │ │ └── widgets.md │ │ ├── overlays.md │ │ ├── platforms.md │ │ ├── rendering/ │ │ │ ├── decorators.md │ │ │ ├── images.md │ │ │ ├── layers.md │ │ │ ├── palette.md │ │ │ ├── particles.md │ │ │ ├── post_processing.md │ │ │ ├── rendering.md │ │ │ └── text_rendering.md │ │ ├── router.md │ │ └── structure.md │ ├── index.md │ ├── other_modules/ │ │ ├── jenny/ │ │ │ ├── jenny.md │ │ │ ├── language/ │ │ │ │ ├── commands/ │ │ │ │ │ ├── character.md │ │ │ │ │ ├── commands.md │ │ │ │ │ ├── declare.md │ │ │ │ │ ├── if.md │ │ │ │ │ ├── jump.md │ │ │ │ │ ├── local.md │ │ │ │ │ ├── set.md │ │ │ │ │ ├── stop.md │ │ │ │ │ ├── user_defined_commands.md │ │ │ │ │ ├── visit.md │ │ │ │ │ └── wait.md │ │ │ │ ├── expressions/ │ │ │ │ │ ├── expressions.md │ │ │ │ │ ├── functions/ │ │ │ │ │ │ ├── functions.md │ │ │ │ │ │ ├── misc.md │ │ │ │ │ │ ├── numeric.md │ │ │ │ │ │ ├── random.md │ │ │ │ │ │ └── type.md │ │ │ │ │ ├── operators.md │ │ │ │ │ └── variables.md │ │ │ │ ├── language.md │ │ │ │ ├── lines.md │ │ │ │ ├── markup.md │ │ │ │ ├── nodes.md │ │ │ │ └── options.md │ │ │ └── runtime/ │ │ │ ├── character.md │ │ │ ├── character_storage.md │ │ │ ├── command_storage.md │ │ │ ├── dialogue_choice.md │ │ │ ├── dialogue_line.md │ │ │ ├── dialogue_option.md │ │ │ ├── dialogue_runner.md │ │ │ ├── dialogue_view.md │ │ │ ├── function_storage.md │ │ │ ├── jenny_runtime.md │ │ │ ├── markup_attribute.md │ │ │ ├── node.md │ │ │ ├── user_defined_command.md │ │ │ ├── variable_storage.md │ │ │ └── yarn_project.md │ │ ├── other_modules.md │ │ └── oxygen/ │ │ ├── components.md │ │ └── oxygen.md │ ├── resources/ │ │ └── resources.md │ └── tutorials/ │ ├── bare_flame_game.md │ ├── basic_shader/ │ │ ├── basic_shader.md │ │ ├── step1.md │ │ ├── step2.md │ │ ├── step3.md │ │ ├── step4.md │ │ └── takeaways.md │ ├── klondike/ │ │ ├── app/ │ │ │ ├── analysis_options.yaml │ │ │ ├── lib/ │ │ │ │ ├── main.dart │ │ │ │ ├── step2/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── foundation.dart │ │ │ │ │ │ ├── pile.dart │ │ │ │ │ │ ├── stock.dart │ │ │ │ │ │ └── waste.dart │ │ │ │ │ ├── klondike_game.dart │ │ │ │ │ └── main.dart │ │ │ │ ├── step3/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── card.dart │ │ │ │ │ │ ├── foundation.dart │ │ │ │ │ │ ├── pile.dart │ │ │ │ │ │ ├── stock.dart │ │ │ │ │ │ └── waste.dart │ │ │ │ │ ├── klondike_game.dart │ │ │ │ │ ├── main.dart │ │ │ │ │ ├── rank.dart │ │ │ │ │ └── suit.dart │ │ │ │ ├── step4/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── card.dart │ │ │ │ │ │ ├── foundation_pile.dart │ │ │ │ │ │ ├── stock_pile.dart │ │ │ │ │ │ ├── tableau_pile.dart │ │ │ │ │ │ └── waste_pile.dart │ │ │ │ │ ├── klondike_game.dart │ │ │ │ │ ├── main.dart │ │ │ │ │ ├── pile.dart │ │ │ │ │ ├── rank.dart │ │ │ │ │ └── suit.dart │ │ │ │ └── step5/ │ │ │ │ ├── components/ │ │ │ │ │ ├── card.dart │ │ │ │ │ ├── flat_button.dart │ │ │ │ │ ├── foundation_pile.dart │ │ │ │ │ ├── stock_pile.dart │ │ │ │ │ ├── tableau_pile.dart │ │ │ │ │ └── waste_pile.dart │ │ │ │ ├── klondike_game.dart │ │ │ │ ├── klondike_world.dart │ │ │ │ ├── main.dart │ │ │ │ ├── pile.dart │ │ │ │ ├── rank.dart │ │ │ │ └── suit.dart │ │ │ ├── pubspec.yaml │ │ │ └── web/ │ │ │ └── index.html │ │ ├── klondike.md │ │ ├── step1.md │ │ ├── step2.md │ │ ├── step3.md │ │ ├── step4.md │ │ └── step5.md │ ├── platformer/ │ │ ├── app/ │ │ │ ├── analysis_options.yaml │ │ │ ├── lib/ │ │ │ │ ├── actors/ │ │ │ │ │ ├── ember.dart │ │ │ │ │ └── water_enemy.dart │ │ │ │ ├── ember_quest.dart │ │ │ │ ├── main.dart │ │ │ │ ├── managers/ │ │ │ │ │ └── segment_manager.dart │ │ │ │ ├── objects/ │ │ │ │ │ ├── ground_block.dart │ │ │ │ │ ├── platform_block.dart │ │ │ │ │ └── star.dart │ │ │ │ └── overlays/ │ │ │ │ ├── game_over.dart │ │ │ │ ├── heart.dart │ │ │ │ ├── hud.dart │ │ │ │ └── main_menu.dart │ │ │ ├── pubspec.yaml │ │ │ └── web/ │ │ │ └── index.html │ │ ├── platformer.md │ │ ├── step_1.md │ │ ├── step_2.md │ │ ├── step_3.md │ │ ├── step_4.md │ │ ├── step_5.md │ │ ├── step_6.md │ │ └── step_7.md │ ├── space_shooter/ │ │ ├── app/ │ │ │ ├── analysis_options.yaml │ │ │ ├── lib/ │ │ │ │ ├── main.dart │ │ │ │ ├── step1/ │ │ │ │ │ └── main.dart │ │ │ │ ├── step2/ │ │ │ │ │ └── main.dart │ │ │ │ ├── step3/ │ │ │ │ │ └── main.dart │ │ │ │ ├── step4/ │ │ │ │ │ └── main.dart │ │ │ │ ├── step5/ │ │ │ │ │ └── main.dart │ │ │ │ └── step6/ │ │ │ │ └── main.dart │ │ │ ├── pubspec.yaml │ │ │ └── web/ │ │ │ └── index.html │ │ ├── space_shooter.md │ │ ├── step_1.md │ │ ├── step_2.md │ │ ├── step_3.md │ │ ├── step_4.md │ │ ├── step_5.md │ │ └── step_6.md │ └── tutorials.md ├── examples/ │ ├── README.md │ ├── analysis_options.yaml │ ├── assets/ │ │ ├── audio/ │ │ │ └── music/ │ │ │ └── bg_music.ogg │ │ ├── images/ │ │ │ ├── animations/ │ │ │ │ ├── chopper.json │ │ │ │ └── lottieLogo.json │ │ │ └── parallax/ │ │ │ └── license.txt │ │ ├── spine/ │ │ │ ├── LICENSE │ │ │ ├── spineboy-pro.json │ │ │ ├── spineboy-pro.skel │ │ │ └── spineboy.atlas │ │ ├── tiles/ │ │ │ ├── 0x72_DungeonTilesetII_v1.4.tsx │ │ │ └── dungeon.tmx │ │ └── yarn/ │ │ ├── advanced.yarn │ │ ├── command_lifecycle.yarn │ │ └── simple.yarn │ ├── games/ │ │ ├── crystal_ball/ │ │ │ ├── README.md │ │ │ ├── analysis_options.yaml │ │ │ ├── lib/ │ │ │ │ ├── crystal_ball.dart │ │ │ │ ├── main.dart │ │ │ │ └── src/ │ │ │ │ └── game/ │ │ │ │ ├── components/ │ │ │ │ │ ├── camera_target.dart │ │ │ │ │ └── input_handler.dart │ │ │ │ ├── constants.dart │ │ │ │ ├── entities/ │ │ │ │ │ ├── ground.dart │ │ │ │ │ └── the_ball.dart │ │ │ │ ├── game.dart │ │ │ │ └── post_processes/ │ │ │ │ ├── ball_glow.dart │ │ │ │ ├── firefly.dart │ │ │ │ ├── foreground_fog.dart │ │ │ │ └── water.dart │ │ │ ├── pubspec.yaml │ │ │ └── shaders/ │ │ │ ├── firefly.frag │ │ │ ├── fog.frag │ │ │ ├── ground.frag │ │ │ └── the_ball.frag │ │ ├── padracing/ │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── analysis_options.yaml │ │ │ ├── lib/ │ │ │ │ ├── ball.dart │ │ │ │ ├── car.dart │ │ │ │ ├── game_colors.dart │ │ │ │ ├── game_over.dart │ │ │ │ ├── lap_line.dart │ │ │ │ ├── lap_text.dart │ │ │ │ ├── main.dart │ │ │ │ ├── menu.dart │ │ │ │ ├── menu_card.dart │ │ │ │ ├── padracing_game.dart │ │ │ │ ├── padracing_widget.dart │ │ │ │ ├── tire.dart │ │ │ │ ├── trail.dart │ │ │ │ └── wall.dart │ │ │ ├── pubspec.yaml │ │ │ └── scripts/ │ │ │ └── merge_files.sh │ │ ├── rogue_shooter/ │ │ │ ├── README.md │ │ │ ├── analysis_options.yaml │ │ │ ├── lib/ │ │ │ │ ├── components/ │ │ │ │ │ ├── bullet_component.dart │ │ │ │ │ ├── enemy_component.dart │ │ │ │ │ ├── enemy_creator.dart │ │ │ │ │ ├── explosion_component.dart │ │ │ │ │ ├── player_component.dart │ │ │ │ │ ├── star_background_creator.dart │ │ │ │ │ └── star_component.dart │ │ │ │ ├── main.dart │ │ │ │ ├── rogue_shooter_game.dart │ │ │ │ └── rogue_shooter_widget.dart │ │ │ └── pubspec.yaml │ │ └── trex/ │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── lib/ │ │ │ ├── background/ │ │ │ │ ├── cloud.dart │ │ │ │ ├── cloud_manager.dart │ │ │ │ └── horizon.dart │ │ │ ├── game_over.dart │ │ │ ├── main.dart │ │ │ ├── obstacle/ │ │ │ │ ├── obstacle.dart │ │ │ │ ├── obstacle_manager.dart │ │ │ │ └── obstacle_type.dart │ │ │ ├── player.dart │ │ │ ├── trex_game.dart │ │ │ └── trex_widget.dart │ │ └── pubspec.yaml │ ├── lib/ │ │ ├── commons/ │ │ │ ├── commons.dart │ │ │ └── ember.dart │ │ ├── main.dart │ │ ├── platform/ │ │ │ ├── page_provider.dart │ │ │ ├── stub_provider.dart │ │ │ └── web_provider.dart │ │ └── stories/ │ │ ├── animations/ │ │ │ ├── animation_group_example.dart │ │ │ ├── animations.dart │ │ │ ├── aseprite_example.dart │ │ │ ├── basic_animation_example.dart │ │ │ └── benchmark_example.dart │ │ ├── bridge_libraries/ │ │ │ ├── audio/ │ │ │ │ ├── audio.dart │ │ │ │ └── basic_audio_example.dart │ │ │ ├── flame_forge2d/ │ │ │ │ ├── animated_body_example.dart │ │ │ │ ├── blob_example.dart │ │ │ │ ├── camera_example.dart │ │ │ │ ├── composition_example.dart │ │ │ │ ├── contact_callbacks_example.dart │ │ │ │ ├── domino_example.dart │ │ │ │ ├── drag_callbacks_example.dart │ │ │ │ ├── flame_forge2d.dart │ │ │ │ ├── joints/ │ │ │ │ │ ├── constant_volume_joint.dart │ │ │ │ │ ├── distance_joint.dart │ │ │ │ │ ├── friction_joint.dart │ │ │ │ │ ├── gear_joint.dart │ │ │ │ │ ├── motor_joint.dart │ │ │ │ │ ├── mouse_joint.dart │ │ │ │ │ ├── prismatic_joint.dart │ │ │ │ │ ├── pulley_joint.dart │ │ │ │ │ ├── revolute_joint.dart │ │ │ │ │ ├── rope_joint.dart │ │ │ │ │ └── weld_joint.dart │ │ │ │ ├── raycast_example.dart │ │ │ │ ├── revolute_joint_with_motor_example.dart │ │ │ │ ├── sprite_body_example.dart │ │ │ │ ├── tap_callbacks_example.dart │ │ │ │ ├── utils/ │ │ │ │ │ ├── balls.dart │ │ │ │ │ ├── boundaries.dart │ │ │ │ │ └── boxes.dart │ │ │ │ └── widget_example.dart │ │ │ ├── flame_isolate/ │ │ │ │ ├── isolate.dart │ │ │ │ └── simple_isolate_example.dart │ │ │ ├── flame_jenny/ │ │ │ │ ├── commons/ │ │ │ │ │ └── commons.dart │ │ │ │ ├── components/ │ │ │ │ │ ├── button_row.dart │ │ │ │ │ ├── command_lifecycle_dialogue_controller.dart │ │ │ │ │ ├── dialogue_box.dart │ │ │ │ │ ├── dialogue_button.dart │ │ │ │ │ ├── dialogue_controller_component.dart │ │ │ │ │ ├── dialogue_text_box.dart │ │ │ │ │ └── menu_button.dart │ │ │ │ ├── jenny.dart │ │ │ │ ├── jenny_advanced_example.dart │ │ │ │ ├── jenny_command_lifecycle_example.dart │ │ │ │ └── jenny_simple_example.dart │ │ │ ├── flame_lottie/ │ │ │ │ ├── lottie.dart │ │ │ │ └── lottie_animation_example.dart │ │ │ └── flame_spine/ │ │ │ ├── basic_spine_example.dart │ │ │ ├── flame_spine.dart │ │ │ └── shared_data_spine_example.dart │ │ ├── camera_and_viewport/ │ │ │ ├── camera_and_viewport.dart │ │ │ ├── camera_component_example.dart │ │ │ ├── camera_component_properties_example.dart │ │ │ ├── camera_follow_and_world_bounds.dart │ │ │ ├── coordinate_systems_example.dart │ │ │ ├── fixed_resolution_example.dart │ │ │ ├── follow_component_example.dart │ │ │ ├── static_components_example.dart │ │ │ └── zoom_example.dart │ │ ├── collision_detection/ │ │ │ ├── bouncing_ball_example.dart │ │ │ ├── circles_example.dart │ │ │ ├── collidable_animation_example.dart │ │ │ ├── collision_detection.dart │ │ │ ├── multiple_shapes_example.dart │ │ │ ├── multiple_worlds_example.dart │ │ │ ├── quadtree_example.dart │ │ │ ├── raycast_example.dart │ │ │ ├── raycast_light_example.dart │ │ │ ├── raycast_max_distance_example.dart │ │ │ ├── rays_in_shape_example.dart │ │ │ └── raytrace_example.dart │ │ ├── components/ │ │ │ ├── clip_component_example.dart │ │ │ ├── component_pool_example.dart │ │ │ ├── components.dart │ │ │ ├── components_notifier_example.dart │ │ │ ├── components_notifier_provider_example.dart │ │ │ ├── composability_example.dart │ │ │ ├── debug_example.dart │ │ │ ├── has_visibility_example.dart │ │ │ ├── icon_component_example.dart │ │ │ ├── keys_example.dart │ │ │ ├── look_at_example.dart │ │ │ ├── look_at_smooth_example.dart │ │ │ ├── priority_example.dart │ │ │ ├── skip_text_box_component_example.dart │ │ │ ├── spawn_component_example.dart │ │ │ └── time_scale_example.dart │ │ ├── effects/ │ │ │ ├── color_effect_example.dart │ │ │ ├── combined_effect_example.dart │ │ │ ├── dual_effect_removal_example.dart │ │ │ ├── effect_controllers_example.dart │ │ │ ├── effects.dart │ │ │ ├── function_effect_example.dart │ │ │ ├── glow_effect_example.dart │ │ │ ├── hue_effect_example.dart │ │ │ ├── move_effect_example.dart │ │ │ ├── opacity_effect_example.dart │ │ │ ├── remove_effect_example.dart │ │ │ ├── rotate_around_effect_example.dart │ │ │ ├── rotate_effect_example.dart │ │ │ ├── scale_effect_example.dart │ │ │ ├── sequence_effect_example.dart │ │ │ └── size_effect_example.dart │ │ ├── experimental/ │ │ │ ├── experimental.dart │ │ │ ├── layout_component_example_1.dart │ │ │ ├── layout_component_example_2.dart │ │ │ ├── layout_component_example_3.dart │ │ │ ├── layout_component_example_size.dart │ │ │ └── shapes.dart │ │ ├── games/ │ │ │ └── games.dart │ │ ├── image/ │ │ │ ├── brighten.dart │ │ │ ├── darken.dart │ │ │ ├── image.dart │ │ │ └── resize.dart │ │ ├── input/ │ │ │ ├── advanced_button_example.dart │ │ │ ├── double_tap_callbacks_example.dart │ │ │ ├── drag_callbacks_example.dart │ │ │ ├── gesture_hitboxes_example.dart │ │ │ ├── hardware_keyboard_example.dart │ │ │ ├── hover_callbacks_example.dart │ │ │ ├── input.dart │ │ │ ├── joystick_advanced_example.dart │ │ │ ├── joystick_example.dart │ │ │ ├── joystick_player.dart │ │ │ ├── keyboard_example.dart │ │ │ ├── keyboard_listener_component_example.dart │ │ │ ├── mouse_cursor_example.dart │ │ │ ├── mouse_movement_example.dart │ │ │ ├── multitap_advanced_example.dart │ │ │ ├── multitap_example.dart │ │ │ ├── overlapping_tap_callbacks_example.dart │ │ │ ├── scale_example.dart │ │ │ ├── scroll_example.dart │ │ │ ├── secondary_tap_callbacks_example.dart │ │ │ └── tap_callbacks_example.dart │ │ ├── layout/ │ │ │ ├── align_component.dart │ │ │ └── layout.dart │ │ ├── parallax/ │ │ │ ├── advanced_parallax_example.dart │ │ │ ├── animation_parallax_example.dart │ │ │ ├── basic_parallax_example.dart │ │ │ ├── component_parallax_example.dart │ │ │ ├── no_fcs_parallax_example.dart │ │ │ ├── parallax.dart │ │ │ ├── sandbox_layer_parallax_example.dart │ │ │ └── small_parallax_example.dart │ │ ├── rendering/ │ │ │ ├── decorator_hue_example.dart │ │ │ ├── decorator_vs_effect_example.dart │ │ │ ├── decorators.dart │ │ │ ├── flip_sprite_example.dart │ │ │ ├── isometric_tile_map_example.dart │ │ │ ├── layers_example.dart │ │ │ ├── nine_tile_box_custom_grid_example.dart │ │ │ ├── nine_tile_box_example.dart │ │ │ ├── particles_example.dart │ │ │ ├── particles_interactive_example.dart │ │ │ ├── rendering.dart │ │ │ ├── rich_text_example.dart │ │ │ ├── text_box_example.dart │ │ │ └── text_example.dart │ │ ├── router/ │ │ │ ├── router.dart │ │ │ └── router_world_example.dart │ │ ├── sprites/ │ │ │ ├── base64_sprite_example.dart │ │ │ ├── basic_sprite_example.dart │ │ │ ├── sprite_batch_example.dart │ │ │ ├── sprite_batch_load_example.dart │ │ │ ├── sprite_group_example.dart │ │ │ ├── sprite_sheet_example.dart │ │ │ └── sprites.dart │ │ ├── structure/ │ │ │ ├── levels.dart │ │ │ └── structure.dart │ │ ├── svg/ │ │ │ ├── svg.dart │ │ │ └── svg_component.dart │ │ ├── system/ │ │ │ ├── overlays_example.dart │ │ │ ├── pause_resume_example.dart │ │ │ ├── resize_example.dart │ │ │ ├── step_engine_example.dart │ │ │ ├── system.dart │ │ │ └── without_flame_game_example.dart │ │ ├── tiled/ │ │ │ ├── flame_tiled_animation_example.dart │ │ │ └── tiled.dart │ │ ├── utils/ │ │ │ ├── timer_component_example.dart │ │ │ ├── timer_example.dart │ │ │ └── utils.dart │ │ └── widgets/ │ │ ├── custom_painter_example.dart │ │ ├── nine_tile_box_example.dart │ │ ├── nine_tile_box_example_with_animation.dart │ │ ├── paints.dart │ │ ├── partial_sprite_widget_example.dart │ │ ├── sprite_animation_widget_example.dart │ │ ├── sprite_button_example.dart │ │ ├── sprite_widget_example.dart │ │ └── widgets.dart │ ├── pubspec.yaml │ └── web/ │ ├── CNAME │ ├── index.html │ └── manifest.json ├── packages/ │ ├── README.md │ ├── flame/ │ │ ├── .min_coverage │ │ ├── .pubignore │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── analysis_options.yaml │ │ ├── benchmark/ │ │ │ ├── collision_detection_benchmark.dart │ │ │ ├── components_at_point_benchmark.dart │ │ │ ├── main.dart │ │ │ ├── render_components_benchmark.dart │ │ │ └── update_components_benchmark.dart │ │ ├── example/ │ │ │ ├── README.md │ │ │ ├── analysis_options.yaml │ │ │ ├── lib/ │ │ │ │ └── main.dart │ │ │ └── pubspec.yaml │ │ ├── extension/ │ │ │ └── devtools/ │ │ │ └── config.yaml │ │ ├── lib/ │ │ │ ├── cache.dart │ │ │ ├── camera.dart │ │ │ ├── collisions.dart │ │ │ ├── components.dart │ │ │ ├── debug.dart │ │ │ ├── devtools.dart │ │ │ ├── effects.dart │ │ │ ├── events.dart │ │ │ ├── experimental.dart │ │ │ ├── extensions.dart │ │ │ ├── flame.dart │ │ │ ├── game.dart │ │ │ ├── geometry.dart │ │ │ ├── image_composition.dart │ │ │ ├── input.dart │ │ │ ├── layers.dart │ │ │ ├── layout.dart │ │ │ ├── math.dart │ │ │ ├── palette.dart │ │ │ ├── parallax.dart │ │ │ ├── particles.dart │ │ │ ├── post_process.dart │ │ │ ├── rendering.dart │ │ │ ├── sprite.dart │ │ │ ├── src/ │ │ │ │ ├── anchor.dart │ │ │ │ ├── cache/ │ │ │ │ │ ├── assets_cache.dart │ │ │ │ │ ├── images.dart │ │ │ │ │ ├── matrix_pool.dart │ │ │ │ │ ├── memory_cache.dart │ │ │ │ │ └── value_cache.dart │ │ │ │ ├── camera/ │ │ │ │ │ ├── behaviors/ │ │ │ │ │ │ ├── bounded_position_behavior.dart │ │ │ │ │ │ ├── follow_behavior.dart │ │ │ │ │ │ └── viewport_aware_bounds_behavior.dart │ │ │ │ │ ├── camera_component.dart │ │ │ │ │ ├── viewfinder.dart │ │ │ │ │ ├── viewport.dart │ │ │ │ │ ├── viewports/ │ │ │ │ │ │ ├── circular_viewport.dart │ │ │ │ │ │ ├── fixed_aspect_ratio_viewport.dart │ │ │ │ │ │ ├── fixed_resolution_viewport.dart │ │ │ │ │ │ ├── fixed_size_viewport.dart │ │ │ │ │ │ └── max_viewport.dart │ │ │ │ │ └── world.dart │ │ │ │ ├── collisions/ │ │ │ │ │ ├── broadphase/ │ │ │ │ │ │ ├── broadphase.dart │ │ │ │ │ │ ├── prospect_pool.dart │ │ │ │ │ │ ├── quadtree/ │ │ │ │ │ │ │ ├── has_quadtree_collision_detection.dart │ │ │ │ │ │ │ ├── quad_tree_broadphase.dart │ │ │ │ │ │ │ ├── quadtree.dart │ │ │ │ │ │ │ └── quadtree_collision_detection.dart │ │ │ │ │ │ └── sweep/ │ │ │ │ │ │ └── sweep.dart │ │ │ │ │ ├── collision_callbacks.dart │ │ │ │ │ ├── collision_detection.dart │ │ │ │ │ ├── collision_passthrough.dart │ │ │ │ │ ├── has_collision_detection.dart │ │ │ │ │ ├── hitboxes/ │ │ │ │ │ │ ├── circle_hitbox.dart │ │ │ │ │ │ ├── composite_hitbox.dart │ │ │ │ │ │ ├── hitbox.dart │ │ │ │ │ │ ├── polygon_hitbox.dart │ │ │ │ │ │ ├── rectangle_hitbox.dart │ │ │ │ │ │ ├── screen_hitbox.dart │ │ │ │ │ │ └── shape_hitbox.dart │ │ │ │ │ └── standard_collision_detection.dart │ │ │ │ ├── components/ │ │ │ │ │ ├── clip_component.dart │ │ │ │ │ ├── component_pool.dart │ │ │ │ │ ├── components_notifier.dart │ │ │ │ │ ├── core/ │ │ │ │ │ │ ├── component.dart │ │ │ │ │ │ ├── component_key.dart │ │ │ │ │ │ ├── component_render_context.dart │ │ │ │ │ │ ├── component_tree_root.dart │ │ │ │ │ │ └── recycled_queue.dart │ │ │ │ │ ├── custom_painter_component.dart │ │ │ │ │ ├── debug/ │ │ │ │ │ │ ├── child_counter_component.dart │ │ │ │ │ │ └── time_track_component.dart │ │ │ │ │ ├── fps_component.dart │ │ │ │ │ ├── fps_text_component.dart │ │ │ │ │ ├── icon_component.dart │ │ │ │ │ ├── input/ │ │ │ │ │ │ ├── advanced_button_component.dart │ │ │ │ │ │ ├── button_component.dart │ │ │ │ │ │ ├── hud_button_component.dart │ │ │ │ │ │ ├── hud_margin_component.dart │ │ │ │ │ │ ├── joystick_component.dart │ │ │ │ │ │ ├── keyboard_listener_component.dart │ │ │ │ │ │ ├── sprite_button_component.dart │ │ │ │ │ │ └── toggle_button_component.dart │ │ │ │ │ ├── isometric_tile_map_component.dart │ │ │ │ │ ├── mixins/ │ │ │ │ │ │ ├── component_viewport_margin.dart │ │ │ │ │ │ ├── coordinate_transform.dart │ │ │ │ │ │ ├── gesture_hitboxes.dart │ │ │ │ │ │ ├── has_ancestor.dart │ │ │ │ │ │ ├── has_auto_batched_children.dart │ │ │ │ │ │ ├── has_decorator.dart │ │ │ │ │ │ ├── has_game_ref.dart │ │ │ │ │ │ ├── has_game_reference.dart │ │ │ │ │ │ ├── has_paint.dart │ │ │ │ │ │ ├── has_time_scale.dart │ │ │ │ │ │ ├── has_visibility.dart │ │ │ │ │ │ ├── has_world.dart │ │ │ │ │ │ ├── ignore_events.dart │ │ │ │ │ │ ├── keyboard_handler.dart │ │ │ │ │ │ ├── notifier.dart │ │ │ │ │ │ ├── parent_is_a.dart │ │ │ │ │ │ ├── single_child_particle.dart │ │ │ │ │ │ └── snapshot.dart │ │ │ │ │ ├── nine_tile_box_component.dart │ │ │ │ │ ├── parallax_component.dart │ │ │ │ │ ├── particle_system_component.dart │ │ │ │ │ ├── position_component.dart │ │ │ │ │ ├── raster_sprite_component.dart │ │ │ │ │ ├── router/ │ │ │ │ │ │ ├── overlay_route.dart │ │ │ │ │ │ ├── route.dart │ │ │ │ │ │ ├── router_component.dart │ │ │ │ │ │ ├── value_route.dart │ │ │ │ │ │ └── world_route.dart │ │ │ │ │ ├── scroll_text_box_component.dart │ │ │ │ │ ├── spawn_component.dart │ │ │ │ │ ├── sprite_animation_component.dart │ │ │ │ │ ├── sprite_animation_group_component.dart │ │ │ │ │ ├── sprite_batch_component.dart │ │ │ │ │ ├── sprite_component.dart │ │ │ │ │ ├── sprite_group_component.dart │ │ │ │ │ ├── text_box_component.dart │ │ │ │ │ ├── text_component.dart │ │ │ │ │ ├── text_element_component.dart │ │ │ │ │ └── timer_component.dart │ │ │ │ ├── device.dart │ │ │ │ ├── devtools/ │ │ │ │ │ ├── connectors/ │ │ │ │ │ │ ├── component_count_connector.dart │ │ │ │ │ │ ├── component_snapshot_connector.dart │ │ │ │ │ │ ├── component_tree_connector.dart │ │ │ │ │ │ ├── debug_mode_connector.dart │ │ │ │ │ │ ├── game_loop_connector.dart │ │ │ │ │ │ ├── overlay_navigation_connector.dart │ │ │ │ │ │ └── position_component_attributes_connector.dart │ │ │ │ │ ├── dev_tools_connector.dart │ │ │ │ │ └── dev_tools_service.dart │ │ │ │ ├── effects/ │ │ │ │ │ ├── anchor_by_effect.dart │ │ │ │ │ ├── anchor_effect.dart │ │ │ │ │ ├── anchor_to_effect.dart │ │ │ │ │ ├── color_effect.dart │ │ │ │ │ ├── combined_effect.dart │ │ │ │ │ ├── component_effect.dart │ │ │ │ │ ├── controllers/ │ │ │ │ │ │ ├── callback_controller.dart │ │ │ │ │ │ ├── combined_effect_controller.dart │ │ │ │ │ │ ├── curved_effect_controller.dart │ │ │ │ │ │ ├── delayed_effect_controller.dart │ │ │ │ │ │ ├── duration_effect_controller.dart │ │ │ │ │ │ ├── effect_controller.dart │ │ │ │ │ │ ├── infinite_effect_controller.dart │ │ │ │ │ │ ├── linear_effect_controller.dart │ │ │ │ │ │ ├── mixins/ │ │ │ │ │ │ │ └── has_single_child_effect_controller.dart │ │ │ │ │ │ ├── pause_effect_controller.dart │ │ │ │ │ │ ├── random_effect_controller.dart │ │ │ │ │ │ ├── repeated_effect_controller.dart │ │ │ │ │ │ ├── reverse_curved_effect_controller.dart │ │ │ │ │ │ ├── reverse_linear_effect_controller.dart │ │ │ │ │ │ ├── sequence_effect_controller.dart │ │ │ │ │ │ ├── sine_effect_controller.dart │ │ │ │ │ │ ├── speed_effect_controller.dart │ │ │ │ │ │ └── zigzag_effect_controller.dart │ │ │ │ │ ├── effect.dart │ │ │ │ │ ├── effect_target.dart │ │ │ │ │ ├── function_effect.dart │ │ │ │ │ ├── glow_effect.dart │ │ │ │ │ ├── hue_by_effect.dart │ │ │ │ │ ├── hue_effect.dart │ │ │ │ │ ├── hue_to_effect.dart │ │ │ │ │ ├── measurable_effect.dart │ │ │ │ │ ├── move_along_path_effect.dart │ │ │ │ │ ├── move_by_effect.dart │ │ │ │ │ ├── move_effect.dart │ │ │ │ │ ├── move_to_effect.dart │ │ │ │ │ ├── opacity_effect.dart │ │ │ │ │ ├── provider_interfaces.dart │ │ │ │ │ ├── remove_effect.dart │ │ │ │ │ ├── rotate_around_effect.dart │ │ │ │ │ ├── rotate_effect.dart │ │ │ │ │ ├── scale_effect.dart │ │ │ │ │ ├── sequence_effect.dart │ │ │ │ │ ├── size_effect.dart │ │ │ │ │ └── transform2d_effect.dart │ │ │ │ ├── events/ │ │ │ │ │ ├── component_mixins/ │ │ │ │ │ │ ├── double_tap_callbacks.dart │ │ │ │ │ │ ├── drag_callbacks.dart │ │ │ │ │ │ ├── hover_callbacks.dart │ │ │ │ │ │ ├── pointer_move_callbacks.dart │ │ │ │ │ │ ├── scale_callbacks.dart │ │ │ │ │ │ ├── secondary_tap_callbacks.dart │ │ │ │ │ │ └── tap_callbacks.dart │ │ │ │ │ ├── flame_drag_adapter.dart │ │ │ │ │ ├── flame_game_mixins/ │ │ │ │ │ │ ├── double_tap_dispatcher.dart │ │ │ │ │ │ ├── multi_drag_dispatcher.dart │ │ │ │ │ │ ├── multi_tap_dispatcher.dart │ │ │ │ │ │ ├── pointer_move_dispatcher.dart │ │ │ │ │ │ ├── scale_dispatcher.dart │ │ │ │ │ │ └── secondary_tap_dispatcher.dart │ │ │ │ │ ├── game_mixins/ │ │ │ │ │ │ ├── multi_touch_drag_detector.dart │ │ │ │ │ │ └── multi_touch_tap_detector.dart │ │ │ │ │ ├── hardware_keyboard_detector.dart │ │ │ │ │ ├── interfaces/ │ │ │ │ │ │ ├── multi_drag_listener.dart │ │ │ │ │ │ ├── multi_tap_listener.dart │ │ │ │ │ │ └── scale_listener.dart │ │ │ │ │ ├── messages/ │ │ │ │ │ │ ├── displacement_event.dart │ │ │ │ │ │ ├── double_tap_cancel_event.dart │ │ │ │ │ │ ├── double_tap_down_event.dart │ │ │ │ │ │ ├── double_tap_event.dart │ │ │ │ │ │ ├── drag_cancel_event.dart │ │ │ │ │ │ ├── drag_end_event.dart │ │ │ │ │ │ ├── drag_start_event.dart │ │ │ │ │ │ ├── drag_update_event.dart │ │ │ │ │ │ ├── event.dart │ │ │ │ │ │ ├── location_context_event.dart │ │ │ │ │ │ ├── pointer_move_event.dart │ │ │ │ │ │ ├── position_event.dart │ │ │ │ │ │ ├── scale_end_event.dart │ │ │ │ │ │ ├── scale_start_event.dart │ │ │ │ │ │ ├── scale_update_event.dart │ │ │ │ │ │ ├── secondary_tap_cancel_event.dart │ │ │ │ │ │ ├── secondary_tap_down_event.dart │ │ │ │ │ │ ├── secondary_tap_up_event.dart │ │ │ │ │ │ ├── tap_cancel_event.dart │ │ │ │ │ │ ├── tap_down_event.dart │ │ │ │ │ │ └── tap_up_event.dart │ │ │ │ │ ├── tagged_component.dart │ │ │ │ │ └── tap_config.dart │ │ │ │ ├── experimental/ │ │ │ │ │ ├── column_component.dart │ │ │ │ │ ├── expanded_component.dart │ │ │ │ │ ├── geometry/ │ │ │ │ │ │ └── shapes/ │ │ │ │ │ │ ├── circle.dart │ │ │ │ │ │ ├── polygon.dart │ │ │ │ │ │ ├── rectangle.dart │ │ │ │ │ │ ├── rounded_rectangle.dart │ │ │ │ │ │ └── shape.dart │ │ │ │ │ ├── layout_component.dart │ │ │ │ │ ├── linear_layout_component.dart │ │ │ │ │ ├── padding_component.dart │ │ │ │ │ ├── raycast_result.dart │ │ │ │ │ ├── row_component.dart │ │ │ │ │ └── single_layout_component.dart │ │ │ │ ├── extensions/ │ │ │ │ │ ├── aabb.dart │ │ │ │ │ ├── canvas.dart │ │ │ │ │ ├── color.dart │ │ │ │ │ ├── double.dart │ │ │ │ │ ├── fragment_shader.dart │ │ │ │ │ ├── image.dart │ │ │ │ │ ├── list.dart │ │ │ │ │ ├── matrix4.dart │ │ │ │ │ ├── offset.dart │ │ │ │ │ ├── paint.dart │ │ │ │ │ ├── path.dart │ │ │ │ │ ├── picture.dart │ │ │ │ │ ├── random.dart │ │ │ │ │ ├── rect.dart │ │ │ │ │ ├── rectangle.dart │ │ │ │ │ ├── size.dart │ │ │ │ │ └── vector2.dart │ │ │ │ ├── flame.dart │ │ │ │ ├── game/ │ │ │ │ │ ├── flame_game.dart │ │ │ │ │ ├── game.dart │ │ │ │ │ ├── game_loop.dart │ │ │ │ │ ├── game_render_box.dart │ │ │ │ │ ├── game_widget/ │ │ │ │ │ │ ├── game_widget.dart │ │ │ │ │ │ └── gesture_detector_builder.dart │ │ │ │ │ ├── mixins/ │ │ │ │ │ │ ├── has_performance_tracker.dart │ │ │ │ │ │ ├── keyboard.dart │ │ │ │ │ │ └── single_game_instance.dart │ │ │ │ │ ├── notifying_vector2.dart │ │ │ │ │ ├── overlay_manager.dart │ │ │ │ │ └── transform2d.dart │ │ │ │ ├── geometry/ │ │ │ │ │ ├── circle_component.dart │ │ │ │ │ ├── constants.dart │ │ │ │ │ ├── line.dart │ │ │ │ │ ├── line_segment.dart │ │ │ │ │ ├── polygon_component.dart │ │ │ │ │ ├── polygon_ray_intersection.dart │ │ │ │ │ ├── ray2.dart │ │ │ │ │ ├── rectangle_component.dart │ │ │ │ │ ├── shape_component.dart │ │ │ │ │ └── shape_intersections.dart │ │ │ │ ├── gestures/ │ │ │ │ │ ├── detectors.dart │ │ │ │ │ └── events.dart │ │ │ │ ├── image_composition.dart │ │ │ │ ├── layers/ │ │ │ │ │ ├── layer.dart │ │ │ │ │ └── processors.dart │ │ │ │ ├── layout/ │ │ │ │ │ └── align_component.dart │ │ │ │ ├── math/ │ │ │ │ │ ├── block.dart │ │ │ │ │ ├── random_fallback.dart │ │ │ │ │ ├── solve_cubic.dart │ │ │ │ │ ├── solve_quadratic.dart │ │ │ │ │ └── tmp_vector2.dart │ │ │ │ ├── nine_tile_box.dart │ │ │ │ ├── palette.dart │ │ │ │ ├── parallax.dart │ │ │ │ ├── particles/ │ │ │ │ │ ├── accelerated_particle.dart │ │ │ │ │ ├── circle_particle.dart │ │ │ │ │ ├── component_particle.dart │ │ │ │ │ ├── composed_particle.dart │ │ │ │ │ ├── computed_particle.dart │ │ │ │ │ ├── curved_particle.dart │ │ │ │ │ ├── image_particle.dart │ │ │ │ │ ├── moving_particle.dart │ │ │ │ │ ├── paint_particle.dart │ │ │ │ │ ├── particle.dart │ │ │ │ │ ├── rotating_particle.dart │ │ │ │ │ ├── scaled_particle.dart │ │ │ │ │ ├── scaling_particle.dart │ │ │ │ │ ├── sprite_animation_particle.dart │ │ │ │ │ ├── sprite_particle.dart │ │ │ │ │ └── translated_particle.dart │ │ │ │ ├── post_process/ │ │ │ │ │ ├── post_process.dart │ │ │ │ │ └── post_process_component.dart │ │ │ │ ├── rendering/ │ │ │ │ │ ├── decorator.dart │ │ │ │ │ ├── hue_decorator.dart │ │ │ │ │ ├── mutable_transform.dart │ │ │ │ │ ├── paint_decorator.dart │ │ │ │ │ ├── rotate3d_decorator.dart │ │ │ │ │ ├── shadow3d_decorator.dart │ │ │ │ │ └── transform2d_decorator.dart │ │ │ │ ├── sprite.dart │ │ │ │ ├── sprite_animation.dart │ │ │ │ ├── sprite_animation_ticker.dart │ │ │ │ ├── sprite_batch.dart │ │ │ │ ├── sprite_sheet.dart │ │ │ │ ├── text/ │ │ │ │ │ ├── common/ │ │ │ │ │ │ ├── glyph.dart │ │ │ │ │ │ ├── line_metrics.dart │ │ │ │ │ │ ├── sprite_font.dart │ │ │ │ │ │ └── utils.dart │ │ │ │ │ ├── elements/ │ │ │ │ │ │ ├── block_element.dart │ │ │ │ │ │ ├── group_element.dart │ │ │ │ │ │ ├── group_text_element.dart │ │ │ │ │ │ ├── inline_text_element.dart │ │ │ │ │ │ ├── rect_element.dart │ │ │ │ │ │ ├── rrect_element.dart │ │ │ │ │ │ ├── sprite_font_text_element.dart │ │ │ │ │ │ ├── text_element.dart │ │ │ │ │ │ └── text_painter_text_element.dart │ │ │ │ │ ├── nodes/ │ │ │ │ │ │ ├── block_node.dart │ │ │ │ │ │ ├── bold_text_node.dart │ │ │ │ │ │ ├── code_text_node.dart │ │ │ │ │ │ ├── column_node.dart │ │ │ │ │ │ ├── custom_text_node.dart │ │ │ │ │ │ ├── document_root.dart │ │ │ │ │ │ ├── group_text_node.dart │ │ │ │ │ │ ├── header_node.dart │ │ │ │ │ │ ├── inline_text_node.dart │ │ │ │ │ │ ├── italic_text_node.dart │ │ │ │ │ │ ├── paragraph_node.dart │ │ │ │ │ │ ├── plain_text_node.dart │ │ │ │ │ │ ├── strikethrough_text_node.dart │ │ │ │ │ │ ├── text_block_node.dart │ │ │ │ │ │ └── text_node.dart │ │ │ │ │ ├── renderers/ │ │ │ │ │ │ ├── sprite_font_renderer.dart │ │ │ │ │ │ ├── text_paint.dart │ │ │ │ │ │ ├── text_renderer.dart │ │ │ │ │ │ └── text_renderer_factory.dart │ │ │ │ │ └── styles/ │ │ │ │ │ ├── background_style.dart │ │ │ │ │ ├── block_style.dart │ │ │ │ │ ├── document_style.dart │ │ │ │ │ ├── flame_text_style.dart │ │ │ │ │ ├── inline_text_style.dart │ │ │ │ │ └── overflow.dart │ │ │ │ ├── timer.dart │ │ │ │ └── widgets/ │ │ │ │ ├── animation_widget.dart │ │ │ │ ├── base_future_builder.dart │ │ │ │ ├── components_notifier_builder.dart │ │ │ │ ├── nine_tile_box.dart │ │ │ │ ├── sprite_button.dart │ │ │ │ ├── sprite_painter.dart │ │ │ │ └── sprite_widget.dart │ │ │ ├── text.dart │ │ │ ├── timer.dart │ │ │ └── widgets.dart │ │ ├── pubspec.yaml │ │ └── test/ │ │ ├── _resources/ │ │ │ ├── cave_ace.fa │ │ │ ├── chopper.json │ │ │ ├── custom_flame_game.dart │ │ │ ├── load_image.dart │ │ │ └── test_text_file.txt │ │ ├── anchor_test.dart │ │ ├── cache/ │ │ │ ├── assets_cache_test.dart │ │ │ ├── images_test.dart │ │ │ └── memory_cache_test.dart │ │ ├── camera/ │ │ │ ├── behaviors/ │ │ │ │ ├── bounded_position_behavior_test.dart │ │ │ │ ├── follow_behavior_test.dart │ │ │ │ └── viewport_aware_bounds_behavior_test.dart │ │ │ ├── camera_component_test.dart │ │ │ ├── camera_test_helpers.dart │ │ │ ├── viewfinder_test.dart │ │ │ ├── viewports/ │ │ │ │ ├── circular_viewport_test.dart │ │ │ │ ├── fixed_aspect_ratio_viewport_test.dart │ │ │ │ ├── fixed_resolution_viewport_test.dart │ │ │ │ ├── fixed_size_viewport_test.dart │ │ │ │ └── max_viewport_test.dart │ │ │ └── world_test.dart │ │ ├── collisions/ │ │ │ ├── collision_callback_benchmark_test.dart │ │ │ ├── collision_callback_test.dart │ │ │ ├── collision_detection_test.dart │ │ │ ├── collision_passthrough_test.dart │ │ │ ├── collision_test_helpers.dart │ │ │ ├── collision_type_test.dart │ │ │ └── screen_hibox_test.dart │ │ ├── components/ │ │ │ ├── advanced_button_component_test.dart │ │ │ ├── button_component_test.dart │ │ │ ├── clip_component_test.dart │ │ │ ├── component_pool_test.dart │ │ │ ├── component_render_context_test.dart │ │ │ ├── component_test.dart │ │ │ ├── components_notifier_test.dart │ │ │ ├── custom_painter_component_test.dart │ │ │ ├── element_component_test.dart │ │ │ ├── fps_component_test.dart │ │ │ ├── has_auto_batched_children_test.dart │ │ │ ├── hud_button_component_test.dart │ │ │ ├── hud_margin_component_test.dart │ │ │ ├── icon_component_test.dart │ │ │ ├── input/ │ │ │ │ └── sprite_button_component_test.dart │ │ │ ├── isometric_tile_map_component_test.dart │ │ │ ├── joystick_component_test.dart │ │ │ ├── keyboard_listener_component_test.dart │ │ │ ├── mixins/ │ │ │ │ ├── component_viewport_margin_test.dart │ │ │ │ ├── gesture_hitboxes_test.dart │ │ │ │ ├── has_ancestor_test.dart │ │ │ │ ├── has_decorator_test.dart │ │ │ │ ├── has_game_ref_test.dart │ │ │ │ ├── has_paint_test.dart │ │ │ │ ├── has_time_scale_test.dart │ │ │ │ ├── has_visibility_test.dart │ │ │ │ ├── parent_is_a_test.dart │ │ │ │ └── snapshot_test.dart │ │ │ ├── parallax_test.dart │ │ │ ├── particle_system_component_test.dart │ │ │ ├── position_component_test.dart │ │ │ ├── post_process_component_test.dart │ │ │ ├── priority_test.dart │ │ │ ├── rectangle_component_test.dart │ │ │ ├── route_test.dart │ │ │ ├── router_component_test.dart │ │ │ ├── scroll_text_box_component_test.dart │ │ │ ├── shape_component_test.dart │ │ │ ├── spawn_component_test.dart │ │ │ ├── sprite_animation_component_test.dart │ │ │ ├── sprite_animation_group_component_test.dart │ │ │ ├── sprite_component_test.dart │ │ │ ├── sprite_group_component_test.dart │ │ │ ├── text_box_component_test.dart │ │ │ ├── text_component_test.dart │ │ │ ├── timer_component_test.dart │ │ │ ├── toogle_button_component_test.dart │ │ │ ├── value_route_test.dart │ │ │ └── world_route_test.dart │ │ ├── custom_component.dart │ │ ├── effects/ │ │ │ ├── anchor_by_effect_test.dart │ │ │ ├── anchor_to_effect_test.dart │ │ │ ├── color_effect_test.dart │ │ │ ├── combined_effect_test.dart │ │ │ ├── controllers/ │ │ │ │ ├── curved_effect_controller_test.dart │ │ │ │ ├── delayed_effect_controller_test.dart │ │ │ │ ├── effect_controller_test.dart │ │ │ │ ├── infinite_effect_controller_test.dart │ │ │ │ ├── linear_effect_controller_test.dart │ │ │ │ ├── mixins/ │ │ │ │ │ └── has_single_child_effect_controller_test.dart │ │ │ │ ├── random_effect_controller_test.dart │ │ │ │ ├── repeated_effect_controller_test.dart │ │ │ │ ├── sequence_effect_controller_test.dart │ │ │ │ ├── sine_effect_controller_test.dart │ │ │ │ ├── speed_effect_controller_test.dart │ │ │ │ └── zigzag_effect_controller_test.dart │ │ │ ├── effect_test.dart │ │ │ ├── function_effect_test.dart │ │ │ ├── glow_effect.dart │ │ │ ├── hue_effect_test.dart │ │ │ ├── move_along_path_effect_test.dart │ │ │ ├── move_by_effect_test.dart │ │ │ ├── move_to_effect_test.dart │ │ │ ├── opacity_effect_test.dart │ │ │ ├── remove_effect_test.dart │ │ │ ├── rotate_around_effect_test.dart │ │ │ ├── rotate_effect_test.dart │ │ │ ├── scale_effect_test.dart │ │ │ ├── sequence_effect_test.dart │ │ │ ├── size_effect_test.dart │ │ │ └── transform2d_effect_test.dart │ │ ├── events/ │ │ │ ├── component_mixins/ │ │ │ │ ├── double_tap_callbacks_test.dart │ │ │ │ ├── drag_callbacks_test.dart │ │ │ │ ├── hover_callbacks_test.dart │ │ │ │ ├── ignore_events_test.dart │ │ │ │ ├── pointer_move_callbacks_test.dart │ │ │ │ ├── scale_callbacks_test.dart │ │ │ │ ├── secondary_tap_callbacks_test.dart │ │ │ │ └── tap_callbacks_test.dart │ │ │ ├── game_mixins/ │ │ │ │ ├── multi_touch_drag_detector_test.dart │ │ │ │ └── multi_touch_tap_detector_test.dart │ │ │ ├── hardware_keyboard_detector_test.dart │ │ │ └── tap_config_test.dart │ │ ├── experimental/ │ │ │ ├── geometry/ │ │ │ │ └── shapes/ │ │ │ │ ├── circle_test.dart │ │ │ │ ├── polygon_test.dart │ │ │ │ ├── rectangle_test.dart │ │ │ │ └── rounded_rectangle_test.dart │ │ │ ├── has_game_reference_test.dart │ │ │ ├── has_world_test.dart │ │ │ ├── linear_layout_component_test.dart │ │ │ ├── linear_layout_component_test_helpers.dart │ │ │ └── padding_component_test.dart │ │ ├── extensions/ │ │ │ ├── aabb_test.dart │ │ │ ├── canvas_test.dart │ │ │ ├── color_test.dart │ │ │ ├── double_test.dart │ │ │ ├── image_extension_test.dart │ │ │ ├── list_test.dart │ │ │ ├── matrix4_test.dart │ │ │ ├── offset_test.dart │ │ │ ├── paint_test.dart │ │ │ ├── picture_extension_test.dart │ │ │ ├── random_test.dart │ │ │ ├── rect_test.dart │ │ │ ├── rectangle_test.dart │ │ │ ├── size_test.dart │ │ │ └── vector2_test.dart │ │ ├── fixtures/ │ │ │ └── fixture_reader.dart │ │ ├── game/ │ │ │ ├── flame_game_test.dart │ │ │ ├── game_loop_test.dart │ │ │ ├── game_render_box_test.dart │ │ │ ├── game_widget/ │ │ │ │ ├── game_widget_controlled_lifecycle_test.dart │ │ │ │ ├── game_widget_drag_test.dart │ │ │ │ ├── game_widget_hot_reload_test.dart │ │ │ │ ├── game_widget_keyboard_test.dart │ │ │ │ ├── game_widget_lifecycle_test.dart │ │ │ │ ├── game_widget_mouse_cursor_test.dart │ │ │ │ ├── game_widget_pause_test.dart │ │ │ │ ├── game_widget_tap_passthrough_test.dart │ │ │ │ ├── game_widget_tap_test.dart │ │ │ │ └── game_widget_test.dart │ │ │ ├── mixins/ │ │ │ │ ├── has_performance_tracker_test.dart │ │ │ │ ├── keyboard_test.dart │ │ │ │ └── single_game_instance_test.dart │ │ │ ├── notifying_vector2_test.dart │ │ │ ├── overlays_manager_test.dart │ │ │ └── transform2d_test.dart │ │ ├── geometry/ │ │ │ ├── line_segment_test.dart │ │ │ └── ray2_test.dart │ │ ├── gestures/ │ │ │ └── detectors_test.dart │ │ ├── image_composition_test.dart │ │ ├── layout/ │ │ │ └── align_component_test.dart │ │ ├── math/ │ │ │ ├── recycled_queue_test.dart │ │ │ ├── solve_cubic_test.dart │ │ │ └── solve_quadratic_test.dart │ │ ├── nine_tile_box_test.dart │ │ ├── particles/ │ │ │ ├── circle_particle_test.dart │ │ │ ├── component_particle_test.dart │ │ │ ├── composed_particle_test.dart │ │ │ ├── computed_particle_test.dart │ │ │ ├── curved_particle_test.dart │ │ │ ├── moving_particle_test.dart │ │ │ ├── scaled_particle_test.dart │ │ │ ├── scaling_particle_test.dart │ │ │ └── sprite_particle_test.dart │ │ ├── post_process/ │ │ │ └── post_process_test.dart │ │ ├── raster_sprite_test.dart │ │ ├── rendering/ │ │ │ ├── hue_decorator_test.dart │ │ │ ├── paint_decorator_test.dart │ │ │ ├── rotate3d_decorator_test.dart │ │ │ └── shadow3d_decorator_test.dart │ │ ├── sprite_animation_test.dart │ │ ├── sprite_animation_ticker_test.dart │ │ ├── sprite_batch_test.dart │ │ ├── sprite_test.dart │ │ ├── spritesheet_test.dart │ │ ├── text/ │ │ │ ├── common/ │ │ │ │ ├── line_metrics_test.dart │ │ │ │ └── sprite_font_test.dart │ │ │ ├── sprite_font_renderer_test.dart │ │ │ ├── text_element_test.dart │ │ │ ├── text_layouting_test.dart │ │ │ ├── text_paint_test.dart │ │ │ ├── text_renderer_test.dart │ │ │ └── text_style_test.dart │ │ ├── timer_test.dart │ │ └── widgets/ │ │ ├── components_notifier_builder_test.dart │ │ ├── loading_widget.dart │ │ ├── nine_tile_box_widget_test.dart │ │ ├── sprite_animation_widget_test.dart │ │ ├── sprite_button_test.dart │ │ └── sprite_widget_test.dart │ ├── flame_3d/ │ │ ├── CHANGELOG.md │ │ ├── CONTRIBUTING.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── ROADMAP.md │ │ ├── analysis_options.yaml │ │ ├── assets/ │ │ │ └── shaders/ │ │ │ └── spatial_material.shaderbundle │ │ ├── bin/ │ │ │ └── build_shaders.dart │ │ ├── example/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── analysis_options.yaml │ │ │ ├── assets/ │ │ │ │ └── objects/ │ │ │ │ └── skeleton.glb │ │ │ ├── lib/ │ │ │ │ ├── commands/ │ │ │ │ │ ├── commands.dart │ │ │ │ │ ├── destroy_command.dart │ │ │ │ │ ├── reset_command.dart │ │ │ │ │ └── setup_command.dart │ │ │ │ ├── components/ │ │ │ │ │ ├── crate.dart │ │ │ │ │ ├── player.dart │ │ │ │ │ ├── rendered_point_light.dart │ │ │ │ │ ├── room_bounds.dart │ │ │ │ │ ├── rotating_light.dart │ │ │ │ │ └── simple_hud.dart │ │ │ │ ├── example_camera_3d.dart │ │ │ │ ├── example_game_3d.dart │ │ │ │ ├── keyboard_utils.dart │ │ │ │ ├── main.dart │ │ │ │ └── scenarios/ │ │ │ │ ├── boxes_scenario.dart │ │ │ │ ├── colors_scenario.dart │ │ │ │ ├── game_scenario.dart │ │ │ │ └── models_scenario.dart │ │ │ └── pubspec.yaml │ │ ├── lib/ │ │ │ ├── camera.dart │ │ │ ├── components.dart │ │ │ ├── core.dart │ │ │ ├── extensions.dart │ │ │ ├── game.dart │ │ │ ├── graphics.dart │ │ │ ├── model.dart │ │ │ ├── parser.dart │ │ │ ├── resources.dart │ │ │ └── src/ │ │ │ ├── camera/ │ │ │ │ ├── camera_component_3d.dart │ │ │ │ ├── first_person_camera.dart │ │ │ │ ├── third_person_camera.dart │ │ │ │ └── world_3d.dart │ │ │ ├── components/ │ │ │ │ ├── component_3d.dart │ │ │ │ ├── light_component.dart │ │ │ │ ├── line_3d.dart │ │ │ │ ├── mesh_component.dart │ │ │ │ └── object_3d.dart │ │ │ ├── extensions/ │ │ │ │ ├── aabb3.dart │ │ │ │ ├── color.dart │ │ │ │ ├── matrix4.dart │ │ │ │ ├── quaternion.dart │ │ │ │ ├── vector2.dart │ │ │ │ ├── vector3.dart │ │ │ │ └── vector4.dart │ │ │ ├── game/ │ │ │ │ ├── flame_game_3d.dart │ │ │ │ ├── notifying_quaternion.dart │ │ │ │ ├── notifying_vector3.dart │ │ │ │ └── transform_3d.dart │ │ │ ├── graphics/ │ │ │ │ ├── gpu_context_wrapper.dart │ │ │ │ ├── graphics_device.dart │ │ │ │ └── joints_info.dart │ │ │ ├── model/ │ │ │ │ ├── animation_state.dart │ │ │ │ ├── model.dart │ │ │ │ ├── model_animation.dart │ │ │ │ ├── model_component.dart │ │ │ │ └── model_node.dart │ │ │ ├── parser/ │ │ │ │ ├── glb_parser.dart │ │ │ │ ├── gltf/ │ │ │ │ │ ├── accessor.dart │ │ │ │ │ ├── accessor_type.dart │ │ │ │ │ ├── alpha_mode.dart │ │ │ │ │ ├── animation.dart │ │ │ │ │ ├── animation_channel.dart │ │ │ │ │ ├── animation_interpolation.dart │ │ │ │ │ ├── animation_path.dart │ │ │ │ │ ├── animation_sampler.dart │ │ │ │ │ ├── animation_target.dart │ │ │ │ │ ├── buffer.dart │ │ │ │ │ ├── buffer_view.dart │ │ │ │ │ ├── buffer_view_target.dart │ │ │ │ │ ├── camera.dart │ │ │ │ │ ├── camera_orthographic.dart │ │ │ │ │ ├── camera_perspective.dart │ │ │ │ │ ├── camera_type.dart │ │ │ │ │ ├── component_type.dart │ │ │ │ │ ├── glb_chunk.dart │ │ │ │ │ ├── gltf_node.dart │ │ │ │ │ ├── gltf_node_with_data.dart │ │ │ │ │ ├── gltf_ref.dart │ │ │ │ │ ├── gltf_root.dart │ │ │ │ │ ├── image.dart │ │ │ │ │ ├── mag_filter.dart │ │ │ │ │ ├── material.dart │ │ │ │ │ ├── mesh.dart │ │ │ │ │ ├── mime_type.dart │ │ │ │ │ ├── min_filter.dart │ │ │ │ │ ├── morph_target.dart │ │ │ │ │ ├── node.dart │ │ │ │ │ ├── normal_texture_info.dart │ │ │ │ │ ├── occlusion_texture_info.dart │ │ │ │ │ ├── pbr_metallic_roughness.dart │ │ │ │ │ ├── primitive.dart │ │ │ │ │ ├── primitive_mode.dart │ │ │ │ │ ├── sampler.dart │ │ │ │ │ ├── scene.dart │ │ │ │ │ ├── skin.dart │ │ │ │ │ ├── sparse_accessor.dart │ │ │ │ │ ├── sparse_accessor_indices.dart │ │ │ │ │ ├── sparse_accessor_values.dart │ │ │ │ │ ├── texture.dart │ │ │ │ │ ├── texture_format.dart │ │ │ │ │ ├── texture_info.dart │ │ │ │ │ ├── texture_target.dart │ │ │ │ │ ├── texture_type.dart │ │ │ │ │ └── wrap_mode.dart │ │ │ │ ├── gltf_parser.dart │ │ │ │ ├── model_parser.dart │ │ │ │ ├── obj/ │ │ │ │ │ └── surface_tool.dart │ │ │ │ └── obj_parser.dart │ │ │ └── resources/ │ │ │ ├── light/ │ │ │ │ ├── ambient_light.dart │ │ │ │ ├── light.dart │ │ │ │ ├── light_source.dart │ │ │ │ ├── lighting_info.dart │ │ │ │ └── point_light.dart │ │ │ ├── light.dart │ │ │ ├── material/ │ │ │ │ ├── material.dart │ │ │ │ └── spatial_material.dart │ │ │ ├── material.dart │ │ │ ├── mesh/ │ │ │ │ ├── cone_mesh.dart │ │ │ │ ├── cuboid_mesh.dart │ │ │ │ ├── cylinder_mesh.dart │ │ │ │ ├── mesh.dart │ │ │ │ ├── plane_mesh.dart │ │ │ │ ├── sphere_mesh.dart │ │ │ │ ├── surface.dart │ │ │ │ └── vertex.dart │ │ │ ├── mesh.dart │ │ │ ├── resource.dart │ │ │ ├── shader/ │ │ │ │ ├── shader.dart │ │ │ │ ├── uniform_array.dart │ │ │ │ ├── uniform_instance.dart │ │ │ │ ├── uniform_sampler.dart │ │ │ │ ├── uniform_slot.dart │ │ │ │ └── uniform_value.dart │ │ │ ├── shader.dart │ │ │ ├── texture/ │ │ │ │ ├── color_texture.dart │ │ │ │ ├── image_texture.dart │ │ │ │ └── texture.dart │ │ │ └── texture.dart │ │ ├── pubspec.yaml │ │ ├── shaders/ │ │ │ ├── spatial_material.frag │ │ │ └── spatial_material.vert │ │ └── test/ │ │ ├── components/ │ │ │ └── line_3d_test.dart │ │ ├── mesh/ │ │ │ └── cone_mesh_test.dart │ │ ├── quaternion_extensions_test.dart │ │ ├── resources/ │ │ │ └── shader/ │ │ │ └── uniform_binding_test.dart │ │ ├── transform_3d_test.dart │ │ ├── vector2_extensions_test.dart │ │ ├── vector3_extensions_test.dart │ │ └── vector4_extensions_test.dart │ ├── flame_audio/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── example/ │ │ │ ├── CREDITS.md │ │ │ ├── README.md │ │ │ ├── analysis_options.yaml │ │ │ ├── assets/ │ │ │ │ └── audio/ │ │ │ │ └── music/ │ │ │ │ └── bg_music.ogg │ │ │ ├── lib/ │ │ │ │ └── main.dart │ │ │ └── pubspec.yaml │ │ ├── lib/ │ │ │ ├── bgm.dart │ │ │ └── flame_audio.dart │ │ ├── pubspec.yaml │ │ └── test/ │ │ └── flame_audio_test.dart │ ├── flame_behavior_tree/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── behavior_tree/ │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── analysis_options.yaml │ │ │ ├── example/ │ │ │ │ └── behavior_tree_example.dart │ │ │ ├── lib/ │ │ │ │ ├── behavior_tree.dart │ │ │ │ └── src/ │ │ │ │ ├── base_node.dart │ │ │ │ ├── blackboard.dart │ │ │ │ ├── blackboard_provider.dart │ │ │ │ ├── composites/ │ │ │ │ │ ├── selector.dart │ │ │ │ │ └── sequence.dart │ │ │ │ ├── decorators/ │ │ │ │ │ ├── inverter.dart │ │ │ │ │ └── limiter.dart │ │ │ │ ├── node.dart │ │ │ │ └── tasks/ │ │ │ │ ├── async_task.dart │ │ │ │ ├── condition.dart │ │ │ │ └── task.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ ├── async_task_test.dart │ │ │ ├── blackboard_test.dart │ │ │ ├── conditon_test.dart │ │ │ ├── inverter_test.dart │ │ │ ├── limiter_test.dart │ │ │ ├── selector_test.dart │ │ │ ├── sequence_test.dart │ │ │ └── task_test.dart │ │ ├── example/ │ │ │ ├── analysis_options.yaml │ │ │ ├── lib/ │ │ │ │ └── main.dart │ │ │ └── pubspec.yaml │ │ ├── lib/ │ │ │ ├── flame_behavior_tree.dart │ │ │ └── src/ │ │ │ └── has_behavior_tree.dart │ │ ├── pubspec.yaml │ │ └── test/ │ │ └── has_behavior_tree_test.dart │ ├── flame_behaviors/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── example/ │ │ │ ├── .gitignore │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── analysis_options.yaml │ │ │ ├── lib/ │ │ │ │ ├── behaviors/ │ │ │ │ │ ├── behaviors.dart │ │ │ │ │ └── spawning_behavior.dart │ │ │ │ ├── entities/ │ │ │ │ │ ├── behaviors/ │ │ │ │ │ │ ├── behaviors.dart │ │ │ │ │ │ ├── moving_behavior.dart │ │ │ │ │ │ ├── rotating_behavior.dart │ │ │ │ │ │ └── screen_colliding_behavior.dart │ │ │ │ │ ├── circle/ │ │ │ │ │ │ ├── behaviors/ │ │ │ │ │ │ │ ├── behaviors.dart │ │ │ │ │ │ │ ├── circle_collision_behavior.dart │ │ │ │ │ │ │ ├── dragging_behavior.dart │ │ │ │ │ │ │ ├── rectangle_collision_behavior.dart │ │ │ │ │ │ │ └── tapping_behavior.dart │ │ │ │ │ │ └── circle.dart │ │ │ │ │ ├── entities.dart │ │ │ │ │ └── rectangle/ │ │ │ │ │ ├── behaviors/ │ │ │ │ │ │ ├── behaviors.dart │ │ │ │ │ │ ├── circle_colliding_behavior.dart │ │ │ │ │ │ ├── freezing_behavior.dart │ │ │ │ │ │ └── rectangle_colliding_behavior.dart │ │ │ │ │ └── rectangle.dart │ │ │ │ └── main.dart │ │ │ └── pubspec.yaml │ │ ├── lib/ │ │ │ ├── flame_behaviors.dart │ │ │ └── src/ │ │ │ ├── behaviors/ │ │ │ │ ├── behavior.dart │ │ │ │ ├── behaviors.dart │ │ │ │ ├── events/ │ │ │ │ │ ├── draggable_behavior.dart │ │ │ │ │ ├── events.dart │ │ │ │ │ ├── hoverable_behavior.dart │ │ │ │ │ └── tappable_behavior.dart │ │ │ │ └── propagating_collision_behavior.dart │ │ │ └── entity.dart │ │ ├── pubspec.yaml │ │ └── test/ │ │ ├── helpers/ │ │ │ ├── helpers.dart │ │ │ └── throws_behavior_not_found_for.dart │ │ └── src/ │ │ ├── behaviors/ │ │ │ ├── behavior_test.dart │ │ │ ├── events/ │ │ │ │ ├── draggable_behavior_test.dart │ │ │ │ ├── hoverable_behavior_test.dart │ │ │ │ └── tappable_behavior_test.dart │ │ │ └── propagating_collision_behavior_test.dart │ │ └── entity_test.dart │ ├── flame_bloc/ │ │ ├── .min_coverage │ │ ├── CHANGELOG.md │ │ ├── DEPRECATED_README.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── example/ │ │ │ ├── README.md │ │ │ ├── analysis_options.yaml │ │ │ ├── lib/ │ │ │ │ ├── main.dart │ │ │ │ └── src/ │ │ │ │ ├── game/ │ │ │ │ │ ├── components/ │ │ │ │ │ │ ├── bullet.dart │ │ │ │ │ │ ├── enemy.dart │ │ │ │ │ │ ├── enemy_creator.dart │ │ │ │ │ │ ├── explosion.dart │ │ │ │ │ │ └── player.dart │ │ │ │ │ └── game.dart │ │ │ │ ├── game.dart │ │ │ │ ├── game_stats/ │ │ │ │ │ ├── bloc/ │ │ │ │ │ │ ├── game_stats_bloc.dart │ │ │ │ │ │ ├── game_stats_event.dart │ │ │ │ │ │ └── game_stats_state.dart │ │ │ │ │ └── view/ │ │ │ │ │ └── game_stat.dart │ │ │ │ └── inventory/ │ │ │ │ ├── bloc/ │ │ │ │ │ ├── inventory_bloc.dart │ │ │ │ │ ├── inventory_event.dart │ │ │ │ │ └── inventory_state.dart │ │ │ │ └── view/ │ │ │ │ └── inventory.dart │ │ │ └── pubspec.yaml │ │ ├── lib/ │ │ │ ├── flame_bloc.dart │ │ │ └── src/ │ │ │ ├── flame_bloc_listenable.dart │ │ │ ├── flame_bloc_listener.dart │ │ │ ├── flame_bloc_provider.dart │ │ │ ├── flame_bloc_reader.dart │ │ │ └── flame_multi_bloc_provider.dart │ │ ├── pubspec.yaml │ │ └── test/ │ │ ├── inventory_cubit.dart │ │ ├── player_cubit.dart │ │ └── src/ │ │ ├── flame_bloc_listenable_test.dart │ │ ├── flame_bloc_listener_test.dart │ │ ├── flame_bloc_provider_test.dart │ │ ├── flame_bloc_reader_test.dart │ │ └── flame_multi_bloc_provider_test.dart │ ├── flame_console/ │ │ ├── .gitignore │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── example/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── analysis_options.yaml │ │ │ ├── lib/ │ │ │ │ ├── commands/ │ │ │ │ │ ├── clear_effects_command.dart │ │ │ │ │ └── commands.dart │ │ │ │ ├── game.dart │ │ │ │ └── main.dart │ │ │ └── pubspec.yaml │ │ ├── lib/ │ │ │ ├── flame_console.dart │ │ │ └── src/ │ │ │ ├── commands/ │ │ │ │ ├── commands.dart │ │ │ │ ├── debug_command.dart │ │ │ │ ├── ls_command.dart │ │ │ │ ├── pause_command.dart │ │ │ │ ├── remove_command.dart │ │ │ │ └── resume_command.dart │ │ │ ├── flame_console.dart │ │ │ └── view/ │ │ │ ├── console_view.dart │ │ │ ├── container_builder.dart │ │ │ └── view.dart │ │ ├── pubspec.yaml │ │ └── test/ │ │ └── src/ │ │ ├── commands_test.dart │ │ ├── debug_command_test.dart │ │ ├── pause_command_test.dart │ │ └── resume_command_test.dart │ ├── flame_devtools/ │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── lib/ │ │ │ ├── main.dart │ │ │ ├── providers/ │ │ │ │ └── position_component_attributes_provider.dart │ │ │ ├── repository.dart │ │ │ └── widgets/ │ │ │ ├── component_counter.dart │ │ │ ├── component_snapshot.dart │ │ │ ├── component_tree.dart │ │ │ ├── component_tree_model.dart │ │ │ ├── debug_mode_button.dart │ │ │ ├── game_loop_controls.dart │ │ │ ├── incremental_number_form_field.dart │ │ │ ├── overlay_navigation.dart │ │ │ └── position_component_attributes_form.dart │ │ ├── pubspec.yaml │ │ └── web/ │ │ ├── index.html │ │ └── manifest.json │ ├── flame_fire_atlas/ │ │ ├── .min_coverage │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── example/ │ │ │ ├── README.md │ │ │ ├── analysis_options.yaml │ │ │ ├── assets/ │ │ │ │ └── cave_ace.fa │ │ │ ├── lib/ │ │ │ │ └── main.dart │ │ │ └── pubspec.yaml │ │ ├── lib/ │ │ │ └── flame_fire_atlas.dart │ │ ├── pubspec.yaml │ │ └── test/ │ │ └── flame_fire_atlas_test.dart │ ├── flame_forge2d/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── example/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── analysis_options.yaml │ │ │ ├── lib/ │ │ │ │ └── main.dart │ │ │ └── pubspec.yaml │ │ ├── lib/ │ │ │ ├── body_component.dart │ │ │ ├── contact_callbacks.dart │ │ │ ├── flame_forge2d.dart │ │ │ ├── forge2d_game.dart │ │ │ ├── forge2d_world.dart │ │ │ └── world_contact_listener.dart │ │ ├── pubspec.yaml │ │ └── test/ │ │ ├── body_component_test.dart │ │ ├── contact_callbacks_test.dart │ │ ├── forge2d_game_test.dart │ │ ├── forge2d_world_test.dart │ │ ├── helpers/ │ │ │ ├── helpers.dart │ │ │ └── mocks.dart │ │ └── world_contact_listener_test.dart │ ├── flame_isolate/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── example/ │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── analysis_options.yaml │ │ │ ├── lib/ │ │ │ │ ├── brains/ │ │ │ │ │ ├── path_finder.dart │ │ │ │ │ ├── worker_overmind.dart │ │ │ │ │ └── worker_overmind_hud.dart │ │ │ │ ├── colonists_game.dart │ │ │ │ ├── constants.dart │ │ │ │ ├── extensions/ │ │ │ │ │ └── range_extensions.dart │ │ │ │ ├── game_map/ │ │ │ │ │ └── game_map.dart │ │ │ │ ├── main.dart │ │ │ │ ├── objects/ │ │ │ │ │ ├── bread.dart │ │ │ │ │ ├── cheese.dart │ │ │ │ │ └── colonists_object.dart │ │ │ │ ├── standard/ │ │ │ │ │ ├── int_vector2.dart │ │ │ │ │ └── pair.dart │ │ │ │ ├── terrain/ │ │ │ │ │ ├── grass.dart │ │ │ │ │ └── terrain.dart │ │ │ │ └── units/ │ │ │ │ ├── actions/ │ │ │ │ │ └── movable.dart │ │ │ │ └── worker.dart │ │ │ └── pubspec.yaml │ │ ├── lib/ │ │ │ ├── flame_isolate.dart │ │ │ └── flame_tailored_isolate.dart │ │ ├── pubspec.yaml │ │ └── test/ │ │ ├── flame_isolate_test.dart │ │ └── flame_tailored_isolate_test.dart │ ├── flame_jenny/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── jenny/ │ │ │ ├── CHANGELOG.md │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── analysis_options.yaml │ │ │ ├── lib/ │ │ │ │ ├── jenny.dart │ │ │ │ └── src/ │ │ │ │ ├── character.dart │ │ │ │ ├── character_storage.dart │ │ │ │ ├── command_storage.dart │ │ │ │ ├── dialogue_runner.dart │ │ │ │ ├── dialogue_view.dart │ │ │ │ ├── errors.dart │ │ │ │ ├── function_storage.dart │ │ │ │ ├── localization.dart │ │ │ │ ├── parse/ │ │ │ │ │ ├── ascii.dart │ │ │ │ │ ├── parse.dart │ │ │ │ │ ├── token.dart │ │ │ │ │ └── tokenize.dart │ │ │ │ ├── structure/ │ │ │ │ │ ├── block.dart │ │ │ │ │ ├── commands/ │ │ │ │ │ │ ├── character_command.dart │ │ │ │ │ │ ├── command.dart │ │ │ │ │ │ ├── declare_command.dart │ │ │ │ │ │ ├── if_command.dart │ │ │ │ │ │ ├── jump_command.dart │ │ │ │ │ │ ├── local_command.dart │ │ │ │ │ │ ├── set_command.dart │ │ │ │ │ │ ├── stop_command.dart │ │ │ │ │ │ ├── user_defined_command.dart │ │ │ │ │ │ ├── visit_command.dart │ │ │ │ │ │ └── wait_command.dart │ │ │ │ │ ├── dialogue_choice.dart │ │ │ │ │ ├── dialogue_entry.dart │ │ │ │ │ ├── dialogue_line.dart │ │ │ │ │ ├── dialogue_option.dart │ │ │ │ │ ├── expressions/ │ │ │ │ │ │ ├── expression.dart │ │ │ │ │ │ ├── functions/ │ │ │ │ │ │ │ ├── _common.dart │ │ │ │ │ │ │ ├── bool.dart │ │ │ │ │ │ │ ├── ceil.dart │ │ │ │ │ │ │ ├── dec.dart │ │ │ │ │ │ │ ├── decimal.dart │ │ │ │ │ │ │ ├── dice.dart │ │ │ │ │ │ │ ├── floor.dart │ │ │ │ │ │ │ ├── if.dart │ │ │ │ │ │ │ ├── inc.dart │ │ │ │ │ │ │ ├── int.dart │ │ │ │ │ │ │ ├── number.dart │ │ │ │ │ │ │ ├── plural.dart │ │ │ │ │ │ │ ├── random.dart │ │ │ │ │ │ │ ├── random_range.dart │ │ │ │ │ │ │ ├── round.dart │ │ │ │ │ │ │ ├── round_places.dart │ │ │ │ │ │ │ ├── string.dart │ │ │ │ │ │ │ ├── user_defined_function.dart │ │ │ │ │ │ │ ├── visit_count.dart │ │ │ │ │ │ │ └── visited.dart │ │ │ │ │ │ ├── literal.dart │ │ │ │ │ │ ├── operators/ │ │ │ │ │ │ │ ├── _common.dart │ │ │ │ │ │ │ ├── add.dart │ │ │ │ │ │ │ ├── and.dart │ │ │ │ │ │ │ ├── divide.dart │ │ │ │ │ │ │ ├── equal.dart │ │ │ │ │ │ │ ├── greater_or_equal.dart │ │ │ │ │ │ │ ├── greater_than.dart │ │ │ │ │ │ │ ├── less_or_equal.dart │ │ │ │ │ │ │ ├── less_than.dart │ │ │ │ │ │ │ ├── modulo.dart │ │ │ │ │ │ │ ├── multiply.dart │ │ │ │ │ │ │ ├── negate.dart │ │ │ │ │ │ │ ├── not.dart │ │ │ │ │ │ │ ├── not_equal.dart │ │ │ │ │ │ │ ├── or.dart │ │ │ │ │ │ │ ├── subtract.dart │ │ │ │ │ │ │ └── xor.dart │ │ │ │ │ │ └── variables.dart │ │ │ │ │ ├── line_content.dart │ │ │ │ │ ├── markup_attribute.dart │ │ │ │ │ └── node.dart │ │ │ │ ├── variable_storage.dart │ │ │ │ └── yarn_project.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ ├── character_storage_test.dart │ │ │ ├── command_storage_test.dart │ │ │ ├── dialogue_runner_test.dart │ │ │ ├── dialogue_view_test.dart │ │ │ ├── function_storage_test.dart │ │ │ ├── localization_test.dart │ │ │ ├── parse/ │ │ │ │ ├── ascii_test.dart │ │ │ │ ├── parse_test.dart │ │ │ │ ├── token_test.dart │ │ │ │ └── tokenize_test.dart │ │ │ ├── structure/ │ │ │ │ ├── block_test.dart │ │ │ │ ├── commands/ │ │ │ │ │ ├── character_command_test.dart │ │ │ │ │ ├── declare_command_test.dart │ │ │ │ │ ├── if_command_test.dart │ │ │ │ │ ├── jump_command_test.dart │ │ │ │ │ ├── local_command_test.dart │ │ │ │ │ ├── set_command_test.dart │ │ │ │ │ ├── stop_command_test.dart │ │ │ │ │ ├── user_defined_command_test.dart │ │ │ │ │ ├── visit_command_test.dart │ │ │ │ │ └── wait_command_test.dart │ │ │ │ ├── dialogue_choice_test.dart │ │ │ │ ├── dialogue_line_test.dart │ │ │ │ ├── dialogue_option_test.dart │ │ │ │ ├── expressions/ │ │ │ │ │ ├── arithmetic_test.dart │ │ │ │ │ ├── functions/ │ │ │ │ │ │ ├── bool_test.dart │ │ │ │ │ │ ├── ceil_test.dart │ │ │ │ │ │ ├── dec_test.dart │ │ │ │ │ │ ├── decimal_test.dart │ │ │ │ │ │ ├── dice_test.dart │ │ │ │ │ │ ├── floor_test.dart │ │ │ │ │ │ ├── if_test.dart │ │ │ │ │ │ ├── inc_test.dart │ │ │ │ │ │ ├── int_test.dart │ │ │ │ │ │ ├── number_test.dart │ │ │ │ │ │ ├── plural_test.dart │ │ │ │ │ │ ├── random_range_test.dart │ │ │ │ │ │ ├── random_test.dart │ │ │ │ │ │ ├── round_places_test.dart │ │ │ │ │ │ ├── round_test.dart │ │ │ │ │ │ ├── string_test.dart │ │ │ │ │ │ ├── user_defined_function_test.dart │ │ │ │ │ │ ├── visit_count_test.dart │ │ │ │ │ │ └── visited_test.dart │ │ │ │ │ ├── literal_test.dart │ │ │ │ │ ├── operators/ │ │ │ │ │ │ ├── add_test.dart │ │ │ │ │ │ ├── and_test.dart │ │ │ │ │ │ ├── divide_test.dart │ │ │ │ │ │ ├── equal_test.dart │ │ │ │ │ │ ├── greater_or_equal_test.dart │ │ │ │ │ │ ├── greater_than_test.dart │ │ │ │ │ │ ├── less_or_equal_test.dart │ │ │ │ │ │ ├── less_than_test.dart │ │ │ │ │ │ ├── modulo_test.dart │ │ │ │ │ │ ├── multiply_test.dart │ │ │ │ │ │ ├── negate_test.dart │ │ │ │ │ │ ├── not_equal_test.dart │ │ │ │ │ │ ├── not_test.dart │ │ │ │ │ │ ├── or_test.dart │ │ │ │ │ │ ├── subtract_test.dart │ │ │ │ │ │ └── xor_test.dart │ │ │ │ │ └── variables_test.dart │ │ │ │ └── node_test.dart │ │ │ ├── test_scenario.dart │ │ │ ├── utils.dart │ │ │ ├── variable_storage_test.dart │ │ │ └── yarn_project_test.dart │ │ └── pubspec.yaml │ ├── flame_kenney_xml/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── example/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── analysis_options.yaml │ │ │ ├── assets/ │ │ │ │ ├── license.txt │ │ │ │ └── spritesheet_stone.xml │ │ │ ├── lib/ │ │ │ │ └── main.dart │ │ │ └── pubspec.yaml │ │ ├── lib/ │ │ │ └── flame_kenney_xml.dart │ │ ├── pubspec.yaml │ │ └── test/ │ │ └── flame_kenney_xml_test.dart │ ├── flame_lint/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── lib/ │ │ │ ├── analysis_options.yaml │ │ │ ├── analysis_options_with_dcm.yaml │ │ │ └── flame_lint.dart │ │ └── pubspec.yaml │ ├── flame_lottie/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── example/ │ │ │ ├── README.md │ │ │ ├── analysis_options.yaml │ │ │ ├── assets/ │ │ │ │ └── LottieLogo1.json │ │ │ ├── lib/ │ │ │ │ └── main.dart │ │ │ └── pubspec.yaml │ │ ├── lib/ │ │ │ ├── flame_lottie.dart │ │ │ └── src/ │ │ │ ├── lottie_component.dart │ │ │ └── lottie_renderer.dart │ │ ├── pubspec.yaml │ │ └── test/ │ │ └── flame_lottie_test.dart │ ├── flame_markdown/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── example/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── analysis_options.yaml │ │ │ ├── assets/ │ │ │ │ └── fire_and_ice.md │ │ │ ├── lib/ │ │ │ │ └── main.dart │ │ │ └── pubspec.yaml │ │ ├── lib/ │ │ │ ├── custom_attribute_syntax.dart │ │ │ └── flame_markdown.dart │ │ ├── pubspec.yaml │ │ └── test/ │ │ └── flame_markdown_test.dart │ ├── flame_network_assets/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── example/ │ │ │ ├── README.md │ │ │ ├── analysis_options.yaml │ │ │ ├── lib/ │ │ │ │ └── main.dart │ │ │ └── pubspec.yaml │ │ ├── lib/ │ │ │ ├── flame_network_assets.dart │ │ │ └── src/ │ │ │ ├── flame_asset_response.dart │ │ │ ├── flame_network_assets.dart │ │ │ └── flame_network_images.dart │ │ ├── pubspec.yaml │ │ └── test/ │ │ └── flame_network_image_test.dart │ ├── flame_noise/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── lib/ │ │ │ ├── flame_noise.dart │ │ │ └── src/ │ │ │ ├── effects/ │ │ │ │ └── noise_effect_controller.dart │ │ │ └── effects.dart │ │ ├── pubspec.yaml │ │ └── test/ │ │ └── noise_effect_controller_test.dart │ ├── flame_oxygen/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── example/ │ │ │ ├── README.md │ │ │ ├── lib/ │ │ │ │ ├── component/ │ │ │ │ │ ├── timer_component.dart │ │ │ │ │ └── velocity_component.dart │ │ │ │ ├── main.dart │ │ │ │ └── system/ │ │ │ │ ├── debug_system.dart │ │ │ │ ├── kawabunga_system.dart │ │ │ │ ├── move_system.dart │ │ │ │ └── sprite_system.dart │ │ │ └── pubspec.yaml │ │ ├── lib/ │ │ │ ├── flame_oxygen.dart │ │ │ └── src/ │ │ │ ├── component/ │ │ │ │ ├── anchor_component.dart │ │ │ │ ├── angle_component.dart │ │ │ │ ├── flip_component.dart │ │ │ │ ├── particle_component.dart │ │ │ │ ├── position_component.dart │ │ │ │ ├── size_component.dart │ │ │ │ ├── sprite_component.dart │ │ │ │ └── text_component.dart │ │ │ ├── component.dart │ │ │ ├── flame_system_manager.dart │ │ │ ├── flame_world.dart │ │ │ ├── oxygen_game.dart │ │ │ ├── system/ │ │ │ │ ├── base_system.dart │ │ │ │ ├── game_ref.dart │ │ │ │ ├── particle_system.dart │ │ │ │ ├── render_system.dart │ │ │ │ └── update_system.dart │ │ │ └── system.dart │ │ └── pubspec.yaml │ ├── flame_rive/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── example/ │ │ │ ├── README.md │ │ │ ├── analysis_options.yaml │ │ │ ├── assets/ │ │ │ │ ├── rewards.riv │ │ │ │ └── skills.riv │ │ │ ├── lib/ │ │ │ │ └── main.dart │ │ │ └── pubspec.yaml │ │ ├── lib/ │ │ │ ├── flame_rive.dart │ │ │ └── src/ │ │ │ └── rive_component.dart │ │ ├── pubspec.yaml │ │ └── test/ │ │ ├── assets/ │ │ │ ├── rewards.riv │ │ │ └── skills.riv │ │ ├── flame_rive_test.dart │ │ └── utils.dart │ ├── flame_riverpod/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── example/ │ │ │ ├── README.md │ │ │ ├── analysis_options.yaml │ │ │ ├── lib/ │ │ │ │ └── main.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ └── widget_test.dart │ │ ├── lib/ │ │ │ ├── flame_riverpod.dart │ │ │ └── src/ │ │ │ ├── consumer.dart │ │ │ └── widget.dart │ │ ├── pubspec.yaml │ │ └── test/ │ │ └── widget_test.dart │ ├── flame_spine/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── example/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── analysis_options.yaml │ │ │ ├── assets/ │ │ │ │ ├── LICENSE │ │ │ │ ├── spineboy-pro.skel │ │ │ │ └── spineboy.atlas │ │ │ ├── lib/ │ │ │ │ └── main.dart │ │ │ └── pubspec.yaml │ │ ├── lib/ │ │ │ ├── flame_spine.dart │ │ │ └── src/ │ │ │ └── spine_component.dart │ │ ├── pubspec.yaml │ │ └── test/ │ │ └── flame_spine_test.dart │ ├── flame_splash_screen/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── example/ │ │ │ ├── README.md │ │ │ ├── analysis_options.yaml │ │ │ ├── lib/ │ │ │ │ └── main.dart │ │ │ └── pubspec.yaml │ │ ├── lib/ │ │ │ ├── flame_splash_screen.dart │ │ │ └── src/ │ │ │ ├── controller.dart │ │ │ ├── splash.dart │ │ │ └── theme.dart │ │ ├── pubspec.yaml │ │ └── test/ │ │ ├── controller_test.dart │ │ └── theme_test.dart │ ├── flame_sprite_fusion/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── example/ │ │ │ ├── analysis_options.yaml │ │ │ ├── assets/ │ │ │ │ └── tiles/ │ │ │ │ └── map.json │ │ │ ├── lib/ │ │ │ │ └── main.dart │ │ │ └── pubspec.yaml │ │ ├── lib/ │ │ │ ├── flame_sprite_fusion.dart │ │ │ └── src/ │ │ │ ├── sprite_fusion_layer_data.dart │ │ │ ├── sprite_fusion_tile_data.dart │ │ │ ├── sprite_fusion_tilemap_component.dart │ │ │ └── sprite_fusion_tilemap_data.dart │ │ ├── pubspec.yaml │ │ └── test/ │ │ ├── assets/ │ │ │ └── map.json │ │ ├── sprite_fusion_data_test.dart │ │ ├── sprite_fusion_tilemap_component_test.dart │ │ └── test_asset_bundle.dart │ ├── flame_steering_behaviors/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── example/ │ │ │ ├── LICENSE │ │ │ ├── README.md │ │ │ ├── analysis_options.yaml │ │ │ ├── lib/ │ │ │ │ ├── main.dart │ │ │ │ └── src/ │ │ │ │ ├── behaviors/ │ │ │ │ │ ├── behaviors.dart │ │ │ │ │ └── screen_collision_behavior.dart │ │ │ │ ├── entities/ │ │ │ │ │ ├── dot/ │ │ │ │ │ │ └── dot.dart │ │ │ │ │ └── entities.dart │ │ │ │ └── example_game.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ ├── helpers/ │ │ │ │ ├── helpers.dart │ │ │ │ └── test_game.dart │ │ │ └── src/ │ │ │ ├── behaviors/ │ │ │ │ └── screen_collision_behavior_test.dart │ │ │ ├── entities/ │ │ │ │ └── dot_test.dart │ │ │ └── example_game_test.dart │ │ ├── lib/ │ │ │ ├── flame_steering_behaviors.dart │ │ │ └── src/ │ │ │ ├── behaviors/ │ │ │ │ ├── behaviors.dart │ │ │ │ ├── flee_behavior.dart │ │ │ │ ├── pursue_behavior.dart │ │ │ │ ├── separation_behavior.dart │ │ │ │ ├── steering_behavior.dart │ │ │ │ └── wander_behavior.dart │ │ │ ├── mixins/ │ │ │ │ ├── mixins.dart │ │ │ │ ├── steerable.dart │ │ │ │ └── steering.dart │ │ │ └── steering/ │ │ │ ├── flee.dart │ │ │ ├── pursue.dart │ │ │ ├── separation.dart │ │ │ ├── steering.dart │ │ │ ├── steering_core.dart │ │ │ └── wander.dart │ │ ├── pubspec.yaml │ │ └── test/ │ │ ├── helpers/ │ │ │ ├── helpers.dart │ │ │ ├── steerable_entity.dart │ │ │ └── test_game.dart │ │ └── src/ │ │ ├── behaviors/ │ │ │ ├── flee_behavior_test.dart │ │ │ ├── pursue_behavior_test.dart │ │ │ ├── separation_behavior_test.dart │ │ │ └── wander_behavior_test.dart │ │ ├── mixins/ │ │ │ ├── steerable_test.dart │ │ │ └── steering_test.dart │ │ └── steering/ │ │ ├── flee_test.dart │ │ ├── pursue_test.dart │ │ ├── separation_test.dart │ │ ├── steering_core_test.dart │ │ └── wander_test.dart │ ├── flame_studio/ │ │ ├── LICENSE │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── example/ │ │ │ └── main.dart │ │ ├── lib/ │ │ │ ├── flame_studio.dart │ │ │ └── src/ │ │ │ ├── core/ │ │ │ │ ├── component_tree.dart │ │ │ │ ├── game_controller.dart │ │ │ │ └── theme.dart │ │ │ ├── run_flame_studio.dart │ │ │ └── widgets/ │ │ │ ├── flame_studio.dart │ │ │ ├── left_panel.dart │ │ │ ├── left_panel_grip.dart │ │ │ ├── panels/ │ │ │ │ └── hierarchy_view.dart │ │ │ ├── toolbar/ │ │ │ │ ├── flame_studio_toolbar.dart │ │ │ │ ├── next_frame_button.dart │ │ │ │ ├── pause_button.dart │ │ │ │ ├── start_button.dart │ │ │ │ └── toolbar_button.dart │ │ │ └── ui_scaffold.dart │ │ └── pubspec.yaml │ ├── flame_svg/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── example/ │ │ │ ├── .gitignore │ │ │ ├── README.md │ │ │ ├── analysis_options.yaml │ │ │ ├── lib/ │ │ │ │ └── main.dart │ │ │ └── pubspec.yaml │ │ ├── lib/ │ │ │ ├── flame_svg.dart │ │ │ ├── svg.dart │ │ │ └── svg_component.dart │ │ ├── pubspec.yaml │ │ └── test/ │ │ ├── svg_component_test.dart │ │ └── svg_test.dart │ ├── flame_test/ │ │ ├── .min_coverage │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── example/ │ │ │ ├── README.md │ │ │ ├── lib/ │ │ │ │ ├── game.dart │ │ │ │ └── main.dart │ │ │ ├── pubspec.yaml │ │ │ └── test/ │ │ │ ├── flame_test_test.dart │ │ │ └── main_test.dart │ │ ├── lib/ │ │ │ ├── flame_test.dart │ │ │ └── src/ │ │ │ ├── close_to_aabb.dart │ │ │ ├── close_to_matrix4.dart │ │ │ ├── close_to_quaternion.dart │ │ │ ├── close_to_vector.dart │ │ │ ├── close_to_vector3.dart │ │ │ ├── close_to_vector4.dart │ │ │ ├── debug_text_renderer.dart │ │ │ ├── epsilon.dart │ │ │ ├── expect_color.dart │ │ │ ├── expect_double.dart │ │ │ ├── fails_assert.dart │ │ │ ├── flame_test.dart │ │ │ ├── is_close_to_vector.dart │ │ │ ├── mock_gesture_events.dart │ │ │ ├── mock_image.dart │ │ │ ├── mock_pointer_move_event.dart │ │ │ ├── mock_tap_drag_events.dart │ │ │ ├── random_test.dart │ │ │ ├── test_flame_game.dart │ │ │ └── test_golden.dart │ │ ├── pubspec.yaml │ │ └── test/ │ │ ├── close_to_aabb_test.dart │ │ ├── close_to_matrix4_test.dart │ │ ├── close_to_quaternion_test.dart │ │ ├── close_to_vector3_test.dart │ │ ├── close_to_vector4_test.dart │ │ ├── close_to_vector_test.dart │ │ ├── debug_text_formatter_test.dart │ │ ├── epsilon_test.dart │ │ ├── expect_double_test.dart │ │ ├── fails_assert_test.dart │ │ ├── flame_async_test.dart │ │ ├── golden_test.dart │ │ ├── random_test_test.dart │ │ └── test_with_game_test.dart │ ├── flame_texturepacker/ │ │ ├── CHANGELOG.md │ │ ├── LICENSE │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── example/ │ │ │ ├── README.md │ │ │ ├── analysis_options.yaml │ │ │ ├── assets/ │ │ │ │ └── images/ │ │ │ │ └── atlas_map.atlas │ │ │ ├── lib/ │ │ │ │ └── main.dart │ │ │ └── pubspec.yaml │ │ ├── lib/ │ │ │ ├── flame_texturepacker.dart │ │ │ └── src/ │ │ │ ├── extension_on_game.dart │ │ │ ├── model/ │ │ │ │ ├── page.dart │ │ │ │ └── region.dart │ │ │ ├── texture_packer_atlas.dart │ │ │ ├── texture_packer_parser.dart │ │ │ └── texture_packer_sprite.dart │ │ ├── pubspec.yaml │ │ └── test/ │ │ ├── assets/ │ │ │ ├── atlasMap.atlas │ │ │ ├── legacy/ │ │ │ │ ├── multiplePages/ │ │ │ │ │ ├── MultiplePageAtlasMap.atlas │ │ │ │ │ └── MultipleTrimmedPageAtlasMap.atlas │ │ │ │ └── singlePage/ │ │ │ │ ├── SinglePageAtlasMap.atlas │ │ │ │ └── SingleTrimmedPageAtlasMap.atlas │ │ │ ├── newFormat/ │ │ │ │ ├── multiplePages/ │ │ │ │ │ ├── MultiplePageAtlasMap.atlas │ │ │ │ │ └── MultipleTrimmedPageAtlasMap.atlas │ │ │ │ └── singlePage/ │ │ │ │ ├── SinglePageAtlasMap.atlas │ │ │ │ └── SingleTrimmedPageAtlasMap.atlas │ │ │ └── whitelist/ │ │ │ ├── whitelist_test.atlas │ │ │ └── whitelist_test.tps │ │ ├── atlas_path_resolution_test.dart │ │ ├── flame_texturepacker_test.dart │ │ ├── legacy_format_test.dart │ │ ├── naming_index_test.dart │ │ ├── new_format_test.dart │ │ ├── region_test.dart │ │ └── separated_parsing_test.dart │ └── flame_tiled/ │ ├── CHANGELOG.md │ ├── LICENSE │ ├── README.md │ ├── analysis_options.yaml │ ├── example/ │ │ ├── README.md │ │ ├── analysis_options.yaml │ │ ├── assets/ │ │ │ └── tiles/ │ │ │ └── map.tmx │ │ ├── lib/ │ │ │ └── main.dart │ │ └── pubspec.yaml │ ├── lib/ │ │ ├── flame_tiled.dart │ │ └── src/ │ │ ├── extensions.dart │ │ ├── flame_tsx_provider.dart │ │ ├── mutable_rect.dart │ │ ├── rectangle_bin_packer.dart │ │ ├── renderable_layers/ │ │ │ ├── group_layer.dart │ │ │ ├── image_layer.dart │ │ │ ├── object_layer.dart │ │ │ ├── renderable_layer.dart │ │ │ └── tile_layers/ │ │ │ ├── hexagonal_tile_layer.dart │ │ │ ├── isometric_tile_layer.dart │ │ │ ├── orthogonal_tile_layer.dart │ │ │ ├── staggered_tile_layer.dart │ │ │ └── tile_layer.dart │ │ ├── renderable_tile_map.dart │ │ ├── simple_flips.dart │ │ ├── tile_animation.dart │ │ ├── tile_atlas.dart │ │ ├── tile_stack.dart │ │ ├── tile_transform.dart │ │ └── tiled_component.dart │ ├── pubspec.yaml │ └── test/ │ ├── README.md │ ├── assets/ │ │ ├── 2_tiles-green_on_red.tmx │ │ ├── 8_tiles-flips.tmx │ │ ├── deleted_layer_map.tmx │ │ ├── dungeon_animation_hexagonal.tmx │ │ ├── dungeon_animation_isometric.tmx │ │ ├── dungeon_animation_orthogonal.tmx │ │ ├── dungeon_animation_staggered.tmx │ │ ├── flat_hex_even.tmx │ │ ├── flat_hex_odd.tmx │ │ ├── image_layer_full_screen.tmx │ │ ├── iso_staggered_overlap_x_even.tmx │ │ ├── iso_staggered_overlap_x_odd.tmx │ │ ├── iso_staggered_overlap_y_even.tmx │ │ ├── iso_staggered_overlap_y_odd.tmx │ │ ├── isometric_plain.tmx │ │ ├── layers_test.tmx │ │ ├── map-with-same-level-tsx.tmx │ │ ├── map.tmx │ │ ├── oversized_tiles_hexagonal.tmx │ │ ├── oversized_tiles_isometric.tmx │ │ ├── oversized_tiles_orthogonal.tmx │ │ ├── oversized_tiles_staggered.tmx │ │ ├── pointy_hex_even.tmx │ │ ├── pointy_hex_odd.tmx │ │ ├── single_tile_map_1.tmx │ │ ├── single_tile_map_2.tmx │ │ ├── test_isometric.tmx │ │ ├── test_shifted.tmx │ │ ├── test_tile_offset_hexagonal.tmx │ │ ├── test_tile_offset_isometric.tmx │ │ ├── test_tile_offset_orthogonal.tmx │ │ ├── test_tile_offset_staggered.tmx │ │ ├── tiles/ │ │ │ ├── external_tileset_1.tsx │ │ │ ├── isometric_plain_1.tsx │ │ │ └── samelevel_tileset_1.tsx │ │ └── tiles_custom_path/ │ │ ├── external_tileset_custom_path.tsx │ │ └── map_custom_path.tmx │ ├── extensions_test.dart │ ├── image_layer_test.dart │ ├── rectangle_bin_packer_test.dart │ ├── test_asset_bundle.dart │ ├── test_image_utils.dart │ ├── tile_atlas_test.dart │ ├── tiled_component_sizes_test.dart │ └── tiled_test.dart ├── pubspec.yaml └── scripts/ ├── cspell-run.sh ├── cspell-verify.sh └── doc-setup.sh