Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "bevy_meshem"
version = "0.5.0"
version = "0.5.1"
edition = "2021"
authors = ["Adamkob12"]
description = "A crate that offers a flexible and efficient way to generate meshes from a grid of Voxels"
Expand All @@ -11,5 +11,5 @@ documentation = "https://docs.rs/bevy_meshem"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
bevy = "0.16.0"
bevy = "0.18.0"
rand = "0.8.5"
39 changes: 20 additions & 19 deletions examples/simple_example.rs
Original file line number Diff line number Diff line change
Expand Up @@ -23,14 +23,10 @@ fn main() {
Some(0.8),
1.0,
),
})
.insert_resource(AmbientLight {
brightness: 1500.0,
color: Color::WHITE,
..default()
});

app.add_systems(Startup, setup).add_systems(
app.add_systems(Startup, setup)
.add_systems(
Update,
(
input_handler,
Expand All @@ -40,8 +36,8 @@ fn main() {
),
);

app.add_event::<ToggleWireframe>()
.add_event::<RegenerateMesh>();
app.add_message::<ToggleWireframe>()
.add_message::<RegenerateMesh>();

app.run();
}
Expand All @@ -55,10 +51,10 @@ struct Meshy {
#[derive(Component)]
struct MeshInfo;

#[derive(Event, Default)]
#[derive(Message, Default)]
struct ToggleWireframe;

#[derive(Event, Default)]
#[derive(Message, Default)]
struct RegenerateMesh;

/// Setting up everything to showcase the mesh.
Expand Down Expand Up @@ -114,7 +110,12 @@ fn setup(
// Camera in 3D space.
commands.spawn((
Camera3d::default(),
camera_and_light_transform
camera_and_light_transform,
AmbientLight {
brightness: 1500.0,
color: Color::WHITE,
..default()
}
));

// Light up the scene.
Expand Down Expand Up @@ -190,7 +191,7 @@ impl VoxelRegistry for BlockRegistry {
/// The attributes we want to take from out voxels, note that using a lot of different
/// attributes will likely lead to performance problems and unpredictable behaviour.
/// We chose these 3 because they are very common, the algorithm does preserve UV data.
fn all_attributes(&self) -> Vec<bevy::render::mesh::MeshVertexAttribute> {
fn all_attributes(&self) -> Vec<bevy::mesh::MeshVertexAttribute> {
return vec![
Mesh::ATTRIBUTE_POSITION,
Mesh::ATTRIBUTE_UV_0,
Expand All @@ -204,8 +205,8 @@ fn input_handler(
keyboard_input: Res<ButtonInput<KeyCode>>,
mut query: Query<&mut Transform, With<Meshy>>,
time: Res<Time>,
mut event_writer: EventWriter<ToggleWireframe>,
mut e: EventWriter<RegenerateMesh>,
mut message_writer: MessageWriter<ToggleWireframe>,
mut e: MessageWriter<RegenerateMesh>,
) {
if keyboard_input.pressed(KeyCode::KeyX) {
for mut transform in &mut query {
Expand All @@ -228,7 +229,7 @@ fn input_handler(
}
}
if keyboard_input.just_pressed(KeyCode::KeyT) {
event_writer.write_default();
message_writer.write_default();
}
if keyboard_input.just_pressed(KeyCode::KeyC) {
e.write_default();
Expand All @@ -241,9 +242,9 @@ fn toggle_wireframe(
mut materials: ResMut<Assets<StandardMaterial>>,
with: Query<Entity, With<Wireframe>>,
without: Query<Entity, (Without<Wireframe>, With<Meshy>)>,
mut events: EventReader<ToggleWireframe>,
mut messages: MessageReader<ToggleWireframe>,
) {
for _ in events.read() {
for _ in messages.read() {
if let Ok(ent) = with.single() {
commands.entity(ent).remove::<Wireframe>();
for (_, material) in materials.iter_mut() {
Expand Down Expand Up @@ -301,10 +302,10 @@ fn regenerate_mesh(
breg: Res<BlockRegistry>,
mut meshes: ResMut<Assets<Mesh>>,
mesh_query: Query<&Mesh3d>,
mut event_reader: EventReader<RegenerateMesh>,
mut message_reader: MessageReader<RegenerateMesh>,
mut text_query: Query<&mut Text, With<MeshInfo>>,
) {
for _ in event_reader.read() {
for _ in message_reader.read() {
let mesh = meshes
.get_mut(mesh_query.single().unwrap())
.expect("Couldn't get a mut ref to the mesh");
Expand Down
36 changes: 18 additions & 18 deletions examples/update_mesh_example.rs
Original file line number Diff line number Diff line change
Expand Up @@ -49,11 +49,6 @@ fn main() {
app.insert_resource(BlockRegistry {
grass: mesh,
dirt: mesh2,
})
.insert_resource(AmbientLight {
brightness: 400.0,
color: Color::WHITE,
..default()
});

app.add_systems(Startup, setup).add_systems(
Expand All @@ -66,8 +61,8 @@ fn main() {
),
);

app.add_event::<ToggleWireframe>()
.add_event::<RegenerateMesh>();
app.add_message::<ToggleWireframe>()
.add_message::<RegenerateMesh>();

app.run();
}
Expand All @@ -81,10 +76,10 @@ struct Meshy {
#[derive(Component)]
struct MeshInfo;

#[derive(Event, Default)]
#[derive(Message, Default)]
struct ToggleWireframe;

#[derive(Event, Default)]
#[derive(Message, Default)]
struct RegenerateMesh;

/// Setting up everything to showcase the mesh.
Expand Down Expand Up @@ -153,7 +148,12 @@ fn setup(
// Camera in 3D space.
commands.spawn((
Camera3d::default(),
camera_and_light_transform
camera_and_light_transform,
AmbientLight {
brightness: 400.0,
color: Color::WHITE,
..default()
}
));

// Light up the scene.
Expand Down Expand Up @@ -240,7 +240,7 @@ impl VoxelRegistry for BlockRegistry {
/// The attributes we want to take from out voxels, note that using a lot of different
/// attributes will likely lead to performance problems and unpredictable behaviour.
/// We chose these 3 because they are very common, the algorithm does preserve UV data.
fn all_attributes(&self) -> Vec<bevy::render::mesh::MeshVertexAttribute> {
fn all_attributes(&self) -> Vec<bevy::mesh::MeshVertexAttribute> {
return vec![
Mesh::ATTRIBUTE_POSITION,
Mesh::ATTRIBUTE_UV_0,
Expand All @@ -254,8 +254,8 @@ fn input_handler(
keyboard_input: Res<ButtonInput<KeyCode>>,
mut query: Query<&mut Transform, With<Meshy>>,
time: Res<Time>,
mut event_writer: EventWriter<ToggleWireframe>,
mut e: EventWriter<RegenerateMesh>,
mut message_writer: MessageWriter<ToggleWireframe>,
mut e: MessageWriter<RegenerateMesh>,
) {
if keyboard_input.pressed(KeyCode::KeyX) {
for mut transform in &mut query {
Expand All @@ -278,7 +278,7 @@ fn input_handler(
}
}
if keyboard_input.just_pressed(KeyCode::KeyT) {
event_writer.write_default();
message_writer.write_default();
}
if keyboard_input.pressed(KeyCode::KeyC) {
e.write_default();
Expand All @@ -291,9 +291,9 @@ fn toggle_wireframe(
mut materials: ResMut<Assets<StandardMaterial>>,
with: Query<Entity, With<Wireframe>>,
without: Query<Entity, (Without<Wireframe>, With<Meshy>)>,
mut events: EventReader<ToggleWireframe>,
mut messages: MessageReader<ToggleWireframe>,
) {
for _ in events.read() {
for _ in messages.read() {
if let Ok(ent) = with.single() {
commands.entity(ent).remove::<Wireframe>();
for (_, material) in materials.iter_mut() {
Expand Down Expand Up @@ -351,9 +351,9 @@ fn mesh_update(
breg: Res<BlockRegistry>,
mut meshes: ResMut<Assets<Mesh>>,
mesh_query: Query<&Mesh3d>,
mut event_reader: EventReader<RegenerateMesh>,
mut message_reader: MessageReader<RegenerateMesh>,
) {
for _ in event_reader.read() {
for _ in message_reader.read() {
let mesh = meshes
.get_mut(mesh_query.single().unwrap())
.expect("Couldn't get a mut ref to the mesh");
Expand Down
2 changes: 1 addition & 1 deletion src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ pub mod util;
pub(crate) mod voxel_mesh;

use bevy::log::warn;
use bevy::mesh::MeshVertexAttribute;
use bevy::prelude::*;
use bevy::render::mesh::MeshVertexAttribute;

pub mod prelude {
pub use crate::adj::*;
Expand Down
4 changes: 2 additions & 2 deletions src/meshem.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
//! This module contains the main functions themself, and some added utilities and defs.
use crate::pbs::*;
use crate::prelude::*;
use bevy::asset::RenderAssetUsages;
use bevy::prelude::*;
use bevy::render::mesh::{Indices, MeshVertexAttribute, VertexAttributeValues};
use bevy::render::render_asset::RenderAssetUsages;
use bevy::mesh::{Indices, MeshVertexAttribute, VertexAttributeValues};
use bevy::render::render_resource::PrimitiveTopology;

/// All the variants for the Meshing algorithm.
Expand Down
3 changes: 1 addition & 2 deletions src/pbs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@
/// voxel based games that resembles Ambient Occlusion, but it is static- which means the
/// shadows are computed only once, when the mesh is generated (or updated).
use crate::prelude::*;
use bevy::math::Vec3;
use bevy::render::mesh::{Mesh, VertexAttributeValues};
use bevy::{math::Vec3, mesh::VertexAttributeValues};
use std::sync::{Arc, RwLock};

#[derive(Copy, Clone)]
Expand Down
2 changes: 1 addition & 1 deletion src/update.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// use crate::pbs::*;
use crate::prelude::*;
use bevy::render::mesh::{Indices, VertexAttributeValues};
use bevy::mesh::{Indices, VertexAttributeValues};

/// The function updates the mesh according to the change log in the mesh meta data.
pub fn update_mesh<T: std::fmt::Debug>(
Expand Down
4 changes: 2 additions & 2 deletions src/util/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -154,7 +154,7 @@ pub const fn one_d_cords_safe(threed: [usize; 3], dims: (usize, usize, usize)) -
}

// Extract the vertex data for the physics engine.
use bevy::render::mesh::{Mesh, VertexAttributeValues};
use bevy::mesh::{Mesh, VertexAttributeValues};
pub fn extract_position_vertex_data(mesh: &Mesh) -> Vec<Vec3> {
let VertexAttributeValues::Float32x3(pos_vertices) =
mesh.attribute(Mesh::ATTRIBUTE_POSITION).unwrap()
Expand All @@ -168,7 +168,7 @@ pub fn extract_position_vertex_data(mesh: &Mesh) -> Vec<Vec3> {
}

// Extract the indices for the physics engine.
use bevy::render::mesh::Indices;
use bevy::mesh::Indices;
pub fn extract_indices_data(mesh: &Mesh) -> Vec<[u32; 3]> {
let Indices::U32(indices) = mesh.indices().unwrap() else {
panic!("Indices data shoud be in `Indices::U32` format")
Expand Down
4 changes: 3 additions & 1 deletion src/util/vav.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@
//! that makes working with them more comfortable. It is very spaghetti but it helps with the
//! readability of main API.
#![allow(unused_variables)]
use bevy::render::{mesh::VertexAttributeValues, render_resource::VertexFormat};
use bevy::render::render_resource::VertexFormat;
use bevy::mesh::VertexAttributeValues;

pub trait VAVutils {
fn extend(&mut self, t: &Self);
fn filter_bool_array(&self, index_filter: Vec<bool>) -> Self;
Expand Down
4 changes: 2 additions & 2 deletions src/voxel_mesh.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
//! A module containing the "default block", it is used in the examples,
//! it is simple and easy to work with.
use crate::prelude::*;
use bevy::asset::RenderAssetUsages;
use bevy::mesh::Indices;
use bevy::prelude::*;
use bevy::render::mesh::Indices;
use bevy::render::render_asset::RenderAssetUsages;
use bevy::render::render_resource::PrimitiveTopology;

/// Function that generates the mesh of a voxel.
Expand Down
Loading