Skip to main content

Crate bevy_map_autotile

Crate bevy_map_autotile 

Source
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;

Modules§

config
Autotile configuration and legacy support
legacy
Legacy 47-tile blob autotile support
terrain
Terrain types and data structures
wang
WangFiller Algorithm for Automatic Terrain Tile Selection