Skip to content

Commit

Permalink
Derive FromReflect for Transform and GlobalTransform (bevyengin…
Browse files Browse the repository at this point in the history
…e#6015)

# Objective

Both components already derives `Reflect` and it would be nice to have `FromReflect` in order to ser/de between those types without relaying on `downcast`, since it can fail between different platforms, like WebAssembly.

## Solution

Derive `FromReflect` for `Transform` and `GlobalTransform`.

I thought if I should also derive `FromReflect` for `GlobalTransform`, since it's a computed component, but there may be some use cases where a `GlobalTransform` is needed to be sent over the wire, so I decided to do it.
  • Loading branch information
afonsolage authored and ItsDoot committed Feb 1, 2023
1 parent a1fa483 commit 95498d0
Show file tree
Hide file tree
Showing 2 changed files with 3 additions and 3 deletions.
4 changes: 2 additions & 2 deletions crates/bevy_transform/src/components/global_transform.rs
Expand Up @@ -3,7 +3,7 @@ use std::ops::Mul;
use super::Transform;
use bevy_ecs::{component::Component, reflect::ReflectComponent};
use bevy_math::{Affine3A, Mat4, Quat, Vec3, Vec3A};
use bevy_reflect::Reflect;
use bevy_reflect::{FromReflect, Reflect};

/// Describe the position of an entity relative to the reference frame.
///
Expand Down Expand Up @@ -31,7 +31,7 @@ use bevy_reflect::Reflect;
/// - [`global_vs_local_translation`]
///
/// [`global_vs_local_translation`]: https://github.com/bevyengine/bevy/blob/latest/examples/transforms/global_vs_local_translation.rs
#[derive(Component, Debug, PartialEq, Clone, Copy, Reflect)]
#[derive(Component, Debug, PartialEq, Clone, Copy, Reflect, FromReflect)]
#[reflect(Component, PartialEq)]
pub struct GlobalTransform(Affine3A);

Expand Down
2 changes: 1 addition & 1 deletion crates/bevy_transform/src/components/transform.rs
Expand Up @@ -34,7 +34,7 @@ use std::ops::Mul;
///
/// [`global_vs_local_translation`]: https://github.com/bevyengine/bevy/blob/latest/examples/transforms/global_vs_local_translation.rs
/// [`transform`]: https://github.com/bevyengine/bevy/blob/latest/examples/transforms/transform.rs
#[derive(Component, Debug, PartialEq, Clone, Copy, Reflect)]
#[derive(Component, Debug, PartialEq, Clone, Copy, Reflect, FromReflect)]
#[reflect(Component, Default, PartialEq)]
pub struct Transform {
/// Position of the entity. In 2d, the last value of the `Vec3` is used for z-ordering.
Expand Down

0 comments on commit 95498d0

Please sign in to comment.