use bevy::prelude::*;
#[cfg(not(target_arch = "wasm32"))]
use bevy::pbr::wireframe::WireframeConfig;
use crate::{GridOverlay, CELL_HEIGHT, CELL_WIDTH, GRID_HEIGHT, GRID_WIDTH, PLANE_H, PLANE_W};
pub fn spawn_grid_overlay(
mut commands: Commands,
mut meshes: ResMut<Assets<Mesh>>,
mut materials: ResMut<Assets<StandardMaterial>>,
) {
let grid_material = materials.add(StandardMaterial {
base_color: Color::srgba(0.5, 0.5, 0.5, 0.3),
unlit: true,
alpha_mode: AlphaMode::Blend,
..default()
});
let start_x = -PLANE_H / 2.0; let start_z = -PLANE_W / 2.0;
for i in 0..=GRID_WIDTH {
let z_pos = start_z + (i as f32 * CELL_WIDTH);
let line_mesh = meshes.add(Cuboid::new(PLANE_H, 0.02, 0.02));
commands.spawn((
Mesh3d(line_mesh),
MeshMaterial3d(grid_material.clone()),
Transform::from_xyz(0.0, 2.0, z_pos),
GridOverlay,
Visibility::Hidden, ));
}
for i in 0..=GRID_HEIGHT {
let x_pos = start_x + (i as f32 * CELL_HEIGHT);
let line_mesh = meshes.add(Cuboid::new(0.02, 0.02, PLANE_W));
commands.spawn((
Mesh3d(line_mesh),
MeshMaterial3d(grid_material.clone()),
Transform::from_xyz(x_pos, 2.0, 0.0),
GridOverlay,
Visibility::Hidden, ));
}
}
#[cfg(not(target_arch = "wasm32"))]
pub fn toggle_grid_visibility(
wireframe_config: Res<WireframeConfig>,
mut grid_query: Query<&mut Visibility, With<GridOverlay>>,
) {
let target_visibility = if wireframe_config.global {
Visibility::Visible
} else {
Visibility::Hidden
};
for mut visibility in grid_query.iter_mut() {
*visibility = target_visibility;
}
}
#[cfg(target_arch = "wasm32")]
pub fn toggle_grid_visibility() {
}