Skip to content

Commit c3d1af7

Browse files
committed
feature: migrate to required components
1 parent e37edaa commit c3d1af7

35 files changed

+455
-431
lines changed

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ exclude = ["assets/*", "screenshots/*"]
1313
default = ["render"]
1414
atlas = []
1515
render = []
16-
serde = ["dep:serde"]
16+
serde = ["dep:serde", "bevy/serialize"]
1717

1818
[dependencies]
1919
bevy = { version = "0.16.0-rc.3", default-features = false, features = [

examples/accessing_tiles.rs

Lines changed: 11 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,7 @@ fn startup(mut commands: Commands, asset_server: Res<AssetServer>) {
3838
for y in 0..map_size.y {
3939
let tile_pos = TilePos { x, y };
4040
let tile_entity = commands
41-
.spawn(TileBundle {
42-
position: tile_pos,
43-
tilemap_id: TilemapId(tilemap_entity),
44-
..Default::default()
45-
})
41+
.spawn((Tile, tile_pos, TilemapId(tilemap_entity)))
4642
.id();
4743
// Here we let the tile storage component know what tiles we have.
4844
tile_storage.set(&tile_pos, tile_entity);
@@ -78,21 +74,20 @@ fn startup(mut commands: Commands, asset_server: Res<AssetServer>) {
7874

7975
// This is the size of each individual tiles in pixels.
8076
let tile_size = TilemapTileSize { x: 16.0, y: 16.0 };
81-
let grid_size = tile_size.into();
77+
let grid_size = TilemapGridSize::from(tile_size);
8278

8379
// Spawns a tilemap.
8480
// Once the tile storage is inserted onto the tilemap entity it can no longer be accessed.
8581
commands.entity(tilemap_entity).insert((
86-
TilemapBundle {
87-
grid_size,
88-
size: map_size,
89-
storage: tile_storage,
90-
map_type,
91-
texture: TilemapTexture::Single(texture_handle),
92-
tile_size,
93-
anchor: TilemapAnchor::Center,
94-
..Default::default()
95-
},
82+
Tilemap,
83+
grid_size,
84+
map_size,
85+
tile_storage,
86+
map_type,
87+
TilemapTexture::Single(texture_handle),
88+
TilemapMaterial::standard(),
89+
tile_size,
90+
TilemapAnchor::Center,
9691
LastUpdate(0.0),
9792
CurrentColor(1),
9893
));

examples/anchor.rs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -130,16 +130,17 @@ fn spawn_tilemap(mut commands: Commands, tile_handle_square: Res<TileHandleSquar
130130
let grid_size = GRID_SIZE_SQUARE;
131131
let map_type = TilemapType::Square;
132132

133-
commands.entity(tilemap_entity).insert(TilemapBundle {
133+
commands.entity(tilemap_entity).insert((
134+
Tilemap,
134135
grid_size,
135-
size: map_size,
136-
storage: tile_storage,
137-
texture: TilemapTexture::Single(tile_handle_square.clone()),
136+
map_size,
137+
tile_storage,
138+
TilemapTexture::Single(tile_handle_square.clone()),
139+
TilemapMaterial::standard(),
138140
tile_size,
139141
map_type,
140-
anchor: TilemapAnchor::TopLeft,
141-
..Default::default()
142-
});
142+
TilemapAnchor::TopLeft,
143+
));
143144
}
144145

145146
#[derive(Component)]

examples/animation.rs

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use bevy::{
44
};
55
use bevy_ecs_tilemap::TilemapPlugin;
66
use bevy_ecs_tilemap::prelude::*;
7-
use bevy_ecs_tilemap::tiles::{AnimatedTile, TileBundle, TilePos, TileStorage, TileTextureIndex};
7+
use bevy_ecs_tilemap::tiles::{AnimatedTile, TilePos, TileStorage, TileTextureIndex};
88
use rand::seq::IteratorRandom;
99
use rand::thread_rng;
1010

@@ -53,16 +53,17 @@ fn create_background(mut commands: Commands, asset_server: Res<AssetServer>) {
5353

5454
let map_type = TilemapType::default();
5555

56-
commands.entity(tilemap_entity).insert(TilemapBundle {
56+
commands.entity(tilemap_entity).insert((
57+
Tilemap,
5758
size,
5859
grid_size,
5960
map_type,
6061
tile_size,
61-
storage: tile_storage,
62-
texture: TilemapTexture::Single(texture_handle),
63-
anchor: TilemapAnchor::Center,
64-
..Default::default()
65-
});
62+
tile_storage,
63+
TilemapTexture::Single(texture_handle),
64+
TilemapMaterial::standard(),
65+
TilemapAnchor::Center,
66+
));
6667
}
6768

6869
fn create_animated_flowers(mut commands: Commands, asset_server: Res<AssetServer>) {
@@ -90,12 +91,10 @@ fn create_animated_flowers(mut commands: Commands, asset_server: Res<AssetServer
9091
let tile_pos = TilePos { x, y };
9192
let tile_entity = commands
9293
.spawn((
93-
TileBundle {
94-
position: tile_pos,
95-
tilemap_id: TilemapId(tilemap_entity),
96-
texture_index: TileTextureIndex(0),
97-
..Default::default()
98-
},
94+
Tile,
95+
tile_pos,
96+
TilemapId(tilemap_entity),
97+
TileTextureIndex(0),
9998
// To enable animation, we must insert the `AnimatedTile` component on
10099
// each tile that is to be animated.
101100
AnimatedTile {
@@ -110,17 +109,18 @@ fn create_animated_flowers(mut commands: Commands, asset_server: Res<AssetServer
110109
}
111110
let map_type = TilemapType::Square;
112111

113-
commands.entity(tilemap_entity).insert(TilemapBundle {
114-
size: map_size,
112+
commands.entity(tilemap_entity).insert((
113+
Tilemap,
114+
map_size,
115115
grid_size,
116116
map_type,
117117
tile_size,
118-
storage: tile_storage,
119-
texture: TilemapTexture::Single(texture_handle),
120-
anchor: TilemapAnchor::Center,
121-
transform: Transform::from_xyz(0.0, 0.0, 1.0),
122-
..Default::default()
123-
});
118+
tile_storage,
119+
TilemapTexture::Single(texture_handle),
120+
TilemapMaterial::standard(),
121+
TilemapAnchor::Center,
122+
Transform::from_xyz(0.0, 0.0, 1.0),
123+
));
124124
}
125125

126126
fn startup(mut commands: Commands) {

examples/basic.rs

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -35,30 +35,27 @@ fn startup(
3535
for y in 0..map_size.y {
3636
let tile_pos = TilePos { x, y };
3737
let tile_entity = commands
38-
.spawn(TileBundle {
39-
position: tile_pos,
40-
tilemap_id: TilemapId(tilemap_entity),
41-
..Default::default()
42-
})
38+
.spawn((Tile, tile_pos, TilemapId(tilemap_entity)))
4339
.id();
4440
tile_storage.set(&tile_pos, tile_entity);
4541
}
4642
}
4743

4844
let tile_size = TilemapTileSize { x: 16.0, y: 16.0 };
49-
let grid_size = tile_size.into();
45+
let grid_size = TilemapGridSize::from(tile_size);
5046
let map_type = TilemapType::default();
5147

52-
commands.entity(tilemap_entity).insert(TilemapBundle {
48+
commands.entity(tilemap_entity).insert((
49+
Tilemap,
5350
grid_size,
5451
map_type,
55-
size: map_size,
56-
storage: tile_storage,
57-
texture: TilemapTexture::Single(texture_handle),
52+
map_size,
53+
tile_storage,
54+
TilemapTexture::Single(texture_handle),
55+
TilemapMaterial::standard(),
5856
tile_size,
59-
anchor: TilemapAnchor::Center,
60-
..Default::default()
61-
});
57+
TilemapAnchor::Center,
58+
));
6259

6360
// Add atlas to array texture loader so it's preprocessed before we need to use it.
6461
// Only used when the atlas feature is off and we are using array textures.

examples/bench.rs

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -25,23 +25,24 @@ fn startup(mut commands: Commands, asset_server: Res<AssetServer>) {
2525
);
2626

2727
let tile_size = TilemapTileSize { x: 16.0, y: 16.0 };
28-
let grid_size = tile_size.into();
28+
let grid_size = TilemapGridSize::from(tile_size);
2929
let map_type = TilemapType::default();
3030

31-
commands.entity(tilemap_entity).insert(TilemapBundle {
31+
commands.entity(tilemap_entity).insert((
32+
Tilemap,
3233
grid_size,
3334
map_type,
34-
size: map_size,
35-
storage: tile_storage,
36-
texture: TilemapTexture::Single(texture_handle),
35+
map_size,
36+
tile_storage,
37+
TilemapTexture::Single(texture_handle),
38+
TilemapMaterial::standard(),
3739
tile_size,
38-
anchor: TilemapAnchor::Center,
39-
render_settings: TilemapRenderSettings {
40+
TilemapAnchor::Center,
41+
TilemapRenderSettings {
4042
render_chunk_size: UVec2::new(256, 256),
4143
..Default::default()
4244
},
43-
..Default::default()
44-
});
45+
));
4546
}
4647

4748
fn main() {

examples/chunking.rs

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,7 @@ fn spawn_chunk(commands: &mut Commands, asset_server: &AssetServer, chunk_pos: I
2121
for y in 0..CHUNK_SIZE.y {
2222
let tile_pos = TilePos { x, y };
2323
let tile_entity = commands
24-
.spawn(TileBundle {
25-
position: tile_pos,
26-
tilemap_id: TilemapId(tilemap_entity),
27-
..Default::default()
28-
})
24+
.spawn((Tile, tile_pos, TilemapId(tilemap_entity)))
2925
.id();
3026
commands.entity(tilemap_entity).add_child(tile_entity);
3127
tile_storage.set(&tile_pos, tile_entity);
@@ -38,19 +34,20 @@ fn spawn_chunk(commands: &mut Commands, asset_server: &AssetServer, chunk_pos: I
3834
0.0,
3935
));
4036
let texture_handle: Handle<Image> = asset_server.load("tiles.png");
41-
commands.entity(tilemap_entity).insert(TilemapBundle {
42-
grid_size: TILE_SIZE.into(),
43-
size: CHUNK_SIZE.into(),
44-
storage: tile_storage,
45-
texture: TilemapTexture::Single(texture_handle),
46-
tile_size: TILE_SIZE,
37+
commands.entity(tilemap_entity).insert((
38+
Tilemap,
39+
TilemapGridSize::from(TILE_SIZE),
40+
TilemapSize::from(CHUNK_SIZE),
41+
tile_storage,
42+
TilemapTexture::Single(texture_handle),
43+
TilemapMaterial::standard(),
44+
TILE_SIZE,
4745
transform,
48-
render_settings: TilemapRenderSettings {
46+
TilemapRenderSettings {
4947
render_chunk_size: RENDER_CHUNK_SIZE,
5048
..Default::default()
5149
},
52-
..Default::default()
53-
});
50+
));
5451
}
5552

5653
fn startup(mut commands: Commands) {

examples/colors.rs

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -75,18 +75,19 @@ fn startup(mut commands: Commands, asset_server: Res<AssetServer>) {
7575
);
7676

7777
let tile_size = TilemapTileSize { x: 16.0, y: 16.0 };
78-
let grid_size = tile_size.into();
78+
let grid_size = TilemapGridSize::from(tile_size);
7979

80-
commands.entity(tilemap_entity).insert(TilemapBundle {
80+
commands.entity(tilemap_entity).insert((
81+
Tilemap,
8182
grid_size,
82-
size: map_size,
83-
storage: tile_storage,
84-
texture: TilemapTexture::Single(texture_handle),
83+
map_size,
84+
tile_storage,
85+
TilemapTexture::Single(texture_handle),
86+
TilemapMaterial::standard(),
8587
tile_size,
86-
map_type: TilemapType::Square,
87-
anchor: TilemapAnchor::Center,
88-
..Default::default()
89-
});
88+
TilemapType::Square,
89+
TilemapAnchor::Center,
90+
));
9091
}
9192

9293
fn main() {

examples/custom_shader.rs

Lines changed: 25 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ fn startup(
2424
) {
2525
commands.spawn(Camera2d);
2626

27-
let my_material_handle = MaterialTilemapHandle::from(materials.add(MyMaterial {
27+
let my_material = TilemapMaterial(materials.add(MyMaterial {
2828
brightness: 0.5,
2929
..default()
3030
}));
@@ -46,22 +46,20 @@ fn startup(
4646
);
4747

4848
let tile_size = TilemapTileSize { x: 16.0, y: 16.0 };
49-
let grid_size = tile_size.into();
49+
let grid_size = TilemapGridSize::from(tile_size);
5050
let map_type = TilemapType::default();
5151

52-
commands
53-
.entity(tilemap_entity)
54-
.insert(MaterialTilemapBundle {
55-
grid_size,
56-
map_type,
57-
size: map_size,
58-
storage: tile_storage,
59-
texture: TilemapTexture::Single(texture_handle.clone()),
60-
tile_size,
61-
anchor: TilemapAnchor::Center,
62-
material: my_material_handle.clone(),
63-
..Default::default()
64-
});
52+
commands.entity(tilemap_entity).insert((
53+
Tilemap,
54+
grid_size,
55+
map_type,
56+
map_size,
57+
tile_storage,
58+
TilemapTexture::Single(texture_handle.clone()),
59+
tile_size,
60+
TilemapAnchor::Center,
61+
my_material.clone(),
62+
));
6563

6664
// Layer 2
6765
let mut tile_storage = TileStorage::empty(map_size);
@@ -75,20 +73,18 @@ fn startup(
7573
&mut tile_storage,
7674
);
7775

78-
commands
79-
.entity(tilemap_entity)
80-
.insert(MaterialTilemapBundle {
81-
grid_size,
82-
map_type,
83-
size: map_size,
84-
storage: tile_storage,
85-
texture: TilemapTexture::Single(texture_handle),
86-
tile_size: TilemapTileSize { x: 16.0, y: 16.0 },
87-
anchor: TilemapAnchor::Center,
88-
transform: Transform::from_xyz(32.0, 32.0, 1.0),
89-
material: my_material_handle,
90-
..Default::default()
91-
});
76+
commands.entity(tilemap_entity).insert((
77+
Tilemap,
78+
grid_size,
79+
map_type,
80+
map_size,
81+
tile_storage,
82+
TilemapTexture::Single(texture_handle),
83+
TilemapTileSize { x: 16.0, y: 16.0 },
84+
TilemapAnchor::Center,
85+
Transform::from_xyz(32.0, 32.0, 1.0),
86+
my_material,
87+
));
9288
}
9389

9490
fn main() {

0 commit comments

Comments
 (0)