From 3ada15ee1cdbc9f77ac4e92812383edffae83801 Mon Sep 17 00:00:00 2001 From: Joona Aalto Date: Mon, 11 Nov 2024 20:47:16 +0200 Subject: [PATCH] Add more Glam types and constructors to prelude (#16261) # Objective Glam has some common and useful types and helpers that are not in the prelude of `bevy_math`. This includes shorthand constructors like `vec3`, or even `Vec3A`, the aligned version of `Vec3`. ```rust // The "normal" way to create a 3D vector let vec = Vec3::new(2.0, 1.0, -3.0); // Shorthand version let vec = vec3(2.0, 1.0, -3.0); ``` ## Solution Add the following types and methods to the prelude: - `vec2`, `vec3`, `vec3a`, `vec4` - `uvec2`, `uvec3`, `uvec4` - `ivec2`, `ivec3`, `ivec4` - `bvec2`, `bvec3`, `bvec3a`, `bvec4`, `bvec4a` - `mat2`, `mat3`, `mat3a`, `mat4` - `quat` (not sure if anyone uses this, but for consistency) - `Vec3A` - `BVec3A`, `BVec4A` - `Mat3A` I did not add the u16, i16, or f64 variants like `dvec2`, since there are currently no existing types like those in the prelude. The shorthand constructors are currently used a lot in some places in Bevy, and not at all in others. In a follow-up, we might want to consider if we have a preference for the shorthand, and make a PR to change the codebase to use it more consistently. --- benches/benches/bevy_math/bezier.rs | 2 +- .../src/bounding/bounded3d/primitive_impls.rs | 4 +--- crates/bevy_math/src/lib.rs | 10 ++++++---- examples/shader/custom_phase_item.rs | 1 - examples/tools/scene_viewer/main.rs | 1 - 5 files changed, 8 insertions(+), 10 deletions(-) diff --git a/benches/benches/bevy_math/bezier.rs b/benches/benches/bevy_math/bezier.rs index 69590aa804..4728d2b058 100644 --- a/benches/benches/bevy_math/bezier.rs +++ b/benches/benches/bevy_math/bezier.rs @@ -1,6 +1,6 @@ use criterion::{black_box, criterion_group, criterion_main, Criterion}; -use bevy_math::{prelude::*, *}; +use bevy_math::prelude::*; fn easing(c: &mut Criterion) { let cubic_bezier = CubicSegment::new_bezier(vec2(0.25, 0.1), vec2(0.25, 1.0)); diff --git a/crates/bevy_math/src/bounding/bounded3d/primitive_impls.rs b/crates/bevy_math/src/bounding/bounded3d/primitive_impls.rs index 3871ac0749..3eea8df3b5 100644 --- a/crates/bevy_math/src/bounding/bounded3d/primitive_impls.rs +++ b/crates/bevy_math/src/bounding/bounded3d/primitive_impls.rs @@ -1,7 +1,5 @@ //! Contains [`Bounded3d`] implementations for [geometric primitives](crate::primitives). -use glam::Vec3A; - use crate::{ bounding::{Bounded2d, BoundingCircle}, ops, @@ -9,7 +7,7 @@ use crate::{ BoxedPolyline3d, Capsule3d, Cone, ConicalFrustum, Cuboid, Cylinder, InfinitePlane3d, Line3d, Polyline3d, Segment3d, Sphere, Torus, Triangle2d, Triangle3d, }, - Isometry2d, Isometry3d, Mat3, Vec2, Vec3, + Isometry2d, Isometry3d, Mat3, Vec2, Vec3, Vec3A, }; use super::{Aabb3d, Bounded3d, BoundingSphere}; diff --git a/crates/bevy_math/src/lib.rs b/crates/bevy_math/src/lib.rs index 0f6caa30cf..c1ef37e20a 100644 --- a/crates/bevy_math/src/lib.rs +++ b/crates/bevy_math/src/lib.rs @@ -58,17 +58,19 @@ pub use sampling::{FromRng, ShapeSample}; pub mod prelude { #[doc(hidden)] pub use crate::{ + bvec2, bvec3, bvec3a, bvec4, bvec4a, cubic_splines::{ CubicBSpline, CubicBezier, CubicCardinalSpline, CubicCurve, CubicGenerator, CubicHermite, CubicNurbs, CubicNurbsError, CubicSegment, CyclicCubicGenerator, RationalCurve, RationalGenerator, RationalSegment, }, direction::{Dir2, Dir3, Dir3A}, - ops, + ivec2, ivec3, ivec4, mat2, mat3, mat3a, mat4, ops, primitives::*, - BVec2, BVec3, BVec4, EulerRot, FloatExt, IRect, IVec2, IVec3, IVec4, Isometry2d, - Isometry3d, Mat2, Mat3, Mat4, Quat, Ray2d, Ray3d, Rect, Rot2, StableInterpolate, URect, - UVec2, UVec3, UVec4, Vec2, Vec2Swizzles, Vec3, Vec3Swizzles, Vec4, Vec4Swizzles, + quat, uvec2, uvec3, uvec4, vec2, vec3, vec3a, vec4, BVec2, BVec3, BVec3A, BVec4, BVec4A, + EulerRot, FloatExt, IRect, IVec2, IVec3, IVec4, Isometry2d, Isometry3d, Mat2, Mat3, Mat3A, + Mat4, Quat, Ray2d, Ray3d, Rect, Rot2, StableInterpolate, URect, UVec2, UVec3, UVec4, Vec2, + Vec2Swizzles, Vec3, Vec3A, Vec3Swizzles, Vec4, Vec4Swizzles, }; #[doc(hidden)] diff --git a/examples/shader/custom_phase_item.rs b/examples/shader/custom_phase_item.rs index 088265ef4e..935204c397 100644 --- a/examples/shader/custom_phase_item.rs +++ b/examples/shader/custom_phase_item.rs @@ -13,7 +13,6 @@ use bevy::{ query::ROQueryItem, system::{lifetimeless::SRes, SystemParamItem}, }, - math::{vec3, Vec3A}, prelude::*, render::{ extract_component::{ExtractComponent, ExtractComponentPlugin}, diff --git a/examples/tools/scene_viewer/main.rs b/examples/tools/scene_viewer/main.rs index ad54ee3ec1..af8272a13b 100644 --- a/examples/tools/scene_viewer/main.rs +++ b/examples/tools/scene_viewer/main.rs @@ -8,7 +8,6 @@ //! If you want to hot reload asset changes, enable the `file_watcher` cargo feature. use bevy::{ - math::Vec3A, prelude::*, render::primitives::{Aabb, Sphere}, };