Move float_ord from bevy_core to bevy_utils (#4189)

# Objective

Reduce the catch-all grab-bag of functionality in bevy_core by moving FloatOrd to bevy_utils.

A step in addressing #2931 and splitting bevy_core into more specific locations.

## Solution

Move FloatOrd into bevy_utils. Fix the compile errors.

As a result, bevy_core_pipeline, bevy_pbr, bevy_sprite, bevy_text, and bevy_ui no longer depend on bevy_core (they were only using it for `FloatOrd` previously).
This commit is contained in:
Christopher Durham 2022-04-27 18:02:05 +00:00
parent 8e03634457
commit 3d4e0066f4
17 changed files with 14 additions and 19 deletions

View File

@ -1,13 +1,11 @@
#![warn(missing_docs)] #![warn(missing_docs)]
//! This crate provides core functionality for Bevy Engine. //! This crate provides core functionality for Bevy Engine.
mod float_ord;
mod name; mod name;
mod task_pool_options; mod task_pool_options;
mod time; mod time;
pub use bytemuck::{bytes_of, cast_slice, Pod, Zeroable}; pub use bytemuck::{bytes_of, cast_slice, Pod, Zeroable};
pub use float_ord::*;
pub use name::*; pub use name::*;
pub use task_pool_options::*; pub use task_pool_options::*;
pub use time::*; pub use time::*;

View File

@ -19,7 +19,6 @@ trace = []
# bevy # bevy
bevy_app = { path = "../bevy_app", version = "0.8.0-dev" } bevy_app = { path = "../bevy_app", version = "0.8.0-dev" }
bevy_asset = { path = "../bevy_asset", version = "0.8.0-dev" } bevy_asset = { path = "../bevy_asset", version = "0.8.0-dev" }
bevy_core = { path = "../bevy_core", version = "0.8.0-dev" }
bevy_ecs = { path = "../bevy_ecs", version = "0.8.0-dev" } bevy_ecs = { path = "../bevy_ecs", version = "0.8.0-dev" }
bevy_render = { path = "../bevy_render", version = "0.8.0-dev" } bevy_render = { path = "../bevy_render", version = "0.8.0-dev" }
bevy_utils = { path = "../bevy_utils", version = "0.8.0-dev" } bevy_utils = { path = "../bevy_utils", version = "0.8.0-dev" }

View File

@ -20,7 +20,6 @@ pub use main_pass_driver::*;
use std::ops::Range; use std::ops::Range;
use bevy_app::{App, Plugin}; use bevy_app::{App, Plugin};
use bevy_core::FloatOrd;
use bevy_ecs::prelude::*; use bevy_ecs::prelude::*;
use bevy_render::{ use bevy_render::{
camera::{ActiveCamera, Camera2d, Camera3d, ExtractedCamera, RenderTarget}, camera::{ActiveCamera, Camera2d, Camera3d, ExtractedCamera, RenderTarget},
@ -36,6 +35,7 @@ use bevy_render::{
view::{ExtractedView, Msaa, ViewDepthTexture}, view::{ExtractedView, Msaa, ViewDepthTexture},
RenderApp, RenderStage, RenderWorld, RenderApp, RenderStage, RenderWorld,
}; };
use bevy_utils::FloatOrd;
/// When used as a resource, sets the color that is used to clear the screen between frames. /// When used as a resource, sets the color that is used to clear the screen between frames.
/// ///

View File

@ -15,7 +15,6 @@ webgl = []
# bevy # bevy
bevy_app = { path = "../bevy_app", version = "0.8.0-dev" } bevy_app = { path = "../bevy_app", version = "0.8.0-dev" }
bevy_asset = { path = "../bevy_asset", version = "0.8.0-dev" } bevy_asset = { path = "../bevy_asset", version = "0.8.0-dev" }
bevy_core = { path = "../bevy_core", version = "0.8.0-dev" }
bevy_core_pipeline = { path = "../bevy_core_pipeline", version = "0.8.0-dev" } bevy_core_pipeline = { path = "../bevy_core_pipeline", version = "0.8.0-dev" }
bevy_ecs = { path = "../bevy_ecs", version = "0.8.0-dev" } bevy_ecs = { path = "../bevy_ecs", version = "0.8.0-dev" }
bevy_math = { path = "../bevy_math", version = "0.8.0-dev" } bevy_math = { path = "../bevy_math", version = "0.8.0-dev" }

View File

@ -4,7 +4,6 @@ use crate::{
PointLight, PointLightShadowMap, SetMeshBindGroup, VisiblePointLights, SHADOW_SHADER_HANDLE, PointLight, PointLightShadowMap, SetMeshBindGroup, VisiblePointLights, SHADOW_SHADER_HANDLE,
}; };
use bevy_asset::Handle; use bevy_asset::Handle;
use bevy_core::FloatOrd;
use bevy_core_pipeline::Transparent3d; use bevy_core_pipeline::Transparent3d;
use bevy_ecs::{ use bevy_ecs::{
prelude::*, prelude::*,
@ -30,6 +29,7 @@ use bevy_render::{
}, },
}; };
use bevy_transform::components::GlobalTransform; use bevy_transform::components::GlobalTransform;
use bevy_utils::FloatOrd;
use bevy_utils::{ use bevy_utils::{
tracing::{error, warn}, tracing::{error, warn},
HashMap, HashMap,

View File

@ -12,7 +12,6 @@ keywords = ["bevy"]
# bevy # bevy
bevy_app = { path = "../bevy_app", version = "0.8.0-dev" } bevy_app = { path = "../bevy_app", version = "0.8.0-dev" }
bevy_asset = { path = "../bevy_asset", version = "0.8.0-dev" } bevy_asset = { path = "../bevy_asset", version = "0.8.0-dev" }
bevy_core = { path = "../bevy_core", version = "0.8.0-dev" }
bevy_core_pipeline = { path = "../bevy_core_pipeline", version = "0.8.0-dev" } bevy_core_pipeline = { path = "../bevy_core_pipeline", version = "0.8.0-dev" }
bevy_ecs = { path = "../bevy_ecs", version = "0.8.0-dev" } bevy_ecs = { path = "../bevy_ecs", version = "0.8.0-dev" }
bevy_log = { path = "../bevy_log", version = "0.8.0-dev" } bevy_log = { path = "../bevy_log", version = "0.8.0-dev" }

View File

@ -1,6 +1,5 @@
use bevy_app::{App, Plugin}; use bevy_app::{App, Plugin};
use bevy_asset::{AddAsset, Asset, AssetServer, Handle}; use bevy_asset::{AddAsset, Asset, AssetServer, Handle};
use bevy_core::FloatOrd;
use bevy_core_pipeline::Transparent2d; use bevy_core_pipeline::Transparent2d;
use bevy_ecs::{ use bevy_ecs::{
entity::Entity, entity::Entity,
@ -29,6 +28,7 @@ use bevy_render::{
RenderApp, RenderStage, RenderApp, RenderStage,
}; };
use bevy_transform::components::{GlobalTransform, Transform}; use bevy_transform::components::{GlobalTransform, Transform};
use bevy_utils::FloatOrd;
use std::hash::Hash; use std::hash::Hash;
use std::marker::PhantomData; use std::marker::PhantomData;

View File

@ -5,7 +5,6 @@ use crate::{
Rect, Sprite, SPRITE_SHADER_HANDLE, Rect, Sprite, SPRITE_SHADER_HANDLE,
}; };
use bevy_asset::{AssetEvent, Assets, Handle, HandleId}; use bevy_asset::{AssetEvent, Assets, Handle, HandleId};
use bevy_core::FloatOrd;
use bevy_core_pipeline::Transparent2d; use bevy_core_pipeline::Transparent2d;
use bevy_ecs::{ use bevy_ecs::{
prelude::*, prelude::*,
@ -27,6 +26,7 @@ use bevy_render::{
RenderWorld, RenderWorld,
}; };
use bevy_transform::components::GlobalTransform; use bevy_transform::components::GlobalTransform;
use bevy_utils::FloatOrd;
use bevy_utils::HashMap; use bevy_utils::HashMap;
use bytemuck::{Pod, Zeroable}; use bytemuck::{Pod, Zeroable};
use copyless::VecHelper; use copyless::VecHelper;

View File

@ -15,7 +15,6 @@ subpixel_glyph_atlas = []
# bevy # bevy
bevy_app = { path = "../bevy_app", version = "0.8.0-dev" } bevy_app = { path = "../bevy_app", version = "0.8.0-dev" }
bevy_asset = { path = "../bevy_asset", version = "0.8.0-dev" } bevy_asset = { path = "../bevy_asset", version = "0.8.0-dev" }
bevy_core = { path = "../bevy_core", version = "0.8.0-dev" }
bevy_ecs = { path = "../bevy_ecs", version = "0.8.0-dev" } bevy_ecs = { path = "../bevy_ecs", version = "0.8.0-dev" }
bevy_math = { path = "../bevy_math", version = "0.8.0-dev" } bevy_math = { path = "../bevy_math", version = "0.8.0-dev" }
bevy_reflect = { path = "../bevy_reflect", version = "0.8.0-dev", features = ["bevy"] } bevy_reflect = { path = "../bevy_reflect", version = "0.8.0-dev", features = ["bevy"] }

View File

@ -1,11 +1,11 @@
use crate::{error::TextError, Font, FontAtlas}; use crate::{error::TextError, Font, FontAtlas};
use ab_glyph::{GlyphId, OutlinedGlyph, Point}; use ab_glyph::{GlyphId, OutlinedGlyph, Point};
use bevy_asset::{Assets, Handle}; use bevy_asset::{Assets, Handle};
use bevy_core::FloatOrd;
use bevy_math::Vec2; use bevy_math::Vec2;
use bevy_reflect::TypeUuid; use bevy_reflect::TypeUuid;
use bevy_render::texture::Image; use bevy_render::texture::Image;
use bevy_sprite::TextureAtlas; use bevy_sprite::TextureAtlas;
use bevy_utils::FloatOrd;
use bevy_utils::HashMap; use bevy_utils::HashMap;
type FontSizeKey = FloatOrd; type FontSizeKey = FloatOrd;

View File

@ -12,7 +12,6 @@ keywords = ["bevy"]
# bevy # bevy
bevy_app = { path = "../bevy_app", version = "0.8.0-dev" } bevy_app = { path = "../bevy_app", version = "0.8.0-dev" }
bevy_asset = { path = "../bevy_asset", version = "0.8.0-dev" } bevy_asset = { path = "../bevy_asset", version = "0.8.0-dev" }
bevy_core = { path = "../bevy_core", version = "0.8.0-dev" }
bevy_core_pipeline = { path = "../bevy_core_pipeline", version = "0.8.0-dev" } bevy_core_pipeline = { path = "../bevy_core_pipeline", version = "0.8.0-dev" }
bevy_ecs = { path = "../bevy_ecs", version = "0.8.0-dev" } bevy_ecs = { path = "../bevy_ecs", version = "0.8.0-dev" }
bevy_hierarchy = { path = "../bevy_hierarchy", version = "0.8.0-dev" } bevy_hierarchy = { path = "../bevy_hierarchy", version = "0.8.0-dev" }

View File

@ -1,5 +1,4 @@
use crate::{CalculatedClip, Node}; use crate::{CalculatedClip, Node};
use bevy_core::FloatOrd;
use bevy_ecs::{ use bevy_ecs::{
entity::Entity, entity::Entity,
prelude::Component, prelude::Component,
@ -10,6 +9,7 @@ use bevy_input::{mouse::MouseButton, touch::Touches, Input};
use bevy_math::Vec2; use bevy_math::Vec2;
use bevy_reflect::{Reflect, ReflectDeserialize}; use bevy_reflect::{Reflect, ReflectDeserialize};
use bevy_transform::components::GlobalTransform; use bevy_transform::components::GlobalTransform;
use bevy_utils::FloatOrd;
use bevy_window::Windows; use bevy_window::Windows;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
use smallvec::SmallVec; use smallvec::SmallVec;

View File

@ -9,7 +9,6 @@ pub use render_pass::*;
use crate::{CalculatedClip, Node, UiColor, UiImage}; use crate::{CalculatedClip, Node, UiColor, UiImage};
use bevy_app::prelude::*; use bevy_app::prelude::*;
use bevy_asset::{load_internal_asset, AssetEvent, Assets, Handle, HandleUntyped}; use bevy_asset::{load_internal_asset, AssetEvent, Assets, Handle, HandleUntyped};
use bevy_core::FloatOrd;
use bevy_ecs::prelude::*; use bevy_ecs::prelude::*;
use bevy_math::{const_vec3, Mat4, Vec2, Vec3, Vec4Swizzles}; use bevy_math::{const_vec3, Mat4, Vec2, Vec3, Vec4Swizzles};
use bevy_reflect::TypeUuid; use bevy_reflect::TypeUuid;
@ -27,6 +26,7 @@ use bevy_render::{
use bevy_sprite::{Rect, SpriteAssetEvents, TextureAtlas}; use bevy_sprite::{Rect, SpriteAssetEvents, TextureAtlas};
use bevy_text::{DefaultTextPipeline, Text}; use bevy_text::{DefaultTextPipeline, Text};
use bevy_transform::components::GlobalTransform; use bevy_transform::components::GlobalTransform;
use bevy_utils::FloatOrd;
use bevy_utils::HashMap; use bevy_utils::HashMap;
use bevy_window::{WindowId, Windows}; use bevy_window::{WindowId, Windows};
use bytemuck::{Pod, Zeroable}; use bytemuck::{Pod, Zeroable};

View File

@ -1,4 +1,3 @@
use bevy_core::FloatOrd;
use bevy_ecs::{ use bevy_ecs::{
prelude::*, prelude::*,
system::{lifetimeless::*, SystemParamItem}, system::{lifetimeless::*, SystemParamItem},
@ -13,6 +12,7 @@ use bevy_render::{
renderer::*, renderer::*,
view::*, view::*,
}; };
use bevy_utils::FloatOrd;
use crate::prelude::CameraUi; use crate::prelude::CameraUi;

View File

@ -41,12 +41,12 @@ impl Hash for FloatOrd {
fn hash<H: Hasher>(&self, state: &mut H) { fn hash<H: Hasher>(&self, state: &mut H) {
if self.0.is_nan() { if self.0.is_nan() {
// Ensure all NaN representations hash to the same value // Ensure all NaN representations hash to the same value
state.write(bytemuck::bytes_of(&f32::NAN)); state.write(&f32::to_ne_bytes(f32::NAN));
} else if self.0 == 0.0 { } else if self.0 == 0.0 {
// Ensure both zeroes hash to the same value // Ensure both zeroes hash to the same value
state.write(bytemuck::bytes_of(&0.0f32)); state.write(&f32::to_ne_bytes(0.0f32));
} else { } else {
state.write(bytemuck::bytes_of(&self.0)); state.write(&f32::to_ne_bytes(self.0));
} }
} }
} }

View File

@ -7,10 +7,12 @@ pub mod label;
mod default; mod default;
mod enum_variant_meta; mod enum_variant_meta;
mod float_ord;
pub use ahash::AHasher; pub use ahash::AHasher;
pub use default::default; pub use default::default;
pub use enum_variant_meta::*; pub use enum_variant_meta::*;
pub use float_ord::*;
pub use hashbrown; pub use hashbrown;
pub use instant::{Duration, Instant}; pub use instant::{Duration, Instant};
pub use tracing; pub use tracing;

View File

@ -1,5 +1,4 @@
use bevy::{ use bevy::{
core::FloatOrd,
core_pipeline::Transparent2d, core_pipeline::Transparent2d,
prelude::*, prelude::*,
reflect::TypeUuid, reflect::TypeUuid,
@ -21,6 +20,7 @@ use bevy::{
DrawMesh2d, Mesh2dHandle, Mesh2dPipeline, Mesh2dPipelineKey, Mesh2dUniform, DrawMesh2d, Mesh2dHandle, Mesh2dPipeline, Mesh2dPipelineKey, Mesh2dUniform,
SetMesh2dBindGroup, SetMesh2dViewBindGroup, SetMesh2dBindGroup, SetMesh2dViewBindGroup,
}, },
utils::FloatOrd,
}; };
/// This example shows how to manually render 2d items using "mid level render apis" with a custom pipeline for 2d meshes /// This example shows how to manually render 2d items using "mid level render apis" with a custom pipeline for 2d meshes