Properly gate imports in bevy_scene (#18482)

# Objective

- Some imports are only used with certain features.

## Solution

- Gate them!

## Testing

- CI
This commit is contained in:
Zachary Harrold 2025-03-22 23:22:20 +11:00 committed by François Mockers
parent cfcb55d778
commit 36dcb9b89d
3 changed files with 23 additions and 13 deletions

View File

@ -1,4 +1,4 @@
use crate::{ron, DynamicSceneBuilder, Scene, SceneSpawnError}; use crate::{DynamicSceneBuilder, Scene, SceneSpawnError};
use bevy_asset::Asset; use bevy_asset::Asset;
use bevy_ecs::reflect::{ReflectMapEntities, ReflectResource}; use bevy_ecs::reflect::{ReflectMapEntities, ReflectResource};
use bevy_ecs::{ use bevy_ecs::{
@ -6,15 +6,18 @@ use bevy_ecs::{
reflect::{AppTypeRegistry, ReflectComponent}, reflect::{AppTypeRegistry, ReflectComponent},
world::World, world::World,
}; };
use bevy_reflect::{PartialReflect, TypePath, TypeRegistry}; use bevy_reflect::{PartialReflect, TypePath};
use crate::reflect_utils::clone_reflect_value; use crate::reflect_utils::clone_reflect_value;
#[cfg(feature = "serialize")]
use crate::serde::SceneSerializer;
use bevy_ecs::component::ComponentCloneBehavior; use bevy_ecs::component::ComponentCloneBehavior;
use bevy_ecs::relationship::RelationshipHookMode; use bevy_ecs::relationship::RelationshipHookMode;
#[cfg(feature = "serialize")] #[cfg(feature = "serialize")]
use serde::Serialize; use {
crate::{ron, serde::SceneSerializer},
bevy_reflect::TypeRegistry,
serde::Serialize,
};
/// A collection of serializable resources and dynamic entities. /// A collection of serializable resources and dynamic entities.
/// ///

View File

@ -27,7 +27,6 @@ pub mod serde;
/// Rusty Object Notation, a crate used to serialize and deserialize bevy scenes. /// Rusty Object Notation, a crate used to serialize and deserialize bevy scenes.
pub use bevy_asset::ron; pub use bevy_asset::ron;
use bevy_ecs::schedule::IntoScheduleConfigs;
pub use components::*; pub use components::*;
pub use dynamic_scene::*; pub use dynamic_scene::*;
pub use dynamic_scene_builder::*; pub use dynamic_scene_builder::*;
@ -48,7 +47,9 @@ pub mod prelude {
} }
use bevy_app::prelude::*; use bevy_app::prelude::*;
use bevy_asset::AssetApp;
#[cfg(feature = "serialize")]
use {bevy_asset::AssetApp, bevy_ecs::schedule::IntoScheduleConfigs};
/// Plugin that provides scene functionality to an [`App`]. /// Plugin that provides scene functionality to an [`App`].
#[derive(Default)] #[derive(Default)]

View File

@ -1,21 +1,27 @@
#[cfg(feature = "serialize")] use crate::ron;
use crate::serde::SceneDeserializer;
use crate::{ron, DynamicScene};
use bevy_asset::{io::Reader, AssetLoader, LoadContext};
use bevy_ecs::{ use bevy_ecs::{
reflect::AppTypeRegistry, reflect::AppTypeRegistry,
world::{FromWorld, World}, world::{FromWorld, World},
}; };
use bevy_reflect::TypeRegistryArc; use bevy_reflect::TypeRegistryArc;
#[cfg(feature = "serialize")]
use serde::de::DeserializeSeed;
use thiserror::Error; use thiserror::Error;
#[cfg(feature = "serialize")]
use {
crate::{serde::SceneDeserializer, DynamicScene},
bevy_asset::{io::Reader, AssetLoader, LoadContext},
serde::de::DeserializeSeed,
};
/// Asset loader for a Bevy dynamic scene (`.scn` / `.scn.ron`). /// Asset loader for a Bevy dynamic scene (`.scn` / `.scn.ron`).
/// ///
/// The loader handles assets serialized with [`DynamicScene::serialize`]. /// The loader handles assets serialized with [`DynamicScene::serialize`].
#[derive(Debug)] #[derive(Debug)]
pub struct SceneLoader { pub struct SceneLoader {
#[cfg_attr(
not(feature = "serialize"),
expect(dead_code, reason = "only used with `serialize` feature")
)]
type_registry: TypeRegistryArc, type_registry: TypeRegistryArc,
} }