Showing preview only (3,496K chars total). Download the full file or copy to clipboard to get everything.
Repository: 443eb9/bevy_entitiles
Branch: master
Commit: 605adf025b73
Files: 144
Total size: 3.3 MB
Directory structure:
gitextract_wa_slr6x/
├── .cargo/
│ └── config.toml
├── .github/
│ └── ISSUE_TEMPLATE/
│ ├── document-issue-report.md
│ ├── feature-request.md
│ ├── importer-bug-report.md
│ ├── logic-error-report.md
│ ├── other-issues-report.md
│ └── rendering-bug-report.md
├── .gitignore
├── Cargo.toml
├── LICENSE
├── README.md
├── RELEASE_NOTE.md
├── assets/
│ ├── custom_material.wgsl
│ ├── ldtk/
│ │ ├── grid_vania.ldtk
│ │ └── wfc_source.ldtk
│ └── tiled/
│ ├── Tilemap.tiled-project
│ ├── tilemaps/
│ │ ├── hexagonal.tmx
│ │ ├── infinite.tmx
│ │ ├── isometric.tmx
│ │ ├── isometricCube.tmx
│ │ └── orthogonal.tmx
│ └── tilesets/
│ ├── 8pxSquare.tsx
│ ├── Hexagonal.tsx
│ ├── Isometric.tsx
│ ├── IsometricCube.tsx
│ ├── Squares.tsx
│ ├── Tileset1.tsx
│ └── Tileset2.tsx
├── examples/
│ ├── README.md
│ ├── animation.rs
│ ├── baking.rs
│ ├── basic.rs
│ ├── chunk_unloading.rs
│ ├── custom_material.rs
│ ├── helpers/
│ │ ├── camera_movement.rs
│ │ ├── common.rs
│ │ └── mod.rs
│ ├── isometric_cubes.rs
│ ├── ldtk.rs
│ ├── ldtk_wfc.rs
│ ├── ldtk_wfc_config.ron
│ ├── multiple_tilesets.rs
│ ├── pathfinding.rs
│ ├── pathfinding_single_threaded.rs
│ ├── physics.rs
│ ├── save_and_load.rs
│ ├── stress_test.rs
│ ├── tiled.rs
│ ├── wfc.rs
│ ├── wfc_config.ron
│ ├── wfc_pattern.rs
│ └── wfc_weights.ron
├── macros/
│ ├── Cargo.toml
│ ├── README.md
│ └── src/
│ ├── ldtk_entity.rs
│ ├── ldtk_entity_tag.rs
│ ├── ldtk_enum.rs
│ ├── lib.rs
│ ├── tiled_class.rs
│ ├── tiled_custom_tile.rs
│ ├── tiled_enum.rs
│ └── tiled_object.rs
└── src/
├── algorithm/
│ ├── mod.rs
│ ├── pathfinding.rs
│ └── wfc.rs
├── debug/
│ ├── drawing.rs
│ └── mod.rs
├── ldtk/
│ ├── app_ext.rs
│ ├── components.rs
│ ├── entity_sprite.wgsl
│ ├── events.rs
│ ├── json/
│ │ ├── definitions.rs
│ │ ├── field.rs
│ │ ├── level.rs
│ │ ├── macros.rs
│ │ └── mod.rs
│ ├── layer/
│ │ ├── mod.rs
│ │ ├── path.rs
│ │ └── physics.rs
│ ├── mod.rs
│ ├── resources.rs
│ ├── sprite.rs
│ └── traits.rs
├── lib.rs
├── math/
│ ├── ext.rs
│ └── mod.rs
├── render/
│ ├── bake.rs
│ ├── binding.rs
│ ├── buffer.rs
│ ├── chunk.rs
│ ├── cull.rs
│ ├── draw.rs
│ ├── extract.rs
│ ├── material.rs
│ ├── mod.rs
│ ├── pipeline.rs
│ ├── prepare.rs
│ ├── queue.rs
│ ├── shaders/
│ │ ├── common.wgsl
│ │ ├── hexagonal.wgsl
│ │ ├── isometric.wgsl
│ │ ├── square.wgsl
│ │ └── tilemap.wgsl
│ └── texture.rs
├── serializing/
│ ├── chunk/
│ │ ├── load.rs
│ │ ├── mod.rs
│ │ └── save.rs
│ ├── map/
│ │ ├── load.rs
│ │ ├── mod.rs
│ │ └── save.rs
│ ├── mod.rs
│ └── pattern.rs
├── shaders/
│ ├── math.wgsl
│ └── mod.rs
├── tiled/
│ ├── app_ext.rs
│ ├── components.rs
│ ├── events.rs
│ ├── mod.rs
│ ├── resources.rs
│ ├── sprite.rs
│ ├── tiled_sprite.wgsl
│ ├── traits.rs
│ └── xml/
│ ├── default.rs
│ ├── layer.rs
│ ├── mod.rs
│ ├── property.rs
│ └── tileset.rs
├── tilemap/
│ ├── algorithm/
│ │ ├── mod.rs
│ │ └── path.rs
│ ├── buffers.rs
│ ├── bundles.rs
│ ├── chunking/
│ │ ├── camera.rs
│ │ ├── mod.rs
│ │ └── storage.rs
│ ├── coordinates.rs
│ ├── despawn.rs
│ ├── map.rs
│ ├── mod.rs
│ ├── physics/
│ │ ├── mod.rs
│ │ └── systems.rs
│ └── tile.rs
└── utils/
├── asset.rs
├── mesh.rs
└── mod.rs
================================================
FILE CONTENTS
================================================
================================================
FILE: .cargo/config.toml
================================================
[target.wasm32-unknown-unknown]
runner = "wasm-server-runner"
================================================
FILE: .github/ISSUE_TEMPLATE/document-issue-report.md
================================================
---
name: Document Issue Report
about: There're some outdated/wrong content in documents.
title: 'Doc: '
labels: documentation
assignees: ''
---
**Location**
**Actual Behavior**
================================================
FILE: .github/ISSUE_TEMPLATE/feature-request.md
================================================
---
name: Feature Request
about: I have a good idea.
title: 'FeatureRequest: '
labels: enhancement
assignees: ''
---
**Current Problem**
**Your Solution**
================================================
FILE: .github/ISSUE_TEMPLATE/importer-bug-report.md
================================================
---
name: Importer Bug Report
about: 'The importer isn''t working correctly. '
title: 'LDtk/Tiled Importer: Please choose the one your issue related to'
labels: bug
assignees: ''
---
**Description**
**Reproduction**
**Screenshots**
**LDtk Level Data/Tiled Level Data**
If your issue is related to some specific layer, please
- For LDtk: Open the .ldtk file as json, and search the identifier of the layer, then you will see many numbers in `intGridCsv`.
- For Tiled: Open the .tmx file as xml, and search the name of the layer, then you will see many numbers in `<data>...</data>`.
Paste them here.
**Versions**
- OS: [e.g. Windows10]
- Crate and other dependencies: [e.g. entitiles: 0.1.0]
- LDtk: [e.g. 1.4.2]
**Additional**
================================================
FILE: .github/ISSUE_TEMPLATE/logic-error-report.md
================================================
---
name: Logic Error Report
about: Some code isn't working correctly.
title: 'Bug: '
labels: bug
assignees: ''
---
**Description**
**Reproduction**
**Screenshots**
**Versions**
- OS: [e.g. Windows10]
- Crate and other dependencies: [e.g. entitiles: 0.1.0]
**Additional**
================================================
FILE: .github/ISSUE_TEMPLATE/other-issues-report.md
================================================
---
name: Other Issues Report
about: Some other issues that are not listed above.
title: 'Other: '
labels: ''
assignees: ''
---
**Description**
**Reproduction**
**Screenshots**
**Versions**
- OS: [e.g. Windows10]
- Crate and other dependencies: [e.g. entitiles: 0.1.0]
**Additional**
================================================
FILE: .github/ISSUE_TEMPLATE/rendering-bug-report.md
================================================
---
name: Rendering Bug Report
about: Something isn't rendered as expected.
title: 'Bug: '
labels: bug, graphics
assignees: ''
---
**Description**
**Reproduction**
**Screenshots**
**Versions**
- OS: [e.g. Windows10]
- Crate and other dependencies: [e.g. entitiles: 0.1.0]
**Additional**
================================================
FILE: .gitignore
================================================
/target
/examples/test*
/assets/ldtk/ignore*
/macros/target
/.idea
Cargo.lock
/generated
/**/*.tiled-session
================================================
FILE: Cargo.toml
================================================
[package]
name = "bevy_entitiles"
version = "0.12.0"
edition = "2021"
license = "MIT"
repository = "https://github.com/443eb9/bevy_entitiles"
description = "A 2d tilemap library for bevy. With many useful algorithms/tools built in."
include = ["/src", "Cargo.toml", "README.md", "LICENSE"]
[profile.dev]
opt-level = 1
[profile.dev.package."*"]
opt-level = 3
[dependencies]
bevy = { version = "0.14", default-features = false, features = [
"bevy_core_pipeline",
"bevy_render",
"bevy_asset",
"bevy_sprite",
"png",
] }
bevy_entitiles_derive = { version = "0.6", optional = true, path = "macros" }
avian2d = { version = "0.1", optional = true }
bitflags = "2"
futures-lite = { version = "2", optional = true }
hashbrown = { version = "0.14", features = ["rayon"] }
indexmap = { version = "2", features = ["rayon"] }
quick-xml = { version = "0.37", optional = true, features = [
"serialize",
"overlapped-lists",
] }
radsort = "0.1"
rand = { version = "0.8", optional = true }
rayon = "1.10"
ron = { version = "0.8", optional = true }
serde = { version = "1", optional = true }
serde_json = { version = "1", optional = true }
thiserror = "2"
[dev-dependencies]
bevy = { version = "0.14", default-features = false, features = [
"bevy_ui",
"bevy_winit",
"default_font",
"x11",
"wayland",
] }
bevy_mod_debugdump = "0.11"
image = "0.25"
rand = "0.8"
[target.'cfg(target_arch = "wasm32")'.dev-dependencies]
bevy = { version = "0.14", default-features = false, features = ["webgl2"] }
[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies]
bevy = { version = "0.14", default-features = false, features = [
"trace_tracy",
] }
bevy-inspector-egui = "0.26"
[features]
default = ["multi-threaded"]
algorithm = ["dep:rand", "serializing", "dep:futures-lite"]
atlas = []
baking = ["atlas"]
debug = ["bevy/bevy_gizmos"]
ldtk = ["serializing", "dep:serde_json", "dep:bevy_entitiles_derive"]
multi-threaded = ["bevy/multi_threaded"]
physics = ["dep:avian2d"]
serializing = ["dep:ron", "dep:serde", "bevy/serialize"]
tiled = [
"dep:serde",
"dep:quick-xml",
"dep:bevy_entitiles_derive",
"atlas",
"dep:futures-lite",
]
[[example]]
name = "basic"
path = "examples/basic.rs"
required-features = []
[[example]]
name = "animation"
path = "examples/animation.rs"
required-features = []
[[example]]
name = "pathfinding"
path = "examples/pathfinding.rs"
required-features = ["algorithm", "multi-threaded"]
[[example]]
name = "pathfinding_single_threaded"
path = "examples/pathfinding_single_threaded.rs"
required-features = ["algorithm"]
[[example]]
name = "wfc"
path = "examples/wfc.rs"
required-features = ["algorithm"]
[[example]]
name = "physics"
path = "examples/physics.rs"
required-features = ["physics"]
[[example]]
name = "save_and_load"
path = "examples/save_and_load.rs"
required-features = ["algorithm", "physics"]
[[example]]
name = "ldtk"
path = "examples/ldtk.rs"
required-features = ["debug", "ldtk", "physics"]
[[example]]
name = "wfc_pattern"
path = "examples/wfc_pattern.rs"
required-features = ["algorithm"]
[[example]]
name = "ldtk_wfc"
path = "examples/ldtk_wfc.rs"
required-features = ["algorithm", "ldtk", "physics"]
[[example]]
name = "chunk_unloading"
path = "examples/chunk_unloading.rs"
required-features = ["debug", "serializing", "physics"]
[[example]]
name = "tiled"
path = "examples/tiled.rs"
required-features = ["tiled", "physics"]
[[example]]
name = "custom_material"
path = "examples/custom_material.rs"
required-features = []
[[example]]
name = "stress_test"
path = "examples/stress_test.rs"
required-features = []
[[example]]
name = "baking"
path = "examples/baking.rs"
required-features = ["baking"]
[[example]]
name = "multiple_tilesets"
path = "examples/multiple_tilesets.rs"
required-features = []
[[example]]
name = "isometric_cubes"
path = "examples/isometric_cubes.rs"
required-features = []
================================================
FILE: LICENSE
================================================
MIT License
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: README.md
================================================
# Bevy EntiTiles 🗺️
A 2d tilemap library for bevy. With many useful algorithms/tools built in.
It's **NOT** recommended to use the code in the `dev` branch! There's full of incomplete code and even errors in it! But the `master` branch would be ok if you can't wait to try out new features.
Currently, documentation is not very comprehensive. If you encounter any problems, please feel free to open an issue or simply ping me or DM *@443eb9* on the bevy discord server.
This crate is largely inspired from [`bevy_ecs_tilemap`](https://github.com/StarArawn/bevy_ecs_tilemap)(Rendering) and [`bevy_ecs_ldtk`](https://github.com/Trouv/bevy_ecs_ldtk)(LDtk entity spawning)
## Why EntiTiles
- **Up-to-date** Once the new version of bevy is released, `bevy_entitiles` will catch up *mostly* in 12 hours.
- **Performant** Able to render 1000x1000 tilemaps at 200+fps on 10600KF + 3070.
- **Various Built-in Stuff** Useful algorithms(pathfinding, WFC...) and tools(LDtk and Tiled importer...) are built in.
## Warning!
You should **NEVER** install the following versions! They contain critical bugs and are not recommended to use!
**0.6.0**
## Limitations
- Supports up to 4 rendered layers* per tilemap.
*\* Rendered layer means the layer that will be **rendered**. You can insert as many layers as you want, but only the 4 top layers will be rendered.*
## Future Goals
*The higher the priority, the more towards the front in the following list.*
- More Tilemap Shapes (Triangle, Voronoi)
- Pathfinding (Parallel A* Pathfinding, Jump Point Search)
- [LDtk](https://ldtk.io/) Support (Automatically map `EntityRef` to real entities)
- [Tiled](https://www.mapeditor.org/) Support (Algorithm stuff, auto map `object` type to real entities)
- Tilemap Serializing (Custom Binary Format)
- Wang Tiling
- Tilemap Mask
- ~~Frustum Culling~~
- ~~Physics~~
- ~~Infinite Tilemap~~
- ~~Chunk Unloading~~
- ~~Custom Material~~
*Looking for render features that have been removed? They're moved into [`bevy_incandescent`](https://github.com/443eb9/bevy_incandescent) (a 2d lighting crate currently wip)!*
## Feature Flags
| Flag | Funtionality |
| ---------------- | --------------------------------------------------------------------------------------- |
| `algorithm` | Implementation of algorithms |
| `atlas` | Use calculated uv coordinates on a entire texture instead of using texture arrays. |
| `debug` | Show some debug info including aabbs for chunks and tilemaps, path finding results etc. |
| `ldtk` | [LDtk](https://ldtk.io/) support. |
| `multi-threaded` | Support algorithms to run asynchronously. Disable this if you are targeting wasm. |
| `physics` | Physics support using [`avian`](https://github.com/Jondolf/avian). |
| `serializing` | Save and load the tilemap from files. Also contains tools for upgrading files. |
| `tiled` | [Tiled](https://www.mapeditor.org/) support. |
## Coordinate Systems
The x and y axes in the tilemaps are the index axes. And those x and y on a single tile mean the actual mesh size. Which you can control using `tile_render_size`.
<div>
<img src="https://raw.githubusercontent.com/443eb9/bevy_entitiles/master/docs/imgs/coordinate_systems.jpg" width="500px">
</div>
*`legs` here are mathematically incorrect, please consider it as a new concept.*
## Showcases
*See the `README` in `examples`*
## Assets
- [SunnyLand_by_Ansimuz-extended.png](https://ansimuz.itch.io/sunny-land-pixel-game-art)
- [Cavernas_by_Adam_Saltsman.png](https://adamatomic.itch.io/cavernas)
## Versions
*LDtk version is the version that json api has changed. So you can also use 1.5.2 in 0.2.7. See [this](https://ldtk.io/json/next/#changes) for more information.*
*It doesn't mean all the features from the corresponding versions of LDtk and Tiled are supported, but this crate is using the source tilemap file generated from them!*
| Bevy ver | EntiTiles ver | LDtk ver | Tiled ver | WASM Support |
| -------- | ------------- | ------------- | ------------- | ------------ |
| 0.14.x | 0.12.0 | 1.5.3 | 1.11.0 | Yes |
| 0.14.x | 0.10.0-0.11.0 | 1.5.3 | 1.11.0 | No |
| 0.13.x | 0.6.0-0.9.0 | 1.5.3 | 1.10.2 | No |
| 0.12.x | 0.4.0-0.5.0 | 1.5.3 | 1.10.2 | No |
| 0.12.x | 0.3.0 | 1.5.3 | Not supported | No |
| 0.12.x | 0.2.7 | 1.5.1 | Not supported | No |
| 0.12.x | 0.2.3-0.2.6 | 1.4.1 | Not supported | No |
| 0.12.x | 0.2.0-0.2.2 | Not supported | Not supported | No |
| 0.11.x | 0.1.x | Not supported | Not supported | No |
*Versions before 0.3.0 are not named following [`Semantic Versioning`](https://semver.org/)*
================================================
FILE: RELEASE_NOTE.md
================================================
# What's New:
- Supported `point`s contained by Tiled objects.
- Renamed `shape_as_collider` macro to `instantiate_shape` .
- WASM, finally supported.
- Updated dependencies.
# What's Fixed:
-
================================================
FILE: assets/custom_material.wgsl
================================================
// The definition of TilemapVertexOutput is in src/render/shaders/common.wgsl
// Don't be afraid of reading the original shader code if you are not familiar with it!
// They are already filled with comments and easy to understand.
#import bevy_entitiles::common::TilemapVertexOutput;
@group(1) @binding(0)
var<uniform> speed_and_time: vec2<f32>;
// The fragment entry name of your shader must be tilemap_fragment
@fragment
fn tilemap_fragment(input: TilemapVertexOutput) -> @location(0) vec4<f32> {
// Infact the tilemap has 4 layers. Here we only sample the top layer.
// If you want to see how the original shader looks like, you can check src/render/shaders/tilemap.wgsl
let tex_color = textureSample(bevy_entitiles::common::color_texture,
bevy_entitiles::common::color_texture_sampler,
input.uv, input.atlas_indices[3]);
let t = speed_and_time[0] * speed_and_time[1];
let color = vec4<f32>(sin(t), cos(t), sin(2. * t), 1.);
return color * tex_color;
}
================================================
FILE: assets/ldtk/grid_vania.ldtk
================================================
{
"__header__": {
"fileType": "LDtk Project JSON",
"app": "LDtk",
"doc": "https://ldtk.io/json",
"schema": "https://ldtk.io/files/JSON_SCHEMA.json",
"appAuthor": "Sebastien 'deepnight' Benard",
"appVersion": "1.5.3",
"url": "https://ldtk.io"
},
"iid": "a39fb1b0-7820-11ed-b6fd-87f9a01f3d6b",
"jsonVersion": "1.5.3",
"appBuildId": 474876,
"nextUid": 149,
"identifierStyle": "Capitalize",
"toc": [{
"identifier": "Player",
"instances": [{
"worldIid": "ca3d7420-c640-11ed-ad34-5f1a115c4cf3",
"levelIid": "a367c3b0-66b0-11ec-9cd7-91690c910c97",
"layerIid": "a367c3b5-66b0-11ec-9cd7-a7935e1c2c53",
"entityIid": "a367c3b8-66b0-11ec-9cd7-313e15c65fee"
}],
"instancesData": [{ "iids": {
"worldIid": "ca3d7420-c640-11ed-ad34-5f1a115c4cf3",
"levelIid": "a367c3b0-66b0-11ec-9cd7-91690c910c97",
"layerIid": "a367c3b5-66b0-11ec-9cd7-a7935e1c2c53",
"entityIid": "a367c3b8-66b0-11ec-9cd7-313e15c65fee"
}, "worldX": 296, "worldY": 176, "widPx": 20, "heiPx": 20, "fields" : {} }]
}],
"worldLayout": "GridVania",
"worldGridWidth": 256,
"worldGridHeight": 256,
"defaultLevelWidth": 256,
"defaultLevelHeight": 256,
"defaultPivotX": 0,
"defaultPivotY": 0,
"defaultGridSize": 16,
"defaultEntityWidth": 16,
"defaultEntityHeight": 16,
"bgColor": "#132A3F",
"defaultLevelBgColor": "#37494E",
"minifyJson": false,
"externalLevels": false,
"exportTiled": false,
"simplifiedExport": false,
"imageExportMode": "None",
"exportLevelBg": true,
"pngFilePattern": null,
"backupOnSave": false,
"backupLimit": 10,
"backupRelPath": null,
"levelNamePattern": "%world_Level_%idx",
"tutorialDesc": "In Gridvania world layouts, levels are organized on a large grid.\nPress [W] to switch to World mode.\nIn this example, some are even in different world layers (ie. above and behind). Use [PAGE UP] and [PAGE DOWN] to move between world layers.",
"customCommands": [],
"flags": [ "ExportOldTableOfContentData", "IgnoreBackupSuggest", "UseMultilinesType" ],
"defs": { "layers": [
{
"__type": "Tiles",
"identifier": "Animation",
"type": "Tiles",
"uid": 148,
"doc": null,
"uiColor": null,
"gridSize": 16,
"guideGridWid": 0,
"guideGridHei": 0,
"displayOpacity": 1,
"inactiveOpacity": 1,
"hideInList": false,
"hideFieldsWhenInactive": false,
"canSelectWhenInactive": true,
"renderInWorldView": true,
"pxOffsetX": 0,
"pxOffsetY": 0,
"parallaxFactorX": 0,
"parallaxFactorY": 0,
"parallaxScaling": true,
"requiredTags": [],
"excludedTags": [],
"autoTilesKilledByOtherLayerUid": null,
"uiFilterTags": [],
"useAsyncRender": false,
"intGridValues": [],
"intGridValuesGroups": [],
"autoRuleGroups": [],
"autoSourceLayerDefUid": null,
"tilesetDefUid": 6,
"tilePivotX": 0,
"tilePivotY": 0,
"biomeFieldUid": null
},
{
"__type": "IntGrid",
"identifier": "PhysicsColliders",
"type": "IntGrid",
"uid": 147,
"doc": null,
"uiColor": null,
"gridSize": 16,
"guideGridWid": 0,
"guideGridHei": 0,
"displayOpacity": 1,
"inactiveOpacity": 1,
"hideInList": false,
"hideFieldsWhenInactive": false,
"canSelectWhenInactive": true,
"renderInWorldView": true,
"pxOffsetX": 0,
"pxOffsetY": 0,
"parallaxFactorX": 0,
"parallaxFactorY": 0,
"parallaxScaling": true,
"requiredTags": [],
"excludedTags": [],
"autoTilesKilledByOtherLayerUid": null,
"uiFilterTags": [],
"useAsyncRender": false,
"intGridValues": [
{ "value": 1, "identifier": "Wall", "color": "#000000", "tile": null, "groupUid": 0 },
{ "value": 2, "identifier": "Pool_Bottom", "color": "#BE4A2F", "tile": null, "groupUid": 0 }
],
"intGridValuesGroups": [],
"autoRuleGroups": [],
"autoSourceLayerDefUid": null,
"tilesetDefUid": null,
"tilePivotX": 0,
"tilePivotY": 0,
"biomeFieldUid": null
},
{
"__type": "Entities",
"identifier": "Entities",
"type": "Entities",
"uid": 77,
"doc": null,
"uiColor": "#0099DB",
"gridSize": 16,
"guideGridWid": 0,
"guideGridHei": 0,
"displayOpacity": 1,
"inactiveOpacity": 0.8,
"hideInList": false,
"hideFieldsWhenInactive": true,
"canSelectWhenInactive": true,
"renderInWorldView": true,
"pxOffsetX": 0,
"pxOffsetY": 0,
"parallaxFactorX": 0,
"parallaxFactorY": 0,
"parallaxScaling": true,
"requiredTags": [],
"excludedTags": [],
"autoTilesKilledByOtherLayerUid": null,
"uiFilterTags": [],
"useAsyncRender": false,
"intGridValues": [],
"intGridValuesGroups": [],
"autoRuleGroups": [],
"autoSourceLayerDefUid": null,
"tilesetDefUid": null,
"tilePivotX": 0,
"tilePivotY": 0,
"biomeFieldUid": null
},
{
"__type": "AutoLayer",
"identifier": "Wall_shadows",
"type": "AutoLayer",
"uid": 24,
"doc": null,
"uiColor": "#5A6988",
"gridSize": 16,
"guideGridWid": 0,
"guideGridHei": 0,
"displayOpacity": 0.53,
"inactiveOpacity": 1,
"hideInList": false,
"hideFieldsWhenInactive": true,
"canSelectWhenInactive": true,
"renderInWorldView": false,
"pxOffsetX": 0,
"pxOffsetY": 0,
"parallaxFactorX": 0,
"parallaxFactorY": 0,
"parallaxScaling": true,
"requiredTags": [],
"excludedTags": [],
"autoTilesKilledByOtherLayerUid": null,
"uiFilterTags": [],
"useAsyncRender": false,
"intGridValues": [],
"intGridValuesGroups": [],
"autoRuleGroups": [
{
"uid": 25,
"name": "Shadows",
"color": null,
"icon": null,
"active": true,
"isOptional": false,
"rules": [
{
"uid": 137,
"active": true,
"size": 3,
"tileRectsIds": [[181]],
"alpha": 1,
"chance": 1,
"breakOnMatch": true,
"pattern": [1,-1,0,-1,-1,0,0,0,0],
"flipX": true,
"flipY": false,
"xModulo": 1,
"yModulo": 1,
"xOffset": 0,
"yOffset": 0,
"tileXOffset": 0,
"tileYOffset": 0,
"tileRandomXMin": 0,
"tileRandomXMax": 0,
"tileRandomYMin": 0,
"tileRandomYMax": 0,
"checker": "None",
"tileMode": "Single",
"pivotX": 0,
"pivotY": 0,
"outOfBoundsValue": null,
"invalidated": false,
"perlinActive": false,
"perlinSeed": 1586388,
"perlinScale": 0.2,
"perlinOctaves": 2
},
{
"uid": 27,
"active": true,
"size": 3,
"tileRectsIds": [[182]],
"alpha": 1,
"chance": 1,
"breakOnMatch": false,
"pattern": [0,1,0,0,-1,0,0,0,0],
"flipX": false,
"flipY": false,
"xModulo": 1,
"yModulo": 1,
"xOffset": 0,
"yOffset": 0,
"tileXOffset": 0,
"tileYOffset": 0,
"tileRandomXMin": 0,
"tileRandomXMax": 0,
"tileRandomYMin": 0,
"tileRandomYMax": 0,
"checker": "None",
"tileMode": "Single",
"pivotX": 0,
"pivotY": 0,
"outOfBoundsValue": null,
"invalidated": false,
"perlinActive": false,
"perlinSeed": 7217603,
"perlinScale": 0.2,
"perlinOctaves": 2
},
{
"uid": 138,
"active": true,
"size": 3,
"tileRectsIds": [[158]],
"alpha": 1,
"chance": 1,
"breakOnMatch": true,
"pattern": [-1,0,0,1,-1,0,0,0,0],
"flipX": true,
"flipY": false,
"xModulo": 1,
"yModulo": 1,
"xOffset": 0,
"yOffset": 0,
"tileXOffset": 0,
"tileYOffset": 0,
"tileRandomXMin": 0,
"tileRandomXMax": 0,
"tileRandomYMin": 0,
"tileRandomYMax": 0,
"checker": "None",
"tileMode": "Single",
"pivotX": 0,
"pivotY": 0,
"outOfBoundsValue": null,
"invalidated": false,
"perlinActive": false,
"perlinSeed": 7410782,
"perlinScale": 0.2,
"perlinOctaves": 2
},
{
"uid": 26,
"active": true,
"size": 3,
"tileRectsIds": [[204]],
"alpha": 1,
"chance": 1,
"breakOnMatch": true,
"pattern": [1,0,0,1,-1,0,0,0,0],
"flipX": true,
"flipY": false,
"xModulo": 1,
"yModulo": 1,
"xOffset": 0,
"yOffset": 0,
"tileXOffset": 0,
"tileYOffset": 0,
"tileRandomXMin": 0,
"tileRandomXMax": 0,
"tileRandomYMin": 0,
"tileRandomYMax": 0,
"checker": "None",
"tileMode": "Single",
"pivotX": 0,
"pivotY": 0,
"outOfBoundsValue": null,
"invalidated": false,
"perlinActive": false,
"perlinSeed": 9178681,
"perlinScale": 0.2,
"perlinOctaves": 2
}
],
"usesWizard": false,
"requiredBiomeValues": [],
"biomeRequirementMode": 0
}
],
"autoSourceLayerDefUid": 1,
"tilesetDefUid": 6,
"tilePivotX": 0,
"tilePivotY": 0,
"biomeFieldUid": null
},
{
"__type": "IntGrid",
"identifier": "Collisions",
"type": "IntGrid",
"uid": 1,
"doc": null,
"uiColor": "#E4A672",
"gridSize": 16,
"guideGridWid": 0,
"guideGridHei": 0,
"displayOpacity": 1,
"inactiveOpacity": 1,
"hideInList": false,
"hideFieldsWhenInactive": true,
"canSelectWhenInactive": true,
"renderInWorldView": true,
"pxOffsetX": 0,
"pxOffsetY": 0,
"parallaxFactorX": 0,
"parallaxFactorY": 0,
"parallaxScaling": true,
"requiredTags": [],
"excludedTags": [],
"autoTilesKilledByOtherLayerUid": null,
"uiFilterTags": [],
"useAsyncRender": false,
"intGridValues": [
{ "value": 1, "identifier": "walls", "color": "#B1824C", "tile": { "tilesetUid": 6, "x": 256, "y": 96, "w": 16, "h": 16 }, "groupUid": 0 },
{ "value": 2, "identifier": "water", "color": "#7297E5", "tile": { "tilesetUid": 6, "x": 320, "y": 160, "w": 16, "h": 16 }, "groupUid": 0 }
],
"intGridValuesGroups": [],
"autoRuleGroups": [
{
"uid": 109,
"name": "Plants",
"color": "#3E8948",
"icon": { "tilesetUid": 6, "x": 0, "y": 96, "w": 16, "h": 16 },
"active": true,
"isOptional": false,
"rules": [
{
"uid": 110,
"active": true,
"size": 5,
"tileRectsIds": [ [138], [140] ],
"alpha": 1,
"chance": 0.52,
"breakOnMatch": false,
"pattern": [0,0,0,0,0,0,0,0,0,0,0,0,-1000001,0,0,0,0,1,0,0,0,0,1,0,0],
"flipX": false,
"flipY": false,
"xModulo": 1,
"yModulo": 1,
"xOffset": 0,
"yOffset": 0,
"tileXOffset": 0,
"tileYOffset": 0,
"tileRandomXMin": 0,
"tileRandomXMax": 0,
"tileRandomYMin": 0,
"tileRandomYMax": 0,
"checker": "None",
"tileMode": "Single",
"pivotX": 0,
"pivotY": 0,
"outOfBoundsValue": null,
"invalidated": false,
"perlinActive": false,
"perlinSeed": 7216209,
"perlinScale": 0.2,
"perlinOctaves": 2
},
{
"uid": 80,
"active": true,
"size": 3,
"tileRectsIds": [[2]],
"alpha": 1,
"chance": 1,
"breakOnMatch": true,
"pattern": [0,-1000001,0,0,1,0,0,1,0],
"flipX": false,
"flipY": false,
"xModulo": 1,
"yModulo": 1,
"xOffset": 0,
"yOffset": 0,
"tileXOffset": 0,
"tileYOffset": 0,
"tileRandomXMin": 0,
"tileRandomXMax": 0,
"tileRandomYMin": 0,
"tileRandomYMax": 0,
"checker": "None",
"tileMode": "Single",
"pivotX": 0,
"pivotY": 0,
"outOfBoundsValue": null,
"invalidated": false,
"perlinActive": true,
"perlinSeed": 6023486,
"perlinScale": 0.24,
"perlinOctaves": 2
}
],
"usesWizard": false,
"requiredBiomeValues": [],
"biomeRequirementMode": 0
},
{
"uid": 7,
"name": "Walls edges",
"color": null,
"icon": { "tilesetUid": 6, "x": 256, "y": 96, "w": 16, "h": 16 },
"active": true,
"isOptional": false,
"rules": [
{
"uid": 78,
"active": true,
"size": 3,
"tileRectsIds": [ [286], [288] ],
"alpha": 1,
"chance": 0.66,
"breakOnMatch": true,
"pattern": [0,1,0,0,1,0,0,-1,0],
"flipX": false,
"flipY": false,
"xModulo": 1,
"yModulo": 1,
"xOffset": 0,
"yOffset": 0,
"tileXOffset": 0,
"tileYOffset": 0,
"tileRandomXMin": 0,
"tileRandomXMax": 0,
"tileRandomYMin": 0,
"tileRandomYMax": 0,
"checker": "None",
"tileMode": "Single",
"pivotX": 0,
"pivotY": 0,
"outOfBoundsValue": null,
"invalidated": false,
"perlinActive": true,
"perlinSeed": 9947410,
"perlinScale": 0.43,
"perlinOctaves": 2
},
{
"uid": 14,
"active": true,
"size": 3,
"tileRectsIds": [[152]],
"alpha": 1,
"chance": 1,
"breakOnMatch": true,
"pattern": [0,0,0,0,1,1,0,1,-1],
"flipX": true,
"flipY": true,
"xModulo": 1,
"yModulo": 1,
"xOffset": 0,
"yOffset": 0,
"tileXOffset": 0,
"tileYOffset": 0,
"tileRandomXMin": 0,
"tileRandomXMax": 0,
"tileRandomYMin": 0,
"tileRandomYMax": 0,
"checker": "None",
"tileMode": "Single",
"pivotX": 0,
"pivotY": 0,
"outOfBoundsValue": null,
"invalidated": false,
"perlinActive": false,
"perlinSeed": 2090192,
"perlinScale": 0.2,
"perlinOctaves": 2
},
{
"uid": 11,
"active": true,
"size": 3,
"tileRectsIds": [[152]],
"alpha": 1,
"chance": 1,
"breakOnMatch": true,
"pattern": [0,-1,0,-1,1,0,0,0,0],
"flipX": true,
"flipY": true,
"xModulo": 1,
"yModulo": 1,
"xOffset": 0,
"yOffset": 0,
"tileXOffset": 0,
"tileYOffset": 0,
"tileRandomXMin": 0,
"tileRandomXMax": 0,
"tileRandomYMin": 0,
"tileRandomYMax": 0,
"checker": "None",
"tileMode": "Single",
"pivotX": 0,
"pivotY": 0,
"outOfBoundsValue": null,
"invalidated": false,
"perlinActive": false,
"perlinSeed": 8016084,
"perlinScale": 0.2,
"perlinOctaves": 2
},
{
"uid": 10,
"active": true,
"size": 3,
"tileRectsIds": [[198]],
"alpha": 1,
"chance": 1,
"breakOnMatch": true,
"pattern": [0,0,0,-1,1,0,0,0,0],
"flipX": true,
"flipY": false,
"xModulo": 1,
"yModulo": 1,
"xOffset": 0,
"yOffset": 0,
"tileXOffset": 0,
"tileYOffset": 0,
"tileRandomXMin": 0,
"tileRandomXMax": 0,
"tileRandomYMin": 0,
"tileRandomYMax": 0,
"checker": "None",
"tileMode": "Single",
"pivotX": 0,
"pivotY": 0,
"outOfBoundsValue": null,
"invalidated": false,
"perlinActive": false,
"perlinSeed": 2534202,
"perlinScale": 0.2,
"perlinOctaves": 2
},
{
"uid": 9,
"active": true,
"size": 3,
"tileRectsIds": [[154]],
"alpha": 1,
"chance": 1,
"breakOnMatch": true,
"pattern": [0,-1,0,0,1,0,0,0,0],
"flipX": false,
"flipY": false,
"xModulo": 1,
"yModulo": 1,
"xOffset": 0,
"yOffset": 0,
"tileXOffset": 0,
"tileYOffset": 0,
"tileRandomXMin": 0,
"tileRandomXMax": 0,
"tileRandomYMin": 0,
"tileRandomYMax": 0,
"checker": "None",
"tileMode": "Single",
"pivotX": 0,
"pivotY": 0,
"outOfBoundsValue": null,
"invalidated": false,
"perlinActive": false,
"perlinSeed": 1741728,
"perlinScale": 0.2,
"perlinOctaves": 2
},
{
"uid": 12,
"active": true,
"size": 3,
"tileRectsIds": [[246]],
"alpha": 1,
"chance": 1,
"breakOnMatch": true,
"pattern": [0,0,0,0,1,0,0,-1,0],
"flipX": false,
"flipY": false,
"xModulo": 1,
"yModulo": 1,
"xOffset": 0,
"yOffset": 0,
"tileXOffset": 0,
"tileYOffset": 0,
"tileRandomXMin": 0,
"tileRandomXMax": 0,
"tileRandomYMin": 0,
"tileRandomYMax": 0,
"checker": "None",
"tileMode": "Single",
"pivotX": 0,
"pivotY": 0,
"outOfBoundsValue": null,
"invalidated": false,
"perlinActive": false,
"perlinSeed": 133117,
"perlinScale": 0.2,
"perlinOctaves": 2
}
],
"usesWizard": false,
"requiredBiomeValues": [],
"biomeRequirementMode": 0
},
{
"uid": 125,
"name": "Walls inner deep ",
"color": null,
"icon": { "tilesetUid": 6, "x": 96, "y": 96, "w": 16, "h": 16 },
"active": true,
"isOptional": false,
"rules": [
{
"uid": 126,
"active": true,
"size": 7,
"tileRectsIds": [ [142], [144] ],
"alpha": 1,
"chance": 0.71,
"breakOnMatch": true,
"pattern": [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
"flipX": false,
"flipY": false,
"xModulo": 2,
"yModulo": 1,
"xOffset": 0,
"yOffset": 0,
"tileXOffset": 0,
"tileYOffset": 0,
"tileRandomXMin": 0,
"tileRandomXMax": 0,
"tileRandomYMin": 0,
"tileRandomYMax": 0,
"checker": "Horizontal",
"tileMode": "Single",
"pivotX": 0,
"pivotY": 0,
"outOfBoundsValue": 1,
"invalidated": false,
"perlinActive": true,
"perlinSeed": 7097334,
"perlinScale": 0.2,
"perlinOctaves": 2
},
{
"uid": 127,
"active": true,
"size": 7,
"tileRectsIds": [[48]],
"alpha": 1,
"chance": 1,
"breakOnMatch": true,
"pattern": [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
"flipX": false,
"flipY": false,
"xModulo": 1,
"yModulo": 1,
"xOffset": 0,
"yOffset": 0,
"tileXOffset": 0,
"tileYOffset": 0,
"tileRandomXMin": 0,
"tileRandomXMax": 0,
"tileRandomYMin": 0,
"tileRandomYMax": 0,
"checker": "None",
"tileMode": "Single",
"pivotX": 0,
"pivotY": 0,
"outOfBoundsValue": 1,
"invalidated": false,
"perlinActive": false,
"perlinSeed": 7097334,
"perlinScale": 0.2,
"perlinOctaves": 2
}
],
"usesWizard": false,
"requiredBiomeValues": [],
"biomeRequirementMode": 0
},
{
"uid": 124,
"name": "Walls inner",
"color": null,
"icon": { "tilesetUid": 6, "x": 192, "y": 16, "w": 16, "h": 16 },
"active": true,
"isOptional": false,
"rules": [
{
"uid": 101,
"active": true,
"size": 3,
"tileRectsIds": [ [6], [35], [152] ],
"alpha": 1,
"chance": 1,
"breakOnMatch": true,
"pattern": [1,1,1,1,1,1,1,1,1],
"flipX": false,
"flipY": false,
"xModulo": 2,
"yModulo": 1,
"xOffset": 0,
"yOffset": 0,
"tileXOffset": 0,
"tileYOffset": 0,
"tileRandomXMin": 0,
"tileRandomXMax": 0,
"tileRandomYMin": 0,
"tileRandomYMax": 0,
"checker": "Horizontal",
"tileMode": "Single",
"pivotX": 0,
"pivotY": 0,
"outOfBoundsValue": 1,
"invalidated": false,
"perlinActive": false,
"perlinSeed": 5285703,
"perlinScale": 0.2,
"perlinOctaves": 2
},
{
"uid": 83,
"active": true,
"size": 1,
"tileRectsIds": [ [142], [144] ],
"alpha": 1,
"chance": 0.71,
"breakOnMatch": false,
"pattern": [1],
"flipX": false,
"flipY": false,
"xModulo": 1,
"yModulo": 1,
"xOffset": 0,
"yOffset": 0,
"tileXOffset": 0,
"tileYOffset": 0,
"tileRandomXMin": 0,
"tileRandomXMax": 0,
"tileRandomYMin": 0,
"tileRandomYMax": 0,
"checker": "None",
"tileMode": "Single",
"pivotX": 0,
"pivotY": 0,
"outOfBoundsValue": null,
"invalidated": false,
"perlinActive": true,
"perlinSeed": 2652925,
"perlinScale": 0.2,
"perlinOctaves": 2
},
{
"uid": 8,
"active": true,
"size": 1,
"tileRectsIds": [[48]],
"alpha": 1,
"chance": 1,
"breakOnMatch": true,
"pattern": [1],
"flipX": false,
"flipY": false,
"xModulo": 1,
"yModulo": 1,
"xOffset": 0,
"yOffset": 0,
"tileXOffset": 0,
"tileYOffset": 0,
"tileRandomXMin": 0,
"tileRandomXMax": 0,
"tileRandomYMin": 0,
"tileRandomYMax": 0,
"checker": "None",
"tileMode": "Single",
"pivotX": 0,
"pivotY": 0,
"outOfBoundsValue": null,
"invalidated": false,
"perlinActive": false,
"perlinSeed": 3433071,
"perlinScale": 0.2,
"perlinOctaves": 2
}
],
"usesWizard": false,
"requiredBiomeValues": [],
"biomeRequirementMode": 0
},
{
"uid": 20,
"name": "Water",
"color": "#0099DB",
"icon": { "tilesetUid": 6, "x": 320, "y": 160, "w": 16, "h": 16 },
"active": true,
"isOptional": false,
"rules": [
{
"uid": 21,
"active": true,
"size": 3,
"tileRectsIds": [[250]],
"alpha": 1,
"chance": 1,
"breakOnMatch": true,
"pattern": [0,-1000001,0,0,2,0,0,0,0],
"flipX": false,
"flipY": false,
"xModulo": 1,
"yModulo": 1,
"xOffset": 0,
"yOffset": 0,
"tileXOffset": 0,
"tileYOffset": 0,
"tileRandomXMin": 0,
"tileRandomXMax": 0,
"tileRandomYMin": 0,
"tileRandomYMax": 0,
"checker": "None",
"tileMode": "Single",
"pivotX": 0,
"pivotY": 0,
"outOfBoundsValue": null,
"invalidated": false,
"perlinActive": false,
"perlinSeed": 9172841,
"perlinScale": 0.2,
"perlinOctaves": 2
},
{
"uid": 28,
"active": true,
"size": 1,
"tileRectsIds": [[273]],
"alpha": 1,
"chance": 1,
"breakOnMatch": true,
"pattern": [2],
"flipX": false,
"flipY": false,
"xModulo": 1,
"yModulo": 1,
"xOffset": 0,
"yOffset": 0,
"tileXOffset": 0,
"tileYOffset": 0,
"tileRandomXMin": 0,
"tileRandomXMax": 0,
"tileRandomYMin": 0,
"tileRandomYMax": 0,
"checker": "None",
"tileMode": "Single",
"pivotX": 0,
"pivotY": 0,
"outOfBoundsValue": null,
"invalidated": false,
"perlinActive": false,
"perlinSeed": 1564563,
"perlinScale": 0.2,
"perlinOctaves": 2
}
],
"usesWizard": false,
"requiredBiomeValues": [],
"biomeRequirementMode": 0
}
],
"autoSourceLayerDefUid": null,
"tilesetDefUid": 6,
"tilePivotX": 0,
"tilePivotY": 0,
"biomeFieldUid": null
},
{
"__type": "AutoLayer",
"identifier": "Background",
"type": "AutoLayer",
"uid": 103,
"doc": null,
"uiColor": "#5A6988",
"gridSize": 16,
"guideGridWid": 0,
"guideGridHei": 0,
"displayOpacity": 1,
"inactiveOpacity": 1,
"hideInList": false,
"hideFieldsWhenInactive": true,
"canSelectWhenInactive": true,
"renderInWorldView": true,
"pxOffsetX": 0,
"pxOffsetY": 0,
"parallaxFactorX": 0,
"parallaxFactorY": 0,
"parallaxScaling": true,
"requiredTags": [],
"excludedTags": [],
"autoTilesKilledByOtherLayerUid": null,
"uiFilterTags": [],
"useAsyncRender": false,
"intGridValues": [],
"intGridValuesGroups": [],
"autoRuleGroups": [
{
"uid": 111,
"name": "Bg leaves",
"color": "#265C42",
"icon": { "tilesetUid": 6, "x": 160, "y": 256, "w": 16, "h": 16 },
"active": true,
"isOptional": false,
"rules": [
{
"uid": 115,
"active": true,
"size": 3,
"tileRectsIds": [[307,330]],
"alpha": 1,
"chance": 0.12,
"breakOnMatch": false,
"pattern": [1,1,1,-1000001,-1000001,-1000001,-1000001,-1000001,-1000001],
"flipX": false,
"flipY": false,
"xModulo": 2,
"yModulo": 1,
"xOffset": 0,
"yOffset": 0,
"tileXOffset": 0,
"tileYOffset": 0,
"tileRandomXMin": 0,
"tileRandomXMax": 0,
"tileRandomYMin": 0,
"tileRandomYMax": 0,
"checker": "None",
"tileMode": "Stamp",
"pivotX": 0.5,
"pivotY": 0,
"outOfBoundsValue": null,
"invalidated": false,
"perlinActive": false,
"perlinSeed": 5480683,
"perlinScale": 0.2,
"perlinOctaves": 2
},
{
"uid": 114,
"active": true,
"size": 3,
"tileRectsIds": [ [305], [330] ],
"alpha": 1,
"chance": 0.36,
"breakOnMatch": false,
"pattern": [0,1,0,0,-1000001,0,0,0,0],
"flipX": false,
"flipY": false,
"xModulo": 2,
"yModulo": 1,
"xOffset": 0,
"yOffset": 0,
"tileXOffset": 0,
"tileYOffset": 0,
"tileRandomXMin": 0,
"tileRandomXMax": 0,
"tileRandomYMin": 0,
"tileRandomYMax": 0,
"checker": "None",
"tileMode": "Single",
"pivotX": 0,
"pivotY": 0,
"outOfBoundsValue": null,
"invalidated": false,
"perlinActive": true,
"perlinSeed": 5159038,
"perlinScale": 0.2,
"perlinOctaves": 2
},
{
"uid": 113,
"active": true,
"size": 5,
"tileRectsIds": [[449,472,450,473,451,474]],
"alpha": 1,
"chance": 0.63,
"breakOnMatch": false,
"pattern": [0,0,0,0,0,0,1,-1000001,-1000001,-1000001,0,1,-1000001,-1000001,-1000001,0,1,1,1,1,0,0,0,0,0],
"flipX": true,
"flipY": true,
"xModulo": 1,
"yModulo": 1,
"xOffset": 0,
"yOffset": 0,
"tileXOffset": 0,
"tileYOffset": 0,
"tileRandomXMin": 0,
"tileRandomXMax": 0,
"tileRandomYMin": 0,
"tileRandomYMax": 0,
"checker": "None",
"tileMode": "Stamp",
"pivotX": 0,
"pivotY": 1,
"outOfBoundsValue": null,
"invalidated": false,
"perlinActive": false,
"perlinSeed": 8268329,
"perlinScale": 0.2,
"perlinOctaves": 2
},
{
"uid": 112,
"active": true,
"size": 5,
"tileRectsIds": [[354,377,400,355,378,401,356,379,402]],
"alpha": 1,
"chance": 0.46,
"breakOnMatch": false,
"pattern": [0,-1000001,-1000001,-1000001,0,0,-1000001,-1000001,-1000001,0,0,-1000001,-1000001,-1000001,0,0,1,1,1,0,0,0,0,0,0],
"flipX": false,
"flipY": true,
"xModulo": 5,
"yModulo": 1,
"xOffset": 0,
"yOffset": 0,
"tileXOffset": 0,
"tileYOffset": 0,
"tileRandomXMin": 0,
"tileRandomXMax": 0,
"tileRandomYMin": 0,
"tileRandomYMax": 0,
"checker": "None",
"tileMode": "Stamp",
"pivotX": 0.5,
"pivotY": 1,
"outOfBoundsValue": null,
"invalidated": false,
"perlinActive": false,
"perlinSeed": 1634458,
"perlinScale": 0.2,
"perlinOctaves": 2
}
],
"usesWizard": false,
"requiredBiomeValues": [],
"biomeRequirementMode": 0
},
{
"uid": 104,
"name": "Bg walls",
"color": "#68386C",
"icon": { "tilesetUid": 6, "x": 288, "y": 272, "w": 16, "h": 16 },
"active": true,
"isOptional": false,
"rules": [
{
"uid": 105,
"active": true,
"size": 3,
"tileRectsIds": [[361,362,363]],
"alpha": 1,
"chance": 0.55,
"breakOnMatch": true,
"pattern": [0,-1000001,0,-1000001,-1000001,-1000001,0,-1000001,0],
"flipX": false,
"flipY": false,
"xModulo": 3,
"yModulo": 2,
"xOffset": 0,
"yOffset": 0,
"tileXOffset": 0,
"tileYOffset": 0,
"tileRandomXMin": 0,
"tileRandomXMax": 0,
"tileRandomYMin": 0,
"tileRandomYMax": 0,
"checker": "Horizontal",
"tileMode": "Stamp",
"pivotX": 0.5,
"pivotY": 0.5,
"outOfBoundsValue": null,
"invalidated": false,
"perlinActive": true,
"perlinSeed": 2014904,
"perlinScale": 0.2,
"perlinOctaves": 2
},
{
"uid": 107,
"active": true,
"size": 3,
"tileRectsIds": [[361,362]],
"alpha": 1,
"chance": 1,
"breakOnMatch": true,
"pattern": [0,0,0,0,-1000001,1,0,0,0],
"flipX": true,
"flipY": false,
"xModulo": 1,
"yModulo": 1,
"xOffset": 0,
"yOffset": 0,
"tileXOffset": 0,
"tileYOffset": 0,
"tileRandomXMin": 0,
"tileRandomXMax": 0,
"tileRandomYMin": 0,
"tileRandomYMax": 0,
"checker": "None",
"tileMode": "Stamp",
"pivotX": 1,
"pivotY": 0.5,
"outOfBoundsValue": null,
"invalidated": false,
"perlinActive": false,
"perlinSeed": 7261553,
"perlinScale": 0.2,
"perlinOctaves": 2
},
{
"uid": 108,
"active": true,
"size": 1,
"tileRectsIds": [[411]],
"alpha": 1,
"chance": 1,
"breakOnMatch": true,
"pattern": [-1],
"flipX": false,
"flipY": false,
"xModulo": 1,
"yModulo": 1,
"xOffset": 0,
"yOffset": 0,
"tileXOffset": 0,
"tileYOffset": 0,
"tileRandomXMin": 0,
"tileRandomXMax": 0,
"tileRandomYMin": 0,
"tileRandomYMax": 0,
"checker": "None",
"tileMode": "Single",
"pivotX": 0,
"pivotY": 0,
"outOfBoundsValue": null,
"invalidated": false,
"perlinActive": false,
"perlinSeed": 3407168,
"perlinScale": 0.2,
"perlinOctaves": 2
}
],
"usesWizard": false,
"requiredBiomeValues": [],
"biomeRequirementMode": 0
}
],
"autoSourceLayerDefUid": 1,
"tilesetDefUid": 6,
"tilePivotX": 0,
"tilePivotY": 0,
"biomeFieldUid": null
}
], "entities": [
{
"identifier": "Item",
"uid": 72,
"tags": ["loot"],
"exportToToc": false,
"allowOutOfBounds": false,
"doc": null,
"width": 24,
"height": 24,
"resizableX": false,
"resizableY": false,
"minWidth": null,
"maxWidth": null,
"minHeight": null,
"maxHeight": null,
"keepAspectRatio": false,
"tileOpacity": 1,
"fillOpacity": 0.15,
"lineOpacity": 0.61,
"hollow": false,
"color": "#FFEC8A",
"renderMode": "Tile",
"showName": false,
"tilesetId": 146,
"tileRenderMode": "FitInside",
"tileRect": { "tilesetUid": 146, "x": 144, "y": 16, "w": 16, "h": 16 },
"uiTileRect": null,
"nineSliceBorders": [],
"maxCount": 0,
"limitScope": "PerLevel",
"limitBehavior": "DiscardOldOnes",
"pivotX": 0.5,
"pivotY": 1,
"fieldDefs": [
{
"identifier": "type",
"doc": null,
"__type": "LocalEnum.ItemType",
"uid": 76,
"type": "F_Enum(74)",
"isArray": false,
"canBeNull": false,
"arrayMinLength": null,
"arrayMaxLength": null,
"editorDisplayMode": "EntityTile",
"editorDisplayScale": 1,
"editorDisplayPos": "Above",
"editorLinkStyle": "ZigZag",
"editorDisplayColor": null,
"editorAlwaysShow": false,
"editorShowInWorld": true,
"editorCutLongValues": true,
"editorTextSuffix": null,
"editorTextPrefix": null,
"useForSmartColor": false,
"exportToToc": false,
"searchable": false,
"min": null,
"max": null,
"regex": null,
"acceptFileTypes": null,
"defaultOverride": null,
"textLanguageMode": null,
"symmetricalRef": false,
"autoChainRef": false,
"allowOutOfLevelRef": true,
"allowedRefs": "OnlySame",
"allowedRefsEntityUid": null,
"allowedRefTags": [],
"tilesetUid": null
},
{
"identifier": "price",
"doc": null,
"__type": "Int",
"uid": 93,
"type": "F_Int",
"isArray": false,
"canBeNull": false,
"arrayMinLength": null,
"arrayMaxLength": null,
"editorDisplayMode": "ValueOnly",
"editorDisplayScale": 1,
"editorDisplayPos": "Above",
"editorLinkStyle": "ZigZag",
"editorDisplayColor": null,
"editorAlwaysShow": false,
"editorShowInWorld": true,
"editorCutLongValues": true,
"editorTextSuffix": " GOLD",
"editorTextPrefix": null,
"useForSmartColor": false,
"exportToToc": false,
"searchable": false,
"min": 0,
"max": null,
"regex": null,
"acceptFileTypes": null,
"defaultOverride": null,
"textLanguageMode": null,
"symmetricalRef": false,
"autoChainRef": false,
"allowOutOfLevelRef": true,
"allowedRefs": "OnlySame",
"allowedRefsEntityUid": null,
"allowedRefTags": [],
"tilesetUid": null
},
{
"identifier": "count",
"doc": null,
"__type": "Int",
"uid": 139,
"type": "F_Int",
"isArray": false,
"canBeNull": false,
"arrayMinLength": null,
"arrayMaxLength": null,
"editorDisplayMode": "ValueOnly",
"editorDisplayScale": 1,
"editorDisplayPos": "Above",
"editorLinkStyle": "ZigZag",
"editorDisplayColor": null,
"editorAlwaysShow": false,
"editorShowInWorld": true,
"editorCutLongValues": true,
"editorTextSuffix": null,
"editorTextPrefix": "x",
"useForSmartColor": false,
"exportToToc": false,
"searchable": false,
"min": 1,
"max": null,
"regex": null,
"acceptFileTypes": null,
"defaultOverride": { "id": "V_Int", "params": [1] },
"textLanguageMode": null,
"symmetricalRef": false,
"autoChainRef": true,
"allowOutOfLevelRef": true,
"allowedRefs": "OnlySame",
"allowedRefsEntityUid": null,
"allowedRefTags": [],
"tilesetUid": null
}
]
},
{
"identifier": "Player",
"uid": 90,
"tags": ["actor"],
"exportToToc": true,
"allowOutOfBounds": false,
"doc": null,
"width": 20,
"height": 20,
"resizableX": false,
"resizableY": false,
"minWidth": null,
"maxWidth": null,
"minHeight": null,
"maxHeight": null,
"keepAspectRatio": false,
"tileOpacity": 1,
"fillOpacity": 0.08,
"lineOpacity": 0,
"hollow": false,
"color": "#48DA75",
"renderMode": "Tile",
"showName": true,
"tilesetId": 146,
"tileRenderMode": "FitInside",
"tileRect": { "tilesetUid": 146, "x": 256, "y": 144, "w": 16, "h": 16 },
"uiTileRect": null,
"nineSliceBorders": [],
"maxCount": 1,
"limitScope": "PerWorld",
"limitBehavior": "PreventAdding",
"pivotX": 0.5,
"pivotY": 1,
"fieldDefs": [
{
"identifier": "inventory",
"doc": null,
"__type": "Array<LocalEnum.ItemType>",
"uid": 91,
"type": "F_Enum(74)",
"isArray": true,
"canBeNull": false,
"arrayMinLength": null,
"arrayMaxLength": null,
"editorDisplayMode": "ValueOnly",
"editorDisplayScale": 1,
"editorDisplayPos": "Above",
"editorLinkStyle": "ZigZag",
"editorDisplayColor": null,
"editorAlwaysShow": true,
"editorShowInWorld": true,
"editorCutLongValues": true,
"editorTextSuffix": null,
"editorTextPrefix": null,
"useForSmartColor": false,
"exportToToc": false,
"searchable": false,
"min": null,
"max": null,
"regex": null,
"acceptFileTypes": null,
"defaultOverride": null,
"textLanguageMode": null,
"symmetricalRef": false,
"autoChainRef": false,
"allowOutOfLevelRef": true,
"allowedRefs": "OnlySame",
"allowedRefsEntityUid": null,
"allowedRefTags": [],
"tilesetUid": null
},
{
"identifier": "HP",
"doc": null,
"__type": "Int",
"uid": 92,
"type": "F_Int",
"isArray": false,
"canBeNull": false,
"arrayMinLength": null,
"arrayMaxLength": null,
"editorDisplayMode": "ValueOnly",
"editorDisplayScale": 1,
"editorDisplayPos": "Above",
"editorLinkStyle": "ZigZag",
"editorDisplayColor": null,
"editorAlwaysShow": true,
"editorShowInWorld": true,
"editorCutLongValues": true,
"editorTextSuffix": " HP",
"editorTextPrefix": null,
"useForSmartColor": false,
"exportToToc": false,
"searchable": false,
"min": 1,
"max": 10,
"regex": null,
"acceptFileTypes": null,
"defaultOverride": { "id": "V_Int", "params": [10] },
"textLanguageMode": null,
"symmetricalRef": false,
"autoChainRef": false,
"allowOutOfLevelRef": true,
"allowedRefs": "OnlySame",
"allowedRefsEntityUid": null,
"allowedRefTags": [],
"tilesetUid": null
}
]
},
{
"identifier": "Exit",
"uid": 94,
"tags": ["region"],
"exportToToc": false,
"allowOutOfBounds": false,
"doc": null,
"width": 16,
"height": 16,
"resizableX": true,
"resizableY": true,
"minWidth": null,
"maxWidth": null,
"minHeight": null,
"maxHeight": null,
"keepAspectRatio": false,
"tileOpacity": 0.51,
"fillOpacity": 0.25,
"lineOpacity": 1,
"hollow": true,
"color": "#126CCB",
"renderMode": "Tile",
"showName": true,
"tilesetId": 146,
"tileRenderMode": "Repeat",
"tileRect": { "tilesetUid": 146, "x": 48, "y": 240, "w": 16, "h": 16 },
"uiTileRect": null,
"nineSliceBorders": [],
"maxCount": 0,
"limitScope": "PerLevel",
"limitBehavior": "MoveLastOne",
"pivotX": 0,
"pivotY": 0,
"fieldDefs": []
},
{
"identifier": "SecretArea",
"uid": 96,
"tags": ["region"],
"exportToToc": false,
"allowOutOfBounds": false,
"doc": null,
"width": 16,
"height": 16,
"resizableX": true,
"resizableY": true,
"minWidth": null,
"maxWidth": null,
"minHeight": null,
"maxHeight": null,
"keepAspectRatio": false,
"tileOpacity": 1,
"fillOpacity": 0.15,
"lineOpacity": 1,
"hollow": true,
"color": "#FFCC00",
"renderMode": "Tile",
"showName": true,
"tilesetId": 146,
"tileRenderMode": "NineSlice",
"tileRect": { "tilesetUid": 146, "x": 336, "y": 272, "w": 16, "h": 16 },
"uiTileRect": { "tilesetUid": 133, "x": 336, "y": 176, "w": 16, "h": 16 },
"nineSliceBorders": [4,4,4,4],
"maxCount": 0,
"limitScope": "PerLevel",
"limitBehavior": "MoveLastOne",
"pivotX": 0,
"pivotY": 0,
"fieldDefs": [
{
"identifier": "playSecretJingle",
"doc": null,
"__type": "Bool",
"uid": 97,
"type": "F_Bool",
"isArray": false,
"canBeNull": false,
"arrayMinLength": null,
"arrayMaxLength": null,
"editorDisplayMode": "NameAndValue",
"editorDisplayScale": 1,
"editorDisplayPos": "Above",
"editorLinkStyle": "ZigZag",
"editorDisplayColor": null,
"editorAlwaysShow": false,
"editorShowInWorld": true,
"editorCutLongValues": true,
"editorTextSuffix": null,
"editorTextPrefix": null,
"useForSmartColor": false,
"exportToToc": false,
"searchable": false,
"min": null,
"max": null,
"regex": null,
"acceptFileTypes": null,
"defaultOverride": {
"id": "V_Bool",
"params": [ true ]
},
"textLanguageMode": null,
"symmetricalRef": false,
"autoChainRef": false,
"allowOutOfLevelRef": true,
"allowedRefs": "OnlySame",
"allowedRefsEntityUid": null,
"allowedRefTags": [],
"tilesetUid": null
}
]
},
{
"identifier": "Teleport",
"uid": 130,
"tags": ["actor"],
"exportToToc": false,
"allowOutOfBounds": false,
"doc": null,
"width": 24,
"height": 24,
"resizableX": false,
"resizableY": false,
"minWidth": null,
"maxWidth": null,
"minHeight": null,
"maxHeight": null,
"keepAspectRatio": false,
"tileOpacity": 1,
"fillOpacity": 0.08,
"lineOpacity": 0,
"hollow": false,
"color": "#EC50FF",
"renderMode": "Tile",
"showName": true,
"tilesetId": 146,
"tileRenderMode": "FitInside",
"tileRect": { "tilesetUid": 146, "x": 224, "y": 176, "w": 16, "h": 16 },
"uiTileRect": null,
"nineSliceBorders": [],
"maxCount": 0,
"limitScope": "PerLevel",
"limitBehavior": "MoveLastOne",
"pivotX": 0.5,
"pivotY": 1,
"fieldDefs": [
{
"identifier": "destination",
"doc": null,
"__type": "EntityRef",
"uid": 131,
"type": "F_EntityRef",
"isArray": false,
"canBeNull": false,
"arrayMinLength": null,
"arrayMaxLength": null,
"editorDisplayMode": "RefLinkBetweenCenters",
"editorDisplayScale": 1,
"editorDisplayPos": "Above",
"editorLinkStyle": "CurvedArrow",
"editorDisplayColor": null,
"editorAlwaysShow": false,
"editorShowInWorld": true,
"editorCutLongValues": true,
"editorTextSuffix": null,
"editorTextPrefix": null,
"useForSmartColor": false,
"exportToToc": false,
"searchable": false,
"min": null,
"max": null,
"regex": null,
"acceptFileTypes": null,
"defaultOverride": null,
"textLanguageMode": null,
"symmetricalRef": true,
"autoChainRef": true,
"allowOutOfLevelRef": true,
"allowedRefs": "OnlySame",
"allowedRefsEntityUid": null,
"allowedRefTags": [],
"tilesetUid": null
}
]
},
{
"identifier": "Ladder",
"uid": 134,
"tags": ["region"],
"exportToToc": false,
"allowOutOfBounds": false,
"doc": null,
"width": 16,
"height": 16,
"resizableX": false,
"resizableY": true,
"minWidth": null,
"maxWidth": null,
"minHeight": null,
"maxHeight": null,
"keepAspectRatio": false,
"tileOpacity": 1,
"fillOpacity": 0.08,
"lineOpacity": 0,
"hollow": false,
"color": "#94D9B3",
"renderMode": "Tile",
"showName": false,
"tilesetId": 146,
"tileRenderMode": "Repeat",
"tileRect": { "tilesetUid": 146, "x": 400, "y": 32, "w": 16, "h": 16 },
"uiTileRect": null,
"nineSliceBorders": [],
"maxCount": 0,
"limitScope": "PerLevel",
"limitBehavior": "MoveLastOne",
"pivotX": 0,
"pivotY": 0,
"fieldDefs": []
},
{
"identifier": "GameSaver",
"uid": 141,
"tags": ["region"],
"exportToToc": false,
"allowOutOfBounds": false,
"doc": null,
"width": 16,
"height": 16,
"resizableX": true,
"resizableY": true,
"minWidth": null,
"maxWidth": null,
"minHeight": null,
"maxHeight": null,
"keepAspectRatio": false,
"tileOpacity": 1,
"fillOpacity": 0.08,
"lineOpacity": 0.79,
"hollow": false,
"color": "#FFEB5A",
"renderMode": "Tile",
"showName": true,
"tilesetId": 146,
"tileRenderMode": "NineSlice",
"tileRect": { "tilesetUid": 146, "x": 336, "y": 272, "w": 16, "h": 16 },
"uiTileRect": { "tilesetUid": 133, "x": 48, "y": 32, "w": 16, "h": 16 },
"nineSliceBorders": [4,4,4,4],
"maxCount": 0,
"limitScope": "PerLevel",
"limitBehavior": "MoveLastOne",
"pivotX": 0,
"pivotY": 0,
"fieldDefs": []
}
], "tilesets": [
{
"__cWid": 23,
"__cHei": 21,
"identifier": "SunnyLand_by_Ansimuz",
"uid": 6,
"relPath": "SunnyLand_by_Ansimuz-extended.png",
"embedAtlas": null,
"pxWid": 368,
"pxHei": 336,
"tileGridSize": 16,
"spacing": 0,
"padding": 0,
"tags": [],
"tagsSourceEnumUid": null,
"enumTags": [],
"customData": [],
"savedSelections": [],
"cachedPixelData": {
"opaqueTiles": "101010100010110110000000000000000001101101101110101010001000000000000000000000000010100000001010101000000101000101000000000000000000000000000010100000001010100000000000000000000000000000000000000000101010000010100100000000000000000000000000000010101010000000000000000000000100000000101010100000000000000001010100000100000001010000100000000000000010100000010011011100000101000000100110000000011011000011101101010100000000000000000000000001011000011101110100000000110000111011100000000",
"averageColors": "f9850000f9850000f9850000fa65000069557a65f8450000f644f9650000f965f644000049b5c9950000c99549b5000000000000000000000000000000000000000000000000f955f7450000f745f9550000f865f7450000f745f865f9550000f6450000f9550000f845695500006955f8450000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f8550000f85500000000000079a5000079a50000f9550000f8550000f9550000f8457a6569550000ab8500000000f8550000f855000000000000f7550000f75500000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000077a5000078b50000f8450000f7450000947400009474000000000000fa650000f9550000fa6500002000000000000000459534953595000000000000000000000000000000000000000000000000000000000000000020006000000000000000000000000000000000000000000000000000000088550000f9550000f6450000f9550000900000000000a955f8450000f845a9550000f85500000000ca65b9650000000000000000000000000000000000000000000000000000a9550000a9550000000000000000000000000000000000000000fa650000f9550000fa650000f4880000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f47700000000000000000000000000000000f7450000f8550000f8550000f8550000000000000000000000000000000000000000000000000000000000000000f3440000f3450000f534000000000000e9950000f9950000e9950000000000000000b855f5340000f534b855000000000000f334000000000000000000000000000000000000000000000000000000000000f7440000f744000000000000000000000000f43500000000f435f4350000f334f436f3350000000000000000b955f5340000f534b95500000000000000000000f34500000000f335f33500000000000000000000000000000000f744f3340000f334f7440000000000000000f344f345f3440000f335f3350000f5340000f4350000f3340000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fa650000f955f9550000000000000000f334f335f3450000f345f335f3340000f75500000000000000000000000000000000f955f9550000000000000000f335f344f3440000f344f344f33500000000000000000000000000000000"
}
},
{
"__cWid": 32,
"__cHei": 64,
"identifier": "Finalbossblues_icons_full_16",
"uid": 146,
"relPath": "finalbossblues-icons_full_16.png",
"embedAtlas": null,
"pxWid": 512,
"pxHei": 1024,
"tileGridSize": 16,
"spacing": 0,
"padding": 0,
"tags": [],
"tagsSourceEnumUid": null,
"enumTags": [],
"customData": [],
"savedSelections": [],
"cachedPixelData": {
"opaqueTiles": "11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111",
"averageColors": "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
}
},
{
"__cWid": 32,
"__cHei": 64,
"identifier": "Internal_Icons",
"uid": 133,
"relPath": null,
"embedAtlas": "LdtkIcons",
"pxWid": 512,
"pxHei": 1024,
"tileGridSize": 16,
"spacing": 0,
"padding": 0,
"tags": [],
"tagsSourceEnumUid": null,
"enumTags": [],
"customData": [],
"savedSelections": [],
"cachedPixelData": {
"opaqueTiles": "00000000000000000000000000000000000000000000000000000000000000000000000000000000111111111000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"averageColors": "00004b344233459b423349a959a9379c688769758ca4bc9489aab9aa58cc58bc42d74d2244ce428f4c7e4ff74abb45564ffe7dda7888a899889900000000000069a969a97a99999999989a85998699767a7579667ccc7ccc7bcb7caa7ccc7ccc22d72d2224ce228f2c7e2ff72abb25562ffeba444955ab55974300000000000059764b97599868ac679a69ab4a84477756787688475347532a932a934a837a83f2b6fb22f3acf15afa6cfdc6f899f334fccca778a7440000000000000000000059aa49aa59996999699969aa489949995999799a499949992999299948997889a385a823a379a248a749aa85a667a223a8880000000000000000000000000000189919991999199939994778166727772889289948993aaa389949a959a959a932b63b2233ad315a395c3ec6389933343ccc00000000000000000000000000008aaa8aaa8aaa8aaa8aaa7bbb8aaa7bbb8bcb7aaa8bcb7bcb69aa8aaa8aaa69aa6abb6abb6abb6abb6a226a226a226a2261a661a661a661a600000000000000006c526c426c926c91659b649c66a566a46a7b6a7b667766776aba6abb676367636da46da46da46da4616c616c616c616c8abb8abb8abb8abb00000000000000006ba5579a6689598658875cb66abb9aa989aa98ac7abc6678968a88877c87cba952755823536952475648598454455223599900000000000000000000000000003ec63da76db79dc7554885498969b4377fa29e8289cdb9ce5ade5ade49ce49ce82a68a22839b8259885b8cb5855683238aab00000000000000000000000000005d745d867da87e75448c458b86ad76ae68ac679c779b78ce3c9378867ca6adb784858933847a844788498b94854584348989000000000000000000000000000057a668b899b8449396534493858364836853697769436667755667776c73498862b66b22639c615a695c6dc5655663346bbc00000000000000000000000000006bba79b87d9679ad776a7b988abc8abc4aceaace4bba4bba6b8c4c9c4cac5b7c62a66a22639c6159695b6db5655663236abb000000000000000000000000000059aaada7a9bdcdbd59aaada7a9bdcdbd8cb8a9b98ac889b8aabaacc79ea498bd82b68b2283ad815a8a5c8ec5856783348ccc000000000000000000000000000057ac596b55946abb5abb8ca65d8677ac437b5a3368886934547a595897a57b2372957923738a7258784a7c9474557323799a0000000000000000000000000000799a5c817b9b3a886abb8464676a7a967a857a857977898889882a954a956b9562d76d2264ce628f6c7e6ff76abb65566ffe0000000000000000000000000000499977997868799579875a6465995a8957a66a735ba53a935969479a576a467732d73d2234ce328f3c7e3ff73abb35563ffe00000000000000000000000000005744985596659b747a659a76768a7a567675477738873566597698779445946572d77d2274ce728f7c7e7ff77abb75567ffe000000000000000000000000000088668a66868a9b8577666a4467846987778a7789797a87888b8676667a767ca562d76d2264ce628f6c7e6ff76abb65566ffe0000000000000000000000000000449374934c957c9574847a438475a3958695768565956853b9447a777493a493000000000000000000000000000000000000000000000000000000000000000079547a838394689a49547a6357636975786383848997b384655873748974588400000000000000000000000000000000000000000000000000000000000000007da48ca769768b554b976cba3a824a82696259526a758c986963694268478b850000000000000000000000000000000000000000000000000000000000000000696559555579557458598674573353635677575579667a8758538b848a44838b0000000000000000000000000000000000000000000000000000000000000000385437883b95534549555a855877997598772b953b9529a939a95aa84b949a840000000000000000000000000000000000000000000000000000000000000000897687898776878578998485878b789a847b8b6579998a55886998788a879b9700000000000000000000000000000000000000000000000000000000000000006ba97988897469646b987a876a997a987b987955766777765c958a858777867700000000000000000000000000000000000000000000000000000000000000005a747b947b967866a855788928884566578879a98864a579233433343334633400000000000000000000000000000000000000000000000000000000000000006a747b846a844997598669987bb8b8aabaa96ba67cba9854687669864a864b86000000000000000000000000000000000000000000000000000000000000000038ab389b48ab47ac49ab48ac579b48ac49ab38ab58bc4b8659aa5c8457ac586a0000000000000000000000000000000000000000000000000000000000000000299b2999389a379b38893955589a79bc8c9588bc7a8c599a689a5b8558ac597a00000000000000000000000000000000000000000000000000000000000000002888378936773975579b389a579b488938884b74469a465747785b75568b586a000000000000000000000000000000000000000000000000000000000000000038553865285428444755566455763a64356746743779397445674c63469b585a0000000000000000000000000000000000000000000000000000000000000000284437643a7629641555297938874879385438664665355536775a85569a785a00000000000000000000000000000000000000000000000000000000000000005789789b779b6a75668a897b64558555876576798855845694749b74a68a986a000000000000000000000000000000000000000000000000000000000000000047776766678867667799798698768866976685673755387638763b74358b387a00000000000000000000000000000000000000000000000000000000000000005777686569874944498846774677685568646987677778775a456a65ab66ca550000000000000000000000000000000000000000000000000000000000000000355656666656455546455345634558655854aa749854775577737b64777a7a7900000000000000000000000000000000000000000000000000000000000000005955895598546c758c75ba76b88797749b75a98967888789978857888788a78800000000000000000000000000000000000000000000000000000000000000006977897799776a748a749a747987ba97aa998ba8a78bab75a87ab89cbb74b97b000000000000000000000000000000000000000000000000000000000000000059645788598858546a7569996a767a766887649c767476797a54766977667976000000000000000000000000000000000000000000000000000000000000000078887a75796577777a869976987799865777667787668a53857a885a98659546000000000000000000000000000000000000000000000000000000000000000087559877a96586779788b9769866888899877576777879647759a8659888a7440000000000000000000000000000000000000000000000000000000000000000785477887a55747b7585795b7999a9667456878889aa58997888797b56776855000000000000000000000000000000000000000000000000000000000000000048545854617b644557448744537b85565899899a39994a7a58998999a5558988000000000000000000000000000000000000000000000000000000000000000089659744a6559555a55698889486a57aab43a96b9556a665a854a579a744a5550000000000000000000000000000000000000000000000000000000000000000596587556677777777778578876687778974867787668876988897779876a744000000000000000000000000000000000000000000000000000000000000000067536556875448225922415851595456654587459456947b48997a86764585560000000000000000000000000000000000000000000000000000000000000000a854a89989998556a7559766a7779976a975997596749a64968a9779a55595450000000000000000000000000000000000000000000000000000000000000000674487549854885594558445a777a7778373579b5a32675584456975958b9944000000000000000000000000000000000000000000000000000000000000000077449754b674b469b964b658a766a864a777a975a566a754a677a875b777b9650000000000000000000000000000000000000000000000000000000000000000775577547445755676558744697377637766785334556566577859755877887600000000000000000000000000000000000000000000000000000000000000002789287328772a7436793a9457795a84368a3334323364555a757b856aaa9a5500000000000000000000000000000000000000000000000000000000000000005888516b5a3349a95964797778987a5375696a536668796577887a847a74797500000000000000000000000000000000000000000000000000000000000000007b537a53767b6769748775767a9a7988759c768a7b957a847775776478647854000000000000000000000000000000000000000000000000000000000000000098999788988998889b879a869a869a86696565676965667767446854677877880000000000000000000000000000000000000000000000000000000000000000678a77997ba647887a7589999ca59ba889aa9999655667bd6ba979a967bc6c7300000000000000000000000000000000000000000000000000000000000000006aaa6556518566775965485438985888576546854ca547775999699989997a9900000000000000000000000000000000000000000000000000000000000000006678526466335644769c5a7888547a785c4454a658885c946285627b6c54674a000000000000000000000000000000000000000000000000000000000000000033843b33359c337c395c3b853899355653745a33558b536b585b5a7557885445000000000000000000000000000000000000000000000000000000000000000026551566274525664a85486546564656377756664655465545454656516a656700000000000000000000000000000000000000000000000000000000000000004964696468553a86485437443645896588548856895477446a7569547a757954000000000000000000000000000000000000000000000000000000000000000036678566399988993b968b955ba658995566588859645a986ca7796477887ca6000000000000000000000000000000000000000000000000000000000000000019562a554c665c55156a256a468c557b1a8429744a845a83196b285a496b595b00000000000000000000000000000000000000000000000000000000000000001486248645a7549615782578469a5689187629764a875a861a692a694b7a5b79000000000000000000000000000000000000000000000000000000000000000017772777489858881555255546665556199528854884588411122112411251120000000000000000000000000000000000000000000000000000000000000000"
}
}
], "enums": [
{ "identifier": "ItemType", "uid": 74, "values": [
{ "id": "Meat", "tileRect": { "tilesetUid": 146, "x": 48, "y": 320, "w": 16, "h": 16 }, "color": 12015952 },
{ "id": "Gold", "tileRect": { "tilesetUid": 146, "x": 240, "y": 352, "w": 16, "h": 16 }, "color": 11307334 },
{ "id": "GoldNuggets", "tileRect": { "tilesetUid": 146, "x": 80, "y": 960, "w": 16, "h": 16 }, "color": 12294485 },
{ "id": "Gem", "tileRect": { "tilesetUid": 146, "x": 96, "y": 976, "w": 16, "h": 16 }, "color": 6849988 },
{ "id": "Green_gem", "tileRect": { "tilesetUid": 146, "x": 32, "y": 992, "w": 16, "h": 16 }, "color": 5874551 },
{ "id": "Healing_potion", "tileRect": { "tilesetUid": 146, "x": 80, "y": 272, "w": 16, "h": 16 }, "color": 10964028 },
{ "id": "Spell", "tileRect": { "tilesetUid": 146, "x": 16, "y": 224, "w": 16, "h": 16 }, "color": 13536015 },
{ "id": "Armor", "tileRect": { "tilesetUid": 146, "x": 0, "y": 640, "w": 16, "h": 16 }, "color": 8018775 },
{ "id": "Bow", "tileRect": { "tilesetUid": 146, "x": 96, "y": 528, "w": 16, "h": 16 }, "color": 9138014 },
{ "id": "Ammo", "tileRect": { "tilesetUid": 146, "x": 112, "y": 544, "w": 16, "h": 16 }, "color": 8739931 },
{ "id": "Fire_blade", "tileRect": { "tilesetUid": 146, "x": 208, "y": 432, "w": 16, "h": 16 }, "color": 13601098 },
{ "id": "Vorpal_blade", "tileRect": { "tilesetUid": 146, "x": 240, "y": 432, "w": 16, "h": 16 }, "color": 9331886 }
], "iconTilesetUid": 146, "externalRelPath": null, "externalFileChecksum": null, "tags": [] },
{ "identifier": "RoomType", "uid": 98, "values": [
{ "id": "Entrance", "tileRect": { "tilesetUid": 146, "x": 0, "y": 32, "w": 16, "h": 16 }, "color": 6539085 },
{ "id": "Exit", "tileRect": { "tilesetUid": 146, "x": 48, "y": 240, "w": 16, "h": 16 }, "color": 11882632 },
{ "id": "Shop", "tileRect": { "tilesetUid": 146, "x": 176, "y": 0, "w": 16, "h": 16 }, "color": 16690740 },
{ "id": "Boss", "tileRect": { "tilesetUid": 146, "x": 96, "y": 0, "w": 16, "h": 16 }, "color": 14957380 },
{ "id": "Save", "tileRect": { "tilesetUid": 146, "x": 80, "y": 32, "w": 16, "h": 16 }, "color": 39387 }
], "iconTilesetUid": 146, "externalRelPath": null, "externalFileChecksum": null, "tags": [] }
], "externalEnums": [], "levelFields": [
{
"identifier": "roomType",
"doc": null,
"__type": "LocalEnum.RoomType",
"uid": 99,
"type": "F_Enum(98)",
"isArray": false,
"canBeNull": true,
"arrayMinLength": null,
"arrayMaxLength": null,
"editorDisplayMode": "ValueOnly",
"editorDisplayScale": 2,
"editorDisplayPos": "Above",
"editorLinkStyle": "ZigZag",
"editorDisplayColor": null,
"editorAlwaysShow": false,
"editorShowInWorld": true,
"editorCutLongValues": true,
"editorTextSuffix": null,
"editorTextPrefix": null,
"useForSmartColor": true,
"exportToToc": false,
"searchable": false,
"min": null,
"max": null,
"regex": null,
"acceptFileTypes": null,
"defaultOverride": null,
"textLanguageMode": null,
"symmetricalRef": false,
"autoChainRef": false,
"allowOutOfLevelRef": true,
"allowedRefs": "OnlySame",
"allowedRefsEntityUid": null,
"allowedRefTags": [],
"tilesetUid": null
}
] },
"levels": [
{
"identifier": "Entrance",
"iid": "a367c3b0-66b0-11ec-9cd7-91690c910c97",
"uid": 0,
"worldX": 0,
"worldY": 0,
"worldDepth": 0,
"pxWid": 512,
"pxHei": 256,
"__bgColor": "#37494E",
"bgColor": null,
"useAutoIdentifier": false,
"bgRelPath": null,
"bgPos": null,
"bgPivotX": 0.5,
"bgPivotY": 0.5,
"__smartColor": "#A9E09D",
"__bgPos": null,
"externalRelPath": null,
"fieldInstances": [{ "__identifier": "roomType", "__type": "LocalEnum.RoomType", "__value": "Entrance", "__tile": null, "defUid": 99, "realEditorValues": [{
"id": "V_String",
"params": ["Entrance"]
}] }],
"layerInstances": [
{
"__identifier": "Animation",
"__type": "Tiles",
"__cWid": 32,
"__cHei": 16,
"__gridSize": 16,
"__opacity": 1,
"__pxTotalOffsetX": 0,
"__pxTotalOffsetY": 0,
"__tilesetDefUid": 6,
"__tilesetRelPath": "SunnyLand_by_Ansimuz-extended.png",
"iid": "807a2200-b0a0-11ee-a360-93a54995bd70",
"levelId": 0,
"layerDefUid": 148,
"pxOffsetX": 0,
"pxOffsetY": 0,
"visible": true,
"optionalRules": [],
"intGridCsv": [],
"autoLayerTiles": [],
"seed": 2916502,
"overrideTilesetUid": null,
"gridTiles": [
{ "px": [240,48], "src": [160,320], "f": 0, "t": 470, "d": [111], "a": 1 },
{ "px": [256,48], "src": [160,320], "f": 0, "t": 470, "d": [112], "a": 1 },
{ "px": [240,64], "src": [160,320], "f": 0, "t": 470, "d": [143], "a": 1 },
{ "px": [256,64], "src": [160,320], "f": 0, "t": 470, "d": [144], "a": 1 }
],
"entityInstances": []
},
{
"__identifier": "PhysicsColliders",
"__type": "IntGrid",
"__cWid": 32,
"__cHei": 16,
"__gridSize": 16,
"__opacity": 1,
"__pxTotalOffsetX": 0,
"__pxTotalOffsetY": 0,
"__tilesetDefUid": null,
"__tilesetRelPath": null,
"iid": "ed1d1fc0-8990-11ee-a0db-75bfabb12a04",
"levelId": 0,
"layerDefUid": 147,
"pxOffsetX": 0,
"pxOffsetY": 0,
"visible": true,
"optionalRules": [],
"intGridCsv": [
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,
1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,
0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,
1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,0,
0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,
0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,
1,2,2,2,2,2,2,1,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0
],
"autoLayerTiles": [],
"seed": 7957419,
"overrideTilesetUid": null,
"gridTiles": [],
"entityInstances": []
},
{
"__identifier": "Entities",
"__type": "Entities",
"__cWid": 32,
"__cHei": 16,
"__gridSize": 16,
"__opacity": 1,
"__pxTotalOffsetX": 0,
"__pxTotalOffsetY": 0,
"__tilesetDefUid": null,
"__tilesetRelPath": null,
"iid": "a367c3b5-66b0-11ec-9cd7-a7935e1c2c53",
"levelId": 0,
"layerDefUid": 77,
"pxOffsetX": 0,
"pxOffsetY": 0,
"visible": true,
"optionalRules": [],
"intGridCsv": [],
"autoLayerTiles": [],
"seed": 8696599,
"overrideTilesetUid": null,
"gridTiles": [],
"entityInstances": [
{
"__identifier": "Item",
"__grid": [28,10],
"__pivot": [0.5,1],
"__tags": ["loot"],
"__tile": { "tilesetUid": 146, "x": 240, "y": 352, "w": 16, "h": 16 },
"__smartColor": "#FFEC8A",
"iid": "a367c3b6-66b0-11ec-9cd7-61bd30243515",
"width": 24,
"height": 24,
"defUid": 72,
"px": [456,176],
"fieldInstances": [
{ "__identifier": "type", "__type": "LocalEnum.ItemType", "__value": "Gold", "__tile": { "tilesetUid": 146, "x": 240, "y": 352, "w": 16, "h": 16 }, "defUid": 76, "realEditorValues": [{
"id": "V_String",
"params": ["Gold"]
}] },
{ "__identifier": "price", "__type": "Int", "__value": 0, "__tile": null, "defUid": 93, "realEditorValues": [] },
{ "__identifier": "count", "__type": "Int", "__value": 100, "__tile": null, "defUid": 139, "realEditorValues": [{ "id": "V_Int", "params": [100] }] }
],
"__worldX": 456,
"__worldY": 176
},
{
"__identifier": "Item",
"__grid": [3,5],
"__pivot": [0.5,1],
"__tags": ["loot"],
"__tile": { "tilesetUid": 146, "x": 80, "y": 272, "w": 16, "h": 16 },
"__smartColor": "#FFEC8A",
"iid": "a367c3b7-66b0-11ec-9cd7-65b15caa5ba5",
"width": 24,
"height": 24,
"defUid": 72,
"px": [56,96],
"fieldInstances": [
{ "__identifier": "type", "__type": "LocalEnum.ItemType", "__value": "Healing_potion", "__tile": { "tilesetUid": 146, "x": 80, "y": 272, "w": 16, "h": 16 }, "defUid": 76, "realEditorValues": [{
"id": "V_String",
"params": ["Healing_potion"]
}] },
{ "__identifier": "price", "__type": "Int", "__value": 0, "__tile": null, "defUid": 93, "realEditorValues": [null] },
{ "__identifier": "count", "__type": "Int", "__value": 1, "__tile": null, "defUid": 139, "realEditorValues": [] }
],
"__worldX": 56,
"__worldY": 96
},
{
"__identifier": "Player",
"__grid": [18,10],
"__pivot": [0.5,1],
"__tags": ["actor"],
"__tile": { "tilesetUid": 146, "x": 256, "y": 144, "w": 16, "h": 16 },
"__smartColor": "#48DA75",
"iid": "a367c3b8-66b0-11ec-9cd7-313e15c65fee",
"width": 20,
"height": 20,
"defUid": 90,
"px": [296,176],
"fieldInstances": [
{ "__identifier": "inventory", "__type": "Array<LocalEnum.ItemType>", "__value": [ "Ammo", "Bow" ], "__tile": null, "defUid": 91, "realEditorValues": [ {
"id": "V_String",
"params": ["Ammo"]
}, {
"id": "V_String",
"params": ["Bow"]
} ] },
{ "__identifier": "HP", "__type": "Int", "__value": 10, "__tile": null, "defUid": 92, "realEditorValues": [] }
],
"__worldX": 296,
"__worldY": 176
},
{
"__identifier": "Ladder",
"__grid": [5,6],
"__pivot": [0,0],
"__tags": ["region"],
"__tile": { "tilesetUid": 146, "x": 400, "y": 32, "w": 16, "h": 16 },
"__smartColor": "#94D9B3",
"iid": "aa59c4d0-66b0-11ec-9ccd-fdfb8075370d",
"width": 16,
"height": 80,
"defUid": 134,
"px": [80,96],
"fieldInstances": [],
"__worldX": 80,
"__worldY": 96
},
{
"__identifier": "Item",
"__grid": [7,5],
"__pivot": [0.5,1],
"__tags": ["loot"],
"__tile": { "tilesetUid": 146, "x": 112, "y": 544, "w": 16, "h": 16 },
"__smartColor": "#FFEC8A",
"iid": "bbe3dcc0-8dc0-11ec-92c1-954a1fe43153",
"width": 24,
"height": 24,
"defUid": 72,
"px": [120,96],
"fieldInstances": [
{ "__identifier": "type", "__type": "LocalEnum.ItemType", "__value": "Ammo", "__tile": { "tilesetUid": 146, "x": 112, "y": 544, "w": 16, "h": 16 }, "defUid": 76, "realEditorValues": [{
"id": "V_String",
"params": ["Ammo"]
}] },
{ "__identifier": "price", "__type": "Int", "__value": 0, "__tile": null, "defUid": 93, "realEditorValues": [] },
{ "__identifier": "count", "__type": "Int", "__value": 5, "__tile": null, "defUid": 139, "realEditorValues": [{ "id": "V_Int", "params": [5] }] }
],
"__worldX": 120,
"__worldY": 96
}
]
},
{
"__identifier": "Wall_shadows",
"__type": "AutoLayer",
"__cWid": 32,
"__cHei": 16,
"__gridSize": 16,
"__opacity": 0.53,
"__pxTotalOffsetX": 0,
"__pxTotalOffsetY": 0,
"__tilesetDefUid": 6,
"__tilesetRelPath": "SunnyLand_by_Ansimuz-extended.png",
"iid": "a367c3b9-66b0-11ec-9cd7-dba4fd8c08c4",
"levelId": 0,
"layerDefUid": 24,
"pxOffsetX": 0,
"pxOffsetY": 0,
"visible": true,
"optionalRules": [],
"intGridCsv": [],
"autoLayerTiles": [
{ "px": [32,32], "src": [320,128], "f": 0, "t": 204, "d": [26,66], "a": 1 },
{ "px": [128,32], "src": [320,128], "f": 1, "t": 204, "d": [26,72], "a": 1 },
{ "px": [32,48], "src": [320,128], "f": 0, "t": 204, "d": [26,98], "a": 1 },
{ "px": [128,48], "src": [320,128], "f": 1, "t": 204, "d": [26,104], "a": 1 },
{ "px": [32,64], "src": [320,128], "f": 0, "t": 204, "d": [26,130], "a": 1 },
{ "px": [128,64], "src": [320,128], "f": 1, "t": 204, "d": [26,136], "a": 1 },
{ "px": [32,80], "src": [320,128], "f": 0, "t": 204, "d": [26,162], "a": 1 },
{ "px": [128,80], "src": [320,128], "f": 1, "t": 204, "d": [26,168], "a": 1 },
{ "px": [128,192], "src": [320,128], "f": 0, "t": 204, "d": [26,392], "a": 1 },
{ "px": [208,192], "src": [320,128], "f": 1, "t": 204, "d": [26,397], "a": 1 },
{ "px": [368,192], "src": [320,128], "f": 0, "t": 204, "d": [26,407], "a": 1 },
{ "px": [400,192], "src": [320,128], "f": 1, "t": 204, "d": [26,409], "a": 1 },
{ "px": [128,208], "src": [320,128], "f": 0, "t": 204, "d": [26,424], "a": 1 },
{ "px": [208,208], "src": [320,128], "f": 1, "t": 204, "d": [26,429], "a": 1 },
{ "px": [368,208], "src": [320,128], "f": 0, "t": 204, "d": [26,439], "a": 1 },
{ "px": [400,208], "src": [320,128], "f": 1, "t": 204, "d": [26,441], "a": 1 },
{ "px": [368,224], "src": [320,128], "f": 0, "t": 204, "d": [26,471], "a": 1 },
{ "px": [400,224], "src": [320,128], "f": 1, "t": 204, "d": [26,473], "a": 1 },
{ "px": [368,240], "src": [320,128], "f": 0, "t": 204, "d": [26,503], "a": 1 },
{ "px": [400,240], "src": [320,128], "f": 1, "t": 204, "d": [26,505], "a": 1 },
{ "px": [80,96], "src": [320,96], "f": 0, "t": 158, "d": [138,197], "a": 1 },
{ "px": [128,176], "src": [320,96], "f": 0, "t": 158, "d": [138,360], "a": 1 },
{ "px": [208,176], "src": [320,96], "f": 1, "t": 158, "d": [138,365], "a": 1 },
{ "px": [368,176], "src": [320,96], "f": 0, "t": 158, "d": [138,375], "a": 1 },
{ "px": [400,176], "src": [320,96], "f": 1, "t": 158, "d": [138,377], "a": 1 },
{ "px": [32,32], "src": [336,112], "f": 0, "t": 182, "d": [27,66], "a": 1 },
{ "px": [48,32], "src": [336,112], "f": 0, "t": 182, "d": [27,67], "a": 1 },
{ "px": [64,32], "src": [336,112], "f": 0, "t": 182, "d": [27,68], "a": 1 },
{ "px": [80,32], "src": [336,112], "f": 0, "t": 182, "d": [27,69], "a": 1 },
{ "px": [96,32], "src": [336,112], "f": 0, "t": 182, "d": [27,70], "a": 1 },
{ "px": [112,32], "src": [336,112], "f": 0, "t": 182, "d": [27,71], "a": 1 },
{ "px": [128,32], "src": [336,112], "f": 0, "t": 182, "d": [27,72], "a": 1 },
{ "px": [0,112], "src": [336,112], "f": 0, "t": 182, "d": [27,224], "a": 1 },
{ "px": [16,112], "src": [336,112], "f": 0, "t": 182, "d": [27,225], "a": 1 },
{ "px": [32,112], "src": [336,112], "f": 0, "t": 182, "d": [27,226], "a": 1 },
{ "px": [48,112], "src": [336,112], "f": 0, "t": 182, "d": [27,227], "a": 1 },
{ "px": [64,112], "src": [336,112], "f": 0, "t": 182, "d": [27,228], "a": 1 },
{ "px": [96,112], "src": [336,112], "f": 0, "t": 182, "d": [27,230], "a": 1 },
{ "px": [112,112], "src": [336,112], "f": 0, "t": 182, "d": [27,231], "a": 1 },
{ "px": [128,112], "src": [336,112], "f": 0, "t": 182, "d": [27,232], "a": 1 },
{ "px": [144,112], "src": [336,112], "f": 0, "t": 182, "d": [27,233], "a": 1 },
{ "px": [160,112], "src": [336,112], "f": 0, "t": 182, "d": [27,234], "a": 1 },
{ "px": [176,112], "src": [336,112], "f": 0, "t": 182, "d": [27,235], "a": 1 },
{ "px": [192,112], "src": [336,112], "f": 0, "t": 182, "d": [27,236], "a": 1 },
{ "px": [208,112], "src": [336,112], "f": 0, "t": 182, "d": [27,237], "a": 1 },
{ "px": [224,112], "src": [336,112], "f": 0, "t": 182, "d": [27,238], "a": 1 },
{ "px": [240,112], "src": [336,112], "f": 0, "t": 182, "d": [27,239], "a": 1 },
{ "px": [256,112], "src": [336,112], "f": 0, "t": 182, "d": [27,240], "a": 1 },
{ "px": [272,112], "src": [336,112], "f": 0, "t": 182, "d": [27,241], "a": 1 },
{ "px": [288,112], "src": [336,112], "f": 0, "t": 182, "d": [27,242], "a": 1 },
{ "px": [304,112], "src": [336,112], "f": 0, "t": 182, "d": [27,243], "a": 1 },
{ "px": [320,112], "src": [336,112], "f": 0, "t": 182, "d": [27,244], "a": 1 },
{ "px": [336,112], "src": [336,112], "f": 0, "t": 182, "d": [27,245], "a": 1 },
{ "px": [352,112], "src": [336,112], "f": 0, "t": 182, "d": [27,246], "a": 1 },
{ "px": [368,112], "src": [336,112], "f": 0, "t": 182, "d": [27,247], "a": 1 },
{ "px": [384,112], "src": [336,112], "f": 0, "t": 182, "d": [27,248], "a": 1 },
{ "px": [400,112], "src": [336,112], "f": 0, "t": 182, "d": [27,249], "a": 1 },
{ "px": [416,112], "src": [336,112], "f": 0, "t": 182, "d": [27,250], "a": 1 },
{ "px": [432,112], "src": [336,112], "f": 0, "t": 182, "d": [27,251], "a": 1 },
{ "px": [448,112], "src": [336,112], "f": 0, "t": 182, "d": [27,252], "a": 1 },
{ "px": [464,112], "src": [336,112], "f": 0, "t": 182, "d": [27,253], "a": 1 },
{ "px": [480,112], "src": [336,112], "f": 0, "t": 182, "d": [27,254], "a": 1 },
{ "px": [496,112], "src": [336,112], "f": 0, "t": 182, "d": [27,255], "a": 1 },
{ "px": [80,112], "src": [320,112], "f": 0, "t": 181, "d": [137,229], "a": 1 }
],
"seed": 9602034,
"overrideTilesetUid": null,
"gridTiles": [],
"entityInstances": []
},
{
"__identifier": "Collisions",
"__type": "IntGrid",
"__cWid": 32,
"__cHei": 16,
"__gridSize": 16,
"__opacity": 1,
"__pxTotalOffsetX": 0,
"__pxTotalOffsetY": 0,
"__tilesetDefUid": 6,
"__tilesetRelPath": "SunnyLand_by_Ansimuz-extended.png",
"iid": "a367c3ba-66b0-11ec-9cd7-61c1299773eb",
"levelId": 0,
"layerDefUid": 1,
"pxOffsetX": 0,
"pxOffsetY": 0,
"visible": true,
"optionalRules": [],
"intGridCsv": [
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,
0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,2,2,2,2,2,2,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1
],
"autoLayerTiles": [
{ "px": [128,208], "src": [320,176], "f": 0, "t": 273, "d": [28,424], "a": 1 },
{ "px": [144,208], "src": [320,176], "f": 0, "t": 273, "d": [28,425], "a": 1 },
{ "px": [160,208], "src": [320,176], "f": 0, "t": 273, "d": [28,426], "a": 1 },
{ "px": [176,208], "src": [320,176], "f": 0, "t": 273, "d": [28,427], "a": 1 },
{ "px": [192,208], "src": [320,176], "f": 0, "t": 273, "d": [28,428], "a": 1 },
{ "px": [208,208], "src": [320,176], "f": 0, "t": 273, "d": [28,429], "a": 1 },
{ "px": [128,192], "src": [320,160], "f": 0, "t": 250, "d": [21,392], "a": 1 },
{ "px": [144,192], "src": [320,160], "f": 0, "t": 250, "d": [21,393], "a": 1 },
{ "px": [160,192], "src": [320,160], "f": 0, "t": 250, "d": [21,394], "a": 1 },
{ "px": [176,192], "src": [320,160], "f": 0, "t": 250, "d": [21,395], "a": 1 },
{ "px": [192,192], "src": [320,160], "f": 0, "t": 250, "d": [21,396], "a": 1 },
{ "px": [208,192], "src": [320,160], "f": 0, "t": 250, "d": [21,397], "a": 1 },
{ "px": [48,0], "src": [32,32], "f": 0, "t": 48, "d": [8,3], "a": 1 },
{ "px": [80,0], "src": [32,32], "f": 0, "t": 48, "d": [8,5], "a": 1 },
{ "px": [112,0], "src": [32,32], "f": 0, "t": 48, "d": [8,7], "a": 1 },
{ "px": [176,0], "src": [32,32], "f": 0, "t": 48, "d": [8,11], "a": 1 },
{ "px": [0,16], "src": [32,32], "f": 0, "t": 48, "d": [8,32], "a": 1 },
{ "px": [176,32], "src": [32,32], "f": 0, "t": 48, "d": [8,75], "a": 1 },
{ "px": [0,48], "src": [32,32], "f": 0, "t": 48, "d": [8,96], "a": 1 },
{ "px": [176,64], "src": [32,32], "f": 0, "t": 48, "d": [8,139], "a": 1 },
{ "px": [208,64], "src": [32,32], "f": 0, "t": 48, "d": [8,141], "a": 1 },
{ "px": [240,64], "src": [32,32], "f": 0, "t": 48, "d": [8,143], "a": 1 },
{ "px": [272,64], "src": [32,32], "f": 0, "t": 48, "d": [8,145], "a": 1 },
{ "px": [304,64], "src": [32,32], "f": 0, "t": 48, "d": [8,147], "a": 1 },
{ "px": [368,64], "src": [32,32], "f": 0, "t": 48, "d": [8,151], "a": 1 },
{ "px": [400,64], "src": [32,32], "f": 0, "t": 48, "d": [8,153], "a": 1 },
{ "px": [464,64], "src": [32,32], "f": 0, "t": 48, "d": [8,157], "a": 1 },
{ "px": [496,64], "src": [32,32], "f": 0, "t": 48, "d": [8,159], "a": 1 },
{ "px": [192,80], "src": [32,32], "f": 0, "t": 48, "d": [8,172], "a": 1 },
{ "px": [224,80], "src": [32,32], "f": 0, "t": 48, "d": [8,174], "a": 1 },
{ "px": [256,80], "src": [32,32], "f": 0, "t": 48, "d": [8,176], "a": 1 },
{ "px": [288,80], "src": [32,32], "f": 0, "t": 48, "d": [8,178], "a": 1 },
{ "px": [384,80], "src": [32,32], "f": 0, "t": 48, "d": [8,184], "a": 1 },
{ "px": [416,80], "src": [32,32], "f": 0, "t": 48, "d": [8,186], "a": 1 },
{ "px": [240,192], "src": [32,32], "f": 0, "t": 48, "d": [8,399], "a": 1 },
{ "px": [304,192], "src": [32,32], "f": 0, "t": 48, "d": [8,403], "a": 1 },
{ "px": [336,192], "src": [32,32], "f": 0, "t": 48, "d": [8,405], "a": 1 },
{ "px": [432,192], "src": [32,32], "f": 0, "t": 48, "d": [8,411], "a": 1 },
{ "px": [464,192], "src": [32,32], "f": 0, "t": 48, "d": [8,413], "a": 1 },
{ "px": [496,192], "src": [32,32], "f": 0, "t": 48, "d": [8,415], "a": 1 },
{ "px": [0,208], "src": [32,32], "f": 0, "t": 48, "d": [8,416], "a": 1 },
{ "px": [64,208], "src": [32,32], "f": 0, "t": 48, "d": [8,420], "a": 1 },
{ "px": [256,208], "src": [32,32], "f": 0, "t": 48, "d": [8,432], "a": 1 },
{ "px": [288,208], "src": [32,32], "f": 0, "t": 48, "d": [8,434], "a": 1 },
{ "px": [320,208], "src": [32,32], "f": 0, "t": 48, "d": [8,436], "a": 1 },
{ "px": [480,208], "src": [32,32], "f": 0, "t": 48, "d": [8,446], "a": 1 },
{ "px": [80,224], "src": [32,32], "f": 0, "t": 48, "d": [8,453], "a": 1 },
{ "px": [240,224], "src": [32,32], "f": 0, "t": 48, "d": [8,463], "a": 1 },
{ "px": [96,240], "src": [32,32], "f": 0, "t": 48, "d": [8,486], "a": 1 },
{ "px": [128,240], "src": [32,32], "f": 0, "t": 48, "d": [8,488], "a": 1 },
{ "px": [160,240], "src": [32,32], "f": 0, "t": 48, "d": [8,490], "a": 1 },
{ "px": [224,240], "src": [32,32], "f": 0, "t": 48, "d": [8,494], "a": 1 },
{ "px": [256,240], "src": [32,32], "f": 0, "t": 48, "d": [8,496], "a": 1 },
{ "px": [448,240], "src": [32,32], "f": 0, "t": 48, "d": [8,508], "a": 1 },
{ "px": [16,0], "src": [96,96], "f": 0, "t": 144, "d": [83,1], "a": 1 },
{ "px": [144,0], "src": [96,96], "f": 0, "t": 144, "d": [83,9], "a": 1 },
{ "px": [160,16], "src": [64,96], "f": 0, "t": 142, "d": [83,42], "a": 1 },
{ "px": [160,48], "src": [96,96], "f": 0, "t": 144, "d": [83,106], "a": 1 },
{ "px": [336,64], "src": [64,96], "f": 0, "t": 142, "d": [83,149], "a": 1 },
{ "px": [432,64], "src": [64,96], "f": 0, "t": 142, "d": [83,155], "a": 1 },
{ "px": [0,80], "src": [64,96], "f": 0, "t": 142, "d": [83,160], "a": 1 },
{ "px": [160,80], "src": [96,96], "f": 0, "t": 144, "d": [83,170], "a": 1 },
{ "px": [320,80], "src": [64,96], "f": 0, "t": 142, "d": [83,180], "a": 1 },
{ "px": [352,80], "src": [64,96], "f": 0, "t": 142, "d": [83,182], "a": 1 },
{ "px": [448,80], "src": [96,96], "f": 0, "t": 144, "d": [83,188], "a": 1 },
{ "px": [480,80], "src": [96,96], "f": 0, "t": 144, "d": [83,190], "a": 1 },
{ "px": [16,192], "src": [64,96], "f": 0, "t": 142, "d": [83,385], "a": 1 },
{ "px": [48,192], "src": [96,96], "f": 0, "t": 144, "d": [83,387], "a": 1 },
{ "px": [80,192], "src": [96,96], "f": 0, "t": 144, "d": [83,389], "a": 1 },
{ "px": [272,192], "src": [64,96], "f": 0, "t": 142, "d": [83,401], "a": 1 },
{ "px": [32,208], "src": [64,96], "f": 0, "t": 142, "d": [83,418], "a": 1 },
{ "px": [96,208], "src": [64,96], "f": 0, "t": 142, "d": [83,422], "a": 1 },
{ "px": [448,208], "src": [96,96], "f": 0, "t": 144, "d": [83,444], "a": 1 },
{ "px": [336,224], "src": [96,96], "f": 0, "t": 144, "d": [83,469], "a": 1 },
{ "px": [432,224], "src": [96,96], "f": 0, "t": 144, "d": [83,475], "a": 1 },
{ "px": [192,240], "src": [96,96], "f": 0, "t": 144, "d": [83,492], "a": 1 },
{ "px": [320,240], "src": [96,96], "f": 0, "t": 144, "d": [83,500], "a": 1 },
{ "px": [0,0], "src": [224,96], "f": 0, "t": 152, "d": [101,0], "a": 1 },
{ "px": [32,0], "src": [224,96], "f": 0, "t": 152, "d": [101,2], "a": 1 },
{ "px": [64,0], "src": [224,96], "f": 0, "t": 152, "d": [101,4], "a": 1 },
{ "px": [96,0], "src": [96,0], "f": 0, "t": 6, "d": [101,6], "a": 1 },
{ "px": [128,0], "src": [224,96], "f": 0, "t": 152, "d": [101,8], "a": 1 },
{ "px": [160,0], "src": [96,0], "f": 0, "t": 6, "d": [101,10], "a": 1 },
{ "px": [176,16], "src": [96,0], "f": 0, "t": 6, "d": [101,43], "a": 1 },
{ "px": [0,32], "src": [224,96], "f": 0, "t": 152, "d": [101,64], "a": 1 },
{ "px": [160,32], "src": [192,16], "f": 0, "t": 35, "d": [101,74], "a": 1 },
{ "px": [176,48], "src": [224,96], "f": 0, "t": 152, "d": [101,107], "a": 1 },
{ "px": [0,64], "src": [96,0], "f": 0, "t": 6, "d": [101,128], "a": 1 },
{ "px": [160,64], "src": [192,16], "f": 0, "t": 35, "d": [101,138], "a": 1 },
{ "px": [192,64], "src": [224,96], "f": 0, "t": 152, "d": [101,140], "a": 1 },
{ "px": [224,64], "src": [96,0], "f": 0, "t": 6, "d": [101,142], "a": 1 },
{ "px": [256,64], "src": [96,0], "f": 0, "t": 6, "d": [101,144], "a": 1 },
{ "px": [288,64], "src": [224,96], "f": 0, "t": 152, "d": [101,146], "a": 1 },
{ "px": [320,64], "src": [192,16], "f": 0, "t": 35, "d": [101,148], "a": 1 },
{ "px": [352,64], "src": [192,16], "f": 0, "t": 35, "d": [101,150], "a": 1 },
{ "px": [384,64], "src": [224,96], "f": 0, "t": 152, "d": [101,152], "a": 1 },
{ "px": [416,64], "src": [224,96], "f": 0, "t": 152, "d": [101,154], "a": 1 },
{ "px": [448,64], "src": [96,0], "f": 0, "t": 6, "d": [101,156], "a": 1 },
{ "px": [480,64], "src": [224,96], "f": 0, "t": 152, "d": [101,158], "a": 1 },
{ "px": [176,80], "src": [96,0], "f": 0, "t": 6, "d": [101,171], "a": 1 },
{ "px": [208,80], "src": [224,96], "f": 0, "t": 152, "d": [101,173], "a": 1 },
{ "px": [240,80], "src": [96,0], "f": 0, "t": 6, "d": [101,175], "a": 1 },
{ "px": [272,80], "src": [96,0], "f": 0, "t": 6, "d": [101,177], "a": 1 },
{ "px": [304,80], "src": [96,0], "f": 0, "t": 6, "d": [101,179], "a": 1 },
{ "px": [336,80], "src": [224,96], "f": 0, "t": 152, "d": [101,181], "a": 1 },
{ "px": [368,80], "src": [192,16], "f": 0, "t": 35, "d": [101,183], "a": 1 },
{ "px": [400,80], "src": [192,16], "f": 0, "t": 35, "d": [101,185], "a": 1 },
{ "px": [432,80], "src": [192,16], "f": 0, "t": 35, "d": [101,187], "a": 1 },
{ "px": [464,80], "src": [224,96], "f": 0, "t": 152, "d": [101,189], "a": 1 },
{ "px": [496,80], "src": [192,16], "f": 0, "t": 35, "d": [101,191], "a": 1 },
{ "px": [0,192], "src": [224,96], "f": 0, "t": 152, "d": [101,384], "a": 1 },
{ "px": [32,192], "src": [192,16], "f": 0, "t": 35, "d": [101,386], "a": 1 },
{ "px": [64,192], "src": [192,16], "f": 0, "t": 35, "d": [101,388], "a": 1 },
{ "px": [96,192], "src": [224,96], "f": 0, "t": 152, "d": [101,390], "a": 1 },
{ "px": [256,192], "src": [192,16], "f": 0, "t": 35, "d": [101,400], "a": 1 },
{ "px": [288,192], "src": [192,16], "f": 0, "t": 35, "d": [101,402], "a": 1 },
{ "px": [320,192], "src": [192,16], "f": 0, "t": 35, "d": [101,404], "a": 1 },
{ "px": [448,192], "src": [96,0], "f": 0, "t": 6, "d": [101,412], "a": 1 },
{ "px": [480,192], "src": [96,0], "f": 0, "t": 6, "d": [101,414], "a": 1 },
{ "px": [16,208], "src": [96,0], "f": 0, "t": 6, "d": [101,417], "a": 1 },
{ "px": [48,208], "src": [96,0], "f": 0, "t": 6, "d": [101,419], "a": 1 },
{ "px": [80,208], "src": [224,96], "f": 0, "t": 152, "d": [101,421], "a": 1 },
{ "px": [240,208], "src": [224,96], "f": 0, "t": 152, "d": [101,431], "a": 1 },
{ "px": [272,208], "src": [224,96], "f": 0, "t": 152, "d": [101,433], "a": 1 },
{ "px": [304,208], "src": [192,16], "f": 0, "t": 35, "d": [101,435], "a": 1 },
{ "px": [336,208], "src": [224,96], "f": 0, "t": 152, "d": [101,437], "a": 1 },
{ "px": [432,208], "src": [96,0], "f": 0, "t": 6, "d": [101,443], "a": 1 },
{ "px": [464,208], "src": [192,16], "f": 0, "t": 35, "d": [101,445], "a": 1 },
{ "px": [496,208], "src": [192,16], "f": 0, "t": 35, "d": [101,447], "a": 1 },
{ "px": [96,224], "src": [96,0], "f": 0, "t": 6, "d": [101,454], "a": 1 },
{ "px": [256,224], "src": [192,16], "f": 0, "t": 35, "d": [101,464], "a": 1 },
{ "px": [320,224], "src": [96,0], "f": 0, "t": 6, "d": [101,468], "a": 1 },
{ "px": [448,224], "src": [96,0], "f": 0, "t": 6, "d": [101,476], "a": 1 },
{ "px": [80,240], "src": [96,0], "f": 0, "t": 6, "d": [101,485], "a": 1 },
{ "px": [112,240], "src": [96,0], "f": 0, "t": 6, "d": [101,487], "a": 1 },
{ "px": [144,240], "src": [224,96], "f": 0, "t": 152, "d": [101,489], "a": 1 },
{ "px": [176,240], "src": [96,0], "f": 0, "t": 6, "d": [101,491], "a": 1 },
{ "px": [208,240], "src": [192,16], "f": 0, "t": 35, "d": [101,493], "a": 1 },
{ "px": [240,240], "src": [192,16], "f": 0, "t": 35, "d": [101,495], "a": 1 },
{ "px": [336,240], "src": [224,96], "f": 0, "t": 152, "d": [101,501], "a": 1 },
{ "px": [432,240], "src": [192,16], "f": 0, "t": 35, "d": [101,507], "a": 1 },
{ "px": [192,0], "src": [32,32], "f": 0, "t": 48, "d": [127,12], "a": 1 },
{ "px": [208,0], "src": [32,32], "f": 0, "t": 48, "d": [127,13], "a": 1 },
{ "px": [224,0], "src": [32,32], "f": 0, "t": 48, "d": [127,14], "a": 1 },
{ "px": [240,0], "src": [32,32], "f": 0, "t": 48, "d": [127,15], "a": 1 },
{ "px": [272,0], "src": [32,32], "f": 0, "t": 48, "d": [127,17], "a": 1 },
{ "px": [288,0], "src": [32,32], "f": 0, "t": 48, "d": [127,18], "a": 1 },
{ "px": [304,0], "src": [32,32], "f": 0, "t": 48, "d": [127,19], "a": 1 },
{ "px": [336,0], "src": [32,32], "f": 0, "t": 48, "d": [127,21], "a": 1 },
{ "px": [368,0], "src": [32,32], "f": 0, "t": 48, "d": [127,23], "a": 1 },
{ "px": [384,0], "src": [32,32], "f": 0, "t": 48, "d": [127,24], "a": 1 },
{ "px": [400,0], "src": [32,32], "f": 0, "t": 48, "d": [127,25], "a": 1 },
{ "px": [432,0], "src": [32,32], "f": 0, "t": 48, "d": [127,27], "a": 1 },
{ "px": [448,0], "src": [32,32], "f": 0, "t": 48, "d": [127,28], "a": 1 },
{ "px": [464,0], "src": [32,32], "f": 0, "t": 48, "d": [127,29], "a": 1 },
{ "px": [496,0], "src": [32,32], "f": 0, "t": 48, "d": [127,31], "a": 1 },
{ "px": [192,16], "src": [32,32], "f": 0, "t": 48, "d": [127,44], "a": 1 },
{ "px": [224,16], "src": [32,32], "f": 0, "t": 48, "d": [127,46], "a": 1 },
{ "px": [256,16], "src": [32,32], "f": 0, "t": 48, "d": [127,48], "a": 1 },
{ "px": [272,16], "src": [32,32], "f": 0, "t": 48, "d": [127,49], "a": 1 },
{ "px": [288,16], "src": [32,32], "f": 0, "t": 48, "d": [127,50], "a": 1 },
{ "px": [304,16], "src": [32,32], "f": 0, "t": 48, "d": [127,51], "a": 1 },
{ "px": [320,16], "src": [32,32], "f": 0, "t": 48, "d": [127,52], "a": 1 },
{ "px": [336,16], "src": [32,32], "f": 0, "t": 48, "d": [127,53], "a": 1 },
{ "px": [352,16], "src": [32,32], "f": 0, "t": 48, "d": [127,54], "a": 1 },
{ "px": [368,16], "src": [32,32], "f": 0, "t": 48, "d": [127,55], "a": 1 },
{ "px": [384,16], "src": [32,32], "f": 0, "t": 48, "d": [127,56], "a": 1 },
{ "px": [400,16], "src": [32,32], "f": 0, "t": 48, "d": [127,57], "a": 1 },
{ "px": [416,16], "src": [32,32], "f": 0, "t": 48, "d": [127,58], "a": 1 },
{ "px": [448,16], "src": [32,32], "f": 0, "t": 48, "d": [127,60], "a": 1 },
{ "px": [464,16], "src": [32,32], "f": 0, "t": 48, "d": [127,61], "a": 1 },
{ "px": [480,16], "src": [32,32], "f": 0, "t": 48, "d": [127,62], "a": 1 },
{ "px": [208,32], "src": [32,32], "f": 0, "t": 48, "d": [127,77], "a": 1 },
{ "px": [224,32], "src": [32,32], "f": 0, "t": 48, "d": [127,78], "a": 1 },
{ "px": [240,32], "src": [32,32], "f": 0, "t": 48, "d": [127,79], "a": 1 },
{ "px": [256,32], "src": [32,32], "f": 0, "t": 48, "d": [127,80], "a": 1 },
{ "px": [272,32], "src": [32,32], "f": 0, "t": 48, "d": [127,81], "a": 1 },
{ "px": [288,32], "src": [32,32], "f": 0, "t": 48, "d": [127,82], "a": 1 },
{ "px": [304,32], "src": [32,32], "f": 0, "t": 48, "d": [127,83], "a": 1 },
{ "px": [320,32], "src": [32,32], "f": 0, "t": 48, "d": [127,84], "a": 1 },
{ "px": [336,32], "src": [32,32], "f": 0, "t": 48, "d": [127,85], "a": 1 },
{ "px": [352,32], "src": [32,32], "f": 0, "t": 48, "d": [127,86], "a": 1 },
{ "px": [368,32], "src": [32,32], "f": 0, "t": 48, "d": [127,87], "a": 1 },
{ "px": [384,32], "src": [32,32], "f": 0, "t": 48, "d": [127,88], "a": 1 },
{ "px": [400,32], "src": [32,32], "f": 0, "t": 48, "d": [127,89], "a": 1 },
{ "px": [416,32], "src": [32,32], "f": 0, "t": 48, "d": [127,90], "a": 1 },
{ "px": [432,32], "src": [32,32], "f": 0, "t": 48, "d": [127,91], "a": 1 },
{ "px": [448,32], "src": [32,32], "f": 0, "t": 48, "d": [127,92], "a": 1 },
{ "px": [464,32], "src": [32,32], "f": 0, "t": 48, "d": [127,93], "a": 1 },
{ "px": [480,32], "src": [32,32], "f": 0, "t": 48, "d": [127,94], "a": 1 },
{ "px": [496,32], "src": [32,32], "f": 0, "t": 48, "d": [127,95], "a": 1 },
{ "px": [192,48], "src": [32,32], "f": 0, "t": 48, "d": [127,108], "a": 1 },
{ "px": [224,48], "src": [32,32], "f": 0, "t": 48, "d": [127,110], "a": 1 },
{ "px": [240,48], "src": [32,32], "f": 0, "t": 48, "d": [127,111], "a": 1 },
{ "px": [256,48], "src": [32,32], "f": 0, "t": 48, "d": [127,112], "a": 1 },
{ "px": [272,48], "src": [32,32], "f": 0, "t": 48, "d": [127,113], "a": 1 },
{ "px": [288,48], "src": [32,32], "f": 0, "t": 48, "d": [127,114], "a": 1 },
{ "px": [304,48], "src": [32,32], "f": 0, "t": 48, "d": [127,115], "a": 1 },
{ "px": [320,48], "src": [32,32], "f": 0, "t": 48, "d": [127,116], "a": 1 },
{ "px": [336,48], "src": [32,32], "f": 0, "t": 48, "d": [127,117], "a": 1 },
{ "px": [352,48], "src": [32,32], "f": 0, "t": 48, "d": [127,118], "a": 1 },
{ "px": [384,48], "src": [32,32], "f": 0, "t": 48, "d": [127,120], "a": 1 },
{ "px": [400,48], "src": [32,32], "f": 0, "t": 48, "d": [127,121], "a": 1 },
{ "px": [416,48], "src": [32,32], "f": 0, "t": 48, "d": [127,122], "a": 1 },
{ "px": [432,48], "src": [32,32], "f": 0, "t": 48, "d": [127,123], "a": 1 },
{ "px": [448,48], "src": [32,32], "f": 0, "t": 48, "d": [127,124], "a": 1 },
{ "px": [464,48], "src": [32,32], "f": 0, "t": 48, "d": [127,125], "a": 1 },
{ "px": [480,48], "src": [32,32], "f": 0, "t": 48, "d": [127,126], "a": 1 },
{ "px": [496,48], "src": [32,32], "f": 0, "t": 48, "d": [127,127], "a": 1 },
{ "px": [0,224], "src": [32,32], "f": 0, "t": 48, "d": [127,448], "a": 1 },
{ "px": [16,224], "src": [32,32], "f": 0, "t": 48, "d": [127,449], "a": 1 },
{ "px": [32,224], "src": [32,32], "f": 0, "t": 48, "d": [127,450], "a": 1 },
{ "px": [48,224], "src": [32,32], "f": 0, "t": 48, "d": [127,451], "a": 1 },
{ "px": [64,224], "src": [32,32], "f": 0, "t": 48, "d": [127,452], "a": 1 },
{ "px": [272,224], "src": [32,32], "f": 0, "t": 48, "d": [127,465], "a": 1 },
{ "px": [288,224], "src": [32,32], "f": 0, "t": 48, "d": [127,466], "a": 1 },
{ "px": [304,224], "src": [32,32], "f": 0, "t": 48, "d": [127,467], "a": 1 },
{ "px": [464,224], "src": [32,32], "f": 0, "t": 48, "d": [127,477], "a": 1 },
{ "px": [480,224], "src": [32,32], "f": 0, "t": 48, "d": [127,478], "a": 1 },
{ "px": [496,224], "src": [32,32], "f": 0, "t": 48, "d": [127,479], "a": 1 },
{ "px": [0,240], "src": [32,32], "f": 0, "t": 48, "d": [127,480], "a": 1 },
{ "px": [16,240], "src": [32,32], "f": 0, "t": 48, "d": [127,481], "a": 1 },
{ "px": [32,240], "src": [32,32], "f": 0, "t": 48, "d": [127,482], "a": 1 },
{ "px": [48,240], "src": [32,32], "f": 0, "t": 48, "d": [127,483], "a": 1 },
{ "px": [64,240], "src": [32,32], "f": 0, "t": 48, "d": [127,484], "a": 1 },
{ "px": [288,240], "src": [32,32], "f": 0, "t": 48, "d": [127,498], "a": 1 },
{ "px": [480,240], "src": [32,32], "f": 0, "t": 48, "d": [127,510], "a": 1 },
{ "px": [256,0], "src": [96,96], "f": 0, "t": 144, "d": [126,16], "a": 1 },
{ "px": [320,0], "src": [64,96], "f": 0, "t": 142, "d": [126,20], "a": 1 },
{ "px": [352,0], "src": [64,96], "f": 0, "t": 142, "d": [126,22], "a": 1 },
{ "px": [416,0], "src": [96,96], "f": 0, "t": 144, "d": [126,26], "a": 1 },
{ "px": [480,0], "src": [64,96], "f": 0, "t": 142, "d": [126,30], "a": 1 },
{ "px": [208,16], "src": [96,96], "f": 0, "t": 144, "d": [126,45], "a": 1 },
{ "px": [240,16], "src": [64,96], "f": 0, "t": 142, "d": [126,47], "a": 1 },
{ "px": [432,16], "src": [96,96], "f": 0, "t": 144, "d": [126,59], "a": 1 },
{ "px": [496,16], "src": [96,96], "f": 0, "t": 144, "d": [126,63], "a": 1 },
{ "px": [192,32], "src": [96,96], "f": 0, "t": 144, "d": [126,76], "a": 1 },
{ "px": [208,48], "src": [64,96], "f": 0, "t": 142, "d": [126,109], "a": 1 },
{ "px": [368,48], "src": [64,96], "f": 0, "t": 142, "d": [126,119], "a": 1 },
{ "px": [272,240], "src": [64,96], "f": 0, "t": 142, "d": [126,497], "a": 1 },
{ "px": [304,240], "src": [96,96], "f": 0, "t": 144, "d": [126,499], "a": 1 },
{ "px": [464,240], "src": [64,96], "f": 0, "t": 142, "d": [126,509], "a": 1 },
{ "px": [496,240], "src": [64,96], "f": 0, "t": 142, "d": [126,511], "a": 1 },
{ "px": [32,16], "src": [256,160], "f": 0, "t": 246, "d": [12,34], "a": 1 },
{ "px": [64,16], "src": [256,160], "f": 0, "t": 246, "d": [12,36], "a": 1 },
{ "px": [80,16], "src": [256,160], "f": 0, "t": 246, "d": [12,37], "a": 1 },
{ "px": [96,16], "src": [256,160], "f": 0, "t": 246, "d": [12,38], "a": 1 },
{ "px": [112,16], "src": [256,160], "f": 0, "t": 246, "d": [12,39], "a": 1 },
{ "px": [128,16], "src": [256,160], "f": 0, "t": 246, "d": [12,40], "a": 1 },
{ "px": [0,96], "src": [256,160], "f": 0, "t": 246, "d": [12,192], "a": 1 },
{ "px": [176,96], "src": [256,160], "f": 0, "t": 246, "d": [12,203], "a": 1 },
{ "px": [224,96], "src": [256,160], "f": 0, "t": 246, "d": [12,206], "a": 1 },
{ "px": [304,96], "src": [256,160], "f": 0, "t": 246, "d": [12,211], "a": 1 },
{ "px": [336,96], "src": [256,160], "f": 0, "t": 246, "d": [12,213], "a": 1 },
{ "px": [352,96], "src": [256,160], "f": 0, "t": 246, "d": [12,214], "a": 1 },
{ "px": [368,96], "src": [256,160], "f": 0, "t": 246, "d": [12,215], "a": 1 },
{ "px": [384,96], "src": [256,160], "f": 0, "t": 246, "d": [12,216], "a": 1 },
{ "px": [432,96], "src": [256,160], "f": 0, "t": 246, "d": [12,219], "a": 1 },
{ "px": [464,96], "src": [256,160], "f": 0, "t": 246, "d": [12,221], "a": 1 },
{ "px": [480,96], "src": [256,160], "f": 0, "t": 246, "d": [12,222], "a": 1 },
{ "px": [496,96], "src": [256,160], "f": 0, "t": 246, "d": [12,223], "a": 1 },
{ "px": [32,96], "src": [256,96], "f": 0, "t": 154, "d": [9,194], "a": 1 },
{ "px": [48,96], "src": [256,96], "f": 0, "t": 154, "d": [9,195], "a": 1 },
{ "px": [112,96], "src": [256,96], "f": 0, "t": 154, "d": [9,199], "a": 1 },
{ "px": [128,96], "src": [256,96], "f": 0, "t": 154, "d": [9,200], "a": 1 },
{ "px": [0,176], "src": [256,96], "f": 0, "t": 154, "d": [9,352], "a": 1 },
{ "px": [16,176], "src": [256,96], "f": 0, "t": 154, "d": [9,353], "a": 1 },
{ "px": [32,176], "src": [256,96], "f": 0, "t": 154, "d": [9,354], "a": 1 },
{ "px": [48,176], "src": [256,96], "f": 0, "t": 154, "d": [9,355], "a": 1 },
{ "px": [64,176], "src": [256,96], "f": 0, "t": 154, "d": [9,356], "a": 1 },
{ "px": [80,176], "src": [256,96], "f": 0, "t": 154, "d": [9,357], "a": 1 },
{ "px": [96,176], "src": [256,96], "f": 0, "t": 154, "d": [9,358], "a": 1 },
{ "px": [240,176], "src": [256,96], "f": 0, "t": 154, "d": [9,367], "a": 1 },
{ "px": [304,176], "src": [256,96], "f": 0, "t": 154, "d": [9,371], "a": 1 },
{ "px": [320,176], "src": [256,96], "f": 0, "t": 154, "d": [9,372], "a": 1 },
{ "px": [336,176], "src": [256,96], "f": 0, "t": 154, "d": [9,373], "a": 1 },
{ "px": [432,176], "src": [256,96], "f": 0, "t": 154, "d": [9,379], "a": 1 },
{ "px": [448,176], "src": [256,96], "f": 0, "t": 154, "d": [9,380], "a": 1 },
{ "px": [464,176], "src": [256,96], "f": 0, "t": 154, "d": [9,381], "a": 1 },
{ "px": [480,176], "src": [256,96], "f": 0, "t": 154, "d": [9,382], "a": 1 },
{ "px": [496,176], "src": [256,96], "f": 0, "t": 154, "d": [9,383], "a": 1 },
{ "px": [128,224], "src": [256,96], "f": 0, "t": 154, "d": [9,456], "a": 1 },
{ "px": [144,224], "src": [256,96], "f": 0, "t": 154, "d": [9,457], "a": 1 },
{ "px": [160,224], "src": [256,96], "f": 0, "t": 154, "d": [9,458], "a": 1 },
{ "px": [176,224], "src": [256,96], "f": 0, "t": 154, "d": [9,459], "a": 1 },
{ "px": [192,224], "src": [256,96], "f": 0, "t": 154, "d": [9,460], "a": 1 },
{ "px": [208,224], "src": [256,96], "f": 0, "t": 154, "d": [9,461], "a": 1 },
{ "px": [16,32], "src": [224,128], "f": 1, "t": 198, "d": [10,65], "a": 1 },
{ "px": [144,32], "src": [224,128], "f": 0, "t": 198, "d": [10,73], "a": 1 },
{ "px": [16,48], "src": [224,128], "f": 1, "t": 198, "d": [10,97], "a": 1 },
{ "px": [144,48], "src": [224,128], "f": 0, "t": 198, "d": [10,105], "a": 1 },
{ "px": [16,64], "src": [224,128], "f": 1, "t": 198, "d": [10,129], "a": 1 },
{ "px": [144,64], "src": [224,128], "f": 0, "t": 198, "d": [10,137], "a": 1 },
{ "px": [16,80], "src": [224,128], "f": 1, "t": 198, "d": [10,161], "a": 1 },
{ "px": [144,80], "src": [224,128], "f": 0, "t": 198, "d": [10,169], "a": 1 },
{ "px": [112,192], "src": [224,128], "f": 1, "t": 198, "d": [10,391], "a": 1 },
{ "px": [224,192], "src": [224,128], "f": 0, "t": 198, "d": [10,398], "a": 1 },
{ "px": [352,192], "src": [224,128], "f": 1, "t": 198, "d": [10,406], "a": 1 },
{ "px": [416,192], "src": [224,128], "f": 0, "t": 198, "d": [10,410], "a": 1 },
{ "px": [112,208], "src": [224,128], "f": 1, "t": 198, "d": [10,423], "a": 1 },
{ "px": [224,208], "src": [224,128], "f": 0, "t": 198, "d": [10,430], "a": 1 },
{ "px": [352,208], "src": [224,128], "f": 1, "t": 198, "d": [10,438], "a": 1 },
{ "px": [416,208], "src": [224,128], "f": 0, "t": 198, "d": [10,442], "a": 1 },
{ "px": [352,224], "src": [224,128], "f": 1, "t": 198, "d": [10,470], "a": 1 },
{ "px": [416,224], "src": [224,128], "f": 0, "t": 198, "d": [10,474], "a": 1 },
{ "px": [352,240], "src": [224,128], "f": 1, "t": 198, "d": [10,502], "a": 1 },
{ "px": [416,240], "src": [224,128], "f": 0, "t": 198, "d": [10,506], "a": 1 },
{ "px": [64,96], "src": [224,96], "f": 1, "t": 152, "d": [11,196], "a": 1 },
{ "px": [96,96], "src": [224,96], "f": 0, "t": 152, "d": [11,198], "a": 1 },
{ "px": [112,176], "src": [224,96], "f": 1, "t": 152, "d": [11,359], "a": 1 },
{ "px": [224,176], "src": [224,96], "f": 0, "t": 152, "d": [11,366], "a": 1 },
{ "px": [352,176], "src": [224,96], "f": 1, "t": 152, "d": [11,374], "a": 1 },
{ "px": [16,16], "src": [224,96], "f": 0, "t": 152, "d": [14,33], "a": 1 },
{ "px": [144,16], "src": [224,96], "f": 1, "t": 152, "d": [14,41], "a": 1 },
{ "px": [16,96], "src": [224,96], "f": 2, "t": 152, "d": [14,193], "a": 1 },
{ "px": [144,96], "src": [224,96], "f": 3, "t": 152, "d": [14,201], "a": 1 },
{ "px": [112,224], "src": [224,96], "f": 2, "t": 152, "d": [14,455], "a": 1 },
{ "px": [224,224], "src": [224,96], "f": 3, "t": 152, "d": [14,462], "a": 1 },
{ "px": [48,16], "src": [160,192], "f": 0, "t": 286, "d": [78,35], "a": 1 },
{ "px": [160,96], "src": [160,192], "f": 0, "t": 286, "d": [78,202], "a": 1 },
{ "px": [192,96], "src": [192,192], "f": 0, "t": 288, "d": [78,204], "a": 1 },
{ "px": [208,96], "src": [192,192], "f": 0, "t": 288, "d": [78,205], "a": 1 },
{ "px": [240,96], "src": [160,192], "f": 0, "t": 286, "d": [78,207], "a": 1 },
{ "px": [256,96], "src": [192,192], "f": 0, "t": 288, "d": [78,208], "a": 1 },
{ "px": [272,96], "src": [160,192], "f": 0, "t": 286, "d": [78,209], "a": 1 },
{ "px": [288,96], "src": [160,192], "f": 0, "t": 286, "d": [78,210], "a": 1 },
{ "px": [320,96], "src": [192,192], "f": 0, "t": 288, "d": [78,212], "a": 1 },
{ "px": [400,96], "src": [192,192], "f": 0, "t": 288, "d": [78,217], "a": 1 },
{ "px": [416,96], "src": [192,192], "f": 0, "t": 288, "d": [78,218], "a": 1 },
{ "px": [448,96], "src": [192,192], "f": 0, "t": 288, "d": [78,220], "a": 1 },
{ "px": [256,176], "src": [32,0], "f": 0, "t": 2, "d": [80,368], "a": 1 },
{ "px": [272,176], "src": [32,0], "f": 0, "t": 2, "d": [80,369], "a": 1 },
{ "px": [288,176], "src": [32,0], "f": 0, "t": 2, "d": [80,370], "a": 1 },
{ "px": [416,176], "src": [32,0], "f": 0, "t": 2, "d": [80,378], "a": 1 },
{ "px": [0,160], "src": [32,96], "f": 0, "t": 140, "d": [110,320], "a": 1 },
{ "px": [16,160], "src": [32,96], "f": 0, "t": 140, "d": [110,321], "a": 1 },
{ "px": [32,160], "src": [0,96], "f": 0, "t": 138, "d": [110,322], "a": 1 },
{ "px": [96,160], "src": [0,96], "f": 0, "t": 138, "d": [110,326], "a": 1 },
{ "px": [224,160], "src": [0,96], "f": 0, "t": 138, "d": [110,334], "a": 1 },
{ "px": [240,160], "src": [0,96], "f": 0, "t": 138, "d": [110,335], "a": 1 },
{ "px": [288,160], "src": [0,96], "f": 0, "t": 138, "d": [110,338], "a": 1 },
{ "px": [320,160], "src": [0,96], "f": 0, "t": 138, "d": [110,340], "a": 1 },
{ "px": [416,160], "src": [0,96], "f": 0, "t": 138, "d": [110,346], "a": 1 },
{ "px": [480,160], "src": [0,96], "f": 0, "t": 138, "d": [110,350], "a": 1 }
],
"seed": 4509386,
"overrideTilesetUid": null,
"gridTiles": [],
"entityInstances": []
},
{
"__identifier": "Background",
"__type": "AutoLayer",
"__cWid": 32,
"__cHei": 16,
"__gridSize": 16,
"__opacity": 1,
"__pxTotalOffsetX": 0,
"__pxTotalOffsetY": 0,
"__tilesetDefUid": 6,
"__tilesetRelPath": "SunnyLand_by_Ansimuz-extended.png",
"iid": "a367c3bb-66b0-11ec-9cd7-3df486083ddc",
"levelId": 0,
"layerDefUid": 103,
"pxOffsetX": 0,
"pxOffsetY": 0,
"visible": true,
"optionalRules": [],
"intGridCsv": [],
"autoLayerTiles": [
{ "px": [48,32], "src": [320,272], "f": 0, "t": 411, "d": [108,67], "a": 1 },
{ "px": [64,32], "src": [320,272], "f": 0, "t": 411, "d": [108,68], "a": 1 },
{ "px": [96,32], "src": [320,272], "f": 0, "t": 411, "d": [108,70], "a": 1 },
{ "px": [112,32], "src": [320,272], "f": 0, "t": 411, "d": [108,71], "a": 1 },
{ "px": [48,48], "src": [320,272], "f": 0, "t": 411, "d": [108,99], "a": 1 },
{ "px": [64,48], "src": [320,272], "f": 0, "t": 411, "d": [108,100], "a": 1 },
{ "px": [80,48], "src": [320,272], "f": 0, "t": 411, "d": [108,101], "a": 1 },
{ "px": [96,48], "src": [320,272], "f": 0, "t": 411, "d": [108,102], "a": 1 },
{ "px": [112,48], "src": [320,272], "f": 0, "t": 411, "d": [108,103], "a": 1 },
{ "px": [48,64], "src": [320,272], "f": 0, "t": 411, "d": [108,131], "a": 1 },
{ "px": [64,64], "src": [320,272], "f": 0, "t": 411, "d": [108,132], "a": 1 },
{ "px": [80,64], "src": [320,272], "f": 0, "t": 411, "d": [108,133], "a": 1 },
{ "px": [112,64], "src": [320,272], "f": 0, "t": 411, "d": [108,135], "a": 1 },
{ "px": [48,80], "src": [320,272], "f": 0, "t": 411, "d": [108,163], "a": 1 },
{ "px": [64,80], "src": [320,272], "f": 0, "t": 411, "d": [108,164], "a": 1 },
{ "px": [80,80], "src": [320,272], "f": 0, "t": 411, "d": [108,165], "a": 1 },
{ "px": [96,80], "src": [320,272], "f": 0, "t": 411, "d": [108,166], "a": 1 },
{ "px": [112,80], "src": [320,272], "f": 0, "t": 411, "d": [108,167], "a": 1 },
{ "px": [16,112], "src": [320,272], "f": 0, "t": 411, "d": [108,225], "a": 1 },
{ "px": [32,112], "src": [320,272], "f": 0, "t": 411, "d": [108,226], "a": 1 },
{ "px": [48,112], "src": [320,272], "f": 0, "t": 411, "d": [108,227], "a": 1 },
{ "px": [64,112], "src": [320,272], "f": 0, "t": 411, "d": [108,228], "a": 1 },
{ "px": [80,112], "src": [320,272], "f": 0, "t": 411, "d": [108,229], "a": 1 },
{ "px": [96,112], "src": [320,272], "f": 0, "t": 411, "d": [108,230], "a": 1 },
{ "px": [112,112], "src": [320,272], "f": 0, "t": 411, "d": [108,231], "a": 1 },
{ "px": [144,112], "src": [320,272], "f": 0, "t": 411, "d": [108,233], "a": 1 },
{ "px": [176,112], "src": [320,272], "f": 0, "t": 411, "d": [108,235], "a": 1 },
{ "px": [192,112], "src": [320,272], "f": 0, "t": 411, "d": [108,236], "a": 1 },
{ "px": [208,112], "src": [320,272], "f": 0, "t": 411, "d": [108,237], "a": 1 },
{ "px": [224,112], "src": [320,272], "f": 0, "t": 411, "d": [108,238], "a": 1 },
{ "px": [240,112], "src": [320,272], "f": 0, "t": 411, "d": [108,239], "a": 1 },
{ "px": [256,112], "src": [320,272], "f": 0, "t": 411, "d": [108,240], "a": 1 },
{ "px": [272,112], "src": [320,272], "f": 0, "t": 411, "d": [108,241], "a": 1 },
{ "px": [304,112], "src": [320,272], "f": 0, "t": 411, "d": [108,243], "a": 1 },
{ "px": [336,112], "src": [320,272], "f": 0, "t": 411, "d": [108,245], "a": 1 },
{ "px": [352,112], "src": [320,272], "f": 0, "t": 411, "d": [108,246], "a": 1 },
{ "px": [368,112], "src": [320,272], "f": 0, "t": 411, "d": [108,247], "a": 1 },
{ "px": [384,112], "src": [320,272], "f": 0, "t": 411, "d": [108,248], "a": 1 },
{ "px": [400,112], "src": [320,272], "f": 0, "t": 411, "d": [108,249], "a": 1 },
{ "px": [432,112], "src": [320,272], "f": 0, "t": 411, "d": [108,251], "a": 1 },
{ "px": [448,112], "src": [320,272], "f": 0, "t": 411, "d": [108,252], "a": 1 },
{ "px": [464,112], "src": [320,272], "f": 0, "t": 411, "d": [108,253], "a": 1 },
{ "px": [496,112], "src": [320,272], "f": 0, "t": 411, "d": [108,255], "a": 1 },
{ "px": [0,128], "src": [320,272], "f": 0, "t": 411, "d": [108,256], "a": 1 },
{ "px": [16,128], "src": [320,272], "f": 0, "t": 411, "d": [108,257], "a": 1 },
{ "px": [32,128], "src": [320,272], "f": 0, "t": 411, "d": [108,258], "a": 1 },
{ "px": [48,128], "src": [320,272], "f": 0, "t": 411, "d": [108,259], "a": 1 },
{ "px": [64,128], "src": [320,272], "f": 0, "t": 411, "d": [108,260], "a": 1 },
{ "px": [80,128], "src": [320,272], "f": 0, "t": 411, "d": [108,261], "a": 1 },
{ "px": [112,128], "src": [320,272], "f": 0, "t": 411, "d": [108,263], "a": 1 },
{ "px": [128,128], "src": [320,272], "f": 0, "t": 411, "d": [108,264], "a": 1 },
{ "px": [160,128], "src": [320,272], "f": 0, "t": 411, "d": [108,266], "a": 1 },
{ "px": [176,128], "src": [320,272], "f": 0, "t": 411, "d": [108,267], "a": 1 },
{ "px": [192,128], "src": [320,272], "f": 0, "t": 411, "d": [108,268], "a": 1 },
{ "px": [208,128], "src": [320,272], "f": 0, "t": 411, "d": [108,269], "a": 1 },
{ "px": [224,128], "src": [320,272], "f": 0, "t": 411, "d": [108,270], "a": 1 },
{ "px": [240,128], "src": [320,272], "f": 0, "t": 411, "d": [108,271], "a": 1 },
{ "px": [256,128], "src": [320,272], "f": 0, "t": 411, "d": [108,272], "a": 1 },
{ "px": [272,128], "src": [320,272], "f": 0, "t": 411, "d": [108,273], "a": 1 },
{ "px": [288,128], "src": [320,272], "f": 0, "t": 411, "d": [108,274], "a": 1 },
{ "px": [304,128], "src": [320,272], "f": 0, "t": 411, "d": [108,275], "a": 1 },
{ "px": [320,128], "src": [320,272], "f": 0, "t": 411, "d": [108,276], "a": 1 },
{ "px": [336,128], "src": [320,272], "f": 0, "t": 411, "d": [108,277], "a": 1 },
{ "px": [352,128], "src": [320,272], "f": 0, "t": 411, "d": [108,278], "a": 1 },
{ "px": [368,128], "src": [320,272], "f": 0, "t": 411, "d": [108,279], "a": 1 },
{ "px": [384,128], "src": [320,272], "f": 0, "t": 411, "d": [108,280], "a": 1 },
{ "px": [400,128], "src": [320,272], "f": 0, "t": 411, "d": [108,281], "a": 1 },
{ "px": [416,128], "src": [320,272], "f": 0, "t": 411, "d": [108,282], "a": 1 },
{ "px": [432,128], "src": [320,272], "f": 0, "t": 411, "d": [108,283], "a": 1 },
{ "px": [448,128], "src": [320,272], "f": 0, "t": 411, "d": [108,284], "a": 1 },
{ "px": [464,128], "src": [320,272], "f": 0, "t": 411, "d": [108,285], "a": 1 },
{ "px": [480,128], "src": [320,272], "f": 0, "t": 411, "d": [108,286], "a": 1 },
{ "px": [496,128], "src": [320,272], "f": 0, "t": 411, "d": [108,287], "a": 1 },
{ "px": [0,144], "src": [320,272], "f": 0, "t": 411, "d": [108,288], "a": 1 },
{ "px": [16,144], "src": [320,272], "f": 0, "t": 411, "d": [108,289], "a": 1 },
{ "px": [32,144], "src": [320,272], "f": 0, "t": 411, "d": [108,290], "a": 1 },
{ "px": [48,144], "src": [320,272], "f": 0, "t": 411, "d": [108,291], "a": 1 },
{ "px": [64,144], "src": [320,272], "f": 0, "t": 411, "d": [108,292], "a": 1 },
{ "px": [80,144], "src": [320,272], "f": 0, "t": 411, "d": [108,293], "a": 1 },
{ "px": [96,144], "src": [320,272], "f": 0, "t": 411, "d": [108,294], "a": 1 },
{ "px": [112,144], "src": [320,272], "f": 0, "t": 411, "d": [108,295], "a": 1 },
{ "px": [128,144], "src": [320,272], "f": 0, "t": 411, "d": [108,296], "a": 1 },
{ "px": [144,144], "src": [320,272], "f": 0, "t": 411, "d": [108,297], "a": 1 },
{ "px": [160,144], "src": [320,272], "f": 0, "t": 411, "d": [108,298], "a": 1 },
{ "px": [176,144], "src": [320,272], "f": 0, "t": 411, "d": [108,299], "a": 1 },
{ "px": [192,144], "src": [320,272], "f": 0, "t": 411, "d": [108,300], "a": 1 },
{ "px": [208,144], "src": [320,272], "f": 0, "t": 411, "d": [108,301], "a": 1 },
{ "px": [224,144], "src": [320,272], "f": 0, "t": 411, "d": [108,302], "a": 1 },
{ "px": [240,144], "src": [320,272], "f": 0, "t": 411, "d": [108,303], "a": 1 },
{ "px": [256,144], "src": [320,272], "f": 0, "t": 411, "d": [108,304], "a": 1 },
{ "px": [272,144], "src": [320,272], "f": 0, "t": 411, "d": [108,305], "a": 1 },
{ "px": [288,144], "src": [320,272], "f": 0, "t": 411, "d": [108,306], "a": 1 },
{ "px": [304,144], "src": [320,272], "f": 0, "t": 411, "d": [108,307], "a": 1 },
{ "px": [320,144], "src": [320,272], "f": 0, "t": 411, "d": [108,308], "a": 1 },
{ "px": [336,144], "src": [320,272], "f": 0, "t": 411, "d": [108,309], "a": 1 },
{ "px": [352,144], "src": [320,272], "f": 0, "t": 411, "d": [108,310], "a": 1 },
{ "px": [368,144], "src": [320,272], "f": 0, "t": 411, "d": [108,311], "a": 1 },
{ "px": [384,144], "src": [320,272], "f": 0, "t": 411, "d": [108,312], "a": 1 },
{ "px": [400,144], "src": [320,272], "f": 0, "t": 411, "d": [108,313], "a": 1 },
{ "px": [416,144], "src": [320,272], "f": 0, "t": 411, "d": [108,314], "a": 1 },
{ "px": [432,144], "src": [320,272], "f": 0, "t": 411, "d": [108,315], "a": 1 },
{ "px": [448,144], "src": [320,272], "f": 0, "t": 411, "d": [108,316], "a": 1 },
{ "px": [464,144], "src": [320,272], "f": 0, "t": 411, "d": [108,317], "a": 1 },
{ "px": [480,144], "src": [320,272], "f": 0, "t": 411, "d": [108,318], "a": 1 },
{ "px": [496,144], "src": [320,272], "f": 0, "t": 411, "d": [108,319], "a": 1 },
{ "px": [0,160], "src": [320,272], "f": 0, "t": 411, "d": [108,320], "a": 1 },
{ "px": [16,160], "src": [320,272], "f": 0, "t": 411, "d": [108,321], "a": 1 },
{ "px": [32,160], "src": [320,272], "f": 0, "t": 411, "d": [108,322], "a": 1 },
{ "px": [48,160], "src": [320,272], "f": 0, "t": 411, "d": [108,323], "a": 1 },
{ "px": [64,160], "src": [320,272], "f": 0, "t": 411, "d": [108,324], "a": 1 },
{ "px": [96,160], "src": [320,272], "f": 0, "t": 411, "d": [108,326], "a": 1 },
{ "px": [112,160], "src": [320,272], "f": 0, "t": 411, "d": [108,327], "a": 1 },
{ "px": [144,160], "src": [320,272], "f": 0, "t": 411, "d": [108,329], "a": 1 },
{ "px": [160,160], "src": [320,272], "f": 0, "t": 411, "d": [108,330], "a": 1 },
{ "px": [176,160], "src": [320,272], "f": 0, "t": 411, "d": [108,331], "a": 1 },
{ "px": [192,160], "src": [320,272], "f": 0, "t": 411, "d": [108,332], "a": 1 },
{ "px": [208,160], "src": [320,272], "f": 0, "t": 411, "d": [108,333], "a": 1 },
{ "px": [224,160], "src": [320,272], "f": 0, "t": 411, "d": [108,334], "a": 1 },
{ "px": [256,160], "src": [320,272], "f": 0, "t": 411, "d": [108,336], "a": 1 },
{ "px": [272,160], "src": [320,272], "f": 0, "t": 411, "d": [108,337], "a": 1 },
{ "px": [288,160], "src": [320,272], "f": 0, "t": 411, "d": [108,338], "a": 1 },
{ "px": [304,160], "src": [320,272], "f": 0, "t": 411, "d": [108,339], "a": 1 },
{ "px": [336,160], "src": [320,272], "f": 0, "t": 411, "d": [108,341], "a": 1 },
{ "px": [352,160], "src": [320,272], "f": 0, "t": 411, "d": [108,342], "a": 1 },
{ "px": [368,160], "src": [320,272], "f": 0, "t": 411, "d": [108,343], "a": 1 },
{ "px": [384,160], "src": [320,272], "f": 0, "t": 411, "d": [108,344], "a": 1 },
{ "px": [400,160], "src": [320,272], "f": 0, "t": 411, "d": [108,345], "a": 1 },
{ "px": [416,160], "src": [320,272], "f": 0, "t": 411, "d": [108,346], "a": 1 },
{ "px": [432,160], "src": [320,272], "f": 0, "t": 411, "d": [108,347], "a": 1 },
{ "px": [448,160], "src": [320,272], "f": 0, "t": 411, "d": [108,348], "a": 1 },
{ "px": [464,160], "src": [320,272], "f": 0, "t": 411, "d": [108,349], "a": 1 },
{ "px": [496,160], "src": [320,272], "f": 0, "t": 411, "d": [108,351], "a": 1 },
{ "px": [144,176], "src": [320,272], "f": 0, "t": 411, "d": [108,361], "a": 1 },
{ "px": [160,176], "src": [320,272], "f": 0, "t": 411, "d": [108,362], "a": 1 },
{ "px": [176,176], "src": [320,272], "f": 0, "t": 411, "d": [108,363], "a": 1 },
{ "px": [192,176], "src": [320,272], "f": 0, "t": 411, "d": [108,364], "a": 1 },
{ "px": [384,176], "src": [320,272], "f": 0, "t": 411, "d": [108,376], "a": 1 },
{ "px": [128,192], "src": [320,272], "f": 0, "t": 411, "d": [108,392], "a": 1 },
{ "px": [144,192], "src": [320,272], "f": 0, "t": 411, "d": [108,393], "a": 1 },
{ "px": [160,192], "src": [320,272], "f": 0, "t": 411, "d": [108,394], "a": 1 },
{ "px": [176,192], "src": [320,272], "f": 0, "t": 411, "d": [108,395], "a": 1 },
{ "px": [192,192], "src": [320,272], "f": 0, "t": 411, "d": [108,396], "a": 1 },
{ "px": [208,192], "src": [320,272], "f": 0, "t": 411, "d": [108,397], "a": 1 },
{ "px": [384,192], "src": [320,272], "f": 0, "t": 411, "d": [108,408], "a": 1 },
{ "px": [128,208], "src": [320,272], "f": 0, "t": 411, "d": [108,424], "a": 1 },
{ "px": [144,208], "src": [320,272], "f": 0, "t": 411, "d": [108,425], "a": 1 },
{ "px": [160,208], "src": [320,272], "f": 0, "t": 411, "d": [108,426], "a": 1 },
{ "px": [176,208], "src": [320,272], "f": 0, "t": 411, "d": [108,427], "a": 1 },
{ "px": [192,208], "src": [320,272], "f": 0, "t": 411, "d": [108,428], "a": 1 },
{ "px": [208,208], "src": [320,272], "f": 0, "t": 411, "d": [108,429], "a": 1 },
{ "px": [384,208], "src": [320,272], "f": 0, "t": 411, "d": [108,440], "a": 1 },
{ "px": [384,224], "src": [320,272], "f": 0, "t": 411, "d": [108,472], "a": 1 },
{ "px": [384,240], "src": [320,272], "f": 0, "t": 411, "d": [108,504], "a": 1 },
{ "px": [48,48], "src": [256,240], "f": 1, "t": 361, "d": [107,98], "a": 1 },
{ "px": [32,48], "src": [272,240], "f": 1, "t": 362, "d": [107,98], "a": 1 },
{ "px": [112,48], "src": [256,240], "f": 0, "t": 361, "d": [107,104], "a": 1 },
{ "px": [128,48], "src": [272,240], "f": 0, "t": 362, "d": [107,104], "a": 1 },
{ "px": [48,64], "src": [256,240], "f": 1, "t": 361, "d": [107,130], "a": 1 },
{ "px": [32,64], "src": [272,240], "f": 1, "t": 362, "d": [107,130], "a": 1 },
{ "px": [112,64], "src": [256,240], "f": 0, "t": 361, "d": [107,136], "a": 1 },
{ "px": [128,64], "src": [272,240], "f": 0, "t": 362, "d": [107,136], "a": 1 },
{ "px": [64,96], "src": [256,240], "f": 0, "t": 361, "d": [107,197], "a": 1 },
{ "px": [80,96], "src": [272,240], "f": 0, "t": 362, "d": [107,197], "a": 1 },
{ "px": [144,176], "src": [256,240], "f": 1, "t": 361, "d": [107,360], "a": 1 },
{ "px": [128,176], "src": [272,240], "f": 1, "t": 362, "d": [107,360], "a": 1 },
{ "px": [192,176], "src": [256,240], "f": 0, "t": 361, "d": [107,365], "a": 1 },
{ "px": [208,176], "src": [272,240], "f": 0, "t": 362, "d": [107,365], "a": 1 },
{ "px": [384,176], "src": [256,240], "f": 1, "t": 361, "d": [107,375], "a": 1 },
{ "px": [368,176], "src": [272,240], "f": 1, "t": 362, "d": [107,375], "a": 1 },
{ "px": [384,176], "src": [256,240], "f": 0, "t": 361, "d": [107,377], "a": 1 },
{ "px": [400,176], "src": [272,240], "f": 0, "t": 362, "d": [107,377], "a": 1 },
{ "px": [384,192], "src": [256,240], "f": 1, "t": 361, "d": [107,407], "a": 1 },
{ "px": [368,192], "src": [272,240], "f": 1, "t": 362, "d": [107,407], "a": 1 },
{ "px": [384,192], "src": [256,240], "f": 0, "t": 361, "d": [107,409], "a": 1 },
{ "px": [400,192], "src": [272,240], "f": 0, "t": 362, "d": [107,409], "a": 1 },
{ "px": [384,208], "src": [256,240], "f": 1, "t": 361, "d": [107,439], "a": 1 },
{ "px": [368,208], "src": [272,240], "f": 1, "t": 362, "d": [107,439], "a": 1 },
{ "px": [384,208], "src": [256,240], "f": 0, "t": 361, "d": [107,441], "a": 1 },
{ "px": [400,208], "src": [272,240], "f": 0, "t": 362, "d": [107,441], "a": 1 },
{ "px": [384,224], "src": [256,240], "f": 1, "t": 361, "d": [107,471], "a": 1 },
{ "px": [368,224], "src": [272,240], "f": 1, "t": 362, "d": [107,471], "a": 1 },
{ "px": [384,224], "src": [256,240], "f": 0, "t": 361, "d": [107,473], "a": 1 },
{ "px": [400,224], "src": [272,240], "f": 0, "t": 362, "d": [107,473], "a": 1 },
{ "px": [384,240], "src": [256,240], "f": 1, "t": 361, "d": [107,503], "a": 1 },
{ "px": [368,240], "src": [272,240], "f": 1, "t": 362, "d": [107,503], "a": 1 },
{ "px": [384,240], "src": [256,240], "f": 0, "t": 361, "d": [107,505], "a": 1 },
{ "px": [400,240], "src": [272,240], "f": 0, "t": 362, "d": [107,505], "a": 1 },
{ "px": [80,64], "src": [256,240], "f": 0, "t": 361, "d": [105,134], "a": 1 },
{ "px": [96,64], "src": [272,240], "f": 0, "t": 362, "d": [105,134], "a": 1 },
{ "px": [112,64], "src": [288,240], "f": 0, "t": 363, "d": [105,134], "a": 1 },
{ "px": [80,128], "src": [256,240], "f": 0, "t": 361, "d": [105,262], "a": 1 },
{ "px": [96,128], "src": [272,240], "f": 0, "t": 362, "d": [105,262], "a": 1 },
{ "px": [112,128], "src": [288,240], "f": 0, "t": 363, "d": [105,262], "a": 1 },
{ "px": [128,128], "src": [256,240], "f": 0, "t": 361, "d": [105,265], "a": 1 },
{ "px": [144,128], "src": [272,240], "f": 0, "t": 362, "d": [105,265], "a": 1 },
{ "px": [160,128], "src": [288,240], "f": 0, "t": 363, "d": [105,265], "a": 1 },
{ "px": [112,160], "src": [256,240], "f": 0, "t": 361, "d": [105,328], "a": 1 },
{ "px": [128,160], "src": [272,240], "f": 0, "t": 362, "d": [105,328], "a": 1 },
{ "px": [144,160], "src": [288,240], "f": 0, "t": 363, "d": [105,328], "a": 1 },
{ "px": [64,64], "src": [144,240], "f": 2, "t": 354, "d": [112,69], "a": 1 },
{ "px": [64,48], "src": [144,256], "f": 2, "t": 377, "d": [112,69], "a": 1 },
{ "px": [64,32], "src": [144,272], "f": 2, "t": 400, "d": [112,69], "a": 1 },
{ "px": [80,64], "src": [160,240], "f": 2, "t": 355, "d": [112,69], "a": 1 },
{ "px": [80,48], "src": [160,256], "f": 2, "t": 378, "d": [112,69], "a": 1 },
{ "px": [80,32], "src": [160,272], "f": 2, "t": 401, "d": [112,69], "a": 1 },
{ "px": [96,64], "src": [176,240], "f": 2, "t": 356, "d": [112,69], "a": 1 },
{ "px": [96,48], "src": [176,256], "f": 2, "t": 379, "d": [112,69], "a": 1 },
{ "px": [96,32], "src": [176,272], "f": 2, "t": 402, "d": [112,69], "a": 1 },
{ "px": [144,144], "src": [144,240], "f": 2, "t": 354, "d": [112,234], "a": 1 },
{ "px": [144,128], "src": [144,256], "f": 2, "t": 377, "d": [112,234], "a": 1 },
{ "px": [144,112], "src": [144,272], "f": 2, "t": 400, "d": [112,234], "a": 1 },
{ "px": [160,144], "src": [160,240], "f": 2, "t": 355, "d": [112,234], "a": 1 },
{ "px": [160,128], "src": [160,256], "f": 2, "t": 378, "d": [112,234], "a": 1 },
{ "px": [160,112], "src": [160,272], "f": 2, "t": 401, "d": [112,234], "a": 1 },
{ "px": [176,144], "src": [176,240], "f": 2, "t": 356, "d": [112,234], "a": 1 },
{ "px": [176,128], "src": [176,256], "f": 2, "t": 379, "d": [112,234], "a": 1 },
{ "px": [176,112], "src": [176,272], "f": 2, "t": 402, "d": [112,234], "a": 1 },
{ "px": [304,144], "src": [144,240], "f": 2, "t": 354, "d": [112,244], "a": 1 },
{ "px": [304,128], "src": [144,256], "f": 2, "t": 377, "d": [112,244], "a": 1 },
{ "px": [304,112], "src": [144,272], "f": 2, "t": 400, "d": [112,244], "a": 1 },
{ "px": [320,144], "src": [160,240], "f": 2, "t": 355, "d": [112,244], "a": 1 },
{ "px": [320,128], "src": [160,256], "f": 2, "t": 378, "d": [112,244], "a": 1 },
{ "px": [320,112], "src": [160,272], "f": 2, "t": 401, "d": [112,244], "a": 1 },
{ "px": [336,144], "src": [176,240], "f": 2, "t": 356, "d": [112,244], "a": 1 },
{ "px": [336,128], "src": [176,256], "f": 2, "t": 379, "d": [112,244], "a": 1 },
{ "px": [336,112], "src": [176,272], "f": 2, "t": 402, "d": [112,244], "a": 1 },
{ "px": [464,144], "src": [144,240], "f": 2, "t": 354, "d": [112,254], "a": 1 },
{ "px": [464,128], "src": [144,256], "f": 2, "t": 377, "d": [112,254], "a": 1 },
{ "px": [464,112], "src": [144,272], "f": 2, "t": 400, "d": [112,254], "a": 1 },
{ "px": [480,144], "src": [160,240], "f": 2, "t": 355, "d": [112,254], "a": 1 },
{ "px": [480,128], "src": [160,256], "f": 2, "t": 378, "d": [112,254], "a": 1 },
{ "px": [480,112], "src": [160,272], "f": 2, "t": 401, "d": [112,254], "a": 1 },
{ "px": [496,144], "src": [176,240], "f": 2, "t": 356, "d": [112,254], "a": 1 },
{ "px": [496,128], "src": [176,256], "f": 2, "t": 379, "d": [112,254], "a": 1 },
{ "px": [496,112], "src": [176,272], "f": 2, "t": 402, "d": [112,254], "a": 1 },
{ "px": [64,128], "src": [144,240], "f": 0, "t": 354, "d": [112,325], "a": 1 },
{ "px": [64,144], "src": [144,256], "f": 0, "t": 377, "d": [112,325], "a": 1 },
{ "px": [64,160], "src": [144,272], "f": 0, "t": 400, "d": [112,325], "a": 1 },
{ "px": [80,128], "src": [160,240], "f": 0, "t": 355, "d": [112,325], "a": 1 },
{ "px": [80,144], "src": [160,256], "f": 0, "t": 378, "d": [112,325], "a": 1 },
{ "px": [80,160], "src": [160,272], "f": 0, "t": 401, "d": [112,325], "a": 1 },
{ "px": [96,128], "src": [176,240], "f": 0, "t": 356, "d": [112,325], "a": 1 },
{ "px": [96,144], "src": [176,256], "f": 0, "t": 379, "d": [112,325], "a": 1 },
{ "px": [96,160], "src": [176,272], "f": 0, "t": 402, "d": [112,325], "a": 1 },
{ "px": [224,128], "src": [144,240], "f": 0, "t": 354, "d": [112,335], "a": 1 },
{ "px": [224,144], "src": [144,256], "f": 0, "t": 377, "d": [112,335], "a": 1 },
{ "px": [224,160], "src": [144,272], "f": 0, "t": 400, "d": [112,335], "a": 1 },
{ "px": [240,128], "src": [160,240], "f": 0, "t": 355, "d": [112,335], "a": 1 },
{ "px": [240,144], "src": [160,256], "f": 0, "t": 378, "d": [112,335], "a": 1 },
{ "px": [240,160], "src": [160,272], "f": 0, "t": 401, "d": [112,335], "a": 1 },
{ "px": [256,128], "src": [176,240], "f": 0, "t": 356, "d": [112,335], "a": 1 },
{ "px": [256,144], "src": [176,256], "f": 0, "t": 379, "d": [112,335], "a": 1 },
{ "px": [256,160], "src": [176,272], "f": 0, "t": 402, "d": [112,335], "a": 1 },
{ "px": [304,128], "src": [144,240], "f": 0, "t": 354, "d": [112,340], "a": 1 },
{ "px": [304,144], "src": [144,256], "f": 0, "t": 377, "d": [112,340], "a": 1 },
{ "px": [304,160], "src": [144,272], "f": 0, "t": 400, "d": [112,340], "a": 1 },
{ "px": [320,128], "src": [160,240], "f": 0, "t": 355, "d": [112,340], "a": 1 },
{ "px": [320,144], "src": [160,256], "f": 0, "t": 378, "d": [112,340], "a": 1 },
{ "px": [320,160], "src": [160,272], "f": 0, "t": 401, "d": [112,340], "a": 1 },
{ "px": [336,128], "src": [176,240], "f": 0, "t": 356, "d": [112,340], "a": 1 },
{ "px": [336,144], "src": [176,256], "f": 0, "t": 379, "d": [112,340], "a": 1 },
{ "px": [336,160], "src": [176,272], "f": 0, "t": 402, "d": [112,340], "a": 1 },
{ "px": [464,128], "src": [144,240], "f": 0, "t": 354, "d": [112,350], "a": 1 },
{ "px": [464,144], "src": [144,256], "f": 0, "t": 377, "d": [112,350], "a": 1 },
{ "px": [464,160], "src": [144,272], "f": 0, "t": 400, "d": [112,350], "a": 1 },
{ "px": [480,128], "src": [160,240], "f": 0, "t": 355, "d": [112,350], "a": 1 },
{ "px": [480,144], "src": [160,256], "f": 0, "t": 378, "d": [112,350], "a": 1 },
{ "px": [480,160], "src": [160,272], "f": 0, "t": 401, "d": [112,350], "a": 1 },
{ "px": [496,128], "src": [176,240], "f": 0, "t": 356, "d": [112,350], "a": 1 },
{ "px": [496,144], "src": [176,256], "f": 0, "t": 379, "d": [112,350], "a": 1 },
{ "px": [496,160], "src": [176,272], "f": 0, "t": 402, "d": [112,350], "a": 1 },
{ "px": [32,48], "src": [192,304], "f": 2, "t": 449, "d": [113,66], "a": 1 },
{ "px": [32,32], "src": [192,320], "f": 2, "t": 472, "d": [113,66], "a": 1 },
{ "px": [48,48], "src": [208,304], "f": 2, "t": 450, "d": [113,66], "a": 1 },
{ "px": [48,32], "src": [208,320], "f": 2, "t": 473, "d": [113,66], "a": 1 },
{ "px": [64,48], "src": [224,304], "f": 2, "t": 451, "d": [113,66], "a": 1 },
{ "px": [64,32], "src": [224,320], "f": 2, "t": 474, "d": [113,66], "a": 1 },
{ "px": [32,64], "src": [192,304], "f": 0, "t": 449, "d": [113,162], "a": 1 },
{ "px": [32,80], "src": [192,320], "f": 0, "t": 472, "d": [113,162], "a": 1 },
{ "px": [48,64], "src": [208,304], "f": 0, "t": 450, "d": [113,162], "a": 1 },
{ "px": [48,80], "src": [208,320], "f": 0, "t": 473, "d": [113,162], "a": 1 },
{ "px": [64,64], "src": [224,304], "f": 0, "t": 451, "d": [113,162], "a": 1 },
{ "px": [64,80], "src": [224,320], "f": 0, "t": 474, "d": [113,162], "a": 1 },
{ "px": [128,64], "src": [192,304], "f": 1, "t": 449, "d": [113,168], "a": 1 },
{ "px": [128,80], "src": [192,320], "f": 1, "t": 472, "d": [113,168], "a": 1 },
{ "px": [112,64], "src": [208,304], "f": 1, "t": 450, "d": [113,168], "a": 1 },
{ "px": [112,80], "src": [208,320], "f": 1, "t": 473, "d": [113,168], "a": 1 },
{ "px": [96,64], "src": [224,304], "f": 1, "t": 451, "d": [113,168], "a": 1 },
{ "px": [96,80], "src": [224,320], "f": 1, "t": 474, "d": [113,168], "a": 1 },
{ "px": [128,32], "src": [128,224], "f": 0, "t": 330, "d": [114,72], "a": 1 },
{ "px": [0,112], "src": [128,224], "f": 0, "t": 330, "d": [114,224], "a": 1 },
{ "px": [128,112], "src": [128,208], "f": 0, "t": 307, "d": [115,232], "a": 1 },
{ "px": [128,128], "src": [128,224], "f": 0, "t": 330, "d": [115,232], "a": 1 },
{ "px": [288,112], "src": [128,208], "f": 0, "t": 307, "d": [115,242], "a": 1 },
{ "px": [288,128], "src": [128,224], "f": 0, "t": 330, "d": [115,242], "a": 1 },
{ "px": [416,112], "src": [128,208], "f": 0, "t": 307, "d": [115,250], "a": 1 },
{ "px": [416,128], "src": [128,224], "f": 0, "t": 330, "d": [115,250], "a": 1 }
],
"seed": 3303508,
"overrideTilesetUid": null,
"gridTiles": [],
"entityInstances": []
}
],
"__neighbours": [
{ "levelIid": "a36f8be0-66b0-11ec-9cd7-a9c628ac47cf", "dir": ">" },
{ "levelIid": "a36811d0-66b0-11ec-9cd7-4367627fb745", "dir": "s" },
{ "levelIid": "a36a34b0-66b0-11ec-9cd7-09ebc042e238", "dir": "w" },
{ "levelIid": "a3727210-66b0-11ec-9cd7-aba0184f5034", "dir": "e" },
{ "levelIid": "07caf540-66b0-11ec-a595-a55a7e13679d", "dir": "se" }
]
},
{
"identifier": "Cross_roads",
"iid": "a36811d0-66b0-11ec-9cd7-4367627fb745",
"uid": 4,
"worldX": 0,
"worldY": 256,
"worldDepth": 0,
"pxWid": 512,
"pxHei": 512,
"__bgColor": "#37494E",
"bgColor": null,
"useAutoIdentifier": false,
"bgRelPath": null,
"bgPos": null,
"bgPivotX": 0.5,
"bgPivotY": 0.5,
"__smartColor": "#919B9E",
"__bgPos": null,
"externalRelPath": null,
"fieldInstances": [{ "__identifier": "roomType", "__type": "LocalEnum.RoomType", "__value": null, "__tile": null, "defUid": 99, "realEditorValues": [] }],
"layerInstances": [
{
"__identifier": "Animation",
"__type": "Tiles",
"__cWid": 32,
"__cHei": 32,
"__gridSize": 16,
"__opacity": 1,
"__pxTotalOffsetX": 0,
"__pxTotalOffsetY": 0,
"__tilesetDefUid": 6,
"__tilesetRelPath": "SunnyLand_by_Ansimuz-extended.png",
"iid": "807a4910-b0a0-11ee-a360-61c89584baa9",
"levelId": 4,
"layerDefUid": 148,
"pxOffsetX": 0,
"pxOffsetY": 0,
"visible": true,
"optionalRules": [],
"intGridCsv": [],
"autoLayerTiles": [],
"seed": 4732824,
"overrideTilesetUid": null,
"gridTiles": [],
"entityInstances": []
},
{
"__identifier": "PhysicsColliders",
"__type": "IntGrid",
"__cWid": 32,
"__cHei": 32,
"__gridSize": 16,
"__opacity": 1,
"__pxTotalOffsetX": 0,
"__pxTotalOffsetY": 0,
"__tilesetDefUid": null,
"__tilesetRelPath": null,
"iid": "ed1d46d0-8990-11ee-a0db-19815e7e3098",
"levelId": 4,
"layerDefUid": 147,
"pxOffsetX": 0,
"pxOffsetY": 0,
"visible": true,
"optionalRules": [],
"intGridCsv": [
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0
],
"autoLayerTiles": [],
"seed": 6382025,
"overrideTilesetUid": null,
"gridTiles": [],
"entityInstances": []
},
{
"__identifier": "Entities",
"__type": "Entities",
"__cWid": 32,
"__cHei": 32,
"__gridSize": 16,
"__opacity": 1,
"__pxTotalOffsetX": 0,
"__pxTotalOffsetY": 0,
"__tilesetDefUid": null,
"__tilesetRelPath": null,
"iid": "a36811d5-66b0-11ec-9cd7-5711cb441e9c",
"levelId": 4,
"layerDefUid": 77,
"pxOffsetX": 0,
"pxOffsetY": 0,
"visible": true,
"optionalRules": [],
"intGridCsv": [],
"autoLayerTiles": [],
"seed": 447792,
"overrideTilesetUid": null,
"gridTiles": [],
"entityInstances": [
{
"__identifier": "Ladder",
"__grid": [28,16],
"__pivot": [0,0],
"__tags": ["region"],
"__tile": { "tilesetUid": 146, "x": 400, "y": 32, "w": 16, "h": 16 },
"__smartColor": "#94D9B3",
"iid": "60d34a20-66b0-11ec-9ccd-d9d0dea2f003",
"width": 16,
"height": 160,
"defUid": 134,
"px": [448,256],
"fieldInstances": [],
"__worldX": 448,
"__worldY": 512
}
]
},
{
"__identifier": "Wall_shadows",
"__type": "AutoLayer",
"__cWid": 32,
"__cHei": 32,
"__gridSize": 16,
"__opacity": 0.53,
"__pxTotalOffsetX": 0,
"__pxTotalOffsetY": 0,
"__tilesetDefUid": 6,
"__tilesetRelPath": "SunnyLand_by_Ansimuz-extended.png",
"iid": "a36811d6-66b0-11ec-9cd7-4f58f79fa162",
"levelId": 4,
"layerDefUid": 24,
"pxOffsetX": 0,
"pxOffsetY": 0,
"visible": true,
"optionalRules": [],
"intGridCsv": [],
"autoLayerTiles": [
{ "px": [368,16], "src": [320,128], "f": 0, "t": 204, "d": [26,55], "a": 1 },
{ "px": [400,16], "src": [320,128], "f": 1, "t": 204, "d": [26,57], "a": 1 },
{ "px": [368,32], "src": [320,128], "f": 0, "t": 204, "d": [26,87], "a": 1 },
{ "px": [400,32], "src": [320,128], "f": 1, "t": 204, "d": [26,89], "a": 1 },
{ "px": [368,48], "src": [320,128], "f": 0, "t": 204, "d": [26,119], "a": 1 },
{ "px": [400,48], "src": [320,128], "f": 1, "t": 204, "d": [26,121], "a": 1 },
{ "px": [368,64], "src": [320,128], "f": 0, "t": 204, "d": [26,151], "a": 1 },
{ "px": [400,64], "src": [320,128], "f": 1, "t": 204, "d": [26,153], "a": 1 },
{ "px": [368,80], "src": [320,128], "f": 0, "t": 204, "d": [26,183], "a": 1 },
{ "px": [400,80], "src": [320,128], "f": 1, "t": 204, "d": [26,185], "a": 1 },
{ "px": [368,96], "src": [320,128], "f": 0, "t": 204, "d": [26,215], "a": 1 },
{ "px": [400,96], "src": [320,128], "f": 1, "t": 204, "d": [26,217], "a": 1 },
{ "px": [320,112], "src": [320,128], "f": 1, "t": 204, "d": [26,244], "a": 1 },
{ "px": [368,112], "src": [320,128], "f": 0, "t": 204, "d": [26,247], "a": 1 },
{ "px": [400,112], "src": [320,128], "f": 1, "t": 204, "d": [26,249], "a": 1 },
{ "px": [320,128], "src": [320,128], "f": 1, "t": 204, "d": [26,276], "a": 1 },
{ "px": [368,128], "src": [320,128], "f": 0, "t": 204, "d": [26,279], "a": 1 },
{ "px": [400,128], "src": [320,128], "f": 1, "t": 204, "d": [26,281], "a": 1 },
{ "px": [288,176], "src": [320,128], "f": 0, "t": 204, "d": [26,370], "a": 1 },
{ "px": [288,192], "src": [320,128], "f": 0, "t": 204, "d": [26,402], "a": 1 },
{ "px": [464,208], "src": [320,128], "f": 1, "t": 204, "d": [26,445], "a": 1 },
{ "px": [320,224], "src": [320,128], "f": 0, "t": 204, "d": [26,468], "a": 1 },
{ "px": [464,224], "src": [320,128], "f": 1, "t": 204, "d": [26,477], "a": 1 },
{ "px": [320,240], "src": [320,128], "f": 0, "t": 204, "d": [26,500], "a": 1 },
{ "px": [464,240], "src": [320,128], "f": 1, "t": 204, "d": [26,509], "a": 1 },
{ "px": [448,272], "src": [320,128], "f": 0, "t": 204, "d": [26,572], "a": 1 },
{ "px": [464,272], "src": [320,128], "f": 1, "t": 204, "d": [26,573], "a": 1 },
{ "px": [448,288], "src": [320,128], "f": 0, "t": 204, "d": [26,604], "a": 1 },
{ "px": [464,288], "src": [320,128], "f": 1, "t": 204, "d": [26,605], "a": 1 },
{ "px": [448,304], "src": [320,128], "f": 0, "t": 204, "d": [26,636], "a": 1 },
{ "px": [464,304], "src": [320,128], "f": 1, "t": 204, "d": [26,637], "a": 1 },
{ "px": [448,320], "src": [320,128], "f": 0, "t": 204, "d": [26,668], "a": 1 },
{ "px": [464,320], "src": [320,128], "f": 1, "t": 204, "d": [26,669], "a": 1 },
{ "px": [448,336], "src": [320,128], "f": 0, "t": 204, "d": [26,700], "a": 1 },
{ "px": [464,336], "src": [320,128], "f": 1, "t": 204, "d": [26,701], "a": 1 },
{ "px": [448,352], "src": [320,128], "f": 0, "t": 204, "d": [26,732], "a": 1 },
{ "px": [464,352], "src": [320,128], "f": 1, "t": 204, "d": [26,733], "a": 1 },
{ "px": [448,368], "src": [320,128], "f": 0, "t": 204, "d": [26,764], "a": 1 },
{ "px": [448,384], "src": [320,128], "f": 0, "t": 204, "d": [26,796], "a": 1 },
{ "px": [448,400], "src": [320,128], "f": 0, "t": 204, "d": [26,828], "a": 1 },
{ "px": [288,160], "src": [320,96], "f": 0, "t": 158, "d": [138,338], "a": 1 },
{ "px": [464,192], "src": [320,96], "f": 1, "t": 158, "d": [138,413], "a": 1 },
{ "px": [320,208], "src": [320,96], "f": 0, "t": 158, "d": [138,436], "a": 1 },
{ "px": [0,112], "src": [336,112], "f": 0, "t": 182, "d": [27,224], "a": 1 },
{ "px": [16,112], "src": [336,112], "f": 0, "t": 182, "d": [27,225], "a": 1 },
{ "px": [32,112], "src": [336,112], "f": 0, "t": 182, "d": [27,226], "a": 1 },
{ "px": [48,112], "src": [336,112], "f": 0, "t": 182, "d": [27,227], "a": 1 },
{ "px": [64,112], "src": [336,112], "f": 0, "t": 182, "d": [27,228], "a": 1 },
{ "px": [80,112], "src": [336,112], "f": 0, "t": 182, "d": [27,229], "a": 1 },
{ "px": [96,112], "src": [336,112], "f": 0, "t": 182, "d": [27,230], "a": 1 },
{ "px": [112,112], "src": [336,112], "f": 0, "t": 182, "d": [27,231], "a": 1 },
{ "px": [128,112], "src": [336,112], "f": 0, "t": 182, "d": [27,232], "a": 1 },
{ "px": [144,112], "src": [336,112], "f": 0, "t": 182, "d": [27,233], "a": 1 },
{ "px": [160,112], "src": [336,112], "f": 0, "t": 182, "d": [27,234], "a": 1 },
{ "px": [176,112], "src": [336,112], "f": 0, "t": 182, "d": [27,235], "a": 1 },
{ "px": [192,112], "src": [336,112], "f": 0, "t": 182, "d": [27,236], "a": 1 },
{ "px": [208,112], "src": [336,112], "f": 0, "t": 182, "d": [27,237], "a": 1 },
{ "px": [224,112], "src": [336,112], "f": 0, "t": 182, "d": [27,238], "a": 1 },
{ "px": [240,112], "src": [336,112], "f": 0, "t": 182, "d": [27,239], "a": 1 },
{ "px": [256,112], "src": [336,112], "f": 0, "t": 182, "d": [27,240], "a": 1 },
{ "px": [272,112], "src": [336,112], "f": 0, "t": 182, "d": [27,241], "a": 1 },
{ "px": [288,112], "src": [336,112], "f": 0, "t": 182, "d": [27,242], "a": 1 },
{ "px": [304,112], "src": [336,112], "f": 0, "t": 182, "d": [27,243], "a": 1 },
{ "px": [320,112], "src": [336,112], "f": 0, "t": 182, "d": [27,244], "a": 1 },
{ "px": [336,144], "src": [336,112], "f": 0, "t": 182, "d": [27,309], "a": 1 },
{ "px": [352,144], "src": [336,112], "f": 0, "t": 182, "d": [27,310], "a": 1 },
{ "px": [416,144], "src": [336,112], "f": 0, "t": 182, "d": [27,314], "a": 1 },
{ "px": [432,144], "src": [336,112], "f": 0, "t": 182, "d": [27,315], "a": 1 },
{ "px": [448,144], "src": [336,112], "f": 0, "t": 182, "d": [27,316], "a": 1 },
{ "px": [464,144], "src": [336,112], "f": 0, "t": 182, "d": [27,317], "a": 1 },
{ "px": [480,144], "src": [336,112], "f": 0, "t": 182, "d": [27,318], "a": 1 },
{ "px": [496,144], "src": [336,112], "f": 0, "t": 182, "d": [27,319], "a": 1 },
{ "px": [448,272], "src": [336,112], "f": 0, "t": 182, "d": [27,572], "a": 1 },
{ "px": [464,272], "src": [336,112], "f": 0, "t": 182, "d": [27,573], "a": 1 },
{ "px": [480,368], "src": [336,112], "f": 0, "t": 182, "d": [27,766], "a": 1 },
{ "px": [496,368], "src": [336,112], "f": 0, "t": 182, "d": [27,767], "a": 1 },
{ "px": [320,144], "src": [320,112], "f": 1, "t": 181, "d": [137,308], "a": 1 },
{ "px": [368,144], "src": [320,112], "f": 0, "t": 181, "d": [137,311], "a": 1 },
{ "px": [400,144], "src": [320,112], "f": 1, "t": 181, "d": [137,313], "a": 1 },
{ "px": [464,368], "src": [320,112], "f": 1, "t": 181, "d": [137,765], "a": 1 }
],
"seed": 5084082,
"overrideTilesetUid": null,
"gridTiles": [],
"entityInstances": []
},
{
"__identifier": "Collisions",
"__type": "IntGrid",
"__cWid": 32,
"__cHei": 32,
"__gridSize": 16,
"__opacity": 1,
"__pxTotalOffsetX": 0,
"__pxTotalOffsetY": 0,
"__tilesetDefUid": 6,
"__tilesetRelPath": "SunnyLand_by_Ansimuz-extended.png",
"iid": "a36811d7-66b0-11ec-9cd7-c3d11c903515",
"levelId": 4,
"layerDefUid": 1,
"pxOffsetX": 0,
"pxOffsetY": 0,
"visible": true,
"optionalRules": [],
"intGridCsv": [
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
1,1,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,
0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
1,1,1,1,1,1,1,1,1
],
"autoLayerTiles": [
{ "px": [336,0], "src": [32,32], "f": 0, "t": 48, "d": [8,21], "a": 1 },
{ "px": [320,16], "src": [32,32], "f": 0, "t": 48, "d": [8,52], "a": 1 },
{ "px": [448,16], "src": [32,32], "f": 0, "t": 48, "d": [8,60], "a": 1 },
{ "px": [336,32], "src": [32,32], "f": 0, "t": 48, "d": [8,85], "a": 1 },
{ "px": [432,32], "src": [32,32], "f": 0, "t": 48, "d": [8,91], "a": 1 },
{ "px": [320,48], "src": [32,32], "f": 0, "t": 48, "d": [8,116], "a": 1 },
{ "px": [448,48], "src": [32,32], "f": 0, "t": 48, "d": [8,124], "a": 1 },
{ "px": [48,64], "src": [32,32], "f": 0, "t": 48, "d": [8,131], "a": 1 },
{ "px": [112,64], "src": [32,32], "f": 0, "t": 48, "d": [8,135], "a": 1 },
{ "px": [144,64], "src": [32,32], "f": 0, "t": 48, "d": [8,137], "a": 1 },
{ "px": [176,64], "src": [32,32], "f": 0, "t": 48, "d": [8,139], "a": 1 },
{ "px": [208,64], "src": [32,32], "f": 0, "t": 48, "d": [8,141], "a": 1 },
{ "px": [240,64], "src": [32,32], "f": 0, "t": 48, "d": [8,143], "a": 1 },
{ "px": [272,64], "src": [32,32], "f": 0, "t": 48, "d": [8,145], "a": 1 },
{ "px": [304,64], "src": [32,32], "f": 0, "t": 48, "d": [8,147], "a": 1 },
{ "px": [336,64], "src": [32,32], "f": 0, "t": 48, "d": [8,149], "a": 1 },
{ "px": [432,64], "src": [32,32], "f": 0, "t": 48, "d": [8,155], "a": 1 },
{ "px": [32,80], "src": [32,32], "f": 0, "t": 48, "d": [8,162], "a": 1 },
{ "px": [96,80], "src": [32,32], "f": 0, "t": 48, "d": [8,166], "a": 1 },
{ "px": [128,80], "src": [32,32], "f": 0, "t": 48, "d": [8,168], "a": 1 },
{ "px": [160,80], "src": [32,32], "f": 0, "t": 48, "d": [8,170], "a": 1 },
{ "px": [192,80], "src": [32,32], "f": 0, "t": 48, "d": [8,172], "a": 1 },
{ "px": [288,80], "src": [32,32], "f": 0, "t": 48, "d": [8,178], "a": 1 },
{ "px": [432,96], "src": [32,32], "f": 0, "t": 48, "d": [8,219], "a": 1 },
{ "px": [496,96], "src": [32,32], "f": 0, "t": 48, "d": [8,223], "a": 1 },
{ "px": [0,176], "src": [32,32], "f": 0, "t": 48, "d": [8,352], "a": 1 },
{ "px": [32,176], "src": [32,32], "f": 0, "t": 48, "d": [8,354], "a": 1 },
{ "px": [64,176], "src": [32,32], "f": 0, "t": 48, "d": [8,356], "a": 1 },
{ "px": [96,176], "src": [32,32], "f": 0, "t": 48, "d": [8,358], "a": 1 },
{ "px": [160,176], "src": [32,32], "f": 0, "t": 48, "d": [8,362], "a": 1 },
{ "px": [192,176], "src": [32,32], "f": 0, "t": 48, "d": [8,364], "a": 1 },
{ "px": [256,176], "src": [32,32], "f": 0, "t": 48, "d": [8,368], "a": 1 },
{ "px": [16,192], "src": [32,32], "f": 0, "t": 48, "d": [8,385], "a": 1 },
{ "px": [48,192], "src": [32,32], "f": 0, "t": 48, "d": [8,387], "a": 1 },
{ "px": [80,192], "src": [32,32], "f": 0, "t": 48, "d": [8,389], "a": 1 },
{ "px": [112,192], "src": [32,32], "f": 0, "t": 48, "d": [8,391], "a": 1 },
{ "px": [144,192], "src": [32,32], "f": 0, "t": 48, "d": [8,393], "a": 1 },
{ "px": [176,192], "src": [32,32], "f": 0, "t": 48, "d": [8,395], "a": 1 },
{ "px": [240,192], "src": [32,32], "f": 0, "t": 48, "d": [8,399], "a": 1 },
{ "px": [272,224], "src": [32,32], "f": 0, "t": 48, "d": [8,465], "a": 1 },
{ "px": [496,224], "src": [32,32], "f": 0, "t": 48, "d": [8,479], "a": 1 },
{ "px": [256,240], "src": [32,32], "f": 0, "t": 48, "d": [8,496], "a": 1 },
{ "px": [272,256], "src": [32,32], "f": 0, "t": 48, "d": [8,529], "a": 1 },
{ "px": [384,272], "src": [32,32], "f": 0, "t": 48, "d": [8,568], "a": 1 },
{ "px": [416,272], "src": [32,32], "f": 0, "t": 48, "d": [8,570], "a": 1 },
{ "px": [272,288], "src": [32,32], "f": 0, "t": 48, "d": [8,593], "a": 1 },
{ "px": [304,288], "src": [32,32], "f": 0, "t": 48, "d": [8,595], "a": 1 },
{ "px": [336,288], "src": [32,32], "f": 0, "t": 48, "d": [8,597], "a": 1 },
{ "px": [368,288], "src": [32,32], "f": 0, "t": 48, "d": [8,599], "a": 1 },
{ "px": [496,288], "src": [32,32], "f": 0, "t": 48, "d": [8,607], "a": 1 },
{ "px": [416,304], "src": [32,32], "f": 0, "t": 48, "d": [8,634], "a": 1 },
{ "px": [416,336], "src": [32,32], "f": 0, "t": 48, "d": [8,698], "a": 1 },
{ "px": [400,384], "src": [32,32], "f": 0, "t": 48, "d": [8,793], "a": 1 },
{ "px": [400,416], "src": [32,32], "f": 0, "t": 48, "d": [8,857], "a": 1 },
{ "px": [400,448], "src": [32,32], "f": 0, "t": 48, "d": [8,921], "a": 1 },
{ "px": [432,448], "src": [32,32], "f": 0, "t": 48, "d": [8,923], "a": 1 },
{ "px": [464,448], "src": [32,32], "f": 0, "t": 48, "d": [8,925], "a": 1 },
{ "px": [432,0], "src": [64,96], "f": 0, "t": 142, "d": [83,27], "a": 1 },
{ "px": [16,64], "src": [64,96], "f": 0, "t": 142, "d": [83,129], "a": 1 },
{ "px": [80,64], "src": [64,96], "f": 0, "t": 142, "d": [83,133], "a": 1 },
{ "px": [0,80], "src": [64,96], "f": 0, "t": 142, "d": [83,160], "a": 1 },
{ "px": [64,80], "src": [96,96], "f": 0, "t": 144, "d": [83,164], "a": 1 },
{ "px": [224,80], "src": [64,96], "f": 0, "t": 142, "d": [83,174], "a": 1 },
{ "px": [256,80], "src": [64,96], "f": 0, "t": 142, "d": [83,176], "a": 1 },
{ "px": [320,80], "src": [64,96], "f": 0, "t": 142, "d": [83,180], "a": 1 },
{ "px": [448,80], "src": [64,96], "f": 0, "t": 142, "d": [83,188], "a": 1 },
{ "px": [464,96], "src": [64,96], "f": 0, "t": 142, "d": [83,221], "a": 1 },
{ "px": [448,112], "src": [64,96], "f": 0, "t": 142, "d": [83,252], "a": 1 },
{ "px": [480,112], "src": [96,96], "f": 0, "t": 144, "d": [83,254], "a": 1 },
{ "px": [128,176], "src": [64,96], "f": 0, "t": 142, "d": [83,360], "a": 1 },
{ "px": [224,176], "src": [96,96], "f": 0, "t": 144, "d": [83,366], "a": 1 },
{ "px": [208,192], "src": [96,96], "f": 0, "t": 144, "d": [83,397], "a": 1 },
{ "px": [256,208], "src": [64,96], "f": 0, "t": 142, "d": [83,432], "a": 1 },
{ "px": [240,224], "src": [64,96], "f": 0, "t": 142, "d": [83,463], "a": 1 },
{ "px": [288,240], "src": [64,96], "f": 0, "t": 142, "d": [83,498], "a": 1 },
{ "px": [496,256], "src": [64,96], "f": 0, "t": 142, "d": [83,543], "a": 1 },
{ "px": [288,272], "src": [96,96], "f": 0, "t": 144, "d": [83,562], "a": 1 },
{ "px": [320,272], "src": [64,96], "f": 0, "t": 142, "d": [83,564], "a": 1 },
{ "px": [352,272], "src": [96,96], "f": 0, "t": 144, "d": [83,566], "a": 1 },
{ "px": [400,288], "src": [96,96], "f": 0, "t": 144, "d": [83,601], "a": 1 },
{ "px": [400,320], "src": [64,96], "f": 0, "t": 142, "d": [83,665], "a": 1 },
{ "px": [496,320], "src": [96,96], "f": 0, "t": 144, "d": [83,671], "a": 1 },
{ "px": [400,352], "src": [96,96], "f": 0, "t": 144, "d": [83,729], "a": 1 },
{ "px": [416,368], "src": [96,96], "f": 0, "t": 144, "d": [83,762], "a": 1 },
{ "px": [416,400], "src": [64,96], "f": 0, "t": 142, "d": [83,826], "a": 1 },
{ "px": [416,432], "src": [64,96], "f": 0, "t": 142, "d": [83,890], "a": 1 },
{ "px": [448,432], "src": [96,96], "f": 0, "t": 144, "d": [83,892], "a": 1 },
{ "px": [480,432], "src": [96,96], "f": 0, "t": 144, "d": [83,894], "a": 1 },
{ "px": [496,448], "src": [96,96], "f": 0, "t": 144, "d": [83,927], "a": 1 },
{ "px": [320,0], "src": [192,16], "f": 0, "t": 35, "d": [101,20], "a": 1 },
{ "px": [448,0], "src": [96,0], "f": 0, "t": 6, "d": [101,28], "a": 1 },
{ "px": [336,16], "src": [192,16], "f": 0, "t": 35, "d": [101,53], "a": 1 },
{ "px": [432,16], "src": [224,96], "f": 0, "t": 152, "d": [101,59], "a": 1 },
{ "px": [320,32], "src": [224,96], "f": 0, "t": 152, "d": [101,84], "a": 1 },
{ "px": [448,32], "src": [96,0], "f": 0, "t": 6, "d": [101,92], "a": 1 },
{ "px": [336,48], "src": [96,0], "f": 0, "t": 6, "d": [101,117], "a": 1 },
{ "px": [432,48], "src": [224,96], "f": 0, "t": 152, "d": [101,123], "a": 1 },
{ "px": [0,64], "src": [96,0], "f": 0, "t": 6, "d": [101,128], "a": 1 },
{ "px": [32,64], "src": [192,16], "f": 0, "t": 35, "d": [101,130], "a": 1 },
{ "px": [64,64], "src": [224,96], "f": 0, "t": 152, "d": [101,132], "a": 1 },
{ "px": [96,64], "src": [96,0], "f": 0, "t": 6, "d": [101,134], "a": 1 },
{ "px": [128,64], "src": [224,96], "f": 0, "t": 152, "d": [101,136], "a": 1 },
{ "px": [160,64], "src": [224,96], "f": 0, "t": 152, "d": [101,138], "a": 1 },
{ "px": [192,64], "src": [192,16], "f": 0, "t": 35, "d": [101,140], "a": 1 },
{ "px": [224,64], "src": [96,0], "f": 0, "t": 6, "d": [101,142], "a": 1 },
{ "px": [256,64], "src": [224,96], "f": 0, "t": 152, "d": [101,144], "a": 1 },
{ "px": [288,64], "src": [96,0], "f": 0, "t": 6, "d": [101,146], "a": 1 },
{ "px": [320,64], "src": [192,16], "f": 0, "t": 35, "d": [101,148], "a": 1 },
{ "px": [448,64], "src": [224,96], "f": 0, "t": 152, "d": [101,156], "a": 1 },
{ "px": [16,80], "src": [224,96], "f": 0, "t": 152, "d": [101,161], "a": 1 },
{ "px": [48,80], "src": [224,96], "f": 0, "t": 152, "d": [101,163], "a": 1 },
{ "px": [80,80], "src": [192,16], "f": 0, "t": 35, "d": [101,165], "a": 1 },
{ "px": [112,80], "src": [224,96], "f": 0, "t": 152, "d": [101,167], "a": 1 },
{ "px": [144,80], "src": [224,96], "f": 0, "t": 152, "d": [101,169], "a": 1 },
{ "px": [176,80], "src": [224,96], "f": 0, "t": 152, "d": [101,171], "a": 1 },
{ "px": [208,80], "src": [96,0], "f": 0, "t": 6, "d": [101,173], "a": 1 },
{ "px": [240,80], "src": [96,0], "f": 0, "t": 6, "d": [101,175], "a": 1 },
{ "px": [272,80], "src": [96,0], "f": 0, "t": 6, "d": [101,177], "a": 1 },
{ "px": [304,80], "src": [224,96], "f": 0, "t": 152, "d": [101,179], "a": 1 },
{ "px": [336,80], "src": [192,16], "f": 0, "t": 35, "d": [101,181], "a": 1 },
{ "px": [432,80], "src": [224,96], "f": 0, "t": 152, "d": [101,187], "a": 1 },
{ "px": [448,96], "src": [224,96], "f": 0, "t": 152, "d": [101,220], "a": 1 },
{ "px": [480,96], "src": [96,0], "f": 0, "t": 6, "d": [101,222], "a": 1 },
{ "px": [432,112], "src": [192,16], "f": 0, "t": 35, "d": [101,251], "a": 1 },
{ "px": [464,112], "src": [224,96], "f": 0, "t": 152, "d": [101,253], "a": 1 },
{ "px": [496,112], "src": [224,96], "f": 0, "t": 152, "d": [101,255], "a": 1 },
{ "px": [16,176], "src": [96,0], "f": 0, "t": 6, "d": [101,353], "a": 1 },
{ "px": [48,176], "src": [96,0], "f": 0, "t": 6, "d": [101,355], "a": 1 },
{ "px": [80,176], "src": [224,96], "f": 0, "t": 152, "d": [101,357], "a": 1 },
{ "px": [112,176], "src": [96,0], "f": 0, "t": 6, "d": [101,359], "a": 1 },
{ "px": [144,176], "src": [96,0], "f": 0, "t": 6, "d": [101,361], "a": 1 },
{ "px": [176,176], "src": [192,16], "f": 0, "t": 35, "d": [101,363], "a": 1 },
{ "px": [208,176], "src": [224,96], "f": 0, "t": 152, "d": [101,365], "a": 1 },
{ "px": [240,176], "src": [224,96], "f": 0, "t": 152, "d": [101,367], "a": 1 },
{ "px": [0,192], "src": [96,0], "f": 0, "t": 6, "d": [101,384], "a": 1 },
{ "px": [32,192], "src": [96,0], "f": 0, "t": 6, "d": [101,386], "a": 1 },
{ "px": [64,192], "src": [224,96], "f": 0, "t": 152, "d": [101,388], "a": 1 },
{ "px": [96,192], "src": [96,0], "f": 0, "t": 6, "d": [101,390], "a": 1 },
{ "px": [128,192], "src": [96,0], "f": 0, "t": 6, "d": [101,392], "a": 1 },
{ "px": [160,192], "src": [224,96], "f": 0, "t": 152, "d": [101,394], "a": 1 },
{ "px": [192,192], "src": [192,16], "f": 0, "t": 35, "d": [101,396], "a": 1 },
{ "px": [224,192], "src": [192,16], "f": 0, "t": 35, "d": [101,398], "a": 1 },
{ "px": [256,192], "src": [224,96], "f": 0, "t": 152, "d": [101,400], "a": 1 },
{ "px": [240,208], "src": [224,96], "f": 0, "t": 152, "d": [101,431], "a": 1 },
{ "px": [496,208], "src": [224,96], "f": 0, "t": 152, "d": [101,447], "a": 1 },
{ "px": [256,224], "src": [224,96], "f": 0, "t": 152, "d": [101,464], "a": 1 },
{ "px": [288,224], "src": [96,0], "f": 0, "t": 6, "d": [101,466], "a": 1 },
{ "px": [240,240], "src": [96,0], "f": 0, "t": 6, "d": [101,495], "a": 1 },
{ "px": [272,240], "src": [96,0], "f": 0, "t": 6, "d": [101,497], "a": 1 },
{ "px": [496,240], "src": [192,16], "f": 0, "t": 35, "d": [101,511], "a": 1 },
{ "px": [288,256], "src": [224,96], "f": 0, "t": 152, "d": [101,530], "a": 1 },
{ "px": [272,272], "src": [96,0], "f": 0, "t": 6, "d": [101,561], "a": 1 },
{ "px": [304,272], "src": [96,0], "f": 0, "t": 6, "d": [101,563], "a": 1 },
{ "px": [336,272], "src": [192,16], "f": 0, "t": 35, "d": [101,565], "a": 1 },
{ "px": [368,272], "src": [224,96], "f": 0, "t": 152, "d": [101,567], "a": 1 },
{ "px": [400,272], "src": [224,96], "f": 0, "t": 152, "d": [101,569], "a": 1 },
{ "px": [496,272], "src": [192,16], "f": 0, "t": 35, "d": [101,575], "a": 1 },
{ "px": [288,288], "src": [96,0], "f": 0, "t": 6, "d": [101,594], "a": 1 },
{ "px": [320,288], "src": [192,16], "f": 0, "t": 35, "d": [101,596], "a": 1 },
{ "px": [352,288], "src": [192,16], "f": 0, "t": 35, "d": [101,598], "a": 1 },
{ "px": [384,288], "src": [96,0], "f": 0, "t": 6, "d": [101,600], "a": 1 },
{ "px": [416,288], "src": [192,16], "f": 0, "t": 35, "d": [101,602], "a": 1 },
{ "px": [400,304], "src": [96,0], "f": 0, "t": 6, "d": [101,633], "a": 1 },
{ "px": [496,304], "src": [192,16], "f": 0, "t": 35, "d": [101,639], "a": 1 },
{ "px": [416,320], "src": [192,16], "f": 0, "t": 35, "d": [101,666], "a": 1 },
{ "px": [400,336], "src": [192,16], "f": 0, "t": 35, "d": [101,697], "a": 1 },
{ "px": [496,336], "src": [96,0], "f": 0, "t": 6, "d": [101,703], "a": 1 },
{ "px": [416,352], "src": [96,0], "f": 0, "t": 6, "d": [101,730], "a": 1 },
{ "px": [400,368], "src": [192,16], "f": 0, "t": 35, "d": [101,761], "a": 1 },
{ "px": [416,384], "src": [224,96], "f": 0, "t": 152, "d": [101,794], "a": 1 },
{ "px": [400,400], "src": [192,16], "f": 0, "t": 35, "d": [101,825], "a": 1 },
{ "px": [416,416], "src": [224,96], "f": 0, "t": 152, "d": [101,858], "a": 1 },
{ "px": [400,432], "src": [224,96], "f": 0, "t": 152, "d": [101,889], "a": 1 },
{ "px": [432,432], "src": [224,96], "f": 0, "t": 152, "d": [101,891], "a": 1 },
{ "px": [464,432], "src": [224,96], "f": 0, "t": 152, "d": [101,893], "a": 1 },
{ "px": [496,432], "src": [96,0], "f": 0, "t": 6, "d": [101,895], "a": 1 },
{ "px": [416,448], "src": [224,96], "f": 0, "t": 152, "d": [101,922], "a": 1 },
{ "px": [448,448], "src": [96,0], "f": 0, "t": 6, "d": [101,924], "a": 1 },
{ "px": [480,448], "src": [224,96], "f": 0, "t": 152, "d": [101,926], "a": 1 },
{ "px": [16,0], "src": [32,32], "f": 0, "t": 48, "d": [127,1], "a": 1 },
{ "px": [48,0], "src": [32,32], "f": 0, "t": 48, "d": [127,3], "a": 1 },
{ "px": [80,0], "src": [32,32], "f": 0, "t": 48, "d": [127,5], "a": 1 },
{ "px": [96,0], "src": [32,32], "f": 0, "t": 48, "d": [127,6], "a": 1 },
{ "px": [112,0], "src": [32,32], "f": 0, "t": 48, "d": [127,7], "a": 1 },
{ "px": [128,0], "src": [32,32], "f": 0, "t": 48, "d": [127,8], "a": 1 },
{ "px": [144,0], "src": [32,32], "f": 0, "t": 48, "d": [127,9], "a": 1 },
{ "px": [160,0], "src": [32,32], "f": 0, "t": 48, "d": [127,10], "a": 1 },
{ "px": [176,0], "src": [32,32], "f": 0, "t": 48, "d": [127,11], "a": 1 },
{ "px": [208,0], "src": [32,32], "f": 0, "t": 48, "d": [127,13], "a": 1 },
{ "px": [224,0], "src": [32,32], "f": 0, "t": 48, "d": [127,14], "a": 1 },
{ "px": [240,0], "src": [32,32], "f": 0, "t": 48, "d": [127,15], "a": 1 },
{ "px": [272,0], "src": [32,32], "f": 0, "t": 48, "d": [127,17], "a": 1 },
{ "px": [288,0], "src": [32,32], "f": 0, "t": 48, "d": [127,18], "a": 1 },
{ "px": [304,0], "src": [32,32], "f": 0, "t": 48, "d": [127,19], "a": 1 },
{ "px": [464,0], "src": [32,32], "f": 0, "t": 48, "d": [127,29], "a": 1 },
{ "px": [496,0], "src": [32,32], "f": 0, "t": 48, "d": [127,31], "a": 1 },
{ "px": [0,16], "src": [32,32], "f": 0, "t": 48, "d": [127,32], "a": 1 },
{ "px": [16,16], "src": [32,32], "f": 0, "t": 48, "d": [127,33], "a": 1 },
{ "px": [32,16], "src": [32,32], "f": 0, "t": 48, "d": [127,34], "a": 1 },
{ "px": [64,16], "src": [32,32], "f": 0, "t": 48, "d": [127,36], "a": 1 },
{ "px": [80,16], "src": [32,32], "f": 0, "t": 48, "d": [127,37], "a": 1 },
{ "px": [96,16], "src": [32,32], "f": 0, "t": 48, "d": [127,38], "a": 1 },
{ "px": [112,16], "src": [32,32], "f": 0, "t": 48, "d": [127,39], "a": 1 },
{ "px": [128,16], "src": [32,32], "f": 0, "t": 48, "d": [127,40], "a": 1 },
{ "px": [144,16], "src": [32,32], "f": 0, "t": 48, "d": [127,41], "a": 1 },
{ "px": [160,16], "src": [32,32], "f": 0, "t": 48, "d": [127,42], "a": 1 },
{ "px": [176,16], "src": [32,32], "f": 0, "t": 48, "d": [127,43], "a": 1 },
{ "px": [192,16], "src": [32,32], "f": 0, "t": 48, "d": [127,44], "a": 1 },
{ "px": [208,16], "src": [32,32], "f": 0, "t": 48, "d": [127,45], "a": 1 },
{ "px": [224,16], "src": [32,32], "f": 0, "t": 48, "d": [127,46], "a": 1 },
{ "px": [256,16], "src": [32,32], "f": 0, "t": 48, "d": [127,48], "a": 1 },
{ "px": [288,16], "src": [32,32], "f": 0, "t": 48, "d": [127,50], "a": 1 },
{ "px": [304,16], "src": [32,32], "f": 0, "t": 48, "d": [127,51], "a": 1 },
{ "px": [464,16], "src": [32,32], "f": 0, "t": 48, "d": [127,61], "a": 1 },
{ "px": [480,16], "src": [32,32], "f": 0, "t": 48, "d": [127,62], "a": 1 },
{ "px": [496,16], "src": [32,32], "f": 0, "t": 48, "d": [127,63], "a": 1 },
{ "px": [0,32], "src": [32,32], "f": 0, "t": 48, "d": [127,64], "a": 1 },
{ "px": [16,32], "src": [32,32], "f": 0, "t": 48, "d": [127,65], "a": 1 },
{ "px": [48,32], "src": [32,32], "f": 0, "t": 48, "d": [127,67], "a": 1 },
{ "px": [80,32], "src": [32,32], "f": 0, "t": 48, "d": [127,69], "a": 1 },
{ "px": [96,32], "src": [32,32], "f": 0, "t": 48, "d": [127,70], "a": 1 },
{ "px": [112,32], "src": [32,32], "f": 0, "t": 48, "d": [127,71], "a": 1 },
{ "px": [128,32], "src": [32,32], "f": 0, "t": 48, "d": [127,72], "a": 1 },
{ "px": [144,32], "src": [32,32], "f": 0, "t": 48, "d": [127,73], "a": 1 },
{ "px": [160,32], "src": [32,32], "f": 0, "t": 48, "d": [127,74], "a": 1 },
{ "px": [176,32], "src": [32,32], "f": 0, "t": 48, "d": [127,75], "a": 1 },
{ "px": [192,32], "src": [32,32], "f": 0, "t": 48, "d": [127,76], "a": 1 },
{ "px": [208,32], "src": [32,32], "f": 0, "t": 48, "d": [127,77], "a": 1 },
{ "px": [240,32], "src": [32,32], "f": 0, "t": 48, "d": [127,79], "a": 1 },
{ "px": [256,32], "src": [32,32], "f": 0, "t": 48, "d": [127,80], "a": 1 },
{ "px": [272,32], "src": [32,32], "f": 0, "t": 48, "d": [127,81], "a": 1 },
{ "px": [288,32], "src": [32,32], "f": 0, "t": 48, "d": [127,82], "a": 1 },
{ "px": [304,32], "src": [32,32], "f": 0, "t": 48, "d": [127,83], "a": 1 },
{ "px": [464,32], "src": [32,32], "f": 0, "t": 48, "d": [127,93], "a": 1 },
{ "px": [480,32], "src": [32,32], "f": 0, "t": 48, "d": [127,94], "a": 1 },
{ "px": [496,32], "src": [32,32], "f": 0, "t": 48, "d": [127,95], "a": 1 },
{ "px": [0,48], "src": [32,32], "f": 0, "t": 48, "d": [127,96], "a": 1 },
{ "px": [16,48], "src": [32,32], "f": 0, "t": 48, "d": [127,97], "a": 1 },
{ "px": [32,48], "src": [32,32], "f": 0, "t": 48, "d": [127,98], "a": 1 },
{ "px": [64,48], "src": [32,32], "f": 0, "t": 48, "d": [127,100], "a": 1 },
{ "px": [80,48], "src": [32,32], "f": 0, "t": 48, "d": [127,101], "a": 1 },
{ "px": [96,48], "src": [32,32], "f": 0, "t": 48, "d": [127,102], "a": 1 },
{ "px": [112,48], "src": [32,32], "f": 0, "t": 48, "d": [127,103], "a": 1 },
{ "px": [128,48], "src": [32,32], "f": 0, "t": 48, "d": [127,104], "a": 1 },
{ "px": [160,48], "src": [32,32], "f": 0, "t": 48, "d": [127,106], "a": 1 },
{ "px": [176,48], "src": [32,32], "f": 0, "t": 48, "d": [127,107], "a": 1 },
{ "px": [192,48], "src": [32,32], "f": 0, "t": 48, "d": [127,108], "a": 1 },
{ "px": [224,48], "src": [32,32], "f": 0, "t": 48, "d": [127,110], "a": 1 },
{ "px": [256,48], "src": [32,32], "f": 0, "t": 48, "d": [127,112], "a": 1 },
{ "px": [272,48], "src": [32,32], "f": 0, "t": 48, "d": [127,113], "a": 1 },
{ "px": [288,48], "src": [32,32], "f": 0, "t": 48, "d": [127,114], "a": 1 },
{ "px": [304,48], "src": [32,32], "f": 0, "t": 48, "d": [127,115], "a": 1 },
{ "px": [464,48], "src": [32,32], "f": 0, "t": 48, "d": [127,125], "a": 1 },
{ "px": [480,48], "src": [32,32], "f": 0, "t": 48, "d": [127,126], "a": 1 },
{ "px": [496,48], "src": [32,32], "f": 0, "t": 48, "d": [127,127], "a": 1 },
{ "px": [464,64], "src": [32,32], "f": 0, "t": 48, "d": [127,157], "a": 1 },
{ "px": [480,64], "src": [32,32], "f": 0, "t": 48, "d": [127,158], "a": 1 },
{ "px": [496,64], "src": [32,32], "f": 0, "t": 48, "d": [127,159], "a": 1 },
{ "px": [464,80], "src": [32,32], "f": 0, "t": 48, "d": [127,189], "a": 1 },
{ "px": [480,80], "src": [32,32], "f": 0, "t": 48, "d": [127,190], "a": 1 },
{ "px": [496,80], "src": [32,32], "f": 0, "t": 48, "d": [127,191], "a": 1 },
{ "px": [0,208], "src": [32,32], "f": 0, "t": 48, "d": [127,416], "a": 1 },
{ "px": [16,208], "src": [32,32], "f": 0, "t": 48, "d": [127,417], "a": 1 },
{ "px": [32,208], "src": [32,32], "f": 0, "t": 48, "d": [127,418], "a": 1 },
{ "px": [48,208], "src": [32,32], "f": 0, "t": 48, "d": [127,419], "a": 1 },
{ "px": [64,208], "src": [32,32], "f": 0, "t": 48, "d": [127,420], "a": 1 },
{ "px": [80,208], "src": [32,32], "f": 0, "t": 48, "d": [127,421], "a": 1 },
{ "px": [96,208], "src": [32,32], "f": 0, "t": 48, "d": [127,422], "a": 1 },
{ "px": [112,208], "src": [32,32], "f": 0, "t": 48, "d": [127,423], "a": 1 },
{ "px": [128,208], "src": [32,32], "f": 0, "t": 48, "d": [127,424], "a": 1 },
{ "px": [144,208], "src": [32,32], "f": 0, "t": 48, "d": [127,425], "a": 1 },
{ "px": [160,208], "src": [32,32], "f": 0, "t": 48, "d": [127,426], "a": 1 },
{ "px": [176,208], "src": [32,32], "f": 0, "t": 48, "d": [127,427], "a": 1 },
{ "px": [192,208], "src": [32,32], "f": 0, "t": 48, "d": [127,428], "a": 1 },
{ "px": [208,208], "src": [32,32], "f": 0, "t": 48, "d": [127,429], "a": 1 },
{ "px": [224,208], "src": [32,32], "f": 0, "t": 48, "d": [127,430], "a": 1 },
{ "px": [16,224], "src": [32,32], "f": 0, "t": 48, "d": [127,449], "a": 1 },
{ "px": [32,224], "src": [32,32], "f": 0, "t": 48, "d": [127,450], "a": 1 },
{ "px": [48,224], "src": [32,32], "f": 0, "t": 48, "d": [127,451], "a": 1 },
{ "px": [64,224], "src": [32,32], "f": 0, "t": 48, "d": [127,452], "a": 1 },
{ "px": [80,224], "src": [32,32], "f": 0, "t": 48, "d": [127,453], "a": 1 },
{ "px": [112,224], "src": [32,32], "f": 0, "t": 48, "d": [127,455], "a": 1 },
{ "px": [128,224], "src": [32,32], "f": 0, "t": 48, "d": [127,456], "a": 1 },
{ "px": [144,224], "src": [32,32], "f": 0, "t": 48, "d": [127,457], "a": 1 },
{ "px": [176,224], "src": [32,32], "f": 0, "t": 48, "d": [127,459], "a": 1 },
{ "px": [192,224], "src": [32,32], "f": 0, "t": 48, "d": [127,460], "a": 1 },
{ "px": [208,224], "src": [32,32], "f": 0, "t": 48, "d": [127,461], "a": 1 },
{ "px": [224,224], "src": [32,32], "f": 0, "t": 48, "d": [127,462], "a": 1 },
{ "px": [0,240], "src": [32,32], "f": 0, "t": 48, "d": [127,480], "a": 1 },
{ "px": [32,240], "src": [32,32], "f": 0, "t": 48, "d": [127,482], "a": 1 },
{ "px": [48,240], "src": [32,32], "f": 0, "t": 48, "d": [127,483], "a": 1 },
{ "px": [64,240], "src": [32,32], "f": 0, "t": 48, "d": [127,484], "a": 1 },
{ "px": [96,240], "src": [32,32], "f": 0, "t": 48, "d": [127,486], "a": 1 },
{ "px": [128,240], "src": [32,32], "f": 0, "t": 48, "d": [127,488], "a": 1 },
{ "px": [144,240], "src": [32,32], "f": 0, "t": 48, "d": [127,489], "a": 1 },
{ "px": [160,240], "src": [32,32], "f": 0, "t": 48, "d": [127,490], "a": 1 },
{ "px": [176,240], "src": [32,32], "f": 0, "t": 48, "d": [127,491], "a": 1 },
{ "px": [192,240], "src": [32,32], "f": 0, "t": 48, "d": [127,492], "a": 1 },
{ "px": [208,240], "src": [32,32], "f": 0, "t": 48, "d": [127,493], "a": 1 },
{ "px": [224,240], "src": [32,32], "f": 0, "t": 48, "d": [127,494], "a": 1 },
{ "px": [0,256], "src": [32,32], "f": 0, "t": 48, "d": [127,512], "a": 1 },
{ "px": [16,256], "src": [32,32], "f": 0, "t": 48, "d": [127,513], "a": 1 },
{ "px": [32,256], "src": [32,32], "f": 0, "t": 48, "d": [127,514], "a": 1 },
{ "px": [48,256], "src": [32,32], "f": 0, "t": 48, "d": [127,515], "a": 1 },
{ "px": [64,256], "src": [32,32], "f": 0, "t": 48, "d": [127,516], "a": 1 },
{ "px": [80,256], "src": [32,32], "f": 0, "t": 48, "d": [127,517], "a": 1 },
{ "px": [112,256], "src": [32,32], "f": 0, "t": 48, "d": [127,519], "a": 1 },
{ "px": [144,256], "src": [32,32], "f": 0, "t": 48, "d": [127,521], "a": 1 },
{ "px": [160,256], "src": [32,32], "f": 0, "t": 48, "d": [127,522], "a": 1 },
{ "px": [176,256], "src": [32,32], "f": 0, "t": 48, "d": [127,523], "a": 1 },
{ "px": [192,256], "src": [32,32], "f": 0, "t": 48, "d": [127,524], "a": 1 },
{ "px": [208,256], "src": [32,32], "f": 0, "t": 48, "d": [127,525], "a": 1 },
{ "px": [224,256], "src": [32,32], "f": 0, "t": 48, "d": [127,526], "a": 1 },
{ "px": [240,256], "src": [32,32], "f": 0, "t": 48, "d": [127,527], "a": 1 },
{ "px": [256,256], "src": [32,32], "f": 0, "t": 48, "d": [127,528], "a": 1 },
{ "px": [0,272], "src": [32,32], "f": 0, "t": 48, "d": [127,544], "a": 1 },
{ "px": [16,272], "src": [32,32], "f": 0, "t": 48, "d": [127,545], "a": 1 },
{ "px": [32,272], "src": [32,32], "f": 0, "t": 48, "d": [127,546], "a": 1 },
{ "px": [48,272], "src": [32,32], "f": 0, "t": 48, "d": [127,547], "a": 1 },
{ "px": [64,272], "src": [32,32], "f": 0, "t": 48, "d": [127,548], "a": 1 },
{
gitextract_wa_slr6x/
├── .cargo/
│ └── config.toml
├── .github/
│ └── ISSUE_TEMPLATE/
│ ├── document-issue-report.md
│ ├── feature-request.md
│ ├── importer-bug-report.md
│ ├── logic-error-report.md
│ ├── other-issues-report.md
│ └── rendering-bug-report.md
├── .gitignore
├── Cargo.toml
├── LICENSE
├── README.md
├── RELEASE_NOTE.md
├── assets/
│ ├── custom_material.wgsl
│ ├── ldtk/
│ │ ├── grid_vania.ldtk
│ │ └── wfc_source.ldtk
│ └── tiled/
│ ├── Tilemap.tiled-project
│ ├── tilemaps/
│ │ ├── hexagonal.tmx
│ │ ├── infinite.tmx
│ │ ├── isometric.tmx
│ │ ├── isometricCube.tmx
│ │ └── orthogonal.tmx
│ └── tilesets/
│ ├── 8pxSquare.tsx
│ ├── Hexagonal.tsx
│ ├── Isometric.tsx
│ ├── IsometricCube.tsx
│ ├── Squares.tsx
│ ├── Tileset1.tsx
│ └── Tileset2.tsx
├── examples/
│ ├── README.md
│ ├── animation.rs
│ ├── baking.rs
│ ├── basic.rs
│ ├── chunk_unloading.rs
│ ├── custom_material.rs
│ ├── helpers/
│ │ ├── camera_movement.rs
│ │ ├── common.rs
│ │ └── mod.rs
│ ├── isometric_cubes.rs
│ ├── ldtk.rs
│ ├── ldtk_wfc.rs
│ ├── ldtk_wfc_config.ron
│ ├── multiple_tilesets.rs
│ ├── pathfinding.rs
│ ├── pathfinding_single_threaded.rs
│ ├── physics.rs
│ ├── save_and_load.rs
│ ├── stress_test.rs
│ ├── tiled.rs
│ ├── wfc.rs
│ ├── wfc_config.ron
│ ├── wfc_pattern.rs
│ └── wfc_weights.ron
├── macros/
│ ├── Cargo.toml
│ ├── README.md
│ └── src/
│ ├── ldtk_entity.rs
│ ├── ldtk_entity_tag.rs
│ ├── ldtk_enum.rs
│ ├── lib.rs
│ ├── tiled_class.rs
│ ├── tiled_custom_tile.rs
│ ├── tiled_enum.rs
│ └── tiled_object.rs
└── src/
├── algorithm/
│ ├── mod.rs
│ ├── pathfinding.rs
│ └── wfc.rs
├── debug/
│ ├── drawing.rs
│ └── mod.rs
├── ldtk/
│ ├── app_ext.rs
│ ├── components.rs
│ ├── entity_sprite.wgsl
│ ├── events.rs
│ ├── json/
│ │ ├── definitions.rs
│ │ ├── field.rs
│ │ ├── level.rs
│ │ ├── macros.rs
│ │ └── mod.rs
│ ├── layer/
│ │ ├── mod.rs
│ │ ├── path.rs
│ │ └── physics.rs
│ ├── mod.rs
│ ├── resources.rs
│ ├── sprite.rs
│ └── traits.rs
├── lib.rs
├── math/
│ ├── ext.rs
│ └── mod.rs
├── render/
│ ├── bake.rs
│ ├── binding.rs
│ ├── buffer.rs
│ ├── chunk.rs
│ ├── cull.rs
│ ├── draw.rs
│ ├── extract.rs
│ ├── material.rs
│ ├── mod.rs
│ ├── pipeline.rs
│ ├── prepare.rs
│ ├── queue.rs
│ ├── shaders/
│ │ ├── common.wgsl
│ │ ├── hexagonal.wgsl
│ │ ├── isometric.wgsl
│ │ ├── square.wgsl
│ │ └── tilemap.wgsl
│ └── texture.rs
├── serializing/
│ ├── chunk/
│ │ ├── load.rs
│ │ ├── mod.rs
│ │ └── save.rs
│ ├── map/
│ │ ├── load.rs
│ │ ├── mod.rs
│ │ └── save.rs
│ ├── mod.rs
│ └── pattern.rs
├── shaders/
│ ├── math.wgsl
│ └── mod.rs
├── tiled/
│ ├── app_ext.rs
│ ├── components.rs
│ ├── events.rs
│ ├── mod.rs
│ ├── resources.rs
│ ├── sprite.rs
│ ├── tiled_sprite.wgsl
│ ├── traits.rs
│ └── xml/
│ ├── default.rs
│ ├── layer.rs
│ ├── mod.rs
│ ├── property.rs
│ └── tileset.rs
├── tilemap/
│ ├── algorithm/
│ │ ├── mod.rs
│ │ └── path.rs
│ ├── buffers.rs
│ ├── bundles.rs
│ ├── chunking/
│ │ ├── camera.rs
│ │ ├── mod.rs
│ │ └── storage.rs
│ ├── coordinates.rs
│ ├── despawn.rs
│ ├── map.rs
│ ├── mod.rs
│ ├── physics/
│ │ ├── mod.rs
│ │ └── systems.rs
│ └── tile.rs
└── utils/
├── asset.rs
├── mesh.rs
└── mod.rs
SYMBOL INDEX (1041 symbols across 99 files)
FILE: examples/animation.rs
function main (line 7) | fn main() {
function setup (line 18) | fn setup(
FILE: examples/baking.rs
function main (line 7) | fn main() {
function setup (line 27) | fn setup(
function fetch_bake_result (line 104) | fn fetch_bake_result(
FILE: examples/basic.rs
function main (line 7) | fn main() {
function setup (line 26) | fn setup(
function toggle (line 165) | fn toggle(
FILE: examples/chunk_unloading.rs
function main (line 9) | fn main() {
function setup (line 45) | fn setup(
function on_update (line 118) | fn on_update(
FILE: examples/custom_material.rs
function main (line 10) | fn main() {
type MyMaterial (line 25) | pub struct MyMaterial {
method fragment_shader (line 31) | fn fragment_shader() -> ShaderRef {
function setup (line 36) | fn setup(
function update_time (line 69) | fn update_time(mut materials: ResMut<Assets<MyMaterial>>, time: Res<Time...
FILE: examples/helpers/camera_movement.rs
type CameraControl (line 7) | pub struct CameraControl {
method default (line 13) | fn default() -> Self {
function camera_control (line 21) | pub fn camera_control(
FILE: examples/helpers/common.rs
type DebugFpsText (line 8) | pub struct DebugFpsText;
function debug_info_display (line 10) | pub fn debug_info_display(
FILE: examples/helpers/mod.rs
type EntiTilesHelpersPlugin (line 20) | pub struct EntiTilesHelpersPlugin {
method default (line 26) | fn default() -> Self {
method build (line 32) | fn build(&self, app: &mut bevy::prelude::App) {
method finish (line 51) | fn finish(&self, _app: &mut bevy::prelude::App) {
function debug_startup (line 56) | pub fn debug_startup(mut commands: Commands) {
FILE: examples/isometric_cubes.rs
function main (line 11) | fn main() {
type HintText (line 26) | struct HintText;
function setup (line 28) | fn setup(
function rearrange (line 77) | fn rearrange(
FILE: examples/ldtk.rs
function main (line 23) | fn main() {
type LdtkFile (line 101) | struct LdtkFile(Handle<LdtkJson>);
function setup (line 103) | fn setup(mut commands: Commands, asset_server: Res<AssetServer>) {
function load (line 133) | fn load(
function player_control (line 152) | fn player_control(
function player_spawn (line 179) | fn player_spawn(
type ItemType (line 217) | pub enum ItemType {
type Player (line 242) | pub struct Player {
type Ladder (line 263) | pub struct Ladder;
type SecretArea (line 267) | pub struct SecretArea;
type Item (line 271) | pub struct Item {
type Teleport (line 280) | pub struct Teleport {
type Wall (line 287) | pub struct Wall;
type PoolBottom (line 290) | pub struct PoolBottom;
function physics_tile_events (line 292) | fn physics_tile_events(mut commands: Commands, mut event: EventReader<Ph...
type Actor (line 305) | pub struct Actor;
type Loot (line 308) | pub struct Loot;
type Region (line 311) | pub struct Region;
FILE: examples/ldtk_wfc.rs
function main (line 18) | fn main() {
type LdtkFile (line 71) | struct LdtkFile(Handle<LdtkJson>);
type Player (line 74) | struct Player {
type LevelChange (line 79) | struct LevelChange(UVec2);
function setup (line 81) | fn setup(mut commands: Commands, asset_server: Res<AssetServer>) {
function player_control (line 126) | fn player_control(
function load_level (line 157) | fn load_level(
FILE: examples/multiple_tilesets.rs
function main (line 15) | fn main() {
function setup (line 26) | fn setup(
FILE: examples/pathfinding.rs
function main (line 9) | fn main() {
function setup (line 24) | fn setup(
function detect (line 88) | fn detect(queues_query: Query<&PathFindingQueue>) {
FILE: examples/pathfinding_single_threaded.rs
function main (line 9) | fn main() {
function setup (line 24) | fn setup(
function detect (line 86) | fn detect(tasks: Query<(), With<PathGrid>>) {
FILE: examples/physics.rs
function main (line 8) | fn main() {
function setup (line 23) | fn setup(
function physics_tile_events (line 156) | fn physics_tile_events(mut event: EventReader<PhysicsTileSpawn>) {
type Character (line 167) | pub struct Character;
function character_move (line 169) | pub fn character_move(
FILE: examples/save_and_load.rs
function main (line 8) | fn main() {
function setup (line 26) | fn setup(
function save_and_load (line 100) | fn save_and_load(
FILE: examples/stress_test.rs
function main (line 28) | fn main() {
function setup (line 46) | fn setup(
FILE: examples/tiled.rs
function main (line 17) | fn main() {
type TiledMaps (line 46) | pub struct TiledMaps(HashMap<&'static str, Handle<PackedTiledTilemap>>);
function setup (line 48) | fn setup(mut commands: Commands, asset_server: Res<AssetServer>) {
function switching (line 92) | fn switching(
type PlainBlockBundle (line 113) | pub struct PlainBlockBundle {
type PlainBlock (line 120) | pub struct PlainBlock;
type BlockBundle (line 124) | pub struct BlockBundle {
type Block (line 129) | pub struct Block {
type ShapeType (line 143) | pub enum ShapeType {
type PointMarker (line 157) | pub struct PointMarker;
type PlayerBundle (line 163) | pub struct PlayerBundle {
type Player (line 169) | pub struct Player {
type MoveableObject (line 184) | pub struct MoveableObject {
type DetectAreaBundle (line 191) | pub struct DetectAreaBundle {
type DetectArea (line 196) | pub struct DetectArea;
type TileInfos (line 199) | pub struct TileInfos {
type TileBundle (line 207) | pub struct TileBundle {
FILE: examples/wfc.rs
function main (line 7) | fn main() {
function setup (line 18) | fn setup(
FILE: examples/wfc_pattern.rs
function main (line 8) | fn main() {
function setup (line 19) | fn setup(mut commands: Commands, mut materials: ResMut<Assets<StandardTi...
FILE: macros/src/ldtk_entity.rs
constant LDTK_DEFAULT_ATTR (line 1) | const LDTK_DEFAULT_ATTR: &str = "ldtk_default";
constant LDTK_NAME_ATTR (line 2) | const LDTK_NAME_ATTR: &str = "ldtk_name";
constant SPAWN_SPRITE_ATTR (line 3) | const SPAWN_SPRITE_ATTR: &str = "spawn_sprite";
constant GLOBAL_ENTITY_ATTR (line 4) | const GLOBAL_ENTITY_ATTR: &str = "global_entity";
constant CALLBACK_ATTR (line 5) | const CALLBACK_ATTR: &str = "callback";
function expand_ldtk_entity_derive (line 7) | pub fn expand_ldtk_entity_derive(input: syn::DeriveInput) -> proc_macro:...
function expand_entity_fields (line 128) | pub fn expand_entity_fields(field_name: &syn::Ident) -> proc_macro2::Tok...
function expand_entity_fields_rename (line 134) | pub fn expand_entity_fields_rename(
FILE: macros/src/ldtk_entity_tag.rs
function expand_ldtk_entity_tag_derive (line 1) | pub fn expand_ldtk_entity_tag_derive(input: syn::DeriveInput) -> proc_ma...
FILE: macros/src/ldtk_enum.rs
constant LDTK_NAME_ATTR (line 1) | const LDTK_NAME_ATTR: &str = "ldtk_name";
constant WRAPPER_DERIVE_ATTR (line 2) | const WRAPPER_DERIVE_ATTR: &str = "wrapper_derive";
function expand_ldtk_enum_derive (line 4) | pub fn expand_ldtk_enum_derive(input: syn::DeriveInput) -> proc_macro::T...
function expand_enum_variant_rename (line 75) | fn expand_enum_variant_rename(
function expand_enum_variant (line 90) | fn expand_enum_variant(variant_name: &syn::Ident) -> proc_macro2::TokenS...
function create_wrappers (line 97) | fn create_wrappers(
function impl_into_enum (line 120) | fn impl_into_enum(ty: &syn::Ident) -> proc_macro2::TokenStream {
function impl_into_enum_opt (line 142) | fn impl_into_enum_opt(ty: &syn::Ident, wrapper: &syn::Ident) -> proc_mac...
function impl_into_enum_vec (line 164) | fn impl_into_enum_vec(ty: &syn::Ident, wrapper: &syn::Ident) -> proc_mac...
function impl_into_enum_opt_vec (line 193) | fn impl_into_enum_opt_vec(ty: &syn::Ident, wrapper: &syn::Ident) -> proc...
FILE: macros/src/lib.rs
function derive_ldtk_entities (line 13) | pub fn derive_ldtk_entities(input: proc_macro::TokenStream) -> proc_macr...
function derive_ldtk_enums (line 18) | pub fn derive_ldtk_enums(input: proc_macro::TokenStream) -> proc_macro::...
function derive_ldtk_entity_tags (line 23) | pub fn derive_ldtk_entity_tags(input: proc_macro::TokenStream) -> proc_m...
function derive_tiled_objects (line 37) | pub fn derive_tiled_objects(input: proc_macro::TokenStream) -> proc_macr...
function derive_tiled_custom_tiles (line 42) | pub fn derive_tiled_custom_tiles(input: proc_macro::TokenStream) -> proc...
function derive_tiled_classes (line 47) | pub fn derive_tiled_classes(input: proc_macro::TokenStream) -> proc_macr...
function derive_tiled_enums (line 52) | pub fn derive_tiled_enums(input: proc_macro::TokenStream) -> proc_macro:...
FILE: macros/src/tiled_class.rs
constant TILED_NAME_ATTR (line 1) | const TILED_NAME_ATTR: &str = "tiled_name";
function expand_tiled_class_derive (line 3) | pub fn expand_tiled_class_derive(input: syn::DeriveInput) -> proc_macro:...
function expand_class_fields (line 54) | fn expand_class_fields(field_name: &syn::Ident) -> proc_macro2::TokenStr...
function expand_class_fields_rename (line 68) | fn expand_class_fields_rename(
FILE: macros/src/tiled_custom_tile.rs
constant TILED_DEFAULT_ATTR (line 1) | const TILED_DEFAULT_ATTR: &str = "tiled_default";
constant CALLBACK_ATTR (line 2) | const CALLBACK_ATTR: &str = "callback";
function expand_tiled_custom_tiles_derive (line 4) | pub fn expand_tiled_custom_tiles_derive(input: syn::DeriveInput) -> proc...
function expand_custom_tile_fields (line 91) | fn expand_custom_tile_fields(
FILE: macros/src/tiled_enum.rs
constant TILED_NAME_ATTR (line 1) | const TILED_NAME_ATTR: &str = "tiled_name";
function expand_tiled_enum_derive (line 3) | pub fn expand_tiled_enum_derive(input: syn::DeriveInput) -> proc_macro::...
function expand_enum_variant_rename (line 49) | fn expand_enum_variant_rename(
function expand_enum_variant (line 64) | fn expand_enum_variant(variant_name: &syn::Ident) -> proc_macro2::TokenS...
FILE: macros/src/tiled_object.rs
constant TILED_DEFAULT_ATTR (line 1) | const TILED_DEFAULT_ATTR: &str = "tiled_default";
constant INSTANTIATE_SHAPE_ATTR (line 2) | const INSTANTIATE_SHAPE_ATTR: &str = "instantiate_shape";
constant SPAWN_SPRITE_ATTR (line 3) | const SPAWN_SPRITE_ATTR: &str = "spawn_sprite";
constant GLOBAL_OBJECT_ATTR (line 4) | const GLOBAL_OBJECT_ATTR: &str = "global_object";
constant CALLBACK_ATTR (line 5) | const CALLBACK_ATTR: &str = "callback";
function expand_tiled_objects_derive (line 7) | pub fn expand_tiled_objects_derive(input: syn::DeriveInput) -> proc_macr...
function expand_object_fields (line 105) | fn expand_object_fields(
function generate_constructor (line 114) | fn generate_constructor(data_struct: &syn::DataStruct) -> proc_macro2::T...
FILE: src/algorithm/mod.rs
type EntiTilesAlgorithmPlugin (line 14) | pub struct EntiTilesAlgorithmPlugin;
method build (line 17) | fn build(&self, app: &mut App) {
FILE: src/algorithm/pathfinding.rs
type PathTilemaps (line 25) | pub struct PathTilemaps {
method get (line 35) | pub fn get(&self, tilemap: Entity) -> Option<Arc<Mutex<PathTilemap>>> {
method lock (line 40) | pub fn lock(&self, tilemap: Entity) -> Option<MutexGuard<PathTilemap>> {
method get_mut (line 45) | pub fn get_mut(&mut self, tilemap: Entity) -> Option<&mut Arc<Mutex<Pa...
method insert (line 50) | pub fn insert(&mut self, tilemap: Entity, path_tilemap: PathTilemap) {
method remove (line 56) | pub fn remove(&mut self, tilemap: Entity) {
method get (line 64) | pub fn get(&self, tilemap: Entity) -> Option<&PathTilemap> {
method get_mut (line 69) | pub fn get_mut(&mut self, tilemap: Entity) -> Option<&mut PathTilemap> {
method insert (line 74) | pub fn insert(&mut self, tilemap: Entity, path_tilemap: PathTilemap) {
method remove (line 79) | pub fn remove(&mut self, tilemap: Entity) {
type PathFinder (line 85) | pub struct PathFinder {
type PathFindingQueue (line 97) | pub struct PathFindingQueue {
method new_with_schedules (line 104) | pub fn new_with_schedules(schedules: impl Iterator<Item = (Entity, Pat...
method is_empty (line 114) | pub fn is_empty(&self) -> bool {
method schedule (line 119) | pub fn schedule(&mut self, requester: Entity, pathfinder: PathFinder) {
type Path (line 125) | pub struct Path {
method step (line 133) | pub fn step(&mut self) {
method cur_target (line 141) | pub fn cur_target(&self) -> IVec2 {
method is_arrived (line 146) | pub fn is_arrived(&self) -> bool {
method tilemap (line 150) | pub fn tilemap(&self) -> Entity {
method iter (line 154) | pub fn iter(&self) -> std::slice::Iter<IVec2> {
type PathNode (line 160) | pub struct PathNode {
method new (line 184) | pub fn new(index: IVec2, g_cost: u32, dest: IVec2, cost_to_pass: u32) ...
method weight (line 195) | pub fn weight(&self) -> u32 {
method partial_cmp (line 169) | fn partial_cmp(&self, other: &Self) -> Option<Ordering> {
method cmp (line 175) | fn cmp(&self, other: &Self) -> Ordering {
type PathGrid (line 201) | pub struct PathGrid {
method new (line 222) | pub fn new(
method get_or_register (line 251) | pub fn get_or_register(&mut self, index: IVec2) -> Option<PathNode> {
method get_or_register (line 264) | pub fn get_or_register(
method neighbours (line 285) | pub fn neighbours(&mut self, index: IVec2) -> Vec<PathNode> {
method neighbours (line 294) | pub fn neighbours(&mut self, index: IVec2, path_tilemaps: &PathTilemap...
method find_path (line 303) | pub fn find_path(&mut self, path_tilemaps: Option<&PathTilemaps>) {
method collect_path (line 365) | pub fn collect_path(&self) -> Path {
function pathfinding_scheduler (line 381) | pub fn pathfinding_scheduler(
function pathfinding_scheduler (line 406) | pub fn pathfinding_scheduler(
function path_finding_single_threaded (line 422) | pub fn path_finding_single_threaded(
function path_assigner (line 439) | pub fn path_assigner(mut commands: Commands, mut queues_query: Query<&mu...
FILE: src/algorithm/wfc.rs
constant DIR (line 46) | const DIR: [&'static str; 4] = ["up", "right", "left", "down"];
constant HEX_DIR (line 47) | const HEX_DIR: [&'static str; 6] = [
type WfcRules (line 57) | pub struct WfcRules(pub Vec<Vec<u128>>);
method from_file (line 61) | pub fn from_file(rule_path: &str, ty: TilemapType) -> Self {
method check_rules (line 108) | pub fn check_rules(&self, ty: TilemapType) {
type WfcMode (line 138) | pub enum WfcMode {
type LdtkWfcMode (line 150) | pub enum LdtkWfcMode {
type WfcSource (line 158) | pub enum WfcSource {
method from_atlas_indices (line 174) | pub fn from_atlas_indices(conn_rules: &WfcRules, texture_index: u32) -...
method from_atlas_indices (line 187) | pub fn from_atlas_indices(conn_rules: &WfcRules) -> Self {
method from_pattern_path (line 208) | pub fn from_pattern_path(
type WfcRunner (line 255) | pub struct WfcRunner {
method new (line 268) | pub fn new(ty: TilemapType, rules: WfcRules, area: GridRect, seed: Opt...
method with_weights (line 285) | pub fn with_weights(mut self, weights_path: String) -> Self {
method with_custom_sampler (line 306) | pub fn with_custom_sampler(
method with_retrace_settings (line 327) | pub fn with_retrace_settings(
method with_history_settings (line 347) | pub fn with_history_settings(mut self, max_history: usize) -> Self {
method get_rule (line 353) | pub fn get_rule(&self) -> &Vec<Vec<u128>> {
type WfcData (line 359) | pub struct WfcData {
method new (line 365) | pub(crate) fn new(area: GridRect) -> Self {
method get (line 372) | pub fn get(&self, index: UVec2) -> Option<u8> {
method set (line 378) | pub(crate) fn set(&mut self, index: UVec2, value: u8) {
method elem_idx_to_grid (line 382) | pub fn elem_idx_to_grid(&self, elem_index: usize) -> IVec2 {
method formatted_print (line 392) | pub(crate) fn formatted_print(&self, flip: bool) {
type WfcElement (line 412) | pub struct WfcElement {
method get_psbs_vec (line 420) | pub fn get_psbs_vec(&self) -> Vec<u8> {
type WfcHistory (line 432) | pub struct WfcHistory {
type WfcGrid (line 439) | pub struct WfcGrid {
method from_runner (line 458) | pub fn from_runner(runner: &mut WfcRunner) -> Self {
method collapse (line 501) | pub fn collapse(&mut self) {
method constrain (line 543) | pub fn constrain(&mut self, center: UVec2) {
method update_entropy (line 589) | pub fn update_entropy(&mut self, old: u8, new: u8, target: UVec2) {
method retrace (line 594) | pub fn retrace(&mut self) {
method get_min (line 632) | pub fn get_min(&mut self) -> UVec2 {
method generate_data (line 647) | pub fn generate_data(&mut self) -> Option<WfcData> {
type WfcTask (line 662) | pub struct WfcTask(Task<Option<WfcData>>);
function wave_function_collapse (line 665) | pub fn wave_function_collapse(
function wave_function_collapse_single_threaded (line 687) | pub fn wave_function_collapse_single_threaded(
function wfc_data_assigner (line 707) | pub fn wfc_data_assigner(mut commands: Commands, mut tasks_query: Query<...
function wfc_applier (line 719) | pub fn wfc_applier(
function ldtk_wfc_helper (line 886) | pub fn ldtk_wfc_helper(
FILE: src/debug/drawing.rs
function draw_chunk_aabb (line 22) | pub fn draw_chunk_aabb(
function draw_tilemap_aabb (line 54) | pub fn draw_tilemap_aabb(mut gizmos: Gizmos, tilemaps: Query<&TilemapAab...
function draw_path (line 66) | pub fn draw_path(
function draw_axis (line 95) | pub fn draw_axis(mut gizmos: Gizmos) {
function draw_camera_aabb (line 100) | pub fn draw_camera_aabb(mut gizmos: Gizmos, camera_aabb: Query<&CameraAa...
function draw_updater_aabbs (line 112) | pub fn draw_updater_aabbs(
FILE: src/debug/mod.rs
type EntiTilesDebugPlugin (line 9) | pub struct EntiTilesDebugPlugin;
method build (line 12) | fn build(&self, app: &mut bevy::prelude::App) {
type CameraAabbScale (line 33) | pub struct CameraAabbScale(pub Vec2);
method default (line 36) | fn default() -> Self {
FILE: src/ldtk/app_ext.rs
type LdtkApp (line 11) | pub trait LdtkApp {
method register_ldtk_entity (line 12) | fn register_ldtk_entity<T: LdtkEntity + Bundle>(&mut self, ident: &str...
method register_ldtk_entity_tag (line 13) | fn register_ldtk_entity_tag<T: LdtkEntityTag + Component>(&mut self, t...
method register_ldtk_entity (line 17) | fn register_ldtk_entity<T: LdtkEntity + Bundle>(&mut self, ident: &str...
method register_ldtk_entity_tag (line 35) | fn register_ldtk_entity_tag<T: LdtkEntityTag + Component>(&mut self, t...
FILE: src/ldtk/components.rs
type LdtkUnloadLayer (line 12) | pub struct LdtkUnloadLayer;
type LdtkLoadedLevel (line 15) | pub struct LdtkLoadedLevel {
method unload (line 23) | pub fn unload(&self, commands: &mut Commands, global_entities: &LdtkGl...
type LdtkTempTransform (line 38) | pub struct LdtkTempTransform {
type GlobalEntity (line 44) | pub struct GlobalEntity;
type EntityIid (line 47) | pub struct EntityIid(pub String);
type LayerIid (line 50) | pub struct LayerIid(pub String);
type LevelIid (line 53) | pub struct LevelIid(pub String);
type WorldIid (line 56) | pub struct WorldIid(pub String);
FILE: src/ldtk/events.rs
type LdtkLevelEvent (line 8) | pub enum LdtkLevelEvent {
type LdtkLevelLoaderMode (line 14) | pub enum LdtkLevelLoaderMode {
type LdtkLevelLoader (line 21) | pub struct LdtkLevelLoader {
type LdtkLevelUnloader (line 30) | pub struct LdtkLevelUnloader {
type LdtkLevel (line 36) | pub enum LdtkLevel {
method fmt (line 42) | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
FILE: src/ldtk/json/definitions.rs
type Definitions (line 8) | pub struct Definitions {
type LayerDef (line 32) | pub struct LayerDef {
type LayerType (line 92) | pub enum LayerType {
type IntGridValue (line 101) | pub struct IntGridValue {
type IntGroupValueGroup (line 111) | pub struct IntGroupValueGroup {
type EntityDef (line 128) | pub struct EntityDef {
method deserialize (line 170) | fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
type NineSliceBordersVisitor (line 178) | pub struct NineSliceBordersVisitor;
type Value (line 181) | type Value = NineSliceBorders;
method expecting (line 183) | fn expecting(&self, formatter: &mut std::fmt::Formatter) -> std::fmt::...
method visit_seq (line 187) | fn visit_seq<A>(self, mut seq: A) -> Result<Self::Value, A::Error>
type TilesetDef (line 220) | pub struct TilesetDef {
type CustomData (line 274) | pub struct CustomData {
type EnumTag (line 281) | pub struct EnumTag {
type TilesetRect (line 288) | pub struct TilesetRect {
type EnumTagValue (line 311) | pub struct EnumTagValue {
type EnumDef (line 322) | pub struct EnumDef {
type EnumValue (line 344) | pub struct EnumValue {
FILE: src/ldtk/json/field.rs
type FieldInstance (line 14) | pub struct FieldInstance {
method deserialize (line 37) | fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
method into (line 277) | fn into(self) -> IVec2 {
method into (line 289) | fn into(self) -> Option<IVec2> {
constant FIELDS (line 34) | const FIELDS: &[&str] = &["defUid", "__identifier", "__tile", "__type", ...
type FieldValue (line 190) | pub enum FieldValue {
function test_deser (line 305) | fn test_deser() {
FILE: src/ldtk/json/level.rs
type Level (line 22) | pub struct Level {
type ImagePosition (line 101) | pub struct ImagePosition {
type Neighbour (line 120) | pub struct Neighbour {
type NeighbourDirection (line 138) | pub enum NeighbourDirection {
type LayerInstance (line 169) | pub struct LayerInstance {
type TileInstance (line 263) | pub struct TileInstance {
type EntityInstance (line 296) | pub struct EntityInstance {
method generate_sprite (line 356) | pub fn generate_sprite(&self, commands: &mut EntityCommands, assets: &...
FILE: src/ldtk/json/mod.rs
type LdtkColor (line 12) | pub struct LdtkColor {
method from (line 19) | fn from(value: String) -> Self {
method into (line 28) | fn into(self) -> Color {
method into (line 34) | fn into(self) -> Vec4 {
method deserialize (line 40) | fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
type LdtkJson (line 66) | pub struct LdtkJson {
type Toc (line 133) | pub struct Toc {
type TocInstance (line 143) | pub struct TocInstance {
type TocField (line 163) | pub enum TocField {
type WorldLayout (line 182) | pub enum WorldLayout {
type World (line 191) | pub struct World {
type EntityRef (line 218) | pub struct EntityRef {
type GridPoint (line 234) | pub struct GridPoint {
FILE: src/ldtk/layer/mod.rs
type PackedLdtkEntity (line 58) | pub struct PackedLdtkEntity {
method instantiate (line 66) | pub fn instantiate(
type LayerOpacity (line 112) | pub type LayerOpacity = f32;
type LdtkLayers (line 115) | pub struct LdtkLayers {
method new (line 136) | pub fn new(
method set_tile (line 165) | pub fn set_tile(
method set_entity (line 224) | pub fn set_entity(&mut self, entity: PackedLdtkEntity) {
method try_create_new_layer (line 228) | fn try_create_new_layer(&mut self, layer_index: usize, layer: &LayerIn...
method apply_all (line 269) | pub fn apply_all(
method assign_path_layer (line 432) | pub fn assign_path_layer(
method assign_physics_layer (line 441) | pub fn assign_physics_layer(
FILE: src/ldtk/layer/path.rs
type LdtkPathLayer (line 9) | pub struct LdtkPathLayer {
function analyze_path_layer (line 15) | pub fn analyze_path_layer(layer: &LayerInstance, path: &LdtkPathLayer) -...
FILE: src/ldtk/layer/physics.rs
type LdtkPhysicsLayer (line 6) | pub struct LdtkPhysicsLayer {
FILE: src/ldtk/mod.rs
constant ENTITY_SPRITE_SHADER (line 58) | pub const ENTITY_SPRITE_SHADER: Handle<Shader> = Handle::weak_from_u128(...
type EntiTilesLdtkPlugin (line 60) | pub struct EntiTilesLdtkPlugin;
method build (line 63) | fn build(&self, app: &mut bevy::prelude::App) {
function global_entity_registerer (line 139) | fn global_entity_registerer(
function ldtk_temp_tranform_applier (line 148) | fn ldtk_temp_tranform_applier(
function ldtk_asset_events_handler (line 162) | pub fn ldtk_asset_events_handler(
function unload_ldtk_level (line 205) | pub fn unload_ldtk_level(
function unload_ldtk_layer (line 242) | pub fn unload_ldtk_layer(
function unload_ldtk_layer (line 252) | pub fn unload_ldtk_layer(
function load_ldtk_level (line 270) | pub fn load_ldtk_level(
function load_levels (line 331) | fn load_levels(
function load_background (line 441) | fn load_background(
function load_layer (line 469) | fn load_layer(
function get_level_translation (line 519) | fn get_level_translation(ldtk_data: &LdtkJson, index: usize) -> Vec2 {
function apply_ldtk_layers (line 530) | fn apply_ldtk_layers(
FILE: src/ldtk/resources.rs
type LdtkPatterns (line 37) | pub struct LdtkPatterns {
method new (line 53) | pub fn new(idents: Vec<String>, pattern_size: UVec2) -> Self {
method add_pattern (line 66) | pub fn add_pattern(
method add_background (line 93) | pub fn add_background(&mut self, identifier: &str, background: SpriteB...
method pack (line 103) | pub fn pack(&self) -> PackedPatternLayers {
method is_ready (line 123) | pub fn is_ready(&self) -> bool {
type LdtkJsonToAssets (line 129) | pub struct LdtkJsonToAssets(pub(crate) HashMap<AssetId<LdtkJson>, Handle...
type LdtkLevelIdentifierToIid (line 132) | pub struct LdtkLevelIdentifierToIid(
type LdtkAssets (line 140) | pub struct LdtkAssets {
method get_tileset (line 154) | pub fn get_tileset(&self, tileset_uid: i32) -> &TilemapTexture {
method clone_atlas_handle (line 158) | pub fn clone_atlas_handle(&self, tileset_uid: i32) -> Handle<TextureAt...
method get_entity_def (line 162) | pub fn get_entity_def(&self, identifier: &String) -> &EntityDef {
method clone_mesh_handle (line 166) | pub fn clone_mesh_handle(&self, iid: &String) -> Mesh2dHandle {
method clone_material_handle (line 170) | pub fn clone_material_handle(&self, iid: &String) -> Handle<LdtkEntity...
method new (line 178) | pub fn new(
method load_texture (line 192) | fn load_texture(
method load_entities (line 223) | fn load_entities(
type LdtkWfcManager (line 304) | pub struct LdtkWfcManager {
method get_ident (line 313) | pub fn get_ident(&self, level_index: UVec2) -> Option<String> {
method get_translation (line 319) | pub fn get_translation(&self, level_index: IVec2, slot_size: Vec2) -> ...
type LdtkTocs (line 325) | pub struct LdtkTocs(pub(crate) HashMap<String, HashMap<EntityRef, TocIns...
method get (line 328) | pub fn get(&self, identifier: String, entity: EntityRef) -> Option<&To...
method get_all (line 332) | pub fn get_all(&self, identifier: String) -> Option<&HashMap<EntityRef...
type LdtkAdditionalLayers (line 342) | pub struct LdtkAdditionalLayers {
type LdtkLevelConfig (line 351) | pub struct LdtkLevelConfig {
type LdtkLoadedLevels (line 363) | pub struct LdtkLoadedLevels(pub(crate) HashMap<AssetId<LdtkJson>, HashMa...
method unload_all (line 367) | pub fn unload_all(&self, event_writer: &mut EventWriter<LdtkLevelEvent...
method unload_all_at (line 380) | pub fn unload_all_at(
type LdtkJsonLoadError (line 397) | pub enum LdtkJsonLoadError {
type LdtkJsonLoader (line 405) | pub struct LdtkJsonLoader;
type Asset (line 408) | type Asset = LdtkJson;
type Settings (line 410) | type Settings = ();
type Error (line 412) | type Error = LdtkJsonLoadError;
method load (line 414) | async fn load<'a>(
type LdtkGlobalEntityRegistry (line 427) | pub struct LdtkGlobalEntityRegistry(pub(crate) HashMap<EntityIid, Entity>);
FILE: src/ldtk/sprite.rs
type AtlasRect (line 27) | pub struct AtlasRect {
method from (line 33) | fn from(value: TilesetRect) -> Self {
type LdtkEntityMaterial (line 42) | pub struct LdtkEntityMaterial {
method fragment_shader (line 51) | fn fragment_shader() -> ShaderRef {
type TileRenderMode (line 57) | pub enum TileRenderMode {
method as_shader_def (line 68) | pub fn as_shader_def(&self) -> String {
method get_mesh (line 80) | pub fn get_mesh(
type NineSliceBorders (line 204) | pub struct NineSliceBorders {
method generate_mesh (line 220) | pub fn generate_mesh(&self, render_size: IVec2, tile_size: IVec2, pivo...
type SpriteMesh (line 213) | pub struct SpriteMesh {
FILE: src/ldtk/traits.rs
type LdtkEntityRegistry (line 14) | pub type LdtkEntityRegistry = HashMap<String, Box<dyn PhantomLdtkEntityT...
type LdtkEntity (line 16) | pub trait LdtkEntity {
method initialize (line 17) | fn initialize(
type PhantomLdtkEntity (line 26) | pub struct PhantomLdtkEntity<T: LdtkEntity + Bundle> {
function new (line 31) | pub fn new() -> Self {
type PhantomLdtkEntityTrait (line 38) | pub trait PhantomLdtkEntityTrait {
method spawn (line 39) | fn spawn(
method spawn (line 50) | fn spawn(
type LdtkEnum (line 62) | pub trait LdtkEnum {
method get_identifier (line 63) | fn get_identifier(ident: &str) -> Self;
type LdtkEntityTagRegistry (line 66) | pub type LdtkEntityTagRegistry = HashMap<String, Box<dyn PhantomLdtkEnti...
type LdtkEntityTag (line 68) | pub trait LdtkEntityTag {
method add_tag (line 69) | fn add_tag(commands: &mut EntityCommands);
type PhantomLdtkEntityTag (line 72) | pub struct PhantomLdtkEntityTag<T: LdtkEntityTag + Component> {
function new (line 77) | pub fn new() -> Self {
type PhantomLdtkEntityTagTrait (line 84) | pub trait PhantomLdtkEntityTagTrait {
method add_tag (line 85) | fn add_tag(&self, commands: &mut EntityCommands);
method add_tag (line 89) | fn add_tag(&self, commands: &mut EntityCommands) {
FILE: src/lib.rs
constant MAX_LAYER_COUNT (line 26) | pub const MAX_LAYER_COUNT: usize = 4;
constant DEFAULT_CHUNK_SIZE (line 27) | pub const DEFAULT_CHUNK_SIZE: u32 = 16;
type EntiTilesPlugin (line 97) | pub struct EntiTilesPlugin;
method build (line 100) | fn build(&self, app: &mut bevy::prelude::App) {
FILE: src/math/ext.rs
type F32Integerize (line 8) | pub trait F32Integerize {
method round_to_i32 (line 9) | fn round_to_i32(self) -> i32;
method ceil_to_i32 (line 10) | fn ceil_to_i32(self) -> i32;
method floor_to_i32 (line 11) | fn floor_to_i32(self) -> i32;
method round_to_u32 (line 12) | fn round_to_u32(self) -> u32;
method ceil_to_u32 (line 13) | fn ceil_to_u32(self) -> u32;
method floor_to_u32 (line 14) | fn floor_to_u32(self) -> u32;
method round_to_i32 (line 19) | fn round_to_i32(self) -> i32 {
method ceil_to_i32 (line 24) | fn ceil_to_i32(self) -> i32 {
method floor_to_i32 (line 29) | fn floor_to_i32(self) -> i32 {
method round_to_u32 (line 34) | fn round_to_u32(self) -> u32 {
method ceil_to_u32 (line 39) | fn ceil_to_u32(self) -> u32 {
method floor_to_u32 (line 44) | fn floor_to_u32(self) -> u32 {
type Vec2Integerize (line 49) | pub trait Vec2Integerize {
method round_to_ivec (line 50) | fn round_to_ivec(self) -> IVec2;
method ceil_to_ivec (line 51) | fn ceil_to_ivec(self) -> IVec2;
method floor_to_ivec (line 52) | fn floor_to_ivec(self) -> IVec2;
method round_to_uvec (line 53) | fn round_to_uvec(self) -> UVec2;
method ceil_to_uvec (line 54) | fn ceil_to_uvec(self) -> UVec2;
method floor_to_uvec (line 55) | fn floor_to_uvec(self) -> UVec2;
method round_to_ivec (line 60) | fn round_to_ivec(self) -> IVec2 {
method ceil_to_ivec (line 65) | fn ceil_to_ivec(self) -> IVec2 {
method floor_to_ivec (line 70) | fn floor_to_ivec(self) -> IVec2 {
method round_to_uvec (line 75) | fn round_to_uvec(self) -> UVec2 {
method ceil_to_uvec (line 83) | fn ceil_to_uvec(self) -> UVec2 {
method floor_to_uvec (line 91) | fn floor_to_uvec(self) -> UVec2 {
type ManhattanDistance (line 99) | pub trait ManhattanDistance<T> {
method manhattan_distance (line 100) | fn manhattan_distance(self, other: Self) -> T;
method manhattan_distance (line 104) | fn manhattan_distance(self, other: Self) -> u32 {
method manhattan_distance (line 111) | fn manhattan_distance(self, other: Self) -> u32 {
type TileIndex (line 117) | pub trait TileIndex<T> {
method neighbours (line 118) | fn neighbours(self, ty: TilemapType, allow_diagonal: bool) -> Vec<Opti...
method neighbours (line 122) | fn neighbours(self, ty: TilemapType, allow_diagonal: bool) -> Vec<Option...
method neighbours (line 160) | fn neighbours(self, ty: TilemapType, allow_diagonal: bool) -> Vec<Option...
type DivToCeil (line 211) | pub trait DivToCeil {
method div_to_ceil (line 212) | fn div_to_ceil(self, other: Self) -> Self;
method div_to_ceil (line 216) | fn div_to_ceil(self, other: Self) -> Self {
method div_to_ceil (line 229) | fn div_to_ceil(self, other: Self) -> Self {
type DivToFloor (line 241) | pub trait DivToFloor {
method div_to_floor (line 242) | fn div_to_floor(self, other: Self) -> Self;
method div_to_floor (line 246) | fn div_to_floor(self, other: Self) -> Self {
method div_to_floor (line 259) | fn div_to_floor(self, other: Self) -> Self {
type ChunkIndex (line 271) | pub trait ChunkIndex {
method chunk_file_name (line 272) | fn chunk_file_name(self) -> String;
method chunk_file_name (line 276) | fn chunk_file_name(self) -> String {
type RectFromTilemap (line 281) | pub trait RectFromTilemap {
method from_tilemap (line 282) | fn from_tilemap(
method from_tilemap (line 294) | fn from_tilemap(
type RectTransformation (line 375) | pub trait RectTransformation<T> {
method with_translation (line 376) | fn with_translation(self, x: T) -> Self;
method translate (line 377) | fn translate(&mut self, x: T);
method with_scale (line 378) | fn with_scale(self, x: T, pivot: T) -> Self;
method scale (line 379) | fn scale(&mut self, x: T, pivot: T);
function test_v2u (line 422) | fn test_v2u() {
FILE: src/math/mod.rs
type EntiTilesMathPlugin (line 20) | pub struct EntiTilesMathPlugin;
method build (line 23) | fn build(&self, app: &mut App) {
type CameraAabb2d (line 32) | pub struct CameraAabb2d(Rect);
function camera_aabb_adder (line 34) | pub fn camera_aabb_adder(
function camera_aabb_updater (line 43) | pub fn camera_aabb_updater(
type GridRect (line 80) | pub struct GridRect {
constant EMPTY (line 93) | pub const EMPTY: Self = Self {
method new (line 101) | pub fn new(origin: IVec2, extent: UVec2) -> Self {
method from_min_max (line 110) | pub fn from_min_max(min: IVec2, max: IVec2) -> Self {
method size (line 119) | pub fn size(&self) -> usize {
method contains (line 124) | pub fn contains(&self, p: IVec2) -> bool {
method union_point (line 129) | pub fn union_point(&self, other: IVec2) -> Self {
method into_rect (line 137) | pub fn into_rect(&self) -> IRect {
method into_rect_inclusive (line 146) | pub fn into_rect_inclusive(&self) -> IRect {
method from_rect (line 155) | pub fn from_rect(rect: IRect) -> Self {
method from_rect_inclusive (line 165) | pub fn from_rect_inclusive(rect: IRect) -> Self {
method default (line 87) | fn default() -> Self {
FILE: src/render/bake.rs
type TilemapBaker (line 32) | pub struct TilemapBaker {
type BakedTilemap (line 39) | pub struct BakedTilemap {
function tilemap_baker (line 48) | pub fn tilemap_baker(
function set_tile (line 179) | fn set_tile(
function set_tile_tint (line 225) | fn set_tile_tint(
function set_pixel (line 252) | fn set_pixel(buffer: &mut [u8], mut image_size: UVec2, pos: UVec2, value...
function get_pixel (line 261) | fn get_pixel(buffer: &[u8], mut image_size: UVec2, pos: UVec2) -> Vec4 {
function alpha_blend (line 272) | fn alpha_blend(a: Vec4, b: Vec4, opacity: f32) -> Vec4 {
function apply_tint (line 278) | fn apply_tint(color: Vec4, tint_linear: Vec4) -> Vec4 {
FILE: src/render/binding.rs
type TilemapBindGroups (line 27) | pub struct TilemapBindGroups<M: TilemapMaterial> {
function bind_tilemap_buffers (line 34) | pub fn bind_tilemap_buffers<M: TilemapMaterial>(
function bind_materials (line 82) | pub fn bind_materials<M: TilemapMaterial>(
function bind_textures (line 106) | pub fn bind_textures<M: TilemapMaterial>(
FILE: src/render/buffer.rs
type TilemapUniform (line 15) | pub struct TilemapUniform {
type GpuTilemapTextureDescriptor (line 30) | pub struct GpuTilemapTextureDescriptor {
type SharedTilemapBuffers (line 39) | pub struct SharedTilemapBuffers {
type UnsharedTilemapBuffers (line 44) | pub struct UnsharedTilemapBuffers {
method new (line 54) | pub fn new(render_device: &RenderDevice) -> Self {
type TilemapBuffers (line 64) | pub struct TilemapBuffers {
function prepare_tilemap_buffers (line 69) | pub fn prepare_tilemap_buffers(
FILE: src/render/chunk.rs
type UnloadRenderChunk (line 38) | pub struct UnloadRenderChunk(pub Vec<IVec2>);
type RenderChunkSort (line 41) | pub enum RenderChunkSort {
type ChunkUnload (line 55) | pub struct ChunkUnload {
type MeshTileData (line 61) | pub struct MeshTileData {
type TilemapRenderChunk (line 74) | pub struct TilemapRenderChunk {
method from_index (line 88) | pub fn from_index(index: IVec2, tilemap: &ExtractedTilemap) -> Self {
method try_update_mesh (line 115) | pub fn try_update_mesh(&mut self, render_device: &RenderDevice) {
method set_tile (line 223) | pub fn set_tile(&mut self, index: usize, tile: Option<&ExtractedTile>) {
type TilemapRenderChunks (line 274) | pub struct TilemapRenderChunks {
method new (line 281) | pub fn new(tilemap: Entity) -> Self {
method try_add_chunk (line 290) | pub fn try_add_chunk(&mut self, chunk_index: IVec2, tilemap: &Extracte...
method remove_chunk (line 301) | pub fn remove_chunk(&mut self, index: IVec2) -> Option<TilemapRenderCh...
method set_tile (line 306) | pub fn set_tile(&mut self, tile: &Tile) {
method remove_tile (line 313) | pub fn remove_tile(&mut self, chunk_index: IVec2, in_chunk_index: usiz...
method try_sort (line 320) | pub fn try_sort(&mut self, f: impl Fn(IVec2, IVec2) -> Ordering + Send...
type RenderChunkStorage (line 329) | pub struct RenderChunkStorage {
method get_chunks (line 343) | pub fn get_chunks(&self, tilemap: Entity) -> Option<&TilemapRenderChun...
method get_or_insert_chunks (line 348) | pub fn get_or_insert_chunks(&mut self, tilemap: Entity) -> &mut Tilema...
method remove_tilemap (line 355) | pub fn remove_tilemap(&mut self, tilemap: Entity) -> Option<TilemapRen...
method sort (line 360) | pub fn sort(&mut self, f: impl Fn(IVec2, IVec2) -> Ordering + Sync + S...
method default (line 334) | fn default() -> Self {
function prepare_chunks (line 365) | pub fn prepare_chunks<M: TilemapMaterial>(
FILE: src/render/cull.rs
type FrustumCulling (line 19) | pub struct FrustumCulling(pub bool);
method default (line 22) | fn default() -> Self {
function cull_tilemaps (line 27) | pub fn cull_tilemaps(
function cull_chunks (line 45) | pub fn cull_chunks(
FILE: src/render/draw.rs
type DrawTilemapTextured (line 28) | pub type DrawTilemapTextured<M> = (
type DrawTilemapNonTextured (line 37) | pub type DrawTilemapNonTextured<M> = (
type SetTilemapUniformBufferBindGroup (line 45) | pub struct SetTilemapUniformBufferBindGroup<const I: usize, M: TilemapMa...
type Param (line 49) | type Param = (SRes<TilemapBindGroups<M>>, SRes<TilemapBuffers>);
type ViewQuery (line 51) | type ViewQuery = Read<ViewUniformOffset>;
type ItemQuery (line 53) | type ItemQuery = ();
function render (line 56) | fn render<'w>(
type SetTilemapMaterialBindGroup (line 85) | pub struct SetTilemapMaterialBindGroup<const I: usize, M: TilemapMateria...
type Param (line 89) | type Param = (SRes<TilemapBindGroups<M>>, SRes<TilemapMaterialIds<M>>);
type ViewQuery (line 91) | type ViewQuery = ();
type ItemQuery (line 93) | type ItemQuery = ();
function render (line 96) | fn render<'w>(
type SetTilemapArrayBufferBindGroup (line 121) | pub struct SetTilemapArrayBufferBindGroup<const I: usize, M: TilemapMate...
type Param (line 125) | type Param = SRes<TilemapBindGroups<M>>;
type ViewQuery (line 127) | type ViewQuery = ();
type ItemQuery (line 129) | type ItemQuery = ();
function render (line 132) | fn render<'w>(
type SetTilemapColorTextureBindGroup (line 157) | pub struct SetTilemapColorTextureBindGroup<const I: usize, M: TilemapMat...
type Param (line 161) | type Param = (SRes<TilemapBindGroups<M>>, SRes<TilemapInstances>);
type ViewQuery (line 163) | type ViewQuery = ();
type ItemQuery (line 165) | type ItemQuery = ();
function render (line 168) | fn render<'w>(
type DrawTileMesh (line 202) | pub struct DrawTileMesh<M: TilemapMaterial>(PhantomData<M>);
type Param (line 204) | type Param = SRes<RenderChunkStorage>;
type ViewQuery (line 206) | type ViewQuery = ();
type ItemQuery (line 208) | type ItemQuery = ();
function render (line 211) | fn render<'w>(
FILE: src/render/extract.rs
type TilemapInstances (line 33) | pub type TilemapInstances = ExtractedInstances<ExtractedTilemap>;
type TilemapMaterialIds (line 35) | pub type TilemapMaterialIds<M> = ExtractedInstances<AssetId<M>>;
type ExtractedTilemap (line 38) | pub struct ExtractedTilemap {
type QueryData (line 53) | type QueryData = (
type QueryFilter (line 67) | type QueryFilter = ();
method extract (line 69) | fn extract(item: QueryItem<'_, Self::QueryData>) -> Option<Self> {
type ExtractedTile (line 110) | pub type ExtractedTile = Tile;
type ExtractedView (line 112) | pub type ExtractedView = CameraAabb2d;
function extract_tiles (line 114) | pub fn extract_tiles(
function extract_view (line 138) | pub fn extract_view(
function extract_unloaded_chunks (line 150) | pub fn extract_unloaded_chunks(
function extract_resources (line 163) | pub fn extract_resources(
function extract_despawned_tilemaps (line 172) | pub fn extract_despawned_tilemaps(
function extract_despawned_tiles (line 185) | pub fn extract_despawned_tiles(
FILE: src/render/material.rs
type EntiTilesMaterialPlugin (line 32) | pub struct EntiTilesMaterialPlugin<M: TilemapMaterial>(PhantomData<M>);
method build (line 35) | fn build(&self, app: &mut App) {
method finish (line 75) | fn finish(&self, app: &mut bevy::prelude::App) {
type TilemapMaterial (line 84) | pub trait TilemapMaterial: Default + Asset + AsBindGroup + TypePath + Cl...
method vertex_shader (line 85) | fn vertex_shader() -> ShaderRef {
method fragment_shader (line 89) | fn fragment_shader() -> ShaderRef {
method specialize (line 94) | fn specialize(descriptor: &mut RenderPipelineDescriptor) {}
method vertex_shader (line 136) | fn vertex_shader() -> ShaderRef {
method fragment_shader (line 140) | fn fragment_shader() -> ShaderRef {
type ExtractedTilemapMaterialWrapper (line 98) | pub struct ExtractedTilemapMaterialWrapper<M: TilemapMaterial>(M);
type SourceAsset (line 104) | type SourceAsset = M;
type Param (line 106) | type Param = ();
method prepare_asset (line 109) | fn prepare_asset(
type StandardTilemapUniform (line 118) | pub struct StandardTilemapUniform {
method from (line 123) | fn from(value: &StandardTilemapMaterial) -> Self {
type StandardTilemapMaterial (line 131) | pub struct StandardTilemapMaterial {
FILE: src/render/mod.rs
constant SQUARE (line 38) | pub const SQUARE: Handle<Shader> = Handle::weak_from_u128(54311635145631);
constant ISOMETRIC (line 39) | pub const ISOMETRIC: Handle<Shader> = Handle::weak_from_u128(45522415151...
constant HEXAGONAL (line 40) | pub const HEXAGONAL: Handle<Shader> = Handle::weak_from_u128(34165841321...
constant COMMON (line 41) | pub const COMMON: Handle<Shader> = Handle::weak_from_u128(13210231356163...
constant TILEMAP_SHADER (line 42) | pub const TILEMAP_SHADER: Handle<Shader> = Handle::weak_from_u128(896465...
constant TILEMAP_MESH_ATTR_INDEX (line 44) | pub const TILEMAP_MESH_ATTR_INDEX: MeshVertexAttribute =
constant TILEMAP_MESH_ATTR_COLOR (line 46) | pub const TILEMAP_MESH_ATTR_COLOR: MeshVertexAttribute =
constant TILEMAP_MESH_ATTR_ATLAS_INDICES (line 48) | pub const TILEMAP_MESH_ATTR_ATLAS_INDICES: MeshVertexAttribute =
constant TILEMAP_MESH_ATTR_TEX_INDICES (line 51) | pub const TILEMAP_MESH_ATTR_TEX_INDICES: MeshVertexAttribute =
type EntiTilesRendererPlugin (line 55) | pub struct EntiTilesRendererPlugin;
method build (line 58) | fn build(&self, app: &mut App) {
FILE: src/render/pipeline.rs
type EntiTilesPipeline (line 33) | pub struct EntiTilesPipeline<M: TilemapMaterial> {
type EntiTilesPipelineKey (line 44) | pub struct EntiTilesPipelineKey {
method from_world (line 55) | fn from_world(world: &mut World) -> Self {
type Key (line 125) | type Key = EntiTilesPipelineKey;
method specialize (line 127) | fn specialize(&self, key: Self::Key) -> RenderPipelineDescriptor {
FILE: src/render/prepare.rs
function prepare_tiles (line 17) | pub fn prepare_tiles<M: TilemapMaterial>(
function prepare_unloaded_chunks (line 33) | pub fn prepare_unloaded_chunks<M: TilemapMaterial>(
function prepare_despawned_tilemaps (line 44) | pub fn prepare_despawned_tilemaps<M: TilemapMaterial>(
function prepare_despawned_tiles (line 57) | pub fn prepare_despawned_tiles<M: TilemapMaterial>(
function sort_chunks (line 68) | pub fn sort_chunks<M: TilemapMaterial>(
FILE: src/render/queue.rs
function queue_tilemaps (line 20) | pub fn queue_tilemaps<M: TilemapMaterial>(
FILE: src/render/texture.rs
type TilemapTexturesStorage (line 28) | pub struct TilemapTexturesStorage {
method insert (line 35) | pub fn insert(&mut self, textures: Handle<TilemapTextures>) {
method get_texture (line 43) | pub fn get_texture(&self, handle: &Handle<TilemapTextures>) -> Option<...
method contains (line 47) | pub fn contains(&self, handle: &Handle<TilemapTextures>) -> bool {
function set_texture_usage (line 54) | pub fn set_texture_usage(
function schedule_tilemap_texture_preparation (line 93) | pub fn schedule_tilemap_texture_preparation(
function prepare_tilemap_textures (line 107) | pub fn prepare_tilemap_textures(
function queue_tilemap_textures (line 192) | pub fn queue_tilemap_textures(
function prepare_tilemap_textures (line 271) | pub fn prepare_tilemap_textures(
function queue_tilemap_textures (line 355) | pub fn queue_tilemap_textures(
FILE: src/serializing/chunk/load.rs
type ScheduledLoadChunks (line 38) | pub struct ScheduledLoadChunks;
type ChunkLoadConfig (line 41) | pub struct ChunkLoadConfig {
type ChunkLoadCache (line 47) | pub struct ChunkLoadCache(pub(crate) EntityHashMap<HashMap<TilemapLayer,...
method schedule (line 51) | pub fn schedule(
method schedule_many (line 70) | pub fn schedule_many(
method pop_chunk (line 88) | pub fn pop_chunk(&mut self, tilemap: Entity, layer: TilemapLayer) -> O...
function load_color_layer (line 98) | pub fn load_color_layer(
function load_path_layer (line 161) | pub fn load_path_layer(
function load_physics_layer (line 209) | pub fn load_physics_layer(
FILE: src/serializing/chunk/mod.rs
constant TILE_CHUNKS_FOLDER (line 18) | pub const TILE_CHUNKS_FOLDER: &str = "tile_chunks";
constant PATH_TILE_CHUNKS_FOLDER (line 19) | pub const PATH_TILE_CHUNKS_FOLDER: &str = "path_tile_chunks";
constant PHYSICS_TILE_CHUNKS_FOLDER (line 20) | pub const PHYSICS_TILE_CHUNKS_FOLDER: &str = "physics_tile_chunks";
type EntiTilesChunkSerializingPlugin (line 22) | pub struct EntiTilesChunkSerializingPlugin;
method build (line 25) | fn build(&self, app: &mut App) {
function chunk_tag_remover (line 54) | fn chunk_tag_remover(
FILE: src/serializing/chunk/save.rs
type ScheduledSaveChunks (line 40) | pub struct ScheduledSaveChunks;
type ChunkSaveConfig (line 43) | pub struct ChunkSaveConfig {
type ChunkSaveCache (line 49) | pub struct ChunkSaveCache(pub(crate) EntityHashMap<HashMap<TilemapLayer,...
method schedule (line 53) | pub fn schedule(
method schedule_many (line 73) | pub fn schedule_many(
method pop_chunk (line 91) | pub fn pop_chunk(&mut self, tilemap: Entity, layer: TilemapLayer) -> O...
function render_chunk_remover (line 101) | pub fn render_chunk_remover(mut tilemaps_query: Query<(&mut TilemapStora...
function save_color_layer (line 111) | pub fn save_color_layer(
function save_path_layer (line 185) | pub fn save_path_layer(
function save_physics_layer (line 258) | pub fn save_physics_layer(
FILE: src/serializing/map/load.rs
type TilemapLoader (line 42) | pub struct TilemapLoader {
function load (line 58) | pub fn load<M: TilemapMaterial + DeserializeOwned>(
function complete (line 197) | fn complete(commands: &mut Commands, entity: Entity, bundle: impl Bundle...
FILE: src/serializing/map/mod.rs
constant TILEMAP_META (line 26) | pub const TILEMAP_META: &str = "tilemap.ron";
constant TILES (line 27) | pub const TILES: &str = "tiles.ron";
constant PATH_TILES (line 28) | pub const PATH_TILES: &str = "path_tiles.ron";
constant PHYSICS_TILES (line 29) | pub const PHYSICS_TILES: &str = "physics_tiles.ron";
type EntiTilesTilemapSerializingPlugin (line 35) | pub struct EntiTilesTilemapSerializingPlugin<M: TilemapMaterial + Serial...
method build (line 42) | fn build(&self, app: &mut App) {
type SerializedTilemapData (line 48) | pub struct SerializedTilemapData<M: TilemapMaterial> {
type SerializedTilemap (line 54) | pub struct SerializedTilemap<M: TilemapMaterial> {
function from_tilemap (line 70) | pub fn from_tilemap(
function into_tilemap (line 112) | pub fn into_tilemap(
function into_pure_color_tilemap (line 138) | pub fn into_pure_color_tilemap(&self, tilemap: Entity) -> StandardPureCo...
type SerializedTilemapTexture (line 158) | pub struct SerializedTilemapTexture {
type SerializedFilterMode (line 164) | pub enum SerializedFilterMode {
method from (line 170) | fn from(value: FilterMode) -> Self {
method into (line 179) | fn into(self) -> FilterMode {
FILE: src/serializing/map/save.rs
type TilemapSaverMode (line 39) | pub enum TilemapSaverMode {
type TilemapSaver (line 45) | pub struct TilemapSaver {
function save (line 68) | pub fn save<M: TilemapMaterial + Serialize>(
FILE: src/serializing/mod.rs
type EntiTilesSerializingPlugin (line 14) | pub struct EntiTilesSerializingPlugin<M: TilemapMaterial + Serialize + D...
method build (line 19) | fn build(&self, app: &mut bevy::prelude::App) {
function save_object (line 27) | pub fn save_object<T: Serialize>(path: &Path, file_name: &str, object: &...
function load_object (line 36) | pub fn load_object<T: for<'a> Deserialize<'a>>(
FILE: src/serializing/pattern.rs
type TilemapPattern (line 20) | pub struct TilemapPattern {
method new (line 31) | pub fn new(label: Option<String>) -> Self {
type PatternsLayer (line 46) | pub struct PatternsLayer {
method new (line 54) | pub fn new(
method get (line 81) | pub fn get(&self, index: usize) -> &TilemapPattern {
method iter (line 85) | pub fn iter(&self) -> impl Iterator<Item = &TilemapPattern> {
type PatternElementSlice (line 90) | pub struct PatternElementSlice<'a> {
type PackedPatternLayers (line 100) | pub struct PackedPatternLayers {
method new (line 106) | pub fn new(pattern_size: UVec2, layers: Vec<PatternsLayer>) -> Self {
method get_layer (line 123) | pub fn get_layer(&self, index: usize) -> &PatternsLayer {
method get_element (line 128) | pub fn get_element(&self, index: usize) -> PatternElementSlice {
FILE: src/shaders/mod.rs
type EntiTilesShaderPlugin (line 7) | pub struct EntiTilesShaderPlugin;
constant MATH_SHADER (line 9) | pub const MATH_SHADER: Handle<Shader> = Handle::weak_from_u128(683541654...
method build (line 12) | fn build(&self, app: &mut bevy::prelude::App) {
FILE: src/tiled/app_ext.rs
type TiledApp (line 8) | pub trait TiledApp {
method register_tiled_object (line 9) | fn register_tiled_object<T: TiledObject + Bundle>(&mut self, ident: &s...
method register_tiled_custom_tile (line 10) | fn register_tiled_custom_tile<T: TiledCustomTile + Bundle>(&mut self, ...
method register_tiled_object (line 15) | fn register_tiled_object<T: TiledObject + Bundle>(&mut self, ident: &s...
method register_tiled_custom_tile (line 32) | fn register_tiled_custom_tile<T: TiledCustomTile + Bundle>(
FILE: src/tiled/components.rs
type TiledUnloadLayer (line 7) | pub struct TiledUnloadLayer;
type TiledLoadedTilemap (line 10) | pub struct TiledLoadedTilemap {
method unload (line 17) | pub fn unload(&self, commands: &mut Commands) {
type TiledGlobalObject (line 32) | pub struct TiledGlobalObject;
FILE: src/tiled/events.rs
type TiledMapEvent (line 6) | pub enum TiledMapEvent {
type TiledMapLoader (line 12) | pub struct TiledMapLoader {
type TiledMapUnloader (line 19) | pub struct TiledMapUnloader {
FILE: src/tiled/mod.rs
constant TILED_SPRITE_SHADER (line 55) | pub const TILED_SPRITE_SHADER: Handle<Shader> = Handle::weak_from_u128(1...
type EntiTilesTiledPlugin (line 57) | pub struct EntiTilesTiledPlugin;
method build (line 60) | fn build(&self, app: &mut bevy::prelude::App) {
function tiled_asset_event_handler (line 94) | pub fn tiled_asset_event_handler(
function unload_tiled_tilemap (line 127) | fn unload_tiled_tilemap(
function unload_tiled_layer (line 149) | fn unload_tiled_layer(
function load_tiled_xml (line 162) | fn load_tiled_xml(
function load_tiled_tilemap (line 225) | fn load_tiled_tilemap(
function load_group (line 278) | fn load_group(
function load_layer (line 324) | fn load_layer(
FILE: src/tiled/resources.rs
type TiledLoadConfig (line 40) | pub struct TiledLoadConfig {
type PackedTiledTilemap (line 47) | pub struct PackedTiledTilemap {
type TiledTilemapLoaderError (line 55) | pub enum TiledTilemapLoaderError {
type TiledTilemapLoader (line 63) | pub struct TiledTilemapLoader;
type Asset (line 66) | type Asset = PackedTiledTilemap;
type Settings (line 68) | type Settings = ();
type Error (line 70) | type Error = TiledTilemapLoaderError;
method load (line 72) | async fn load<'a>(
type TiledTilesetLoaderError (line 102) | pub enum TiledTilesetLoaderError {
type TiledTilesetLoader (line 110) | pub struct TiledTilesetLoader;
type Asset (line 113) | type Asset = TiledTileset;
type Settings (line 115) | type Settings = ();
type Error (line 117) | type Error = TiledTilemapLoaderError;
method load (line 119) | async fn load<'a>(
type TiledCustomTileInstance (line 132) | pub struct TiledCustomTileInstance {
type PackedTiledTileset (line 138) | pub struct PackedTiledTileset {
type TiledLoadedMaps (line 146) | pub struct TiledLoadedMaps(pub(crate) HashMap<AssetId<PackedTiledTilemap...
method unload_all (line 150) | pub fn unload_all(&self, event_writer: &mut EventWriter<TiledMapEvent>) {
type TiledTilesetMeta (line 159) | pub struct TiledTilesetMeta {
type TiledTilemapToAssets (line 166) | pub struct TiledTilemapToAssets(
type TiledAssets (line 174) | pub struct TiledAssets {
method get_tileset (line 190) | pub fn get_tileset(&self, tile_id: u32) -> (&PackedTiledTileset, Tiled...
method get_tileset_meta (line 195) | pub fn get_tileset_meta(&self, tile_id: u32) -> TiledTilesetMeta {
method get_tilemap_data (line 204) | pub fn get_tilemap_data(&self) -> (Handle<TilemapTextures>, TilemapAni...
method clone_image_layer_mesh_handle (line 208) | pub fn clone_image_layer_mesh_handle(&self, layer: u32) -> (Handle<Mes...
method clone_image_layer_material_handle (line 212) | pub fn clone_image_layer_material_handle(&self, layer: u32) -> Handle<...
method clone_object_mesh_handle (line 216) | pub fn clone_object_mesh_handle(&self, object: u32) -> Handle<Mesh> {
method get_object_z_order (line 220) | pub fn get_object_z_order(&self, object: u32) -> f32 {
method clone_object_material_handle (line 224) | pub fn clone_object_material_handle(&self, object: u32) -> Handle<Tile...
method new (line 228) | pub fn new(
method load_tilesets (line 242) | fn load_tilesets(
method load_layers (line 348) | fn load_layers(
method load_groups (line 373) | fn load_groups(
method load_image_layers (line 400) | fn load_image_layers(
method load_objects (line 577) | fn load_objects(
FILE: src/tiled/sprite.rs
type SpriteUniform (line 15) | pub struct SpriteUniform {
type TiledSpriteMaterial (line 22) | pub struct TiledSpriteMaterial {
method fragment_shader (line 31) | fn fragment_shader() -> bevy::render::render_resource::ShaderRef {
FILE: src/tiled/traits.rs
type TiledObjectRegistry (line 14) | pub type TiledObjectRegistry = HashMap<String, Box<dyn PhantomTiledObjec...
type TiledObject (line 16) | pub trait TiledObject {
method initialize (line 17) | fn initialize(
type PhantomTiledObject (line 26) | pub struct PhantomTiledObject<T: TiledObject + Bundle> {
function new (line 31) | pub fn new() -> Self {
type PhantomTiledObjectTrait (line 38) | pub trait PhantomTiledObjectTrait {
method initialize (line 39) | fn initialize(
method initialize (line 50) | fn initialize(
type TiledCustomTileRegistry (line 68) | pub type TiledCustomTileRegistry = HashMap<String, Box<dyn PhantomTiledC...
type TiledCustomTile (line 70) | pub trait TiledCustomTile {
method initialize (line 71) | fn initialize(
type PhantomTiledCustomTile (line 80) | pub struct PhantomTiledCustomTile<T: TiledCustomTile + Bundle> {
function new (line 85) | pub fn new() -> Self {
type PhantomTiledCustomTileTrait (line 92) | pub trait PhantomTiledCustomTileTrait {
method initialize (line 93) | fn initialize(
method initialize (line 104) | fn initialize(
type TiledClass (line 122) | pub trait TiledClass {
method create (line 123) | fn create(classes: &HashMap<String, ClassInstance>) -> Self;
type TiledEnum (line 126) | pub trait TiledEnum {
method get_identifier (line 127) | fn get_identifier(ident: &str) -> Self;
FILE: src/tiled/xml/default.rs
function default_onef (line 3) | pub(crate) fn default_onef() -> f32 {
function default_true (line 7) | pub(crate) fn default_true() -> bool {
function default_white (line 11) | pub(crate) fn default_white() -> TiledColor {
FILE: src/tiled/xml/layer.rs
type TiledLayer (line 34) | pub enum TiledLayer {
type ColorTileLayer (line 46) | pub struct ColorTileLayer {
type ColorTileLayerData (line 129) | pub enum ColorTileLayerData {
method deserialize (line 135) | fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
type TileData (line 191) | pub struct TileData {
type ChunkData (line 211) | pub struct ChunkData {
type DataEncoding (line 232) | pub enum DataEncoding {
type DataCompression (line 239) | pub enum DataCompression {
type Tiles (line 248) | pub struct Tiles(pub Vec<u32>);
method deserialize (line 251) | fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
method iter_decoded (line 281) | pub fn iter_decoded<'a>(
type Chunk (line 345) | pub struct Chunk {
type ObjectLayer (line 367) | pub struct ObjectLayer {
type TiledObjectInstance (line 440) | pub struct TiledObjectInstance {
method deserialize (line 491) | fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
method spawn_sprite (line 568) | pub fn spawn_sprite(&self, commands: &mut EntityCommands, tiled_assets...
method instantiate_shape (line 579) | pub fn instantiate_shape(&self, commands: &mut EntityCommands) {
method instantiate_shape (line 595) | pub fn instantiate_shape(&self, commands: &mut EntityCommands) {
type TiledPointObject (line 643) | pub struct TiledPointObject(pub Vec2);
type ObjectShape (line 647) | pub enum ObjectShape {
type Polygon (line 656) | pub struct Polygon {
method deserialize (line 661) | fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
type ImageLayer (line 706) | pub struct ImageLayer {
type Image (line 791) | pub struct Image {
function test_deserialize_polygon (line 813) | fn test_deserialize_polygon() {
FILE: src/tiled/xml/mod.rs
type TiledXml (line 22) | pub struct TiledXml {
type MapOrientation (line 120) | pub enum MapOrientation {
method as_tilemap_type (line 128) | pub fn as_tilemap_type(self, leg: u32) -> TilemapType {
type TileRenderOrder (line 140) | pub enum TileRenderOrder {
type StaggeredAxis (line 149) | pub enum StaggeredAxis {
type StaggerIndex (line 157) | pub enum StaggerIndex {
method into (line 164) | fn into(self) -> StaggerMode {
method get_offset (line 173) | pub fn get_offset(self) -> Vec2 {
type TiledColor (line 182) | pub struct TiledColor {
method from (line 190) | fn from(value: String) -> Self {
method into (line 207) | fn into(self) -> Color {
method into (line 213) | fn into(self) -> Vec4 {
method deserialize (line 219) | fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
type TilesetDef (line 244) | pub struct TilesetDef {
type TiledGroup (line 265) | pub struct TiledGroup {
function test_parse (line 360) | fn test_parse() {
FILE: src/tiled/xml/property.rs
type Components (line 10) | pub struct Components {
type ClassInstance (line 16) | pub struct ClassInstance {
method deserialize (line 23) | fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
type PropertyInstance (line 91) | pub struct PropertyInstance {
method deserialize (line 98) | fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
method into (line 206) | fn into(self) -> Color {
type PropertyValue (line 215) | pub enum PropertyValue {
FILE: src/tiled/xml/tileset.rs
type TiledTileset (line 8) | pub struct TiledTileset {
type ObjectAlignment (line 87) | pub enum ObjectAlignment {
type FillMode (line 103) | pub enum FillMode {
type TilesetImage (line 110) | pub struct TilesetImage {
type TilesetTransformations (line 129) | pub struct TilesetTransformations {
type TiledTile (line 153) | pub struct TiledTile {
type TiledAnimation (line 202) | pub struct TiledAnimation {
type TiledAnimationFrame (line 208) | pub struct TiledAnimationFrame {
FILE: src/tilemap/algorithm/mod.rs
type EntiTilesAlgorithmTilemapPlugin (line 7) | pub struct EntiTilesAlgorithmTilemapPlugin;
method build (line 10) | fn build(&self, app: &mut bevy::prelude::App) {
FILE: src/tilemap/algorithm/path.rs
type PathTile (line 14) | pub struct PathTile {
type PathTilemap (line 23) | pub struct PathTilemap {
method new (line 31) | pub fn new() -> Self {
method new_with_chunk_size (line 38) | pub fn new_with_chunk_size(chunk_size: u32) -> Self {
method get (line 44) | pub fn get(&self, index: IVec2) -> Option<&PathTile> {
method get_mut (line 48) | pub fn get_mut(&mut self, index: IVec2) -> Option<&mut PathTile> {
method set (line 52) | pub fn set(&mut self, index: IVec2, tile: PathTile) {
method remove (line 56) | pub fn remove(&mut self, index: IVec2) -> Option<PathTile> {
method fill_path_rect_custom (line 61) | pub fn fill_path_rect_custom(
method fill_path_rect (line 77) | pub fn fill_path_rect(&mut self, area: GridRect, path_tile: PathTile) {
method fill_with_buffer (line 86) | pub fn fill_with_buffer(&mut self, origin: IVec2, buffer: PathTileBuff...
FILE: src/tilemap/buffers.rs
type Tiles (line 11) | pub trait Tiles: Debug + Clone + Reflect {}
type ColorTileBuffer (line 13) | pub type ColorTileBuffer = TileBuffer<Tile>;
type TileBuilderBuffer (line 14) | pub type TileBuilderBuffer = TileBuffer<TileBuilder>;
type PathTileBuffer (line 16) | pub type PathTileBuffer = TileBuffer<crate::tilemap::algorithm::path::Pa...
type PhysicsTileBuffer (line 18) | pub type PhysicsTileBuffer = TileBuffer<crate::tilemap::physics::Physics...
type PackedPhysicsTileBuffer (line 20) | pub type PackedPhysicsTileBuffer = TileBuffer<crate::tilemap::physics::P...
type TileBuffer (line 25) | pub struct TileBuffer<T: Tiles> {
function new (line 31) | pub fn new() -> Self {
function set (line 40) | pub fn set(&mut self, index: IVec2, tile: T) {
function remove (line 46) | pub fn remove(&mut self, index: IVec2) {
function get (line 52) | pub fn get(&self, index: IVec2) -> Option<&T> {
function get_mut (line 57) | pub fn get_mut(&mut self, index: IVec2) -> Option<&mut T> {
function recalculate_rect (line 64) | pub fn recalculate_rect(&mut self) {
function is_empty (line 72) | pub fn is_empty(&self) -> bool {
function aabb (line 77) | pub fn aabb(&self) -> GridRect {
FILE: src/tilemap/bundles.rs
type TilemapBundles (line 18) | pub enum TilemapBundles {
type DataTilemapBundle (line 26) | pub struct DataTilemapBundle {
method into (line 36) | fn into(self) -> StandardTilemapBundle {
type MaterialTilemapBundle (line 50) | pub struct MaterialTilemapBundle<M: TilemapMaterial> {
type StandardTilemapBundle (line 72) | pub struct StandardTilemapBundle {
method into (line 93) | fn into(self) -> DataTilemapBundle {
method into (line 106) | fn into(self) -> StandardPureColorTilemapBundle {
type PureColorTilemapBundle (line 130) | pub struct PureColorTilemapBundle<M: TilemapMaterial> {
type StandardPureColorTilemapBundle (line 150) | pub struct StandardPureColorTilemapBundle {
method convert_to_texture_bundle (line 168) | pub fn convert_to_texture_bundle(
FILE: src/tilemap/chunking/camera.rs
type CameraChunkUpdation (line 23) | pub enum CameraChunkUpdation {
type CameraChunkUpdater (line 30) | pub struct CameraChunkUpdater {
method new (line 43) | pub fn new(detect_scale: f32, update_scale: f32) -> Self {
function camera_chunk_update (line 57) | pub fn camera_chunk_update(
FILE: src/tilemap/chunking/storage.rs
type ChunkIndex (line 11) | pub type ChunkIndex = IVec2;
type InChunkIndex (line 12) | pub type InChunkIndex = usize;
type EntityChunkedStorage (line 14) | pub type EntityChunkedStorage = ChunkedStorage<Entity>;
type ColorTileChunkedStorage (line 15) | pub type ColorTileChunkedStorage = ChunkedStorage<Tile>;
type TileBuilderChunkedStorage (line 16) | pub type TileBuilderChunkedStorage = ChunkedStorage<TileBuilder>;
type PathTileChunkedStorage (line 18) | pub type PathTileChunkedStorage = ChunkedStorage<crate::tilemap::algorit...
type PhysicsTileChunkedStorage (line 20) | pub type PhysicsTileChunkedStorage = ChunkedStorage<crate::tilemap::phys...
type PackedPhysicsTileChunkedStorage (line 22) | pub type PackedPhysicsTileChunkedStorage =
type ChunkedStorage (line 27) | pub struct ChunkedStorage<T: Debug + Clone + Reflect> {
method default (line 33) | fn default() -> Self {
function new (line 42) | pub fn new(chunk_size: u32) -> Self {
function from_mapper (line 49) | pub fn from_mapper(mapper: HashMap<IVec2, T>, chunk_size: u32) -> Self {
function rearrange (line 57) | pub fn rearrange(&mut self, chunk_size: u32) {
function get_elem (line 65) | pub fn get_elem(&self, index: IVec2) -> Option<&T> {
function get_elem_mut (line 73) | pub fn get_elem_mut(&mut self, index: IVec2) -> Option<&mut T> {
function set_elem (line 82) | pub fn set_elem(&mut self, index: IVec2, elem: T) {
function set_elem_precise (line 90) | pub fn set_elem_precise(&mut self, chunk_index: IVec2, in_chunk_index: u...
function remove_elem (line 97) | pub fn remove_elem(&mut self, index: IVec2) -> Option<T> {
function remove_chunk (line 102) | pub fn remove_chunk(&mut self, index: IVec2) -> Option<Vec<Option<T>>> {
function clear (line 106) | pub fn clear(&mut self) {
function get_chunk (line 111) | pub fn get_chunk(&self, index: IVec2) -> Option<&Vec<Option<T>>> {
function get_chunk_mut (line 116) | pub fn get_chunk_mut(&mut self, index: IVec2) -> Option<&mut Vec<Option<...
function get_chunk_or_insert (line 121) | pub fn get_chunk_or_insert(&mut self, index: IVec2) -> &mut Vec<Option<T...
function set_chunk (line 128) | pub fn set_chunk(&mut self, index: IVec2, chunk: Vec<Option<T>>) {
function transform_index (line 132) | pub fn transform_index(&self, index: IVec2) -> (ChunkIndex, InChunkIndex) {
function inverse_transform_index (line 139) | pub fn inverse_transform_index(&self, chunk_index: IVec2, in_chunk_index...
function into_mapper (line 148) | pub fn into_mapper(mut self) -> HashMap<IVec2, T> {
function iter (line 168) | pub fn iter(&self) -> impl Iterator<Item = &Option<T>> {
function iter_mut (line 173) | pub fn iter_mut(&mut self) -> impl Iterator<Item = &mut Option<T>> {
function iter_some (line 178) | pub fn iter_some(&self) -> impl Iterator<Item = &T> {
function iter_some_mut (line 183) | pub fn iter_some_mut(&mut self) -> impl Iterator<Item = &mut T> {
function chunked_iter_some (line 188) | pub fn chunked_iter_some(&self) -> impl Iterator<Item = (ChunkIndex, InC...
FILE: src/tilemap/coordinates.rs
function index_to_world (line 6) | pub fn index_to_world(
function index_to_rel (line 34) | pub fn index_to_rel(
function get_tile_collider (line 45) | pub fn get_tile_collider(
function get_tile_collider_world (line 135) | pub fn get_tile_collider_world(
function calculate_map_size (line 151) | pub fn calculate_map_size(size: UVec2, slot_size: Vec2, ty: TilemapType)...
function calculate_map_size_staggered (line 170) | pub fn calculate_map_size_staggered(size: UVec2, slot_size: Vec2, leg: u...
function get_tilemap_axis (line 186) | pub fn get_tilemap_axis(ty: TilemapType, slot_size: Vec2, flip: TilemapA...
type StaggerMode (line 204) | pub enum StaggerMode {
function staggerize_index (line 210) | pub fn staggerize_index(index: IVec2, staggered_mode: StaggerMode) -> IV...
function destaggerize_index (line 218) | pub fn destaggerize_index(index: IVec2, staggered_mode: StaggerMode) -> ...
function test_calc_staggered_size (line 230) | fn test_calc_staggered_size() {
FILE: src/tilemap/despawn.rs
type DespawnMe (line 15) | pub struct DespawnMe;
type DespawnedTilemap (line 19) | pub struct DespawnedTilemap(pub Entity);
type DespawnedTile (line 23) | pub struct DespawnedTile {
function despawn_component_remover (line 32) | pub fn despawn_component_remover(mut commands: Commands, query: Query<En...
function despawn_tilemap (line 41) | pub fn despawn_tilemap(
function despawn_tiles (line 55) | pub fn despawn_tiles(mut commands: Commands, query: Query<(Entity, &Tile...
function despawn_physics_tilemaps (line 71) | pub fn despawn_physics_tilemaps(
FILE: src/tilemap/map.rs
type TilemapType (line 36) | pub enum TilemapType {
type TilemapRotation (line 46) | pub enum TilemapRotation {
type TilemapTransform (line 57) | pub struct TilemapTransform {
constant IDENTITY (line 65) | pub const IDENTITY: Self = Self {
method from_translation (line 72) | pub fn from_translation(translation: Vec2) -> Self {
method from_translation_3d (line 80) | pub fn from_translation_3d(translation: Vec2, z: f32) -> Self {
method from_z_index (line 89) | pub fn from_z_index(z: f32) -> Self {
method transform_point (line 97) | pub fn transform_point(&self, point: Vec2) -> Vec2 {
method transform_rect (line 101) | pub fn transform_rect(&self, aabb: Rect) -> Rect {
method get_rotation_matrix (line 114) | pub fn get_rotation_matrix(&self) -> Mat2 {
method get_rotation_quat (line 124) | pub fn get_rotation_quat(&self) -> Quat {
method apply_rotation (line 134) | pub fn apply_rotation(&self, point: Vec2) -> Vec2 {
method apply_translation (line 144) | pub fn apply_translation(&self, point: Vec2) -> Vec2 {
method into (line 150) | fn into(self) -> Transform {
method default (line 170) | fn default() -> Self {
method as_vec2 (line 177) | pub fn as_vec2(self) -> Vec2 {
type TilemapTextures (line 190) | pub struct TilemapTextures {
method single (line 213) | pub fn single(texture: TilemapTexture, filter_mode: FilterMode) -> Self {
method new (line 217) | pub fn new(textures: Vec<TilemapTexture>, filter_mode: FilterMode) -> ...
method assert_uniform_tile_size (line 240) | pub fn assert_uniform_tile_size(&self) {
method total_tile_count (line 250) | pub fn total_tile_count(&self) -> u32 {
method iter_packed (line 256) | pub fn iter_packed(&self) -> impl Iterator<Item = (&TilemapTexture, u3...
type SourceAsset (line 200) | type SourceAsset = Self;
type Param (line 202) | type Param = ();
method prepare_asset (line 204) | fn prepare_asset(
type TilemapTexture (line 263) | pub struct TilemapTexture {
method new (line 269) | pub fn new(texture: Handle<Image>, desc: TilemapTextureDescriptor) -> ...
method clone_weak (line 274) | pub fn clone_weak(&self) -> Handle<Image> {
method desc (line 279) | pub fn desc(&self) -> &TilemapTextureDescriptor {
method handle (line 284) | pub fn handle(&self) -> &Handle<Image> {
method tile_count (line 289) | pub fn tile_count(&self) -> u32 {
method as_atlas_layout (line 294) | pub fn as_atlas_layout(&self) -> TextureAtlasLayout {
method get_atlas_rect (line 305) | pub fn get_atlas_rect(&self, index: u32) -> Rect {
method get_atlas_urect (line 316) | pub fn get_atlas_urect(&self, index: u32) -> URect {
type WaitForTextureUsageChange (line 327) | pub struct WaitForTextureUsageChange;
type TilemapTextureDescriptor (line 332) | pub struct TilemapTextureDescriptor {
method new (line 338) | pub fn new(size: UVec2, tile_size: UVec2) -> Self {
type TilemapName (line 351) | pub struct TilemapName(pub String);
type TileRenderSize (line 366) | pub struct TileRenderSize(pub Vec2);
type TilemapSlotSize (line 384) | pub struct TilemapSlotSize(pub Vec2);
type TilePivot (line 399) | pub struct TilePivot(pub Vec2);
type TilemapLayerOpacities (line 404) | pub struct TilemapLayerOpacities(pub Vec4);
method default (line 407) | fn default() -> Self {
type TilemapAabbs (line 414) | pub struct TilemapAabbs {
method chunk_rect (line 421) | pub fn chunk_rect(&self) -> GridRect {
method world_rect (line 426) | pub fn world_rect(&self) -> Rect {
type TilemapStorage (line 433) | pub struct TilemapStorage {
method new (line 441) | pub fn new(chunk_size: u32, binded_tilemap: Entity) -> Self {
method rearrange (line 466) | pub fn rearrange(&mut self, chunk_size: u32, commands: &mut Commands) {
method get (line 490) | pub fn get(&self, index: IVec2) -> Option<Entity> {
method get_chunk (line 496) | pub fn get_chunk(&self, index: IVec2) -> Option<&Vec<Option<Entity>>> {
method get_chunk_mut (line 504) | pub fn get_chunk_mut(&mut self, index: IVec2) -> Option<&mut Vec<Optio...
method set (line 511) | pub fn set(&mut self, commands: &mut Commands, index: IVec2, tile_buil...
method set_entity (line 524) | pub(crate) fn set_entity(&mut self, index: IVec2, entity: Option<Entit...
method set_chunk_entity (line 537) | pub(crate) fn set_chunk_entity(&mut self, index: IVec2, chunk: Vec<Opt...
method update (line 544) | pub fn update(&mut self, commands: &mut Commands, index: IVec2, update...
method remove (line 552) | pub fn remove(&mut self, commands: &mut Commands, index: IVec2) {
method remove_chunk (line 561) | pub fn remove_chunk(&mut self, commands: &mut Commands, index: IVec2) {
method remove_all (line 570) | pub fn remove_all(&mut self, commands: &mut Commands) {
method reserve (line 585) | pub fn reserve(&mut self, index: IVec2) {
method reserve_with_rect (line 591) | pub fn reserve_with_rect(&mut self, index: IVec2, aabb: Rect) {
method reserve_many (line 597) | pub fn reserve_many(&mut self, indices: impl Iterator<Item = IVec2>) {
method reserve_many_with_rects (line 605) | pub fn reserve_many_with_rects(&mut self, indices: impl Iterator<Item ...
method queue_aabb (line 610) | fn queue_aabb(&mut self, index: IVec2) {
method despawn (line 620) | pub fn despawn(&mut self, commands: &mut Commands) {
method get_storage_raw (line 629) | pub fn get_storage_raw(&mut self) -> &mut EntityChunkedStorage {
method fill_rect (line 634) | pub fn fill_rect(
method fill_rect_custom (line 661) | pub fn fill_rect_custom(
method fill_with_buffer (line 697) | pub fn fill_with_buffer(
method update_rect (line 723) | pub fn update_rect(&mut self, commands: &mut Commands, area: GridRect,...
method update_rect_custom (line 738) | pub fn update_rect_custom(
method default (line 451) | fn default() -> Self {
type TilemapAnimations (line 775) | pub struct TilemapAnimations(pub(crate) Vec<i32>);
method register (line 786) | pub fn register(&mut self, anim: RawTileAnimation) -> TileAnimation {
method default (line 778) | fn default() -> Self {
function transform_syncer (line 808) | pub fn transform_syncer(
function queued_chunk_aabb_calculator (line 821) | pub fn queued_chunk_aabb_calculator(
function tilemap_aabb_calculator (line 857) | pub fn tilemap_aabb_calculator(
FILE: src/tilemap/mod.rs
type EntiTilesTilemapPlugin (line 28) | pub struct EntiTilesTilemapPlugin;
method build (line 31) | fn build(&self, app: &mut bevy::prelude::App) {
FILE: src/tilemap/physics/mod.rs
type EntiTilesPhysicsTilemapPlugin (line 22) | pub struct EntiTilesPhysicsTilemapPlugin;
method build (line 25) | fn build(&self, app: &mut App) {
type PhysicsTileSpawn (line 49) | pub struct PhysicsTileSpawn {
type SerializablePhysicsSource (line 59) | pub enum SerializablePhysicsSource {
type PhysicsCollider (line 67) | pub enum PhysicsCollider {
method as_verts (line 73) | pub fn as_verts(&self) -> &Vec<Vec2> {
method as_verts_mut (line 80) | pub fn as_verts_mut(&mut self) -> &mut Vec<Vec2> {
type PackedPhysicsTile (line 90) | pub struct PackedPhysicsTile {
method into (line 97) | fn into(self) -> PhysicsTile {
method spawn (line 105) | pub fn spawn(&self, commands: &mut Commands) -> Entity {
type PhysicsTile (line 122) | pub struct PhysicsTile {
method default (line 128) | fn default() -> Self {
type DataPhysicsTilemap (line 144) | pub struct DataPhysicsTilemap {
method new (line 157) | pub fn new(
method new_flipped (line 187) | pub fn new_flipped(
method get_or_air (line 213) | pub fn get_or_air(&self, index: UVec2) -> i32 {
method get_tile (line 223) | pub fn get_tile(&self, value: i32) -> Option<PhysicsTile> {
method set (line 228) | pub fn set(&mut self, index: UVec2, value: i32) {
type PhysicsTilemap (line 235) | pub struct PhysicsTilemap {
method new (line 245) | pub fn new() -> Self {
method new_with_chunk_size (line 254) | pub fn new_with_chunk_size(chunk_size: u32) -> Self {
method get (line 264) | pub fn get(&self, index: IVec2) -> Option<Entity> {
method set (line 270) | pub fn set(&mut self, index: IVec2, tile: PhysicsTile) {
method remove (line 277) | pub fn remove(&mut self, commands: &mut Commands, index: IVec2) {
method remove_chunk (line 285) | pub fn remove_chunk(&mut self, commands: &mut Commands, index: IVec2) {
method remove_all (line 295) | pub fn remove_all(&mut self, commands: &mut Commands) {
method fill_rect (line 305) | pub fn fill_rect(&mut self, area: GridRect, tile: PhysicsTile, concat:...
method fill_rect_custom (line 321) | pub fn fill_rect_custom(
method fill_with_buffer (line 344) | pub fn fill_with_buffer(&mut self, origin: IVec2, buffer: PhysicsTileB...
method fill_with_buffer_packed (line 355) | pub fn fill_with_buffer_packed(&mut self, origin: IVec2, buffer: Packe...
FILE: src/tilemap/physics/systems.rs
function spawn_colliders (line 20) | pub fn spawn_colliders(
function data_physics_tilemap_analyzer (line 73) | pub fn data_physics_tilemap_analyzer(
FILE: src/tilemap/tile.rs
type TileLayer (line 17) | pub struct TileLayer {
method no_flip (line 39) | pub fn no_flip(atlas_index: i32) -> Self {
method flip_h (line 49) | pub fn flip_h(atlas_index: i32) -> Self {
method flip_v (line 59) | pub fn flip_v(atlas_index: i32) -> Self {
method flip_both (line 69) | pub fn flip_both(atlas_index: i32) -> Self {
method no_flip_at (line 82) | pub fn no_flip_at(texture_index: i32, atlas_index: i32) -> Self {
method flip_h_at (line 91) | pub fn flip_h_at(texture_index: i32, atlas_index: i32) -> Self {
method flip_v_at (line 100) | pub fn flip_v_at(texture_index: i32, atlas_index: i32) -> Self {
method flip_both_at (line 109) | pub fn flip_both_at(texture_index: i32, atlas_index: i32) -> Self {
method default (line 27) | fn default() -> Self {
type TileLayerPosition (line 120) | pub enum TileLayerPosition {
type LayerUpdater (line 127) | pub struct LayerUpdater {
type TileUpdater (line 135) | pub struct TileUpdater {
method default (line 153) | fn default() -> Self {
type TileBuilder (line 161) | pub struct TileBuilder {
method new (line 170) | pub fn new() -> Self {
method with_tint (line 178) | pub fn with_tint(mut self, tint: LinearRgba) -> Self {
method with_layer (line 189) | pub fn with_layer(mut self, index: usize, layer: TileLayer) -> Self {
method with_animation (line 202) | pub fn with_animation(mut self, animation: TileAnimation) -> Self {
method build_component (line 207) | pub(crate) fn build_component(
type TileAnimation (line 229) | pub struct TileAnimation {
type RawTileAnimation (line 238) | pub struct RawTileAnimation {
type TileTexture (line 250) | pub enum TileTexture {
type Tile (line 257) | pub struct Tile {
method into (line 269) | fn into(self) -> TileBuilder {
type TileRearrange (line 278) | pub(crate) struct TileRearrange {
function tile_updater (line 283) | pub fn tile_updater(
function tile_rearranger (line 317) | pub(crate) fn tile_rearranger(
FILE: src/utils/asset.rs
type AssetPath (line 3) | pub trait AssetPath {
method to_asset_path (line 4) | fn to_asset_path(&self) -> PathBuf;
method to_asset_path (line 8) | fn to_asset_path(&self) -> PathBuf {
method to_asset_path (line 14) | fn to_asset_path(&self) -> PathBuf {
function to_asset_path (line 25) | pub fn to_asset_path(path: impl AsRef<Path>) -> PathBuf {
function test_to_asset_path (line 54) | fn test_to_asset_path() {
FILE: src/utils/mesh.rs
function clip_quad_mesh (line 7) | pub fn clip_quad_mesh(vertices: &mut Vec<Vec2>, uvs: &mut Vec<Vec2>, val...
Condensed preview — 144 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (4,138K chars).
[
{
"path": ".cargo/config.toml",
"chars": 62,
"preview": "[target.wasm32-unknown-unknown]\nrunner = \"wasm-server-runner\"\n"
},
{
"path": ".github/ISSUE_TEMPLATE/document-issue-report.md",
"chars": 182,
"preview": "---\nname: Document Issue Report\nabout: There're some outdated/wrong content in documents.\ntitle: 'Doc: '\nlabels: documen"
},
{
"path": ".github/ISSUE_TEMPLATE/feature-request.md",
"chars": 160,
"preview": "---\nname: Feature Request\nabout: I have a good idea.\ntitle: 'FeatureRequest: '\nlabels: enhancement\nassignees: ''\n\n---\n\n*"
},
{
"path": ".github/ISSUE_TEMPLATE/importer-bug-report.md",
"chars": 743,
"preview": "---\nname: Importer Bug Report\nabout: 'The importer isn''t working correctly. '\ntitle: 'LDtk/Tiled Importer: Please choos"
},
{
"path": ".github/ISSUE_TEMPLATE/logic-error-report.md",
"chars": 283,
"preview": "---\nname: Logic Error Report\nabout: Some code isn't working correctly.\ntitle: 'Bug: '\nlabels: bug\nassignees: ''\n\n---\n\n**"
},
{
"path": ".github/ISSUE_TEMPLATE/other-issues-report.md",
"chars": 295,
"preview": "---\nname: Other Issues Report\nabout: Some other issues that are not listed above.\ntitle: 'Other: '\nlabels: ''\nassignees:"
},
{
"path": ".github/ISSUE_TEMPLATE/rendering-bug-report.md",
"chars": 298,
"preview": "---\nname: Rendering Bug Report\nabout: Something isn't rendered as expected.\ntitle: 'Bug: '\nlabels: bug, graphics\nassigne"
},
{
"path": ".gitignore",
"chars": 109,
"preview": "/target\n/examples/test*\n/assets/ldtk/ignore*\n/macros/target\n/.idea\nCargo.lock\n/generated\n/**/*.tiled-session\n"
},
{
"path": "Cargo.toml",
"chars": 3908,
"preview": "[package]\nname = \"bevy_entitiles\"\nversion = \"0.12.0\"\nedition = \"2021\"\nlicense = \"MIT\"\nrepository = \"https://github.com/4"
},
{
"path": "LICENSE",
"chars": 1035,
"preview": "MIT License\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associate"
},
{
"path": "README.md",
"chars": 5132,
"preview": "# Bevy EntiTiles 🗺️\n\nA 2d tilemap library for bevy. With many useful algorithms/tools built in.\n\nIt's **NOT** recommende"
},
{
"path": "RELEASE_NOTE.md",
"chars": 197,
"preview": "# What's New:\n\n- Supported `point`s contained by Tiled objects.\n- Renamed `shape_as_collider` macro to `instantiate_shap"
},
{
"path": "assets/custom_material.wgsl",
"chars": 1042,
"preview": "// The definition of TilemapVertexOutput is in src/render/shaders/common.wgsl\n// Don't be afraid of reading the original"
},
{
"path": "assets/ldtk/grid_vania.ldtk",
"chars": 2635415,
"preview": "{\n\t\"__header__\": {\n\t\t\"fileType\": \"LDtk Project JSON\",\n\t\t\"app\": \"LDtk\",\n\t\t\"doc\": \"https://ldtk.io/json\",\n\t\t\"schema\": \"htt"
},
{
"path": "assets/ldtk/wfc_source.ldtk",
"chars": 159328,
"preview": "{\n\t\"__header__\": {\n\t\t\"fileType\": \"LDtk Project JSON\",\n\t\t\"app\": \"LDtk\",\n\t\t\"doc\": \"https://ldtk.io/json\",\n\t\t\"schema\": \"htt"
},
{
"path": "assets/tiled/Tilemap.tiled-project",
"chars": 8180,
"preview": "{\n \"automappingRulesFile\": \"\",\n \"commands\": [\n ],\n \"compatibilityVersion\": 1100,\n \"extensionsPath\": \"exte"
},
{
"path": "assets/tiled/tilemaps/hexagonal.tmx",
"chars": 835,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<map version=\"1.10\" tiledversion=\"1.10.2\" orientation=\"hexagonal\" renderorder=\"ri"
},
{
"path": "assets/tiled/tilemaps/infinite.tmx",
"chars": 1820,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<map version=\"1.10\" tiledversion=\"1.10.2\" orientation=\"orthogonal\" renderorder=\"r"
},
{
"path": "assets/tiled/tilemaps/isometric.tmx",
"chars": 896,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<map version=\"1.10\" tiledversion=\"1.10.2\" orientation=\"isometric\" renderorder=\"ri"
},
{
"path": "assets/tiled/tilemaps/isometricCube.tmx",
"chars": 985,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<map version=\"1.10\" tiledversion=\"1.10.2\" orientation=\"isometric\" renderorder=\"ri"
},
{
"path": "assets/tiled/tilemaps/orthogonal.tmx",
"chars": 4428,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<map version=\"1.10\" tiledversion=\"1.11.0\" orientation=\"orthogonal\" renderorder=\"r"
},
{
"path": "assets/tiled/tilesets/8pxSquare.tsx",
"chars": 227,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<tileset version=\"1.10\" tiledversion=\"1.10.2\" name=\"8pxSquare\" tilewidth=\"8\" tile"
},
{
"path": "assets/tiled/tilesets/Hexagonal.tsx",
"chars": 235,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<tileset version=\"1.10\" tiledversion=\"1.10.2\" name=\"Hexagonal\" tilewidth=\"28\" til"
},
{
"path": "assets/tiled/tilesets/Isometric.tsx",
"chars": 235,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<tileset version=\"1.10\" tiledversion=\"1.10.2\" name=\"Isometric\" tilewidth=\"32\" til"
},
{
"path": "assets/tiled/tilesets/IsometricCube.tsx",
"chars": 245,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<tileset version=\"1.10\" tiledversion=\"1.10.2\" name=\"IsometricCube\" tilewidth=\"32\""
},
{
"path": "assets/tiled/tilesets/Squares.tsx",
"chars": 230,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<tileset version=\"1.10\" tiledversion=\"1.10.2\" name=\"Squares\" tilewidth=\"16\" tileh"
},
{
"path": "assets/tiled/tilesets/Tileset1.tsx",
"chars": 1495,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<tileset version=\"1.10\" tiledversion=\"1.10.2\" name=\"Tileset1\" tilewidth=\"8\" tileh"
},
{
"path": "assets/tiled/tilesets/Tileset2.tsx",
"chars": 254,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<tileset version=\"1.10\" tiledversion=\"1.10.2\" name=\"Tileset2\" tilewidth=\"16\" tile"
},
{
"path": "examples/README.md",
"chars": 11101,
"preview": "# Examples\n\n**Enable `multi-threaded` feature for better performance if possible.**\n\n| Name | D"
},
{
"path": "examples/animation.rs",
"chars": 2152,
"preview": "use bevy::prelude::*;\nuse bevy_entitiles::prelude::*;\nuse helpers::EntiTilesHelpersPlugin;\n\nmod helpers;\n\nfn main() {\n "
},
{
"path": "examples/baking.rs",
"chars": 3944,
"preview": "use bevy::{color::palettes::css::ORANGE_RED, prelude::*, window::PresentMode};\nuse bevy_entitiles::prelude::*;\nuse helpe"
},
{
"path": "examples/basic.rs",
"chars": 5836,
"preview": "use bevy::{color::palettes::css::TOMATO, prelude::*, window::PresentMode};\nuse bevy_entitiles::prelude::*;\nuse helpers::"
},
{
"path": "examples/chunk_unloading.rs",
"chars": 5764,
"preview": "#![allow(unused_imports)]\nuse avian2d::prelude::*;\nuse bevy::prelude::*;\nuse bevy_entitiles::{debug::CameraAabbScale, pr"
},
{
"path": "examples/custom_material.rs",
"chars": 2185,
"preview": "use bevy::{\n prelude::*,\n render::render_resource::{AsBindGroup, ShaderRef},\n};\nuse bevy_entitiles::{prelude::*, D"
},
{
"path": "examples/helpers/camera_movement.rs",
"chars": 2289,
"preview": "use bevy::{\n input::mouse::{MouseMotion, MouseWheel},\n prelude::*,\n};\n\n#[derive(Resource)]\npub struct CameraContro"
},
{
"path": "examples/helpers/common.rs",
"chars": 738,
"preview": "use bevy::{\n diagnostic::{DiagnosticsStore, FrameTimeDiagnosticsPlugin},\n prelude::{Component, Query, Res, With},\n"
},
{
"path": "examples/helpers/mod.rs",
"chars": 2120,
"preview": "use std::time::Duration;\n\nuse bevy::{\n prelude::{default, Color, Commands, IntoSystemConfigs, Plugin, Startup, TextBu"
},
{
"path": "examples/isometric_cubes.rs",
"chars": 3044,
"preview": "// To be honest, this crate is NOT suitable for 3d isometric tilemaps.\n// Chunk sizes are must be n^2, so in this case, "
},
{
"path": "examples/ldtk.rs",
"chars": 9982,
"preview": "// The icon set finalbossblues-icons_full_16 is not allowed to be redistributed.\n// So all those icons in the map will b"
},
{
"path": "examples/ldtk_wfc.rs",
"chars": 5401,
"preview": "use avian2d::{\n prelude::{PhysicsDebugPlugin, PhysicsGizmos},\n PhysicsPlugins,\n};\nuse bevy::{prelude::*, utils::Ha"
},
{
"path": "examples/ldtk_wfc_config.ron",
"chars": 631,
"preview": "[\n // 0\n [\n // up\n [2, 3, 5],\n // right\n [2, 3, 4, 5],\n // left\n [1, 2, "
},
{
"path": "examples/multiple_tilesets.rs",
"chars": 2756,
"preview": "use bevy::{\n app::{App, Startup},\n asset::{AssetServer, Assets},\n core_pipeline::core_2d::Camera2dBundle,\n e"
},
{
"path": "examples/pathfinding.rs",
"chars": 2850,
"preview": "use std::time::Duration;\n\nuse bevy::{prelude::*, time::common_conditions::on_real_timer};\nuse bevy_entitiles::prelude::*"
},
{
"path": "examples/pathfinding_single_threaded.rs",
"chars": 2687,
"preview": "use std::time::Duration;\n\nuse bevy::prelude::*;\nuse bevy_entitiles::{algorithm::pathfinding::PathGrid, prelude::*};\nuse "
},
{
"path": "examples/physics.rs",
"chars": 5738,
"preview": "use avian2d::prelude::*;\nuse bevy::prelude::*;\nuse bevy_entitiles::prelude::*;\nuse helpers::EntiTilesHelpersPlugin;\n\nmod"
},
{
"path": "examples/save_and_load.rs",
"chars": 4083,
"preview": "use avian2d::prelude::*;\nuse bevy::prelude::*;\nuse bevy_entitiles::prelude::*;\nuse helpers::EntiTilesHelpersPlugin;\n\nmod"
},
{
"path": "examples/stress_test.rs",
"chars": 2453,
"preview": "use bevy::{\n app::{App, PluginGroup, Startup},\n asset::{AssetServer, Assets},\n core_pipeline::core_2d::Camera2d"
},
{
"path": "examples/tiled.rs",
"chars": 6207,
"preview": "use avian2d::prelude::*;\nuse bevy::{prelude::*, utils::HashMap};\nuse bevy_entitiles::{\n prelude::*,\n render::chunk"
},
{
"path": "examples/wfc.rs",
"chars": 1938,
"preview": "use bevy::prelude::*;\nuse bevy_entitiles::prelude::*;\nuse helpers::EntiTilesHelpersPlugin;\n\nmod helpers;\n\nfn main() {\n "
},
{
"path": "examples/wfc_config.ron",
"chars": 679,
"preview": "[\n // 0\n [\n // up\n [1, 4, 2],\n // right\n [0, 1, 3, 4],\n // left\n [0, 1, "
},
{
"path": "examples/wfc_pattern.rs",
"chars": 4336,
"preview": "#![allow(unused)]\nuse bevy::prelude::*;\nuse bevy_entitiles::prelude::*;\nuse helpers::EntiTilesHelpersPlugin;\n\nmod helper"
},
{
"path": "examples/wfc_weights.ron",
"chars": 49,
"preview": "[\n 10,\n 7,\n 10,\n 60,\n 5,\n 10,\n]"
},
{
"path": "macros/Cargo.toml",
"chars": 278,
"preview": "[package]\nname = \"bevy_entitiles_derive\"\nversion = \"0.6.0\"\nedition = \"2021\"\nlicense = \"MIT\"\nrepository = \"https://github"
},
{
"path": "macros/README.md",
"chars": 76,
"preview": "Proc Macros for [`bevy_entitiles`](https://github.com/443eb9/bevy_entitiles)"
},
{
"path": "macros/src/ldtk_entity.rs",
"chars": 4473,
"preview": "const LDTK_DEFAULT_ATTR: &str = \"ldtk_default\";\nconst LDTK_NAME_ATTR: &str = \"ldtk_name\";\nconst SPAWN_SPRITE_ATTR: &str "
},
{
"path": "macros/src/ldtk_entity_tag.rs",
"chars": 673,
"preview": "pub fn expand_ldtk_entity_tag_derive(input: syn::DeriveInput) -> proc_macro::TokenStream {\n match input.data {\n "
},
{
"path": "macros/src/ldtk_enum.rs",
"chars": 7788,
"preview": "const LDTK_NAME_ATTR: &str = \"ldtk_name\";\nconst WRAPPER_DERIVE_ATTR: &str = \"wrapper_derive\";\n\npub fn expand_ldtk_enum_d"
},
{
"path": "macros/src/lib.rs",
"chars": 1876,
"preview": "mod ldtk_entity;\nmod ldtk_entity_tag;\nmod ldtk_enum;\nmod tiled_class;\nmod tiled_enum;\nmod tiled_object;\nmod tiled_custom"
},
{
"path": "macros/src/tiled_class.rs",
"chars": 2718,
"preview": "const TILED_NAME_ATTR: &str = \"tiled_name\";\n\npub fn expand_tiled_class_derive(input: syn::DeriveInput) -> proc_macro::To"
},
{
"path": "macros/src/tiled_custom_tile.rs",
"chars": 3054,
"preview": "const TILED_DEFAULT_ATTR: &str = \"tiled_default\";\nconst CALLBACK_ATTR: &str = \"callback\";\n\npub fn expand_tiled_custom_ti"
},
{
"path": "macros/src/tiled_enum.rs",
"chars": 2115,
"preview": "const TILED_NAME_ATTR: &str = \"tiled_name\";\n\npub fn expand_tiled_enum_derive(input: syn::DeriveInput) -> proc_macro::Tok"
},
{
"path": "macros/src/tiled_object.rs",
"chars": 4513,
"preview": "const TILED_DEFAULT_ATTR: &str = \"tiled_default\";\nconst INSTANTIATE_SHAPE_ATTR: &str = \"instantiate_shape\";\nconst SPAWN_"
},
{
"path": "src/algorithm/mod.rs",
"chars": 1361,
"preview": "use bevy::{\n app::App,\n prelude::{Plugin, Update},\n};\n\nuse crate::algorithm::{\n pathfinding::{Path, PathTilemap"
},
{
"path": "src/algorithm/pathfinding.rs",
"chars": 13398,
"preview": "use std::{cmp::Ordering, collections::BinaryHeap};\n\nuse bevy::{\n ecs::{\n entity::EntityHashMap,\n system"
},
{
"path": "src/algorithm/wfc.rs",
"chars": 34038,
"preview": "/// Direction order: up, right, left, down\nuse std::{collections::VecDeque, path::Path};\n\nuse bevy::{\n asset::Assets,"
},
{
"path": "src/debug/drawing.rs",
"chars": 3752,
"preview": "use bevy::{\n color::palettes::css::{BLUE, GREEN, RED},\n ecs::system::Query,\n gizmos::gizmos::Gizmos,\n math::"
},
{
"path": "src/debug/mod.rs",
"chars": 931,
"preview": "use bevy::{\n app::{Plugin, Update},\n ecs::system::Resource,\n math::Vec2,\n};\n\npub mod drawing;\n\npub struct EntiT"
},
{
"path": "src/ldtk/app_ext.rs",
"chars": 1637,
"preview": "use bevy::{\n app::App,\n ecs::{bundle::Bundle, component::Component},\n};\n\nuse crate::ldtk::traits::{\n LdtkEntity"
},
{
"path": "src/ldtk/components.rs",
"chars": 1576,
"preview": "use bevy::{\n ecs::{component::Component, entity::Entity, system::Commands},\n math::Vec2,\n prelude::Deref,\n r"
},
{
"path": "src/ldtk/entity_sprite.wgsl",
"chars": 493,
"preview": "#import bevy_sprite::{mesh2d_vertex_output::VertexOutput}\n\nstruct AtlasRect {\n min: vec2<f32>,\n max: vec2<f32>,\n}\n"
},
{
"path": "src/ldtk/events.rs",
"chars": 1238,
"preview": "use std::fmt::Display;\n\nuse bevy::{asset::AssetId, ecs::event::Event, math::Vec2, reflect::Reflect};\n\nuse crate::ldtk::{"
},
{
"path": "src/ldtk/json/definitions.rs",
"chars": 9728,
"preview": "use bevy::reflect::Reflect;\nuse serde::{de::Visitor, Deserialize, Serialize};\n\nuse crate::ldtk::sprite::{NineSliceBorder"
},
{
"path": "src/ldtk/json/field.rs",
"chars": 12870,
"preview": "use bevy::{math::IVec2, reflect::Reflect};\nuse serde::{\n de::{Error, IgnoredAny, Visitor},\n Deserialize, Deseriali"
},
{
"path": "src/ldtk/json/level.rs",
"chars": 11569,
"preview": "use bevy::{\n ecs::system::EntityCommands, reflect::Reflect, sprite::MaterialMesh2dBundle,\n transform::components::"
},
{
"path": "src/ldtk/json/macros.rs",
"chars": 1110,
"preview": "#[macro_export]\nmacro_rules! transfer_field {\n ($field:ident, $field_name:expr, $json_map:expr) => {{\n if $fie"
},
{
"path": "src/ldtk/json/mod.rs",
"chars": 7601,
"preview": "use bevy::{asset::Asset, color::Color, math::Vec4, reflect::Reflect, utils::HashMap};\nuse serde::{de::Visitor, Deseriali"
},
{
"path": "src/ldtk/layer/mod.rs",
"chars": 16624,
"preview": "use bevy::{\n asset::{AssetId, AssetServer, Assets},\n color::LinearRgba,\n ecs::{\n entity::Entity,\n "
},
{
"path": "src/ldtk/layer/path.rs",
"chars": 1254,
"preview": "use bevy::{ecs::system::Resource, math::IVec2, reflect::Reflect, utils::HashMap};\n\nuse crate::{\n ldtk::json::{definit"
},
{
"path": "src/ldtk/layer/physics.rs",
"chars": 308,
"preview": "use bevy::{ecs::system::Resource, reflect::Reflect, utils::HashMap};\n\nuse crate::tilemap::physics::PhysicsTile;\n\n#[deriv"
},
{
"path": "src/ldtk/mod.rs",
"chars": 18709,
"preview": "use std::path::Path;\n\nuse bevy::{\n app::{Plugin, Update},\n asset::{load_internal_asset, AssetApp, AssetEvent, Asse"
},
{
"path": "src/ldtk/resources.rs",
"chars": 14474,
"preview": "use std::path::Path;\n\nuse bevy::{\n asset::{io::Reader, Asset, AssetId, AssetLoader, AssetServer, Assets, Handle, Load"
},
{
"path": "src/ldtk/sprite.rs",
"chars": 16249,
"preview": "use bevy::{\n asset::{Asset, Handle},\n math::{IVec2, IVec4, Vec2, Vec4},\n reflect::Reflect,\n render::{\n "
},
{
"path": "src/ldtk/traits.rs",
"chars": 2293,
"preview": "use std::marker::PhantomData;\n\nuse bevy::{\n asset::AssetServer,\n ecs::{bundle::Bundle, component::Component, syste"
},
{
"path": "src/lib.rs",
"chars": 3941,
"preview": "use bevy::prelude::Plugin;\nuse math::EntiTilesMathPlugin;\nuse render::{\n material::{EntiTilesMaterialPlugin, Standard"
},
{
"path": "src/math/ext.rs",
"chars": 11829,
"preview": "use bevy::{\n math::{IRect, IVec2, Rect, URect},\n prelude::{UVec2, Vec2},\n};\n\nuse crate::tilemap::map::{TilemapAxis"
},
{
"path": "src/math/mod.rs",
"chars": 4496,
"preview": "use bevy::{\n app::{App, Plugin, Update},\n ecs::{\n component::Component,\n entity::Entity,\n que"
},
{
"path": "src/render/bake.rs",
"chars": 8847,
"preview": "use bevy::{\n asset::{Assets, Handle},\n color::{ColorToComponents, LinearRgba},\n ecs::{\n component::Compo"
},
{
"path": "src/render/binding.rs",
"chars": 4318,
"preview": "use bevy::{\n asset::{AssetId, Handle},\n ecs::entity::EntityHashMap,\n prelude::{Res, ResMut, Resource},\n rend"
},
{
"path": "src/render/buffer.rs",
"chars": 4548,
"preview": "use bevy::{\n ecs::entity::EntityHashMap,\n math::Vec4,\n prelude::{Res, ResMut, Resource, Vec2},\n render::{\n "
},
{
"path": "src/render/chunk.rs",
"chars": 11978,
"preview": "use std::cmp::Ordering;\n\nuse bevy::{\n asset::Handle,\n color::ColorToComponents,\n ecs::{component::Component, en"
},
{
"path": "src/render/cull.rs",
"chars": 1923,
"preview": "// TODO Frustum culling!!!\n#![allow(unused)]\nuse bevy::{\n ecs::system::{Res, Resource},\n prelude::{Query, ResMut},"
},
{
"path": "src/render/draw.rs",
"chars": 7987,
"preview": "use std::marker::PhantomData;\n\nuse bevy::{\n core_pipeline::core_2d::Transparent2d,\n ecs::{\n query::ROQueryI"
},
{
"path": "src/render/extract.rs",
"chars": 5598,
"preview": "use bevy::{\n asset::{AssetId, Handle},\n ecs::{\n entity::EntityHashMap,\n event::EventReader,\n "
},
{
"path": "src/render/material.rs",
"chars": 4344,
"preview": "use std::marker::PhantomData;\n\nuse bevy::{\n app::{App, Plugin},\n asset::{Asset, AssetApp, AssetId},\n color::Lin"
},
{
"path": "src/render/mod.rs",
"chars": 4654,
"preview": "use bevy::{\n app::{App, PostUpdate, Update},\n asset::load_internal_asset,\n ecs::schedule::IntoSystemConfigs,\n "
},
{
"path": "src/render/pipeline.rs",
"chars": 7913,
"preview": "use std::marker::PhantomData;\n\nuse bevy::{\n asset::{AssetServer, Handle},\n ecs::world::World,\n prelude::{FromWo"
},
{
"path": "src/render/prepare.rs",
"chars": 3490,
"preview": "use bevy::{\n ecs::entity::Entity,\n math::IVec2,\n prelude::{Query, Res, ResMut},\n};\n\nuse crate::{\n render::{\n"
},
{
"path": "src/render/queue.rs",
"chars": 3466,
"preview": "use bevy::{\n core_pipeline::core_2d::Transparent2d,\n ecs::query::With,\n math::FloatOrd,\n prelude::{Entity, M"
},
{
"path": "src/render/shaders/common.wgsl",
"chars": 2229,
"preview": "#define_import_path bevy_entitiles::common\n#import bevy_render::view::View\n\nstruct TilemapTextureDescriptor {\n tile_u"
},
{
"path": "src/render/shaders/hexagonal.wgsl",
"chars": 494,
"preview": "#define_import_path bevy_entitiles::hexagonal\n\n#import bevy_entitiles::common::{TilemapVertexInput, tilemap}\n\nfn get_mes"
},
{
"path": "src/render/shaders/isometric.wgsl",
"chars": 466,
"preview": "#define_import_path bevy_entitiles::isometric\n\n#import bevy_entitiles::common::{TilemapVertexInput, tilemap}\n\nfn get_mes"
},
{
"path": "src/render/shaders/square.wgsl",
"chars": 340,
"preview": "#define_import_path bevy_entitiles::square\n\n#import bevy_entitiles::common::{TilemapVertexInput, tilemap}\n\nfn get_mesh_o"
},
{
"path": "src/render/shaders/tilemap.wgsl",
"chars": 5562,
"preview": "#import bevy_entitiles::common::{\n TilemapVertexInput, TilemapVertexOutput,\n tilemap, view, material, anim_seqs, t"
},
{
"path": "src/render/texture.rs",
"chars": 14255,
"preview": "use bevy::{\n asset::{Assets, Handle},\n ecs::{\n entity::Entity,\n query::With,\n system::{Comman"
},
{
"path": "src/serializing/chunk/load.rs",
"chars": 9009,
"preview": "use std::{collections::VecDeque, path::Path};\n\nuse bevy::{\n ecs::{\n component::Component,\n entity::{Ent"
},
{
"path": "src/serializing/chunk/mod.rs",
"chars": 2444,
"preview": "use bevy::{\n app::{App, Plugin, Update},\n ecs::{\n entity::Entity,\n query::With,\n system::{Par"
},
{
"path": "src/serializing/chunk/save.rs",
"chars": 10738,
"preview": "use std::{collections::VecDeque, path::Path};\n\nuse bevy::{\n ecs::{\n component::Component,\n entity::{Ent"
},
{
"path": "src/serializing/map/load.rs",
"chars": 6615,
"preview": "use std::path::Path;\n\nuse bevy::{\n asset::{AssetServer, Assets},\n ecs::{\n bundle::Bundle,\n component"
},
{
"path": "src/serializing/map/mod.rs",
"chars": 5831,
"preview": "use std::marker::PhantomData;\n\nuse bevy::{\n app::{App, Plugin, Update},\n asset::Handle,\n ecs::entity::Entity,\n "
},
{
"path": "src/serializing/map/save.rs",
"chars": 7191,
"preview": "use std::path::Path;\n\nuse bevy::{\n asset::{Assets, Handle},\n ecs::{\n component::Component,\n entity::"
},
{
"path": "src/serializing/mod.rs",
"chars": 1299,
"preview": "use std::{fs::File, io::Write, marker::PhantomData, path::Path};\n\nuse bevy::app::Plugin;\nuse ron::error::SpannedError;\nu"
},
{
"path": "src/serializing/pattern.rs",
"chars": 3930,
"preview": "use crate::{\n prelude::TilemapAnimations,\n tilemap::{buffers::TileBuffer, map::TilemapTexture},\n};\nuse bevy::{math"
},
{
"path": "src/shaders/math.wgsl",
"chars": 100,
"preview": "#define_import_path bevy_entitiles::math\n\nstruct Aabb2d {\n min: vec2<f32>,\n max: vec2<f32>,\n}\n"
},
{
"path": "src/shaders/mod.rs",
"chars": 469,
"preview": "use bevy::{\n app::Plugin,\n asset::{load_internal_asset, Handle},\n render::render_resource::Shader,\n};\n\npub stru"
},
{
"path": "src/tiled/app_ext.rs",
"chars": 1754,
"preview": "use bevy::{app::App, ecs::bundle::Bundle};\n\nuse crate::tiled::traits::{\n PhantomTiledCustomTile, PhantomTiledObject, "
},
{
"path": "src/tiled/components.rs",
"chars": 905,
"preview": "use bevy::{\n ecs::{component::Component, entity::Entity, system::Commands},\n utils::HashMap,\n};\n\n#[derive(Componen"
},
{
"path": "src/tiled/events.rs",
"chars": 524,
"preview": "use bevy::{asset::AssetId, math::Vec2, prelude::Event, reflect::Reflect};\n\nuse crate::tiled::resources::PackedTiledTilem"
},
{
"path": "src/tiled/mod.rs",
"chars": 19930,
"preview": "use bevy::{\n app::{Plugin, Update},\n asset::{load_internal_asset, AssetApp, AssetEvent, AssetServer, Assets, Handl"
},
{
"path": "src/tiled/resources.rs",
"chars": 25333,
"preview": "use std::{f32::consts::PI, path::PathBuf};\n\nuse bevy::{\n asset::{io::Reader, Asset, AssetId, AssetLoader, AssetServer"
},
{
"path": "src/tiled/sprite.rs",
"chars": 733,
"preview": "use bevy::{\n asset::{Asset, Handle},\n math::Vec4,\n reflect::Reflect,\n render::{\n render_resource::{As"
},
{
"path": "src/tiled/tiled_sprite.wgsl",
"chars": 579,
"preview": "#import bevy_sprite::{mesh2d_vertex_output::VertexOutput}\n#import bevy_entitiles::math::Aabb2d\n\nstruct SpriteUniform {\n "
},
{
"path": "src/tiled/traits.rs",
"chars": 3278,
"preview": "use std::marker::PhantomData;\n\nuse bevy::{\n asset::AssetServer,\n ecs::{bundle::Bundle, system::EntityCommands},\n "
},
{
"path": "src/tiled/xml/default.rs",
"chars": 266,
"preview": "use crate::tiled::xml::TiledColor;\n\npub(crate) fn default_onef() -> f32 {\n 1.\n}\n\npub(crate) fn default_true() -> bool"
},
{
"path": "src/tiled/xml/layer.rs",
"chars": 26353,
"preview": "use std::fmt::Formatter;\n\nuse bevy::{\n ecs::system::EntityCommands,\n math::{IVec2, Vec2},\n prelude::{Component,"
},
{
"path": "src/tiled/xml/mod.rs",
"chars": 10588,
"preview": "use std::fmt::Formatter;\n\nuse bevy::{\n color::Color,\n math::{Vec2, Vec4},\n reflect::Reflect,\n};\nuse serde::{de:"
},
{
"path": "src/tiled/xml/property.rs",
"chars": 7795,
"preview": "use bevy::{color::Color, reflect::Reflect, utils::HashMap};\nuse serde::{\n de::{IgnoredAny, Visitor},\n Deserialize,"
},
{
"path": "src/tiled/xml/tileset.rs",
"chars": 6507,
"preview": "use bevy::{asset::Asset, reflect::Reflect};\nuse serde::{Deserialize, Serialize};\n\nuse crate::tiled::xml::property::Compo"
},
{
"path": "src/tilemap/algorithm/mod.rs",
"chars": 342,
"preview": "use bevy::app::Plugin;\n\nuse crate::tilemap::algorithm::path::{PathTile, PathTilemap};\n\npub mod path;\n\npub struct EntiTil"
},
{
"path": "src/tilemap/algorithm/path.rs",
"chars": 2667,
"preview": "use bevy::{ecs::component::Component, math::IVec2, reflect::Reflect};\n\nuse crate::{\n math::GridRect,\n tilemap::{\n "
},
{
"path": "src/tilemap/buffers.rs",
"chars": 2193,
"preview": "use std::fmt::Debug;\n\nuse bevy::{math::IVec2, reflect::Reflect, utils::HashMap};\n\nuse crate::{\n math::GridRect,\n t"
},
{
"path": "src/tilemap/bundles.rs",
"chars": 6450,
"preview": "use bevy::{\n asset::Handle,\n ecs::bundle::Bundle,\n render::view::{InheritedVisibility, ViewVisibility, Visibili"
},
{
"path": "src/tilemap/chunking/camera.rs",
"chars": 4054,
"preview": "use bevy::{\n ecs::{\n component::Component,\n entity::Entity,\n event::{Event, EventWriter},\n "
},
{
"path": "src/tilemap/chunking/mod.rs",
"chars": 33,
"preview": "pub mod camera;\npub mod storage;\n"
},
{
"path": "src/tilemap/chunking/storage.rs",
"chars": 6521,
"preview": "use std::fmt::Debug;\n\nuse bevy::{ecs::entity::Entity, math::IVec2, reflect::Reflect, utils::HashMap};\n\nuse crate::{\n "
},
{
"path": "src/tilemap/coordinates.rs",
"chars": 7732,
"preview": "use bevy::math::{IVec2, UVec2, Vec2};\n\nuse crate::tilemap::map::{TilemapAxisFlip, TilemapTransform, TilemapType};\n\n/// G"
},
{
"path": "src/tilemap/despawn.rs",
"chars": 2473,
"preview": "use bevy::{\n ecs::{\n component::Component,\n entity::Entity,\n query::With,\n system::{Comma"
},
{
"path": "src/tilemap/map.rs",
"chars": 27810,
"preview": "use std::{f32::consts::SQRT_2, fmt::Debug};\n\nuse bevy::{\n asset::{Asset, Handle},\n ecs::{\n component::Compo"
},
{
"path": "src/tilemap/mod.rs",
"chars": 2809,
"preview": "use bevy::{\n app::{Plugin, PostUpdate, PreUpdate, Update},\n asset::AssetApp,\n};\n\nuse crate::tilemap::{\n chunkin"
},
{
"path": "src/tilemap/physics/mod.rs",
"chars": 11088,
"preview": "use avian2d::prelude::{Collider, Friction, RigidBody};\nuse bevy::{\n app::{App, Plugin, Update},\n ecs::{component::"
},
{
"path": "src/tilemap/physics/systems.rs",
"chars": 4789,
"preview": "use bevy::{\n ecs::{entity::Entity, event::EventWriter, system::Query},\n math::UVec2,\n prelude::Commands,\n};\n\nus"
},
{
"path": "src/tilemap/tile.rs",
"chars": 9066,
"preview": "use bevy::{\n color::LinearRgba,\n ecs::system::{ParallelCommands, Query},\n math::IVec2,\n prelude::{Component,"
},
{
"path": "src/utils/asset.rs",
"chars": 1244,
"preview": "use std::path::{Component, Path, PathBuf};\n\npub trait AssetPath {\n fn to_asset_path(&self) -> PathBuf;\n}\n\nimpl AssetP"
},
{
"path": "src/utils/mesh.rs",
"chars": 770,
"preview": "use bevy::math::Vec2;\n\n// TODO adapt this to all kinds of quads\n/// **WARNING** This method is not suitable for all case"
},
{
"path": "src/utils/mod.rs",
"chars": 29,
"preview": "pub mod asset;\npub mod mesh;\n"
}
]
About this extraction
This page contains the full source code of the 443eb9/bevy_entitiles GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 144 files (3.3 MB), approximately 874.1k tokens, and a symbol index with 1041 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.