refactor(mesh): move Mesh3d and Mesh2d into bevy_mesh (#19943)

# Objective

- another step towards splitting out bevy_camera, this is needed by
visibility systems

## Solution

- move mesh stuff into mesh place

## Testing

- 3d_scene looks fine

No migration needed because of the re-export, that can be another PR
after i split bevy_camera
This commit is contained in:
atlv 2025-07-04 12:24:21 -04:00 committed by GitHub
parent b01de70bdd
commit 58feca9b32
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 18 additions and 10 deletions

View File

@ -34,6 +34,7 @@ serde = { version = "1", default-features = false, features = [
hexasphere = "15.0" hexasphere = "15.0"
thiserror = { version = "2", default-features = false } thiserror = { version = "2", default-features = false }
tracing = { version = "0.1", default-features = false, features = ["std"] } tracing = { version = "0.1", default-features = false, features = ["std"] }
derive_more = { version = "2", default-features = false, features = ["from"] }
[dev-dependencies] [dev-dependencies]
serde_json = "1.0.140" serde_json = "1.0.140"

View File

@ -1,7 +1,4 @@
use crate::{ use crate::mesh::Mesh;
mesh::Mesh,
view::{self, Visibility, VisibilityClass},
};
use bevy_asset::{AsAssetId, AssetEvent, AssetId, Handle}; use bevy_asset::{AsAssetId, AssetEvent, AssetId, Handle};
use bevy_derive::{Deref, DerefMut}; use bevy_derive::{Deref, DerefMut};
use bevy_ecs::{ use bevy_ecs::{
@ -42,8 +39,7 @@ use derive_more::derive::From;
/// ``` /// ```
#[derive(Component, Clone, Debug, Default, Deref, DerefMut, Reflect, PartialEq, Eq, From)] #[derive(Component, Clone, Debug, Default, Deref, DerefMut, Reflect, PartialEq, Eq, From)]
#[reflect(Component, Default, Clone, PartialEq)] #[reflect(Component, Default, Clone, PartialEq)]
#[require(Transform, Visibility, VisibilityClass)] #[require(Transform)]
#[component(on_add = view::add_visibility_class::<Mesh2d>)]
pub struct Mesh2d(pub Handle<Mesh>); pub struct Mesh2d(pub Handle<Mesh>);
impl From<Mesh2d> for AssetId<Mesh> { impl From<Mesh2d> for AssetId<Mesh> {
@ -98,8 +94,7 @@ impl AsAssetId for Mesh2d {
/// ``` /// ```
#[derive(Component, Clone, Debug, Default, Deref, DerefMut, Reflect, PartialEq, Eq, From)] #[derive(Component, Clone, Debug, Default, Deref, DerefMut, Reflect, PartialEq, Eq, From)]
#[reflect(Component, Default, Clone, PartialEq)] #[reflect(Component, Default, Clone, PartialEq)]
#[require(Transform, Visibility, VisibilityClass)] #[require(Transform)]
#[component(on_add = view::add_visibility_class::<Mesh3d>)]
pub struct Mesh3d(pub Handle<Mesh>); pub struct Mesh3d(pub Handle<Mesh>);
impl From<Mesh3d> for AssetId<Mesh> { impl From<Mesh3d> for AssetId<Mesh> {

View File

@ -3,6 +3,7 @@
extern crate alloc; extern crate alloc;
extern crate core; extern crate core;
mod components;
mod conversions; mod conversions;
mod index; mod index;
mod mesh; mod mesh;
@ -12,6 +13,7 @@ pub mod primitives;
pub mod skinning; pub mod skinning;
mod vertex; mod vertex;
use bitflags::bitflags; use bitflags::bitflags;
pub use components::*;
pub use index::*; pub use index::*;
pub use mesh::*; pub use mesh::*;
pub use mikktspace::*; pub use mikktspace::*;

View File

@ -2,7 +2,6 @@ use bevy_math::Vec3;
pub use bevy_mesh::*; pub use bevy_mesh::*;
use morph::{MeshMorphWeights, MorphWeights}; use morph::{MeshMorphWeights, MorphWeights};
pub mod allocator; pub mod allocator;
mod components;
use crate::{ use crate::{
primitives::Aabb, primitives::Aabb,
render_asset::{PrepareAssetError, RenderAsset, RenderAssetPlugin, RenderAssets}, render_asset::{PrepareAssetError, RenderAsset, RenderAssetPlugin, RenderAssets},
@ -21,7 +20,7 @@ use bevy_ecs::{
SystemParamItem, SystemParamItem,
}, },
}; };
pub use components::{mark_3d_meshes_as_changed_if_their_assets_changed, Mesh2d, Mesh3d, MeshTag}; pub use bevy_mesh::{mark_3d_meshes_as_changed_if_their_assets_changed, Mesh2d, Mesh3d, MeshTag};
use wgpu::IndexFormat; use wgpu::IndexFormat;
/// Registers all [`MeshBuilder`] types. /// Registers all [`MeshBuilder`] types.

View File

@ -2,6 +2,7 @@ pub mod visibility;
pub mod window; pub mod window;
use bevy_diagnostic::FrameCount; use bevy_diagnostic::FrameCount;
use bevy_mesh::{Mesh2d, Mesh3d};
pub use visibility::*; pub use visibility::*;
pub use window::*; pub use window::*;
@ -109,6 +110,10 @@ impl Plugin for ViewPlugin {
.register_type::<VisibleEntities>() .register_type::<VisibleEntities>()
.register_type::<ColorGrading>() .register_type::<ColorGrading>()
.register_type::<OcclusionCulling>() .register_type::<OcclusionCulling>()
.register_required_components::<Mesh3d, Visibility>()
.register_required_components::<Mesh3d, VisibilityClass>()
.register_required_components::<Mesh2d, Visibility>()
.register_required_components::<Mesh2d, VisibilityClass>()
// NOTE: windows.is_changed() handles cases where a window was resized // NOTE: windows.is_changed() handles cases where a window was resized
.add_plugins(( .add_plugins((
ExtractComponentPlugin::<Hdr>::default(), ExtractComponentPlugin::<Hdr>::default(),
@ -117,6 +122,12 @@ impl Plugin for ViewPlugin {
VisibilityPlugin, VisibilityPlugin,
VisibilityRangePlugin, VisibilityRangePlugin,
)); ));
app.world_mut()
.register_component_hooks::<Mesh3d>()
.on_add(add_visibility_class::<Mesh3d>);
app.world_mut()
.register_component_hooks::<Mesh2d>()
.on_add(add_visibility_class::<Mesh2d>);
if let Some(render_app) = app.get_sub_app_mut(RenderApp) { if let Some(render_app) = app.get_sub_app_mut(RenderApp) {
render_app.add_systems( render_app.add_systems(