14 releases
0.14.17 | Oct 9, 2024 |
---|---|
0.14.16 | Aug 26, 2024 |
#798 in Game dev
125 downloads per month
Used in spirit_edit_core
115KB
2K
SLoC
Bevy Clay Tiles
Paint tiles and walls within a constrained+layered 2D grid system and they are extruded to 3D meshes for 3D games. This is meant to be useful for blocking out levels.
(Inspired by DreamerTalin)
Installing
cargo add bevy_clay_tiles
Run example
cargo run --example basic
Config
In the tile_types config, for each 'tile type' you can set:
- the texture index used for diffuse texture
- texture UV expansion factor (stretch material)
- color tint of the diffuse texture
Editing
When creating the clay tiles, you can use either a Rectangle paint mode or a Polygon paint mode, similar to the Rectangle or Polygon select tools in typical photo editor softwares.
The edit mode allows you to control:
- the Y height offset of created tiles
- the height scale that new tiles will be extruded up to
- the tile type index (see the Config section and tile_types.ron)
- the default parent entity for the tile meshes when created
Tile Materials
When clay tiles blocks spawn, they will not have a material on them, only a component ClayTileMaterial { material_name: String }. Therefore it is your responsibility to replace the component with your own material handle. The example use the BevyMaterialTool to help with this but you can just insert a Handle if you wish.
fn add_material_handles(
mut commands:Commands,
block_query: Query<(Entity, &ClayTileMaterial), Added<ClayTileMaterial>>
){
for (tile_entity, tile_material_comp) in block_query.iter(){
let material_name = &tile_material_comp.material_name;
commands.get_entity(tile_entity).map( |mut cmd| {
cmd.remove::<ClayTileMaterial>( );
cmd.insert( MaterialOverrideComponent {
material_override: material_name.clone()
} );
} );
}
}
Do you like this crate? Support the creator on Patreon
Dependencies
~50–87MB
~1.5M SLoC