bevy_transform/
traits.rs

1use bevy_math::{Affine3A, Isometry3d, Mat4, Vec3};
2
3use crate::prelude::{GlobalTransform, Transform};
4
5/// A trait for point transformation methods.
6pub trait TransformPoint {
7    /// Transform a point.
8    fn transform_point(&self, point: impl Into<Vec3>) -> Vec3;
9}
10
11impl TransformPoint for Transform {
12    #[inline]
13    fn transform_point(&self, point: impl Into<Vec3>) -> Vec3 {
14        self.transform_point(point.into())
15    }
16}
17
18impl TransformPoint for GlobalTransform {
19    #[inline]
20    fn transform_point(&self, point: impl Into<Vec3>) -> Vec3 {
21        self.transform_point(point.into())
22    }
23}
24
25impl TransformPoint for Mat4 {
26    #[inline]
27    fn transform_point(&self, point: impl Into<Vec3>) -> Vec3 {
28        self.transform_point3(point.into())
29    }
30}
31
32impl TransformPoint for Affine3A {
33    #[inline]
34    fn transform_point(&self, point: impl Into<Vec3>) -> Vec3 {
35        self.transform_point3(point.into())
36    }
37}
38
39impl TransformPoint for Isometry3d {
40    #[inline]
41    fn transform_point(&self, point: impl Into<Vec3>) -> Vec3 {
42        self.transform_point(point.into()).into()
43    }
44}