bevy/crates
Joona Aalto f683b802f1
Impl TryFrom vector for directions and add InvalidDirectionError (#10884)
# Objective

Implement `TryFrom<Vec2>`/`TryFrom<Vec3>` for direction primitives as
considered in #10857.

## Solution

Implement `TryFrom` for the direction primitives.

These are all equivalent:

```rust
let dir2d = Direction2d::try_from(Vec2::new(0.5, 0.5)).unwrap();
let dir2d = Vec2::new(0.5, 0.5).try_into().unwrap(); // (assumes that the type is inferred)
let dir2d = Direction2d::new(Vec2::new(0.5, 0.5)).unwrap();
```

For error cases, an `Err(InvalidDirectionError)` is returned. It
contains the type of failure:

```rust
/// An error indicating that a direction is invalid.
#[derive(Debug, PartialEq)]
pub enum InvalidDirectionError {
    /// The length of the direction vector is zero or very close to zero.
    Zero,
    /// The length of the direction vector is `std::f32::INFINITY`.
    Infinite,
    /// The length of the direction vector is `NaN`.
    NaN,
}
```
2023-12-06 00:05:37 +00:00
..
bevy_a11y Add [lints] table, fix adding #![allow(clippy::type_complexity)] everywhere (#10011) 2023-11-18 20:58:48 +00:00
bevy_animation Enable clippy::undocumented_unsafe_blocks warning across the workspace (#10646) 2023-11-21 02:06:24 +00:00
bevy_app Remove identity map calls (#10848) 2023-12-04 20:44:53 +00:00
bevy_asset Allow removing and reloading assets with live handles (#10785) 2023-11-29 23:32:13 +00:00
bevy_audio Remove unnecessary path prefixes (#10749) 2023-11-28 23:43:40 +00:00
bevy_core Remove unnecessary path prefixes (#10749) 2023-11-28 23:43:40 +00:00
bevy_core_pipeline Remove unnecessary path prefixes (#10749) 2023-11-28 23:43:40 +00:00
bevy_derive Add [lints] table, fix adding #![allow(clippy::type_complexity)] everywhere (#10011) 2023-11-18 20:58:48 +00:00
bevy_diagnostic Remove unnecessary path prefixes (#10749) 2023-11-28 23:43:40 +00:00
bevy_dylib Add [lints] table, fix adding #![allow(clippy::type_complexity)] everywhere (#10011) 2023-11-18 20:58:48 +00:00
bevy_dynamic_plugin Add [lints] table, fix adding #![allow(clippy::type_complexity)] everywhere (#10011) 2023-11-18 20:58:48 +00:00
bevy_ecs Add EntityCommands.retain and EntityWorldMut.retain (#10873) 2023-12-05 15:37:33 +00:00
bevy_ecs_compile_fail_tests Override QueryIter::fold to port Query::for_each perf gains to select Iterator combinators (#6773) 2023-12-01 09:09:55 +00:00
bevy_encase_derive Add [lints] table, fix adding #![allow(clippy::type_complexity)] everywhere (#10011) 2023-11-18 20:58:48 +00:00
bevy_gilrs Remove unnecessary path prefixes (#10749) 2023-11-28 23:43:40 +00:00
bevy_gizmos Bind group layout entries (#10224) 2023-11-28 04:00:49 +00:00
bevy_gltf Add GltfLoaderSettings (#10804) 2023-11-30 00:34:45 +00:00
bevy_hierarchy Split WorldQuery into WorldQueryData and WorldQueryFilter (#9918) 2023-11-28 03:56:07 +00:00
bevy_input Remove unnecessary path prefixes (#10749) 2023-11-28 23:43:40 +00:00
bevy_internal Remove unnecessary path prefixes (#10749) 2023-11-28 23:43:40 +00:00
bevy_log Add helper macro's for logging only once (#10808) 2023-12-05 01:56:40 +00:00
bevy_macro_utils Remove unnecessary path prefixes (#10749) 2023-11-28 23:43:40 +00:00
bevy_macros_compile_fail_tests Standardize toml format with taplo (#10594) 2023-11-21 01:04:14 +00:00
bevy_math Impl TryFrom vector for directions and add InvalidDirectionError (#10884) 2023-12-06 00:05:37 +00:00
bevy_mikktspace Enable clippy::undocumented_unsafe_blocks warning across the workspace (#10646) 2023-11-21 02:06:24 +00:00
bevy_pbr Fix prepass binding issues causing crashes when not all prepass bindings are used (#10788) 2023-11-29 23:11:12 +00:00
bevy_ptr Enable clippy::undocumented_unsafe_blocks warning across the workspace (#10646) 2023-11-21 02:06:24 +00:00
bevy_reflect Fix nested generics in Reflect derive (#10791) 2023-11-29 01:46:09 +00:00
bevy_reflect_compile_fail_tests Fix nested generics in Reflect derive (#10791) 2023-11-29 01:46:09 +00:00
bevy_render Substitute get(0) with first() (#10847) 2023-12-02 22:13:42 +00:00
bevy_scene Mention DynamicSceneBuilder in doc comment (#10780) 2023-11-28 23:45:00 +00:00
bevy_sprite try_insert Aabbs (#10801) 2023-11-29 15:00:50 +00:00
bevy_tasks Remove unnecessary path prefixes (#10749) 2023-11-28 23:43:40 +00:00
bevy_text Rename TextAlignment to JustifyText. (#10854) 2023-12-05 03:00:41 +00:00
bevy_time Wait until FixedUpdate can see events before dropping them (#10077) 2023-11-26 23:04:41 +00:00
bevy_transform Remove unnecessary path prefixes (#10749) 2023-11-28 23:43:40 +00:00
bevy_ui Rename TextAlignment to JustifyText. (#10854) 2023-12-05 03:00:41 +00:00
bevy_utils Remove unnecessary path prefixes (#10749) 2023-11-28 23:43:40 +00:00
bevy_window Add comment about scale factor in WindowMode (#10872) 2023-12-05 21:42:34 +00:00
bevy_winit Remove unnecessary path prefixes (#10749) 2023-11-28 23:43:40 +00:00