Skip to content

Commit a354afd

Browse files
committed
feat: Add feature flag allowing disabling rayon.
1 parent 2abfca3 commit a354afd

File tree

3 files changed

+16
-6
lines changed

3 files changed

+16
-6
lines changed

Cargo.toml

+5-1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ repository = "https://github.com/forbjok/bevy_simple_tilemap.git"
99

1010
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
1111

12+
[features]
13+
default = ["rayon"]
14+
rayon = ["dep:rayon"]
15+
1216
[dependencies]
1317
bitflags = "2.3.3"
1418
bytemuck = "1.13.1"
@@ -29,4 +33,4 @@ default-features = false
2933
features = ["x11", "png"]
3034

3135
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
32-
rayon = "1.7.0"
36+
rayon = { version = "1.7.0", optional = true }

src/render/extract.rs

+7-3
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use bevy::render::{texture::Image, view::ComputedVisibility};
88
use bevy::sprite::TextureAtlas;
99
use bevy::transform::components::GlobalTransform;
1010

11-
#[cfg(not(target_arch = "wasm32"))]
11+
#[cfg(all(not(target_arch = "wasm32"), feature = "rayon"))]
1212
use rayon::iter::{IndexedParallelIterator, IntoParallelRefIterator, ParallelIterator};
1313

1414
use crate::tilemap::{row_major_pos, CHUNK_HEIGHT, CHUNK_WIDTH};
@@ -165,7 +165,9 @@ pub fn extract_tilemaps(
165165

166166
#[cfg(target_arch = "wasm32")]
167167
let chunk_iter = chunks.iter();
168-
#[cfg(not(target_arch = "wasm32"))]
168+
#[cfg(all(not(target_arch = "wasm32"), not(feature = "rayon")))]
169+
let chunk_iter = chunks.iter();
170+
#[cfg(all(not(target_arch = "wasm32"), feature = "rayon"))]
169171
let chunk_iter = chunks.par_iter();
170172

171173
// Extract chunks
@@ -180,7 +182,9 @@ pub fn extract_tilemaps(
180182

181183
#[cfg(target_arch = "wasm32")]
182184
let tile_iter = chunk.tiles.iter();
183-
#[cfg(not(target_arch = "wasm32"))]
185+
#[cfg(all(not(target_arch = "wasm32"), not(feature = "rayon")))]
186+
let tile_iter = chunk.tiles.iter();
187+
#[cfg(all(not(target_arch = "wasm32"), feature = "rayon"))]
184188
let tile_iter = chunk.tiles.par_iter();
185189

186190
let tiles: Vec<ExtractedTile> = tile_iter

src/render/queue.rs

+4-2
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ use bevy::render::{
1616

1717
use bevy::utils::FloatOrd;
1818

19-
#[cfg(not(target_arch = "wasm32"))]
19+
#[cfg(all(not(target_arch = "wasm32"), feature = "rayon"))]
2020
use rayon::iter::{IntoParallelIterator, ParallelIterator};
2121

2222
use crate::TileFlags;
@@ -141,7 +141,9 @@ pub fn queue_tilemaps(
141141

142142
#[cfg(target_arch = "wasm32")]
143143
let chonk_iter = chonks.into_iter();
144-
#[cfg(not(target_arch = "wasm32"))]
144+
#[cfg(all(not(target_arch = "wasm32"), not(feature = "rayon")))]
145+
let chonk_iter = chonks.into_iter();
146+
#[cfg(all(not(target_arch = "wasm32"), feature = "rayon"))]
145147
let chonk_iter = chonks.into_par_iter();
146148

147149
// Process extracted chunks in parallel, updating their metadata.

0 commit comments

Comments
 (0)