├── .dockerignore ├── .github ├── FUNDING.yml └── workflows │ ├── markdown-link-check-config.json │ └── rust.yml ├── .gitignore ├── .vscode └── settings.json ├── README.md ├── docker └── Dockerfile ├── examples ├── .gdignore ├── Hell-Hound-Files │ ├── GIFS │ │ ├── hell-hound-idle.gif │ │ ├── hell-hound-jump.gif │ │ ├── hell-hound-run.gif │ │ └── hell-hound-walk.gif │ ├── PNG │ │ ├── hell-hound-idle.png │ │ ├── hell-hound-jump.png │ │ ├── hell-hound-run.png │ │ └── hell-hound-walk.png │ └── public-license.txt ├── Sideview Sci-Fi │ ├── Explosion │ │ ├── GIF │ │ │ └── explosion-animation.gif │ │ ├── sprites │ │ │ ├── explosion-animation1.png │ │ │ ├── explosion-animation2.png │ │ │ ├── explosion-animation3.png │ │ │ ├── explosion-animation4.png │ │ │ ├── explosion-animation5.png │ │ │ ├── explosion-animation6.png │ │ │ ├── explosion-animation7.png │ │ │ ├── explosion-animation8.png │ │ │ └── explosion-animation9.png │ │ └── spritesheet │ │ │ ├── explosion-animation.json │ │ │ └── explosion-animation.png │ ├── alien-flying-enemy │ │ ├── GIFS │ │ │ ├── alien-enemy-2-flying-preview.gif │ │ │ └── alien-enemy-2-flying.gif │ │ └── sprites │ │ │ ├── alien-enemy-flying1.png │ │ │ ├── alien-enemy-flying2.png │ │ │ ├── alien-enemy-flying3.png │ │ │ ├── alien-enemy-flying4.png │ │ │ ├── alien-enemy-flying5.png │ │ │ ├── alien-enemy-flying6.png │ │ │ ├── alien-enemy-flying7.png │ │ │ └── alien-enemy-flying8.png │ ├── alien-walking-enemy │ │ ├── GIFS │ │ │ ├── alien-enemy-idle-CLEAR.gif │ │ │ ├── alien-enemy-idle.gif │ │ │ ├── alien-enemy-walk-CLEAR.gif │ │ │ └── alien-enemy-walk.gif │ │ └── PNG │ │ │ ├── alien-enemy-idle.png │ │ │ └── alien-enemy-walk.png │ ├── bipedal-Unit │ │ ├── Gif Previews │ │ │ ├── preview.gif │ │ │ └── transparent-preview.gif │ │ └── PNG │ │ │ ├── bipedal-unit.png │ │ │ └── sprites │ │ │ ├── bipedal-unit1.png │ │ │ ├── bipedal-unit2.png │ │ │ ├── bipedal-unit3.png │ │ │ ├── bipedal-unit4.png │ │ │ ├── bipedal-unit5.png │ │ │ ├── bipedal-unit6.png │ │ │ └── bipedal-unit7.png │ ├── cyberpunk-detective │ │ ├── GIF Previews │ │ │ ├── crouch.gif │ │ │ ├── death.gif │ │ │ ├── draw-gun.gif │ │ │ ├── gun-walk.gif │ │ │ ├── punch.gif │ │ │ ├── shot.gif │ │ │ └── walk.gif │ │ └── PNG │ │ │ ├── sprites │ │ │ ├── crouch │ │ │ │ ├── Layer-1.png │ │ │ │ ├── Layer-2.png │ │ │ │ ├── Layer-3.png │ │ │ │ ├── Layer-4.png │ │ │ │ ├── Layer-5.png │ │ │ │ └── Layer-6.png │ │ │ ├── death │ │ │ │ ├── Layer-1.png │ │ │ │ ├── Layer-2.png │ │ │ │ ├── Layer-3.png │ │ │ │ ├── Layer-4.png │ │ │ │ └── Layer-5.png │ │ │ ├── draw gun │ │ │ │ ├── Layer-1.png │ │ │ │ ├── Layer-2.png │ │ │ │ ├── Layer-3.png │ │ │ │ └── Layer-4.png │ │ │ ├── gun-walk │ │ │ │ ├── Layer-1.png │ │ │ │ ├── Layer-2.png │ │ │ │ ├── Layer-3.png │ │ │ │ ├── Layer-4.png │ │ │ │ ├── Layer-5.png │ │ │ │ └── Layer-6.png │ │ │ ├── punch │ │ │ │ ├── Layer-1.png │ │ │ │ ├── Layer-2.png │ │ │ │ ├── Layer-3.png │ │ │ │ └── Layer-4.png │ │ │ ├── shot │ │ │ │ ├── Layer-1.png │ │ │ │ ├── Layer-2.png │ │ │ │ └── Layer-3.png │ │ │ └── walk │ │ │ │ ├── Layer-1.png │ │ │ │ ├── Layer-2.png │ │ │ │ ├── Layer-3.png │ │ │ │ ├── Layer-4.png │ │ │ │ ├── Layer-5.png │ │ │ │ └── Layer-6.png │ │ │ └── spritesheets │ │ │ ├── crouch.png │ │ │ ├── death.png │ │ │ ├── draw-gun.png │ │ │ ├── gun-walk.png │ │ │ ├── punch.png │ │ │ ├── shot.png │ │ │ └── walk.png │ ├── mech-unit │ │ ├── gifs previews │ │ │ └── mech-unit.gif │ │ ├── sprites │ │ │ ├── mech-unit-export1.png │ │ │ ├── mech-unit-export10.png │ │ │ ├── mech-unit-export2.png │ │ │ ├── mech-unit-export3.png │ │ │ ├── mech-unit-export4.png │ │ │ ├── mech-unit-export5.png │ │ │ ├── mech-unit-export6.png │ │ │ ├── mech-unit-export7.png │ │ │ ├── mech-unit-export8.png │ │ │ └── mech-unit-export9.png │ │ └── spritesheet │ │ │ └── mech-unit.png │ ├── public-license.txt │ ├── space-marine │ │ ├── GIFS │ │ │ ├── space-marine-die.gif │ │ │ ├── space-marine-idle.gif │ │ │ ├── space-marine-jump.gif │ │ │ ├── space-marine-run.gif │ │ │ └── space-marine-shoot.gif │ │ └── PNG │ │ │ ├── bullet.png │ │ │ ├── space-marine-die.png │ │ │ ├── space-marine-idle.png │ │ │ ├── space-marine-jump.png │ │ │ ├── space-marine-run.png │ │ │ ├── space-marine-shoot.png │ │ │ └── wall-impact-blast.png │ ├── spaceship-unit │ │ ├── Gifs Previews │ │ │ ├── preview-spaceship-unit.gif │ │ │ ├── spaceship-unit.gif │ │ │ ├── thrust.gif │ │ │ └── trasparent-with-thrusts.gif │ │ └── PNG │ │ │ ├── separated sprites │ │ │ ├── spaceship-unit.png │ │ │ └── thrust.png │ │ │ └── ship-unit-with-thrusts.png │ └── tank-unit │ │ ├── GIF Previews │ │ └── tank-unit.gif │ │ ├── PNG │ │ └── tank-unit.png │ │ └── tank-unit-preview.png ├── ars_notoria │ ├── acid2-14x67.png │ ├── andromalius-57x88.png │ ├── disciple-45x51.png │ ├── flameball-32x32.png │ ├── gnu-120x100.png │ ├── mage-1-85x94.png │ ├── mage-2-122x110.png │ ├── mage-3-87x110.png │ ├── mage-bullet-13x13.png │ ├── minion-45x66.png │ ├── shadow-80x70.png │ └── tentacles-25x90.png ├── example.gif ├── underwater-diving-files │ ├── GIF │ │ ├── FX │ │ │ ├── bubbles.gif │ │ │ ├── enemy-death.gif │ │ │ ├── explosion-big.gif │ │ │ ├── explosion-small.gif │ │ │ └── explosion.gif │ │ ├── enemies │ │ │ ├── fish-big.gif │ │ │ ├── fish-dart.gif │ │ │ └── fish.gif │ │ └── player │ │ │ ├── player-fast.gif │ │ │ ├── player-hurt.gif │ │ │ ├── player-idle.gif │ │ │ ├── player-rush.gif │ │ │ └── player-swiming.gif │ ├── PNG │ │ ├── FX │ │ │ ├── bubbles.png │ │ │ ├── enemy-death.png │ │ │ ├── explosion-big.png │ │ │ ├── explosion-small.png │ │ │ └── explosion.png │ │ ├── enemies │ │ │ ├── fish-big.png │ │ │ ├── fish-dart.png │ │ │ ├── fish.png │ │ │ ├── mine-big.png │ │ │ ├── mine-small.png │ │ │ └── mine.png │ │ └── player │ │ │ ├── player-fast.png │ │ │ ├── player-hurt.png │ │ │ ├── player-idle.png │ │ │ ├── player-rush.png │ │ │ └── player-swiming.png │ └── public-license.txt ├── warped_caves_files │ ├── GIF │ │ ├── Fx │ │ │ ├── enemy-death.gif │ │ │ ├── impact.gif │ │ │ ├── power-up.gif │ │ │ └── shot.gif │ │ ├── enemies │ │ │ ├── crab-idle.gif │ │ │ ├── crab-walk.gif │ │ │ ├── jumper-idle.gif │ │ │ ├── jumper-jump.gif │ │ │ └── octopus.gif │ │ └── player │ │ │ ├── player-cling.gif │ │ │ ├── player-duck.gif │ │ │ ├── player-hurt.gif │ │ │ ├── player-idle.gif │ │ │ ├── player-jump-example.gif │ │ │ ├── player-jump.gif │ │ │ ├── player-run-shoot.gif │ │ │ ├── player-run.gif │ │ │ ├── player-shoot-up.gif │ │ │ └── player-stand.gif │ ├── PNG │ │ ├── sprites │ │ │ ├── Fx │ │ │ │ ├── enemy-death │ │ │ │ │ ├── enemy-death-1.png │ │ │ │ │ ├── enemy-death-2.png │ │ │ │ │ ├── enemy-death-3.png │ │ │ │ │ ├── enemy-death-4.png │ │ │ │ │ └── enemy-death-5.png │ │ │ │ ├── impact │ │ │ │ │ ├── impact-1.png │ │ │ │ │ ├── impact-2.png │ │ │ │ │ ├── impact-3.png │ │ │ │ │ ├── impact-4.png │ │ │ │ │ └── impact-5.png │ │ │ │ ├── power-up │ │ │ │ │ ├── power-up-1.png │ │ │ │ │ ├── power-up-2.png │ │ │ │ │ ├── power-up-3.png │ │ │ │ │ ├── power-up-4.png │ │ │ │ │ ├── power-up-5.png │ │ │ │ │ ├── power-up-6.png │ │ │ │ │ └── power-up-7.png │ │ │ │ └── shot │ │ │ │ │ ├── shot-1.png │ │ │ │ │ └── shot-2.png │ │ │ ├── enemies │ │ │ │ ├── crab-idle │ │ │ │ │ ├── crab-idle-1.png │ │ │ │ │ ├── crab-idle-2.png │ │ │ │ │ ├── crab-idle-3.png │ │ │ │ │ └── crab-idle-4.png │ │ │ │ ├── crab-walk │ │ │ │ │ ├── crab-walk-1.png │ │ │ │ │ ├── crab-walk-2.png │ │ │ │ │ ├── crab-walk-3.png │ │ │ │ │ └── crab-walk-4.png │ │ │ │ ├── jumper-idle │ │ │ │ │ ├── jumper-idle-1.png │ │ │ │ │ ├── jumper-idle-2.png │ │ │ │ │ ├── jumper-idle-3.png │ │ │ │ │ └── jumper-idle-4.png │ │ │ │ ├── jumper-jump │ │ │ │ │ └── jumper-jump.png │ │ │ │ └── octopus │ │ │ │ │ ├── octopus-1.png │ │ │ │ │ ├── octopus-2.png │ │ │ │ │ ├── octopus-3.png │ │ │ │ │ └── octopus-4.png │ │ │ └── player │ │ │ │ ├── player-cling │ │ │ │ └── player-cling.png │ │ │ │ ├── player-duck │ │ │ │ └── player-duck.png │ │ │ │ ├── player-hurt │ │ │ │ ├── player-hurt-1.png │ │ │ │ └── player-hurt-2.png │ │ │ │ ├── player-idle │ │ │ │ ├── player-idle-1.png │ │ │ │ ├── player-idle-2.png │ │ │ │ ├── player-idle-3.png │ │ │ │ └── player-idle-4.png │ │ │ │ ├── player-jump │ │ │ │ ├── player-jump-1.png │ │ │ │ ├── player-jump-2.png │ │ │ │ ├── player-jump-3.png │ │ │ │ ├── player-jump-4.png │ │ │ │ ├── player-jump-5.png │ │ │ │ └── player-jump-6.png │ │ │ │ ├── player-run-shot │ │ │ │ ├── player-run-shot-1.png │ │ │ │ ├── player-run-shot-10.png │ │ │ │ ├── player-run-shot-2.png │ │ │ │ ├── player-run-shot-3.png │ │ │ │ ├── player-run-shot-4.png │ │ │ │ ├── player-run-shot-5.png │ │ │ │ ├── player-run-shot-6.png │ │ │ │ ├── player-run-shot-7.png │ │ │ │ ├── player-run-shot-8.png │ │ │ │ └── player-run-shot-9.png │ │ │ │ ├── player-run │ │ │ │ ├── player-run-1.png │ │ │ │ ├── player-run-10.png │ │ │ │ ├── player-run-2.png │ │ │ │ ├── player-run-3.png │ │ │ │ ├── player-run-4.png │ │ │ │ ├── player-run-5.png │ │ │ │ ├── player-run-6.png │ │ │ │ ├── player-run-7.png │ │ │ │ ├── player-run-8.png │ │ │ │ └── player-run-9.png │ │ │ │ ├── player-shoot-up │ │ │ │ └── player-shoot-up.png │ │ │ │ └── player-stand │ │ │ │ ├── player-stand-1.png │ │ │ │ ├── player-stand-2.png │ │ │ │ └── player-stand-3.png │ │ └── spritesheets │ │ │ ├── Fx │ │ │ ├── enemy-death.png │ │ │ ├── impact.png │ │ │ ├── power-up.png │ │ │ └── shot.png │ │ │ ├── enemies │ │ │ ├── crab-idle.png │ │ │ ├── crab-walk.png │ │ │ ├── jumper-idle.png │ │ │ ├── jumper-jump.png │ │ │ └── octopus.png │ │ │ └── player │ │ │ ├── player-cling.png │ │ │ ├── player-duck.png │ │ │ ├── player-hurt.png │ │ │ ├── player-idle.png │ │ │ ├── player-jump.png │ │ │ ├── player-run-shoot.png │ │ │ ├── player-run.png │ │ │ ├── player-shoot-up.png │ │ │ └── player-stand.png │ └── public-license.txt └── warped_city_files │ ├── SPRITES │ ├── misc │ │ ├── drone │ │ │ ├── drone-1.png │ │ │ ├── drone-2.png │ │ │ ├── drone-3.png │ │ │ ├── drone-4.png │ │ │ └── drone_preview.gif │ │ ├── enemy-explosion │ │ │ ├── enemy-explosion-1.png │ │ │ ├── enemy-explosion-2.png │ │ │ ├── enemy-explosion-3.png │ │ │ ├── enemy-explosion-4.png │ │ │ ├── enemy-explosion-5.png │ │ │ ├── enemy-explosion-6.png │ │ │ └── enemy-explosion-preview.gif │ │ ├── shot-hit │ │ │ ├── shot-hit-1.png │ │ │ ├── shot-hit-2.png │ │ │ ├── shot-hit-3.png │ │ │ └── shot-hit-preview.gif │ │ ├── shot │ │ │ ├── shot-1.png │ │ │ ├── shot-2.png │ │ │ ├── shot-3.png │ │ │ └── shot-preview.gif │ │ └── turret │ │ │ ├── turret-1.png │ │ │ ├── turret-2.png │ │ │ ├── turret-3.png │ │ │ ├── turret-4.png │ │ │ ├── turret-5.png │ │ │ ├── turret-6.png │ │ │ └── turret-preview.gif │ ├── player │ │ ├── back-jump │ │ │ ├── back-jump-1.png │ │ │ ├── back-jump-2.png │ │ │ ├── back-jump-3.png │ │ │ ├── back-jump-4.png │ │ │ ├── back-jump-5.png │ │ │ ├── back-jump-6.png │ │ │ ├── back-jump-7.png │ │ │ └── back-jump-preview.gif │ │ ├── climb │ │ │ ├── climb-1.png │ │ │ ├── climb-2.png │ │ │ ├── climb-3.png │ │ │ ├── climb-4.png │ │ │ ├── climb-5.png │ │ │ ├── climb-6.png │ │ │ └── climb-preview.gif │ │ ├── crouch │ │ │ └── crouch.png │ │ ├── hurt │ │ │ └── hurt.png │ │ ├── idle │ │ │ ├── idle-1.png │ │ │ ├── idle-2.png │ │ │ ├── idle-3.png │ │ │ ├── idle-4.png │ │ │ └── idle-peview.gif │ │ ├── jump │ │ │ ├── jump-1.png │ │ │ ├── jump-2.png │ │ │ ├── jump-3.png │ │ │ ├── jump-4.png │ │ │ └── jump-preview.gif │ │ ├── run-shoot │ │ │ ├── run-shoot-1.png │ │ │ ├── run-shoot-2.png │ │ │ ├── run-shoot-3.png │ │ │ ├── run-shoot-4.png │ │ │ ├── run-shoot-5.png │ │ │ ├── run-shoot-6.png │ │ │ ├── run-shoot-7.png │ │ │ ├── run-shoot-8.png │ │ │ └── run-shoot-preview.gif │ │ ├── run │ │ │ ├── run-1.png │ │ │ ├── run-2.png │ │ │ ├── run-3.png │ │ │ ├── run-4.png │ │ │ ├── run-5.png │ │ │ ├── run-6.png │ │ │ ├── run-7.png │ │ │ ├── run-8.png │ │ │ └── run-preview.gif │ │ ├── shoot │ │ │ └── shoot.png │ │ └── walk │ │ │ ├── walk-1.png │ │ │ ├── walk-10.png │ │ │ ├── walk-11.png │ │ │ ├── walk-12.png │ │ │ ├── walk-13.png │ │ │ ├── walk-14.png │ │ │ ├── walk-15.png │ │ │ ├── walk-16.png │ │ │ ├── walk-2.png │ │ │ ├── walk-3.png │ │ │ ├── walk-4.png │ │ │ ├── walk-5.png │ │ │ ├── walk-6.png │ │ │ ├── walk-7.png │ │ │ ├── walk-8.png │ │ │ ├── walk-9.png │ │ │ └── walk-preview.gif │ └── vehicles │ │ ├── v-police.png │ │ ├── v-red.png │ │ ├── v-truck.png │ │ └── v-yellow.png │ └── public-license.txt ├── godot ├── Autoload │ ├── GlobalHolder.gdns │ ├── ImageHolder.gdns │ ├── ImageProcessor.gdns │ ├── ImageSaver.gdns │ ├── Logger.gdns │ ├── SpritesheetGenerator.gdns │ └── Startup.gd ├── DefaultEnv.tres ├── Fonts │ ├── FiraSans-Regular.ttf │ ├── FontBig.tres │ ├── FontDefault.tres │ └── FontSmall.tres ├── Icon.png ├── Icon.png.import ├── Main.gd ├── Main.tscn ├── RustLibrary.tres ├── Textures │ ├── BGChecker.png │ ├── BGChecker.png.import │ ├── LoadingIcon.png │ ├── LoadingIcon.png.import │ ├── Splash.png │ ├── Splash.png.import │ ├── Splash_highres.png │ └── Splash_highres.png.import ├── UI │ ├── AboutPopup.gdns │ ├── AboutPopup.tscn │ ├── BG.gd │ ├── BG.tscn │ ├── ImageView │ │ ├── ImageView.gd │ │ ├── ImageView.tscn │ │ ├── IntegerTextureRect.gd │ │ ├── IntegerTextureRect.tscn │ │ ├── ViewOptions.gd │ │ └── ViewOptions.tscn │ ├── LoadingPanel.gd │ ├── LoadingPanel.tscn │ ├── Menu.gd │ ├── Menu.tscn │ ├── ProgressBar.gd │ ├── ProgressBar.tscn │ ├── Resources │ │ ├── StyleboxBG.tres │ │ ├── StyleboxError.tres │ │ ├── StyleboxMessage.tres │ │ └── Theme.tres │ ├── Sidebar │ │ ├── Entries │ │ │ ├── Check.gd │ │ │ ├── Check.tscn │ │ │ ├── EntryBase.gd │ │ │ ├── EntryBase.tscn │ │ │ ├── Enum.gd │ │ │ ├── Enum.tscn │ │ │ ├── Header.tscn │ │ │ ├── NumFloat.tscn │ │ │ ├── NumInt.gd │ │ │ └── NumInt.tscn │ │ ├── Sidebar.gd │ │ └── Sidebar.tscn │ ├── Spritesheet │ │ ├── Spritesheet.gd │ │ ├── SpritesheetConfigBase.gd │ │ ├── SpritesheetConfigBase.tscn │ │ ├── SpritesheetConfigLoad.gd │ │ ├── SpritesheetConfigLoad.tscn │ │ ├── SpritesheetConfigSave.gd │ │ ├── SpritesheetConfigSave.tscn │ │ ├── SpritesheetTextureRect.gd │ │ ├── SpritesheetView.gd │ │ └── SpritesheetView.tscn │ ├── UI.gd │ └── UI.tscn ├── export_presets.cfg └── project.godot ├── logo ├── Logo_itch.png ├── Logo_itch_cover.png ├── Logo_small.png ├── Logo_unedited.png └── Logo_unedited.png.import ├── publish_windows.py ├── run_docker.sh └── rust ├── .gitignore ├── Cargo.lock ├── Cargo.toml ├── build.rs ├── rust-toolchain ├── rustfmt.toml └── src ├── about_popup.rs ├── datatypes.rs ├── frame.rs ├── global_holder.rs ├── image_holder.rs ├── image_processor.rs ├── image_saver.rs ├── lib.rs ├── logging.rs ├── spritesheet_generator.rs └── utility.rs /.dockerignore: -------------------------------------------------------------------------------- 1 | 2 | rust/target -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: bauxite 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 13 | -------------------------------------------------------------------------------- /.github/workflows/markdown-link-check-config.json: -------------------------------------------------------------------------------- 1 | { 2 | "aliveStatusCodes": [200, 403] 3 | } 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .mono 2 | .import 3 | bin 4 | examples/_nonfree_gifs 5 | examples/_interpolated 6 | 7 | *.dll 8 | *.so 9 | *.afphoto 10 | *.blend -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "rust-analyzer.cargo.loadOutDirsFromCheck": true, 3 | "editor.formatOnSave": true, 4 | "git.allowForcePush": false, 5 | } -------------------------------------------------------------------------------- /docker/Dockerfile: -------------------------------------------------------------------------------- 1 | # Since the "offical" Rust image doesn't have OpenCV 4, let's do it manually 2 | # Based on Ubuntu 20 3 | # See https://github.com/liuchong/docker-rustup/blob/master/dockerfiles/stable/Dockerfile 4 | 5 | # NOTE - run the Dockerfile from the parent dir using: 6 | # run_docker.sh 7 | 8 | FROM ubuntu:20.04 9 | 10 | # Get packages 11 | # A little hack for tzdata: https://stackoverflow.com/questions/44331836/apt-get-install-tzdata-noninteractive 12 | RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y \ 13 | clang \ 14 | libclang-dev \ 15 | libopencv-contrib4.2 \ 16 | libopencv-dev \ 17 | curl \ 18 | && rm -rf /var/lib/apt/lists/* 19 | 20 | # Update PATH for cargo 21 | ENV RUSTUP_HOME=/usr/local/rustup \ 22 | CARGO_HOME=/usr/local/cargo \ 23 | PATH=/usr/local/cargo/bin:$PATH 24 | 25 | # Install Rust toolchain, see https://rust-lang.github.io/rustup/installation/other.html 26 | RUN curl https://sh.rustup.rs -sSf | sh -s -- -y --default-toolchain nightly 27 | 28 | # Copy over files (.git is needed otherwise build.rs fails) 29 | WORKDIR /usr/src/bitmapflow/ 30 | COPY rust . 31 | COPY .git .git 32 | 33 | # Compile bitmapflow 34 | RUN cargo build --release 35 | -------------------------------------------------------------------------------- /examples/.gdignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/.gdignore -------------------------------------------------------------------------------- /examples/Hell-Hound-Files/GIFS/hell-hound-idle.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Hell-Hound-Files/GIFS/hell-hound-idle.gif -------------------------------------------------------------------------------- /examples/Hell-Hound-Files/GIFS/hell-hound-jump.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Hell-Hound-Files/GIFS/hell-hound-jump.gif -------------------------------------------------------------------------------- /examples/Hell-Hound-Files/GIFS/hell-hound-run.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Hell-Hound-Files/GIFS/hell-hound-run.gif -------------------------------------------------------------------------------- /examples/Hell-Hound-Files/GIFS/hell-hound-walk.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Hell-Hound-Files/GIFS/hell-hound-walk.gif -------------------------------------------------------------------------------- /examples/Hell-Hound-Files/PNG/hell-hound-idle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Hell-Hound-Files/PNG/hell-hound-idle.png -------------------------------------------------------------------------------- /examples/Hell-Hound-Files/PNG/hell-hound-jump.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Hell-Hound-Files/PNG/hell-hound-jump.png -------------------------------------------------------------------------------- /examples/Hell-Hound-Files/PNG/hell-hound-run.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Hell-Hound-Files/PNG/hell-hound-run.png -------------------------------------------------------------------------------- /examples/Hell-Hound-Files/PNG/hell-hound-walk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Hell-Hound-Files/PNG/hell-hound-walk.png -------------------------------------------------------------------------------- /examples/Hell-Hound-Files/public-license.txt: -------------------------------------------------------------------------------- 1 | Artwork created by Luis Zuno (@ansimuz) 2 | 3 | License for Everyone. This piece is under a CC-BY-3.0 License http://creativecommons.org/licenses/by/3.0/ 4 | You can copy, modify, distribute and perform the work, even for commercial purposes, as long as you give appropiate credit. Don't redistribute as is as Game Art. 5 | 6 | 7 | Get more Assets like this at: https://www.patreon.com/ansimuz 8 | 9 | -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/Explosion/GIF/explosion-animation.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/Explosion/GIF/explosion-animation.gif -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/Explosion/sprites/explosion-animation1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/Explosion/sprites/explosion-animation1.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/Explosion/sprites/explosion-animation2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/Explosion/sprites/explosion-animation2.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/Explosion/sprites/explosion-animation3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/Explosion/sprites/explosion-animation3.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/Explosion/sprites/explosion-animation4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/Explosion/sprites/explosion-animation4.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/Explosion/sprites/explosion-animation5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/Explosion/sprites/explosion-animation5.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/Explosion/sprites/explosion-animation6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/Explosion/sprites/explosion-animation6.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/Explosion/sprites/explosion-animation7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/Explosion/sprites/explosion-animation7.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/Explosion/sprites/explosion-animation8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/Explosion/sprites/explosion-animation8.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/Explosion/sprites/explosion-animation9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/Explosion/sprites/explosion-animation9.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/Explosion/spritesheet/explosion-animation.json: -------------------------------------------------------------------------------- 1 | { "frames": { 2 | "explosion-animation 0.ase": { 3 | "frame": { "x": 0, "y": 0, "w": 112, "h": 128 }, 4 | "rotated": false, 5 | "trimmed": false, 6 | "spriteSourceSize": { "x": 0, "y": 0, "w": 112, "h": 128 }, 7 | "sourceSize": { "w": 112, "h": 128 }, 8 | "duration": 70 9 | }, 10 | "explosion-animation 1.ase": { 11 | "frame": { "x": 112, "y": 0, "w": 112, "h": 128 }, 12 | "rotated": false, 13 | "trimmed": false, 14 | "spriteSourceSize": { "x": 0, "y": 0, "w": 112, "h": 128 }, 15 | "sourceSize": { "w": 112, "h": 128 }, 16 | "duration": 70 17 | }, 18 | "explosion-animation 2.ase": { 19 | "frame": { "x": 224, "y": 0, "w": 112, "h": 128 }, 20 | "rotated": false, 21 | "trimmed": false, 22 | "spriteSourceSize": { "x": 0, "y": 0, "w": 112, "h": 128 }, 23 | "sourceSize": { "w": 112, "h": 128 }, 24 | "duration": 70 25 | }, 26 | "explosion-animation 3.ase": { 27 | "frame": { "x": 336, "y": 0, "w": 112, "h": 128 }, 28 | "rotated": false, 29 | "trimmed": false, 30 | "spriteSourceSize": { "x": 0, "y": 0, "w": 112, "h": 128 }, 31 | "sourceSize": { "w": 112, "h": 128 }, 32 | "duration": 70 33 | }, 34 | "explosion-animation 4.ase": { 35 | "frame": { "x": 448, "y": 0, "w": 112, "h": 128 }, 36 | "rotated": false, 37 | "trimmed": false, 38 | "spriteSourceSize": { "x": 0, "y": 0, "w": 112, "h": 128 }, 39 | "sourceSize": { "w": 112, "h": 128 }, 40 | "duration": 70 41 | }, 42 | "explosion-animation 5.ase": { 43 | "frame": { "x": 560, "y": 0, "w": 112, "h": 128 }, 44 | "rotated": false, 45 | "trimmed": false, 46 | "spriteSourceSize": { "x": 0, "y": 0, "w": 112, "h": 128 }, 47 | "sourceSize": { "w": 112, "h": 128 }, 48 | "duration": 70 49 | }, 50 | "explosion-animation 6.ase": { 51 | "frame": { "x": 672, "y": 0, "w": 112, "h": 128 }, 52 | "rotated": false, 53 | "trimmed": false, 54 | "spriteSourceSize": { "x": 0, "y": 0, "w": 112, "h": 128 }, 55 | "sourceSize": { "w": 112, "h": 128 }, 56 | "duration": 70 57 | }, 58 | "explosion-animation 7.ase": { 59 | "frame": { "x": 784, "y": 0, "w": 112, "h": 128 }, 60 | "rotated": false, 61 | "trimmed": false, 62 | "spriteSourceSize": { "x": 0, "y": 0, "w": 112, "h": 128 }, 63 | "sourceSize": { "w": 112, "h": 128 }, 64 | "duration": 70 65 | }, 66 | "explosion-animation 8.ase": { 67 | "frame": { "x": 896, "y": 0, "w": 112, "h": 128 }, 68 | "rotated": false, 69 | "trimmed": false, 70 | "spriteSourceSize": { "x": 0, "y": 0, "w": 112, "h": 128 }, 71 | "sourceSize": { "w": 112, "h": 128 }, 72 | "duration": 70 73 | } 74 | }, 75 | "meta": { 76 | "app": "http://www.aseprite.org/", 77 | "version": "1.2.9", 78 | "image": "/Users/luiszuno/Documents/ansimuz resources/ART PACKS/Collections/side view Patreon Collection/1-sci-fi/Sprites/Explosion-Files/spritesheet/explosion-animation.png", 79 | "format": "I8", 80 | "size": { "w": 1008, "h": 128 }, 81 | "scale": "1", 82 | "frameTags": [ 83 | ], 84 | "layers": [ 85 | { "name": "Layer", "opacity": 255, "blendMode": "normal" } 86 | ], 87 | "slices": [ 88 | ] 89 | } 90 | } 91 | -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/Explosion/spritesheet/explosion-animation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/Explosion/spritesheet/explosion-animation.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/alien-flying-enemy/GIFS/alien-enemy-2-flying-preview.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/alien-flying-enemy/GIFS/alien-enemy-2-flying-preview.gif -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/alien-flying-enemy/GIFS/alien-enemy-2-flying.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/alien-flying-enemy/GIFS/alien-enemy-2-flying.gif -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/alien-flying-enemy/sprites/alien-enemy-flying1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/alien-flying-enemy/sprites/alien-enemy-flying1.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/alien-flying-enemy/sprites/alien-enemy-flying2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/alien-flying-enemy/sprites/alien-enemy-flying2.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/alien-flying-enemy/sprites/alien-enemy-flying3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/alien-flying-enemy/sprites/alien-enemy-flying3.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/alien-flying-enemy/sprites/alien-enemy-flying4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/alien-flying-enemy/sprites/alien-enemy-flying4.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/alien-flying-enemy/sprites/alien-enemy-flying5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/alien-flying-enemy/sprites/alien-enemy-flying5.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/alien-flying-enemy/sprites/alien-enemy-flying6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/alien-flying-enemy/sprites/alien-enemy-flying6.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/alien-flying-enemy/sprites/alien-enemy-flying7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/alien-flying-enemy/sprites/alien-enemy-flying7.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/alien-flying-enemy/sprites/alien-enemy-flying8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/alien-flying-enemy/sprites/alien-enemy-flying8.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/alien-walking-enemy/GIFS/alien-enemy-idle-CLEAR.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/alien-walking-enemy/GIFS/alien-enemy-idle-CLEAR.gif -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/alien-walking-enemy/GIFS/alien-enemy-idle.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/alien-walking-enemy/GIFS/alien-enemy-idle.gif -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/alien-walking-enemy/GIFS/alien-enemy-walk-CLEAR.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/alien-walking-enemy/GIFS/alien-enemy-walk-CLEAR.gif -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/alien-walking-enemy/GIFS/alien-enemy-walk.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/alien-walking-enemy/GIFS/alien-enemy-walk.gif -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/alien-walking-enemy/PNG/alien-enemy-idle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/alien-walking-enemy/PNG/alien-enemy-idle.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/alien-walking-enemy/PNG/alien-enemy-walk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/alien-walking-enemy/PNG/alien-enemy-walk.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/bipedal-Unit/Gif Previews/preview.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/bipedal-Unit/Gif Previews/preview.gif -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/bipedal-Unit/Gif Previews/transparent-preview.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/bipedal-Unit/Gif Previews/transparent-preview.gif -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/bipedal-Unit/PNG/bipedal-unit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/bipedal-Unit/PNG/bipedal-unit.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/bipedal-Unit/PNG/sprites/bipedal-unit1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/bipedal-Unit/PNG/sprites/bipedal-unit1.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/bipedal-Unit/PNG/sprites/bipedal-unit2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/bipedal-Unit/PNG/sprites/bipedal-unit2.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/bipedal-Unit/PNG/sprites/bipedal-unit3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/bipedal-Unit/PNG/sprites/bipedal-unit3.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/bipedal-Unit/PNG/sprites/bipedal-unit4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/bipedal-Unit/PNG/sprites/bipedal-unit4.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/bipedal-Unit/PNG/sprites/bipedal-unit5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/bipedal-Unit/PNG/sprites/bipedal-unit5.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/bipedal-Unit/PNG/sprites/bipedal-unit6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/bipedal-Unit/PNG/sprites/bipedal-unit6.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/bipedal-Unit/PNG/sprites/bipedal-unit7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/bipedal-Unit/PNG/sprites/bipedal-unit7.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/GIF Previews/crouch.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/GIF Previews/crouch.gif -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/GIF Previews/death.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/GIF Previews/death.gif -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/GIF Previews/draw-gun.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/GIF Previews/draw-gun.gif -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/GIF Previews/gun-walk.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/GIF Previews/gun-walk.gif -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/GIF Previews/punch.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/GIF Previews/punch.gif -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/GIF Previews/shot.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/GIF Previews/shot.gif -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/GIF Previews/walk.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/GIF Previews/walk.gif -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/crouch/Layer-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/crouch/Layer-1.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/crouch/Layer-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/crouch/Layer-2.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/crouch/Layer-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/crouch/Layer-3.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/crouch/Layer-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/crouch/Layer-4.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/crouch/Layer-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/crouch/Layer-5.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/crouch/Layer-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/crouch/Layer-6.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/death/Layer-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/death/Layer-1.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/death/Layer-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/death/Layer-2.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/death/Layer-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/death/Layer-3.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/death/Layer-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/death/Layer-4.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/death/Layer-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/death/Layer-5.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/draw gun/Layer-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/draw gun/Layer-1.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/draw gun/Layer-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/draw gun/Layer-2.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/draw gun/Layer-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/draw gun/Layer-3.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/draw gun/Layer-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/draw gun/Layer-4.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/gun-walk/Layer-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/gun-walk/Layer-1.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/gun-walk/Layer-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/gun-walk/Layer-2.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/gun-walk/Layer-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/gun-walk/Layer-3.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/gun-walk/Layer-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/gun-walk/Layer-4.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/gun-walk/Layer-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/gun-walk/Layer-5.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/gun-walk/Layer-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/gun-walk/Layer-6.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/punch/Layer-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/punch/Layer-1.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/punch/Layer-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/punch/Layer-2.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/punch/Layer-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/punch/Layer-3.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/punch/Layer-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/punch/Layer-4.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/shot/Layer-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/shot/Layer-1.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/shot/Layer-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/shot/Layer-2.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/shot/Layer-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/shot/Layer-3.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/walk/Layer-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/walk/Layer-1.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/walk/Layer-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/walk/Layer-2.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/walk/Layer-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/walk/Layer-3.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/walk/Layer-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/walk/Layer-4.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/walk/Layer-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/walk/Layer-5.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/walk/Layer-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/PNG/sprites/walk/Layer-6.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/PNG/spritesheets/crouch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/PNG/spritesheets/crouch.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/PNG/spritesheets/death.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/PNG/spritesheets/death.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/PNG/spritesheets/draw-gun.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/PNG/spritesheets/draw-gun.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/PNG/spritesheets/gun-walk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/PNG/spritesheets/gun-walk.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/PNG/spritesheets/punch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/PNG/spritesheets/punch.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/PNG/spritesheets/shot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/PNG/spritesheets/shot.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/cyberpunk-detective/PNG/spritesheets/walk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/cyberpunk-detective/PNG/spritesheets/walk.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/mech-unit/gifs previews/mech-unit.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/mech-unit/gifs previews/mech-unit.gif -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/mech-unit/sprites/mech-unit-export1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/mech-unit/sprites/mech-unit-export1.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/mech-unit/sprites/mech-unit-export10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/mech-unit/sprites/mech-unit-export10.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/mech-unit/sprites/mech-unit-export2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/mech-unit/sprites/mech-unit-export2.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/mech-unit/sprites/mech-unit-export3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/mech-unit/sprites/mech-unit-export3.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/mech-unit/sprites/mech-unit-export4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/mech-unit/sprites/mech-unit-export4.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/mech-unit/sprites/mech-unit-export5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/mech-unit/sprites/mech-unit-export5.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/mech-unit/sprites/mech-unit-export6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/mech-unit/sprites/mech-unit-export6.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/mech-unit/sprites/mech-unit-export7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/mech-unit/sprites/mech-unit-export7.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/mech-unit/sprites/mech-unit-export8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/mech-unit/sprites/mech-unit-export8.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/mech-unit/sprites/mech-unit-export9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/mech-unit/sprites/mech-unit-export9.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/mech-unit/spritesheet/mech-unit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/mech-unit/spritesheet/mech-unit.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/public-license.txt: -------------------------------------------------------------------------------- 1 | Artwork created by Luis Zuno @ansimuz 2 | 3 | License for Everyone. 4 | 5 | Public domain and free to use on whatever you want, personal or commercial. Credit is not required but appreciated. 6 | 7 | Feeling Grateful? 8 | You can support my work at https://www.patreon.com/ansimuz 9 | 10 | Get more Free Assetslike these at: http://www.pixelgameart.org 11 | 12 | -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/space-marine/GIFS/space-marine-die.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/space-marine/GIFS/space-marine-die.gif -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/space-marine/GIFS/space-marine-idle.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/space-marine/GIFS/space-marine-idle.gif -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/space-marine/GIFS/space-marine-jump.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/space-marine/GIFS/space-marine-jump.gif -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/space-marine/GIFS/space-marine-run.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/space-marine/GIFS/space-marine-run.gif -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/space-marine/GIFS/space-marine-shoot.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/space-marine/GIFS/space-marine-shoot.gif -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/space-marine/PNG/bullet.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/space-marine/PNG/bullet.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/space-marine/PNG/space-marine-die.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/space-marine/PNG/space-marine-die.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/space-marine/PNG/space-marine-idle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/space-marine/PNG/space-marine-idle.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/space-marine/PNG/space-marine-jump.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/space-marine/PNG/space-marine-jump.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/space-marine/PNG/space-marine-run.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/space-marine/PNG/space-marine-run.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/space-marine/PNG/space-marine-shoot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/space-marine/PNG/space-marine-shoot.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/space-marine/PNG/wall-impact-blast.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/space-marine/PNG/wall-impact-blast.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/spaceship-unit/Gifs Previews/preview-spaceship-unit.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/spaceship-unit/Gifs Previews/preview-spaceship-unit.gif -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/spaceship-unit/Gifs Previews/spaceship-unit.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/spaceship-unit/Gifs Previews/spaceship-unit.gif -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/spaceship-unit/Gifs Previews/thrust.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/spaceship-unit/Gifs Previews/thrust.gif -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/spaceship-unit/Gifs Previews/trasparent-with-thrusts.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/spaceship-unit/Gifs Previews/trasparent-with-thrusts.gif -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/spaceship-unit/PNG/separated sprites/spaceship-unit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/spaceship-unit/PNG/separated sprites/spaceship-unit.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/spaceship-unit/PNG/separated sprites/thrust.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/spaceship-unit/PNG/separated sprites/thrust.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/spaceship-unit/PNG/ship-unit-with-thrusts.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/spaceship-unit/PNG/ship-unit-with-thrusts.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/tank-unit/GIF Previews/tank-unit.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/tank-unit/GIF Previews/tank-unit.gif -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/tank-unit/PNG/tank-unit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/tank-unit/PNG/tank-unit.png -------------------------------------------------------------------------------- /examples/Sideview Sci-Fi/tank-unit/tank-unit-preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/Sideview Sci-Fi/tank-unit/tank-unit-preview.png -------------------------------------------------------------------------------- /examples/ars_notoria/acid2-14x67.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/ars_notoria/acid2-14x67.png -------------------------------------------------------------------------------- /examples/ars_notoria/andromalius-57x88.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/ars_notoria/andromalius-57x88.png -------------------------------------------------------------------------------- /examples/ars_notoria/disciple-45x51.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/ars_notoria/disciple-45x51.png -------------------------------------------------------------------------------- /examples/ars_notoria/flameball-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/ars_notoria/flameball-32x32.png -------------------------------------------------------------------------------- /examples/ars_notoria/gnu-120x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/ars_notoria/gnu-120x100.png -------------------------------------------------------------------------------- /examples/ars_notoria/mage-1-85x94.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/ars_notoria/mage-1-85x94.png -------------------------------------------------------------------------------- /examples/ars_notoria/mage-2-122x110.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/ars_notoria/mage-2-122x110.png -------------------------------------------------------------------------------- /examples/ars_notoria/mage-3-87x110.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/ars_notoria/mage-3-87x110.png -------------------------------------------------------------------------------- /examples/ars_notoria/mage-bullet-13x13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/ars_notoria/mage-bullet-13x13.png -------------------------------------------------------------------------------- /examples/ars_notoria/minion-45x66.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/ars_notoria/minion-45x66.png -------------------------------------------------------------------------------- /examples/ars_notoria/shadow-80x70.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/ars_notoria/shadow-80x70.png -------------------------------------------------------------------------------- /examples/ars_notoria/tentacles-25x90.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/ars_notoria/tentacles-25x90.png -------------------------------------------------------------------------------- /examples/example.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/example.gif -------------------------------------------------------------------------------- /examples/underwater-diving-files/GIF/FX/bubbles.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/underwater-diving-files/GIF/FX/bubbles.gif -------------------------------------------------------------------------------- /examples/underwater-diving-files/GIF/FX/enemy-death.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/underwater-diving-files/GIF/FX/enemy-death.gif -------------------------------------------------------------------------------- /examples/underwater-diving-files/GIF/FX/explosion-big.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/underwater-diving-files/GIF/FX/explosion-big.gif -------------------------------------------------------------------------------- /examples/underwater-diving-files/GIF/FX/explosion-small.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/underwater-diving-files/GIF/FX/explosion-small.gif -------------------------------------------------------------------------------- /examples/underwater-diving-files/GIF/FX/explosion.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/underwater-diving-files/GIF/FX/explosion.gif -------------------------------------------------------------------------------- /examples/underwater-diving-files/GIF/enemies/fish-big.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/underwater-diving-files/GIF/enemies/fish-big.gif -------------------------------------------------------------------------------- /examples/underwater-diving-files/GIF/enemies/fish-dart.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/underwater-diving-files/GIF/enemies/fish-dart.gif -------------------------------------------------------------------------------- /examples/underwater-diving-files/GIF/enemies/fish.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/underwater-diving-files/GIF/enemies/fish.gif -------------------------------------------------------------------------------- /examples/underwater-diving-files/GIF/player/player-fast.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/underwater-diving-files/GIF/player/player-fast.gif -------------------------------------------------------------------------------- /examples/underwater-diving-files/GIF/player/player-hurt.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/underwater-diving-files/GIF/player/player-hurt.gif -------------------------------------------------------------------------------- /examples/underwater-diving-files/GIF/player/player-idle.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/underwater-diving-files/GIF/player/player-idle.gif -------------------------------------------------------------------------------- /examples/underwater-diving-files/GIF/player/player-rush.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/underwater-diving-files/GIF/player/player-rush.gif -------------------------------------------------------------------------------- /examples/underwater-diving-files/GIF/player/player-swiming.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/underwater-diving-files/GIF/player/player-swiming.gif -------------------------------------------------------------------------------- /examples/underwater-diving-files/PNG/FX/bubbles.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/underwater-diving-files/PNG/FX/bubbles.png -------------------------------------------------------------------------------- /examples/underwater-diving-files/PNG/FX/enemy-death.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/underwater-diving-files/PNG/FX/enemy-death.png -------------------------------------------------------------------------------- /examples/underwater-diving-files/PNG/FX/explosion-big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/underwater-diving-files/PNG/FX/explosion-big.png -------------------------------------------------------------------------------- /examples/underwater-diving-files/PNG/FX/explosion-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/underwater-diving-files/PNG/FX/explosion-small.png -------------------------------------------------------------------------------- /examples/underwater-diving-files/PNG/FX/explosion.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/underwater-diving-files/PNG/FX/explosion.png -------------------------------------------------------------------------------- /examples/underwater-diving-files/PNG/enemies/fish-big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/underwater-diving-files/PNG/enemies/fish-big.png -------------------------------------------------------------------------------- /examples/underwater-diving-files/PNG/enemies/fish-dart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/underwater-diving-files/PNG/enemies/fish-dart.png -------------------------------------------------------------------------------- /examples/underwater-diving-files/PNG/enemies/fish.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/underwater-diving-files/PNG/enemies/fish.png -------------------------------------------------------------------------------- /examples/underwater-diving-files/PNG/enemies/mine-big.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/underwater-diving-files/PNG/enemies/mine-big.png -------------------------------------------------------------------------------- /examples/underwater-diving-files/PNG/enemies/mine-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/underwater-diving-files/PNG/enemies/mine-small.png -------------------------------------------------------------------------------- /examples/underwater-diving-files/PNG/enemies/mine.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/underwater-diving-files/PNG/enemies/mine.png -------------------------------------------------------------------------------- /examples/underwater-diving-files/PNG/player/player-fast.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/underwater-diving-files/PNG/player/player-fast.png -------------------------------------------------------------------------------- /examples/underwater-diving-files/PNG/player/player-hurt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/underwater-diving-files/PNG/player/player-hurt.png -------------------------------------------------------------------------------- /examples/underwater-diving-files/PNG/player/player-idle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/underwater-diving-files/PNG/player/player-idle.png -------------------------------------------------------------------------------- /examples/underwater-diving-files/PNG/player/player-rush.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/underwater-diving-files/PNG/player/player-rush.png -------------------------------------------------------------------------------- /examples/underwater-diving-files/PNG/player/player-swiming.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/underwater-diving-files/PNG/player/player-swiming.png -------------------------------------------------------------------------------- /examples/underwater-diving-files/public-license.txt: -------------------------------------------------------------------------------- 1 | Artwork created by Luis Zuno @ansimuz 2 | 3 | License for Everyone. 4 | 5 | Public domain and free to use on whatever you want, personal or commercial. Credit is not required but appreciated. 6 | 7 | Feeling Grateful? 8 | You can support my work at https://www.patreon.com/ansimuz 9 | 10 | Get more Free Assetslike these at: http://www.pixelgameart.org 11 | 12 | Additional credits 13 | Demo Music by Pascal Belisle 14 | 15 | pacethemusician@hotmail.com 16 | https://soundcloud.com/pascalbelisle 17 | -------------------------------------------------------------------------------- /examples/warped_caves_files/GIF/Fx/enemy-death.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/GIF/Fx/enemy-death.gif -------------------------------------------------------------------------------- /examples/warped_caves_files/GIF/Fx/impact.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/GIF/Fx/impact.gif -------------------------------------------------------------------------------- /examples/warped_caves_files/GIF/Fx/power-up.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/GIF/Fx/power-up.gif -------------------------------------------------------------------------------- /examples/warped_caves_files/GIF/Fx/shot.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/GIF/Fx/shot.gif -------------------------------------------------------------------------------- /examples/warped_caves_files/GIF/enemies/crab-idle.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/GIF/enemies/crab-idle.gif -------------------------------------------------------------------------------- /examples/warped_caves_files/GIF/enemies/crab-walk.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/GIF/enemies/crab-walk.gif -------------------------------------------------------------------------------- /examples/warped_caves_files/GIF/enemies/jumper-idle.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/GIF/enemies/jumper-idle.gif -------------------------------------------------------------------------------- /examples/warped_caves_files/GIF/enemies/jumper-jump.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/GIF/enemies/jumper-jump.gif -------------------------------------------------------------------------------- /examples/warped_caves_files/GIF/enemies/octopus.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/GIF/enemies/octopus.gif -------------------------------------------------------------------------------- /examples/warped_caves_files/GIF/player/player-cling.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/GIF/player/player-cling.gif -------------------------------------------------------------------------------- /examples/warped_caves_files/GIF/player/player-duck.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/GIF/player/player-duck.gif -------------------------------------------------------------------------------- /examples/warped_caves_files/GIF/player/player-hurt.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/GIF/player/player-hurt.gif -------------------------------------------------------------------------------- /examples/warped_caves_files/GIF/player/player-idle.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/GIF/player/player-idle.gif -------------------------------------------------------------------------------- /examples/warped_caves_files/GIF/player/player-jump-example.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/GIF/player/player-jump-example.gif -------------------------------------------------------------------------------- /examples/warped_caves_files/GIF/player/player-jump.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/GIF/player/player-jump.gif -------------------------------------------------------------------------------- /examples/warped_caves_files/GIF/player/player-run-shoot.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/GIF/player/player-run-shoot.gif -------------------------------------------------------------------------------- /examples/warped_caves_files/GIF/player/player-run.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/GIF/player/player-run.gif -------------------------------------------------------------------------------- /examples/warped_caves_files/GIF/player/player-shoot-up.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/GIF/player/player-shoot-up.gif -------------------------------------------------------------------------------- /examples/warped_caves_files/GIF/player/player-stand.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/GIF/player/player-stand.gif -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/Fx/enemy-death/enemy-death-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/Fx/enemy-death/enemy-death-1.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/Fx/enemy-death/enemy-death-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/Fx/enemy-death/enemy-death-2.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/Fx/enemy-death/enemy-death-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/Fx/enemy-death/enemy-death-3.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/Fx/enemy-death/enemy-death-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/Fx/enemy-death/enemy-death-4.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/Fx/enemy-death/enemy-death-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/Fx/enemy-death/enemy-death-5.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/Fx/impact/impact-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/Fx/impact/impact-1.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/Fx/impact/impact-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/Fx/impact/impact-2.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/Fx/impact/impact-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/Fx/impact/impact-3.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/Fx/impact/impact-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/Fx/impact/impact-4.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/Fx/impact/impact-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/Fx/impact/impact-5.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/Fx/power-up/power-up-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/Fx/power-up/power-up-1.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/Fx/power-up/power-up-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/Fx/power-up/power-up-2.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/Fx/power-up/power-up-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/Fx/power-up/power-up-3.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/Fx/power-up/power-up-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/Fx/power-up/power-up-4.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/Fx/power-up/power-up-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/Fx/power-up/power-up-5.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/Fx/power-up/power-up-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/Fx/power-up/power-up-6.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/Fx/power-up/power-up-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/Fx/power-up/power-up-7.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/Fx/shot/shot-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/Fx/shot/shot-1.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/Fx/shot/shot-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/Fx/shot/shot-2.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/enemies/crab-idle/crab-idle-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/enemies/crab-idle/crab-idle-1.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/enemies/crab-idle/crab-idle-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/enemies/crab-idle/crab-idle-2.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/enemies/crab-idle/crab-idle-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/enemies/crab-idle/crab-idle-3.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/enemies/crab-idle/crab-idle-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/enemies/crab-idle/crab-idle-4.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/enemies/crab-walk/crab-walk-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/enemies/crab-walk/crab-walk-1.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/enemies/crab-walk/crab-walk-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/enemies/crab-walk/crab-walk-2.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/enemies/crab-walk/crab-walk-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/enemies/crab-walk/crab-walk-3.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/enemies/crab-walk/crab-walk-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/enemies/crab-walk/crab-walk-4.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/enemies/jumper-idle/jumper-idle-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/enemies/jumper-idle/jumper-idle-1.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/enemies/jumper-idle/jumper-idle-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/enemies/jumper-idle/jumper-idle-2.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/enemies/jumper-idle/jumper-idle-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/enemies/jumper-idle/jumper-idle-3.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/enemies/jumper-idle/jumper-idle-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/enemies/jumper-idle/jumper-idle-4.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/enemies/jumper-jump/jumper-jump.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/enemies/jumper-jump/jumper-jump.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/enemies/octopus/octopus-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/enemies/octopus/octopus-1.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/enemies/octopus/octopus-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/enemies/octopus/octopus-2.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/enemies/octopus/octopus-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/enemies/octopus/octopus-3.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/enemies/octopus/octopus-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/enemies/octopus/octopus-4.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/player/player-cling/player-cling.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/player/player-cling/player-cling.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/player/player-duck/player-duck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/player/player-duck/player-duck.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/player/player-hurt/player-hurt-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/player/player-hurt/player-hurt-1.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/player/player-hurt/player-hurt-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/player/player-hurt/player-hurt-2.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/player/player-idle/player-idle-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/player/player-idle/player-idle-1.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/player/player-idle/player-idle-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/player/player-idle/player-idle-2.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/player/player-idle/player-idle-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/player/player-idle/player-idle-3.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/player/player-idle/player-idle-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/player/player-idle/player-idle-4.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/player/player-jump/player-jump-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/player/player-jump/player-jump-1.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/player/player-jump/player-jump-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/player/player-jump/player-jump-2.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/player/player-jump/player-jump-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/player/player-jump/player-jump-3.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/player/player-jump/player-jump-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/player/player-jump/player-jump-4.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/player/player-jump/player-jump-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/player/player-jump/player-jump-5.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/player/player-jump/player-jump-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/player/player-jump/player-jump-6.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/player/player-run-shot/player-run-shot-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/player/player-run-shot/player-run-shot-1.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/player/player-run-shot/player-run-shot-10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/player/player-run-shot/player-run-shot-10.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/player/player-run-shot/player-run-shot-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/player/player-run-shot/player-run-shot-2.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/player/player-run-shot/player-run-shot-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/player/player-run-shot/player-run-shot-3.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/player/player-run-shot/player-run-shot-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/player/player-run-shot/player-run-shot-4.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/player/player-run-shot/player-run-shot-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/player/player-run-shot/player-run-shot-5.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/player/player-run-shot/player-run-shot-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/player/player-run-shot/player-run-shot-6.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/player/player-run-shot/player-run-shot-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/player/player-run-shot/player-run-shot-7.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/player/player-run-shot/player-run-shot-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/player/player-run-shot/player-run-shot-8.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/player/player-run-shot/player-run-shot-9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/player/player-run-shot/player-run-shot-9.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/player/player-run/player-run-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/player/player-run/player-run-1.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/player/player-run/player-run-10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/player/player-run/player-run-10.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/player/player-run/player-run-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/player/player-run/player-run-2.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/player/player-run/player-run-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/player/player-run/player-run-3.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/player/player-run/player-run-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/player/player-run/player-run-4.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/player/player-run/player-run-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/player/player-run/player-run-5.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/player/player-run/player-run-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/player/player-run/player-run-6.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/player/player-run/player-run-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/player/player-run/player-run-7.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/player/player-run/player-run-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/player/player-run/player-run-8.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/player/player-run/player-run-9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/player/player-run/player-run-9.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/player/player-shoot-up/player-shoot-up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/player/player-shoot-up/player-shoot-up.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/player/player-stand/player-stand-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/player/player-stand/player-stand-1.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/player/player-stand/player-stand-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/player/player-stand/player-stand-2.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/sprites/player/player-stand/player-stand-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/sprites/player/player-stand/player-stand-3.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/spritesheets/Fx/enemy-death.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/spritesheets/Fx/enemy-death.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/spritesheets/Fx/impact.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/spritesheets/Fx/impact.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/spritesheets/Fx/power-up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/spritesheets/Fx/power-up.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/spritesheets/Fx/shot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/spritesheets/Fx/shot.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/spritesheets/enemies/crab-idle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/spritesheets/enemies/crab-idle.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/spritesheets/enemies/crab-walk.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/spritesheets/enemies/crab-walk.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/spritesheets/enemies/jumper-idle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/spritesheets/enemies/jumper-idle.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/spritesheets/enemies/jumper-jump.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/spritesheets/enemies/jumper-jump.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/spritesheets/enemies/octopus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/spritesheets/enemies/octopus.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/spritesheets/player/player-cling.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/spritesheets/player/player-cling.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/spritesheets/player/player-duck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/spritesheets/player/player-duck.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/spritesheets/player/player-hurt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/spritesheets/player/player-hurt.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/spritesheets/player/player-idle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/spritesheets/player/player-idle.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/spritesheets/player/player-jump.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/spritesheets/player/player-jump.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/spritesheets/player/player-run-shoot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/spritesheets/player/player-run-shoot.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/spritesheets/player/player-run.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/spritesheets/player/player-run.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/spritesheets/player/player-shoot-up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/spritesheets/player/player-shoot-up.png -------------------------------------------------------------------------------- /examples/warped_caves_files/PNG/spritesheets/player/player-stand.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_caves_files/PNG/spritesheets/player/player-stand.png -------------------------------------------------------------------------------- /examples/warped_caves_files/public-license.txt: -------------------------------------------------------------------------------- 1 | Artwork created by Luis Zuno (@ansimuz) 2 | 3 | License for Everyone. This piece is under a CC-BY-3.0 License http://creativecommons.org/licenses/by/3.0/ You can copy, modify, distribute and perform the work, even for commercial purposes, as long as you give appropiate credit. You are not require to credit this work if you are or had been a Patreon Supporter at https://www.patreon.com/ansimuz 4 | 5 | Get more Free Assetslike these at: http://www.pixelgameart.org 6 | 7 | Music by Pascal Belisle 8 | 9 | www.patreon.com/thetoadz 10 | www.soundcloud.com/thetoadz 11 | 12 | Music License 13 | You are free to use the music in your projects as long as you give appropriate credit. 14 | 15 | -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/misc/drone/drone-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/misc/drone/drone-1.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/misc/drone/drone-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/misc/drone/drone-2.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/misc/drone/drone-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/misc/drone/drone-3.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/misc/drone/drone-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/misc/drone/drone-4.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/misc/drone/drone_preview.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/misc/drone/drone_preview.gif -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/misc/enemy-explosion/enemy-explosion-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/misc/enemy-explosion/enemy-explosion-1.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/misc/enemy-explosion/enemy-explosion-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/misc/enemy-explosion/enemy-explosion-2.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/misc/enemy-explosion/enemy-explosion-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/misc/enemy-explosion/enemy-explosion-3.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/misc/enemy-explosion/enemy-explosion-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/misc/enemy-explosion/enemy-explosion-4.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/misc/enemy-explosion/enemy-explosion-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/misc/enemy-explosion/enemy-explosion-5.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/misc/enemy-explosion/enemy-explosion-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/misc/enemy-explosion/enemy-explosion-6.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/misc/enemy-explosion/enemy-explosion-preview.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/misc/enemy-explosion/enemy-explosion-preview.gif -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/misc/shot-hit/shot-hit-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/misc/shot-hit/shot-hit-1.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/misc/shot-hit/shot-hit-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/misc/shot-hit/shot-hit-2.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/misc/shot-hit/shot-hit-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/misc/shot-hit/shot-hit-3.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/misc/shot-hit/shot-hit-preview.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/misc/shot-hit/shot-hit-preview.gif -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/misc/shot/shot-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/misc/shot/shot-1.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/misc/shot/shot-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/misc/shot/shot-2.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/misc/shot/shot-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/misc/shot/shot-3.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/misc/shot/shot-preview.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/misc/shot/shot-preview.gif -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/misc/turret/turret-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/misc/turret/turret-1.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/misc/turret/turret-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/misc/turret/turret-2.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/misc/turret/turret-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/misc/turret/turret-3.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/misc/turret/turret-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/misc/turret/turret-4.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/misc/turret/turret-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/misc/turret/turret-5.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/misc/turret/turret-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/misc/turret/turret-6.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/misc/turret/turret-preview.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/misc/turret/turret-preview.gif -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/back-jump/back-jump-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/back-jump/back-jump-1.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/back-jump/back-jump-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/back-jump/back-jump-2.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/back-jump/back-jump-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/back-jump/back-jump-3.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/back-jump/back-jump-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/back-jump/back-jump-4.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/back-jump/back-jump-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/back-jump/back-jump-5.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/back-jump/back-jump-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/back-jump/back-jump-6.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/back-jump/back-jump-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/back-jump/back-jump-7.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/back-jump/back-jump-preview.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/back-jump/back-jump-preview.gif -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/climb/climb-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/climb/climb-1.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/climb/climb-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/climb/climb-2.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/climb/climb-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/climb/climb-3.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/climb/climb-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/climb/climb-4.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/climb/climb-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/climb/climb-5.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/climb/climb-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/climb/climb-6.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/climb/climb-preview.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/climb/climb-preview.gif -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/crouch/crouch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/crouch/crouch.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/hurt/hurt.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/hurt/hurt.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/idle/idle-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/idle/idle-1.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/idle/idle-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/idle/idle-2.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/idle/idle-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/idle/idle-3.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/idle/idle-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/idle/idle-4.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/idle/idle-peview.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/idle/idle-peview.gif -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/jump/jump-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/jump/jump-1.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/jump/jump-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/jump/jump-2.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/jump/jump-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/jump/jump-3.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/jump/jump-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/jump/jump-4.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/jump/jump-preview.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/jump/jump-preview.gif -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/run-shoot/run-shoot-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/run-shoot/run-shoot-1.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/run-shoot/run-shoot-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/run-shoot/run-shoot-2.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/run-shoot/run-shoot-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/run-shoot/run-shoot-3.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/run-shoot/run-shoot-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/run-shoot/run-shoot-4.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/run-shoot/run-shoot-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/run-shoot/run-shoot-5.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/run-shoot/run-shoot-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/run-shoot/run-shoot-6.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/run-shoot/run-shoot-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/run-shoot/run-shoot-7.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/run-shoot/run-shoot-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/run-shoot/run-shoot-8.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/run-shoot/run-shoot-preview.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/run-shoot/run-shoot-preview.gif -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/run/run-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/run/run-1.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/run/run-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/run/run-2.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/run/run-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/run/run-3.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/run/run-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/run/run-4.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/run/run-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/run/run-5.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/run/run-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/run/run-6.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/run/run-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/run/run-7.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/run/run-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/run/run-8.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/run/run-preview.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/run/run-preview.gif -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/shoot/shoot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/shoot/shoot.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/walk/walk-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/walk/walk-1.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/walk/walk-10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/walk/walk-10.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/walk/walk-11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/walk/walk-11.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/walk/walk-12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/walk/walk-12.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/walk/walk-13.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/walk/walk-13.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/walk/walk-14.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/walk/walk-14.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/walk/walk-15.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/walk/walk-15.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/walk/walk-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/walk/walk-16.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/walk/walk-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/walk/walk-2.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/walk/walk-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/walk/walk-3.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/walk/walk-4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/walk/walk-4.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/walk/walk-5.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/walk/walk-5.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/walk/walk-6.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/walk/walk-6.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/walk/walk-7.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/walk/walk-7.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/walk/walk-8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/walk/walk-8.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/walk/walk-9.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/walk/walk-9.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/player/walk/walk-preview.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/player/walk/walk-preview.gif -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/vehicles/v-police.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/vehicles/v-police.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/vehicles/v-red.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/vehicles/v-red.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/vehicles/v-truck.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/vehicles/v-truck.png -------------------------------------------------------------------------------- /examples/warped_city_files/SPRITES/vehicles/v-yellow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/examples/warped_city_files/SPRITES/vehicles/v-yellow.png -------------------------------------------------------------------------------- /examples/warped_city_files/public-license.txt: -------------------------------------------------------------------------------- 1 | Artwork created by Luis Zuno @ansimuz 2 | 3 | License for Everyone. 4 | 5 | Public domain and free to use on whatever you want, personal or commercial. Credit is not required but appreciated. 6 | 7 | Feeling Grateful? 8 | You can support my work at https://www.patreon.com/ansimuz 9 | 10 | Get more Free Assetslike these at: http://www.pixelgameart.org 11 | 12 | Music by Pascal Belisle 13 | 14 | www.patreon.com/thetoadz 15 | www.soundcloud.com/thetoadz 16 | 17 | Music License 18 | You are free to use the music in your projects as long as you give appropriate credit. 19 | 20 | 21 | -------------------------------------------------------------------------------- /godot/Autoload/GlobalHolder.gdns: -------------------------------------------------------------------------------- 1 | [gd_resource type="NativeScript" load_steps=2 format=2] 2 | 3 | [ext_resource path="res://RustLibrary.tres" type="GDNativeLibrary" id=1] 4 | 5 | [resource] 6 | class_name = "GlobalHolder" 7 | library = ExtResource( 1 ) 8 | -------------------------------------------------------------------------------- /godot/Autoload/ImageHolder.gdns: -------------------------------------------------------------------------------- 1 | [gd_resource type="NativeScript" load_steps=2 format=2] 2 | 3 | [ext_resource path="res://RustLibrary.tres" type="GDNativeLibrary" id=1] 4 | 5 | [resource] 6 | resource_name = "ImageHolder" 7 | class_name = "ImageHolder" 8 | library = ExtResource( 1 ) 9 | -------------------------------------------------------------------------------- /godot/Autoload/ImageProcessor.gdns: -------------------------------------------------------------------------------- 1 | [gd_resource type="NativeScript" load_steps=2 format=2] 2 | 3 | [ext_resource path="res://RustLibrary.tres" type="GDNativeLibrary" id=1] 4 | 5 | [resource] 6 | resource_name = "ImageProcessor" 7 | class_name = "ImageProcessor" 8 | library = ExtResource( 1 ) 9 | -------------------------------------------------------------------------------- /godot/Autoload/ImageSaver.gdns: -------------------------------------------------------------------------------- 1 | [gd_resource type="NativeScript" load_steps=2 format=2] 2 | 3 | [ext_resource path="res://RustLibrary.tres" type="GDNativeLibrary" id=1] 4 | 5 | [resource] 6 | resource_name = "ImageSaver" 7 | class_name = "ImageSaver" 8 | library = ExtResource( 1 ) 9 | -------------------------------------------------------------------------------- /godot/Autoload/Logger.gdns: -------------------------------------------------------------------------------- 1 | [gd_resource type="NativeScript" load_steps=2 format=2] 2 | 3 | [ext_resource path="res://RustLibrary.tres" type="GDNativeLibrary" id=1] 4 | 5 | [resource] 6 | class_name = "Logger" 7 | library = ExtResource( 1 ) 8 | -------------------------------------------------------------------------------- /godot/Autoload/SpritesheetGenerator.gdns: -------------------------------------------------------------------------------- 1 | [gd_resource type="NativeScript" load_steps=2 format=2] 2 | 3 | [ext_resource path="res://RustLibrary.tres" type="GDNativeLibrary" id=1] 4 | 5 | [resource] 6 | class_name = "SpritesheetGenerator" 7 | library = ExtResource( 1 ) 8 | -------------------------------------------------------------------------------- /godot/Autoload/Startup.gd: -------------------------------------------------------------------------------- 1 | extends Node 2 | 3 | func _ready(): 4 | var screen_size = OS.get_screen_size(0) 5 | OS.window_size = screen_size * 0.75 6 | 7 | var window_size = OS.get_window_size() 8 | OS.set_window_position(screen_size*0.5 - window_size*0.5) 9 | 10 | check_rustlib() 11 | 12 | func check_rustlib(): 13 | # Check if the user extracted the zip file properly 14 | 15 | var library_file = File.new() 16 | var library_path = preload("res://RustLibrary.tres").get_current_library_path() 17 | 18 | if !library_file.file_exists(library_path): 19 | OS.alert("ERROR: Failed to find %s! Did you extract the zip file before running Bitmapflow?" % library_path); 20 | get_tree().quit() 21 | else: 22 | Logger.info("RustLibrary %s found" % library_path) 23 | -------------------------------------------------------------------------------- /godot/DefaultEnv.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="Environment" load_steps=2 format=2] 2 | 3 | [sub_resource type="ProceduralSky" id=1] 4 | 5 | [resource] 6 | background_mode = 2 7 | background_sky = SubResource( 1 ) 8 | -------------------------------------------------------------------------------- /godot/Fonts/FiraSans-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/godot/Fonts/FiraSans-Regular.ttf -------------------------------------------------------------------------------- /godot/Fonts/FontBig.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="DynamicFont" load_steps=2 format=2] 2 | 3 | [ext_resource path="res://Fonts/FiraSans-Regular.ttf" type="DynamicFontData" id=1] 4 | 5 | [resource] 6 | size = 30 7 | outline_size = 1 8 | outline_color = Color( 0, 0, 0, 0.439216 ) 9 | font_data = ExtResource( 1 ) 10 | -------------------------------------------------------------------------------- /godot/Fonts/FontDefault.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="DynamicFont" load_steps=2 format=2] 2 | 3 | [ext_resource path="res://Fonts/FiraSans-Regular.ttf" type="DynamicFontData" id=1] 4 | 5 | [resource] 6 | size = 15 7 | outline_size = 1 8 | outline_color = Color( 0, 0, 0, 0.439216 ) 9 | font_data = ExtResource( 1 ) 10 | -------------------------------------------------------------------------------- /godot/Fonts/FontSmall.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="DynamicFont" load_steps=2 format=2] 2 | 3 | [ext_resource path="res://Fonts/FiraSans-Regular.ttf" type="DynamicFontData" id=1] 4 | 5 | [resource] 6 | size = 12 7 | outline_size = 1 8 | outline_color = Color( 0, 0, 0, 0.439216 ) 9 | font_data = ExtResource( 1 ) 10 | -------------------------------------------------------------------------------- /godot/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/godot/Icon.png -------------------------------------------------------------------------------- /godot/Icon.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/Icon.png-33e63688031d53466d4d656c73cf10ca.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://Icon.png" 13 | dest_files=[ "res://.import/Icon.png-33e63688031d53466d4d656c73cf10ca.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | stream=false 32 | size_limit=0 33 | detect_3d=true 34 | svg/scale=1.0 35 | -------------------------------------------------------------------------------- /godot/Main.gd: -------------------------------------------------------------------------------- 1 | # warning-ignore-all:return_value_discarded 2 | extends Node 3 | 4 | func _enter_tree(): 5 | 6 | # Since singleton signals cannot be connected in the GUI, we need to do this via script 7 | 8 | # NOTE: this needs to be done in _enter_tree(), NOT ready(). 9 | # This is because some children emit a signal in their ready() callback. 10 | # And children's ready() is called before this ready(). 11 | # So, that would cause the signal to be sent BEFORE the signal is connected to anything. 12 | # So nothing happens. 13 | 14 | ImageHolder.connect("image_loaded", ImageProcessor, "_on_imageholder_image_loaded") 15 | ImageHolder.connect("image_loaded", $UI, "_on_ImageHolder_image_loaded") 16 | ImageHolder.connect("image_load_failure", $UI, "_on_ImageHolder_error_occured") 17 | 18 | ImageProcessor.connect("image_processed", ImageHolder, "_on_imageprocessor_image_processed") 19 | ImageProcessor.connect("error_occured", $UI, "_on_ImageProcessor_error_occured") 20 | ImageProcessor.connect("image_processed", $UI, "_on_ImageProcessor_image_processed") 21 | ImageProcessor.connect("made_progress", $UI, "_on_ImageProcessor_made_progress") 22 | 23 | ImageSaver.connect("image_save_failure", $UI, "_on_ImageSaver_image_save_failure") 24 | ImageSaver.connect("image_save_success", $UI, "_on_ImageSaver_image_save_success") 25 | 26 | $UI.connect("loaded_gif", ImageHolder, "_on_ui_loaded_gif") 27 | $UI.connect("loaded_separate_frames", ImageHolder, "_on_ui_loaded_separate_frames") 28 | $UI.connect("loaded_spritesheet", ImageHolder, "_on_ui_loaded_spritesheet") 29 | $UI.connect("img_params_changed", ImageProcessor, "_on_ui_img_params_changed") 30 | $UI.connect("exported_gif", ImageSaver, "_on_ui_exported_gif") 31 | $UI.connect("exported_separate_frames", ImageSaver, "_on_ui_exported_separate_frames") 32 | $UI.connect("exported_spritesheet", ImageSaver, "_on_ui_exported_spritesheet") 33 | -------------------------------------------------------------------------------- /godot/Main.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=3 format=2] 2 | 3 | [ext_resource path="res://UI/UI.tscn" type="PackedScene" id=1] 4 | [ext_resource path="res://Main.gd" type="Script" id=6] 5 | 6 | [node name="Main" type="Node"] 7 | script = ExtResource( 6 ) 8 | 9 | [node name="UI" parent="." instance=ExtResource( 1 )] 10 | -------------------------------------------------------------------------------- /godot/RustLibrary.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="GDNativeLibrary" format=2] 2 | 3 | [resource] 4 | entry/Windows.64 = "res://bitmapflow_rust.dll" 5 | entry/X11.64 = "res://libbitmapflow_rust.so" 6 | entry/Server = "res://libbitmapflow_rust.so" 7 | dependency/Windows.64 = [ ] 8 | dependency/X11.64 = [ ] 9 | -------------------------------------------------------------------------------- /godot/Textures/BGChecker.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/godot/Textures/BGChecker.png -------------------------------------------------------------------------------- /godot/Textures/BGChecker.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/BGChecker.png-fb01bcb9bf90e6459ac19fd55f49231b.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://Textures/BGChecker.png" 13 | dest_files=[ "res://.import/BGChecker.png-fb01bcb9bf90e6459ac19fd55f49231b.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | stream=false 32 | size_limit=0 33 | detect_3d=true 34 | svg/scale=1.0 35 | -------------------------------------------------------------------------------- /godot/Textures/LoadingIcon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/godot/Textures/LoadingIcon.png -------------------------------------------------------------------------------- /godot/Textures/LoadingIcon.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/LoadingIcon.png-e61191759c0ad3104c17dd7a0ea00bbe.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://Textures/LoadingIcon.png" 13 | dest_files=[ "res://.import/LoadingIcon.png-e61191759c0ad3104c17dd7a0ea00bbe.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | stream=false 32 | size_limit=0 33 | detect_3d=true 34 | svg/scale=1.0 35 | -------------------------------------------------------------------------------- /godot/Textures/Splash.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/godot/Textures/Splash.png -------------------------------------------------------------------------------- /godot/Textures/Splash.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/Splash.png-9199200df1a3090c717978b4d1fb42b0.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://Textures/Splash.png" 13 | dest_files=[ "res://.import/Splash.png-9199200df1a3090c717978b4d1fb42b0.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | stream=false 32 | size_limit=0 33 | detect_3d=true 34 | svg/scale=1.0 35 | -------------------------------------------------------------------------------- /godot/Textures/Splash_highres.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/godot/Textures/Splash_highres.png -------------------------------------------------------------------------------- /godot/Textures/Splash_highres.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/Splash_highres.png-e694c52ab03cc21e7659e96b4dff8162.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://Textures/Splash_highres.png" 13 | dest_files=[ "res://.import/Splash_highres.png-e694c52ab03cc21e7659e96b4dff8162.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=true 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | stream=false 32 | size_limit=0 33 | detect_3d=true 34 | svg/scale=1.0 35 | -------------------------------------------------------------------------------- /godot/UI/AboutPopup.gdns: -------------------------------------------------------------------------------- 1 | [gd_resource type="NativeScript" load_steps=2 format=2] 2 | 3 | [ext_resource path="res://RustLibrary.tres" type="GDNativeLibrary" id=1] 4 | 5 | [resource] 6 | resource_name = "AboutPopup" 7 | class_name = "AboutPopup" 8 | library = ExtResource( 1 ) 9 | -------------------------------------------------------------------------------- /godot/UI/AboutPopup.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=5 format=2] 2 | 3 | [ext_resource path="res://Textures/Splash_highres.png" type="Texture" id=1] 4 | [ext_resource path="res://UI/AboutPopup.gdns" type="Script" id=2] 5 | [ext_resource path="res://Fonts/FontSmall.tres" type="DynamicFont" id=3] 6 | 7 | [sub_resource type="StyleBoxFlat" id=1] 8 | bg_color = Color( 0.6, 0.6, 0.6, 0 ) 9 | corner_radius_top_left = 11 10 | corner_radius_top_right = 11 11 | corner_radius_bottom_right = 11 12 | corner_radius_bottom_left = 11 13 | expand_margin_left = 22.0 14 | expand_margin_right = 22.0 15 | expand_margin_top = 22.0 16 | expand_margin_bottom = 22.0 17 | shadow_color = Color( 0, 0, 0, 0.207843 ) 18 | shadow_size = 4 19 | 20 | [node name="AboutPopup" type="PopupDialog"] 21 | visible = true 22 | anchor_right = 1.0 23 | anchor_bottom = 1.0 24 | margin_bottom = 238.0 25 | custom_styles/panel = SubResource( 1 ) 26 | script = ExtResource( 2 ) 27 | __meta__ = { 28 | "_edit_use_anchors_": false 29 | } 30 | 31 | [node name="VBoxContainer" type="VBoxContainer" parent="."] 32 | anchor_right = 1.0 33 | anchor_bottom = 1.0 34 | custom_constants/separation = 0 35 | alignment = 1 36 | __meta__ = { 37 | "_edit_use_anchors_": false 38 | } 39 | 40 | [node name="TextureRect" type="TextureRect" parent="VBoxContainer"] 41 | margin_right = 1920.0 42 | margin_bottom = 1186.0 43 | size_flags_vertical = 3 44 | texture = ExtResource( 1 ) 45 | expand = true 46 | stretch_mode = 6 47 | 48 | [node name="MadeByBauxitedev" type="RichTextLabel" parent="VBoxContainer"] 49 | margin_top = 1186.0 50 | margin_right = 1920.0 51 | margin_bottom = 1269.0 52 | bbcode_enabled = true 53 | bbcode_text = " 54 | [center][font=Fonts/FontBig.tres]Made by Bauxitedev[/font] 55 | Made with Godot Engine and powered by Rust 56 | [/center]" 57 | text = " 58 | Made by Bauxitedev 59 | Made with Godot Engine and powered by Rust 60 | " 61 | fit_content_height = true 62 | scroll_active = false 63 | 64 | [node name="MarginContainer" type="MarginContainer" parent="VBoxContainer"] 65 | margin_top = 1269.0 66 | margin_right = 1920.0 67 | margin_bottom = 1273.0 68 | custom_constants/margin_right = 50 69 | custom_constants/margin_left = 50 70 | 71 | [node name="HSeparator" type="HSeparator" parent="VBoxContainer/MarginContainer"] 72 | margin_left = 50.0 73 | margin_right = 1870.0 74 | margin_bottom = 4.0 75 | __meta__ = { 76 | "_edit_use_anchors_": false 77 | } 78 | 79 | [node name="FollowMe" type="RichTextLabel" parent="VBoxContainer"] 80 | margin_top = 1273.0 81 | margin_right = 1920.0 82 | margin_bottom = 1318.0 83 | bbcode_enabled = true 84 | bbcode_text = " 85 | [center]If you like this program, you can [url=https://github.com/Bauxitedev/bitmapflow]check the Github repository for updates[/url], [url=https://twitter.com/bauxitedev]follow me on Twitter (@bauxitedev)[/url], [url=https://www.youtube.com/c/Bauxitedev]subscribe on YouTube[/url], and/or [url=https://ko-fi.com/bauxite]support me by buying me a coffee[/url]. Thank you![/center] 86 | " 87 | text = " 88 | If you like this program, you can check the Github repository for updates, follow me on Twitter (@bauxitedev), subscribe on YouTube, and/or support me by buying me a coffee. Thank you! 89 | " 90 | fit_content_height = true 91 | scroll_active = false 92 | 93 | [node name="ExtraInfo" type="RichTextLabel" parent="."] 94 | anchor_right = 1.0 95 | anchor_bottom = 1.0 96 | mouse_filter = 2 97 | custom_fonts/normal_font = ExtResource( 3 ) 98 | bbcode_enabled = true 99 | bbcode_text = "[right]todo put your extra info here[/right]" 100 | text = "todo put your extra info here" 101 | fit_content_height = true 102 | scroll_active = false 103 | __meta__ = { 104 | "_edit_use_anchors_": false 105 | } 106 | [connection signal="meta_clicked" from="VBoxContainer/FollowMe" to="." method="_on_followme_meta_clicked"] 107 | -------------------------------------------------------------------------------- /godot/UI/BG.gd: -------------------------------------------------------------------------------- 1 | extends Panel 2 | 3 | func _ready(): 4 | $Tween.interpolate_method(self, "set_blur_amount", 0.0, 2.0, 0.3, Tween.TRANS_SINE, Tween.EASE_OUT) 5 | $Tween.start() 6 | 7 | func set_blur_amount(amount): 8 | material.set_shader_param("amount", amount) 9 | 10 | func fade_out(): 11 | $Tween.interpolate_method(self, "set_blur_amount", 2.0, 0.0, 0.3, Tween.TRANS_SINE, Tween.EASE_OUT) 12 | $Tween.start() 13 | 14 | yield($Tween, "tween_all_completed") 15 | queue_free() 16 | -------------------------------------------------------------------------------- /godot/UI/BG.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=4 format=2] 2 | 3 | [ext_resource path="res://UI/BG.gd" type="Script" id=1] 4 | 5 | [sub_resource type="Shader" id=1] 6 | code = "//Source: https://godotengine.org/asset-library/asset/122 7 | 8 | shader_type canvas_item; 9 | 10 | uniform float amount: hint_range(0.0, 5.0); 11 | 12 | void fragment() { 13 | COLOR.rgb = textureLod(SCREEN_TEXTURE, SCREEN_UV, amount).rgb * (1.0 - smoothstep(0.0, 5.0, amount)); 14 | } 15 | " 16 | 17 | [sub_resource type="ShaderMaterial" id=2] 18 | resource_local_to_scene = true 19 | shader = SubResource( 1 ) 20 | shader_param/amount = 2.0 21 | 22 | [node name="BG" type="Panel"] 23 | material = SubResource( 2 ) 24 | anchor_right = 1.0 25 | anchor_bottom = 1.0 26 | script = ExtResource( 1 ) 27 | __meta__ = { 28 | "_edit_use_anchors_": false 29 | } 30 | 31 | [node name="Tween" type="Tween" parent="."] 32 | -------------------------------------------------------------------------------- /godot/UI/ImageView/ImageView.gd: -------------------------------------------------------------------------------- 1 | extends HBoxContainer 2 | 3 | var smooth_flags = ImageTexture.FLAG_FILTER 4 | 5 | onready var texrectA = $HBoxA/MarginContainer/Panel/MarginContainer/TexRect 6 | onready var texrectB = $HBoxB/MarginContainer/Panel/MarginContainer/TexRect 7 | onready var loading_panel = $HBoxB/MarginContainer/Panel/MarginContainer/MarginContainer/LoadingPanel 8 | 9 | var input_frames setget set_input_frames 10 | var output_frames setget set_output_frames 11 | var current_frame = 0 12 | var pixelmode setget set_pixelmode 13 | 14 | func _ready(): 15 | pass 16 | 17 | func _process(delta): 18 | 19 | loading_panel.visible = ImageProcessor.is_busy() 20 | 21 | if input_frames != null && !input_frames.empty(): 22 | current_frame = fmod(current_frame + delta * GlobalHolder.fps, len(input_frames)) 23 | display_frameA(input_frames[floor(current_frame)]) 24 | if output_frames != null && !output_frames.empty(): 25 | var speed_multiplier = len(output_frames) / float(len(input_frames)) 26 | display_frameB(output_frames[min(floor(current_frame * speed_multiplier), len(output_frames)-1)]) 27 | else: 28 | display_frameB(null) 29 | 30 | func set_input_frames(frames): 31 | input_frames = frames 32 | update_pixelmode_input_frames() 33 | 34 | func set_output_frames(frames): 35 | output_frames = frames 36 | update_pixelmode_output_frames() 37 | 38 | func display_frameA(frame): 39 | texrectA.texture = frame 40 | 41 | func display_frameB(frame): 42 | texrectB.texture = frame 43 | 44 | func set_pixelmode(value): 45 | pixelmode = value 46 | 47 | if input_frames != null: 48 | update_pixelmode_input_frames() 49 | if output_frames != null: 50 | update_pixelmode_output_frames() 51 | 52 | texrectA.use_integer_scaling = pixelmode 53 | texrectB.use_integer_scaling = pixelmode 54 | 55 | # TODO this is actually kinda slow! Better way to do it would be to use a shader that manually does the pixelization effect. 56 | func update_pixelmode_input_frames(): 57 | for i in len(input_frames): 58 | var frame = input_frames[i] 59 | if frame is ImageTexture: 60 | input_frames[i] = ImageTexture.new() 61 | input_frames[i].create_from_image(frame.image, 0 if pixelmode else smooth_flags) 62 | 63 | func update_pixelmode_output_frames(): 64 | for i in len(output_frames): 65 | var frame = output_frames[i] 66 | if frame is ImageTexture: 67 | output_frames[i] = ImageTexture.new() 68 | output_frames[i].create_from_image(frame.image, 0 if pixelmode else smooth_flags) 69 | -------------------------------------------------------------------------------- /godot/UI/ImageView/IntegerTextureRect.gd: -------------------------------------------------------------------------------- 1 | extends Control 2 | 3 | #TextureRect that supports integer scaling for pixel art 4 | 5 | export var use_integer_scaling = false 6 | export(Texture) var texture 7 | 8 | func _ready(): 9 | pass 10 | 11 | func _process(_delta): 12 | update() 13 | 14 | func _draw(): 15 | if texture != null: 16 | 17 | # Code adapted from https://github.com/godotengine/godot/blob/e8f73124a7d97abc94cea3cf7fe5b5614f61a448/scene/gui/texture_rect.cpp#L65 18 | 19 | var tex_width = texture.get_width() * rect_size.y / texture.get_height() 20 | var tex_height = rect_size.y 21 | 22 | if tex_width > rect_size.x: 23 | tex_width = rect_size.x 24 | tex_height = texture.get_height() * rect_size.x / texture.get_width() 25 | 26 | var size = Vector2(tex_width, tex_height) 27 | 28 | if use_integer_scaling: 29 | var ratio = max(1, floor(size.x / float(texture.get_width()))) 30 | size = Vector2(texture.get_width() * ratio, texture.get_height() * ratio) 31 | 32 | var offset = Vector2(rect_size.x - size.x, rect_size.y - size.y) / 2 33 | 34 | draw_texture_rect(texture, Rect2(offset, size), false) 35 | -------------------------------------------------------------------------------- /godot/UI/ImageView/IntegerTextureRect.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=2] 2 | 3 | [ext_resource path="res://UI/ImageView/IntegerTextureRect.gd" type="Script" id=1] 4 | 5 | [node name="IntegerTextureRect" type="Control"] 6 | anchor_right = 1.0 7 | anchor_bottom = 1.0 8 | script = ExtResource( 1 ) 9 | __meta__ = { 10 | "_edit_use_anchors_": false 11 | } 12 | -------------------------------------------------------------------------------- /godot/UI/ImageView/ViewOptions.gd: -------------------------------------------------------------------------------- 1 | extends Panel 2 | 3 | signal FPS_changed 4 | signal pixelmode_changed 5 | 6 | var image_info_text setget set_image_info_text 7 | 8 | func _ready(): 9 | _on_FPS_value_changed($VBox/FPS.value) 10 | _on_Pixelmode_toggled($VBox/Pixelmode.pressed) 11 | 12 | func _on_FPS_value_changed(value): 13 | emit_signal("FPS_changed", value) 14 | 15 | func _on_Pixelmode_toggled(value): 16 | emit_signal("pixelmode_changed", value) 17 | 18 | func set_image_info_text(v): 19 | $VBox/ImageInfo.text = v 20 | -------------------------------------------------------------------------------- /godot/UI/ImageView/ViewOptions.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=3 format=2] 2 | 3 | [ext_resource path="res://UI/ImageView/ViewOptions.gd" type="Script" id=1] 4 | 5 | [sub_resource type="StyleBoxEmpty" id=1] 6 | 7 | [node name="ViewOptions" type="Panel"] 8 | anchor_left = 1.0 9 | anchor_right = 1.0 10 | anchor_bottom = 1.0 11 | margin_right = -50.0 12 | margin_bottom = -20.0 13 | grow_horizontal = 0 14 | grow_vertical = 0 15 | rect_min_size = Vector2( 100, 30 ) 16 | custom_styles/panel = SubResource( 1 ) 17 | script = ExtResource( 1 ) 18 | __meta__ = { 19 | "_edit_use_anchors_": false 20 | } 21 | 22 | [node name="VBox" type="VBoxContainer" parent="."] 23 | anchor_right = 1.0 24 | anchor_bottom = 1.0 25 | custom_constants/separation = 10 26 | alignment = 2 27 | __meta__ = { 28 | "_edit_use_anchors_": false 29 | } 30 | 31 | [node name="Pixelmode" type="CheckBox" parent="VBox"] 32 | margin_top = 978.0 33 | margin_right = 121.0 34 | margin_bottom = 1002.0 35 | pressed = true 36 | text = "Pixel art mode" 37 | 38 | [node name="HSeparator" type="HSeparator" parent="VBox"] 39 | visible = false 40 | modulate = Color( 1, 1, 1, 0.32549 ) 41 | margin_top = 988.0 42 | margin_right = 121.0 43 | margin_bottom = 992.0 44 | __meta__ = { 45 | "_edit_use_anchors_": false 46 | } 47 | 48 | [node name="FPS" type="SpinBox" parent="VBox"] 49 | margin_top = 1012.0 50 | margin_right = 121.0 51 | margin_bottom = 1036.0 52 | size_flags_horizontal = 3 53 | max_value = 60.0 54 | step = 0.01 55 | value = 12.0 56 | rounded = true 57 | suffix = "FPS" 58 | 59 | [node name="ImageInfo" type="Label" parent="VBox"] 60 | margin_top = 1046.0 61 | margin_right = 121.0 62 | margin_bottom = 1060.0 63 | align = 2 64 | autowrap = true 65 | [connection signal="toggled" from="VBox/Pixelmode" to="." method="_on_Pixelmode_toggled"] 66 | [connection signal="value_changed" from="VBox/FPS" to="." method="_on_FPS_value_changed"] 67 | -------------------------------------------------------------------------------- /godot/UI/LoadingPanel.gd: -------------------------------------------------------------------------------- 1 | extends Control 2 | 3 | func _ready(): 4 | pass 5 | 6 | func _process(delta): 7 | $HBoxContainer/LoadingIcon.rect_rotation -= delta * 300.0 8 | -------------------------------------------------------------------------------- /godot/UI/LoadingPanel.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=4 format=2] 2 | 3 | [ext_resource path="res://Textures/LoadingIcon.png" type="Texture" id=2] 4 | [ext_resource path="res://UI/LoadingPanel.gd" type="Script" id=3] 5 | 6 | [sub_resource type="StyleBoxEmpty" id=1] 7 | 8 | [node name="LoadingPanel" type="PanelContainer"] 9 | anchor_right = 1.0 10 | margin_right = 0.00012207 11 | margin_bottom = 40.0 12 | rect_min_size = Vector2( 200, 40 ) 13 | size_flags_horizontal = 3 14 | size_flags_vertical = 3 15 | custom_styles/panel = SubResource( 1 ) 16 | script = ExtResource( 3 ) 17 | __meta__ = { 18 | "_edit_use_anchors_": false 19 | } 20 | 21 | [node name="HBoxContainer" type="HBoxContainer" parent="."] 22 | margin_right = 1920.0 23 | margin_bottom = 74.0 24 | __meta__ = { 25 | "_edit_use_anchors_": false 26 | } 27 | 28 | [node name="LoadingIcon" type="TextureRect" parent="HBoxContainer"] 29 | margin_right = 74.0 30 | margin_bottom = 74.0 31 | rect_min_size = Vector2( 74, 74 ) 32 | rect_pivot_offset = Vector2( 37, 37 ) 33 | texture = ExtResource( 2 ) 34 | expand = true 35 | stretch_mode = 6 36 | -------------------------------------------------------------------------------- /godot/UI/Menu.gd: -------------------------------------------------------------------------------- 1 | extends HBoxContainer 2 | 3 | signal menu_item_clicked 4 | 5 | func _ready(): 6 | $File.get_popup().connect("id_pressed", self, "file_button_pressed") 7 | 8 | func file_button_pressed(id): 9 | match id: 10 | 1: emit_signal("menu_item_clicked", "load_gif") 11 | 2: emit_signal("menu_item_clicked", "load_spritesheet") 12 | 3: emit_signal("menu_item_clicked", "load_separate_frames") 13 | 14 | 5: emit_signal("menu_item_clicked", "export_gif") 15 | 6: emit_signal("menu_item_clicked", "export_spritesheet") 16 | 7: emit_signal("menu_item_clicked", "export_separate_frames") 17 | 18 | 9: get_tree().quit() 19 | 20 | func _process(_delta): 21 | 22 | var disabled = !ImageHolder.has_output_frames() || ImageProcessor.is_busy() 23 | 24 | for i in [5, 6, 7]: 25 | $File.get_popup().set_item_disabled(i, disabled) 26 | 27 | func _on_About_pressed(): 28 | emit_signal("menu_item_clicked", "show_about") 29 | 30 | -------------------------------------------------------------------------------- /godot/UI/Menu.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=2] 2 | 3 | [ext_resource path="res://UI/Menu.gd" type="Script" id=1] 4 | 5 | [node name="Menu" type="HBoxContainer"] 6 | margin_right = 1898.0 7 | margin_bottom = 20.0 8 | script = ExtResource( 1 ) 9 | __meta__ = { 10 | "_edit_use_anchors_": false 11 | } 12 | 13 | [node name="File" type="MenuButton" parent="."] 14 | margin_right = 35.0 15 | margin_bottom = 20.0 16 | text = "File" 17 | items = [ "Load", null, 0, false, false, 0, 0, null, "", true, "Load animated GIF...", null, 0, false, false, 1, 0, null, "", false, "Load spritesheet...", null, 0, false, false, 2, 0, null, "", false, "Load separate frames...", null, 0, false, false, 3, 0, null, "", false, "Export", null, 0, false, false, 4, 0, null, "", true, "Export animated GIF...", null, 0, false, false, 5, 0, null, "", false, "Export spritesheet...", null, 0, false, false, 6, 0, null, "", false, "Export separate frames...", null, 0, false, false, 7, 0, null, "", false, "", null, 0, false, false, 8, 0, null, "", true, "Quit", null, 0, false, false, 9, 0, null, "", false ] 18 | 19 | [node name="About" type="Button" parent="."] 20 | margin_left = 39.0 21 | margin_right = 89.0 22 | margin_bottom = 20.0 23 | text = "About" 24 | flat = true 25 | [connection signal="pressed" from="About" to="." method="_on_About_pressed"] 26 | -------------------------------------------------------------------------------- /godot/UI/ProgressBar.gd: -------------------------------------------------------------------------------- 1 | extends ProgressBar 2 | 3 | export(String) var error setget set_error 4 | export(String) var message setget set_message 5 | 6 | func _ready(): 7 | set_error(null) 8 | set_message(null) 9 | 10 | func _process(_delta): 11 | percent_visible = value > 0 12 | 13 | func set_error(err): 14 | error = err 15 | if err == null: 16 | $ErrorContainer.hide() 17 | else: 18 | $ErrorContainer.show() 19 | $ErrorContainer/PanelContainer/Label.text = "ERROR: " + err.replace("\n", " → ") 20 | 21 | $MessageContainer.hide() 22 | $Tween.stop_all() 23 | $ErrorContainer.modulate = Color.white 24 | $Tween.interpolate_property($ErrorContainer, "modulate", Color.white, Color.transparent, 5.0, Tween.TRANS_SINE, Tween.EASE_IN_OUT, 8.0) 25 | $Tween.start() 26 | 27 | func set_message(msg): 28 | message = msg 29 | if msg == null: 30 | $MessageContainer.hide() 31 | else: 32 | $MessageContainer.show() 33 | $MessageContainer/PanelContainer/Label.text = msg 34 | 35 | $ErrorContainer.hide() 36 | $Tween.stop_all() 37 | $MessageContainer.modulate = Color.white 38 | $Tween.interpolate_property($MessageContainer, "modulate", Color.white, Color.transparent, 5.0, Tween.TRANS_SINE, Tween.EASE_IN_OUT, 8.0) 39 | $Tween.start() 40 | -------------------------------------------------------------------------------- /godot/UI/ProgressBar.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=7 format=2] 2 | 3 | [ext_resource path="res://UI/ProgressBar.gd" type="Script" id=1] 4 | [ext_resource path="res://Fonts/FontSmall.tres" type="DynamicFont" id=2] 5 | [ext_resource path="res://UI/Resources/StyleboxError.tres" type="StyleBox" id=3] 6 | [ext_resource path="res://UI/Resources/StyleboxMessage.tres" type="StyleBox" id=4] 7 | 8 | 9 | [sub_resource type="StyleBoxFlat" id=1] 10 | bg_color = Color( 0.188235, 0.705882, 0.607843, 1 ) 11 | border_width_left = 1 12 | border_width_top = 1 13 | border_width_right = 1 14 | border_width_bottom = 1 15 | border_color = Color( 0, 0, 0, 0 ) 16 | border_blend = true 17 | corner_radius_top_left = 4 18 | corner_radius_top_right = 4 19 | corner_radius_bottom_right = 4 20 | corner_radius_bottom_left = 4 21 | shadow_color = Color( 0, 0, 0, 0.356863 ) 22 | shadow_size = 1 23 | anti_aliasing = false 24 | anti_aliasing_size = 2 25 | 26 | [sub_resource type="StyleBoxFlat" id=2] 27 | bg_color = Color( 0.2937, 0.33, 0.323345, 1 ) 28 | border_width_left = 1 29 | border_width_top = 1 30 | border_width_right = 1 31 | border_width_bottom = 1 32 | border_color = Color( 0, 0, 0, 0 ) 33 | border_blend = true 34 | corner_radius_top_left = 4 35 | corner_radius_top_right = 4 36 | corner_radius_bottom_right = 4 37 | corner_radius_bottom_left = 4 38 | shadow_color = Color( 0, 0, 0, 0.356863 ) 39 | shadow_size = 1 40 | anti_aliasing = false 41 | anti_aliasing_size = 2 42 | 43 | [node name="ProgressBar" type="ProgressBar"] 44 | margin_top = 1028.0 45 | margin_right = 1898.0 46 | margin_bottom = 1058.0 47 | rect_min_size = Vector2( 0, 25 ) 48 | custom_styles/fg = SubResource( 1 ) 49 | custom_styles/bg = SubResource( 2 ) 50 | max_value = 1.0 51 | step = 0.0 52 | value = 0.25 53 | script = ExtResource( 1 ) 54 | __meta__ = { 55 | "_edit_use_anchors_": false 56 | } 57 | 58 | [node name="ErrorContainer" type="CenterContainer" parent="."] 59 | anchor_right = 1.0 60 | anchor_bottom = 1.0 61 | __meta__ = { 62 | "_edit_use_anchors_": false 63 | } 64 | 65 | [node name="PanelContainer" type="PanelContainer" parent="ErrorContainer"] 66 | margin_left = 894.0 67 | margin_top = 7.0 68 | margin_right = 1004.0 69 | margin_bottom = 22.0 70 | custom_styles/panel = ExtResource( 3 ) 71 | 72 | [node name="Label" type="Label" parent="ErrorContainer/PanelContainer"] 73 | margin_right = 110.0 74 | margin_bottom = 15.0 75 | grow_horizontal = 2 76 | grow_vertical = 2 77 | custom_fonts/font = ExtResource( 2 ) 78 | text = "your error goes here" 79 | align = 1 80 | valign = 1 81 | __meta__ = { 82 | "_edit_use_anchors_": false 83 | } 84 | 85 | [node name="MessageContainer" type="CenterContainer" parent="."] 86 | anchor_right = 1.0 87 | anchor_bottom = 1.0 88 | __meta__ = { 89 | "_edit_use_anchors_": false 90 | } 91 | 92 | [node name="PanelContainer" type="PanelContainer" parent="MessageContainer"] 93 | margin_left = 885.0 94 | margin_top = 7.0 95 | margin_right = 1012.0 96 | margin_bottom = 22.0 97 | custom_styles/panel = ExtResource( 4 ) 98 | 99 | [node name="Label" type="Label" parent="MessageContainer/PanelContainer"] 100 | margin_right = 127.0 101 | margin_bottom = 15.0 102 | grow_horizontal = 2 103 | grow_vertical = 2 104 | custom_fonts/font = ExtResource( 2 ) 105 | text = "your message goes here" 106 | align = 1 107 | valign = 1 108 | __meta__ = { 109 | "_edit_use_anchors_": false 110 | } 111 | 112 | [node name="Tween" type="Tween" parent="."] 113 | -------------------------------------------------------------------------------- /godot/UI/Resources/StyleboxBG.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="StyleBoxTexture" load_steps=2 format=2] 2 | 3 | [ext_resource path="res://Textures/BGChecker.png" type="Texture" id=1] 4 | 5 | [resource] 6 | texture = ExtResource( 1 ) 7 | region_rect = Rect2( 0, 0, 256, 256 ) 8 | axis_stretch_horizontal = 1 9 | axis_stretch_vertical = 1 10 | -------------------------------------------------------------------------------- /godot/UI/Resources/StyleboxError.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="StyleBoxFlat" format=2] 2 | 3 | [resource] 4 | bg_color = Color( 0.454902, 0.109804, 0.109804, 1 ) 5 | border_color = Color( 1, 0, 0, 1 ) 6 | corner_radius_top_left = 4 7 | corner_radius_top_right = 4 8 | corner_radius_bottom_right = 4 9 | corner_radius_bottom_left = 4 10 | expand_margin_left = 2.0 11 | expand_margin_right = 2.0 12 | expand_margin_top = 2.0 13 | expand_margin_bottom = 2.0 14 | shadow_color = Color( 0, 0, 0, 0.427451 ) 15 | shadow_size = 3 16 | -------------------------------------------------------------------------------- /godot/UI/Resources/StyleboxMessage.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="StyleBoxFlat" format=2] 2 | 3 | [resource] 4 | bg_color = Color( 0.1368, 0.48336, 0.57, 1 ) 5 | border_color = Color( 1, 0, 0, 1 ) 6 | corner_radius_top_left = 4 7 | corner_radius_top_right = 4 8 | corner_radius_bottom_right = 4 9 | corner_radius_bottom_left = 4 10 | expand_margin_left = 2.0 11 | expand_margin_right = 2.0 12 | expand_margin_top = 2.0 13 | expand_margin_bottom = 2.0 14 | shadow_color = Color( 0, 0, 0, 0.427451 ) 15 | shadow_size = 3 16 | -------------------------------------------------------------------------------- /godot/UI/Resources/Theme.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="Theme" load_steps=2 format=2] 2 | 3 | [ext_resource path="res://Fonts/FontDefault.tres" type="DynamicFont" id=1] 4 | 5 | [resource] 6 | default_font = ExtResource( 1 ) 7 | -------------------------------------------------------------------------------- /godot/UI/Sidebar/Entries/Check.gd: -------------------------------------------------------------------------------- 1 | extends "EntryBase.gd" 2 | 3 | export var default = false setget set_default, get_default 4 | 5 | func _ready(): 6 | pass 7 | 8 | func set_default(value): 9 | default = value 10 | $CheckBox.pressed = value 11 | 12 | func get_default(): 13 | return default 14 | 15 | func _on_CheckBox_toggled(button_pressed): 16 | emit_signal("value_changed", key, button_pressed) 17 | 18 | func set_value(value): 19 | $CheckBox.pressed = value 20 | -------------------------------------------------------------------------------- /godot/UI/Sidebar/Entries/Check.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=3 format=2] 2 | 3 | [ext_resource path="res://UI/Sidebar/Entries/EntryBase.tscn" type="PackedScene" id=1] 4 | [ext_resource path="res://UI/Sidebar/Entries/Check.gd" type="Script" id=2] 5 | 6 | [node name="EntryBase" instance=ExtResource( 1 )] 7 | anchor_right = 1.0 8 | anchor_bottom = 1.0 9 | margin_right = -50.0 10 | script = ExtResource( 2 ) 11 | 12 | [node name="MarginContainer" parent="." index="0"] 13 | margin_right = 1842.0 14 | margin_bottom = 1080.0 15 | 16 | [node name="Label" parent="MarginContainer" index="0"] 17 | margin_top = 530.0 18 | margin_right = 1832.0 19 | margin_bottom = 550.0 20 | 21 | [node name="CheckBox" type="CheckBox" parent="." index="1"] 22 | margin_left = 1846.0 23 | margin_right = 1870.0 24 | margin_bottom = 1080.0 25 | [connection signal="toggled" from="CheckBox" to="." method="_on_CheckBox_toggled"] 26 | -------------------------------------------------------------------------------- /godot/UI/Sidebar/Entries/EntryBase.gd: -------------------------------------------------------------------------------- 1 | extends HBoxContainer 2 | 3 | # warning-ignore:unused_signal 4 | signal value_changed 5 | 6 | export var label = "Default" setget set_label 7 | export var key = "default" 8 | 9 | var label_path = "MarginContainer/Label" 10 | 11 | func set_label(value): 12 | get_node(label_path).text = value 13 | label = value 14 | 15 | func fade_in(): 16 | show() 17 | 18 | # TODO fancy animation here? 19 | #$Tween.interpolate_property(self, "rect_min_size", Vector2(1,0), Vector2(100,100), 0.5, Tween.TRANS_SINE, Tween.EASE_IN_OUT) 20 | #$Tween.start() 21 | 22 | func fade_out(): 23 | hide() 24 | 25 | # TODO fancy animation here? 26 | #$Tween.interpolate_property(self, "rect_min_size", rect_size, rect_size * Vector2(1,0), 0.5, Tween.TRANS_SINE, Tween.EASE_IN_OUT) 27 | #$Tween.start() 28 | -------------------------------------------------------------------------------- /godot/UI/Sidebar/Entries/EntryBase.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=2] 2 | 3 | [ext_resource path="res://UI/Sidebar/Entries/EntryBase.gd" type="Script" id=1] 4 | 5 | [node name="EntryBase" type="HBoxContainer"] 6 | margin_right = 300.0 7 | alignment = 2 8 | script = ExtResource( 1 ) 9 | __meta__ = { 10 | "_edit_use_anchors_": false 11 | } 12 | 13 | [node name="MarginContainer" type="MarginContainer" parent="."] 14 | margin_right = 300.0 15 | margin_bottom = 28.0 16 | size_flags_horizontal = 3 17 | custom_constants/margin_right = 10 18 | custom_constants/margin_top = 4 19 | custom_constants/margin_left = 10 20 | custom_constants/margin_bottom = 4 21 | 22 | [node name="Label" type="Label" parent="MarginContainer"] 23 | margin_left = 10.0 24 | margin_top = 4.0 25 | margin_right = 290.0 26 | margin_bottom = 24.0 27 | rect_min_size = Vector2( 150, 20 ) 28 | text = "insert text here" 29 | valign = 1 30 | 31 | [node name="Tween" type="Tween" parent="."] 32 | -------------------------------------------------------------------------------- /godot/UI/Sidebar/Entries/Enum.gd: -------------------------------------------------------------------------------- 1 | extends "res://UI/Sidebar/Entries/EntryBase.gd" 2 | 3 | var items setget set_items 4 | export var default = 0 setget set_default 5 | 6 | func _ready(): 7 | pass 8 | 9 | func set_items(values): 10 | for v in values: 11 | $OptionButton.add_item(v) 12 | 13 | func _on_OptionButton_item_selected(index): 14 | emit_signal("value_changed", key, $OptionButton.get_item_text(index)) 15 | 16 | func set_value(v): 17 | $OptionButton.select(find_item(v)) 18 | 19 | func set_default(v): 20 | set_value(v) 21 | 22 | func find_item(string): 23 | 24 | for i in $OptionButton.get_item_count(): 25 | if $OptionButton.get_item_text(i) == string: 26 | return i 27 | 28 | return -1 29 | -------------------------------------------------------------------------------- /godot/UI/Sidebar/Entries/Enum.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=3 format=2] 2 | 3 | [ext_resource path="res://UI/Sidebar/Entries/EntryBase.tscn" type="PackedScene" id=1] 4 | [ext_resource path="res://UI/Sidebar/Entries/Enum.gd" type="Script" id=2] 5 | 6 | [node name="Enum" instance=ExtResource( 1 )] 7 | script = ExtResource( 2 ) 8 | 9 | [node name="MarginContainer" parent="." index="0"] 10 | margin_right = 170.0 11 | 12 | [node name="Label" parent="MarginContainer" index="0"] 13 | margin_right = 160.0 14 | 15 | [node name="OptionButton" type="OptionButton" parent="." index="1"] 16 | margin_left = 174.0 17 | margin_right = 300.0 18 | margin_bottom = 28.0 19 | size_flags_horizontal = 3 20 | align = 1 21 | [connection signal="item_selected" from="OptionButton" to="." method="_on_OptionButton_item_selected"] 22 | -------------------------------------------------------------------------------- /godot/UI/Sidebar/Entries/Header.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=2] 2 | 3 | [ext_resource path="res://UI/Sidebar/Entries/EntryBase.tscn" type="PackedScene" id=1] 4 | 5 | [node name="EntryBase" instance=ExtResource( 1 )] 6 | 7 | [node name="HSeparator1" type="HSeparator" parent="." index="0"] 8 | margin_right = 10.0 9 | margin_bottom = 28.0 10 | size_flags_horizontal = 3 11 | 12 | [node name="MarginContainer" parent="." index="1"] 13 | margin_left = 14.0 14 | margin_right = 286.0 15 | size_flags_horizontal = 1 16 | 17 | [node name="Label" parent="MarginContainer" index="0"] 18 | margin_right = 262.0 19 | rect_min_size = Vector2( 0, 20 ) 20 | text = " Height asdasd asd asd asd asd dsfsdf" 21 | align = 1 22 | clip_text = false 23 | 24 | [node name="HSeparator2" type="HSeparator" parent="." index="2"] 25 | margin_left = 290.0 26 | margin_right = 300.0 27 | margin_bottom = 28.0 28 | size_flags_horizontal = 3 29 | -------------------------------------------------------------------------------- /godot/UI/Sidebar/Entries/NumFloat.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=2] 2 | 3 | [ext_resource path="res://UI/Sidebar/Entries/NumInt.tscn" type="PackedScene" id=1] 4 | 5 | [node name="NumInt" instance=ExtResource( 1 )] 6 | 7 | [node name="TextEdit" parent="." index="1"] 8 | step = 0.01 9 | rounded = false 10 | -------------------------------------------------------------------------------- /godot/UI/Sidebar/Entries/NumInt.gd: -------------------------------------------------------------------------------- 1 | extends "EntryBase.gd" 2 | 3 | 4 | export var minimum = 10 setget set_minimum 5 | export var maximum = 100 setget set_maximum 6 | export var default = 75 setget set_default, get_default 7 | export var step = 1 setget set_step 8 | export var suffix = "" setget set_suffix 9 | 10 | 11 | 12 | func set_minimum(value): 13 | $TextEdit.min_value = value 14 | 15 | func set_maximum(value): 16 | $TextEdit.max_value = value 17 | 18 | func set_default(value): 19 | default = value 20 | $TextEdit.value = value 21 | 22 | func get_default(): 23 | return default 24 | 25 | func set_step(s): 26 | $TextEdit.step = s 27 | 28 | func set_suffix(value): 29 | $TextEdit.suffix = value 30 | 31 | func _on_TextEdit_value_changed(value): 32 | emit_signal("value_changed", key, value) 33 | 34 | func set_value(val): 35 | $TextEdit.value = val 36 | 37 | -------------------------------------------------------------------------------- /godot/UI/Sidebar/Entries/NumInt.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=3 format=2] 2 | 3 | [ext_resource path="res://UI/Sidebar/Entries/NumInt.gd" type="Script" id=1] 4 | [ext_resource path="res://UI/Sidebar/Entries/EntryBase.tscn" type="PackedScene" id=2] 5 | 6 | [node name="NumInt" instance=ExtResource( 2 )] 7 | script = ExtResource( 1 ) 8 | 9 | [node name="MarginContainer" parent="." index="0"] 10 | margin_right = 170.0 11 | 12 | [node name="Label" parent="MarginContainer" index="0"] 13 | margin_right = 160.0 14 | 15 | [node name="TextEdit" type="SpinBox" parent="." index="1"] 16 | margin_left = 174.0 17 | margin_right = 300.0 18 | margin_bottom = 28.0 19 | size_flags_horizontal = 3 20 | max_value = 2000.0 21 | value = 512.0 22 | rounded = true 23 | align = 1 24 | [connection signal="value_changed" from="TextEdit" to="." method="_on_TextEdit_value_changed"] 25 | -------------------------------------------------------------------------------- /godot/UI/Sidebar/Sidebar.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=2] 2 | 3 | [ext_resource path="res://UI/Sidebar/Sidebar.gd" type="Script" id=2] 4 | 5 | [node name="Sidebar" type="MarginContainer"] 6 | anchor_right = 1.0 7 | anchor_bottom = 1.0 8 | custom_constants/margin_right = 10 9 | custom_constants/margin_top = 10 10 | custom_constants/margin_left = 10 11 | custom_constants/margin_bottom = 10 12 | script = ExtResource( 2 ) 13 | __meta__ = { 14 | "_edit_use_anchors_": false 15 | } 16 | 17 | [node name="VBox" type="VBoxContainer" parent="."] 18 | margin_left = 10.0 19 | margin_top = 10.0 20 | margin_right = 1910.0 21 | margin_bottom = 1070.0 22 | custom_constants/separation = 10 23 | alignment = 1 24 | -------------------------------------------------------------------------------- /godot/UI/Spritesheet/Spritesheet.gd: -------------------------------------------------------------------------------- 1 | extends Sprite 2 | 3 | var rects = [] 4 | 5 | func _process(_delta): 6 | update() 7 | 8 | func _draw(): 9 | var i = 0 10 | for rect in rects: 11 | var alpha = 0.6 + sin(i * 0.5 - OS.get_ticks_msec() / 100.0) * 0.4 12 | var color = Color(1.0, 0.1, 0.1, alpha) 13 | var color_shadow = Color(0.0, 0.0, 0.0, alpha * 0.5) 14 | 15 | rect = rect.grow_individual(-1, -1, 0, 0) 16 | draw_rect(rect, color_shadow, false, 2.0, false) 17 | draw_rect(rect, color, false, 1.0, false) 18 | 19 | i += 1 20 | -------------------------------------------------------------------------------- /godot/UI/Spritesheet/SpritesheetConfigBase.gd: -------------------------------------------------------------------------------- 1 | extends ConfirmationDialog 2 | 3 | signal spritesheet_confirmed 4 | signal error_occured 5 | 6 | var tex: ImageTexture 7 | var spritesheet_params = {} 8 | 9 | onready var sidebar = $HBox/Panel/MarginContainer/Sidebar 10 | var spritesheet_view_path = "HBox/Panel2/MarginContainer/SpritesheetView" 11 | var img_info_path = "HBox/Panel2/MarginContainer/ImgInfo" 12 | 13 | 14 | func setup_spritesheet_params_ui(spritesheet_params_ui): 15 | for key in spritesheet_params_ui: 16 | var value = spritesheet_params_ui[key] 17 | 18 | var instance 19 | 20 | match value["ui_type"]: 21 | "number": 22 | instance = preload("res://UI/Sidebar/Entries/NumInt.tscn").instance() 23 | instance.minimum = value["min"] 24 | instance.maximum = value["max"] 25 | instance.default = value["default"] 26 | "bool": 27 | instance = preload("res://UI/Sidebar/Entries/Check.tscn").instance() 28 | instance.default = value["default"] 29 | "header": 30 | instance = preload("res://UI/Sidebar/Entries/Header.tscn").instance() 31 | 32 | instance.key = key 33 | instance.label = value["label"] 34 | instance.name = key 35 | 36 | instance.connect("value_changed", self, "_on_value_changed") 37 | 38 | sidebar.add_child(instance) 39 | 40 | if value.has("default"): 41 | spritesheet_params[key] = value["default"] 42 | 43 | func _on_value_changed(key, value): 44 | spritesheet_params[key] = value 45 | 46 | func set_ui_value(key, value): 47 | sidebar.get_node(key).set_value(value) 48 | 49 | func _on_SpritesheetConfigBase_popup_hide(): 50 | # IMPORTANT otherwise it'll become permanently laggy after you've imported a huge spritesheet 51 | queue_free() 52 | 53 | func update_img_info(): 54 | get_node(img_info_path).text = "Image size: %sx%s" % [tex.get_width(), tex.get_height()] 55 | 56 | func get_confirmation_error(): 57 | # Overwrite this method to disallow confirmation (e.g. if the user has selected invalid spritesheet parameters) 58 | return null 59 | 60 | func _on_SpritesheetConfigBase_confirmed(): 61 | var err = get_confirmation_error() 62 | if err == null: 63 | hide() 64 | emit_signal("spritesheet_confirmed") 65 | else: 66 | show_error_popup(err) 67 | 68 | func show_error_popup(err): 69 | var err_dialog = AcceptDialog.new() 70 | err_dialog.dialog_text = err 71 | err_dialog.window_title = "Error!" 72 | add_child(err_dialog) 73 | err_dialog.popup_centered() 74 | 75 | yield(err_dialog,"popup_hide") 76 | err_dialog.queue_free() 77 | 78 | func error_occured(err_str): 79 | Logger.error(err_str) 80 | emit_signal("error_occured", err_str) 81 | hide() 82 | -------------------------------------------------------------------------------- /godot/UI/Spritesheet/SpritesheetConfigBase.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=2] 2 | 3 | [ext_resource path="res://UI/Spritesheet/SpritesheetConfigBase.gd" type="Script" id=2] 4 | 5 | [node name="SpritesheetConfigBase" type="ConfirmationDialog"] 6 | anchor_right = 1.0 7 | anchor_bottom = 1.0 8 | rect_min_size = Vector2( 500, 500 ) 9 | window_title = "" 10 | resizable = true 11 | dialog_hide_on_ok = false 12 | script = ExtResource( 2 ) 13 | __meta__ = { 14 | "_edit_use_anchors_": false 15 | } 16 | 17 | [node name="HBox" type="HSplitContainer" parent="."] 18 | anchor_right = 1.0 19 | anchor_bottom = 1.0 20 | margin_left = 8.0 21 | margin_top = 8.0 22 | margin_right = -8.0 23 | margin_bottom = -36.0 24 | __meta__ = { 25 | "_edit_use_anchors_": false 26 | } 27 | 28 | [node name="Panel" type="Panel" parent="HBox"] 29 | margin_right = 300.0 30 | margin_bottom = 1036.0 31 | rect_min_size = Vector2( 300, 0 ) 32 | 33 | [node name="MarginContainer" type="MarginContainer" parent="HBox/Panel"] 34 | anchor_right = 1.0 35 | anchor_bottom = 1.0 36 | custom_constants/margin_right = 10 37 | custom_constants/margin_top = 10 38 | custom_constants/margin_left = 10 39 | custom_constants/margin_bottom = 10 40 | __meta__ = { 41 | "_edit_use_anchors_": false 42 | } 43 | 44 | [node name="Sidebar" type="VBoxContainer" parent="HBox/Panel/MarginContainer"] 45 | margin_left = 10.0 46 | margin_top = 10.0 47 | margin_right = 290.0 48 | margin_bottom = 1026.0 49 | size_flags_horizontal = 3 50 | alignment = 1 51 | __meta__ = { 52 | "_edit_use_anchors_": false 53 | } 54 | 55 | [node name="Panel2" type="Panel" parent="HBox"] 56 | margin_left = 312.0 57 | margin_right = 1904.0 58 | margin_bottom = 1036.0 59 | size_flags_horizontal = 3 60 | 61 | [node name="MarginContainer" type="MarginContainer" parent="HBox/Panel2"] 62 | anchor_right = 1.0 63 | anchor_bottom = 1.0 64 | custom_constants/margin_right = 10 65 | custom_constants/margin_top = 10 66 | custom_constants/margin_left = 10 67 | custom_constants/margin_bottom = 10 68 | __meta__ = { 69 | "_edit_use_anchors_": false 70 | } 71 | 72 | [node name="ImgInfo" type="Label" parent="HBox/Panel2/MarginContainer"] 73 | margin_left = 10.0 74 | margin_top = 995.0 75 | margin_right = 1582.0 76 | margin_bottom = 1026.0 77 | size_flags_horizontal = 3 78 | size_flags_vertical = 10 79 | text = "img info goes here 80 | " 81 | align = 2 82 | valign = 2 83 | __meta__ = { 84 | "_edit_use_anchors_": false 85 | } 86 | [connection signal="confirmed" from="." to="." method="_on_SpritesheetConfigBase_confirmed"] 87 | [connection signal="popup_hide" from="." to="." method="_on_SpritesheetConfigBase_popup_hide"] 88 | -------------------------------------------------------------------------------- /godot/UI/Spritesheet/SpritesheetConfigLoad.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=4 format=2] 2 | 3 | [ext_resource path="res://UI/Spritesheet/SpritesheetView.tscn" type="PackedScene" id=1] 4 | [ext_resource path="res://UI/Spritesheet/SpritesheetConfigBase.tscn" type="PackedScene" id=2] 5 | [ext_resource path="res://UI/Spritesheet/SpritesheetConfigLoad.gd" type="Script" id=3] 6 | 7 | [node name="SpritesheetConfigLoad" instance=ExtResource( 2 )] 8 | script = ExtResource( 3 ) 9 | 10 | [node name="SpritesheetView" parent="HBox/Panel2/MarginContainer" index="0" instance=ExtResource( 1 )] 11 | margin_bottom = 1026.0 12 | [connection signal="rects_changed" from="." to="HBox/Panel2/MarginContainer/SpritesheetView" method="_on_SpritesheetConfigLoad_rects_changed"] 13 | [connection signal="mouse_clicked_at" from="HBox/Panel2/MarginContainer/SpritesheetView" to="." method="_on_SpritesheetView_mouse_clicked_at"] 14 | -------------------------------------------------------------------------------- /godot/UI/Spritesheet/SpritesheetConfigSave.gd: -------------------------------------------------------------------------------- 1 | extends "res://UI/Spritesheet/SpritesheetConfigBase.gd" 2 | 3 | func _ready(): 4 | 5 | var spritesheet_params_ui = { 6 | "frames_per_row": { 7 | "label": "Frames per row", 8 | "ui_type": "number", 9 | "min": 1, 10 | "max": 1000, 11 | "default": 10 12 | }, 13 | } 14 | 15 | setup_spritesheet_params_ui(spritesheet_params_ui) 16 | 17 | self.spritesheet_params = SpritesheetGenerator.get_optimal_spritesheet_params() 18 | set_ui_value("frames_per_row", spritesheet_params["frames_per_row"]) 19 | 20 | update_spritesheet() 21 | 22 | func _on_value_changed(key, value): 23 | ._on_value_changed(key, value) 24 | 25 | update_spritesheet() 26 | 27 | func update_spritesheet(): 28 | tex = SpritesheetGenerator.generate_spritesheet(spritesheet_params) 29 | get_node(spritesheet_view_path).texture = tex 30 | update_img_info() 31 | -------------------------------------------------------------------------------- /godot/UI/Spritesheet/SpritesheetConfigSave.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=4 format=2] 2 | 3 | [ext_resource path="res://UI/Spritesheet/SpritesheetConfigBase.tscn" type="PackedScene" id=1] 4 | [ext_resource path="res://UI/Spritesheet/SpritesheetConfigSave.gd" type="Script" id=2] 5 | [ext_resource path="res://Icon.png" type="Texture" id=3] 6 | 7 | [node name="SpritesheetConfigSave" instance=ExtResource( 1 )] 8 | window_title = "Save spritesheet..." 9 | script = ExtResource( 2 ) 10 | 11 | [node name="SpritesheetView" type="TextureRect" parent="HBox/Panel2/MarginContainer" index="0"] 12 | margin_left = 10.0 13 | margin_top = 10.0 14 | margin_right = 1582.0 15 | margin_bottom = 1026.0 16 | texture = ExtResource( 3 ) 17 | expand = true 18 | stretch_mode = 6 19 | -------------------------------------------------------------------------------- /godot/UI/Spritesheet/SpritesheetTextureRect.gd: -------------------------------------------------------------------------------- 1 | extends Control 2 | 3 | export(ViewportTexture) var texture 4 | 5 | signal mouse_clicked_at(pos) 6 | 7 | func _ready(): 8 | pass 9 | 10 | func _process(_delta): 11 | update() 12 | 13 | # Taken from https://github.com/godotengine/godot/blob/e8f73124a7d97abc94cea3cf7fe5b5614f61a448/scene/gui/texture_rect.cpp#L65 14 | func get_texture_scale() -> Rect2: 15 | var texture_rect = texture.get_size() 16 | 17 | var size = get_size() 18 | var tex_width = texture_rect.x * size.y / texture_rect.y 19 | var tex_height = size.y 20 | 21 | if (tex_width > size.x): 22 | tex_width = size.x 23 | tex_height = texture_rect.y * tex_width / texture_rect.x 24 | 25 | var offset = Vector2(size.x - tex_width, size.y - tex_height) / 2.0 26 | 27 | size.x = tex_width 28 | size.y = tex_height 29 | 30 | return Rect2(offset, size) 31 | 32 | 33 | func _draw(): 34 | var texture_rect = get_texture_scale() 35 | draw_texture_rect(texture, texture_rect, false) 36 | 37 | func _on_TextureRect_gui_input(event): 38 | 39 | if event is InputEventMouseMotion and Input.is_mouse_button_pressed(BUTTON_LEFT): 40 | 41 | var mouse_pos_local = get_local_mouse_position() 42 | 43 | var texture_rect: Rect2 = get_texture_scale() 44 | 45 | var tex_offset = texture_rect.position 46 | var tex_scale = texture_rect.size 47 | 48 | var invlerp_x = inverse_lerp(tex_offset.x, tex_offset.x + tex_scale.x, mouse_pos_local.x) 49 | var invlerp_y = inverse_lerp(tex_offset.y, tex_offset.y + tex_scale.y, mouse_pos_local.y) 50 | 51 | var mouse_pos_tex = texture.get_size() * Vector2(invlerp_x, invlerp_y) 52 | emit_signal("mouse_clicked_at", mouse_pos_tex) 53 | -------------------------------------------------------------------------------- /godot/UI/Spritesheet/SpritesheetView.gd: -------------------------------------------------------------------------------- 1 | extends Control 2 | 3 | var tex setget set_texture 4 | var rects = [] setget set_rects 5 | 6 | signal mouse_clicked_at(pos) 7 | 8 | func set_texture(val): 9 | tex = val 10 | $Viewport.size = tex.size 11 | $Viewport/Spritesheet.texture = tex 12 | 13 | func set_rects(value): 14 | rects = value 15 | $Viewport/Spritesheet.rects = value 16 | 17 | func _on_SpritesheetConfigLoad_rects_changed(value): 18 | self.rects = value 19 | 20 | func _on_TextureRect_mouse_clicked_at(pos): 21 | emit_signal("mouse_clicked_at", pos) 22 | -------------------------------------------------------------------------------- /godot/UI/Spritesheet/SpritesheetView.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=6 format=2] 2 | 3 | [ext_resource path="res://Icon.png" type="Texture" id=1] 4 | [ext_resource path="res://UI/Spritesheet/SpritesheetView.gd" type="Script" id=2] 5 | [ext_resource path="res://UI/Spritesheet/Spritesheet.gd" type="Script" id=3] 6 | [ext_resource path="res://UI/Spritesheet/SpritesheetTextureRect.gd" type="Script" id=4] 7 | 8 | [sub_resource type="ViewportTexture" id=1] 9 | viewport_path = NodePath("Viewport") 10 | 11 | [node name="SpritesheetView" type="Panel"] 12 | margin_left = 10.0 13 | margin_top = 10.0 14 | margin_right = 1582.0 15 | margin_bottom = 961.0 16 | size_flags_horizontal = 3 17 | script = ExtResource( 2 ) 18 | __meta__ = { 19 | "_edit_use_anchors_": false 20 | } 21 | 22 | [node name="Viewport" type="Viewport" parent="."] 23 | size = Vector2( 250, 250 ) 24 | usage = 0 25 | render_target_v_flip = true 26 | 27 | [node name="Spritesheet" type="Sprite" parent="Viewport"] 28 | texture = ExtResource( 1 ) 29 | centered = false 30 | script = ExtResource( 3 ) 31 | 32 | [node name="TextureRect" type="Control" parent="."] 33 | anchor_right = 1.0 34 | anchor_bottom = 1.0 35 | mouse_default_cursor_shape = 3 36 | script = ExtResource( 4 ) 37 | __meta__ = { 38 | "_edit_use_anchors_": false 39 | } 40 | texture = SubResource( 1 ) 41 | [connection signal="gui_input" from="TextureRect" to="TextureRect" method="_on_TextureRect_gui_input"] 42 | [connection signal="mouse_clicked_at" from="TextureRect" to="." method="_on_TextureRect_mouse_clicked_at"] 43 | -------------------------------------------------------------------------------- /godot/export_presets.cfg: -------------------------------------------------------------------------------- 1 | [preset.0] 2 | 3 | name="Windows Desktop" 4 | platform="Windows Desktop" 5 | runnable=true 6 | custom_features="" 7 | export_filter="all_resources" 8 | include_filter="" 9 | exclude_filter="" 10 | export_path="../bin/Bitmapflow.exe" 11 | patch_list=PoolStringArray( ) 12 | script_export_mode=1 13 | script_encryption_key="" 14 | 15 | [preset.0.options] 16 | 17 | texture_format/bptc=false 18 | texture_format/s3tc=true 19 | texture_format/etc=false 20 | texture_format/etc2=false 21 | texture_format/no_bptc_fallbacks=true 22 | binary_format/64_bits=true 23 | binary_format/embed_pck=false 24 | custom_template/release="" 25 | custom_template/debug="" 26 | codesign/enable=false 27 | codesign/identity_type=0 28 | codesign/identity="" 29 | codesign/password="" 30 | codesign/timestamp=true 31 | codesign/timestamp_server_url="" 32 | codesign/digest_algorithm=1 33 | codesign/description="" 34 | codesign/custom_options=PoolStringArray( ) 35 | application/icon="" 36 | application/file_version="" 37 | application/product_version="" 38 | application/company_name="" 39 | application/product_name="" 40 | application/file_description="" 41 | application/copyright="" 42 | application/trademarks="" 43 | 44 | [preset.1] 45 | 46 | name="Linux/X11" 47 | platform="Linux/X11" 48 | runnable=true 49 | custom_features="" 50 | export_filter="all_resources" 51 | include_filter="" 52 | exclude_filter="" 53 | 54 | patch_list=PoolStringArray( ) 55 | script_export_mode=1 56 | script_encryption_key="" 57 | 58 | [preset.1.options] 59 | 60 | texture_format/bptc=false 61 | texture_format/s3tc=true 62 | texture_format/etc=false 63 | texture_format/etc2=false 64 | texture_format/no_bptc_fallbacks=true 65 | binary_format/64_bits=true 66 | binary_format/embed_pck=false 67 | custom_template/release="" 68 | custom_template/debug="" 69 | -------------------------------------------------------------------------------- /godot/project.godot: -------------------------------------------------------------------------------- 1 | ; Engine configuration file. 2 | ; It's best edited using the editor UI and not directly, 3 | ; since the parameters that go here are not all obvious. 4 | ; 5 | ; Format: 6 | ; [section] ; section goes between [] 7 | ; param=value ; assign values to parameters 8 | 9 | config_version=4 10 | 11 | _global_script_classes=[ ] 12 | _global_script_class_icons={ 13 | 14 | } 15 | 16 | [application] 17 | 18 | config/name="Bitmapflow" 19 | run/main_scene="res://Main.tscn" 20 | boot_splash/image="res://Textures/Splash.png" 21 | boot_splash/fullsize=false 22 | config/icon="res://Icon.png" 23 | 24 | [autoload] 25 | 26 | Startup="*res://Autoload/Startup.gd" 27 | GlobalHolder="*res://Autoload/GlobalHolder.gdns" 28 | SpritesheetGenerator="*res://Autoload/SpritesheetGenerator.gdns" 29 | ImageHolder="*res://Autoload/ImageHolder.gdns" 30 | ImageProcessor="*res://Autoload/ImageProcessor.gdns" 31 | ImageSaver="*res://Autoload/ImageSaver.gdns" 32 | Logger="*res://Autoload/Logger.gdns" 33 | 34 | [display] 35 | 36 | window/size/width=1920 37 | window/size/height=1080 38 | window/stretch/aspect="expand" 39 | 40 | [logging] 41 | 42 | file_logging/enable_file_logging=true 43 | file_logging/log_path="bitmapflow.log" 44 | 45 | [rendering] 46 | 47 | quality/2d/use_pixel_snap=true 48 | environment/default_clear_color=Color( 0.25098, 0.27451, 0.301961, 1 ) 49 | environment/default_environment="res://DefaultEnv.tres" 50 | -------------------------------------------------------------------------------- /logo/Logo_itch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/logo/Logo_itch.png -------------------------------------------------------------------------------- /logo/Logo_itch_cover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/logo/Logo_itch_cover.png -------------------------------------------------------------------------------- /logo/Logo_small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/logo/Logo_small.png -------------------------------------------------------------------------------- /logo/Logo_unedited.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Bauxitedev/bitmapflow/f7f7f6f571935d0a7fb8b2f996d7b5673ce4fc5e/logo/Logo_unedited.png -------------------------------------------------------------------------------- /logo/Logo_unedited.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="StreamTexture" 5 | path="res://.import/Logo_unedited.png-086648de7d547ac49678db2f25e8e8c9.stex" 6 | metadata={ 7 | "vram_texture": false 8 | } 9 | 10 | [deps] 11 | 12 | source_file="res://Textures/Logo/Logo_unedited.png" 13 | dest_files=[ "res://.import/Logo_unedited.png-086648de7d547ac49678db2f25e8e8c9.stex" ] 14 | 15 | [params] 16 | 17 | compress/mode=0 18 | compress/lossy_quality=0.7 19 | compress/hdr_mode=0 20 | compress/bptc_ldr=0 21 | compress/normal_map=0 22 | flags/repeat=0 23 | flags/filter=true 24 | flags/mipmaps=false 25 | flags/anisotropic=false 26 | flags/srgb=2 27 | process/fix_alpha_border=true 28 | process/premult_alpha=false 29 | process/HDR_as_SRGB=false 30 | process/invert_color=false 31 | stream=false 32 | size_limit=0 33 | detect_3d=true 34 | svg/scale=1.0 35 | -------------------------------------------------------------------------------- /publish_windows.py: -------------------------------------------------------------------------------- 1 | import glob 2 | import shutil 3 | import os 4 | import subprocess 5 | import pathlib 6 | 7 | zip_filename = "Bitmapflow" 8 | dst_dir = "bin/Bitmapflow" 9 | 10 | zip_filename_debug = "Bitmapflow_debug" 11 | dst_dir_debug = "bin/Bitmapflow_debug" 12 | 13 | # Delete folders 14 | if os.path.exists(dst_dir): 15 | shutil.rmtree(dst_dir) 16 | if os.path.exists(zip_filename): 17 | shutil.rmtree(zip_filename) 18 | if os.path.exists(dst_dir_debug): 19 | shutil.rmtree(dst_dir_debug) 20 | if os.path.exists(zip_filename_debug): 21 | shutil.rmtree(zip_filename_debug) 22 | 23 | # Make folders 24 | pathlib.Path(dst_dir).mkdir(parents=True, exist_ok=True) 25 | pathlib.Path(dst_dir_debug).mkdir(parents=True, exist_ok=True) 26 | 27 | # Copy all dlls 28 | src_dir = "godot" 29 | for dll in glob.iglob(os.path.join(src_dir, "*.dll")): 30 | shutil.copy(dll, dst_dir) 31 | shutil.copy(dll, dst_dir_debug) 32 | 33 | # Export godot project (note: folder path is relative to the godot project folder, not current folder) 34 | subprocess.run(["godot", "--no-window", "--export", 35 | "Windows Desktop", "../" + dst_dir + "/Bitmapflow.exe"], cwd="godot") 36 | subprocess.run(["godot", "--no-window", "--export-debug", 37 | "Windows Desktop", "../" + dst_dir_debug + "/Bitmapflow_debug.exe"], cwd="godot") 38 | 39 | # Zip it 40 | print("Zipping...") 41 | shutil.make_archive("bin/" + zip_filename, 'zip', dst_dir) 42 | 43 | print("Success.") 44 | 45 | print("Zipping debug...") 46 | shutil.make_archive("bin/" + zip_filename_debug, 'zip', dst_dir_debug) 47 | 48 | print("Success.") 49 | -------------------------------------------------------------------------------- /run_docker.sh: -------------------------------------------------------------------------------- 1 | docker build . -f docker/Dockerfile -t bitmapflow 2 | docker run -it bitmapflow 3 | 4 | # Copy the .so file out of the container 5 | docker run --rm --entrypoint cat bitmapflow /usr/src/bitmapflow/target/release/libbitmapflow_rust.so > libbitmapflow_rust.so -------------------------------------------------------------------------------- /rust/.gitignore: -------------------------------------------------------------------------------- 1 | /target -------------------------------------------------------------------------------- /rust/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | authors = ["Bauxitedev"] 3 | build = "build.rs" 4 | edition = "2018" 5 | name = "bitmapflow-rust" 6 | version = "1.0.2" 7 | 8 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 9 | 10 | [lib] 11 | crate-type = ["cdylib"] 12 | 13 | [dependencies] 14 | anyhow = "1.0.38" 15 | approx = "0.4.0" 16 | bracket-color = "0.8.2" 17 | chrono = "0.4.19" 18 | crossbeam = "0.8.0" 19 | crossbeam-channel = "0.5.0" 20 | gdnative = "0.9.3" 21 | gif = "0.11.1" 22 | gif-dispose = "3.1.1" 23 | image = "0.23.13" 24 | imgref = "1.7.1" 25 | itertools = "0.10.0" 26 | log = {version = "0.4.14", features = ["std"]} 27 | once_cell = "1.5.2" 28 | opencv = {version = "0.49.1", features = ["clang-runtime", "contrib"]}# see https://github.com/twistedfall/opencv-rust/issues/187 29 | rand = "0.8.3" 30 | rayon = "1.5.0" 31 | rgb = "0.8.25" 32 | serde = {version = "1.0.123", features = ["derive"]} 33 | serde_json = "1.0.62" 34 | 35 | [build-dependencies] 36 | anyhow = "1.0.38" 37 | vergen = "5" 38 | -------------------------------------------------------------------------------- /rust/build.rs: -------------------------------------------------------------------------------- 1 | use anyhow::*; 2 | use vergen::{vergen, Config, TimeZone, TimestampKind}; 3 | 4 | fn main() -> Result<()> { 5 | let mut config = Config::default(); 6 | 7 | *config.build_mut().kind_mut() = TimestampKind::All; 8 | *config.build_mut().timezone_mut() = TimeZone::Local; 9 | 10 | vergen(config) 11 | } 12 | -------------------------------------------------------------------------------- /rust/rust-toolchain: -------------------------------------------------------------------------------- 1 | nightly-2021-03-11 -------------------------------------------------------------------------------- /rust/rustfmt.toml: -------------------------------------------------------------------------------- 1 | group_imports = "StdExternalCrate" 2 | imports_granularity = "Crate" 3 | -------------------------------------------------------------------------------- /rust/src/about_popup.rs: -------------------------------------------------------------------------------- 1 | use gdnative::{ 2 | api::{PopupDialog, RichTextLabel, OS}, 3 | prelude::*, 4 | }; 5 | use log::*; 6 | 7 | type Base = PopupDialog; 8 | #[derive(NativeClass, Default)] 9 | #[inherit(Base)] 10 | pub struct AboutPopup {} 11 | 12 | impl AboutPopup { 13 | fn new(_owner: &Base) -> Self { 14 | AboutPopup::default() 15 | } 16 | } 17 | 18 | #[methods] 19 | impl AboutPopup { 20 | #[export] 21 | fn _ready(&mut self, owner: &Base) { 22 | let extra_info = unsafe { owner.get_node_as::("ExtraInfo").unwrap() }; 23 | 24 | let text = format!( 25 | "{} v{}\n{} ({})\nBuild date: {} {}", 26 | env!("CARGO_PKG_NAME"), 27 | env!("CARGO_PKG_VERSION"), 28 | env!("VERGEN_CARGO_TARGET_TRIPLE"), 29 | env!("VERGEN_CARGO_PROFILE"), 30 | env!("VERGEN_BUILD_DATE"), 31 | env!("VERGEN_BUILD_TIME"), 32 | ); 33 | 34 | //This is needed to avoid escaping BBCode 35 | extra_info.clear(); 36 | extra_info.push_align(RichTextLabel::ALIGN_RIGHT); 37 | extra_info.add_text(text); 38 | extra_info.pop(); 39 | } 40 | #[export] 41 | fn _on_followme_meta_clicked(&mut self, _owner: &Base, meta: String) { 42 | if let Err(err) = OS::godot_singleton().shell_open(meta) { 43 | warn!("Failed to open meta: {}", err); 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /rust/src/datatypes.rs: -------------------------------------------------------------------------------- 1 | use std::ops::Deref; 2 | 3 | use gdnative::{ 4 | api::JSON, 5 | core_types::{FromVariant, FromVariantError, Variant, VariantType}, 6 | prelude::*, 7 | }; 8 | use opencv::core::Vec2f; 9 | use serde::{Deserialize, Serialize}; 10 | 11 | #[derive(Serialize, Deserialize, Clone, Debug, Default)] 12 | pub struct ImgParams { 13 | pub inbetweens: usize, 14 | pub loop_seamlessly: bool, 15 | pub flow_multiplier: f32, 16 | #[serde(flatten)] 17 | pub optflow_alg: FlowAlg, 18 | pub show_motion_vectors: bool, 19 | } 20 | 21 | impl FromVariant for ImgParams { 22 | fn from_variant(variant: &Variant) -> Result { 23 | let dict = 24 | variant 25 | .try_to_dictionary() 26 | .ok_or_else(|| FromVariantError::InvalidVariantType { 27 | variant_type: variant.get_type(), 28 | expected: VariantType::Dictionary, 29 | })?; 30 | let json = dict.to_json().to_string(); 31 | serde_json::from_str(&json).map_err(|e| FromVariantError::Custom(e.to_string())) 32 | } 33 | } 34 | 35 | #[derive(Serialize, Deserialize, Clone, Debug)] 36 | #[serde(tag = "optflow_alg")] //Internally tagged, see https://serde.rs/enum-representations.html 37 | pub enum FlowAlg { 38 | SimpleFlow { 39 | layers: usize, 40 | averaging_block_size: usize, 41 | max_flow: usize, 42 | }, 43 | DenseRLOF { 44 | //See https://docs.opencv.org/master/d2/d84/group__optflow.html#ga0fc536362c239654322d9015f6efcecd 45 | forward_backward_threshold: f32, 46 | grid_step_x: i32, 47 | grid_step_y: i32, 48 | use_post_proc: bool, 49 | use_variational_refinement: bool, 50 | }, 51 | Invalid, 52 | } 53 | 54 | //Needed because can't derive Default on enums 55 | impl Default for FlowAlg { 56 | fn default() -> Self { 57 | FlowAlg::Invalid 58 | } 59 | } 60 | 61 | #[derive(Serialize, Deserialize, Clone, Debug, Default)] 62 | pub struct SpritesheetGenerationParams { 63 | pub frames_per_row: usize, 64 | } 65 | 66 | impl FromVariant for SpritesheetGenerationParams { 67 | fn from_variant(variant: &Variant) -> Result { 68 | let dict = 69 | variant 70 | .try_to_dictionary() 71 | .ok_or_else(|| FromVariantError::InvalidVariantType { 72 | variant_type: variant.get_type(), 73 | expected: VariantType::Dictionary, 74 | })?; 75 | let json = dict.to_json().to_string(); 76 | serde_json::from_str(&json).map_err(|e| FromVariantError::Custom(e.to_string())) 77 | } 78 | } 79 | 80 | impl ToVariant for SpritesheetGenerationParams { 81 | fn to_variant(&self) -> Variant { 82 | let json = serde_json::to_string(self) 83 | .expect("failed to serialize SpritesheetGenerationParams as JSON"); 84 | 85 | let variant = JSON::godot_singleton() 86 | .parse(json) 87 | .expect("failed to parse JSON"); 88 | 89 | let variant = unsafe { variant.assume_safe() }.result(); 90 | assert!(variant.get_type() == VariantType::Dictionary); 91 | variant 92 | } 93 | } 94 | 95 | //Bitmapflow's Vector2 type 96 | pub struct BVector2(Vector2); 97 | 98 | //Needed because https://stackoverflow.com/a/25415289 99 | impl From for BVector2 { 100 | fn from(v: Vec2f) -> Self { 101 | BVector2(Vector2::new(v[0], v[1])) 102 | } 103 | } 104 | 105 | //This allows you to call euclid::Vector2 methods directly on BVector2 106 | impl Deref for BVector2 { 107 | type Target = Vector2; 108 | fn deref(&self) -> &Self::Target { 109 | &self.0 110 | } 111 | } 112 | -------------------------------------------------------------------------------- /rust/src/global_holder.rs: -------------------------------------------------------------------------------- 1 | use gdnative::prelude::*; 2 | 3 | #[derive(NativeClass, Default)] 4 | #[inherit(Node)] 5 | #[register_with(Self::register)] 6 | pub struct GlobalHolder { 7 | pub fps: f64, 8 | } 9 | 10 | impl GlobalHolder { 11 | fn new(_owner: &Node) -> Self { 12 | GlobalHolder::default() 13 | } 14 | 15 | fn register(builder: &ClassBuilder) { 16 | builder 17 | .add_property("fps") 18 | .with_setter(|this, _owner, value: f64| { 19 | this.fps = if value.is_finite() { value } else { 10. } 20 | }) 21 | .with_getter(|this, _owner| this.fps) 22 | .done(); 23 | } 24 | } 25 | 26 | #[methods] 27 | impl GlobalHolder {} 28 | -------------------------------------------------------------------------------- /rust/src/lib.rs: -------------------------------------------------------------------------------- 1 | #![feature(array_chunks)] 2 | 3 | #[macro_use] 4 | extern crate approx; 5 | 6 | mod about_popup; 7 | mod datatypes; 8 | mod frame; 9 | mod global_holder; 10 | mod image_holder; 11 | mod image_processor; 12 | mod image_saver; 13 | mod logging; 14 | mod spritesheet_generator; 15 | mod utility; 16 | 17 | use gdnative::prelude::*; 18 | use log::*; 19 | 20 | use crate::{ 21 | about_popup::AboutPopup, 22 | global_holder::GlobalHolder, 23 | image_holder::ImageHolder, 24 | image_processor::ImageProcessor, 25 | image_saver::ImageSaver, 26 | logging::{init_logging, Logger}, 27 | spritesheet_generator::SpritesheetGenerator, 28 | }; 29 | 30 | fn init(handle: InitHandle) { 31 | match init_logging() { 32 | Ok(()) => {} 33 | Err(err) => { 34 | godot_print!("Failed to initialize logger: {}", err); 35 | } 36 | } 37 | 38 | handle.add_class::(); 39 | handle.add_class::(); 40 | handle.add_class::(); 41 | handle.add_class::(); 42 | handle.add_class::(); 43 | handle.add_class::(); 44 | handle.add_class::(); 45 | 46 | info!( 47 | "\n---\n{} v{}\n{} ({})\nBuild date: {} {}\n---", 48 | env!("CARGO_PKG_NAME"), 49 | env!("CARGO_PKG_VERSION"), 50 | env!("VERGEN_CARGO_TARGET_TRIPLE"), 51 | env!("VERGEN_CARGO_PROFILE"), 52 | env!("VERGEN_BUILD_DATE"), 53 | env!("VERGEN_BUILD_TIME"), 54 | ); 55 | } 56 | 57 | godot_init!(init); 58 | -------------------------------------------------------------------------------- /rust/src/logging.rs: -------------------------------------------------------------------------------- 1 | use chrono::prelude::*; 2 | use gdnative::prelude::*; 3 | use log::*; 4 | 5 | struct GodotLogger; 6 | 7 | static GODOT_LOGGER: GodotLogger = GodotLogger; 8 | 9 | pub fn init_logging() -> Result<(), SetLoggerError> { 10 | log::set_logger(&GODOT_LOGGER).map(|()| log::set_max_level(LevelFilter::Info)) 11 | } 12 | 13 | impl Log for GodotLogger { 14 | fn enabled(&self, metadata: &Metadata) -> bool { 15 | metadata.level() <= Level::Info 16 | } 17 | 18 | fn log(&self, record: &Record) { 19 | //Format it as: 20 | //[2017-11-09 02:12:24 DEBUG my_app] this is a debug message 21 | 22 | if self.enabled(record.metadata()) { 23 | let now = Local::now(); 24 | let fn_name = record.file().unwrap_or("(unknown file)"); 25 | let line = record 26 | .line() 27 | .map(|line| format!(":{}", line)) 28 | .unwrap_or_default(); 29 | let msg = format!( 30 | "[{} {} {}{}] {}", 31 | now.format("%F %T"), 32 | record.level(), 33 | fn_name, 34 | line, 35 | record.args() 36 | ); 37 | 38 | //TODO temp disabled this, since it makes the log files bloated (it duplicates stack traces) 39 | /* 40 | match record.level() { 41 | Level::Error => { 42 | godot_error!("{}", msg); 43 | } 44 | Level::Warn => { 45 | godot_warn!("{}", msg); 46 | } 47 | _ => { 48 | godot_print!("{}", msg); 49 | } 50 | } 51 | */ 52 | 53 | godot_print!("{}", msg); 54 | } 55 | } 56 | 57 | fn flush(&self) {} 58 | } 59 | 60 | ////////////////////////////////////////////////////////// 61 | 62 | type Base = Node; 63 | //Base refers to the type Logger inherits from. In this case it's Node (because #[inherit(Node)]) 64 | 65 | #[derive(NativeClass)] 66 | #[inherit(Base)] 67 | pub struct Logger {} 68 | 69 | impl Logger { 70 | fn new(_owner: &Base) -> Self { 71 | Logger {} 72 | } 73 | } 74 | 75 | #[methods] 76 | impl Logger { 77 | //Allows logging from GDscript 78 | 79 | fn log(&self, level: Level, msg: String) { 80 | GODOT_LOGGER.log( 81 | &Record::builder() 82 | .level(level) 83 | .file(Some("(gdscript)")) 84 | .args(format_args!("{}", msg)) 85 | .build(), 86 | ); 87 | } 88 | #[export] 89 | fn info(&mut self, _owner: &Base, msg: String) { 90 | self.log(Level::Info, msg); 91 | } 92 | #[export] 93 | fn warn(&mut self, _owner: &Base, msg: String) { 94 | self.log(Level::Warn, msg); 95 | } 96 | #[export] 97 | fn error(&mut self, _owner: &Base, msg: String) { 98 | self.log(Level::Error, msg); 99 | } 100 | } 101 | -------------------------------------------------------------------------------- /rust/src/utility.rs: -------------------------------------------------------------------------------- 1 | use gdnative::{ 2 | api::Node, 3 | prelude::{user_data::LocalCellError, *}, 4 | }; 5 | 6 | use crate::image_holder::ImageHolder; 7 | 8 | //NOTE you can generalize this to any singleton (do_with_singleton("ImageHolder", ...)) 9 | pub fn do_with_image_holder) -> T>( 10 | f: F, 11 | ) -> Result { 12 | let imageholder = unsafe { autoload::("ImageHolder") } 13 | .unwrap() 14 | .cast_instance::() 15 | .unwrap(); 16 | imageholder.map(f) 17 | } 18 | 19 | pub fn array_to_pair(array: &[T]) -> (&T, &T) { 20 | match array { 21 | [a, b] => (a, b), 22 | _ => panic!("Array size wasn't 2"), 23 | } 24 | } 25 | --------------------------------------------------------------------------------