Expand description
Tiled-compatible terrain autotile system
This crate provides the WangFiller algorithm for automatic tile selection based on terrain definitions, compatible with Tiled’s terrain system.
§Features
- Corner, Edge, and Mixed terrain set types
- Tiled-compatible Wang tile matching
- Runtime terrain modification support
- Legacy 47-tile blob format support
§Example
ⓘ
use bevy_map_autotile::{
terrain::{TerrainSet, TerrainSetType, Color},
wang::{WangFiller, paint_terrain},
};
use uuid::Uuid;
// Create a terrain set for a tileset
let mut terrain_set = TerrainSet::new(
"Ground".to_string(),
Uuid::new_v4(), // tileset ID
TerrainSetType::Corner,
);
// Add terrain types
terrain_set.add_terrain("Grass".to_string(), Color::GREEN);
terrain_set.add_terrain("Dirt".to_string(), Color::rgb(0.6, 0.4, 0.2));
// Define tile terrain data for each tile in the tileset
terrain_set.set_tile_terrain(0, 0, Some(0)); // Tile 0, corner 0 = Grass
// ... more tile definitions
// Paint terrain onto a tile map
let mut tiles = vec![None; 100]; // 10x10 map
paint_terrain(&mut tiles, 10, 10, 5, 5, &terrain_set, 0);Re-exports§
pub use config::AutotileConfig;pub use config::LegacyTerrainType;pub use config::TerrainBrush;pub use config::TerrainType;pub use terrain::Color;pub use terrain::Terrain;pub use terrain::TerrainSet;pub use terrain::TerrainSetType;pub use terrain::TileConstraints;pub use terrain::TileTerrainData;pub use wang::get_paint_target;pub use wang::paint_terrain;pub use wang::paint_terrain_at_target;pub use wang::paint_terrain_at_target_with_debug;pub use wang::paint_terrain_at_targets;pub use wang::paint_terrain_horizontal_edge;pub use wang::paint_terrain_vertical_edge;pub use wang::paint_terrain_with_debug;pub use wang::preview_terrain_at_target;pub use wang::preview_terrain_at_targets;pub use wang::update_tile_with_neighbors;pub use wang::CellInfo;pub use wang::PaintTarget;pub use wang::TerrainId;pub use wang::WangFiller;pub use wang::WangId;pub use wang::WangPosition;pub use legacy::apply_autotile_to_region;pub use legacy::calculate_bitmask;pub use legacy::erase_autotile;pub use legacy::neighbors;pub use legacy::optimize_bitmask;pub use legacy::paint_autotile;pub use bevy_map_core;