Clean up type registrations (#12314)

# Objective
Fix #12304. Remove unnecessary type registrations thanks to #4154.

## Solution
Conservatively remove type registrations. Keeping the top level
components, resources, and events, but dropping everything else that is
a type of a member of those types.
This commit is contained in:
James Liu 2024-03-06 08:05:53 -08:00 committed by GitHub
parent e3b318f599
commit 9e5db9abc7
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
17 changed files with 17 additions and 205 deletions

View file

@ -687,10 +687,6 @@ impl Plugin for AnimationPlugin {
app.init_asset::<AnimationClip>()
.register_asset_reflect::<AnimationClip>()
.register_type::<AnimationPlayer>()
.register_type::<VariableCurve>()
.register_type::<Vec<VariableCurve>>()
.register_type::<Interpolation>()
.register_type::<Keyframes>()
.register_type::<AnimationTarget>()
.add_systems(
PostUpdate,

View file

@ -378,7 +378,6 @@ impl AssetApp for App {
.add_event::<AssetEvent<A>>()
.add_event::<AssetLoadFailedEvent<A>>()
.register_type::<Handle<A>>()
.register_type::<AssetId<A>>()
.add_systems(
First,
Assets::<A>::asset_events

View file

@ -17,7 +17,6 @@ bevy_app = { path = "../bevy_app", version = "0.14.0-dev", features = [
bevy_ecs = { path = "../bevy_ecs", version = "0.14.0-dev", features = [
"bevy_reflect",
] }
bevy_math = { path = "../bevy_math", version = "0.14.0-dev" }
bevy_reflect = { path = "../bevy_reflect", version = "0.14.0-dev", features = [
"bevy",
] }

View file

@ -19,17 +19,9 @@ pub mod prelude {
}
use bevy_app::prelude::*;
use bevy_ecs::component::{ComponentId, ComponentTicks, Tick};
use bevy_ecs::prelude::*;
use bevy_reflect::{ReflectDeserialize, ReflectSerialize};
use bevy_utils::{Duration, HashSet, Instant, Uuid};
use std::borrow::Cow;
use std::ffi::OsString;
use std::marker::PhantomData;
use std::ops::Range;
use std::path::{Path, PathBuf};
#[cfg(not(target_arch = "wasm32"))]
#[cfg(not(target_arch = "wasm32"))]
use bevy_tasks::tick_global_task_pools_on_main_thread;
@ -40,78 +32,9 @@ pub struct TypeRegistrationPlugin;
impl Plugin for TypeRegistrationPlugin {
fn build(&self, app: &mut App) {
app.register_type::<Name>();
register_ecs_types(app);
register_rust_types(app);
register_math_types(app);
}
}
fn register_ecs_types(app: &mut App) {
app.register_type::<Entity>()
.register_type::<ComponentId>()
.register_type::<Tick>()
.register_type::<ComponentTicks>();
}
fn register_rust_types(app: &mut App) {
app.register_type::<Range<f32>>()
.register_type_data::<Range<f32>, ReflectSerialize>()
.register_type_data::<Range<f32>, ReflectDeserialize>()
.register_type::<String>()
.register_type::<PathBuf>()
.register_type::<OsString>()
.register_type::<HashSet<String>>()
.register_type::<Option<String>>()
.register_type::<Option<bool>>()
.register_type::<Option<f32>>()
.register_type::<Option<f64>>()
.register_type::<Vec<f32>>()
.register_type::<Cow<'static, str>>()
.register_type::<Cow<'static, Path>>()
.register_type::<Duration>()
.register_type::<Instant>()
.register_type::<Uuid>();
}
fn register_math_types(app: &mut App) {
app.register_type::<bevy_math::IVec2>()
.register_type::<bevy_math::IVec3>()
.register_type::<bevy_math::IVec4>()
.register_type::<bevy_math::UVec2>()
.register_type::<bevy_math::UVec3>()
.register_type::<bevy_math::UVec4>()
.register_type::<bevy_math::DVec2>()
.register_type::<Option<bevy_math::DVec2>>()
.register_type::<bevy_math::DVec3>()
.register_type::<bevy_math::DVec4>()
.register_type::<bevy_math::BVec2>()
.register_type::<bevy_math::BVec3>()
.register_type::<bevy_math::BVec3A>()
.register_type::<bevy_math::BVec4>()
.register_type::<bevy_math::BVec4A>()
.register_type::<bevy_math::Vec2>()
.register_type::<bevy_math::Vec3>()
.register_type::<bevy_math::Vec3A>()
.register_type::<bevy_math::Vec4>()
.register_type::<bevy_math::DAffine2>()
.register_type::<bevy_math::DAffine3>()
.register_type::<bevy_math::Affine2>()
.register_type::<bevy_math::Affine3A>()
.register_type::<bevy_math::DMat2>()
.register_type::<bevy_math::DMat3>()
.register_type::<bevy_math::DMat4>()
.register_type::<bevy_math::Mat2>()
.register_type::<bevy_math::Mat3>()
.register_type::<bevy_math::Mat3A>()
.register_type::<bevy_math::Mat4>()
.register_type::<bevy_math::DQuat>()
.register_type::<bevy_math::Quat>()
.register_type::<bevy_math::Rect>()
.register_type::<Vec<bevy_math::Quat>>()
.register_type::<Vec<bevy_math::Vec3>>();
}
/// Setup of default task pools: [`AsyncComputeTaskPool`](bevy_tasks::AsyncComputeTaskPool),
/// [`ComputeTaskPool`](bevy_tasks::ComputeTaskPool), [`IoTaskPool`](bevy_tasks::IoTaskPool).
#[derive(Default)]

View file

@ -93,8 +93,6 @@ pub struct Core3dPlugin;
impl Plugin for Core3dPlugin {
fn build(&self, app: &mut App) {
app.register_type::<Camera3d>()
.register_type::<Camera3dDepthLoadOp>()
.register_type::<Camera3dDepthTextureUsage>()
.register_type::<ScreenSpaceTransmissionQuality>()
.add_plugins((SkyboxPlugin, ExtractComponentPlugin::<Camera3d>::default()))
.add_systems(PostUpdate, check_msaa);

View file

@ -86,7 +86,7 @@ impl Plugin for FxaaPlugin {
fn build(&self, app: &mut App) {
load_internal_asset!(app, FXAA_SHADER_HANDLE, "fxaa.wgsl", Shader::from_wgsl);
app.register_type::<Fxaa>().register_type::<Sensitivity>();
app.register_type::<Fxaa>();
app.add_plugins(ExtractComponentPlugin::<Fxaa>::default());
let Ok(render_app) = app.get_sub_app_mut(RenderApp) else {

View file

@ -84,13 +84,10 @@ use bevy_app::prelude::*;
#[derive(Default)]
pub struct HierarchyPlugin;
#[cfg(feature = "bevy_app")]
use bevy_utils::smallvec::SmallVec;
impl Plugin for HierarchyPlugin {
fn build(&self, app: &mut App) {
app.register_type::<Children>()
.register_type::<Parent>()
.register_type::<SmallVec<[bevy_ecs::entity::Entity; 8]>>()
.add_event::<HierarchyEvent>();
}
}

View file

@ -34,19 +34,15 @@ pub mod prelude {
use bevy_app::prelude::*;
use bevy_ecs::prelude::*;
use bevy_reflect::Reflect;
use keyboard::{keyboard_input_system, Key, KeyCode, KeyboardInput, NativeKey, NativeKeyCode};
use mouse::{
mouse_button_input_system, MouseButton, MouseButtonInput, MouseMotion, MouseScrollUnit,
MouseWheel,
};
use touch::{touch_screen_input_system, ForceTouch, TouchInput, TouchPhase, Touches};
use keyboard::{keyboard_input_system, KeyCode, KeyboardInput};
use mouse::{mouse_button_input_system, MouseButton, MouseButtonInput, MouseMotion, MouseWheel};
use touch::{touch_screen_input_system, TouchInput, Touches};
use touchpad::{TouchpadMagnify, TouchpadRotate};
use gamepad::{
gamepad_axis_event_system, gamepad_button_event_system, gamepad_connection_system,
gamepad_event_system, AxisSettings, ButtonAxisSettings, ButtonSettings, Gamepad, GamepadAxis,
GamepadAxisChangedEvent, GamepadAxisType, GamepadButton, GamepadButtonChangedEvent,
GamepadButtonInput, GamepadButtonType, GamepadConnection, GamepadConnectionEvent, GamepadEvent,
gamepad_event_system, GamepadAxis, GamepadAxisChangedEvent, GamepadButton,
GamepadButtonChangedEvent, GamepadButtonInput, GamepadConnectionEvent, GamepadEvent,
GamepadRumbleRequest, GamepadSettings, Gamepads,
};
@ -108,43 +104,15 @@ impl Plugin for InputPlugin {
.add_systems(PreUpdate, touch_screen_input_system.in_set(InputSystem));
// Register common types
app.register_type::<ButtonState>();
// Register keyboard types
app.register_type::<KeyboardInput>()
.register_type::<KeyCode>()
.register_type::<NativeKeyCode>()
.register_type::<Key>()
.register_type::<NativeKey>();
// Register mouse types
app.register_type::<MouseButtonInput>()
.register_type::<MouseButton>()
.register_type::<MouseMotion>()
.register_type::<MouseScrollUnit>()
.register_type::<MouseWheel>();
// Register touchpad types
app.register_type::<TouchpadMagnify>()
.register_type::<TouchpadRotate>();
// Register touch types
app.register_type::<TouchInput>()
.register_type::<ForceTouch>()
.register_type::<TouchPhase>();
// Register gamepad types
app.register_type::<Gamepad>()
.register_type::<GamepadConnection>()
.register_type::<GamepadButtonType>()
.register_type::<GamepadButton>()
app.register_type::<ButtonState>()
.register_type::<KeyboardInput>()
.register_type::<MouseButtonInput>()
.register_type::<TouchpadMagnify>()
.register_type::<TouchpadRotate>()
.register_type::<TouchInput>()
.register_type::<GamepadEvent>()
.register_type::<GamepadButtonInput>()
.register_type::<GamepadAxisType>()
.register_type::<GamepadAxis>()
.register_type::<GamepadSettings>()
.register_type::<ButtonSettings>()
.register_type::<AxisSettings>()
.register_type::<ButtonAxisSettings>();
.register_type::<GamepadSettings>();
}
}

View file

@ -234,13 +234,9 @@ impl Plugin for PbrPlugin {
app.register_asset_reflect::<StandardMaterial>()
.register_type::<AmbientLight>()
.register_type::<Cascade>()
.register_type::<CascadeShadowConfig>()
.register_type::<Cascades>()
.register_type::<CascadesVisibleEntities>()
.register_type::<ClusterConfig>()
.register_type::<ClusterFarZMode>()
.register_type::<ClusterZConfig>()
.register_type::<CubemapVisibleEntities>()
.register_type::<DirectionalLight>()
.register_type::<DirectionalLightShadowMap>()
@ -250,10 +246,7 @@ impl Plugin for PbrPlugin {
.register_type::<PointLightShadowMap>()
.register_type::<SpotLight>()
.register_type::<FogSettings>()
.register_type::<FogFalloff>()
.register_type::<ShadowFilteringMethod>()
.register_type::<ParallaxMappingMethod>()
.register_type::<OpaqueRendererMethod>()
.init_resource::<AmbientLight>()
.init_resource::<GlobalVisiblePointLights>()
.init_resource::<DirectionalLightShadowMap>()

View file

@ -24,12 +24,7 @@ pub struct CameraPlugin;
impl Plugin for CameraPlugin {
fn build(&self, app: &mut App) {
app.register_type::<Camera>()
.register_type::<Viewport>()
.register_type::<Option<Viewport>>()
.register_type::<ScalingMode>()
.register_type::<RenderTarget>()
.register_type::<ClearColor>()
.register_type::<ClearColorConfig>()
.register_type::<CameraRenderGraph>()
.register_type::<CameraMainTextureUsages>()
.register_type::<Exposure>()

View file

@ -329,17 +329,7 @@ impl Plugin for RenderPlugin {
app.register_type::<alpha::AlphaMode>()
// These types cannot be registered in bevy_color, as it does not depend on the rest of Bevy
// BLOCKED: once https://github.com/bevyengine/bevy/pull/5781 lands, we can remove all but the Color registration
.register_type::<bevy_color::Color>()
.register_type::<bevy_color::Srgba>()
.register_type::<bevy_color::LinearRgba>()
.register_type::<bevy_color::Hsla>()
.register_type::<bevy_color::Hsva>()
.register_type::<bevy_color::Hwba>()
.register_type::<bevy_color::Laba>()
.register_type::<bevy_color::Lcha>()
.register_type::<bevy_color::Xyza>()
.register_type::<bevy_color::Oklaba>()
.register_type::<primitives::Aabb>()
.register_type::<primitives::CascadesFrusta>()
.register_type::<primitives::CubemapFrusta>()

View file

@ -13,7 +13,7 @@ use std::{
use crate::{prelude::Image, render_asset::RenderAssetPlugin, RenderApp};
use bevy_app::{App, Plugin};
use bevy_asset::{AssetApp, Handle};
use bevy_asset::AssetApp;
use bevy_ecs::{entity::Entity, system::Resource};
/// Adds the [`Mesh`] as an asset and makes sure that they are extracted and prepared for the GPU.
@ -24,10 +24,6 @@ impl Plugin for MeshPlugin {
app.init_asset::<Mesh>()
.init_asset::<skinning::SkinnedMeshInverseBindposes>()
.register_asset_reflect::<Mesh>()
.register_type::<Option<Handle<Image>>>()
.register_type::<Option<Vec<String>>>()
.register_type::<Option<Indices>>()
.register_type::<Indices>()
.register_type::<skinning::SkinnedMesh>()
.register_type::<Vec<Entity>>()
// 'Mesh' must be prepared after 'Image' as meshes rely on the morph target image being ready

View file

@ -77,11 +77,6 @@ impl Plugin for TextPlugin {
app.init_asset::<Font>()
.register_type::<Text>()
.register_type::<Text2dBounds>()
.register_type::<TextSection>()
.register_type::<Vec<TextSection>>()
.register_type::<TextStyle>()
.register_type::<JustifyText>()
.register_type::<BreakLineOn>()
.init_asset_loader::<FontLoader>()
.init_resource::<TextSettings>()
.init_resource::<FontAtlasSets>()

View file

@ -51,7 +51,6 @@ impl Plugin for TimePlugin {
.register_type::<Time<Virtual>>()
.register_type::<Time<Fixed>>()
.register_type::<Timer>()
.register_type::<Stopwatch>()
.add_systems(
First,
(time_system, virtual_time_system.after(time_system)).in_set(TimeSystem),

View file

@ -97,37 +97,19 @@ impl Plugin for UiPlugin {
app.init_resource::<UiSurface>()
.init_resource::<UiScale>()
.init_resource::<UiStack>()
.register_type::<AlignContent>()
.register_type::<AlignItems>()
.register_type::<AlignSelf>()
.register_type::<BackgroundColor>()
.register_type::<CalculatedClip>()
.register_type::<ContentSize>()
.register_type::<Direction>()
.register_type::<Display>()
.register_type::<FlexDirection>()
.register_type::<FlexWrap>()
.register_type::<FocusPolicy>()
.register_type::<GridAutoFlow>()
.register_type::<GridPlacement>()
.register_type::<GridTrack>()
.register_type::<Interaction>()
.register_type::<JustifyContent>()
.register_type::<JustifyItems>()
.register_type::<JustifySelf>()
.register_type::<Node>()
.register_type::<Overflow>()
.register_type::<OverflowAxis>()
.register_type::<PositionType>()
.register_type::<RelativeCursorPosition>()
.register_type::<RepeatedGridTrack>()
.register_type::<Style>()
.register_type::<TargetCamera>()
.register_type::<UiImage>()
.register_type::<UiImageSize>()
.register_type::<UiRect>()
.register_type::<UiScale>()
.register_type::<Val>()
.register_type::<BorderColor>()
.register_type::<widget::Button>()
.register_type::<widget::Label>()

View file

@ -31,7 +31,6 @@ pub mod prelude {
}
use bevy_app::prelude::*;
use std::path::PathBuf;
impl Default for WindowPlugin {
fn default() -> Self {
@ -147,24 +146,7 @@ impl Plugin for WindowPlugin {
// Register window descriptor and related types
app.register_type::<Window>()
.register_type::<PrimaryWindow>()
.register_type::<Cursor>()
.register_type::<CursorIcon>()
.register_type::<CursorGrabMode>()
.register_type::<CompositeAlphaMode>()
.register_type::<WindowResolution>()
.register_type::<WindowPosition>()
.register_type::<WindowMode>()
.register_type::<WindowLevel>()
.register_type::<PresentMode>()
.register_type::<InternalWindowState>()
.register_type::<MonitorSelection>()
.register_type::<WindowResizeConstraints>()
.register_type::<WindowTheme>()
.register_type::<EnabledButtons>();
// Register `PathBuf` as it's used by `FileDragAndDrop`
app.register_type::<PathBuf>();
.register_type::<PrimaryWindow>();
}
}

View file

@ -16,8 +16,8 @@ use serde::de::DeserializeSeed;
fn main() {
App::new()
.add_plugins(DefaultPlugins)
// Bar will be automatically registered as it's a dependency of Foo
.register_type::<Foo>()
.register_type::<Bar>()
.add_systems(Startup, setup)
.run();
}